01. DATOS GENERALES

Producto:

TOTVS Backoffice

Línea de producto:

Línea Protheus

Segmento:

Serviços

Módulo:

TOTVS Backoffice (Línea Protheus) - Contabilidad de gestión (SIGACTB)

Función:

CTBXSALA

País:

Brasil

Ticket:

Interno

Requisito/Story/Issue

DSERCTR1-46748

02. DESCRIPCIÓN

El punto de entrada CTBSLDLP permite que el sistema acceda a las fechas del último y penúltimo cálculo, incluso cuando el parámetro "Posición Ant. L/P" está configurado como "Sí". Este permite visualizar y manejar la información de cálculos anteriores, garantizando que los datos históricos estén disponibles para consultas y procesos de análisis.

Con el CTBSLDLP, se puede ajustar el comportamiento estándar del sistema para garantizar que, aun cuando existen restricciones impuestas por el parámetro de posición anterior, las informaciones de los cálculos más recientes se pueden acceder y utilizar según sea necesario, contribuyendo para la precisión de los procesos de control y análisis financiero.

03. OTRAS INFORMACIONES


Manipulação de PE no sistema
cQuery += ExecBlock("CTBSldLP", .F.,.F., { lImpAntLP , dDataLP, aMeses , lAcum , cMoeda , cTpSaldo , 1 } )
Ejemplo de PE
#include 'Protheus.ch'
#include 'rwmake.ch'

User Function CTBSldLP()

Local lImpAntLP := PARAMIXB[1]
Local dDataLP := PARAMIXB[2]
Local aMeses := PARAMIXB[3]
Local lAcum := PARAMIXB[4]
Local cMoeda := PARAMIXB[5]
Local cTpSaldo := PARAMIXB[6]
Local nOpc := PARAMIXB[7]
Local cQuery := ''
Local nColunas := 0
Local lREL12Mes := ((Alltrim(FunName()) == 'CTBR265') .Or. (Alltrim(FunName()) == 'ABCTR265'))
Local lRel6Mes := ((Alltrim(FunName()) == 'CTBR260') .Or. (Alltrim(FunName()) == 'ABCTR260'))
Local nMes := 0

If nOpc == 1
If lREL12Mes .And. !lImpAntLP // solo para comparativo de 12 meses

For nColunas := 1 to Len(aMeses)
cQuery += " (SELECT SUM(CT7_CREDIT) - SUM(CT7_DEBITO) "
cQuery += " FROM "+RetSqlName("CT7")+" CT7 "
cQuery += " WHERE CT7.CT7_FILIAL = '"+xFilial("CT7")+"' "
cQuery += " AND ARQ.CT1_CONTA = CT7_CONTA "
cQuery += " AND CT7_MOEDA = '"+cMoeda+"' "
cQuery += " AND CT7_TPSALD = '"+cTpSaldo+"' "

If lAcum .and. nColunas <> 12 /// SI SE ACUMULA, LA PRIMERA COLUMNA TENDRÁ EL SALDO HASTA EL FINAL DEL PERÍODO

cQuery += " AND CT7_DATA <= '"+DTOS(aMeses[nColunas][3])+"' "

ElseIf lAcum .and. (nColunas == 12) /// SI SE ACUMULA, LA PRIMERA COLUMNA TENDRÁ EL SALDO HASTA EL FINAL DEL PERÍODO

cQuery += " AND ( "
cQuery += " (CT7_DATA <= '"+DTOS(aMeses[nColunas][3]-1)+"') "
cQuery += " OR "
cQuery += " (CT7_DATA = '"+DTOS(aMeses[nColunas][3])+"' AND "+IIF(!lImpAntLP, "CT7_LP <> 'Z'", "") + " ) "
cQuery += " ) "

Else /// LAS DEMÁS COLUMNAS SIEMPRE SUMAN EL MOVIMIENTO EN EL PERÍODO. (CALCULO EN EL INFORME)

cQuery += " AND CT7_DATA BETWEEN '"+DTOS(aMeses[nColunas][2])+"' AND '"+DTOS(aMeses[nColunas][3])+"' "

If !lImpAntLP .and. nColunas == 12
cQuery += " AND CT7_LP <> 'Z' "
EndIf

Endif

If lImpAntLP .and. (dDataLP >= aMeses[nColunas][2])
cQuery += " AND CT7_LP <> 'Z' "
Endif

