Definir Numero nStatusProcesso; Definir alfa aMensagemProcesso; Definir Alfa xCursorPrin; Definir Alfa aAspaDupla; Definir Numero nParam_CodEmp; Definir Alfa aParam_CodPro; Definir Alfa aParam_CodDer; Definir Alfa aParam_CodDep; Definir Data dParam_DatAlt; Definir Data dParam_DatIni; Definir Alfa aParam_ChvNel; Definir Numero nSql_E210mvp_Codemp; Definir Alfa aSql_E210mvp_Codpro; Definir Alfa aSql_E210mvp_Codder; Definir Alfa aSql_E210mvp_Coddep; Definir Data dSql_E210mvp_Datmov; Definir Numero nSql_E210mvp_Seqmov; Definir Alfa aSql_E210mvp_Codtns; Definir Alfa aSql_E210mvp_Estmov; Definir Alfa aSql_E210mvp_Esteos; Definir Alfa aSql_E210mvp_Estvmv; Definir Alfa aSql_E210mvp_Oriorp; Definir Numero nSql_E210mvp_Numdoc; Definir Alfa aSql_E210mvp_Numdoc; Definir Alfa aSql_E210mvp_Codlot; Definir Alfa aSql_E210mvp_Numsep; Definir Alfa aSql_E210mvp_Obsmvp; Definir Numero nSql_E210mvp_Qtdmov; Definir Numero nSql_E210mvp_Vlrmov; Definir Numero nSql_E210mvp_Filnfc; Definir Numero nSql_E210mvp_Codfor; Definir Numero nSql_E210mvp_Numnfc; Definir Alfa aSql_E210mvp_Snfnfc; Definir Numero nSql_E210mvp_Seqipc; Definir Alfa aSql_E440nfc_Chvnel; Definir Alfa aSql_SaldoIni_CodFam; Definir Alfa aSql_SaldoIni_CodOri; Definir Alfa aSql_SaldoIni_OriFam; Definir Funcao IniciaProcessamento(); Definir Funcao MontaResposta(); Definir Funcao BuscaDados(); Definir Funcao AddMovimentoToResposta(); Definir Funcao BuscaDadosSaldoInicial(); Definir Funcao MontaChaveMovimentoEstoque(); 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=ListarMovimentosAlmoxarifado.CodEmp; aParam_CodPro=ListarMovimentosAlmoxarifado.CodPro; aParam_CodDer=ListarMovimentosAlmoxarifado.CodDer; dParam_DatAlt=ListarMovimentosAlmoxarifado.DatAlt; aParam_CodDep=ListarMovimentosAlmoxarifado.CodDep; aParam_ChvNel=ListarMovimentosAlmoxarifado.ChvNel; nParam_OffSet=ListarMovimentosAlmoxarifado.OffSet; nParam_Limit =ListarMovimentosAlmoxarifado.Limit; Se(nParam_CodEmp=0){ nParam_CodEmp = 1; } Se(nParam_Limit=0){ nParam_Limit = 99999999; } Se(dParam_DatAlt=0){ dParam_DatAlt = DatSis; } MontaData(01,01,2026,dParam_DatIni); @MontaData(19,06,2026,dParam_DatAlt);@ LimpaEspacos(aParam_CodPro); LimpaEspacos(aParam_CodDer); LimpaEspacos(aParam_CodDep); Se((aParam_CodPro<>"") ou (aParam_CodDer<>"")){ nParam_OffSet = 0; } Se(nStatusProcesso=1){ Se(aParam_CodDep="SaldoIncial"){ BuscaDadosSaldoInicial(); }senao { BuscaDados(); } } MontaResposta(); } @--Função que devolve o resultado do processamento dos dados de entrada--------@ Funcao MontaResposta();{ ListarMovimentosAlmoxarifado.StatusProcesso = nStatusProcesso; ListarMovimentosAlmoxarifado.MensagemProcesso = aMensagemProcesso; } Funcao BuscaDados();{ SQL_Criar(xCursorPrin); SQL_UsarAbrangencia(xCursorPrin,0); SQL_UsarSQLSenior2(xCursorPrin,0); SQL_DefinirComando(xCursorPrin,"select\ e210mvp.codemp as e210mvp_codemp,\ e210mvp.codpro as e210mvp_codpro,\ e210mvp.codder as e210mvp_codder,\ e210mvp.coddep as e210mvp_coddep,\ e210mvp.datmov as e210mvp_datmov,\ e210mvp.seqmov as e210mvp_seqmov,\ e210mvp.fildep as e210mvp_fildep,\ e210mvp.codtns as e210mvp_codtns,\ e210mvp.estmov as e210mvp_estmov,\ e210mvp.esteos as e210mvp_esteos,\ e210mvp.estvmv as e210mvp_estvmv,\ e210mvp.oriorp as e210mvp_oriorp,\ e210mvp.numdoc as e210mvp_numdoc,\ e210mvp.codlot as e210mvp_codlot,\ e210mvp.numsep as e210mvp_numsep,\ e210mvp.obsmvp as e210mvp_obsmvp,\ e210mvp.qtdmov as e210mvp_qtdmov,\ e210mvp.vlrmov as e210mvp_vlrmov, \ e210mvp.filnfc as e210mvp_filnfc,\ e210mvp.codfor as e210mvp_codfor,\ e210mvp.numnfc as e210mvp_numnfc,\ e210mvp.snfnfc as e210mvp_snfnfc,\ e210mvp.seqipc as e210mvp_seqipc, \ e440nfc.chvnel as e440nfc_chvnel \ from e210mvp \ inner join e210est \ on e210est.codemp = e210mvp.codemp \ and e210est.coddep = e210mvp.coddep \ and e210est.codpro = e210mvp.codpro \ and e210est.codder = e210mvp.codder \ inner join e075der \ on e075der.codder = e210est.codder \ and e075der.codemp = e210est.codemp \ and e075der.codpro = e210est.codpro \ inner join e075pro \ on e075pro.codemp = e075der.codemp \ and e075pro.codpro = e075der.codpro \ and e075pro.clapro = 1 \ inner join e205dep \ on e205dep.codemp = e210mvp.codemp \ and e205dep.coddep = e210mvp.coddep \ and e205dep.usu_tipestapp = 2 \ inner join e001tns \ on e001tns.codemp = e210mvp.codemp \ and e001tns.codtns = e210mvp.codtns \ left join e440nfc \ on e440nfc.codemp = e210mvp.codemp \ and e440nfc.codfil = e210mvp.filnfc \ and e440nfc.codfor = e210mvp.codfor \ and e440nfc.numnfc = e210mvp.numnfc \ and e440nfc.codsnf = e210mvp.snfnfc \ where e210mvp.datmov >= :dParam_DatIni \ and e210mvp.datdig >= :dParam_DatAlt \ and e210mvp.esteos = 'E'\ and e210mvp.estmov = 'NO' \ and e210mvp.numdoc <> 0 \ and e210mvp.qtdmov <> 0 \ and (e210mvp.codemp= :nParam_CodEmp ) \ and (e210mvp.codpro= :aParam_CodPro or :aParam_CodPro = ' ' ) \ and (e210mvp.codder= :aParam_CodDer or :aParam_CodDer = ' ' ) \ and (e210mvp.coddep= :aParam_CodDep or :aParam_CodDep = ' ' ) \ and (e440nfc.chvnel= :aParam_ChvNel or :aParam_ChvNel = ' ' ) \ ORDER BY \ e210mvp.codemp, \ e210mvp.codpro,\ e210mvp.codder,\ e210mvp.coddep,\ e210mvp.datmov \ OFFSET :nParam_OffSet ROWS FETCH NEXT :nParam_Limit ROWS ONLY "); SQL_DefinirInteiro(xCursorPrin,"nParam_CodEmp",nParam_CodEmp); SQL_DefinirAlfa (xCursorPrin,"aParam_CodPro",aParam_CodPro); SQL_DefinirAlfa (xCursorPrin,"aParam_CodDer",aParam_CodDer); SQL_DefinirAlfa (xCursorPrin,"aParam_CodDep",aParam_CodDep); SQL_DefinirData (xCursorPrin,"dParam_DatIni",dParam_DatIni); SQL_DefinirData (xCursorPrin,"dParam_DatAlt",dParam_DatAlt); SQL_DefinirAlfa (xCursorPrin,"aParam_ChvNel",aParam_ChvNel); SQL_DefinirInteiro(xCursorPrin,"nParam_OffSet",nParam_OffSet); SQL_DefinirInteiro(xCursorPrin,"nParam_Limit" ,nParam_Limit); SQL_AbrirCursor (xCursorPrin); nContador=0; Enquanto(SQL_EOF(xCursorPrin)=0){ nContador++; SQL_RetornarInteiro (xCursorPrin,"E210mvp_Codemp",nSql_E210mvp_Codemp); SQL_RetornarAlfa (xCursorPrin,"E210mvp_Codpro",aSql_E210mvp_Codpro); SQL_RetornarAlfa (xCursorPrin,"E210mvp_Codder",aSql_E210mvp_Codder); SQL_RetornarAlfa (xCursorPrin,"E210mvp_Coddep",aSql_E210mvp_Coddep); SQL_RetornarData (xCursorPrin,"E210mvp_Datmov",dSql_E210mvp_Datmov); SQL_RetornarInteiro (xCursorPrin,"E210mvp_Seqmov",nSql_E210mvp_Seqmov); SQL_RetornarInteiro (xCursorPrin,"E210mvp_Fildep",nSql_E210mvp_Fildep); SQL_RetornarAlfa (xCursorPrin,"E210mvp_Codtns",aSql_E210mvp_Codtns); SQL_RetornarAlfa (xCursorPrin,"E210mvp_Estmov",aSql_E210mvp_Estmov); SQL_RetornarAlfa (xCursorPrin,"E210mvp_Esteos",aSql_E210mvp_Esteos); SQL_RetornarAlfa (xCursorPrin,"E210mvp_Estvmv",aSql_E210mvp_Estvmv); SQL_RetornarAlfa (xCursorPrin,"E210mvp_Oriorp",aSql_E210mvp_Oriorp); SQL_RetornarInteiro (xCursorPrin,"E210mvp_Numdoc",nSql_E210mvp_Numdoc); SQL_RetornarAlfa (xCursorPrin,"E210mvp_Numdoc",aSql_E210mvp_Numdoc); SQL_RetornarAlfa (xCursorPrin,"E210mvp_Codlot",aSql_E210mvp_Codlot); SQL_RetornarAlfa (xCursorPrin,"E210mvp_Numsep",aSql_E210mvp_Numsep); SQL_RetornarAlfa (xCursorPrin,"E210mvp_Obsmvp",aSql_E210mvp_Obsmvp); SQL_RetornarFlutuante(xCursorPrin,"E210mvp_Qtdmov",nSql_E210mvp_Qtdmov); SQL_RetornarFlutuante(xCursorPrin,"E210mvp_Vlrmov",nSql_E210mvp_Vlrmov); SQL_RetornarInteiro (xCursorPrin,"E210mvp_Filnfc",nSql_E210mvp_Filnfc); SQL_RetornarInteiro (xCursorPrin,"E210mvp_Codfor",nSql_E210mvp_Codfor); SQL_RetornarInteiro (xCursorPrin,"E210mvp_Numnfc",nSql_E210mvp_Numnfc); SQL_RetornarAlfa (xCursorPrin,"E210mvp_Snfnfc",aSql_E210mvp_Snfnfc); SQL_RetornarInteiro (xCursorPrin,"E210mvp_Seqipc",nSql_E210mvp_Seqipc); SQL_RetornarAlfa (xCursorPrin,"E440nfc_Chvnel",aSql_E440nfc_Chvnel); LimpaEspacos(aSql_E440nfc_Chvnel); Se(aSql_E440nfc_Chvnel=""){ MontaChaveMovimentoEstoque(); nSql_E210mvp_Filnfc = nSql_E210mvp_Fildep; nSql_E210mvp_Numnfc = nSql_E210mvp_Numdoc; aSql_E210mvp_Snfnfc = "002"; nSql_E210mvp_Codfor = 1; } AddMovimentoToResposta(); SQL_Proximo(xCursorPrin); } SQL_FecharCursor(xCursorPrin); SQL_Destruir(xCursorPrin); } Funcao MontaChaveMovimentoEstoque();{ @42260386403128000111550020007583511445024260@ Definir Alfa aChvNel_UF; @02-pos Estado do emitente@ Definir Alfa aChvNel_AnoMes; @04-pos Ano e mês de emissão@ Definir Alfa aChvNel_Cnpj; @14-pos CNPJ do emitente @ Definir Alfa aChvNel_Modelo; @02-pos Modelo da NF @ Definir Alfa aChvNel_Serie; @03-pos Série@ Definir Alfa aChvNel_NroNf; @09-pos Número da NF@ Definir Alfa aChvNel_TipoEmi;@01-pos Tipo de emissão@ Definir Alfa aChvNel_CodAle; @08-pos Código numérico@ Definir Alfa aChvNel_DV; @01-pos Dígito verificador@ Definir Alfa aDia; Definir Alfa aMes; Definir Alfa aAno; DesMontaData(dSql_E210mvp_Datmov,nDia, nMes, nAno); ConverteMascara(1,nMes, aMes, "99"); IntParaAlfa(nAno,aAno); CopiarAlfa(aAno,3,2); aChvNel_UF = "42"; @SC@ aChvNel_AnoMes= aAno + aMes; aChvNel_Cnpj ="86403128000111"; aChvNel_Modelo ="55"; aChvNel_Serie ="002"; ConverteMascara(1,nSql_E210mvp_Numdoc, aChvNel_NroNf, "999999999"); aChvNel_TipoEmi="1"; aChvNel_CodAle = aSql_E210mvp_Oriorp + aSql_E210mvp_Numdoc; DeixaNumeros(aChvNel_CodAle); AlfaParaInt(aChvNel_CodAle,nCodAle); ConverteMascara(5, nCodAle, aChvNel_CodAle, "99999999"); aChvNel_DV = "9"; aSql_E440nfc_Chvnel = aChvNel_UF + aChvNel_AnoMes + aChvNel_Cnpj + aChvNel_Modelo + aChvNel_Serie + aChvNel_NroNf + aChvNel_TipoEmi + aChvNel_CodAle + aChvNel_DV; } Funcao BuscaDadosSaldoInicial();{ SQL_Criar(xCursorPrin); SQL_UsarAbrangencia(xCursorPrin,0); SQL_UsarSQLSenior2(xCursorPrin,0); SQL_DefinirComando(xCursorPrin,"SELECT \ E210EST.CODEMP,\ E210EST.CODPRO,\ E210EST.CODDER,\ E075PRO.DESPRO,\ E075DER.DESDER,\ E075PRO.TIPPRO,\ E075PRO.CODFAM,\ E012FAM.DESFAM,\ E075PRO.CODORI,\ E083ORI.DESORI,\ SUM(E210EST.QTDEST) QTD_EM_ESTOQUE\ FROM E210EST\ INNER JOIN E075DER \ ON E075DER.CODEMP = E210EST.CODEMP\ AND E075DER.CODPRO = E210EST.CODPRO\ AND E075DER.CODDER = E210EST.CODDER\ INNER JOIN E075PRO \ ON E075PRO.CODEMP = E075DER.CODEMP\ AND E075PRO.CODPRO = E075DER.CODPRO\ and e075pro.clapro = 1 \ INNER JOIN E012FAM \ ON E012FAM.CODEMP = E075PRO.CODEMP\ AND E012FAM.CODFAM = E075PRO.CODFAM\ INNER JOIN E083ORI \ ON E083ORI.CODEMP = E075PRO.CODEMP\ AND E083ORI.CODORI = E075PRO.CODORI\ INNER JOIN E205DEP \ ON E205DEP.CODEMP = E075DER.CODEMP\ AND E205DEP.CODDEP = E210EST.CODDEP\ AND E205DEP.USU_TIPESTAPP =2 \ WHERE E075DER.CODEMP = 1 \ AND ((E075PRO.TIPPRO = 'C') OR (E075PRO.TIPPRO='P' AND e075pro.IndFrt='S' )) \ AND E210EST.QTDEST > 0 \ AND UPPER(DESPRO) NOT LIKE '%INATIVO%'\ AND E075PRO.CODORI != '95' \ AND E075PRO.CODFAM NOT IN('5716','5717','6701')\ AND E075PRO.SITPRO = 'A'\ AND E075DER.SITDER = 'A'\ AND E210EST.SITEST = 'A'\ and (E075PRO.codfam= :aParam_CodPro or :aParam_CodPro = ' ' ) \ GROUP BY \ E210EST.CODEMP,\ E210EST.CODPRO,\ E210EST.CODDER,\ E075PRO.DESPRO,\ E075DER.DESDER,\ E075PRO.TIPPRO,\ E075PRO.CODFAM,\ E012FAM.DESFAM,\ E075PRO.CODORI,\ E083ORI.DESORI\ ORDER BY \ E075PRO.CODORI,E075PRO.CODFAM,E075PRO.DESPRO,\ E210EST.CODEMP, \ E210EST.CODPRO,\ E210EST.CODDER"); SQL_DefinirAlfa (xCursorPrin,"aParam_CodPro",aParam_CodPro); SQL_AbrirCursor (xCursorPrin); nContador=0; Enquanto(SQL_EOF(xCursorPrin)=0){ nContador++; Se((nContador>10) e (aParam_CodPro="XXXXX")){ Pare; } SQL_RetornarInteiro (xCursorPrin,"CODEMP",nSql_E210mvp_Codemp); SQL_RetornarAlfa (xCursorPrin,"CODPRO",aSql_E210mvp_Codpro); SQL_RetornarAlfa (xCursorPrin,"CODDER",aSql_E210mvp_Codder); SQL_RetornarAlfa (xCursorPrin,"CODFAM",aSql_SaldoIni_CodFam); SQL_RetornarAlfa (xCursorPrin,"CODORI",aSql_SaldoIni_CodOri); SQL_RetornarFlutuante(xCursorPrin,"QTD_EM_ESTOQUE",nSql_E210mvp_Qtdmov); aSql_SaldoIni_OriFam = aSql_SaldoIni_CodOri + aSql_SaldoIni_CodFam; aSql_E210mvp_Coddep = "001"; dSql_E210mvp_Datmov = DatSis; nSql_E210mvp_Seqmov = nContador; nSql_E210mvp_Fildep = 1; aSql_E210mvp_Esteos = "E"; aSql_E440nfc_Chvnel = "99999999999999999999999999999999999999" + aSql_SaldoIni_OriFam; nSql_E210mvp_Vlrmov =0; nSql_E210mvp_Numdoc = 999999999; AlfaParaInt(aSql_SaldoIni_OriFam,nSql_E210mvp_Numdoc); nSql_E210mvp_Filnfc = 1; nSql_E210mvp_Codfor = 1 ; AlfaParaInt(aSql_SaldoIni_OriFam,nSql_E210mvp_Numnfc); nSql_E210mvp_Seqipc = nContador; aSql_E210mvp_Snfnfc = "01"; AddMovimentoToResposta(); SQL_Proximo(xCursorPrin); } SQL_FecharCursor(xCursorPrin); SQL_Destruir(xCursorPrin); } Funcao AddMovimentoToResposta();{ ListarMovimentosAlmoxarifado.movimentos.CriarLinha(); ListarMovimentosAlmoxarifado.movimentos.SeqReg = nContador; ListarMovimentosAlmoxarifado.movimentos.Codemp = nSql_E210mvp_Codemp; ListarMovimentosAlmoxarifado.movimentos.Codpro = aSql_E210mvp_Codpro; ListarMovimentosAlmoxarifado.movimentos.Codder = aSql_E210mvp_Codder; ListarMovimentosAlmoxarifado.movimentos.codDep = aSql_E210mvp_Coddep; ListarMovimentosAlmoxarifado.movimentos.datMov = dSql_E210mvp_Datmov; ListarMovimentosAlmoxarifado.movimentos.seqMov = nSql_E210mvp_Seqmov; ListarMovimentosAlmoxarifado.movimentos.filDep = nSql_E210mvp_Fildep; ListarMovimentosAlmoxarifado.movimentos.qtdMov = nSql_E210mvp_Qtdmov; ListarMovimentosAlmoxarifado.movimentos.Filnfc = nSql_E210mvp_Filnfc; ListarMovimentosAlmoxarifado.movimentos.Codfor = nSql_E210mvp_Codfor; ListarMovimentosAlmoxarifado.movimentos.Numnfc = nSql_E210mvp_Numnfc; ListarMovimentosAlmoxarifado.movimentos.Snfnfc = aSql_E210mvp_Snfnfc; ListarMovimentosAlmoxarifado.movimentos.Chvnel = aSql_E440nfc_Chvnel; }