Abaixo iremos mostrar como configurar o Processo de Venda no Protheus para integra-lo com o sistema Totvs Live. Siga o Passo a Passo. |
Realize este processo para tabela: SL1 - Orçamento |
Para alterar o tamanho do campo L1_UMOV na Tabela SL1 - Orçamento veja o exemplo abaixo:
Importante: O tamanho do campo deve ser igual 36.
Para integrarmos o Venda com o Totvs Live primeiramente é necessário acessar o cadastro do Processo para verificar se o Venda foi 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 Venda.
3- Verifique se foi criado as Informações abaixo:
Processo: Venda
Tabela: SL1
Chave: L1_FILIAL+L1_NUM
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: Venda
Ativo: Sim
Tipo Process: Busca
Filiais Proc: Informe o código das filiais que deseja Buscar o Processo
Configuração: Preencha esta campo de acordo com a sua URL da API Venda, como mostra o exemplo abaixo:
{ "url": "http://XXXXXXXX/XXXXXXX/LiveConnector/FacadeIntegracao.svc?wsdl", "operacao":"RecuperarCupomFiscalLC_Integracao_Xml", "tagretorno":"<LC_TicketCupomFiscal>", "SL2":"self:oRegistro:_Itens:_Lc_ItemCupomfiscal", "SL4":"self:oRegistro:_FormasPagamento:_Lc_FormaPagamento" } |
Layout Envio: Preencha este campo de acordo com o exemplo abaixo: Lembrando que é permitido utilizar macro execuções no Layout abaixo, após o &.
&"<?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:RecuperarCupomFiscalLC_Integracao_Xml> <liv:codigoSistemaSatelite>" + self:oConfAssin['sistemasatelite'] + "</liv:codigoSistemaSatelite> <liv:xmlIdentificacao><![CDATA[<?xml version='1.0' encoding='utf-8'?><LC_Identificacao><Chave>" + self:cToken + "</Chave><CodigoSistemaSatelite>" + self:oConfAssin['sistemasatelite'] + "</CodigoSistemaSatelite><Data/><Hora/></LC_Identificacao>]]></liv:xmlIdentificacao> </liv:RecuperarCupomFiscalLC_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
Obs: Os campos abaixo L1_CLIENTE e L1_LOJA são configuráveis conforme a sua necessidade após o &. No exemplo abaixo está configurado
para quando o Cliente for não identificado no Live-Conector no Protheus não vai existir De/Para gravado então será utilizado o Cliente Padrão
configurado no parâmetro MV_CLIPAD e MV_LOJPAD.
{ "L1_FILIAL": "&self:DePara('SM0', self:oRegistro:_CodigoLoja:Text, 1, 0)", "L1_CLIENTE": "&IIF( Empty(self:oRegistro:_IdentificacaoCliente:Text), SuperGetMv('MV_CLIPAD', .F., '000001'), self:DePara('SA1', self:oRegistro:_IdentificacaoCliente:Text, 2) )", "L1_LOJA": "&IIF( Empty(self:oRegistro:_IdentificacaoCliente:Text), SuperGetMv('MV_LOJPAD', .F., '01'), self:DePara('SA1', self:oRegistro:_IdentificacaoCliente:Text, 3) )", "L1_OPERADO": "C01", "L1_EMISSAO": "&DtoS( CtoD( SubStr(self:oRegistro:_DataHora:Text, 1, 10) ) )", "L1_NUMCFIS": "&self:oRegistro:_Numero:Text", "L1_DOC": "&cValToChar(self:oRegistro:_Numero:Text)", "L1_SERIE": "&self:oRegistro:_SerieNFCe:Text", "L1_KEYNFCE": "&IIF(self:oRegistro:_SiglaModelo:Text <> '2D', self:oRegistro:_ChaveNFCe:Text, '')", "L1_SERSAT": "&IIF(self:oRegistro:_SiglaModelo:Text == '59', self:oRegistro:_SerieNFCe:Text, '')", "L1_SERPDV": "&IIF(self:oRegistro:_SiglaModelo:Text == '2D', self:oRegistro:_NumeroImpressora:Text, '')", "L1_COMIS": 0, "L1_VLRTOT": "&Val(self:oRegistro:_ValorLiquido:Text)", "L1_VALBRUT": "&Val(self:oRegistro:_ValorBruto:Text)", "L1_VLRLIQ": "&Val(self:oRegistro:_ValorLiquido:Text)", "L1_VALMERC": "&Val(self:oRegistro:_ValorBruto:Text)", "L1_DESCONT": "&Val(self:oRegistro:_ValorDesconto:Text)", "L1_CGCCLI": "&self:oRegistro:_CPFCliente:Text", "L1_MSEXP": "&DtoS(Date())", "L1_CONDPG": "CN", "L1_TIPO": "V", "L1_TIPOCLI": "F", "L1_PDV": "&self:oRegistro:_NumeroPDV:Text", "L1_ORIGEM": "N", "SL2": [ { "L2_FILIAL": "&self:DePara('SM0', self:oRegistro:_CodigoLoja:Text, 1, 0)", "L2_PRODUTO": "&self:DePara('SB1', self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_CodigoProduto:Text, 2)", "L2_ITEM": "&Right( AllTrim(self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_NumeroItem:Text), TamSx3('L2_ITEM')[1])", "L2_DESCRI": "", "L2_VEND": "&IIF( Empty(self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_IdentificacaoVendedor:Text), SuperGetMv('MV_VENDPAD', .F., '000001'), self:DePara('SA3', self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_IdentificacaoVendedor:Text, 2) )", "L2_QUANT": "&Val(self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_Quantidade:Text)", "L2_VRUNIT": "&Val(self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_ValorUnitarioLiquido:Text)", "L2_VLRITEM": "&Val(self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_ValorTotalLiquido:Text)", "L2_LOCAL": "01", "L2_UM": "&self:DePara('SAH', self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_UnidadeMedida:Text, 2)", "L2_TES": "&SuperGetMv('MV_TESSAI', .F., '501')", "L2_CF": "", "L2_EMISSAO": "&DtoS( CtoD( SubStr(self:oRegistro:_DataHora:Text, 1, 10) ) )" } ], "SL4": [ { "L4_FILIAL": "&self:DePara('SM0', self:oRegistro:_CodigoLoja:Text, 1, 0)", "L4_DATA": "&DtoS( CtoD( SubStr(self:oRegistro:_DataHora:Text, 1, 10) ) )", "L4_VALOR": "&Val(self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_ValorPagamento:Text)", "L4_FORMA": "&self:DePara('SX5', self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_FormaPagamento:Text, 3)", "L4_ADMINIS": "&IIF( Empty(self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_CodigoAdministradoraCartao:Text), '', self:DePara('SAE', self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_CodigoAdministradoraCartao:Text, 2) )", "L4_AUTORIZ": "&AllTrim(self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_Autorizacao:Text)", "L4_NSUTEF": "&self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_NSU:Text", "L4_PARCTEF": "&self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_Parcela:Text" } ] } |
Exemplo da configuração do Processo Venda no assinante Live:
Após ter realizado as configurações acima a integração do Venda 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 da publicação sera realizado a distribuição das publicações de Venda para o Assinante Live na tabela MHR. Com as distribuições realizadas o serviço RMIENVIA realizara o envio de Venda 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 Venda. |