cQuery += " AND CT7.D_E_L_E_T_ = ' ') COLUNA"+Str(nColunas,Iif(nColunas>9,2,1))+" "

If nColunas <> Len(aMeses)
cQuery += ", "
EndIf
Next

Elseif lRel6Mes .And. !lImpAntLP // solo para comparativo de 6 mesess

For nColunas := 1 to Len(aMeses)
nMes := Month(aMeses[nColunas][3])

cQuery += " (SELECT SUM(CT7_CREDIT) - SUM(CT7_DEBITO) "
cQuery += " FROM "+RetSqlName("CT7")+" CT7 "
cQuery += " WHERE CT7.CT7_FILIAL = '"+xFilial("CT7")+"' "
cQuery += " AND ARQ.CT1_CONTA = CT7_CONTA "
cQuery += " AND CT7_MOEDA = '"+cMoeda+"' "
cQuery += " AND CT7_TPSALD = '"+cTpSaldo+"' "

If lAcum .and. nMes <> 12 /// SI SE ACUMULA, LA PRIMERA COLUMNA TENDRÁ EL SALDO HASTA EL FINAL DEL PERÍODO

cQuery += " AND CT7_DATA <= '"+DTOS(aMeses[nColunas][3])+"' "

ElseIf lAcum .and. (nMes == 12) /// SI SE ACUMULA, LA PRIMERA COLUMNA TENDRÁ EL SALDO HASTA EL FINAL DEL PERÍODO

cQuery += " AND ( "
cQuery += " (CT7_DATA <= '"+DTOS(aMeses[nColunas][3]-1)+"') "
cQuery += " OR "
cQuery += " (CT7_DATA = '"+DTOS(aMeses[nColunas][3])+"' AND "+IIF(!lImpAntLP, "CT7_LP <> 'Z'", "") + " ) "
cQuery += " ) "

Else /// LAS DEMÁS COLUMNAS SIEMPRE SUMAN EL MOVIMIENTO EN EL PERÍODO. (CALCULO EN EL INFORME)

cQuery += " AND CT7_DATA BETWEEN '"+DTOS(aMeses[nColunas][2])+"' AND '"+DTOS(aMeses[nColunas][3])+"' "

If !lImpAntLP .and. nColunas == 12
cQuery += " AND CT7_LP <> 'Z' "
EndIf

Endif

If lImpAntLP .and. (dDataLP >= aMeses[nColunas][2])
cQuery += " AND CT7_LP <> 'Z' "
Endif

cQuery += " AND CT7.D_E_L_E_T_ = ' ') COLUNA"+Str(nColunas,Iif(nColunas>9,2,1))+" "

If nColunas <> Len(aMeses)
cQuery += ", "
EndIf
Next

Else

For nColunas := 1 to Len(aMeses)
cQuery += " (SELECT SUM(CT7_CREDIT) - SUM(CT7_DEBITO) "
cQuery += " FROM "+RetSqlName("CT7")+" CT7 "
cQuery += " WHERE CT7.CT7_FILIAL = '"+xFilial("CT7")+"' "
cQuery += " AND ARQ.CT1_CONTA = CT7_CONTA "
cQuery += " AND CT7_MOEDA = '"+cMoeda+"' "
cQuery += " AND CT7_TPSALD = '"+cTpSaldo+"' "
If lAcum //.and. nColunas == 1/// SI SE ACUMULA, LA PRIMERA COLUMNA TENDRÁ EL SALDO HASTA EL FINAL DEL PERÍODO
cQuery += " AND CT7_DATA <= '"+DTOS(aMeses[nColunas][3])+"' "
Else /// LAS DEMÁS COLUMNAS SIEMPRE SUMAN EL MOVIMIENTO EN EL PERÍODO. (CALCULO EN EL INFORME)
cQuery += " AND CT7_DATA BETWEEN '"+DTOS(aMeses[nColunas][2])+"' AND '"+DTOS(aMeses[nColunas][3])+"' "
Endif
If lImpAntLP .and. dDataLP >= aMeses[nColunas][2]
cQuery += " AND CT7_LP <> 'Z' "
Endif
cQuery += " AND CT7.D_E_L_E_T_ = ' ') COLUNA"+Str(nColunas,Iif(nColunas>9,2,1))+" "

