Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Compilar a função de usuário:


#Include "Protheus.ch"
#Include "rwmake.ch"


User Function F820Qry()
Local cCond     
Local cCond     := ParamIXB ParamIXB[1] // Condição (cláusula WHERE da query) padrão para geração dos movimentos financeiros LCDPR.
Local cSelect   Local cSelect   := ParamIXB ParamIXB[2] // Campos da consulta
Local aVarAux  Local    aVarAux   := ParamIXB 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 aRet      := {}
Local cSelUsr   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 PREFIXOPREFIXO 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 CGC AS CGC (campo disponível a partir do dicionário do leiaute 1.3)

            // , E5_VLMOED2 VLMOED2VLMOED2 VLMOED2, E5 E5_MOEDA MOEDA, E5 E5_ORIGEM ORI , E5_PARCELA PARC , E5_LOJA LOJA, ' ' CODEMP, E5_FILIAL SEFIL "cCond _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 "

cJoin   := "" // Usado para junção da query principal com outras entidades. Ex.:
                // "LEFT JOIN MINHATAB AS MTAB ON E5_IDORIG = MTAB.IDDOC
cCond   := " E5_NATUREZ = 'NTLCDPRESP' "

aAdd(aRet, cCond cCond)
aAdd(aRet, " E5_BENEF BENEF || ' - ' || E5 E5_IDORIG ") // Parâmetro que substitui a impressão do histórico do título (campo E5_HISTOR).

aAdd(aRet, cSelUsr, 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.
Return aRet
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)

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.


Informações
titleNota

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(' ').

...