Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Dica
titleIntegrando Cliente

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
titleImportante

É 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:


Image Added


Exemplo da configuração do Processo Cliente no assinante Live:

Image AddedImage Removed


Dica
titleFluxo de integração

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.