Definir Numero nStatusProcesso; Definir alfa aMensagemProcesso; Definir Numero nStatusRegistro; Definir alfa aMensagemRegistro; Definir alfa xCursorPrin; Definir alfa aMsgErroSql; Definir Numero nParam_CodEmp; Definir Numero nParam_CodFil; Definir Alfa aParam_CodEmp; Definir Alfa aParam_CodFil; Definir Numero nSql_E207eme_Codemp; Definir Numero nSql_E207eme_Numeme; Definir Numero nSql_E207eme_Seqeme; Definir Numero nSql_E207eme_Fileme; Definir Alfa aSql_E207eme_Codtns; Definir Alfa aSql_E207eme_Codpro; Definir Alfa aSql_E207eme_Codder; Definir Alfa aSql_E207eme_Codser; Definir Alfa aSql_E207eme_Coddep; Definir Alfa aSql_E210est_Coddep; Definir Alfa aSql_E207eme_Ccures; Definir Numero nSql_E210est_Qtdest; Definir Alfa aSql_E075pro_Codfam; Definir Alfa aSql_E075pro_Codagc; Definir Numero nSql_E405sol_Codemp; Definir Numero nSql_E405sol_Numsol; Definir Numero nSql_E405sol_Seqsol; Definir Numero nSql_E405sol_Codusu; Definir Data dSql_E405sol_Datsol; Definir Numero nSql_E405sol_Horsol; Definir Alfa aSql_E405sol_Codpro; Definir Alfa aSql_E405sol_Codder; Definir Alfa aSql_E405sol_Codser; Definir Numero nSql_E405sol_Numeme; Definir Numero nSql_E405sol_Seqeme; Definir Funcao IniciaProcessamento(); Definir Funcao MontaResposta(); Definir Funcao IniciaLeituraRequisicoesReq(); Definir Funcao LigaSolicitacaoComReq(); Definir Funcao ValidaDadosRequisicao(); Definir Funcao ValidaDadosSolicitacao(); Definir Funcao AddLigacaoResult(); IniciaProcessamento(); @------------------------------------------------------------------------------@ @----Função para iniciar a distribuição do processamento das informações-------@ @------------------------------------------------------------------------------@ Funcao IniciaProcessamento();{ nQtdReqAtendidasSucesso=0; nQtdReqAtendidasErro =0; nStatusProcesso=1; aMensagemProcesso="Processamento realizado com sucesso."; nParam_CodFil = VincularRequisicaoSolicitacao.codfil; nParam_CodEmp = VincularRequisicaoSolicitacao.codemp; Intparaalfa(nParam_CodFil,aParam_CodFil); Intparaalfa(nParam_CodEmp,aParam_CodEmp); Se((nParam_CodFil=0) ou (nParam_CodEmp=0)){ nStatusProcesso=0; aMensagemProcesso="Não recebido os parâmetros de Empresa ou Filial para iniciar o processamento"; } nReqRecebida_QtdLinhas = VincularRequisicaoSolicitacao.Ligacoes.qtdLinhas; Se((nReqRecebida_QtdLinhas=0) e (nStatusProcesso=1)){ nStatusProcesso=0; aMensagemProcesso="Não recebido nenhuma requisição para atender."; } Se(nStatusProcesso=1){ IniciarTransacao(); IniciaLeituraRequisicoesReq(); Se(nStatusProcesso=1){ FinalizarTransacao(); }senao { DesfazerTransacao(); } } MontaResposta(); } @--Função que devolve o resultado do processamento dos dados de entrada--------@ Funcao MontaResposta();{ Se(nStatusProcesso=2){ aMensagemProcesso = "Ocorreram erros no processamento das Ligações, nenhuma alteração foi realizada. Consulte o resultado para mais detalhes."; } VincularRequisicaoSolicitacao.StatusProcesso = nStatusProcesso; VincularRequisicaoSolicitacao.MensagemProcesso = aMensagemProcesso; } Funcao IniciaLeituraRequisicoesReq();{ para (i =0 ; i < nReqRecebida_QtdLinhas ; i++ ) { VincularRequisicaoSolicitacao.Ligacoes.LinhaAtual = i; nReqRecebida_Numeme = VincularRequisicaoSolicitacao.Ligacoes.Numeme; nReqRecebida_Seqeme = VincularRequisicaoSolicitacao.Ligacoes.Seqeme; nReqRecebida_NumSol = VincularRequisicaoSolicitacao.Ligacoes.NumSol; nReqRecebida_SeqSol = VincularRequisicaoSolicitacao.Ligacoes.SeqSol; nStatusRegistro = 1; aMensagemRegistro = "Requisição ligada com sucesso."; ValidaDadosRequisicao(); Se(nStatusRegistro = 1){ ValidaDadosSolicitacao(); } Se(nStatusRegistro = 1){ LimpaEspacos(aSql_E405sol_Codpro); LimpaEspacos(aSql_E405sol_Codder); LimpaEspacos(aSql_E207eme_Codpro); LimpaEspacos(aSql_E207eme_Codder); Se((aSql_E405sol_Codpro<>aSql_E207eme_Codpro) ou (aSql_E405sol_Codder<>aSql_E207eme_Codder)){ nStatusRegistro = 0; aMensagemRegistro = "O produto da requisição não é equivalante ao produto da Solicitação"; } } Se(nStatusRegistro = 1){ LigaSolicitacaoComReq(); } AddLigacaoResult(); } } Funcao ValidaDadosRequisicao();{ SQL_Criar(xCursorPrin); SQL_UsarAbrangencia(xCursorPrin,0); SQL_UsarSQLSenior2(xCursorPrin,0); SQL_DefinirComando(xCursorPrin,"select\ e207eme.codemp as e207eme_codemp,\ e207eme.numeme as e207eme_numeme,\ e207eme.seqeme as e207eme_seqeme,\ e207eme.fileme as e207eme_fileme,\ e207eme.codtns as e207eme_codtns,\ e207eme.codpro as e207eme_codpro,\ e207eme.codder as e207eme_codder,\ e207eme.codser as e207eme_codser,\ e207eme.coddep as e207eme_coddep, \ e207eme.ccures as e207eme_ccures,\ e075pro.codfam as e075pro_codfam,\ e075pro.codagc as e075pro_codagc \ from e207eme \ inner join e075pro \ on e075pro.codemp = e207eme.codemp \ and e075pro.codpro = e207eme.codpro \ where e207eme.codemp = :nParam_CodEmp\ and e207eme.numeme = :nReqRecebida_Numeme\ and e207eme.seqeme = :nReqRecebida_Seqeme "); SQL_DefinirInteiro(xCursorPrin,"nParam_CodEmp",nParam_CodEmp); SQL_DefinirInteiro(xCursorPrin,"nReqRecebida_Numeme",nReqRecebida_Numeme); SQL_DefinirInteiro(xCursorPrin,"nReqRecebida_Seqeme",nReqRecebida_Seqeme); SQL_AbrirCursor (xCursorPrin); nEncontrouRequisicao=0; Se(SQL_EOF(xCursorPrin)=0){ nEncontrouRequisicao++; SQL_RetornarInteiro (xCursorPrin,"E207eme_Codemp",nSql_E207eme_Codemp); SQL_RetornarInteiro (xCursorPrin,"E207eme_Numeme",nSql_E207eme_Numeme); SQL_RetornarInteiro (xCursorPrin,"E207eme_Seqeme",nSql_E207eme_Seqeme); SQL_RetornarInteiro (xCursorPrin,"E207eme_Fileme",nSql_E207eme_Fileme); SQL_RetornarAlfa (xCursorPrin,"E207eme_Codtns",aSql_E207eme_Codtns); SQL_RetornarAlfa (xCursorPrin,"E207eme_Codpro",aSql_E207eme_Codpro); SQL_RetornarAlfa (xCursorPrin,"E207eme_Codder",aSql_E207eme_Codder); SQL_RetornarAlfa (xCursorPrin,"E207eme_Codser",aSql_E207eme_Codser); SQL_RetornarAlfa (xCursorPrin,"E207eme_Coddep",aSql_E207eme_Coddep); SQL_RetornarAlfa (xCursorPrin,"E207eme_Ccures",aSql_E207eme_Ccures); SQL_RetornarAlfa (xCursorPrin,"E075pro_Codfam",aSql_E075pro_Codfam); SQL_RetornarAlfa (xCursorPrin,"E075pro_Codagc",aSql_E075pro_Codagc); } SQL_FecharCursor(xCursorPrin); SQL_Destruir(xCursorPrin); Se(nEncontrouRequisicao=0){ nStatusRegistro = 0; aMensagemRegistro = "Requisição não encontrada."; } } Funcao ValidaDadosSolicitacao();{ SQL_Criar(xCursorPrin); SQL_UsarAbrangencia(xCursorPrin,0); SQL_UsarSQLSenior2(xCursorPrin,0); SQL_DefinirComando(xCursorPrin,"SELECT \ e405sol.codemp as e405sol_codemp,\ e405sol.numsol as e405sol_numsol,\ e405sol.seqsol as e405sol_seqsol,\ e405sol.codusu as e405sol_codusu,\ e405sol.datsol as e405sol_datsol,\ e405sol.horsol as e405sol_horsol,\ e405sol.codpro as e405sol_codpro,\ e405sol.codder as e405sol_codder,\ e405sol.codser as e405sol_codser,\ e405sol.numeme as e405sol_numeme,\ e405sol.seqeme as e405sol_seqeme\ from e405sol \ where e405sol.codemp = :nParam_CodEmp \ and e405sol.filsol = :nParam_CodFil \ and e405sol.numsol = :nReqRecebida_NumSol \ and e405sol.seqsol = :nReqRecebida_SeqSol"); SQL_DefinirInteiro(xCursorPrin,"nParam_CodEmp",nParam_CodEmp); SQL_DefinirInteiro(xCursorPrin,"nParam_CodFil",nParam_CodFil); SQL_DefinirInteiro(xCursorPrin,"nReqRecebida_NumSol",nReqRecebida_NumSol); SQL_DefinirInteiro(xCursorPrin,"nReqRecebida_SeqSol",nReqRecebida_SeqSol); SQL_AbrirCursor (xCursorPrin); nEncontrouSolicitacao=0; Se(SQL_EOF(xCursorPrin)=0){ nEncontrouSolicitacao = 1; SQL_RetornarInteiro (xCursorPrin,"E405sol_Codemp",nSql_E405sol_Codemp); SQL_RetornarInteiro (xCursorPrin,"E405sol_Numsol",nSql_E405sol_Numsol); SQL_RetornarInteiro (xCursorPrin,"E405sol_Seqsol",nSql_E405sol_Seqsol); SQL_RetornarInteiro (xCursorPrin,"E405sol_Codusu",nSql_E405sol_Codusu); SQL_RetornarData (xCursorPrin,"E405sol_Datsol",dSql_E405sol_Datsol); SQL_RetornarInteiro (xCursorPrin,"E405sol_Horsol",nSql_E405sol_Horsol); SQL_RetornarAlfa (xCursorPrin,"E405sol_Codpro",aSql_E405sol_Codpro); SQL_RetornarAlfa (xCursorPrin,"E405sol_Codder",aSql_E405sol_Codder); SQL_RetornarAlfa (xCursorPrin,"E405sol_Codser",aSql_E405sol_Codser); SQL_RetornarInteiro (xCursorPrin,"E405sol_Numeme",nSql_E405sol_Numeme); SQL_RetornarInteiro (xCursorPrin,"E405sol_Seqeme",nSql_E405sol_Seqeme); Se(nSql_E405sol_Numeme<>0){ Se((nSql_E405sol_Numeme<>nReqRecebida_Numeme) ou (nSql_E405sol_Seqeme<>nReqRecebida_Seqeme)){ nStatusRegistro = 0; aMensagemRegistro = "Esta Solicitação já está ligada em outra requisição"; } } } SQL_FecharCursor(xCursorPrin); SQL_Destruir(xCursorPrin); Se(nEncontrouSolicitacao=0){ nStatusRegistro = 0; aMensagemRegistro = "Solicitação não encontrada."; } } Funcao AddLigacaoResult();{ VincularRequisicaoSolicitacao.Result.CriarLinha(); VincularRequisicaoSolicitacao.Result.CodEmp = nParam_CodEmp; VincularRequisicaoSolicitacao.Result.CodFil = nParam_CodFil; VincularRequisicaoSolicitacao.Result.NumEme = nReqRecebida_Numeme; VincularRequisicaoSolicitacao.Result.SeqEme = nReqRecebida_Seqeme; VincularRequisicaoSolicitacao.Result.NumSol = nReqRecebida_NumSol; VincularRequisicaoSolicitacao.Result.SeqSol = nReqRecebida_SeqSol; VincularRequisicaoSolicitacao.Result.StatusRegistro = nStatusRegistro; VincularRequisicaoSolicitacao.Result.MensagemRegistro = aMensagemRegistro; Se(nStatusRegistro=1){ nQtdReqAtendidasSucesso++; }senao { nQtdReqAtendidasErro++; Se(nQtdReqAtendidasSucesso=0){ nStatusProcesso =0; aMensagemProcesso =aMensagemRegistro; }senao { Se(nQtdReqAtendidasErro=1){ aMensagemProcesso =aMensagemRegistro; }senao { aMensagemProcesso = aMensagemProcesso + " " + aMensagemRegistro; } nStatusProcesso =2; } } } Funcao LigaSolicitacaoComReq();{ ExecSqlEx ("update e405sol set numeme=:nReqRecebida_Numeme, seqeme=:nReqRecebida_Seqeme\ where codemp = :nParam_CodEmp \ and filsol = :nParam_CodFil \ and numsol = :nReqRecebida_NumSol \ and seqsol = :nReqRecebida_SeqSol ",xError,aMsgErroSql); Se(xError<>0){ nStatusProcesso=0; aMensagemProcesso="Ocorreu erro ao Atualizado dados da tabela e405sol. Erro Técnico:" + aMsgErroSql ; } }