Histórico da Página
Nota | ||
---|---|---|
| ||
Para utilização da mensagem RetailSales via integração com VTEX verifique antes Integração Protheus x VTEX - Via Mensagem Padronizada |
Dica | ||
---|---|---|
| ||
Neste artigo você será capacitado a integrar vendas através da mensagem RetailSales. |
1- Configurações iniciais.
1.1- Primeiramente é imprescindível que smartclient seja 32 bits para uso do SIGALOJA, podendo usar o Appserver 64 bits.
1.2- Para que o Protheus seja capaz de receber a mensagem RetailSales o serviço REST deve estar configurado em seu ambiente: Configuração REST. Para mais detalhes sobre o conceito de um serviço REST clique aqui.
1.3- Visando evitar erros do tipo, "String size overflow" é imprescindível configuração do Appserver e DBAccess, para suportar a mensagem RetailSales com até 30MB, para realizar esta configuração Clique aqui.
1.4- Para que o envio e recebimento das mensagens assíncronas seja realizado, é necessário efetuar o cadastro das rotinas FWEAIRECE /FWEAISEND, no Schedule Protheus:
FWEAISEND: Esta rotina é exclusiva para o envio das mensagens da fila do EAI. O agendamento desta rotina é realizado por Empresa cadastrada no sistema. No envio da mensagem, um canal de comunicação é aberto com o webservice do produto integrado, e esta comunicação é encerrada após o recebimento da mensagem de retorno (no caso das Mensagens Única Totvs, após o recebimento da ReceiptMessage, indicando que que o processo ocorreu corretamente) ou por timeout (mensagem com status de falha).
FWEAIRECE: Esta rotina é exclusiva para o recebimento das mensagens do EAI Protheus. Quando configurada esta rotina inicia o processamento das mensagens disponíveis para processamento na fila do EAI Protheus.
2- Parâmetros
2.1- No Configurador (SIGACFG), acesse Ambientes/Cadastros/Parâmetros (CFGX017).
2.2- Configure\Crie os parâmetros abaixo:
Parâmetro | Tipo | Descrição | Exemplo de Conteúdo | Observação |
---|---|---|---|---|
MV_EAIMTTH | N | Numero de Threads para processar mensagens | 4 | Defina a quantidade de threads de acordo com a capacidade do seu servidor. Ex: Recomendado 8 threads e no mínimo de 4 threads para ter uma boa Performance. |
MV_LJECOMO | L | E-commerce CiaShop .T. (Ativo) .F. (Desativado)
| .F. | Colocar obrigatoriamente falso (.F.) |
MV_LJECOMM | L | Identifica que o sistema utiliza eCommerce .T. (Ativo) .F. (Desativado)
| .F. | Colocar obrigatoriamente falso (.F.) |
MV_TABPAD | C | Preço Padrão para digitação de vendas | 001 | Deve possuir o código cadastrado na tabela de preços (DA0) para referência. Importante: Esse parâmetro não define regras de preço para o E-commerce, o preço recebido via integração não é modificado, esse parâmetro é necessário por regras do módulo SIGALOJA. |
MV_RESEST | L | Indica se o estoque deve ser reservado para clientes que possuem bloqueio de credito. | .T. | Recomenda-se habilitar esse parâmetro com integração CiaShop para gerar a liberação do pedido e reservar o estoque mesmo quando o crédito estiver bloqueado(Boleto por exemplo). Dessa forma é possível carregar automaticamente o Lote e Sublote de produtos na liberação do Pedido para itens que controlam Lote mas os mesmos não foram informados. |
MV_LJIFPLI | C | Define as formas de pagamento | FI|CC|R$ | Essa é uma regra de negócio que deve ser definida de acordo com a empresa. Importante: Para formas de pagamento boleto colocar BO, pois o campo no orçamento somente recebe 2 posições. |
MV_LJGERSC | N | Se utiliza o conceito de gerar Solicitação de Compras para reserva sem estoque. | 4 | Para MarketPlace como o Pedido já vem fechado recomenda-se o uso deste parâmetro = 4 para permitir reservar mesmo sem estoque. Obs: As configurações para geração automática de solicitação de compra não são compatíveis para a integração do e-commerce |
MV_LJTESPE | C | Define qual o TES será utilizado para a geração do Pedido de Venda por meio da rotina Venda Assistida. O parâmetro pode ser macro-executado. | 501 | O sistema considera as regras da rotina TES Inteligente (MATA089) para eleger um TES considerando somente o cadastro do tipo de operação (campo FM_TIPO) “V” IDENTIFICACAO DE ENTREGAS FUTURAS. Caso não seja eleito um TES automaticamente, seja pela ausência do TES Inteligente ou pela não-adequação às regras, o TES informado nesse parâmetro será utilizado na geração do Pedido de Venda. Esse TES não deve gerar movimento financeiro (Campo Gera Dupl. = Não). Esse parâmetro também permite executar funções de usuário para definir qual TES o sistema deverá considerar para geração do pedido de venda. Para executar uma função de usuário por meio desse parâmetro, basta incluir o & antes da função de usuário. Se a função do usuário retornar um TES, este será utilizado no pedido de venda, desconsiderando o TES inteligente. |
MV_LJPEDVE | L | Define a utilização da emissão de Pedidos de Venda através da rotina de Venda Assistida. | .T. | Se o parâmetro MV_LJPEDVE estiver configurado como .F., o tratamento realizado será o mesmo realizado anteriormente, ou seja, apenas estarão disponíveis as opções 1-Retira Posterior e 2- Retira. Neste caso a geração de Pedidos de Vendas no módulo de Faturamento não estará disponível, e a opção padrão será 2-Retira. |
MV_LJCONDP | C | Determina a Condição de Pagamento que será utilizada para a emissão do Pedido de Venda através da rotina de Venda Assistida. Esta condição de pagamento é meramente informativa pois o TES utilizado não pode gerar movimento financeiro. | 001 | Importante: Deve-se verificar na tabela |
MV_LJTPFRE | C | Tipo de frete para o processo de integração de venda via mensagem padronizada RetailSales. | F | O parâmetro pode ser macro-executado. Para isso, ele deve iniciar com & e em seguida com a função a ser chamada. Exemplo: &U_EXEMPLO(). Caso não seja eleito um Tipo de Frete diferente do permite no campo será informado uma critica e não integrará a orçamento/venda. |
3- Adapter
3.1- Para que o Protheus possa receber a mensagem RetailSales é necessário realizar o cadastro dos seguintes adapters: LOJA704 e LOJA704. Pra mais informações de como cadastrar um adapter Clique aqui.
3.2- Abaixo um exemplo do cadastro do adapter LOJA704:
3.3- Abaixo um exemplo do cadastro do adapter LOJA701:
4- Configurações no modulo Controle de Lojas (Identificação de Lojas)
Dica | ||
---|---|---|
| ||
Esta rotina é utilizada para identificar as lojas de uma rede que trabalha de forma integrada, ou seja que pode efetuar a venda de um produto que faz parte do estoque de uma loja diferente daquela em que a venda está sendo efetuada. Assim, se o produto que o cliente deseja não estiver disponível no estoque da loja em que está sendo atendido, é possível verificar o estoque de outras lojas (devidamente identificadas nesse cadastro) e reservar itens do estoque dessas lojas, atendendo assim, a demanda do cliente. |
4.1- No modulo 12 (Controle de Lojas) acesse, Atualizações/ Gerencia de Vendas/ Identificação de Lojas gerencia.
4.2- Abaixo um exemplo do cadastro simples de Identificação de Lojas:
5- De/Para
5.1- Para que serve um De/Para?
Devido a integração de dois sistemas diferentes nem sempre temos códigos do mesmo produto iguais entre os dois sistemas. Com isso o De/Para é muito importante, pois recebe um código do sistema externo e relaciona com o código do produto no Protheus.
5.2- Onde realizo o cadastro do De/Para?
No modulo Configurador acesse, Atualizações/ Schedule/ De/Para de Mensagem Unica. Abaixo um exemplo de como cadastrar um De/Para de produto:
- No campo Valor Externo é necessário informar o código que do produto no sistema externo
- No campo Valor Interno, deve ser informado o Código da Empresa|Filial|Código do produto. Caso sua tabela seja compartilhada não deve ser informado a Filial na composição do Valor Interno.
5.3- Quais os De/Para utilizados no processamento da mensagem RetailSales?
- Vendedor
- Cliente
- Produto
- Armazém/Estoque
- Administradora Financeira
- Reserva
- Transportadora
- Estação de Trabalho
- Operador de Caixa
- Forma de Pagamento
6- Fluxo da integração da mensagem RetailSales
Apos ter realizado as configurações acima a integração de Venda - RetailSales seguira os seguintes fluxos:
- ItemReserve - Com a venda realizada na plataforma do E-Commerce sera disparado uma Mensagem Padronizada de Reserva de itens - Produtos no Protheus, essa reserva por sua vez ira percorrer o processo configurado pelo modulo estoque, podendo retirar do estoque o que foi enviado na MP - ItemReserve.
- CustomerVendor - Apos a confirmação de Reserva de Itens é disparado uma Mensagem Padronizada de Clientes para o Protheus. A MP de Clientes pode ser de inclusão ou de alteração.
- RetailSales - Apos a confirmação de inclusão ou alteração de Cliente é disparado uma Mensagem Padronizada de Vendas para o Protheus. O processo de inclusão do orçamento das tabelas SL1, SL2 e SL4 passa por toda a validação de registros do modulo SIGALOJA. O registro totalmente validado é incluído para próxima etapa, quaisquer informações invalidas identificado nesse processo ira retornar uma critica a integração E-Commerce.
- Serviço Gravabatch - Esse serviço é responsável pelo processamento do orçamento das tabelas incluídas pela MP - RetailSales. 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 FR.
Importante: Apos explodir o orçamento SL1 o registro Pai é atualizado o campo L1_SITUA = FR e criará o registro filho com o campo L1_SITUA em branco. Qualquer mudança desses registros falhará no envio da tag RetailSalesInternalId na próxima MP - DocumentTraceAbilityOrder.
Para auxiliar na analise de erros ou criticas é possível habilitar o log do loja, abaixo segue a documentação do log:
SIGALOJA 0290 Quais são os logs auxiliares Protheus Varejo?
- DocumentTraceAbilityOrder - O Rastreio do Pedido de Vendas é enviado do sistema Protheus, e será integrado com o sistema VTEX no momento do faturamento do pedido de venda, gerando o documento de saida. Link da MP - Rastreio de Pedido de Venda
8- Relacionamento entre Orçamento, Pedido de Venda e Contas a Receber
OBSPH:
**** Alterar o item para Pedido e criar subitens para cada tema, exemplo: ****
Relacionamento entre tabelas de Orçamento(Venda Assistida), Pedido de Venda(Faturamento) e Contas a Receber(Financeiro)
Colocar motivo de não permitir alteração de pedido no Faturamento.
Para encontrar os Pedido de Venda (SC5) e Contas a Receber (SE1) a partir do Orçamento (SL1) pode ser realizado dos campos:
SL1 - L1_FILIAL, L1_ECPEDEC, L1_DOCPED, L1_SERPED
SC5 - C5_FILIAL, C5_PEDECOM
SE1 - E1_FILIAL, E1_PREFIXO, E1_NUM
Relacionamento entre as tabelas e campos:
L1_ECPEDEC = C5_PEDECOM
L1_DOCPED = E1_NUM
L1_SERPED = E1_PREFIXO
8- Exemplo da mensagem RetailSales
Bloco de código | ||||
---|---|---|---|---|
| ||||
{ "Header": { "GeneratedOn": "Thu, 23 Apr 2020 17:02:20 GMT", "BranchId": "D MG 01", "DeliveryType": "async", "ProductName": "ECOMMERCE", "Type": "BusinessMessage", "Transaction": "RetailSales", "Version": "2.000", "UUID": "61e91b9e-e030-40d6-b0fd-dcf63e81c966", "SubType": "Event", "Event": "upsert", "CompanyId": "T1", "SourceApplication": "ECOMMERCE", "ProductVersion": "1.0.0" }, "Content": { "items": null, "OperatorCode": "AUTOMATICO", "ECommerceOrder": "1027293590055-01", "Event": "upsert", "NetPrice": 203, "InternalId": "15da928b-9e88-4947-a508-8cdd56beabd9", "CarrierInternalId": "01", "ListOfSaleItem": { "SaleItem": [ { "ItemOrder": 1, "ItemCode": "d077bf8a-bbbb-4549-9b00-1a203cfe4428", "UnitPrice": 18.6, "ItemDeliveryType": "3", "ItemReserveInternalId": "15da928b-9e88-4947-a508-8cdd56beabd9", "ItemInternalId": "d077bf8a-bbbb-4549-9b00-1a203cfe4428", "ItemPrice": 93, "InternalId": "C14B0CB7AE00430C86475D908AAB843A", "FreightValueProrated": 5, "OperationCode": "V", "Quantity": 5 }, { "ItemOrder": 2, "ItemCode": "69dbb151-bbe6-4547-853a-0342ace00eab", "UnitPrice": 55, "ItemDeliveryType": "3", "ItemReserveInternalId": "15da928b-9e88-4947-a508-8cdd56beabd9", "ItemInternalId": "69dbb151-bbe6-4547-853a-0342ace00eab", "ItemPrice": 55, "InternalId": "77B3D9FC812B47148AF774F44F9C6EF7", "FreightValueProrated": 5 "OperationCode": "V", "Quantity": 1 }, { "ItemOrder": 3, "ItemCode": "79f93baf-39ac-40de-ae73-007a256dda31", "UnitPrice": 55, "ItemDeliveryType": "3", "ItemReserveInternalId": "15da928b-9e88-4947-a508-8cdd56beabd9", "ItemInternalId": "79f93baf-39ac-40de-ae73-007a256dda31", "ItemPrice": 55, "InternalId": "F4A61206DEF543E0A613EB63D1141E1D", "FreightValueProrated": 5, "OperationCode": "V", "Quantity": 1 } ] }, "StationSalePointInternalId": "AUTOMATICO", "ListOfSaleCondition": { "SaleCondition": [ { "UniqueSerialNumber": "004112", "DateOfPayment": null, "PaymentValue": 203, "PaymentMethodCode": "CC", "FinancialManagerCode": "CAR" } ] }, "DocumentCode": "1027293590055-01", "FreightValue": 15, "CarrierCode": "01", "IssueDateDocument": "2020-04-23T17:01:06.625349+00:00", "CustomerVendorInternalId": "44dca035-dbbe-4aef-8c1e-c2a4acb4f88a", "SaleType": "V", "GrossPrice": 203, "TotalPrice": 203, "PersonalIdentification": "1027293590055-01", "DiscountValue": 0 } } |