Árvore de páginas

Versões comparadas

Chave

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

Abaixo iremos mostrar como configurar o Processo de Envio Cliente Produto do Protheus para integra-lo com o sistema Totvs Live. Siga o Passo a Passo.

Cadastrando o Processo de

...

Produto

Para integrarmos o Cliente  Produto com o Totvs Live primeiramente é necessário acessar o cadastro do Processo para verificar se o Cliente Produtofoi criado automaticamente no Protheus.

...

2- Aguarde a criação automática do cadastro de processo referente ao InventárioProduto.  

3- Verifique se foi criado as Informações abaixo:

Processo: Cliente Produto

Tabela: SA1 SB1

Chave: A1B1_FILIAL+A1B1_COD  COD  

Vinculando o Processo de

...

Produto ao Assinante Live

1- No módulo 12 (Controle de Lojas), acesse Atualizações/ RMI/ Cadastros/ Assinantes.

...

3- Na guia Assinantes x Processos, preencha os seguintes campos:

Processo: ClienteProduto

Ativo: Sim

Tipo Process: Envia

...

Configuração: Preencha esta campo de acordo com a sua URL da API  ClienteProduto, como mostra o exemplo abaixo:

Bloco de código
{
    "url": "http://qacorpXXXX.brazilsouthXXXX.cloudappXXXX.azureXXX.com/PracticoLive/LiveConnector/FacadeIntegracao.svc?wsdl",
    "operacao": "ManterClienteLCManterProdutoLC_Integracao_Xml",
    "tagretorno": "<LC_Retorno>"
}

Layout Envio: Preencha este campo de acordo com o exemplo abaixo: Lembrando que é permitido utilizar macro execuções no Layout abaixo, após o &.


Aviso
titleFunção para retirar caracteres especiais

O Live não permite caracteres especiais na descrição do Produto, então inclua a função RMISUBSTR(cConteudo,cProcura,cTroca ) nas tags Descricao e DescricaoResumida.

Exemplo: 

<Descricao>" + RMISUBSTR(@self:oPublica['B1_DESC'],"+|&|%"," + |E| PORC " ) + "</Descricao><DescricaoResumida>" + RMISUBSTR(@SubStr(self:oPublica['B1_DESC'], 1, 50),"+|&|%"," + |E| PORC " ) + "</DescricaoResumida>

