Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Nota
titleImportante

Para utilização da mensagem RetailSales via integração com VTEX verifique antes Integração Protheus x VTEX - Via Mensagem Padronizada

Dica
titleInformações:

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 RESTPara 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âmetroTipoDescriçãoExemplo de Conteúdo

Observação

MV_EAIMTTHN

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 threads para ter uma boa Performance.

MV_LJECOMOL

E-commerce CiaShop .T. (Ativo) .F. (Desativado)

  • Integração Antiga
.F.Colocar obrigatoriamente falso (.F.)
MV_LJECOMML

Identifica que o sistema utiliza eCommerce .T. (Ativo) .F. (Desativado)

  • Integração Antiga
.F.Colocar obrigatoriamente falso (.F.)
MV_TABPADCPreço Padrão para digitação de vendas001Deve 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_RESESTLIndica 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_LJIFPLICDefine 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_LJGERSCN

Se utiliza o conceito de gerar Solicitação de Compras para reserva sem estoque.

SIGALOJA 0357 Qual a finalidade do parâmetro MV_LJGERSC ?

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_LJTESPECDefine 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_LJPEDVELDefine 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_LJCONDPC

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.

001Importante: Deve-se verificar na tabela 
MV_LJTPFRE CTipo 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
titleO que é Identificação de Lojas?

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 - 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
themeEclipse
titleJson - RetailSales
{
	"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
	}
}