Abaixo a lista de Pontos de Entradas existentes na rotina WSVTEX47 ( Cadastro de clientes), no qual é utilizada para integrar clientes no processo da integração do Protheus com a VTEX:
OBS: Em todos os pontos de entrada existem variáveis PRIVATE que podem ser manipuladas e também ajusar o processo.
VTX47SA1 - Rotina responsável por adicionar ou minupular campos que serão gravados na integração do cliente. Executado antes do ExecAuto, pode ser utilizado para manipular qualquer coisa presente na SA1.
Não existem nennhum PARAMIXB de entrada no processo. Uma vez o campo adicionado neste ponto de entrada, ele irá substituir o valor que veio via integração.
Exemplo de Ponto de Entrada:
#INCLUDE "PROTHEUS.CH"
//------------------------------------------------------------------------------------------
/*/{Protheus.doc} VTX47SA1
Ponto de entrada para adicionar campos específicos no cadastro do cliente.
@author Douglas F Martins
@version 1.xx
@since 10/10/2019
/*/
//------------------------------------------------------------------------------------------
User Function VTX47SA1()
Local aCpos := {}
aAdd(aCpos, {"A1_UNIDVEN" , "031" , NIL} )
aAdd(aCpos, {"A1_XXMSEMP" , "AT" , NIL} )
aAdd(aCpos, {"A1_XXSTATU" , "CLIENTE" , NIL} )
aAdd(aCpos, {"A1_XXCAN" , "FILIAIS" , NIL} )
aAdd(aCpos, {"A1_XXEMP01" , "S" , NIL} )
aAdd(aCpos, {"A1_XXEMP02" , "N" , NIL} )
aAdd(aCpos, {"A1_XXEMP03" , "N" , NIL} )
aAdd(aCpos, {"A1_XXEMP04" , "N" , NIL} )
aAdd(aCpos, {"A1_XXEMP05" , "N" , NIL} )
aAdd(aCpos, {"A1_XXEMP06" , "N" , NIL} )
aAdd(aCpos, {"A1_NREDUZ" , _cNomFan , NIL} )
aAdd(aCpos, {"A1_PAIS" , "105" , NIL} )
Return aCpos
VTX47COD - Ponto de Entrada utilizado para modificar o código e loja do cliente na integração VTEX.
Geralmente é utilizado por clientes que possuem uma regra diferente do padrão do sistema para preenchimento de código e loja.
Esse Ponto de Entrada é executado antes do ExecAuto do cadastro de Clientes.
Exemplo do Ponto de Entrada:
User Function VTX47COD()
Local aDadosCli := {}
Local __cCodCli := ""
Local __cLjCli := "01"
Local lContinua := .T.
SA1->(DBSelectArea("SA1"))
SA1->(DBSetOrder(1))
While lContinua
__cCodCli := GetSXENum("SA1","A1_COD")
IF !SA1->(DBSeek(xFilial("SA1") + __cCodCli))
lContinua := .F.
Else
ConfirmSX8()
EndIF
End
aadd(aDadosCli,__cCodCli)
aadd(aDadosCli,__cLjCli)
Return aDadosCli
VTX47FIM - Ponto de Entrada executado após o ExecAuto do cliente, pode ser utilizado para gravar os campos da SA1 ou qualquer tratativa após a transação do cadastro do cliente ter sido finalizada.
Exemplo do Ponto de Entrada:
*/
User Function VTX47FIM()
Local cGrTrib := ""//SuperGetMV("VT_GRTRIB",,"CFN")
If SA1->A1_TIPO == "F"
cGrTrib := "CFN"
EndIf
IF Empty(SA1->A1_GRPTRIB)
ReclocK("SA1",.F.)
SA1->A1_GRPTRIB := cGrTrib
MsUnLock()
EndIF
Return
VTX47ARR - Rotina responsável por adicionar ou minupular campos que serão gravados na integração do cliente. Executado antes do ExecAuto, porém depois de todos os campos já preenchidos dentor da nossa rotina.
Não existem nennhum PARAMIXB de entrada no processo. Uma vez o campo adicionado neste ponto de entrada, ele irá substituir o valor que veio via integração.
Diferente do VTX47SA1, aqui já sabemos quais valores serão utilizados, em vez de apenas substituir ou incluir novos valores no Array do ExecAuto.
Exemplo do Ponto de Entrada:
user function VTX47ARR()
Local nPostel := AScan(aDados, {|x| AllTrim(x[1]) == "A1_TEL"})
Local nPosDDD := AScan(aDados, {|x| AllTrim(x[1]) == "A1_DDD"})
IF Empty(Alltrim(aDados[nPostel][2]))
aDados[nPostel][2] := '00000000'
EndIF
IF Empty(Alltrim(aDados[nPosDDD][2]))
aDados[nPosDDD][2] := '11'
EndIF
Return()
VTX47PES - Ponto de Entrada para modificar regra de pesquisa de cadastro de cliente, se o mesmo já existe na base ou não, para criar uma nova loja.
Exemplo do Ponto de Entrada:
User Function VTX47PES()
Local cSQL := " AND A1_END = '" + _cEnd + "' "
Return cSQL
VTX47VLD - Ponto de Entrada utilizado para validar se cliente deve ser incluído ou alterado.
Geralmente utilizado quando o cliente deseja montar a própria lógica para definir se vai criar um novo cadastro.
Exemplo do Ponto de Entrada:
User Function VTX47VLD()
Local lRet := .T.
IF lUsaLoja .And. !U_VTX47Get(_cDoc, _cCEP)
lRet := .T.
Else
lRet := .F.
EndIF
Return(lRet)
Variáveis Private Utilizadas no Processo:
cCodCli - Código do Cliente
cLjCli - Loja do Cliente
cCodEnd - Código do Endereço ( Quando cliente insere Contato além do Cadastro de Cliente )
_cTpCli - Tipo de Cliente
_cDDI - DDI do Telefone
_cDDD - DDD do Telefone
_cMun - Município
_cBairro -Bairro
_cComplem - Complemento
_cPtoRef - Ponto de Referência
_cCEP - CEP
_cTpPessoa - Tipo de Pessoa ( F ou J )
_cPessoa. - Tipo de Pessoa ( F ou J )
_cEmail - Email
_cIE - Inscrição Estaadual
_cEst - Estado
_cCodMun - Código de Município
_cDoc - CPF/CNPJ
_cCPF - CPF
_cNomCli - Nome do Cliente
_cNomCon - Nome do Contato
_cEnd - Endereço
_cRua - Rua
_cNumRua - Número da RUA
_cEndCob - Endereço de Cobrança
_cTel - Telefone
_cPhone - Telefone
_cEmailMD - Email
_cDtNasc - Data de Nascimento
_cGrpTrib -Grupo Tributário
cCnae - CNAE
0 Comentários