Last active
December 5, 2018 11:07
-
-
Save schefferdev/0c4d1cdfdd3983ce1d8fe0cb3a0c0580 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| definir interno.com.senior.g5.co.mcm.est.requisicoes.RequisicaoAgrupada wsRequisicao; | |
| definir interno.com.senior.g5.co.mcm.est.geracaosolicitacaocompra.GerarSolicitacaoCompra wsSolicitacao; | |
| @ Saida padrão @ | |
| GatecOSAutomotiva.TipoRetorno = 2; | |
| GatecOSAutomotiva.MensagemRetorno = "Ops. Ocorreu um erro inexperado. Favor verificar com o TI!"; | |
| @ Funções @ | |
| definir funcao fn_parametros_integracao(numero nEmpInt); | |
| definir numero vParametroIntegracao; | |
| definir funcao fn_numero_requisicao(numero nEmpInt); | |
| definir funcao fn_numero_solicitacao(numero nEmpInt); | |
| definir funcao fn_dados_requisicao(); | |
| definir numero vValidaProduto; | |
| definir funcao fn_valida_requisicao(); | |
| definir numero vValidaRequisicao; | |
| definir funcao fn_requisicao_ok(); | |
| definir funcao fn_solicitacao_ok(); | |
| definir funcao fn_requisicao_erro(); | |
| definir funcao fn_solicitacao_erro(); | |
| @ Parametros de entrada @ | |
| definir alfa eToken; | |
| eToken = GatecOSAutomotiva.Token; | |
| @ Lista de processamento @ | |
| definir lista lRequisicao; | |
| definir lista lSolicitacao; | |
| lRequisicao.DefinirCampos(); | |
| lRequisicao.AdicionarCampo("codemp", numero); | |
| lRequisicao.AdicionarCampo("numeme", numero); | |
| lRequisicao.AdicionarCampo("seqeme", numero); | |
| lRequisicao.AdicionarCampo("id_chave", numero); | |
| lRequisicao.AdicionarCampo("numosg", alfa); | |
| lRequisicao.AdicionarCampo("codsaf", alfa); | |
| lRequisicao.EfetivarCampos(); | |
| lSolicitacao.DefinirCampos(); | |
| lSolicitacao.AdicionarCampo("codemp", numero); | |
| lSolicitacao.AdicionarCampo("numsol", numero); | |
| lSolicitacao.AdicionarCampo("seqsol", numero); | |
| lSolicitacao.AdicionarCampo("id_chave", numero); | |
| lSolicitacao.AdicionarCampo("numosg", alfa); | |
| lSolicitacao.AdicionarCampo("codsaf", alfa); | |
| lSolicitacao.EfetivarCampos(); | |
| @ Parametros de Integração @ | |
| definir alfa sParTnsIntReq; @ Transação de Integração para Requisição @ | |
| definir alfa sParTnsDevReq; @ Transação de Integração para Devolução de Requisição @ | |
| definir alfa sParTnsIntSol; @ Transação de Integração para Solicitação @ | |
| @ Processamento @ | |
| definir cursor cur_dados; | |
| definir numero nQtdReg; | |
| definir numero nQtdPro; | |
| definir numero nQtdSer; | |
| cur_dados.SQL " \ | |
| SELECT CODEMP, \ | |
| FILEME, \ | |
| SEQEME, \ | |
| CPLPRO, \ | |
| CODFAM, \ | |
| NUMEME, \ | |
| PROSER, \ | |
| CODPRO, \ | |
| CODDEP, \ | |
| QTDEME, \ | |
| DATEME, \ | |
| CCURES, \ | |
| ORIEME, \ | |
| CONREC, \ | |
| INTPAT, \ | |
| HOREME, \ | |
| CODEQP, \ | |
| DEPCMP, \ | |
| SITAPR \ | |
| FROM E207EME \ | |
| WHERE CODEMP = 0 \ | |
| UNION ALL \ | |
| SELECT TO_NUMBER(EMP.COD_EMPR_ERP_SEMFILIAL) AS CODEMP, \ | |
| TO_NUMBER(EMP.COD_EMPR_ERP_FILIAL) AS CODFIL, \ | |
| REQ.ID_CHAVE AS NUMSEQ, \ | |
| REQ.CHAVE_MD5 AS CODCHA, \ | |
| TO_CHAR(REQ.SAF_ANO_SAFRA) AS CODSAF, \ | |
| TO_NUMBER(SUBSTR(REQ.COD_OS, 4)) AS NUMOSG, \ | |
| DECODE(SUBSTR(REQ.COD_MATER, 1, 1), 'S', 'S', 'P') AS PROSER, \ | |
| REQ.COD_MATER AS CODPRO, \ | |
| REQ.COD_DEPOS AS CODDEP, \ | |
| REQ.QTD_SOLIC AS QTDMOV, \ | |
| TRUNC(REQ.MOV_DATA) AS DATMOV, \ | |
| REQ.COD_CENTRO_CUSTO AS CODCCU, \ | |
| REQ.OS_COMPRAR AS EFECPR, \ | |
| REQ.REQ_TIPO AS TIPREQ, \ | |
| REQ.REQ_CANCELADA AS SITCAN, \ | |
| TO_NUMBER(OSG.COD_EQUIP_OS) COD_EQUIPAMENTO, \ | |
| OSG.DSC_EQP_CC, \ | |
| REQ.REQ_USUARIO, \ | |
| REQ.ESTOQUE AS RESERVA_ESTOQUE \ | |
| FROM DB_INTEGRACAO.GATEC_OS_ITENS_REQUISITADOS REQ, \ | |
| DB_INTEGRACAO.GATEC_DEPARA_EMPRESA EMP, \ | |
| DB_INTEGRACAO.GATEC_OS OSG \ | |
| WHERE EMP.COD_EMPR_GA = REQ.COD_EMPR \ | |
| AND OSG.COD_EMPR = REQ.COD_EMPR(+) \ | |
| AND OSG.SAF_ANO_SAFRA = REQ.SAF_ANO_SAFRA(+) \ | |
| AND OSG.NUM_OS = REQ.COD_OS(+) \ | |
| AND SUBSTR(REQ.COD_OS, 1, 3) = 'AUT' \ | |
| AND REQ.REQUIS_GERADA = 'N' \ | |
| AND REQ.CHAVE_MD5 = :eToken \ | |
| ORDER BY 1, 2, 6, 3 "; | |
| cur_dados.AbrirCursor(); | |
| @ Variaveis do cursor @ | |
| definir numero vCodEmp; | |
| definir numero vCodFil; | |
| definir numero vNumSeq; | |
| definir alfa vCodCha; | |
| definir alfa vCodSaf; | |
| definir numero vNumOsg; | |
| definir alfa vProSer; | |
| definir alfa vCodPro; | |
| definir alfa vCodDep; | |
| definir numero vQtdMov; | |
| definir data vDatMov; | |
| definir alfa vCodCcu; | |
| definir alfa vEfeCpr; | |
| definir alfa vTipReq; | |
| definir alfa vSitCan; | |
| definir alfa vCodTns; | |
| definir numero vNumEme; | |
| definir numero vSeqEme; | |
| definir numero vNumSol; | |
| definir numero vSeqSol; | |
| definir alfa vDesPro; | |
| definir alfa vUniMed; | |
| definir alfa vObsEme; | |
| definir numero vCodEqp; | |
| definir alfa vDesEqp; | |
| definir alfa vReqUsu; | |
| definir alfa vResEst; | |
| definir alfa sNumOsg; | |
| enquanto(cur_dados.Achou) { | |
| nQtdReg++; | |
| vCodEmp = cur_dados.CODEMP; | |
| vCodFil = cur_dados.FILEME; | |
| vNumSeq = cur_dados.SEQEME; | |
| vCodCha = cur_dados.CPLPRO; | |
| vCodSaf = cur_dados.CODFAM; | |
| vNumOsg = cur_dados.NUMEME; | |
| vProSer = cur_dados.PROSER; | |
| vCodPro = cur_dados.CODPRO; | |
| vCodDep = cur_dados.CODDEP; | |
| vQtdMov = cur_dados.QTDEME; | |
| vDatMov = cur_dados.DATEME; | |
| vCodCcu = cur_dados.CCURES; | |
| vEfeCpr = cur_dados.ORIEME; | |
| vTipReq = cur_dados.CONREC; | |
| vSitCan = cur_dados.INTPAT; | |
| vCodEqp = cur_dados.HOREME; | |
| vDesEqp = cur_dados.CODEQP; | |
| vReqUsu = cur_dados.DEPCMP; | |
| vResEst = cur_dados.SITAPR; | |
| IntParaAlfa(vNumOsg, sNumOsg); | |
| sNumOsg = "AUT" + sNumOsg; | |
| @ Carrega parametros @ | |
| fn_parametros_integracao(vCodEmp); | |
| se (vParametroIntegracao > 0) { | |
| GatecOSAutomotiva.TipoRetorno = 2; | |
| GatecOSAutomotiva.MensagemRetorno = "Falha ao carregar os parâmetros da integração!"; | |
| Cancel; | |
| } | |
| @ Carrega valores extras @ | |
| fn_dados_requisicao(); | |
| se (vValidaProduto > 0) { | |
| Cancel; | |
| } | |
| se (vProSer = "P") { | |
| nQtdPro++; | |
| @ Valida Requisição @ | |
| fn_valida_requisicao(); | |
| se (vValidaRequisicao > 0) { | |
| cur_dados.Proximo(); | |
| Continue; | |
| } | |
| se (vTipReq = "R") { | |
| vCodTns = sParTnsIntReq; | |
| } senao { | |
| vCodTns = sParTnsDevReq; | |
| } | |
| @ Carrega numerações @ | |
| se (vNumEme = 0) { | |
| fn_numero_requisicao(vCodEmp); | |
| } senao { | |
| vSeqEme++; | |
| } | |
| @ Preenche WS @ | |
| wsRequisicao.tipoProcessamento = 1; | |
| wsRequisicao.requisicao.CriarLinha(); | |
| wsRequisicao.requisicao.CodEmp = vCodEmp; | |
| wsRequisicao.requisicao.CodFil = vCodFil; | |
| wsRequisicao.requisicao.CodTns = vCodTns; | |
| wsRequisicao.requisicao.NumEme = vNumEme; | |
| wsRequisicao.requisicao.SeqEme = vSeqEme; | |
| wsRequisicao.requisicao.ProSer = vProSer; | |
| wsRequisicao.requisicao.CodPro = vCodPro; | |
| wsRequisicao.requisicao.CplPro = vDesPro; | |
| wsRequisicao.requisicao.UniMed = vUniMed; | |
| wsRequisicao.requisicao.QtdEme = vQtdMov; | |
| se (vResEst = "S") { | |
| wsRequisicao.requisicao.CodDep = vCodDep; | |
| wsRequisicao.requisicao.ResEst = vResEst; | |
| } | |
| wsRequisicao.requisicao.DatEme = vDatMov; | |
| wsRequisicao.requisicao.DatPrv = DatSis; | |
| wsRequisicao.requisicao.DatApr = DatSis; | |
| wsRequisicao.requisicao.QtdApr = vQtdMov; | |
| wsRequisicao.requisicao.CcuRes = vCodCcu; | |
| wsRequisicao.requisicao.ObsEme = vObsEme; | |
| wsRequisicao.requisicao.UsuRes = CodUsu; | |
| @ Adiciona linha @ | |
| GatecOSAutomotiva.Retorno.CriarLinha(); | |
| GatecOSAutomotiva.Retorno.CodEmp = vCodEmp; | |
| GatecOSAutomotiva.Retorno.NumEme = vNumEme; | |
| GatecOSAutomotiva.Retorno.SeqEme = vSeqEme; | |
| lRequisicao.Adicionar(); | |
| lRequisicao.codemp = vCodEmp; | |
| lRequisicao.numeme = vNumEme; | |
| lRequisicao.seqeme = vSeqEme; | |
| lRequisicao.id_chave = vNumSeq; | |
| lSolicitacao.numosg = sNumOsg; | |
| lSolicitacao.codsaf = vCodSaf; | |
| lRequisicao.Gravar(); | |
| } senao { | |
| nQtdSer++; | |
| se (vTipReq = "R") { | |
| vCodTns = sParTnsIntSol; | |
| } senao { | |
| GatecOSAutomotiva.TipoRetorno = 2; | |
| GatecOSAutomotiva.MensagemRetorno = "Não é permitido efetuar devolução de serviço!"; | |
| Cancel; | |
| } | |
| @ Carrega numerações @ | |
| se (vNumSol = 0) { | |
| fn_numero_solicitacao(vCodEmp); | |
| } senao { | |
| vSeqSol++; | |
| } | |
| wsSolicitacao.CodEmp = vCodEmp; | |
| wsSolicitacao.CodFil = vCodFil; | |
| wsSolicitacao.NumSol = vNumSol; | |
| wsSolicitacao.ItensServico.CriarLinha(); | |
| wsSolicitacao.ItensServico.SeqSol = vSeqSol; | |
| wsSolicitacao.ItensServico.CodTns = vCodTns; | |
| wsSolicitacao.ItensServico.CodSer = vCodPro; | |
| wsSolicitacao.ItensServico.CplPro = vDesPro; | |
| wsSolicitacao.ItensServico.UniMed = vUniMed; | |
| wsSolicitacao.ItensServico.QtdSol = vQtdMov; | |
| wsSolicitacao.ItensServico.DatPrv = vDatMov; | |
| wsSolicitacao.ItensServico.PreSol = vPreSol; | |
| wsSolicitacao.ItensServico.CcuRes = vCodCcu; | |
| wsSolicitacao.ItensServico.ObsSol = vObsEme; | |
| lSolicitacao.Adicionar(); | |
| lSolicitacao.codemp = vCodEmp; | |
| lSolicitacao.numsol = vNumSol; | |
| lSolicitacao.seqsol = vSeqSol; | |
| lSolicitacao.id_chave = vNumSeq; | |
| lSolicitacao.numosg = sNumOsg; | |
| lSolicitacao.codsaf = vCodSaf; | |
| lSolicitacao.Gravar(); | |
| } | |
| cur_dados.Proximo(); | |
| } | |
| cur_dados.FecharCursor(); | |
| se (nQtdPro > 0) { | |
| wsRequisicao.ModoExecucao = 1; | |
| wsRequisicao.Executar(); | |
| @ Variaveis de retorno @ | |
| definir alfa sMensagemRetorno; | |
| definir numero nTipoRetorno; | |
| definir alfa sErroExecucao; | |
| sMensagemRetorno = wsRequisicao.mensagemRetorno; | |
| nTipoRetorno = wsRequisicao.tipoRetorno; | |
| sErroExecucao = wsRequisicao.erroExecucao; | |
| definir numero rCodEmp; | |
| definir numero rNumEme; | |
| definir numero rSeqEme; | |
| definir numero rChaInt; | |
| definir alfa rNumOsg; | |
| definir alfa rCodSaf; | |
| se (nTipoRetorno <> 0) { | |
| sMensagemRetorno = wsRequisicao.Erros.MsgErr; | |
| fn_requisicao_erro(); | |
| } senao { | |
| fn_requisicao_ok(); | |
| } | |
| GatecOSAutomotiva.MensagemRetorno = sMensagemRetorno; | |
| } | |
| se (nQtdSer > 0) { | |
| wsSolicitacao.ModoExecucao = 1; | |
| wsSolicitacao.Executar(); | |
| @ Variaveis de retorno @ | |
| definir alfa sMensagemRetorno; | |
| definir numero nTipoRetorno; | |
| definir alfa sErroExecucao; | |
| sMensagemRetorno = wsSolicitacao.mensagemRetorno; | |
| nTipoRetorno = wsSolicitacao.tipoRetorno; | |
| sErroExecucao = wsSolicitacao.retornoSolicitacao.msgRet; | |
| se (nTipoRetorno <> 1) { | |
| sMensagemRetorno = wsSolicitacao.retornoSolicitacao.msgRet; | |
| fn_solicitacao_erro(); | |
| } senao { | |
| fn_solicitacao_ok(); | |
| } | |
| GatecOSAutomotiva.MensagemRetorno = sMensagemRetorno; | |
| } | |
| se (nQtdReg = 0) { | |
| GatecOSAutomotiva.TipoRetorno = 2; | |
| GatecOSAutomotiva.MensagemRetorno = "Nenhum registro processado!"; | |
| } | |
| funcao fn_requisicao_erro(); | |
| { | |
| GatecOSAutomotiva.TipoRetorno = 2; | |
| lRequisicao.Primeiro(); | |
| enquanto(lRequisicao.FDA = 0) { | |
| rCodEmp = lRequisicao.codemp; | |
| rNumEme = lRequisicao.numeme; | |
| rSeqEme = lRequisicao.seqeme; | |
| rChaInt = lRequisicao.id_chave; | |
| ExecSQL " \ | |
| UPDATE DB_INTEGRACAO.GATEC_OS_ITENS_REQUISITADOS \ | |
| SET OBS_ERRO = :sMensagemRetorno, \ | |
| REQUIS_GERADA = 'N', \ | |
| REQ_PROCESSADO = 'S' \ | |
| WHERE ID_CHAVE = :rChaInt "; | |
| lRequisicao.Proximo(); | |
| } | |
| } | |
| funcao fn_solicitacao_erro(); | |
| { | |
| GatecOSAutomotiva.TipoRetorno = 2; | |
| lSolicitacao.Primeiro(); | |
| enquanto(lSolicitacao.FDA = 0) { | |
| rChaInt = lSolicitacao.id_chave; | |
| ExecSQL " \ | |
| UPDATE DB_INTEGRACAO.GATEC_OS_ITENS_REQUISITADOS \ | |
| SET OBS_ERRO = :sMensagemRetorno, \ | |
| REQUIS_GERADA = 'N', \ | |
| REQ_PROCESSADO = 'S' \ | |
| WHERE ID_CHAVE = :rChaInt "; | |
| lSolicitacao.Proximo(); | |
| } | |
| } | |
| funcao fn_requisicao_ok(); | |
| { | |
| GatecOSAutomotiva.TipoRetorno = 1; | |
| lRequisicao.Primeiro(); | |
| enquanto(lRequisicao.FDA = 0) { | |
| rCodEmp = lRequisicao.codemp; | |
| rNumEme = lRequisicao.numeme; | |
| rSeqEme = lRequisicao.seqeme; | |
| rChaInt = lRequisicao.id_chave; | |
| rNumOsg = lRequisicao.numosg; | |
| rCodSaf = lRequisicao.codsaf; | |
| ExecSQL " \ | |
| UPDATE E207EME \ | |
| SET USU_CHAINT = :eToken, \ | |
| USU_IDCHAVE = :rChaInt, \ | |
| USU_NUMOS = :rNumOsg, \ | |
| USU_SAFRA = :rCodSaf \ | |
| WHERE CODEMP = :rCodEmp \ | |
| AND NUMEME = :rNumEme \ | |
| AND SEQEME = :rSeqEme "; | |
| ExecSQL " \ | |
| UPDATE DB_INTEGRACAO.GATEC_OS_ITENS_REQUISITADOS \ | |
| SET ERP_CODEMP = :rCodEmp, \ | |
| ERP_NUMEME = :rNumEme, \ | |
| ERP_SEQEME = :rSeqEme, \ | |
| REQUIS_GERADA = 'S', \ | |
| REQ_PROCESSADO = 'S', \ | |
| OBS_ERRO = 'Registro integrado', \ | |
| DAT_IMPORT = SYSDATE \ | |
| WHERE ID_CHAVE = :rChaInt "; | |
| lRequisicao.Proximo(); | |
| } | |
| } | |
| funcao fn_solicitacao_ok(); | |
| { | |
| GatecOSAutomotiva.TipoRetorno = 1; | |
| lSolicitacao.Primeiro(); | |
| enquanto(lSolicitacao.FDA = 0) { | |
| rCodEmp = lSolicitacao.codemp; | |
| rNumSol = lSolicitacao.numsol; | |
| rSeqSol = lSolicitacao.seqsol; | |
| rChaInt = lSolicitacao.id_chave; | |
| rNumOsg = lSolicitacao.numosg; | |
| rCodSaf = lSolicitacao.codsaf; | |
| ExecSQL " \ | |
| UPDATE E405SOL \ | |
| SET USU_CHAINT = :eToken, \ | |
| USU_IDCHAVE = :rChaInt, \ | |
| USU_NUMOS = :rNumOsg, \ | |
| USU_SAFRA = :rCodSaf \ | |
| WHERE CODEMP = :rCodEmp \ | |
| AND NUMSOL = :rNumSol \ | |
| AND SEQSOL = :rSeqSol "; | |
| ExecSQL " \ | |
| UPDATE DB_INTEGRACAO.GATEC_OS_ITENS_REQUISITADOS \ | |
| SET ERP_CODEMP = :rCodEmp, \ | |
| ERP_NUMSOL = :rNumSol, \ | |
| ERP_SEQSOL = :rSeqSol, \ | |
| REQUIS_GERADA = 'S', \ | |
| REQ_PROCESSADO = 'S', \ | |
| OBS_ERRO = 'Registro integrado', \ | |
| DAT_IMPORT = SYSDATE \ | |
| WHERE ID_CHAVE = :rChaInt "; | |
| lSolicitacao.Proximo(); | |
| } | |
| } | |
| funcao fn_parametros_integracao(numero nEmpInt); | |
| { | |
| vParametroIntegracao = 0; | |
| definir cursor cur_parametros; | |
| cur_parametros.SQL " \ | |
| SELECT USU_TNSREQ, \ | |
| USU_TNSDEV, \ | |
| USU_TNSSOL \ | |
| FROM USU_T000GAT \ | |
| WHERE USU_CODEMP = :nEmpInt "; | |
| cur_parametros.AbrirCursor(); | |
| se (cur_parametros.Achou) { | |
| sParTnsIntReq = cur_parametros.usu_tnsreq; | |
| sParTnsDevReq = cur_parametros.usu_tnsdev; | |
| sParTnsIntSol = cur_parametros.usu_tnssol; | |
| } senao { | |
| vParametroIntegracao = 1; | |
| } | |
| cur_parametros.FecharCursor(); | |
| } | |
| funcao fn_numero_requisicao(numero nEmpInt); | |
| { | |
| definir cursor cur_numero; | |
| cur_numero.SQL " \ | |
| SELECT NUMEME \ | |
| FROM E207EME \ | |
| WHERE CODEMP = 0 \ | |
| UNION ALL \ | |
| SELECT MAX(NUMEME) AS NUMEME \ | |
| FROM E207EME \ | |
| WHERE CODEMP = :nEmpInt "; | |
| cur_numero.AbrirCursor(); | |
| se (cur_numero.Achou) { | |
| vNumEme = cur_numero.NUMEME; | |
| vSeqEme = 1; | |
| @ Incrementa contator de requisição @ | |
| vNumEme++; | |
| } | |
| cur_numero.FecharCursor(); | |
| } | |
| funcao fn_numero_solicitacao(numero nEmpInt); | |
| { | |
| definir cursor cur_numero; | |
| cur_numero.SQL " \ | |
| SELECT NUMSOL \ | |
| FROM E405SOL \ | |
| WHERE CODEMP = 0 \ | |
| UNION ALL \ | |
| SELECT NVL(MAX(NUMSOL), 1) AS NUMSOL \ | |
| FROM E405SOL \ | |
| WHERE CODEMP = :nEmpInt "; | |
| cur_numero.AbrirCursor(); | |
| se (cur_numero.Achou) { | |
| vNumSol = cur_numero.NUMSOL; | |
| vSeqSol = 1; | |
| @ Incrementa contator de requisição @ | |
| vNumSol++; | |
| } | |
| cur_numero.FecharCursor(); | |
| } | |
| funcao fn_dados_requisicao(); | |
| { | |
| @ Valida produto @ | |
| definir cursor cur_produto; | |
| vValidaProduto = 0; | |
| cur_produto.SQL " \ | |
| SELECT E075PRO.DESPRO, \ | |
| E075PRO.UNIMED, \ | |
| E075PRO.SITPRO, \ | |
| E075DER.PREREP \ | |
| FROM E075PRO, \ | |
| E075DER \ | |
| WHERE E075PRO.CODEMP = E075DER.CODEMP \ | |
| AND E075PRO.CODPRO = E075DER.CODPRO \ | |
| AND E075PRO.CODEMP = :vCodEmp \ | |
| AND E075PRO.CODPRO = :vCodPro \ | |
| AND E075DER.CODDER = ' ' "; | |
| cur_produto.AbrirCursor(); | |
| definir alfa sValDesPro; | |
| definir alfa sValUniMed; | |
| definir alfa sValSitPro; | |
| se (cur_produto.Achou) { | |
| sValDesPro = cur_produto.DESPRO; | |
| sValUniMed = cur_produto.UNIMED; | |
| sValSitPro = cur_produto.SITPRO; | |
| @ Valida situação do produto @ | |
| se (sValSitPro = "I") { | |
| GatecOSAutomotiva.TipoRetorno = 2; | |
| GatecOSAutomotiva.MensagemRetorno = "Produto (" + vCodPro + "-" + sValDesPro + ")está inativo no ERP"; | |
| vValidaProduto = 1; | |
| Cancel; | |
| } | |
| vDesPro = sValDesPro; | |
| vUniMed = sValUniMed; | |
| vPreSol = cur_produto.PREREP; | |
| } senao { | |
| GatecOSAutomotiva.TipoRetorno = 2; | |
| GatecOSAutomotiva.MensagemRetorno = "Produto não encontrado no ERP!"; | |
| vValidaProduto = 1; | |
| } | |
| cur_produto.FecharCursor(); | |
| @ Prepara usuario @ | |
| definir cursor cur_usuario; | |
| cur_usuario.SQL " \ | |
| SELECT CODUSU \ | |
| FROM R999USU \ | |
| WHERE UPPER(NOMUSU) = :vReqUsu "; | |
| cur_usuario.AbrirCursor(); | |
| se (cur_usuario.Achou) { | |
| vUsuEme = cur_usuario.CODUSU; | |
| } senao { | |
| vUsuEme = CodUsu; | |
| } | |
| cur_usuario.FecharCursor(); | |
| @ Valida reserva de estoque @ | |
| EstaNulo(vCodDep, vDepNul); | |
| @ Prepara observação @ | |
| definir alfa sCodEqp; | |
| definir alfa sNumOsg; | |
| IntParaAlfa(vNumOsg, sNumOsg); | |
| IntParaAlfa(vCodEqp, sCodEqp); | |
| vObsEme = "Dados do GAtec: OS: " + sNumOsg + " Equipamento: " + sCodEqp + " - " + vDesEqp + " Usuário: " + vReqUsu; | |
| } | |
| funcao fn_valida_requisicao(); | |
| { | |
| vValidaRequisicao = 0; | |
| definir cursor cur_validacao; | |
| cur_validacao.SQL " \ | |
| SELECT CODEMP, \ | |
| NUMEME, \ | |
| SEQEME \ | |
| FROM E207EME \ | |
| WHERE USU_CHAINT = :eToken \ | |
| AND USU_IDCHAVE = :vNumSeq "; | |
| cur_validacao.AbrirCursor(); | |
| se (cur_validacao.Achou) { | |
| vValidaRequisicao = 1; | |
| vNumEme = cur_validacao.NUMEME; | |
| vSeqEme = cur_validacao.SEQEME; | |
| lRequisicao.Adicionar(); | |
| lRequisicao.codemp = vCodEmp; | |
| lRequisicao.numeme = vNumEme; | |
| lRequisicao.seqeme = vSeqEme; | |
| lRequisicao.id_chave = vNumSeq; | |
| lRequisicao.Gravar(); | |
| fn_requisicao_ok(); | |
| } | |
| cur_validacao.FecharCursor(); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment