Árvore de páginas

Integrando Produto

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

Cadastrando o Processo de Produto

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

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

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

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

Processo: Produto

Tabela: SB1

Chave: B1_FILIAL+B1_COD  

Vinculando o Processo de Produto ao Assinante Live

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

2- Com o assinante Live previamente cadastrado, posicione no assinante Live e clique em alterar.

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

Processo: Produto

Ativo: Sim

Tipo Process: Envia

Filiais Proc: Informe o código das filiais que deseja Enviar o Processo

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

{
    "url": "http://XXXX.XXXX.XXXX.XXX.com/PracticoLive/LiveConnector/FacadeIntegracao.svc?wsdl",
    "operacao": "ManterProdutoLC_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 &.


Funçã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>

&"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:liv='http://LiveConnector/'>
	<soapenv:Header/>
	<soapenv:Body>
		<liv:ManterProdutoLC_Integracao_Xml>
			<liv:codigoSistemaSatelite>" + self:oLive:getSatelite(self) + "</liv:codigoSistemaSatelite>
			<liv:xmlTicketProduto><![CDATA[<?xml version='1.0' encoding='utf-8'?>
                    <LC_TicketProduto>
                        <Chave>" + self:oLive:getToken(self) + "</Chave>
                        <CodigoSistemaSatelite>" + self:oLive:getSatelite(self) + "</CodigoSistemaSatelite>
                        <Data>" + DtoS( Date() ) + "</Data>
                        <Hora>" + StrTran(Time(), ':', '') + "</Hora>
                        <Numero>" + RMITImeStamp() + "</Numero>
                        <Documentos>
                            <LC_Produto>
                                <NumeroSequencia>1</NumeroSequencia>
                                <Ativo>true</Ativo>
                                <CNPJFornecedor>" + IIF(!Empty(self:oPublica['B1_PROC']),Posicione('SA2', 1, self:oPublica['B1_PROC'] + self:oPublica['B1_LOJPROC'], 'A2_CGC'),'') + "</CNPJFornecedor>
                                <CEST>" + self:oPublica['B1_CEST'] + "</CEST>
                                <CNAE>" + self:oPublica['B1_CNAE'] + "</CNAE>
                                <CodigoAlternativo>" + IIF(Empty(self:oPublica['B1_ALTER']), self:oPublica['B1_CODBAR'], self:oPublica['B1_ALTER']) + "</CodigoAlternativo>
                                <CodigoClassificacaoFiscal>" + self:oPublica['B1_POSIPI'] + "</CodigoClassificacaoFiscal>
                                <CodigoItemServico/>
                                <CodigoPadrao>" + (self:cIdRetaguarda := self:oPublica['B1_COD']) + "</CodigoPadrao>
                                <CodigoPrincipal>" + self:oPublica['B1_CODBAR'] + "</CodigoPrincipal>
                                <CodigoProdutoPorFornecedor>" + self:oPublica['B1_CODBAR'] + "</CodigoProdutoPorFornecedor>
                                <DescontoMaximo>99.99</DescontoMaximo>
                                <DescontoVendaPromocao>99.99</DescontoVendaPromocao>
                                <Descricao>" + self:oPublica['B1_DESC'] + "</Descricao>
                                <DescricaoResumida>" + SubStr(self:oPublica['B1_DESC'], 1, 50) + "</DescricaoResumida>
                                <DescricaoTipoProduto>REVENDA</DescricaoTipoProduto>
                                <IPPT>" + self:oPublica['B1_IPPT'] + "</IPPT>
                                <IndicadorArredondamento>true</IndicadorArredondamento>
                                <InserirClassificacao>true</InserirClassificacao>
                                <PesoBruto>" + cValToChar(self:oPublica['B1_PESO']) + "</PesoBruto>
                                <PesoLiquido>" + cValToChar(self:oPublica['B1_PESO']) + "</PesoLiquido>
                                <PrecoCentralizado>true</PrecoCentralizado>
                                <QuantidadeCasaDecimal>0</QuantidadeCasaDecimal>
                                <QuantidadeCasaDecimalValor>0</QuantidadeCasaDecimalValor>
                                <QuantidadeMultiplaCompra>0</QuantidadeMultiplaCompra>
                                <SiglaUnidadeMedida>" + self:oPublica['B1_UM'] + "</SiglaUnidadeMedida>
                                <SituacaoTributariaOrigem>" + IIF(Empty(self:oPublica['B1_ORIGEM']),'0',self:oPublica['B1_ORIGEM']) + "</SituacaoTributariaOrigem>
                                <SituacaoVenda>true</SituacaoVenda>
								<Classificacoes>
									<LC_ClassificacaoProduto>
										<DescricaoClassificacao>TESTE</DescricaoClassificacao>
										<DescricaoTipoClassificacao>MARCA</DescricaoTipoClassificacao>
									</LC_ClassificacaoProduto>
								</Classificacoes>
                                <UnidadesNegocio/>
                                <ProdutoFornecedores/>
                            </LC_Produto>
                        </Documentos>
                    </LC_TicketProduto>]]></liv:xmlTicketProduto>
		</liv:ManterProdutoLC_Integracao_Xml>
	</soapenv:Body>
</soapenv:Envelope>"

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




Exemplo da configuração do Processo 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.&#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)


Fluxo de integração

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

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