01. DADOS GERAIS
Produto: |
TOTVS Backoffice
|
---|---|
Linha de Produto: | Linha Protheus |
Segmento: | Serviços |
Módulo: | TOTVS Backoffice (Linha Protheus) - Contabilidade Gerencial (SIGACTB)
|
Função: | CTBXSALA |
País: | Brasil |
Ticket: | Interno |
Requisito/Story/Issue | DSERCTR1-46748 |
02. DESCRIÇÃO
O ponto de entrada CTBSLDLP permite que o sistema acesse as datas da última e penúltima apuração, mesmo quando o parâmetro "Posição Ant. L/P" está configurado como "Sim". Ele possibilita a visualização e manipulação de informações de apurações anteriores, garantindo que os dados históricos estejam disponíveis para consultas e processos de análise.
Com o CTBSLDLP, é possível ajustar o comportamento padrão do sistema para garantir que, mesmo quando há restrições impostas pelo parâmetro de posição anterior, as informações das apurações mais recentes possam ser acessadas e utilizadas conforme necessário, contribuindo para a precisão dos processos de controle e análise financeira.
03. DEMAIS INFORMAÇÕES
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 // só para comparativo 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 /// SE FOR ACUMULADO, A PRIMEIRA COLUNA TERA O SALDO ATE O FINAL DO PERIODO cQuery += " AND CT7_DATA <= '"+DTOS(aMeses[nColunas][3])+"' " ElseIf lAcum .and. (nColunas == 12) /// SE FOR ACUMULADO, A PRIMEIRA COLUNA TERA O SALDO ATE O FINAL DO PERIODO 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 /// AS DEMAIS COLUNAS SEMPRE SOMAM O MOVIMENTO NO PERIODO. (CALCULO NO RELATORIO) 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 // só 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 /// SE FOR ACUMULADO, A PRIMEIRA COLUNA TERA O SALDO ATE O FINAL DO PERIODO cQuery += " AND CT7_DATA <= '"+DTOS(aMeses[nColunas][3])+"' " ElseIf lAcum .and. (nMes == 12) /// SE FOR ACUMULADO, A PRIMEIRA COLUNA TERA O SALDO ATE O FINAL DO PERIODO 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 /// AS DEMAIS COLUNAS SEMPRE SOMAM O MOVIMENTO NO PERIODO. (CALCULO NO RELATORIO) 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/// SE FOR ACUMULADO, A PRIMEIRA COLUNA TERA O SALDO ATE O FINAL DO PERIODO cQuery += " AND CT7_DATA <= '"+DTOS(aMeses[nColunas][3])+"' " Else /// AS DEMAIS COLUNAS SEMPRE SOMAM O MOVIMENTO NO PERIODO. (CALCULO NO RELATORIO) 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 o passo "considera valor zerado" 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 // só 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 /// SE FOR ACUMULADO, A PRIMEIRA COLUNA TERA O SALDO ATE O FINAL DO PERIODO cQuery += " AND CT7_DATA <= '"+DTOS(aMeses[nColunas][3])+"' " ElseIf lAcum .and. (nColunas == 12) /// SE FOR ACUMULADO, A PRIMEIRA COLUNA TERA O SALDO ATE O FINAL DO PERIODO 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 /// AS DEMAIS COLUNAS SEMPRE SOMAM O MOVIMENTO NO PERIODO. (CALCULO NO RELATORIO) 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 // só 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 /// SE FOR ACUMULADO, A PRIMEIRA COLUNA TERA O SALDO ATE O FINAL DO PERIODO cQuery += " AND CT7_DATA <= '"+DTOS(aMeses[nColunas][3])+"' " ElseIf lAcum .and. (nMes == 12) /// SE FOR ACUMULADO, A PRIMEIRA COLUNA TERA O SALDO ATE O FINAL DO PERIODO 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 /// AS DEMAIS COLUNAS SEMPRE SOMAM O MOVIMENTO NO PERIODO. (CALCULO NO RELATORIO) 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 !!
- Observa-se que a utilização do PE e os impactos dele no sistema são de responsabilidade do cliente.
- Os exemplos utilizados nessa documentação são apenas para fins de demonstração, cada cliente deve verificar qual comportamento deseja realizar de acordo com o escopo do ponto de entrada.