Académique Documents
Professionnel Documents
Culture Documents
WsStruct tb_Recebe
*-----*-----*-----*-----*-----*-----*-----*-----*
EndWsStruct
*-----*-----*-----*-----*-----*-----*-----*-----*
WsStruct tb_Processo
*-----*-----*-----*-----*-----*-----*-----*-----*
EndWsStruct
*-----*-----*-----*-----*-----*-----*-----*-----*
WsStruct tb_Invoice
*-----*-----*-----*-----*-----*-----*-----*-----*
EndWsStruct
*-----*-----*-----*-----*-----*-----*-----*-----*
WsStruct tb_Parcela
*-----*-----*-----*-----*-----*-----*-----*-----*
EndWsStruct
/*
Estrutura : tb_RetProt
Autor : Alan Henrique Almeida da Costa - AHAC
Data : 05/08/2013 - 13:00hrs
Objetivo :
*/
*-----*-----*-----*-----*-----*-----*-----*-----*
WsStruct tb_RetProt
*-----*-----*-----*-----*-----*-----*-----*-----*
EndWsStruct
/*
WebService : Int_SercorpRec
Autor : Alan Henrique Almeida da Costa - AHAC
Data : 05/08/2013 - 13:00hrs
Objetivo :
*/
*-----*-----*-----*-----*-----*-----*-----*-----*
WsService Int_ReceiveSercorp DESCRIPTION "Interface Sercorp Envia"
*-----*-----*-----*-----*-----*-----*-----*-----*
WsMethod Mt_RecebeProcesso
EndWsService
/*
Metodo : Mt_IntegraProcesso
Autor : Alan Henrique Almeida da Costa - AHAC
Data : 05/08/2013 - 13:00hrs
Objetivo :
*/
*-----*-----*-----*-----*-----*-----*-----*-----*
WsMethod Mt_RecebeProcesso WsReceive ReceiveProtheus WsSend ReturnProtheus
WsService Int_ReceiveSercorp
*-----*-----*-----*-----*-----*-----*-----*-----*
Local aEmp := {}
Local nI
Local aXml,cRcv := '', cSnd := ''
Local cAlias := ''
Local nRecSM0
Local cEmp , cFil
Local cParMoe
Private cVFil, cVProcesso, cVCliente, cVLojaCli, cVFornecedor, cVLojaFor,
cVInvoice, cVNu_Invoice, cVNatureza, cVParcela, cVEvento
Private cCentroCusto, cClasseValor, cItemConta
Private cVTipo, dVDt_Vcto, cVMoeda, nVTaxa, nVVl_Parcela, cVChvSercorp,
dVLogData, cVLogHora, cVLogUser, cXML
Private cMsg := ''
Private cStatus := ''
Private aEmpFilP := {}
Begin Sequence
If !Empty(cSnd)
//abre o arquivo xml e copia na variavel cXml
cXml := ""
Ft_Fuse(cSnd)
Ft_FGoTop()
//Loop dentro do XML
While !Ft_FEof()
//Le a linha do XML
cXml += Ft_FReadLn() + " "
Ft_FSkip()
EndDo
Ft_Fuse()
Else
cXML := 'Falha ao ler XML'
EndIf
ConOut('Processando XML......................')
ConOut(cXML)
Processos := ::ReceiveProtheus:Processo
//---------------------------------//
// Valida de Preenchimento do XML //
//--------------------------------\\
IF EMPTY(Processos:Fil)//Filial
cMsg += 'Filial nao preenchida' + Chr(13)+Chr(10)
ENDIF
IF EMPTY(Processos:Processo)//Processo
cMsg += 'Codigo do Processo nao preenchido' + Chr(13)+Chr(10)
ENDIF
IF EMPTY(Processos:Cliente)//CLiente
cMsg += 'Codigo do Cliente nao preenchido' + Chr(13)+Chr(10)
ENDIF
IF EMPTY(Processos:LojaCli)//CLiente
cMsg += 'Loja do Cliente nao preenchida' + Chr(13)+Chr(10)
ENDIF
IF EMPTY(Processos:Fornecedor)//Fornecedor
cMsg += 'Codigo do Fornecedor nao preenchido' + Chr(13)+Chr(10)
ENDIF
IF EMPTY(Processos:LojaFor)//Fornecedor
cMsg += 'Loja do Fornecedor nao preenchida' + Chr(13)+Chr(10)
ENDIF
IF EMPTY(Processos:LogData)//Data do Envio
cMsg += 'Data do envio nao preenchida' + Chr(13)+Chr(10)
ENDIF
Conout(Processos:LogData)
IF EMPTY(Processos:LogHora)//Hora do Envio
cMsg += 'Hora do envio nao preenchida' + Chr(13)+Chr(10)
ENDIF
IF EMPTY(Processos:LogUser)//Usuário do Envio
cMsg += 'Usuário do envio nao preenchido' + Chr(13)+Chr(10)
ENDIF
IF EMPTY(Processos:Invoice:Invoice)//Cod Invoice
cMsg += 'Codigo da ID Invoice nao preenchido' + Chr(13)+Chr(10)
ENDIF
IF EMPTY(Processos:Invoice:Nu_Invoice)//Cod Invoice
cMsg += 'Codigo da Nr. Invoice nao preenchido' + Chr(13)+Chr(10)
ENDIF
IF EMPTY(Processos:Invoice:Natureza)//Natureza
cMsg += 'Codigo da Natureza nao preenchido' + Chr(13)+Chr(10)
ENDIF
IF EMPTY(Processos:Invoice:CentroCusto)//Centro de Custo
cMsg += 'Codigo da Centro de Custo nao preenchido' + Chr(13)+Chr(10)
ENDIF
IF EMPTY(Processos:Invoice:ClasseValor)//Classe de Valor
cMsg += 'Codigo da Classe de Valor nao preenchido' + Chr(13)+Chr(10)
ENDIF
IF EMPTY(Processos:Invoice:ItemConta)//Item Contabil
cMsg += 'Codigo da Item Contabil nao preenchido' + Chr(13)+Chr(10)
ENDIF
IF EMPTY(Processos:Invoice:Parcela:Parcela)//Parcela
cMsg += 'Parcela da Invoice nao preenchida' + Chr(13)+Chr(10)
ENDIF
IF EMPTY(Processos:Invoice:Parcela:Evento)//Parcela
cMsg += 'Parcela da Invoice nao preenchida' + Chr(13)+Chr(10)
ENDIF
IF EMPTY(Processos:Invoice:Parcela:Tipo)//Tipo
cMsg += 'Tipo da Parcela nao preenchido' + Chr(13)+Chr(10)
ENDIF
IF EMPTY(Processos:Invoice:Parcela:Dt_Vcto)//Vencimento
cMsg += 'Data da Vencimento Parcela nao preenchida' + Chr(13)+Chr(10)
ENDIF
Conout(Processos:Invoice:Parcela:Dt_Vcto)
IF EMPTY(Processos:Invoice:Parcela:Moeda)//Moeda
cMsg += 'Moeda da Parcela nao preenchida' + Chr(13)+Chr(10)
ENDIF
//IF EMPTY(Processos:Invoice:Parcela:Taxa)//Taxa
// cMsg += 'Taxa da Moeda nao preenchida' + Chr(13)+Chr(10)
//ENDIF
IF EMPTY(Processos:Invoice:Parcela:Vl_Parcela)//Valor
cMsg += 'Valor da Parcela nao preenchido' + Chr(13)+Chr(10)
ENDIF
//Caso algum campo não esteja preenchido, cai fora das validações
IF !EMPTY(cMsg)
cStatus := "Rejeitado"
Break
ENDIF
//------------------------//
// Validações no Protheus //
//------------------------//
Conout('Vencimento')
Conout(Processos:Invoice:Parcela:Dt_Vcto)
Conout('Parcela')
Conout(Processos:Invoice:Parcela:Vl_Parcela)
//cEmp := SM0->M0_CODIGO
//cFil := SM0->M0_CODFIL
//RpcClearEnv()
//RpcSetType(3)
//RpcSetEnv(cEmp,cFil)
//E_INIT(.T.) //para criação de variáveis
cVFil :=
Upper(AVKey(Processos:Fil ,'EEQ_FILIAL')) //Filial
cVProcesso :=
Upper(AVKey(Processos:Processo ,'EEQ_PREEMB')) //Embarque
cVCliente :=
Upper(AVKey(Processos:Cliente ,'EEQ_IMPORT')) //Cliente
cVLojaCli :=
Upper(AVKey(Processos:LojaCli ,'EEQ_IMLOJA')) //Loja do
Cliente
cVFornecedor := Upper(AVKey(Processos:Fornecedor ,'EEQ_FORN'
)) //Fornecedor
cVLojaFor :=
Upper(AVKey(Processos:LojaFor ,'EEQ_FOLOJA')) //Loja do
Fornecedor
cVInvoice :=
Upper(AVKey(Processos:Invoice:Invoice ,'EEQ_NRINVO')) //Nr Invoice
cVNu_Invoice :=
Upper(AVKey(Processos:Invoice:Nu_Invoice ,'EEQ_NRINVO')) //Nr Invoice
cVNatureza :=
Upper(AVKey(Processos:Invoice:Natureza ,'EEQ_ZNATUR')) //Natureza
cCentroCusto :=
Upper(AVKey(Processos:Invoice:CentroCusto ,"CTT_CUSTO" )) //Centro de
Custo
cClasseValor := Upper(AVKey(Processos:Invoice:ClasseValor ,"CTH_CLVL"
)) //Classe de Valor
cItemConta := Upper(AVKey(Processos:Invoice:ItemConta ,"CTD_ITEM"
)) //item Contabil
cVParcela := ""
//Upper(AVKey(Processos:Invoice:Parcela:Parcela ,'EEQ_PARC' )) //Parcela
cVParcSerc :=
Upper(AVKey(Processos:Invoice:Parcela:Parcela ,'EEQ_ORIGEM' )) //Parcela
cVEvento :=
Upper(AVKey(Processos:Invoice:Parcela:Evento ,'EEQ_EVENT' )) //Parcela
cVTipo := Upper(AVKey(Processos:Invoice:Parcela:Tipo ,'EEQ_TIPO'
)) //Tipo
dVDt_Vcto := CtoD(Processos:Invoice:Parcela:Dt_Vcto)
//Vencimento
cVMoeda :=
Upper(AVKey(Processos:Invoice:Parcela:Moeda ,'EEQ_MOEDA' )) //Moeda
nVTaxa := Val(STRTRAN(Processos:Invoice:Parcela:Taxa,",","."))
//Taxa
nVVl_Parcela := Val(STRTRAN(Processos:Invoice:Parcela:Vl_Parcela,",","."))
//Valor
cVChvSercorp := Upper(Processos:ChvSercorp
) //Chave do Sercorp
cVLogHora :=
AVKey(Processos:LogHora ,'EEQ_ZLOGHR') //Hora do Envio
dVLogData := Ctod(Processos:LogData)
//Data do Envio
cVLogUser := Processos:LogUser
//Usuário do Envio
//Carrega Filiais
nRecSM0 := SM0->(RecNo())
SM0->(dbGoTop())
While !SM0->(Eof())
aAdd(aEmp,SM0->M0_CODFIL)
SM0->(DBSkip())
Enddo
SM0->(dbGoTo(nRecSM0))
EndIf
cVFil := SM0->M0_CODFIL
SA1->(DBSETORDER(1))
SA2->(DBSETORDER(1))
EC6->(DBSETORDER(1))
EEQ->(DBSETORDER(4))
SYF->(DBSETORDER(1))
SED->(DBSETORDER(1))
CTT->(DBSETORDER(1))
CTD->(DBSETORDER(1))
CTH->(DBSETORDER(1))