Histórico da Página
Dica | ||
---|---|---|
| ||
Abaixo iremos mostrar como configurar o Processo de Envio Cliente do Protheus para integra-lo com o sistema Totvs Live. Siga o Passo a Passo. |
Aviso | ||
---|---|---|
| ||
É obrigatório a criação do campo A1_MSEXP, para que não ocorra um loop infinito, quando o processo de CLIENTE está ativo para BUSCA e ENVIO no mesmo assinante. |
Cadastrando o Processo de Cliente
Para integrarmos o Cliente com o Totvs Live primeiramente é necessário acessar o cadastro do Processo para verificar se o Cliente foi criado automaticamente no Protheus.
...
2- Aguarde a criação automática do cadastro de processo referente ao InventárioCliente.
3- Verifique se foi criado as Informações abaixo:
...
Chave: A1_FILIAL+A1_COD
Vinculando o Processo de Cliente ao Assinante Live
1- No módulo 12 (Controle de Lojas), acesse Atualizações/ RMI/ Cadastros/ Assinantes.
...
Processo: Cliente
Ativo: Sim
Tipo Process: BuscaEnvia
Filiais Proc: Informe o código das filiais que deseja Buscar Enviar o Processo
Configuração: Preencha esta campo de acordo com a sua URL da API InventarioCliente, como mostra o exemplo abaixo:
Bloco de código |
---|
{ "url_token": "http://caminhoxxxxxxx/PracticoLivexxxxxxxx/LiveConnector/FacadeIntegracao.svc?wsdl", (Url para acessar o LiveConector) "operacao": "RecuperarInventarioLCManterClienteLC_Integracao_Xml", (Operação para buscar token) "sistemasatelite":"123456789", (código do sistema satélite) "usuario":"[email protected]", (nome do usuário) "senha":"senha" (senha do usuário) } "tagretorno": "<LC_Retorno>", "subsistemasatelite": "" } |
Caso seja necessário enviar os clientes cadastros no Protheus para um sistema satélite diferente, deve-se preencher a tag subsistemasatelite com o código do satelite desejado.
Layout Envio: Preencha este campo de acordo com o exemplo abaixo: Lembrando que é permitido utilizar macro execuções no Layout abaixo, após o &.
Obs: Verificar o que deve enviar na TAG <TipoClassificacaoCliente>?<TipoClassificacaoCliente>
Opções: 0 = Indefinido, 1= Cliente, 2= Revendedor
Bloco de código |
---|
&"<?xml version='1.0' encoding='UTF-8'?> <soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:liv='http://LiveConnector/'> <soapenv:Header /> <soapenv:Body> <liv:RecuperarInventarioLCManterClienteLC_Integracao_Xml> <liv:codigoSistemaSatelite>" + self:oConfAssin['sistemasatelite']:oLive:getSatelite(self) + "</liv:codigoSistemaSatelite> <liv:xmlIdentificacao><xmlTicketCliente><![CDATA[<?xml version='1.0' encoding='utf-8'?><LC_Identificacao><Chave>?> <LC_TicketCliente> <Chave>" + self:cToken:oLive:getToken(self) + "</Chave><CodigoSistemaSatelite>Chave> <CodigoSistemaSatelite>" + self:oConfAssin['sistemasatelite']:oLive:getSatelite(self) + "</CodigoSistemaSatelite><Data/><Hora/></LC_Identificacao>]]></liv:xmlIdentificacao> </liv:RecuperarInventarioLC_Integracao_Xml> </soapenv:Body> </soapenv:Envelope>" |
Layout Publicação: Layout que será utilizado para gerar a Publicação (tabela MHQ), especificamente o campo MHQ_MENSAG
Bloco de código |
---|
{
"B7_FILIAL":"&RmiDePaRet('LIVE', 'SM0',self:oRegistro:_INVENTARIO:_CNPJLoja:Text,.F.)",
"B7_DOC":"&self:oRegistro:_INVENTARIO:_CodigoInventario:Text",
"B7_DATA":"&DtoS(CtoD(SubStr(self:oRegistro:_INVENTARIO:_DataFechamento:Text,1,10)))",
"SB7": [
{
"B7_COD":"&RmiDePaRet('LIVE', 'SB1',self:oRegistro:_INVENTARIO:_ProdutosLista:_Produto[nItem]:_CodigoProduto:text,.F.)",
"B7_LOCAL": "01",
"B7_QUANT":"&self:oRegistro:_INVENTARIO:_ProdutosLista:_Produto[nItem]:_QtdEstoquePosicaoAtual:text",
"B7_CONTAGE": "1",
"B7_ORIGEM": "LOJAINT"
}
]
} |
Exemplo da configuração do Processo Inventario no assinante Live:
CodigoSistemaSatelite>
<Data>" + DtoS( Date() ) + "</Data>
<Hora>" + StrTran(Time(), ':', '') + "</Hora>
<Numero>" + RMITImeStamp() + "</Numero>
<Documentos>
<LC_Cliente>
<Apelido>" + self:oPublica['A1_NOME'] + "</Apelido>
<CPF_CNPJ>" + (self:cIdRetaguarda := self:oPublica['A1_CGC']) + "</CPF_CNPJ>
<DataNascimento>" +IIF(!Empty(self:oPublica['A1_DTNASC']),Substr(self:oPublica['A1_DTNASC'],1,4)+'-'+Substr(self:oPublica['A1_DTNASC'],5,2)+'-'+Substr(self:oPublica['A1_DTNASC'],7,2),'2003-10-30')+ "</DataNascimento>
<Inativo>" + IIF(self:oPublica['A1_MSBLQL']=='2','false','true') + "</Inativo>
<Indicacao/>
<Nome_RazaoSocial>" + self:oPublica['A1_NOME'] + "</Nome_RazaoSocial>
<Nota>0</Nota>
<NumeroSequencia>1</NumeroSequencia>
<Observacoes>CLIENTE-INTEGRADO-PROTHEUS</Observacoes>
<Sexo>1</Sexo>
<TipoCliente>" + IIF(self:oPublica['A1_PESSOA'] == 'F','0','1') + "</TipoCliente>
<TipoClassificacaoCliente>1</TipoClassificacaoCliente>
<ListaDocumentosCliente>
<LC_DocumentoCliente>
<Identificacao>" + self:oPublica['A1_CGC'] + "</Identificacao>
<TipoDocumentoCliente>"+IIF(self:oPublica['A1_PESSOA'] == 'F','2','3')+"</TipoDocumentoCliente>
</LC_DocumentoCliente>
</ListaDocumentosCliente>
<ListaEnderecos>
<LC_Endereco>
<Bairro>" + self:oPublica['A1_BAIRRO'] + "</Bairro>
<CEP>" + self:oPublica['A1_CEP'] + "</CEP>
<Cidade_NumeroMunicipioIBGE>" +RmiRetIBGE(self:oPublica['A1_EST'], self:oPublica['A1_COD_MUN']) + "</Cidade_NumeroMunicipioIBGE>
<Complemento>" + self:oPublica['A1_COMPLEM'] + "</Complemento>
<Estado>" + self:oPublica['A1_EST'] + "</Estado>
<Logradouro>" + self:oPublica['A1_END'] + "</Logradouro>
<Numero>0</Numero>
<TipoEndereco>0</TipoEndereco>
</LC_Endereco>
</ListaEnderecos>
<ListaEnderecosEletronico>
<LC_EnderecoEletronico>
<Descricao>"+ IIF(Empty(self:oPublica['A1_EMAIL']),'[email protected]',self:oPublica['A1_EMAIL'])+ "</Descricao>
<TipoEnderecoEletronico>0</TipoEnderecoEletronico>
</LC_EnderecoEletronico>
</ListaEnderecosEletronico>
<ListaTelefones>
<LC_Telefone>
<Complemento/>
<DDD>" + self:oPublica['A1_DDD'] + "</DDD>
<Numero>" + self:oPublica['A1_TEL'] + "</Numero>
<TipoTelefone>0</TipoTelefone>
</LC_Telefone>
</ListaTelefones>
<ListaLimiteCredito>
<LC_LimiteCredito>
<Ativo>true</Ativo>
<CodigoLoja>"+self:aArrayFil[1][1]+"</CodigoLoja>
<LimiteCredito>" + cValToChar(self:oPublica['A1_LC']) + "</LimiteCredito>
<LimiteMensal>" + cValToChar(self:oPublica['A1_LC']) + "</LimiteMensal>
<NomeContrato>" + self:oPublica['A1_NOME'] + "</NomeContrato>
</LC_LimiteCredito>
</ListaLimiteCredito>
<ListaModalidades>
<LC_Modalidade>
<Codigo>1</Codigo>
<Descricao>Consumidor Final</Descricao>
</LC_Modalidade>
</ListaModalidades>
</LC_Cliente>
</Documentos>
</LC_TicketCliente>
]]></liv:xmlTicketCliente>
</liv:ManterClienteLC_Integracao_Xml>
</soapenv:Body>
</soapenv:Envelope>" |
Exemplo da Configuração do campo de exportação A1_MSEXP via Configurador:
Exemplo da configuração do Processo Cliente no assinante Live:
Dica | ||
---|---|---|
| ||
Após ter realizado as configurações acima a integração do Inventário Cliente seguirá o seguinte fluxo: Com os serviços RMIPUBLICA, RMIDISTRIB e RMIENVIA configurados e ativos, será gerado as publicações na tabela MHQ. Após a busca o envio da publicação sera realizado a distribuição das publicações de Inventários Cliente para o Assinante Live na tabela MHR. Com as distribuições realizadas o serviço RMIENVIA realizara o envio de Inventário para o Totvs Protheus, após a finalização do serviço RMIENVIA, no campo MHR_ENVIO, será gravado o json que enviamos para o Protheus e no campo MHR_RETORN é gravado a mensagem de retorno do Live, se obteve sucesso ou não na inclusão do Inventário Cliente para o Totvs Live. |