Neste artigo você será capacitado a integrar vendas através da mensagem RetailSales. |
1.1- Primeiramente é imprescindível que smartclient seja 32 bits para uso do SIGALOJA, podendo usar o Appserver 64 bits. --revisar
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.
Para mais informações sobre as rotinas e forma de configuração esta disponível na documentação: Camada do EAI.
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 Vtex 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 para geração de pedido de venda liberado para faturamento, ou seja, sem nenhum tipo de bloqueio financeiro. | FI|CC|R$ | Importante: Caso o cenário de recebimento de pedido com forma de pagamento - boleto já pago na origem o parâmetro deve ser configurado como BO, e não BOL como aparece na tabela SX5. ---FAVOR TESTE PARA IDENTIFICAR SE AINDA PERSISTE O BO |
| 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.1- Para que o Protheus possa receber a mensagem RetailSales é necessário realizar o cadastro dos seguintes adapters: LOJA701 e LOJA704. Para 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:

Esta rotina é utilizada para identificar as lojas e o estoque (armazém) que sera integrada na MP - ItemReserve, assim poderá parametrizar o estoque de uma loja diferente daquela em que a venda está sendo efetuada, por exemplo. 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.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:

5.3- Quais os De/Para utilizados no processamento da mensagem RetailSales?

O De/Para deve ser realizado a partir da bloco json recebido na MP - RetailSales, colocando a informação recebida no valor externo, como mostra no exemplo:
"SaleCondition": [
{
"UniqueSerialNumber": "745492",
"DateOfPayment": null,
"PaymentValue": 105,
"PaymentMethodCode": "CC",
"FinancialManagerCode": "CAR"
}
] |



Apos ter realizado as configurações acima a integração de Venda - RetailSales seguira os seguintes fluxos:
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?
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
{
"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
}
} |