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 |
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.
cQuery += ExecBlock("CTBSldLP", .F.,.F., { lImpAntLP , dDataLP, aMeses , lAcum , cMoeda , cTpSaldo , 1 } )
#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