Bloco de código
&"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:liv='http://LiveConnector/'>
    	<soapenv:Header/>
    	<soapenv:Body>
        		<liv:ManterClienteLCManterProdutoLC_Integracao_Xml>
            			<liv:codigoSistemaSatelite>" + self:oConfAssin['sistemasatelite']:oLive:getSatelite(self) + "</liv:codigoSistemaSatelite>
			<liv:xmlTicketProduto><![CDATA[<?xml version='1.0' encoding='utf-8'?>
               <liv:xmlTicketCliente>
     <LC_TicketProduto>
             <![CDATA[<?xml version='1.0'?><LC_TicketCliente>
          <Chave>" + self:cTokenoLive:getToken(self) + "</Chave>
                        <CodigoSistemaSatelite>" + self:oConfAssin['sistemasatelite']:oLive:getSatelite(self) + "</CodigoSistemaSatelite>
                        <Data>" + DtoS( Date() ) + "</Data>
                        <Hora>" + StrTran(Time(), ':', '') + "</Hora>
                        <Numero>" + FwTimeStampRMITImeStamp(1) + "</Numero>
          <Documentos>
            <LC_Cliente>
  <Documentos>
            <Apelido>" + self:oPublica['A1_NOME'] + "</Apelido>
              <CPF_CNPJ>" + self:oPublica['A1_CGC'] + "</CPF_CNPJ>
<LC_Produto>
                <DataNascimento>" +dtoc(sTod(self:oPublica['A1_DTNASC'])) + "</DataNascimento>
              <Inativo>false<<NumeroSequencia>1</Inativo>NumeroSequencia>
              <Indicacao></Indicacao>
              <Nome_RazaoSocial>" + self:oPublica['A1_NOME'] + "</Nome_RazaoSocial><Ativo>true</Ativo>
              <Nota>0</Nota>
              <NumeroSequencia>1</NumeroSequencia>
    <CNPJFornecedor>" + IIF(!Empty(self:oPublica['B1_PROC']),Posicione('SA2', 1, self:oPublica['B1_PROC'] + self:oPublica['B1_LOJPROC'], 'A2_CGC'),'')   <Observacoes>CLIENTE-INTEGRADO-PROTHEUS</Observacoes>
+ "</CNPJFornecedor>
               <Sexo>0</Sexo>
                 <TipoCliente><CEST>" + IIF(self:oPublica['A1B1_PESSOACEST'] == 'F','0','1') + "</TipoCliente>CEST>
              <TipoClassificacaoCliente>2</TipoClassificacaoCliente>
                  <CNAE>"  <ListaDocumentosCliente>
  + self:oPublica['B1_CNAE'] + "</CNAE>
              <LC_DocumentoCliente>
                  <Identificacao><CodigoAlternativo>" + IIF(Empty(self:oPublica['B1_ALTER']), self:oPublica['A1_CGC']'B1_CODBAR'], self:oPublica['B1_ALTER']) + "</Identificacao>CodigoAlternativo>
                  <TipoDocumentoCliente>2</TipoDocumentoCliente>
              <CodigoClassificacaoFiscal>" + self:oPublica['B1_POSIPI'] + "</LC_DocumentoCliente>CodigoClassificacaoFiscal>
                </ListaDocumentosCliente>
              <ListaEnderecos>
  <CodigoItemServico/>
              <LC_Endereco>
                  <Bairro><CodigoPadrao>" + (self:cIdRetaguarda := self:oPublica['A1B1_BAIRROCOD']) + "</Bairro>
CodigoPadrao>
                          <CEP>      <CodigoPrincipal>" + self:oPublica['A1B1_CEPCODBAR'] + "</CEP>
CodigoPrincipal>
                                <Cidade_NumeroMunicipioIBGE><CodigoProdutoPorFornecedor>" + self:oPublica['A1B1_COD_MUNCODBAR'] + "</Cidade_NumeroMunicipioIBGE>
CodigoProdutoPorFornecedor>
                          <Complemento>"   + self:oPublica['A1_COMPLEM'] + "</Complemento>
<DescontoMaximo>99.99</DescontoMaximo>
                            <Estado>" + self:oPublica['A1_EST'] + "</Estado>
<DescontoVendaPromocao>99.99</DescontoVendaPromocao>
                               <Logradouro> <Descricao>" + self:oPublica['A1B1_ENDDESC'] + "</Logradouro>Descricao>
                    <Numero>0</Numero>
            <DescricaoResumida>" + SubStr(self:oPublica['B1_DESC'], 1, 50) + <TipoEndereco>0<"</TipoEndereco>
          DescricaoResumida>
      </LC_Endereco>
              </ListaEnderecos>
              <ListaEnderecosEletronico><DescricaoTipoProduto>REVENDA</DescricaoTipoProduto>
                <LC_EnderecoEletronico>
                  <Descricao><IPPT>" + self:oPublica['A1B1_EMAILIPPT'] + "</Descricao>IPPT>
                  <TipoEnderecoEletronico>0</TipoEnderecoEletronico>
                <<IndicadorArredondamento>true</LC_EnderecoEletronico>IndicadorArredondamento>
              </ListaEnderecosEletronico>
              <ListaTelefones>
                <LC_Telefone>
  <InserirClassificacao>true</InserirClassificacao>
                <Complemento></Complemento>
                  <DDD><PesoBruto>" + cValToChar(self:oPublica['A1B1_DDDPESO']) + "</DDD>
PesoBruto>
                                <Numero><PesoLiquido>" + cValToChar(self:oPublica['A1B1_TELPESO']) + "</Numero>PesoLiquido>
                  <TipoTelefone>0</TipoTelefone>
              <PrecoCentralizado>true</PrecoCentralizado>
  </LC_Telefone>
              </ListaTelefones>
              <ListaLimiteCredito>
  <QuantidadeCasaDecimal>0</QuantidadeCasaDecimal>
              <LC_LimiteCredito>
                  <Ativo>true<<QuantidadeCasaDecimalValor>0</Ativo>
QuantidadeCasaDecimalValor>
                        <CodigoLoja>01851716000165</CodigoLoja>
        <QuantidadeMultiplaCompra>0</QuantidadeMultiplaCompra>
          <LimiteCredito>" + cValToChar(self:oPublica['A1_LC']) + "</LimiteCredito>
                  <LimiteMensal><SiglaUnidadeMedida>" + cValToChar(self:oPublica['A1B1_LCUM']) + "</LimiteMensal>SiglaUnidadeMedida>
                  <NomeContrato>              <SituacaoTributariaOrigem>" + IIF(Empty(self:oPublica['A1_NOME']'B1_ORIGEM']),'0',self:oPublica['B1_ORIGEM']) + "</NomeContrato>SituacaoTributariaOrigem>
                  </LC_LimiteCredito>
              </ListaLimiteCredito><SituacaoVenda>true</SituacaoVenda>
								<Classificacoes>
									<LC_ClassificacaoProduto>
										<DescricaoClassificacao>TESTE</DescricaoClassificacao>
										<DescricaoTipoClassificacao>MARCA</DescricaoTipoClassificacao>
									</LC_ClassificacaoProduto>
								</Classificacoes>
              <ListaModalidades>
                  <UnidadesNegocio/>
  <LC_Modalidade>
                    <Codigo>1</Codigo>
           <ProdutoFornecedores/>
           <Descricao>Consumidor Final</Descricao>
                </LC_Modalidade>Produto>
              </ListaModalidades>
            </LC_Cliente>Documentos>
           </Documentos>
         </LC_TicketCliente>TicketProduto>]]>
            <></liv:xmlTicketCliente>
        xmlTicketProduto>
		</liv:ManterClienteLCManterProdutoLC_Integracao_Xml>
    	</soapenv:Body>
</soapenv:Envelope>"

Exemplo da Configuração do campo de exportação A1B1_MSEXP via Configurador:


Image AddedImage Removed


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

Image Added

Possiveis erros de integração Live:

  • No Live o usuário pode configurar quais tipos de Produtos são aceitos. Neste caso o Live

...

  • Connector pode retornar esse erro:

BD: Não foi possível incluir/alterar o produto enviado pelo Connector: Rentech.Framework.Base.BusinessException: Não é permitido cadastrar produto com tipo informado.&#xD; at Rentech.PracticoLive.Global.Business.Produto.Atualizar(Guid publicDomain, Guid protectedDomain, Produto Produto, Guid idAgrupador)&#xD; at Rentech.PracticoLive.Global.Business.Produto.AtualizarConnector(Guid publicDomain, Guid protectedDomain, Produto Produto, DadosFiscaisProduto dadosFiscaisProduto)

...


Dica
titleFluxo de integração

Após ter realizado as configurações acima a integração do Cliente  Produto 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 o envio da publicação sera realizado a distribuição das publicações de Cliente para Produto para o Assinante Live na tabela MHR.

Com as distribuições realizadas o serviço RMIENVIA realizara o envio de Cliente  Produto para o Totvs Live.