Definir alfa xCursorPrin; Definir alfa xCursorItensNf; Definir Numero nStatusProcesso; Definir alfa aMensagemProcesso; Definir Alfa aAspaDupla; Definir Numero nParam_CodEmp; Definir Numero nParam_CodFil; Definir Numero nParam_NumNfc; Definir Alfa aParam_ChvNel; Definir Data dParam_DatGer; Definir Numero nSql_E000nfc_cgcfil; Definir Numero nSql_E000nfc_cgcfor; Definir Alfa aSql_E000nfc_chvnel; Definir Numero nSql_E000nfc_numnfc; Definir Alfa aSql_E000nfc_codsnf; Definir Numero nSql_E000nfc_tipnfe; Definir Alfa aSql_E000nfc_obsnfc; Definir Data dSql_E000nfc_datemi; Definir Data dSql_E000nfc_datent; Definir Numero nSql_E000nfc_pesbru; Definir Numero nSql_E000nfc_pesliq; Definir Numero nSql_E000nfc_usuger; Definir Data dSql_E000nfc_datger; Definir Numero nSql_E000nfc_horger; Definir Numero nSql_E070fil_codemp; Definir Numero nSql_E070fil_codfil; Definir Alfa aSql_E070fil_nomfil; Definir Numero nSql_E095for_codfor; Definir Alfa aSql_E095for_nomfor; Definir Alfa aSql_E095for_apefor; Definir Numero nSql_E095for_cgccpf; Definir Numero nSql_E000ipc_seqipc; Definir Numero nSql_E000ipc_numnfc; Definir Alfa aSql_E000ipc_codsnf; Definir Alfa aSql_E000ipc_tnspro; Definir Alfa aSql_E000ipc_noppro; Definir Numero nSql_E000ipc_Cgcocp; Definir Numero nSql_E000ipc_numocp; Definir Numero nSql_E000ipc_seqipo; Definir Alfa aSql_E000ipc_codpro; Definir Alfa aSql_E000ipc_codder; Definir Alfa aSql_E000ipc_cplipc; Definir Alfa aSql_E000ipc_codlot; Definir Numero nSql_E000ipc_qtdrec; Definir Alfa aSql_E000ipc_uninfc; Definir Alfa aSql_E000ipc_unimed; Definir Numero nSql_E000ipc_qtdest; Definir Numero nSql_E000ipc_pesbru; Definir Numero nSql_E000ipc_pesliq; Definir Numero nSql_E000ipc_preuni; Definir Numero nSql_E000ipc_preest; Definir Numero nSql_E000ipc_prebas; Definir Alfa aSql_E000ipc_profor; Definir Funcao IniciaProcessamento(); Definir Funcao MontaResposta(); Definir Funcao BuscaDadosNotasFiscais(); Definir Funcao BuscaItensNotasFiscais(); Definir Funcao SugereOrdemCompraItemNf(); Definir Funcao AddNotaFiscalToResposta(); Definir Funcao AddItensNotaFiscalToResposta(); aAspaDupla = "\""; @Origem do relacionamento da Ordem de Compra/Item com o Item da Nota de Entrada@ FormaRelOcp_SemRelacionamento = 0; FormaRelOcp_ViaXml = 1; FormaRelOcp_ViaObsXml = 2; FormaRelOcp_ViaOcFornecedor = 3; FormaRelOcp_ViaOcGrupoEmpresa = 4; IniciaProcessamento(); @------------------------------------------------------------------------------@ @----Função para iniciar a distribuição do processamento das informações-------@ @------------------------------------------------------------------------------@ Funcao IniciaProcessamento();{ nStatusProcesso = 1; aMensagemProcesso ="Processamento realizado com sucesso."; nParam_CodEmp=ListarNotasFiscais.CodEmp; nParam_CodFil=ListarNotasFiscais.CodFil; nParam_NumNfc=ListarNotasFiscais.NumNfc; aParam_ChvNel=ListarNotasFiscais.ChvNel; dParam_DatGer=ListarNotasFiscais.DatGer; nParam_OffSet=ListarNotasFiscais.OffSet; nParam_Limit =ListarNotasFiscais.Limit; nCodUsu=Codusu; nParam_CodEmp=1; nParam_CodFil=1; LimpaEspacos(aParam_ChvNel); @aParam_ChvNel = "35250961425237000109550000001355161443097706";@ Se((dParam_DatGer=0) e (aParam_ChvNel="") e (nParam_NumNfc=0)){ dParam_DatGer = DatSis; @MontaData(01,07,2025,dParam_DatGer);@ }senao { MontaData(01,09,2025,dParam_DatGer); } Se(nParam_Limit=0){ nParam_Limit = 99999999; } Se(nStatusProcesso=1){ BuscaDadosNotasFiscais(); } MontaResposta(); } @--Função que devolve o resultado do processamento dos dados de entrada--------@ Funcao MontaResposta();{ ListarNotasFiscais.StatusProcesso = nStatusProcesso; ListarNotasFiscais.MensagemProcesso = aMensagemProcesso; } Funcao BuscaDadosNotasFiscais();{ SQL_Criar(xCursorPrin); SQL_UsarAbrangencia(xCursorPrin,0); SQL_UsarSQLSenior2(xCursorPrin,0); SQL_DefinirComando(xCursorPrin, "select \ E000nfc.cgcfil as E000nfc_Cgcfil,\ E000nfc.cgcfor as E000nfc_Cgcfor,\ E000nfc.chvnel as E000nfc_Chvnel,\ E000nfc.numnfc as E000nfc_Numnfc,\ E000nfc.codsnf as E000nfc_Codsnf,\ E000nfc.tipnfe as E000nfc_Tipnfe,\ CASE WHEN INSTR(E000nfc.obsnfc,'|LOG|') > 0 \ THEN SUBSTR(E000nfc.obsnfc, 1, INSTR(E000nfc.obsnfc,'|LOG|') - 1) \ ELSE E000nfc.obsnfc \ END as E000nfc_Obsnfc,\ E000nfc.datemi as E000nfc_Datemi,\ E000nfc.datent as E000nfc_Datent,\ E000nfc.pesbru as E000nfc_Pesbru,\ E000nfc.pesliq as E000nfc_Pesliq,\ E000nfc.usuger as E000nfc_Usuger,\ E000nfc.datger as E000nfc_Datger,\ E000nfc.horger as E000nfc_Horger,\ E070fil.codemp as E070fil_Codemp,\ E070fil.codfil as E070fil_Codfil,\ E070fil.nomfil as E070fil_Nomfil,\ E095for.codfor as E095for_Codfor,\ E095for.nomfor as E095for_Nomfor,\ E095for.cgccpf as E095for_Cgccpf,\ E095for.apefor as E095for_Apefor \ from E000nfc \ inner join ( \ select numcgc, codemp, codfil,nomfil, \ row_number() over (partition by numcgc order by codemp, codfil) as prioridade_filial \ from e070fil \ ) e070fil \ on e070fil.numcgc = e000nfc.cgcfil \ and e070fil.prioridade_filial = 1 \ inner join (select codfor,cgccpf,nomfor,apefor, \ row_number() over (partition by cgccpf order by codfor ) as prioridade_fornecedor \ from e095for) e095for \ on e095for.cgccpf = e000nfc.cgcfor \ and e095for.prioridade_fornecedor = 1 \ left join e440nfc \ on e440nfc.codemp = e070fil.codemp \ and e440nfc.chvnel = e000nfc.chvnel \ where E000nfc.tipnfe in (1) \ and e440nfc.codemp is null \ and (1=1 or :nCodUsu=334 )\ and E000nfc.datger >= :dParam_DatGer \ and (E070fil.codemp = :nParam_CodEmp or :nParam_CodEmp=0 )\ and (E070fil.codfil = :nParam_CodFil or :nParam_CodFil=0 )\ and (E000nfc.numnfc = :nParam_NumNfc or :nParam_NumNfc=0 ) \ and (E000nfc.chvnel = :aParam_ChvNel or :aParam_ChvNel=' ') \ and exists (select 1 from e000ipc \ where E000ipc.Cgcfil=E000nfc.Cgcfil\ and E000ipc.Cgcfor=E000nfc.Cgcfor\ and E000ipc.Chvnel=E000nfc.Chvnel \ and length(E000ipc.unimed) <=3 )\ order by E000nfc.datger,E000nfc.horger \ OFFSET :nParam_OffSet ROWS FETCH NEXT :nParam_Limit ROWS ONLY "); SQL_DefinirInteiro(xCursorPrin,"nCodUsu",nCodUsu); SQL_DefinirInteiro(xCursorPrin,"nParam_CodEmp",nParam_CodEmp); SQL_DefinirInteiro(xCursorPrin,"nParam_CodFil",nParam_CodFil); SQL_DefinirInteiro(xCursorPrin,"nParam_NumNfc",nParam_NumNfc); SQL_DefinirAlfa (xCursorPrin,"aParam_ChvNel",aParam_ChvNel); SQL_DefinirData (xCursorPrin,"dParam_DatGer",dParam_DatGer); SQL_DefinirInteiro(xCursorPrin,"nParam_OffSet",nParam_OffSet); SQL_DefinirInteiro(xCursorPrin,"nParam_Limit",nParam_Limit); SQL_AbrirCursor (xCursorPrin); Enquanto(SQL_EOF(xCursorPrin)=0){ SQL_RetornarFlutuante(xCursorPrin,"E000nfc_Cgcfil",nSql_E000nfc_Cgcfil); SQL_RetornarFlutuante(xCursorPrin,"E000nfc_Cgcfor",nSql_E000nfc_Cgcfor); SQL_RetornarAlfa (xCursorPrin,"E000nfc_Chvnel",aSql_E000nfc_Chvnel); SQL_RetornarInteiro (xCursorPrin,"E000nfc_Numnfc",nSql_E000nfc_Numnfc); SQL_RetornarAlfa (xCursorPrin,"E000nfc_Codsnf",aSql_E000nfc_Codsnf); SQL_RetornarInteiro (xCursorPrin,"E000nfc_Tipnfe",nSql_E000nfc_Tipnfe); SQL_RetornarAlfa (xCursorPrin,"E000nfc_Obsnfc",aSql_E000nfc_Obsnfc); SQL_RetornarData (xCursorPrin,"E000nfc_Datemi",dSql_E000nfc_Datemi); SQL_RetornarData (xCursorPrin,"E000nfc_Datent",dSql_E000nfc_Datent); SQL_RetornarFlutuante(xCursorPrin,"E000nfc_Pesbru",nSql_E000nfc_Pesbru); SQL_RetornarFlutuante(xCursorPrin,"E000nfc_Pesliq",nSql_E000nfc_Pesliq); SQL_RetornarInteiro (xCursorPrin,"E000nfc_Usuger",nSql_E000nfc_Usuger); SQL_RetornarData (xCursorPrin,"E000nfc_Datger",dSql_E000nfc_Datger); SQL_RetornarInteiro (xCursorPrin,"E000nfc_Horger",nSql_E000nfc_Horger); SQL_RetornarInteiro (xCursorPrin,"E070fil_Codemp",nSql_E070fil_Codemp); SQL_RetornarInteiro (xCursorPrin,"E070fil_Codfil",nSql_E070fil_Codfil); SQL_RetornarAlfa (xCursorPrin,"E070fil_Nomfil",aSql_E070fil_Nomfil); SQL_RetornarInteiro (xCursorPrin,"E095for_Codfor",nSql_E095for_Codfor); SQL_RetornarAlfa (xCursorPrin,"E095for_Nomfor",aSql_E095for_Nomfor); SQL_RetornarAlfa (xCursorPrin,"E095for_Apefor",aSql_E095for_Apefor); SQL_RetornarFlutuante(xCursorPrin,"E095for_Cgccpf",nSql_E095for_Cgccpf); AddNotaFiscalToResposta(); BuscaItensNotasFiscais(); SQL_Proximo(xCursorPrin); } SQL_FecharCursor(xCursorPrin); SQL_Destruir(xCursorPrin); } Funcao BuscaItensNotasFiscais();{ SQL_Criar(xCursorItensNf); SQL_UsarAbrangencia(xCursorItensNf,0); SQL_UsarSQLSenior2(xCursorItensNf,0); SQL_DefinirComando(xCursorItensNf,"select \ E000ipc.seqipc as E000ipc_Seqipc,\ E000ipc.numnfc as E000ipc_Numnfc,\ E000ipc.codsnf as E000ipc_Codsnf,\ E000ipc.tnspro as E000ipc_Tnspro,\ E000ipc.noppro as E000ipc_Noppro,\ E000ipc.cgcocp as E000ipc_cgcocp,\ E000ipc.numocp as E000ipc_Numocp,\ E000ipc.seqipo as E000ipc_Seqipo,\ E000ipc.codpro as E000ipc_Codpro,\ E000ipc.codder as E000ipc_Codder,\ E000ipc.cplipc as E000ipc_Cplipc,\ E000ipc.codlot as E000ipc_Codlot,\ E000ipc.qtdrec as E000ipc_Qtdrec,\ E000ipc.uninfc as E000ipc_Uninfc,\ E000ipc.unimed as E000ipc_Unimed,\ E000ipc.qtdest as E000ipc_Qtdest,\ E000ipc.pesbru as E000ipc_Pesbru,\ E000ipc.pesliq as E000ipc_Pesliq,\ E000ipc.preuni as E000ipc_Preuni,\ E000ipc.preest as E000ipc_Preest,\ E000ipc.prebas as E000ipc_Prebas,\ E000ipc.profor as E000ipc_Profor \ from E000ipc \ where E000ipc.Cgcfil=:nSql_E000nfc_Cgcfil\ and E000ipc.Cgcfor=:nSql_E000nfc_Cgcfor\ and E000ipc.Chvnel=:aSql_E000nfc_Chvnel \ order by E000ipc.seqipc "); SQL_DefinirFlutuante(xCursorItensNf,"nSql_E000nfc_Cgcfil",nSql_E000nfc_Cgcfil); SQL_DefinirFlutuante(xCursorItensNf,"nSql_E000nfc_Cgcfor",nSql_E000nfc_Cgcfor); SQL_DefinirAlfa (xCursorItensNf,"aSql_E000nfc_Chvnel",aSql_E000nfc_Chvnel); SQL_AbrirCursor (xCursorItensNf); Enquanto(SQL_EOF(xCursorItensNf)=0){ SQL_RetornarInteiro (xCursorItensNf,"E000ipc_Seqipc",nSql_E000ipc_Seqipc); SQL_RetornarInteiro (xCursorItensNf,"E000ipc_Numnfc",nSql_E000ipc_Numnfc); SQL_RetornarAlfa (xCursorItensNf,"E000ipc_Codsnf",aSql_E000ipc_Codsnf); SQL_RetornarAlfa (xCursorItensNf,"E000ipc_Tnspro",aSql_E000ipc_Tnspro); SQL_RetornarAlfa (xCursorItensNf,"E000ipc_Noppro",aSql_E000ipc_Noppro); SQL_RetornarFlutuante(xCursorItensNf,"E000ipc_Cgcocp",nSql_E000ipc_Cgcocp); SQL_RetornarInteiro (xCursorItensNf,"E000ipc_Numocp",nSql_E000ipc_Numocp); SQL_RetornarInteiro (xCursorItensNf,"E000ipc_Seqipo",nSql_E000ipc_Seqipo); SQL_RetornarAlfa (xCursorItensNf,"E000ipc_Codpro",aSql_E000ipc_Codpro); SQL_RetornarAlfa (xCursorItensNf,"E000ipc_Codder",aSql_E000ipc_Codder); SQL_RetornarAlfa (xCursorItensNf,"E000ipc_Cplipc",aSql_E000ipc_Cplipc); SQL_RetornarAlfa (xCursorItensNf,"E000ipc_Codlot",aSql_E000ipc_Codlot); SQL_RetornarFlutuante(xCursorItensNf,"E000ipc_Qtdrec",nSql_E000ipc_Qtdrec); SQL_RetornarAlfa (xCursorItensNf,"E000ipc_Uninfc",aSql_E000ipc_Uninfc); SQL_RetornarAlfa (xCursorItensNf,"E000ipc_Unimed",aSql_E000ipc_Unimed); SQL_RetornarFlutuante(xCursorItensNf,"E000ipc_Qtdest",nSql_E000ipc_Qtdest); SQL_RetornarFlutuante(xCursorItensNf,"E000ipc_Pesbru",nSql_E000ipc_Pesbru); SQL_RetornarFlutuante(xCursorItensNf,"E000ipc_Pesliq",nSql_E000ipc_Pesliq); SQL_RetornarFlutuante(xCursorItensNf,"E000ipc_Preuni",nSql_E000ipc_Preuni); SQL_RetornarFlutuante(xCursorItensNf,"E000ipc_Preest",nSql_E000ipc_Preest); SQL_RetornarFlutuante(xCursorItensNf,"E000ipc_Prebas",nSql_E000ipc_Prebas); SQL_RetornarAlfa (xCursorItensNf,"E000ipc_Profor",aSql_E000ipc_Profor); nFormaRelOcp = FormaRelOcp_SemRelacionamento; Se((nSql_E000ipc_Numocp<>0) e (nSql_E000ipc_Seqipo<>0)){ nFormaRelOcp = FormaRelOcp_ViaXml; }senao { SugereOrdemCompraItemNf(); } AddItensNotaFiscalToResposta(); SQL_Proximo(xCursorItensNf); } SQL_FecharCursor(xCursorItensNf); SQL_Destruir(xCursorItensNf); } Funcao SugereOrdemCompraItemNf();{ LimpaEspacos(aSql_E000ipc_Codpro); Se(aSql_E000ipc_Codpro<>""){ } } Funcao AddNotaFiscalToResposta();{ ListarNotasFiscais.NotasFiscais.CriarLinha(); ListarNotasFiscais.NotasFiscais.ChvNel = aSql_E000nfc_Chvnel; ListarNotasFiscais.NotasFiscais.CodEmp = nSql_E070fil_Codemp; ListarNotasFiscais.NotasFiscais.CodFil = nSql_E070fil_Codfil; ListarNotasFiscais.NotasFiscais.NumNfc = nSql_E000nfc_Numnfc; ListarNotasFiscais.NotasFiscais.CodSnf = aSql_E000nfc_Codsnf; ListarNotasFiscais.NotasFiscais.CodFor = nSql_E095for_Codfor; ListarNotasFiscais.NotasFiscais.NomFor = aSql_E095for_Nomfor; ListarNotasFiscais.NotasFiscais.CgcCpf = nSql_E095for_Cgccpf; ListarNotasFiscais.NotasFiscais.DatEmi = dSql_E000nfc_Datemi; ListarNotasFiscais.NotasFiscais.DatEnt = dSql_E000nfc_Datent; ListarNotasFiscais.NotasFiscais.DatGer = dSql_E000nfc_Datger; ListarNotasFiscais.NotasFiscais.ObsNfc = aSql_E000nfc_Obsnfc; } Funcao AddItensNotaFiscalToResposta();{ ListarNotasFiscais.NotasFiscais.Itens.CriarLinha(); ListarNotasFiscais.NotasFiscais.Itens.SeqIpc = nSql_E000ipc_Seqipc; ListarNotasFiscais.NotasFiscais.Itens.Profor = aSql_E000ipc_profor; ListarNotasFiscais.NotasFiscais.Itens.CplIpc = aSql_E000ipc_Cplipc; ListarNotasFiscais.NotasFiscais.Itens.CodPro = aSql_E000ipc_Codpro; ListarNotasFiscais.NotasFiscais.Itens.CodDer = aSql_E000ipc_Codder; ListarNotasFiscais.NotasFiscais.Itens.NumOcp = nSql_E000ipc_Numocp; ListarNotasFiscais.NotasFiscais.Itens.SeqIpo = nSql_E000ipc_Seqipo; ListarNotasFiscais.NotasFiscais.Itens.OriOcp = nFormaRelOcp ; ListarNotasFiscais.NotasFiscais.Itens.Codlot = aSql_E000ipc_codlot; ListarNotasFiscais.NotasFiscais.Itens.Qtdrec = nSql_E000ipc_qtdrec; ListarNotasFiscais.NotasFiscais.Itens.Uninfc = aSql_E000ipc_uninfc; ListarNotasFiscais.NotasFiscais.Itens.Unimed = aSql_E000ipc_unimed; ListarNotasFiscais.NotasFiscais.Itens.Qtdest = nSql_E000ipc_qtdest; ListarNotasFiscais.NotasFiscais.Itens.Pesbru = nSql_E000ipc_pesbru; ListarNotasFiscais.NotasFiscais.Itens.Pesliq = nSql_E000ipc_pesliq; ListarNotasFiscais.NotasFiscais.Itens.Preuni = nSql_E000ipc_preuni; ListarNotasFiscais.NotasFiscais.Itens.Prebas = nSql_E000ipc_prebas; }