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_NumOcp; Definir Data dParam_DatGer; Definir Numero nParam_CodFor; Definir Numero nSql_E420ocp_Codemp; Definir Numero nSql_E420ocp_Codfil; Definir Numero nSql_E420ocp_Numocp; Definir Data dSql_E420ocp_Datemi; Definir Data dSql_E420ocp_Datger; Definir Numero nSql_E420ocp_Codusu; Definir Numero nSql_E420ocp_Codfor; Definir Alfa aSql_E420ocp_Obsocp; Definir Numero nSql_E420ocp_Codtra; Definir Alfa aSql_E420ocp_Ciffob; Definir Alfa aSql_E095for_Nomfor; Definir Alfa aSql_E095for_Apefor; Definir Alfa aSql_E095for_Tipfor; Definir Alfa aSql_E095for_Tipmer; Definir Alfa aSql_E095for_Codram; Definir Numero nSql_E095for_Cgccpf; Definir Numero nSql_E095for_Codgre; Definir Numero nSql_E420ipo_Seqipo; Definir Alfa aSql_E420ipo_Codpro; Definir Alfa aSql_E420ipo_Codder; Definir Alfa aSql_E420ipo_Cplipo; Definir Alfa aSql_E420ipo_Profor; Definir Alfa aSql_E420ipo_Desfor; Definir Alfa aSql_E420ipo_Unifor; Definir Numero nSql_E420ipo_Qtdped; Definir Numero nSql_E420ipo_Qtdrec; Definir Numero nSql_E420ipo_Qtdcan; Definir Numero nSql_E420ipo_Qtdabe; Definir Alfa aSql_E420ipo_Unimed; Definir Alfa aSql_E420ipo_Codtpr; Definir Numero nSql_E420ipo_Preuni; Definir Numero nSql_E420ipo_Vlrbru; Definir Funcao IniciaProcessamento(); Definir Funcao MontaResposta(); Definir Funcao BuscaDadosOrdensCompra(); Definir Funcao BuscaItensOrdensCompra(); Definir Funcao AddOrdemCompraToResposta(); Definir Funcao AddItensOrdemCompraToResposta(); aAspaDupla = "\""; IniciaProcessamento(); @------------------------------------------------------------------------------@ @----Função para iniciar a distribuição do processamento das informações-------@ @------------------------------------------------------------------------------@ Funcao IniciaProcessamento();{ nStatusProcesso = 1; aMensagemProcesso ="Processamento realizado com sucesso."; nParam_CodEmp=ListarOrdensCompra.CodEmp; nParam_CodFil=ListarOrdensCompra.CodFil; nParam_NumOcp=ListarOrdensCompra.NumOcp; dParam_DatGer=ListarOrdensCompra.DatGer; nParam_CodFor=ListarOrdensCompra.CodFor; nParam_OffSet=ListarOrdensCompra.OffSet; nParam_Limit =ListarOrdensCompra.Limit; Se(dParam_DatGer=0){ dParam_DatGer=DatSis; } nParam_CodEmp=1; nParam_CodFil=1; /* dParam_DatGer = "31250517469701018467550000000045681019599804"; nParam_CodFor = 3686; nParam_NumOcp = 65809; */ Se((nParam_CodFor=0) e (dParam_DatGer=0) e (nParam_NumOcp=0)){ nStatusProcesso = 0; aMensagemProcesso ="Necessário informar pelo menos um dos parâmetros(NumOcp ou DatGer ou CodFor) para prosseguir."; } Se(nParam_Limit=0){ nParam_Limit = 99999999; } Se(nStatusProcesso=1){ BuscaDadosOrdensCompra(); } MontaResposta(); } @--Função que devolve o resultado do processamento dos dados de entrada--------@ Funcao MontaResposta();{ ListarOrdensCompra.StatusProcesso = nStatusProcesso; ListarOrdensCompra.MensagemProcesso = aMensagemProcesso; } Funcao BuscaDadosOrdensCompra();{ SQL_Criar(xCursorPrin); SQL_UsarAbrangencia(xCursorPrin,0); SQL_UsarSQLSenior2(xCursorPrin,0); SQL_DefinirComando(xCursorPrin, "select \ e420ocp.codemp as e420ocp_codemp,\ e420ocp.codfil as e420ocp_codfil,\ e420ocp.numocp as e420ocp_numocp,\ e420ocp.datemi as e420ocp_datemi,\ e420ocp.datger as e420ocp_datger,\ e420ocp.codusu as e420ocp_codusu,\ e420ocp.codfor as e420ocp_codfor,\ e420ocp.obsocp as e420ocp_obsocp,\ e420ocp.codtra as e420ocp_codtra,\ e420ocp.ciffob as e420ocp_ciffob,\ e095for.nomfor as e095for_nomfor,\ e095for.apefor as e095for_apefor,\ e095for.tipfor as e095for_tipfor,\ e095for.tipmer as e095for_tipmer,\ e095for.codram as e095for_codram,\ e095for.cgccpf as e095for_cgccpf,\ e095for.codgre as e095for_codgre \ from e420ocp \ inner join e095for \ on e095for.codfor = e420ocp.codfor \ where e420ocp.sitapr = 'APR' \ and e420ocp.obrctr = 'N'\ and (e420ocp.codemp = :nParam_Codemp)\ and (e420ocp.codfil = :nParam_Codfil)\ and (e420ocp.datger >= :dParam_DatGer)\ and (e420ocp.numocp = :nParam_NumOcp or :nParam_NumOcp=0)\ and (e420ocp.codfor = :nParam_Codfor or :nParam_Codfor = 0)\ order by e420ocp.codemp,codfil,e420ocp.numocp\ OFFSET :nParam_OffSet ROWS FETCH NEXT :nParam_Limit ROWS ONLY "); SQL_DefinirInteiro(xCursorPrin,"nParam_Codemp",nParam_Codemp); SQL_DefinirInteiro(xCursorPrin,"nParam_Codfil",nParam_Codfil); SQL_DefinirInteiro(xCursorPrin,"nParam_Codfor",nParam_Codfor); SQL_DefinirData (xCursorPrin,"dParam_DatGer",dParam_DatGer); SQL_DefinirInteiro(xCursorPrin,"nParam_NumOcp",nParam_NumOcp); SQL_DefinirInteiro(xCursorPrin,"nParam_OffSet",nParam_OffSet); SQL_DefinirInteiro(xCursorPrin,"nParam_Limit",nParam_Limit); SQL_AbrirCursor (xCursorPrin); Enquanto(SQL_EOF(xCursorPrin)=0){ SQL_RetornarInteiro (xCursorPrin,"E420ocp_Codemp",nSql_E420ocp_Codemp); SQL_RetornarInteiro (xCursorPrin,"E420ocp_Codfil",nSql_E420ocp_Codfil); SQL_RetornarInteiro (xCursorPrin,"E420ocp_Numocp",nSql_E420ocp_Numocp); SQL_RetornarData (xCursorPrin,"E420ocp_Datemi",dSql_E420ocp_Datemi); SQL_RetornarData (xCursorPrin,"E420ocp_Datger",dSql_E420ocp_Datger); SQL_RetornarInteiro (xCursorPrin,"E420ocp_Codusu",nSql_E420ocp_Codusu); SQL_RetornarInteiro (xCursorPrin,"E420ocp_Codfor",nSql_E420ocp_Codfor); SQL_RetornarAlfa (xCursorPrin,"E420ocp_Obsocp",aSql_E420ocp_Obsocp); SQL_RetornarInteiro (xCursorPrin,"E420ocp_Codtra",nSql_E420ocp_Codtra); SQL_RetornarAlfa (xCursorPrin,"E420ocp_Ciffob",aSql_E420ocp_Ciffob); SQL_RetornarAlfa (xCursorPrin,"E095for_Nomfor",aSql_E095for_Nomfor); SQL_RetornarAlfa (xCursorPrin,"E095for_Apefor",aSql_E095for_Apefor); SQL_RetornarAlfa (xCursorPrin,"E095for_Tipfor",aSql_E095for_Tipfor); SQL_RetornarAlfa (xCursorPrin,"E095for_Tipmer",aSql_E095for_Tipmer); SQL_RetornarAlfa (xCursorPrin,"E095for_Codram",aSql_E095for_Codram); SQL_RetornarFlutuante(xCursorPrin,"E095for_Cgccpf",nSql_E095for_Cgccpf); SQL_RetornarInteiro (xCursorPrin,"E095for_Codgre",nSql_E095for_Codgre); AddOrdemCompraToResposta(); BuscaItensOrdensCompra(); SQL_Proximo(xCursorPrin); } SQL_FecharCursor(xCursorPrin); SQL_Destruir(xCursorPrin); } Funcao BuscaItensOrdensCompra();{ SQL_Criar(xCursorItensNf); SQL_UsarAbrangencia(xCursorItensNf,0); SQL_UsarSQLSenior2(xCursorItensNf,0); SQL_DefinirComando(xCursorItensNf,"select \ e420ipo.seqipo as e420ipo_seqipo,\ e420ipo.codpro as e420ipo_codpro,\ e420ipo.codder as e420ipo_codder,\ e420ipo.cplipo as e420ipo_cplipo,\ e420ipo.profor as e420ipo_profor,\ e420ipo.desfor as e420ipo_desfor,\ e420ipo.unifor as e420ipo_unifor,\ e420ipo.qtdped as e420ipo_qtdped,\ e420ipo.qtdrec as e420ipo_qtdrec,\ e420ipo.qtdcan as e420ipo_qtdcan,\ e420ipo.qtdabe as e420ipo_qtdabe,\ e420ipo.unimed as e420ipo_unimed,\ e420ipo.codtpr as e420ipo_codtpr,\ e420ipo.preuni as e420ipo_preuni,\ e420ipo.vlrbru as e420ipo_vlrbru \ from e420ipo \ WHERE (e420ipo.codemp = :nSql_E420ocp_Codemp)\ and (e420ipo.codfil = :nSql_E420ocp_Codfil)\ and (e420ipo.numocp = :nSql_E420ocp_Numocp)\ order by e420ipo.seqipo "); SQL_DefinirInteiro(xCursorItensNf,"nSql_E420ocp_Codemp",nSql_E420ocp_Codemp); SQL_DefinirInteiro(xCursorItensNf,"nSql_E420ocp_Codfil",nSql_E420ocp_Codfil); SQL_DefinirInteiro(xCursorItensNf,"nSql_E420ocp_Numocp",nSql_E420ocp_Numocp); SQL_AbrirCursor (xCursorItensNf); Enquanto(SQL_EOF(xCursorItensNf)=0){ SQL_RetornarInteiro (xCursorItensNf,"E420ipo_Seqipo",nSql_E420ipo_Seqipo); SQL_RetornarAlfa (xCursorItensNf,"E420ipo_Codpro",aSql_E420ipo_Codpro); SQL_RetornarAlfa (xCursorItensNf,"E420ipo_Codder",aSql_E420ipo_Codder); SQL_RetornarAlfa (xCursorItensNf,"E420ipo_Cplipo",aSql_E420ipo_Cplipo); SQL_RetornarAlfa (xCursorItensNf,"E420ipo_Profor",aSql_E420ipo_Profor); SQL_RetornarAlfa (xCursorItensNf,"E420ipo_Desfor",aSql_E420ipo_Desfor); SQL_RetornarAlfa (xCursorItensNf,"E420ipo_Unifor",aSql_E420ipo_Unifor); SQL_RetornarFlutuante(xCursorItensNf,"E420ipo_Qtdped",nSql_E420ipo_Qtdped); SQL_RetornarFlutuante(xCursorItensNf,"E420ipo_Qtdrec",nSql_E420ipo_Qtdrec); SQL_RetornarFlutuante(xCursorItensNf,"E420ipo_Qtdcan",nSql_E420ipo_Qtdcan); SQL_RetornarFlutuante(xCursorItensNf,"E420ipo_Qtdabe",nSql_E420ipo_Qtdabe); SQL_RetornarAlfa (xCursorItensNf,"E420ipo_Unimed",aSql_E420ipo_Unimed); SQL_RetornarAlfa (xCursorItensNf,"E420ipo_Codtpr",aSql_E420ipo_Codtpr); SQL_RetornarFlutuante(xCursorItensNf,"E420ipo_Preuni",nSql_E420ipo_Preuni); SQL_RetornarFlutuante(xCursorItensNf,"E420ipo_Vlrbru",nSql_E420ipo_Vlrbru); AddItensOrdemCompraToResposta(); SQL_Proximo(xCursorItensNf); } SQL_FecharCursor(xCursorItensNf); SQL_Destruir(xCursorItensNf); } Funcao AddOrdemCompraToResposta();{ ListarOrdensCompra.OrdensCompra.CriarLinha(); ListarOrdensCompra.OrdensCompra.CodEmp = nSql_E420ocp_Codemp; ListarOrdensCompra.OrdensCompra.CodFil = nSql_E420ocp_Codfil; ListarOrdensCompra.OrdensCompra.NumOcp = nSql_E420ocp_Numocp; ListarOrdensCompra.OrdensCompra.CodFor = nSql_E420ocp_Codfor; ListarOrdensCompra.OrdensCompra.NomFor = aSql_E095for_Nomfor; ListarOrdensCompra.OrdensCompra.CgcCpf = nSql_E095for_Cgccpf; ListarOrdensCompra.OrdensCompra.DatEmi = dSql_E420ocp_Datemi; ListarOrdensCompra.OrdensCompra.ObsOcp = aSql_E420ocp_Obsocp; ListarOrdensCompra.OrdensCompra.DatGer = dSql_E420ocp_Datger; ListarOrdensCompra.OrdensCompra.CodGre = nSql_E095for_Codgre; } Funcao AddItensOrdemCompraToResposta();{ ListarOrdensCompra.OrdensCompra.Itens.CriarLinha(); ListarOrdensCompra.OrdensCompra.Itens.SeqIpo = nSql_E420ipo_Seqipo; ListarOrdensCompra.OrdensCompra.Itens.CodPro = aSql_E420ipo_Codpro; ListarOrdensCompra.OrdensCompra.Itens.CodDer = aSql_E420ipo_Codder; ListarOrdensCompra.OrdensCompra.Itens.CplIpo = aSql_E420ipo_Cplipo; ListarOrdensCompra.OrdensCompra.Itens.Qtdped = nSql_E420ipo_Qtdped; ListarOrdensCompra.OrdensCompra.Itens.Qtdrec = nSql_E420ipo_QtdRec; ListarOrdensCompra.OrdensCompra.Itens.QtdCan = nSql_E420ipo_QtdCan; ListarOrdensCompra.OrdensCompra.Itens.QtdAbe = nSql_E420ipo_Qtdabe; ListarOrdensCompra.OrdensCompra.Itens.Unimed = aSql_E420ipo_Unimed; ListarOrdensCompra.OrdensCompra.Itens.Preuni = nSql_E420ipo_Preuni; ListarOrdensCompra.OrdensCompra.Itens.Unifor = aSql_E420ipo_Unifor; }