Histórico da Página
Nota | ||
---|---|---|
| ||
|
Dica | ||
---|---|---|
| ||
Abaixo iremos mostrar como configurar o Processo de Venda no Protheus para integra-lo com o sistema Totvs Live. Siga o Passo a Passo. |
Dica | ||
---|---|---|
| ||
title | As inutilizações também são integradas através do processo de venda, do assinante LIVE, para mais detalhes: Inutilização NFCE Integrada LIVE | |
Nota | ||
Importante | !||
Realize este processo para tabela: SL1 - Orçamento |
Alterando tamanho do campo:
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.
Cadastrando o Processo de Venda
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
...
: No cenário de integração de TVFR x Protheus, quem é o responsável pelas vendas e inutilizações é o TVFR, ou seja, caso seja realizado inutilização direto no Protheus, não será integrado com o TVFR e irá acusar como falha no processo de conciliação de movimentações. |
Nota | ||
---|---|---|
| ||
Realize este processo para tabela: SL1 - Orçamento |
Nota | ||
---|---|---|
| ||
|
Nota | ||
---|---|---|
| ||
|
Alterando tamanho do campo:
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.
Cadastrando o Processo de Venda
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/ AssinantesProcessos.
2- Com o assinante Live previamente cadastrado, posicione no assinante Live e clique em alterar. Aguarde a criação automática do cadastro de processo referente ao Venda.
3- Verifique se foi criado as Informações abaixo3- Na guia Assinantes x Processos, preencha os seguintes campos:
Processo: Venda Venda
AtivoTabela: Sim SL1
Tipo ProcessChave: 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:
Bloco de código |
---|
{
"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 &.
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: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.
Dica | ||
---|---|---|
| ||
Caso seus códigos de Produto sejam iguais entre Live x Protheus não usar a função "DePara" na tag L2_PRODUTO. Exemplificando o uso da tag: "L2_PRODUTO": "&self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_CodigoProduto:Text" |
Dica | ||
---|---|---|
| ||
O tamanho e o preenchimento com zeros ( "0" ) a direita nesse campos respeita o tipo de documento, a partir da sigla do modelo (campo self:oRegistro:_SiglaModelo:Text) recebido pela integração. |
L1_FILIAL+L1_NUM
Vinculando o Processo de Venda 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: Venda
Ativo: Sim
Tipo Process: Busca
Filiais Proc: Informe o código de apenas uma filial para buscar o Processo.
Configuração: Preencha esta campo de acordo com a sua URL da API Venda, como mostra o exemplo abaixo:
Aviso | ||
---|---|---|
| ||
A tag ValeTroca deve ser preenchida com o código da forma de pagamento Vale Troca, é necessário verificar no Live qual o código correto. As notas de devolução, não devem ser transmitidas pelo TVFR, no fluxo de integração, essas notas são geradas no TVFR sem ocorrer a comunicação com a SEFAZ e são integradas no Protheus (consumo do método RecuperarNotaFiscalLC_Integracao_Xml) e transmitidas via JOB NF-e. Configurações TVFR para não transmitir a Nota de Devolução: IMPRIMEDOCUMENTO |
Bloco de código | ||
---|---|---|
| ||
{
"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",
"ValeTroca":"9",
"ChaveUni": [
"SerieNFCe",
"NumeroImpressora",
"SiglaModelo",
"Numero"
]
}
|
Layout Envio: Preencha este campo de acordo com o exemplo abaixo: Lembrando que é permitido utilizar macro execuções no Layout abaixo, após o &.
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:RecuperarCupomFiscalLC_Integracao_Xml>
<liv:codigoSistemaSatelite>" + self:oLive:getSatelite(self) + "</liv:codigoSistemaSatelite>
<liv:xmlIdentificacao><![CDATA[<?xml version='1.0' encoding='utf-8'?><LC_Identificacao><Chave>" + self:oLive:getToken(self) + "</Chave><CodigoSistemaSatelite>" + self:oLive:getSatelite(self) + "</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_LOJAPAD.
Dica | ||
---|---|---|
| ||
Caso seus códigos de Produto sejam iguais entre Live x Protheus não usar a função "DePara" na tag L2_PRODUTO. Exemplificando o uso da tag: "L2_PRODUTO": "&self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_CodigoProduto:Text" |
Dica | ||
---|---|---|
| ||
O tamanho e o preenchimento com zeros ( "0" ) a direita nesse campos respeita o tipo de documento, a partir da sigla do modelo (campo self:oRegistro:_SiglaModelo:Text) recebido pela integração. |
Bloco de código | ||
---|---|---|
| ||
{
"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('SM0', self:oRegistro:_CodigoLoja:Text,1,0)), self:DePara('SA1', self:oRegistro:_IdentificacaoCliente:Text, 2, 0,,, | ||
Bloco de código | ||
{ "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,0) )", "L1_LOJA": "&SuperGetMv('MV_LOJPAD', .F., '01')", "L1_OPERADO": "C01", "L1_EMISSAO": "&DtoS( CtoD( SubStr(self:oRegistro:_DataHora:Text, 1, 10) ) )", "L1_NUMCFIS": "&self:oRegistro:_Numero:Text", "L1_DOC": "&IIF(self:oRegistro:_SiglaModelo:Text == '59',StrZero(Val(self:oRegistro:_Numero:Text),6),IIF(self:oRegistro:_SiglaModelo:Text == '65',StrZero(Val(self:oRegistro:_Numero:Text),9),cValToChar(self:oRegistro:_Numero:Text)))", "L1_SERIE": "&IIF(ExistFunc('RMILjEsta'),RMILjEsta(self:DePara('SM0', self:oRegistro:_CodigoLoja:Text, 1, 0)), self:oRegistro:_SiglaModelo:Text, )", "L1_LOJA": "&IIF( Empty(self:oRegistro:_SerieNFCeIdentificacaoCliente:Text), self:oRegistro:_NumeroImpressora:TextSuperGetMv('MV_LOJAPAD', .F., '01',self:DePara('SM0', self:oRegistro:_NumeroPDVCodigoLoja:Text, .T.)1, Return .F.)", "L1_KEYNFCE": "&IIF(0)), self:DePara('SA1', self:oRegistro:_SiglaModeloIdentificacaoCliente:Text, <> '2D'3, 0,,, self:DePara('SM0', self:oRegistro:_ChaveNFCeCodigoLoja:Text, 1, ''0)) )", "L1_SERSATOPERADO": "&IIF(self:oRegistro:_SiglaModelo:Text == '59DePara('SA6', self:oRegistro:_SerieNFCeOperador:Text, ''2,0)", "L1_SERPDVEMISSAO": "&IIF(self:oRegistro:_SiglaModelo:Text == '2D', DtoS( CtoD( SubStr(self:oRegistro:_NumeroImpressoraDataHora:Text, '')"1, 10) ) "L1_COMIS": 0, )", "L1_VLRTOTNUMCFIS": "&Val(self:oRegistro:_ValorLiquidoNumero:Text)", "L1_VALBRUTDOC": "&ValIIF(self:oRegistro:_ValorBrutoSiglaModelo:Text)", "L1_VLRLIQ": "&== '59',StrZero(Val(self:oRegistro:_ValorLiquidoNumero:Text),6)", "L1_VALMERC": "&Val,IIF(self:oRegistro:_ValorBrutoSiglaModelo:Text)", "L1_DESCONT": "&== '65',StrZero(Val(self:oRegistro:_ValorDescontoNumero:Text)", "L1_CGCCLI": "&,9),cValToChar(self:oRegistro:_CPFClienteNumero:Text)))", "L1_MSEXPSERIE": "&DtoS(Date()self:LayEstAuto('LG_SERIE')", "L1_CONDPGKEYNFCE": "CN", "L1_TIPO": "V", "L1_TIPOCLI": "F", "L1_PDV&IIF(self:oRegistro:_SiglaModelo:Text <> '2D', self:oRegistro:_ChaveNFCe:Text, '')", "L1_SERSAT": "&IIF(ExistFunc('RMILjEsta'),RMILjEsta(self:DePara('SM0self:oRegistro:_SiglaModelo:Text == '59', self:oRegistro:_CodigoLojaNumeroImpressora:Text, 1, 0), '')", "L1_SERPDV": "&IIF(self:oRegistro:_SiglaModelo:Text == '2D', self:oRegistro:_SerieNFCeNumeroImpressora:Text, self:oRegistro:_NumeroImpressora:Text, '')", "L1_COMIS": 0, "L1_VLRTOT": "&self:oRegistro:_NumeroPDVValorLiquido:Text, .F.), Return .F.)", "L1_ORIGEM": "N", "SL2": [ { "L2_FILIAL": "&self:DePara('SM0'", "L1_VALBRUT": "&self:oRegistro:_ValorLiquido:Text", "L1_VLRLIQ": "&self:oRegistro:_ValorLiquido:Text", "L1_VALMERC": "&self:oRegistro:_ValorBruto:Text", "L1_DESCONT": "&IIF( Val(self:oRegistro:_ValorDesconto:Text) > 0, self:oRegistro:_CodigoLojaValorDesconto:Text, 1,0 0)", "L2_PRODUTO "L1_CGCCLI": "&self:oRegistro:_CPFCliente:Text", "L1_CONDPG": "CN", "L1_TIPO": "V", "L1_TIPOCLI": "F", "L1_ESPECIE": "&self:DePara('SB1', IIF(self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_CodigoProduto:Text, 2,0)", "L2_ITEM": "&Right( AllTrim(SiglaModelo:Text == '59','SATCE',IIF(self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_NumeroItem:Text), TamSx3('L2_ITEM')[1]SiglaModelo:Text == '65','NFCE',IIF(self:oRegistro:_SiglaModelo:Text == '55','SPED',self:oRegistro:_SiglaModelo:Text)))", "L2_VEND"L1_PDV": "&IIF( Empty(self:LayEstAuto('LG_PDV')", "L1_ORIGEM": "N", "SL2": [ { "L2_FILIAL": "&self:DePara('SM0', self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_IdentificacaoVendedor:Text), SuperGetMv('MV_VENDPAD', .F., '000001'), self:DePara('SA3', CodigoLoja:Text, 1, 0)", "L2_PRODUTO": "&self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_IdentificacaoVendedorCodigoProduto:Text, 2,0) )", "L2_QUANT", "L2_ITEM": "&ValRight( AllTrim(self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_QuantidadeNumeroItem:Text), TamSx3('L2_ITEM')[1])", "L2_VRUNITVEND": "&Val(selfIIF( Empty(self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_ValorUnitarioLiquidoIdentificacaoVendedor:Text)", "L2_VLRITEM": "&Val( SuperGetMv('MV_VENDPAD', .F., '000001'), self:DePara('SA3',self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_ValorTotalLiquidoIdentificacaoVendedor:Text, 2,0) )", "L2_LOCAL": "01", "L2_UM "L2_QUANT": "&Val(self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_Quantidade:Text)", "L2_VRUNIT": "&self:DePara('SAH', self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_UnidadeMedidaValorUnitarioLiquido:Text, 2,0)", "L2_TESVLRITEM": "&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": "&IIF(!Empty(self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_FormaPagamento:Text),self:DePara('SX5self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_ValorTotalLiquido:Text", "L2_DESCPRO": "&IIF( Val(self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_ValorDescontoItem:Text) > 0, self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_ValorDescontoItem:Text, 0 )", "L2_VALACRS": "&IIF( Val(self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_ValorDescontoItem:Text) < 0, Abs(Val(self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_ValorDescontoItem:Text)), 0 )", "L2_LOCAL": "&SuperGetMv('MV_LOCPAD', .F., '01')", "L2_UM": "&self:DePara('SAH', self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_UnidadeMedida:Text, 2,0)", "L2_TES": "&SuperGetMv('MV_TESSAI', .F., '501',self:DePara('SM0', self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_FormaPagamento:Text, 3),''CodigoLoja:Text, 1, 0))", "L4_ADMINIS "L2_CF": "", "L2_PRCTAB": "&IIF( Empty(self:oRegistro:_FormasPagamentoItens:_Lc_FormaPagamentoItemCupomfiscal[nItem]:_CodigoAdministradoraCartaoValorUnitarioBruto:Text), '', self:DePara('SAE', ", "L2_EMISSAO": "&DtoS( CtoD( SubStr(self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_CodigoAdministradoraCartao:Text, 2DataHora:Text, 1, 10) ) )" } ], "SL4": [ { "L4_AUTORIZFILIAL": "&AllTrim(self:DePara('SM0', self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_Autorizacao:TextCodigoLoja:Text, 1, 0)", "L4_DATA": "&DtoS( CtoD( SubStr(self:oRegistro:_DataHora:Text, 1, 10) ) )", "L4_NSUTEFVALOR": "&self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_NSUValorPagamento:Text", "L4_PARCTEF "L4_FORMA": "&IIF(!Empty(self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_ParcelaFormaPagamento:Text" } ] } | ||
Nota | ||
|
Exemplo da configuração do Processo Venda no assinante Live:
),self:DePara('SX5', self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_FormaPagamento:Text, 3),'')",
"L4_ADMINIS": "&IIF( Empty(self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_ProdutoEletronico:Text), '', self:DePara('SAE', self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_ProdutoEletronico:Text, 2,0) )",
"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"
}
]
} |
Nota | ||
---|---|---|
| ||
|
Exemplo da configuração do Processo Venda no assinante Live:
Dica | ||
---|---|---|
| ||
Após ter realizado as configurações acima a integração do Venda seguirá o seguinte fluxo: Serviço RMIBUSCA: Neste serviço o Protheus irá realizar a busca das vendas no sistema Totvs LIVE, e grava-las na tabela MHQ - Mensagens Publicadas. O Campo MHQ_CHVUNI será a chave do registro publicado e será composto pelas TAGs abaixo: LC_TicketCupomFiscal:Numero|SerieNFCe|NumeroImpressora|SiglaModelo|Numero Serviço RMIDISTRIB: Após as mensagens serem publicadas na tabela MHQ, o serviço RMIDISTRIB se encarregará de distribuir as vendas para seus assinantes, neste caso as mensagens serão distribuídas para o assinante Protheus, neste processo será gravado as distribuições na tabela MHR - Mensagens Distribuição Serviço RMIENVIA: Com as mensagens distribuídas para o assinante Protheus o serviço RMIENVIA é responsável por gerar a venda de cada mensagem distribuída. Neste momento é gravado as tabelas SL1, SL2 e SL4(Tabelas responsáveis pela venda) e caso a venda seja gerada com sucesso será gravado o numero da mesma no campo MHR_RETORN. Caso o seja encontrado algum erro no momento da geração da venda no Protheus, no campo MHR_ENVIO é gravado os dados que foram passados para gerar a venda e no campo MHR_RETORN é gravado o motivo da inconsistência na geração da venda. Serviço RMICONTROL: Com as vendas geradas nas tabelas SL1, SL2 e SL4, o campo L1_SITUA deve estar com o conteúdo IP (Integração Pendente), para que o serviço RMICONTROL realize as validações da venda. Caso seja encontrado alguma inconsistência na venda o campo L1_SITUA sera atualizado para IR (Integração com erro) e será gravado um log do motivo desta inconsistência na tabela MHL - Logs de Integração. Caso a venda seja validada com sucesso o campo L1_SITUA é atualizado para RX (Recebido pelo Server). Serviço do GravaBacth: Para as vendas que estejam campo L1_SITUA = RX, este serviço tem como objetivo: Gerar financeiro, Baixa de estoque, Livros fiscais etc. Caso seja encontrado alguma inconsistência no processamento deste serviço o campo L1_SITUA é atualizado para ER. Caso o processamento da venda seja finalizado com sucesso o campo L1_SITUA é atualizado para OK. |
Nota | ||
---|---|---|
| ||
Vendas do tipo troca seguirá o mesmo fluxo da venda como mencionado acima porém com um diferencial, Ao integrar venda do Live ao Protheus com a forma de pagamento Vale Troca, o valor do Vale Troca será gravado no campo L1_CREDITO e a forma de pagamento será desconsiderada da gravação na tabela SL4, assim como já funciona no Venda Assistida com uma venda com pagamento em NCC. Após o processamento da venda pelo serviço GRAVABATCH será gerado um titulo a receber já baixado do tipo NCC. Caso seja integrado uma troca cancelada no Protheus, será gerado um registro na tabela SL4 com a forma de pagamento R$, o titulo a receber gerado no Financeiro também é gerado com o tipo de pagamento em Dinheiro. Após isso a venda seguira os mesmos passos de uma venda cancelada. |
Nota | ||
---|---|---|
| ||
O Cancelamento de Venda tem como pré requisito que a venda a ser cancelada esteja integrada no Protheus e processada pelo serviço GravaBatch (L1_SITUA = OK), como informado na Dica de Fluxo de Integração feito isso o cancelamento seguirá o seguinte fluxo: Serviço RMIBUSCA: Neste serviço é realizado a busca das vendas no Totvs LIVE, o serviço identifica se a tag <Situacao> (Xml integrado do Live) é igual a C, Caso seja significa que se trata de um cancelamento, com isso é gravado um registro na tabela MHQ - Mensagens Publicadas com o campo MHQ_EVENTO = 2 (Cancelamento). Serviço RMIDISTRIB: Após a Publicação do cancelamento o serviço RMIDISTRIB se encarregará de distribuir o cancelamento da venda para o assinante Protheus, gerando um registro na tabela MHR - Mensagens Distribuição. Serviço RMIENVIA: Realizado a distribuição, o serviço RMIENVIA inclui as informações do cancelamento da venda na tabela SLX - Log Cancelamento x Devolução. Serviço RMICONTROL: Com as informações do cancelamento inseridos na tabela SLX - Log Cancelamento x Devolução este serviço realiza a leitura das informações e em seguida é executado a rotina padrão de cancelamento LOJA140, com isso realizando o cancelamento da venda no Protheus | ||
Dica | ||
| ||
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. |