If nColunas <> Len(aMeses)
cQuery += ", "
EndIf
Next

Endif


Elseif nOpc == 2 /// Trecho para eL paso "considera valor en cero"


cQuery += U_VlrZero(lImpAntLP,dDataLP,aMeses,lAcum,cMoeda,cTpSaldo)

Endif

Return cQuery


User Function VlrZero(lImpAntLP,dDataLP,aMeses,lAcum,cMoeda,cTpSaldo)

Local cQuery := ''
Local nColunas := 0
Local lREL12Mes := ((Alltrim(FunName()) == 'CTBR265') .Or. (Alltrim(FunName()) == 'ABCTR265'))
Local lRel6Mes := ((Alltrim(FunName()) == 'CTBR260') .Or. (Alltrim(FunName()) == 'ABCTR260'))
Local nMes := 0

If lREL12Mes .And. !lImpAntLP // solo para comparativo 12 meses

cQuery += " AND ( "
For nColunas := 1 to Len(aMeses)
cQuery += " (SELECT ROUND(SUM(CT7_CREDIT),2) - ROUND(SUM(CT7_DEBITO),2) "
cQuery += " FROM "+RetSqlName("CT7")+" CT7 "
cQuery += " WHERE CT7.CT7_FILIAL = '"+xFilial("CT7")+"' "
cQuery += " AND ARQ.CT1_CONTA = CT7_CONTA "
cQuery += " AND CT7_MOEDA = '"+cMoeda+"' "
cQuery += " AND CT7_TPSALD = '"+cTpSaldo+"' "

If lAcum .and. nColunas <> 12 /// SI SE ACUMULA, LA PRIMERA COLUMNA TENDRÁ EL SALDO HASTA EL FINAL DEL PERÍODO

cQuery += " AND CT7_DATA <= '"+DTOS(aMeses[nColunas][3])+"' "

ElseIf lAcum .and. (nColunas == 12) /// SI SE ACUMULA, LA PRIMERA COLUMNA TENDRÁ EL SALDO HASTA EL FINAL DEL PERÍODO

cQuery += " AND ( "
cQuery += " (CT7_DATA <= '"+DTOS(aMeses[nColunas][3]-1)+"') "
cQuery += " OR "
cQuery += " (CT7_DATA = '"+DTOS(aMeses[nColunas][3])+"' AND "+IIF(!lImpAntLP, "CT7_LP <> 'Z'", "") + " ) "
cQuery += " ) "

Else /// LAS DEMÁS COLUMNAS SIEMPRE SUMAN EL MOVIMIENTO EN EL PERÍODO. (CALCULO EN EL INFORME)

cQuery += " AND CT7_DATA BETWEEN '"+DTOS(aMeses[nColunas][2])+"' AND '"+DTOS(aMeses[nColunas][3])+"' "

If !lImpAntLP .and. nColunas == 12
cQuery += " AND CT7_LP <> 'Z' "
EndIf

Endif

If lImpAntLP .and. dDataLP >= aMeses[nColunas][2]
cQuery += " AND CT7_LP <> 'Z' "
Endif
cQuery += " AND CT7.D_E_L_E_T_ = ' ') <> 0 "
If nColunas <> Len(aMeses)
cQuery += " OR "
EndIf
Next
cQuery += " ) "

Elseif lRel6Mes .And. !lImpAntLP // solo para comparativo 6 meses


For nColunas := 1 to Len(aMeses)
nMes := Month(aMeses[nColunas][3])

cQuery += " (SELECT SUM(CT7_CREDIT) - SUM(CT7_DEBITO) "
cQuery += " FROM "+RetSqlName("CT7")+" CT7 "
cQuery += " WHERE CT7.CT7_FILIAL = '"+xFilial("CT7")+"' "
cQuery += " AND ARQ.CT1_CONTA = CT7_CONTA "
cQuery += " AND CT7_MOEDA = '"+cMoeda+"' "
cQuery += " AND CT7_TPSALD = '"+cTpSaldo+"' "

If lAcum .and. nMes <> 12 /// SI SE ACUMULA, LA PRIMERA COLUMNA TENDRÁ EL SALDO HASTA EL FINAL DEL PERÍODO

cQuery += " AND CT7_DATA <= '"+DTOS(aMeses[nColunas][3])+"' "

