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