Histórico da Página
Dica | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
O Live não permite caracteres especiais na descrição do Produto, então inclua a função 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:
Exemplo da configuração do Processo Inventario Produto no assinante Live:
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.
 at Rentech.PracticoLive.Global.Business.Produto.Atualizar(Guid publicDomain, Guid protectedDomain, Produto Produto, Guid idAgrupador)
 at Rentech.PracticoLive.Global.Business.Produto.AtualizarConnector(Guid publicDomain, Guid protectedDomain, Produto Produto, DadosFiscaisProduto dadosFiscaisProduto)
...
Dica | ||
---|---|---|
| ||
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. |