ElseIf lAcum .and. (nMes == 12) /// SI SE ACUMULA, LA PRIMERA COLUMNA TENDRÁ EL SALDO HASTA EL FINAL DEL PERÍODO  cQuery += " AND ( "
cQuery += " (CT7_DATA <= '"+DTOS(aMeses[nColunas][3]-1)+"') "
cQuery += " OR "
cQuery += " (CT7_DATA = '"+DTOS(aMeses[nColunas][3])+"' AND "+IIF(!lImpAntLP, "CT7_LP <> 'Z'", "") + " ) "
cQuery += " ) "

Else /// LAS DEMÁS COLUMNAS SIEMPRE SUMAN EL MOVIMIENTO EN EL PERÍODO. (CALCULO EN EL INFORME)

cQuery += " AND CT7_DATA BETWEEN '"+DTOS(aMeses[nColunas][2])+"' AND '"+DTOS(aMeses[nColunas][3])+"' "

If !lImpAntLP .and. nColunas == 12
cQuery += " AND CT7_LP <> 'Z' "
EndIf

Endif

If lImpAntLP .and. (dDataLP >= aMeses[nColunas][2])
cQuery += " AND CT7_LP <> 'Z' "
Endif

cQuery += " AND CT7.D_E_L_E_T_ = ' ') <> 0 "

If nColunas <> Len(aMeses)
cQuery += " OR "
EndIf
Next



cQuery += " AND ( "
For nColunas := 1 to Len(aMeses)
cQuery += " (SELECT ROUND(SUM(CT7_CREDIT),2) - ROUND(SUM(CT7_DEBITO),2) "
cQuery += " FROM "+RetSqlName("CT7")+" CT7 "
cQuery += " WHERE CT7.CT7_FILIAL = '"+xFilial("CT7")+"' "
cQuery += " AND ARQ.CT1_CONTA = CT7_CONTA "
cQuery += " AND CT7_MOEDA = '"+cMoeda+"' "
cQuery += " AND CT7_TPSALD = '"+cTpSaldo+"' "
If lAcum
cQuery += " AND CT7_DATA <= '"+DTOS(aMeses[nColunas][3])+"' "
Else
cQuery += " AND CT7_DATA BETWEEN '"+DTOS(aMeses[nColunas][2])+"' AND '"+DTOS(aMeses[nColunas][3])+"' "
EndIf
If lImpAntLP .and. dDataLP >= aMeses[nColunas][2]
cQuery += " AND CT7_LP <> 'Z' "
Endif
cQuery += " AND CT7.D_E_L_E_T_ = ' ') <> 0 "
If nColunas <> Len(aMeses)
cQuery += " OR "
EndIf
Next
cQuery += " ) "

Else

cQuery += " AND ( "
For nColunas := 1 to Len(aMeses)
cQuery += " (SELECT ROUND(SUM(CT7_CREDIT),2) - ROUND(SUM(CT7_DEBITO),2) "
cQuery += " FROM "+RetSqlName("CT7")+" CT7 "
cQuery += " WHERE CT7.CT7_FILIAL = '"+xFilial("CT7")+"' "
cQuery += " AND ARQ.CT1_CONTA = CT7_CONTA "
cQuery += " AND CT7_MOEDA = '"+cMoeda+"' "
cQuery += " AND CT7_TPSALD = '"+cTpSaldo+"' "
If lAcum
cQuery += " AND CT7_DATA <= '"+DTOS(aMeses[nColunas][3])+"' "
Else
cQuery += " AND CT7_DATA BETWEEN '"+DTOS(aMeses[nColunas][2])+"' AND '"+DTOS(aMeses[nColunas][3])+"' "
EndIf
If lImpAntLP .and. dDataLP >= aMeses[nColunas][2]
cQuery += " AND CT7_LP <> 'Z' "
Endif
cQuery += " AND CT7.D_E_L_E_T_ = ' ') <> 0 "
If nColunas <> Len(aMeses)
cQuery += " OR "
EndIf
Next
cQuery += " ) "

Endif

Return cQuery

Importante

  • Se observa que la utilización del PE y sus impactos en el sistema es de responsabilidad del cliente.
  • Los ejemplos utilizados en esta documentación solamente son para fines de demostración, cada cliente debe verificar el comportamiento que desea realizar de acuerdo con el alcance del punto de entrada.

04. ASUNTOS RELACIONADOS