01. DADOS GERAIS
Linha de Produto: | Microsiga Protheus |
---|---|
Segmento: | Serviços |
Módulo: | Financeiro |
Versão: | 12.1.27 |
Função: | FINA820 |
02. SITUAÇÃO/REQUISITO
Ponto de entrada para manipulação da condição da consulta (Query) principal do Extrator LCDPR e / ou substituição do campo Histórico (E5_HISTOR) por outro histórico customizado, além de permitir a manipulação dos campos selecionados nessa consulta.
03. SOLUÇÃO
Ponto de entrada (PE) F820Qry criado para receber a condição padrão da consulta através de parâmetro (cCond) e manipulá-la (modificá-la ou até substituí-la) a fim de atender a uma necessidade específica de filtro das informações para o Livro Caixa Digital do Produtor Rural, além dos campos (cSelect) selecionados na consulta.
Nota: os campos recebidos e devolvidos por parâmetro precisam respeitar a ordem padrão.
Exemplo:
Compilar a função de usuário:
#Include "Protheus.ch"
#Include "rwmake.ch"
User Function F820Qry()
Local cCond := ParamIXB[1] // Condição (cláusula WHERE da query) padrão para geração dos movimentos financeiros LCDPR.
Local cSelect := ParamIXB[2] // Campos da consulta
Local aVarAux := ParamIXB[3] // Variáveis usadas na Query principal, sendo:
Local aVar := aClone(aVarAux[1])
Local cJoin := "" // Parâmetro disponibilizado para o retorno do PE em que se é permitido incluir outras
// entidades às que já estão no padrão da consulta (SED, SA1, SE2, etc) por meio
// de junções (INNER, LEFT, JOIN, por exemplo).
// aVar[1] = cpf do declarante
// aVar[2] = Array contendo os parâmetros da tela do wizard
// aVar[2][1] - Cód. da versão do leiaute
// aVar[2][2] - Cpf do declarante
// aVar[2][3] - Reservado p/ o nome do declarante
// aVar[2][4] - Indicador do início do período: 0 - Regular; 1 - Abertura; 2 - Início da obrigatoriedade
// aVar[2][5] - Indicador de Sit. Especial: 0 - Normal; 1 - Falecimento; 2 - Espólio; 3 - Sapida definitiva do País
// aVar[2][6] - Data da situação especial
// aVar[2][7] - Data do início do período
// aVar[2][8] - Data Final do período
// aVar[2][9] - Forma de apuração: 1 - Livro Caixa; 2 - Apuração Lucro p/ Lei 8023/90;
// aVar[2][10] - Diretório de gravação do arquivo
// aVar[2][11] - Reservado para uso interno
// aVar[3] = Tipo de data usada no extrator: 1- Data da baixa; 2- Data de Crédito
// aVar[4] = Objeto usado na consulta: dados do banco
// aVar[5] = Objeto usado na consulta: dados da filial
// aVar[6] = Tamanho do campo filial da tabela SEV
// aVar[7] = Tamanho do campo filial da tabela SE5
// aVar[8] = Tamanho do campo filial da tabela SED
// aVar[9] = Tamanho do campo filial da tabela SA6
// aVar[10] = Tamanho do campo filial da tabela SA1
// aVar[11] = Tamanho do campo filial da tabela SA2
// aVar[12] = Tamanho do campo filial da tabela SE1
// aVar[13] = Tamanho do campo filial da tabela SE2
// aVar[14] = Natureza padrão do PIS
// aVar[15] = Natureza padrão do SEST
// aVar[16] = Natureza padrão do ISS
// aVar[17] = Natureza padrão do COFINS
// aVar[18] = Natureza padrão do CSLL
// aVar[19] = Natureza padrão do INSS
// aVar[20] = Natureza padrão do IRRF
// aVar[21] = Indica se o campo E5_CGC existe na base
Local aRet := {}
Local cSelUsr := cSelect // Padrão: SUBSTRING(E5_DATA,7,2) DIA, SUBSTRING(E5_DATA, 5, 2) || SUBSTRING(E5_DATA, 1, 4) MES_ANO, E5_DATA DDATA, "
// TRFIL.COD FILCOD, FVV.FVV_PARTIC AS PERC, TRBCO.COD BANCO, E5_PREFIXO PREFIXO, E5_NUMERO NUMDOC, E5_HISTOR HIST, SA1.A1_CGC CNPJCLI, SA2.A2_CGC CNPJFOR, "
// E5_TIPODOC TPDOC, E5_TIPO, E5_RECPAG RECPAG, E1_VLCRUZ, E2_VLCRUZ, E1_SALDO SLDREC, E2_SALDO SLDPAG, E5_MOTBX, SE5.R_E_C_N_O_ REC, E5_CLIFOR CLIFOR, "
// E5_VALOR AS VALOR "
// , E5_CGC AS CGC (campo disponível a partir do dicionário do leiaute 1.3)
// , E5_VLMOED2 VLMOED2, E5_MOEDA MOEDA, E5_ORIGEM ORI , E5_PARCELA PARC , E5_LOJA LOJA, ' ' CODEMP, E5_FILIAL SEFIL "
// , ISNULL(CASE WHEN E1_VLCRUZ > 0 THEN SF2IMP.R_E_C_N_O_ ELSE SF1IMP.R_E_C_N_O_ END,0) RECSF12 "
// , ISNULL(CASE WHEN E1_VLCRUZ > 0 THEN SF2IMP.F2_VALBRUT ELSE SF1IMP.F1_VALBRUT END,0) VBRUT12 "
// , ISNULL(CASE WHEN E1_VLCRUZ > 0 THEN SF2IMP.F2_VLSENAR ELSE SF1IMP.F1_VLSENAR END,0) VSENA12 "
// , ISNULL(CASE WHEN E1_VLCRUZ > 0 THEN SF2IMP.F2_VALINSS ELSE SF1IMP.F1_INSS END,0) VINSS12 "
// , ISNULL(CASE WHEN E1_VLCRUZ > 0 THEN SF2IMP.F2_CONTSOC ELSE SF1IMP.F1_CONTSOC END,0) COSOC12 "
// , NULL NFTOTAL, NULL FUNRURAL, NULL VLSENAR, NULL VALINS, NULL VLFETFAC "
Local cCondCust : = " AND E5_NATUREZ = 'MYNATUR' "
cJoin := "" // Usado para junção da query principal com outras entidades. Ex.:
// "LEFT JOIN MINHATAB AS MTAB ON E5_IDORIG = MTAB.IDDOC
cCond := cCond + cCondCust
aAdd(aRet, cCond)
aAdd(aRet, " E5_BENEF || ' - ' || E5_IDORIG ") // Parâmetro que substitui a impressão do histórico do título (campo E5_HISTOR).
aAdd(aRet, cSelUsr + ", MTAB.CPO_A AS MEUCPO ") // Parâmetro para definir tratativas na consulta principal do relatório, sempre respeitando a estrutura padrão dos campos da consulta.
aAdd(aRet, cJoin)
aAdd(aRet, {{ "MEUCPO", "C", 10, 0}}) // Parâmetro obrigatório caso se adicione campos de outras tabelas
// ao 3º parâmetro do aRet
// Estrutura: aRet[5][1][1] - Alias do campo
// Estrutura: aRet[5][1][2] - Tipo de dado (C - Caracter; ou N - Numérico)
// Estrutura: aRet[5][1][3] - Tamanho do campo
// Estrutura: aRet[5][1][4] - Parte decimal do campo (se numérico)
aAdd(aRet, " E1_HIST || ' - ' || E1_ORIGEM ") // Parâmetro que substitui a impressão do histórico do título (campo E1_HIST).
aAdd(aRet, " E2_HIST || ' - ' || E2_ORIGEM ") // Parâmetro que substitui a impressão do histórico do título (campo E2_HIST).
Return aRet
Onde o 'cCond' recebido por parâmetro é a cláusula Where padrão do Extrator LCDPR e 'cSelect' contém os campos utilizados na primeira parte da consulta do Extrator. Como a consulta contém alguns UNION em sua estrutura, essa ordem padrão deve ser mantida.
Já o terceiro parâmetro passado (aVar) contém todas as variáveis locais utilizadas na query.
O quarto parâmetro (cJoin) está disponível para retorno de uma junção customizada do operador com as junções padrões existentes (entidade SED, SA1, SE2, etc).
O quinto parâmetro (aRet[5]) deverá conter a estrutura de campos customizados e que tenham sido adicionados ao 3º parâmetro (cSelUsr), quando for necessário.
O sexto parâmetro (aRet[6]: é o campo (ou conjunto de campos) que irão substituir a informação contida no campo E1_HIST de cada Recebimento Antecipado (RA) quando MV_LCDPRRA = 'D'.
O sétimo parâmetro (aRet[7]: é o campo (ou conjunto de campos) que irão substituir a informação contida no campo E2_HIST de cada Pagamento Antecipado (PA) quando MV_LCDPRPA = 'D'.
Nota
A validação para os campos (E5_TIPO / E5_DOCUMEN/ E5_IDMOVI/ E5_TIPODOC/ E5_NUMERO/ E5_BANCO/ E5_AGENCIA/ E5_CONTA/ E5_NUMCHEQ) da tabela de movimento bancário (SE5) para verificar se os mesmos não estão vazios, devem ser controlados pelo ponto de entrada.
Ex: !Empty(SE5->(E5_BANCO+E5_AGENCIA+E5_CONTA+E5_NUMCHEQ)
Caso desejar tratar dados de empresas diferentes no arquivo disponibilizamos o campo CODEMP (Código da empresa), para que possa ser informado via ponto de entrada a empresa que deseja consultar. Nesse caso, a informação do campo é OBRIGATÓRIA.
Ex: 'T2' AS CODEMP, para a tabela de movimento SE5"T2"0.
Caso não haja outras empresas envolvidas na consulta, o campo poderá ser definido como vazio(' ').
04. DEMAIS INFORMAÇÕES
Retorno do PE:
cCond (posição 1ª do aRet): condição escrita (em formato de consulta SQL) para filtragem nos dados da base de forma customizada;
aRet[2]: é o campo (ou conjunto de campos) que irão substituir a informação contida no campo E5_HISTOR de cada movimento financeiro (SE5);
cSelUsr (posição 3ª do aRet): campos selecionados na consulta padrão dos movimentos financeiros;
(cJoin) está disponível para retorno de uma junção customizada do operador com as junções padrões existentes (entidade SED, SA1, SE2, etc); e
(aRet[5]) deverá conter a estrutura de campos customizados e que tenham sido adicionados ao 3º parâmetro (cSelUsr), quando for necessário.
aRet[6]: é o campo (ou conjunto de campos) que irão substituir a informação contida no campo E1_HIST de cada Recebimento Antecipado (RA) quando MV_LCDPRRA = 'D';
aRet[7]: é o campo (ou conjunto de campos) que irão substituir a informação contida no campo E2_HIST de cada Pagamento Antecipado (PA) quando MV_LCDPRPA = 'D';
05. ASSUNTOS RELACIONADOS
- Não se aplica.