Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Dica
titleInformações:

Neste artigo você será capacitado a integrar vendas tem informações sobre a integração de pedidos do e-commerce VTEX através da mensagem RetailSales.

A documentação completa com demais processos integrados com VTEX, deve ser consultado com o time de TOTVS Connector.

Qualquer outro tipo de uso da mensagem padronizada RetailSales, deverá ser alinhado previamente com o time de produto.

1- Configurações iniciais. 

1.1- Primeiramente é imprescindível que o smartclient seja 32 bits para uso do SIGALOJA, podendo usar o Appserver 64 bits.

...

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- Parâmetros/Ponto de Entrada

2.1- No Configurador (SIGACFG), acesse Ambientes/Cadastros/Parâmetros (CFGX017).

1.5- O pacote de expedição contínua do Varejo deverá estar atualizado, mais informações sobre Clique Aqui.

1.6- Somente versões vigentes são suportadas, conforme link de ciclo de vida do TOTVS Linha Protheushttps://suporte.totvs.com/portal/p/10098/ciclodevidacalendarios


Obs.: A integração com VTEX, faz uso de outras mensagens padronizadas, para mais informações acessar a documentação do time de FrameWork: Integração Protheus x VTEX - Via Mensagem Padronizada (EAI)

2- Parâmetros/Ponto de Entrada

2.1- No Configurador (SIGACFG), acesse Ambientes/Cadastros/Parâmetros (CFGX017).

2.2- Configure\2.2- Configure\Crie os parâmetros abaixo:

...

Determina a Condição de Pagamento que O parâmetro pode ser macro
Parâmetro/PETipoDescriçãoExemplo de Conteúdo

Observação

MV_LJECOMOL

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

  • Integração Antiga
.F.

Colocar obrigatoriamente falso (.F.)

Importante: Não existe compatibilidade para o funcionamento simultâneo das integração CiaShop e VTEX, para funcionar VTEX a integração com CiaShop deverá ser desligada.

MV_LJVFNFS L

Define a utilização da emissão de nota fiscal de simples faturamento na venda futura: .T. para habilitar ou .F. para desabilitar. Conteúdo padrão: .F.

.F.

Esse parâmetro é desconsiderado na integração não importa seu conteúdo, a jornada de simples faturamento não é utilizada pelo e-commerce.

MV_MV_LJECOMML

Identifica que o sistema utiliza E-commerce .T. (Ativo) .F. (Desativado)

  • Integração AntigaAntigaOperationCode
.F.

Colocar obrigatoriamente falso (.F.)

Importante: Não existe compatibilidade para o funcionamento simultâneo das integração CiaShop e VTEX, para funcionar VTEX a integração com CiaShop deverá ser desligada.

MV_TABPADCMV_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 VTEX para gerar a liberação do pedido e reservar o estoque mesmo quando o crédito estiver bloqueado (Boleto por exemplo).

MV_LJIFPLIC

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: Somente informar as formas que tem confirmação de pagamento na camada do e-commerce. Exemplo: Caso utilize boleto sem a confirmação de pagamento pela VTEX, não deverá informar o boleto nesse parâmetro, caso isso ocorra, um pedido que ainda não teve o boleto pago, poderá ser liberado para o faturamento após a integração.

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 (Permite reserva sem estoque e não gera solicitação de compras) para permitir reservar mesmo sem o 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 

Importante: Quando configurado com a opção 4 é possível realizar reserva sem saldo para produtos que controlam Lote e/ou Endereçamento porém, ao integrar a venda o pedido gerado no faturamento ficará bloqueado por saldo em estoque (C9_BLEST = 02) devido ao produto ter controle de Lote e/ou Endereçamento. Com isso, é necessário realizar a inclusão de saldo por Lote(SB8) ou Endereçamento(SBF).

MV_LJTESPEC

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” IDENTIFICAÇÃO 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.

O parâmetro deve ficar obrigatoriamente .T. para emissão do pedido de venda, pois não temos integração para pagamento posterior.

Exemplo: boleto que não foi confirmado pagamento na camada e-commerce.

Para utilização da TES Inteligente, esse parâmetro deverá estar em branco.

MV_LJPEDVELDefine a utilização da emissão de Pedidos de Venda através da rotina de Venda Assistida..T.

O parâmetro deve ficar obrigatoriamente .T. para emissão do pedido de venda, essa configuração é padrão para seguir o fluxo de pedido com entrega no módulo de Venda Assistida. (SIGALOJA 0196 Como habilitar a emissão de pedido de venda na Rotina Venda Assistida?)

Obs.: Usuários CiaShop não precisavam habilitar esse parâmetro, pois o fluxo para geração do Pedido não era o mesmo do Venda Assistida.

MV_LJCONDPC

Determina a Condição de Pagamento que

MV_LJCONDPC

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: É necessário verificar se existe Condição de Pagamento cadastrada na tabela SE4 - Condições de Pagamento, para informar no parâmetro.

(SIGALOJA 0196 Como habilitar a emissão de pedido de venda na Rotina Venda Assistida?)

Obs: Os pagamentos contidos no XML  enviado a SEFAZ são com base os pagamentos do orçamento (Tabela SL4 ), sendo assim, a condição de pagamentos contida no pedido de venda está presente apenas para preencher uma obrigatoriedade do pedido de venda, não sendo utilizada para a geração do XML.

MV_LJTPFRE CTipo de frete para o processo de integração de venda via mensagem padronizada RetailSales.F

O parâmetro pode ser macro

MV_LJTPFRE CTipo de frete para o processo de integração de venda via mensagem padronizada RetailSales.F

-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. 

LJI701O1PEPonto de entrada para customizar os dados recebidos na integração.Documentação: Ponto de entrada LJI701O1

3- Adapter

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:

Image Removed

3.3- Abaixo um exemplo do cadastro do adapter LOJA701:

Image Removed

3.4- Abaixo um exemplo do cadastro do adapter LOJI701A:

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 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:

Image Removed 

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:

Image Removed

  • 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 - Não é necessário o de/para de vendedor, sendo usado o parâmetro MV_VENDPAD (Vendedor Padrão - Modulo SIGALOJA)
  • Cliente - Para integração VTEX o de/para é feito automaticamente, sendo usado para a MP - RetailSales (Orçamento/Venda). Documentação na pagina: Clientes - CustomerVendor
  • Produto - Na integração VTEX o de/para é feito automaticamente no momento da inclusão do produto no Protheus, sendo possível também ser realizado manualmente. Documentação na pagina: Cadastro de Produtos - Item
  • Armazém/Estoque - Documentação disponível na pagina: Saldo de Estoque - Stocklevel
  • Forma de Pagamento /Administradora Financeira - É necessário o de/para da tabela SX5 - Formas de pagamento, exemplo para tabela compartilhada: 

Image Removed

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:

Bloco de código
titleJson - RetailSales
"SaleCondition": [
					{
						"UniqueSerialNumber": "745492",
						"DateOfPayment": null,
						"PaymentValue": 105,
						"PaymentMethodCode": "CC",
						"FinancialManagerCode": "CAR"
					}
				]
  • Reserva - Na Integração VTEX de/para é feito automaticamente no recebimento da MP - ItemReserve. Documentação na pagina: Reserva de Item - ItemReserve
  • Transportadora - No caso da Transportadora não é necessário o uso do de/para, sendo possível usar o código recebido pela tag "CarrierCode". Agora queira usar o de/para poderá ser usado da seguinte forma pela tabela SA4:

Image Removed 

Image Removed

  • Estação de Trabalho - Na Integração VTEX  de/para é feito automaticamente no recebimento da MP - RetailSales, caso queira usar outra basta realizar o seguinte cadastro de/para de exemplo:

Documentação Cadastro de Estação de Trabalho (PDV) - ListOfStationSalePoint

Image Removed

  • Operador de Caixa - Na Integração VTEX  de/para é feito automaticamente no recebimento da MP - RetailSales, caso queira usar outra basta realizar o seguinte cadastro de/para de exemplo:

Image Removed

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

7- Relacionamento entre Orçamento, Pedido de Venda e Contas a Receber

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

Nota
titleImportante

A Tag ItemOrder no bloco itens não será considerado o seu valor recebido. O Protheus fará todo o controle de numeração para contemplarmos os pedidos com itens maiores de 100.

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
	}
}

9- Configuração de Administradora Financeira - Geração de Contas a Receber calculo de Data de Vencimento 

Para Formas de pagamento CC - Cartão de Credito o Protheus trabalha a partir do cadastro da Administradora Financeira.

Com a regra configurada na Administradora Financeira o calculo do vencimento será da seguinte forma: Data de Pagamento + Regra da administradora

Abaixo um exemplo de como ficará a data de vencimento:

Venda realizada no dia 05/12, primeira parcela 05/01, porém na Administradora Financeira o campo "Virar em"(AE_DIAS) está preenchido com número 30 e o vencimento do titulo será 05/01 + 30 dias (repetindo para todas as parcelas Ex: 05/02 + 30, 05/03 + 30.)

Links para melhor entendimento das configurações na Administradora Financeira:

...


Para maiores informações acesse: https://tdn.engpro.totvs.com.br/display/public/PROT/MV_LJTPFRE

MV_VALCNPJCParâmetro do módulo de Faturamento, define se permite ter mais de um cliente com o mesmo CNPJ1

Esse parâmetro é importante para a integração VTEX para permitir múltiplos endereços, mais informações no link:

https://tdn.totvs.com/display/public/PROT/DSERFAT-20178+DT+EAI+Adapter+CustomerVendor+-+Clientes

MV_VALCPFCParâmetro do módulo de Faturamento, define se permite ter mais de um cliente com o mesmo CPF1

Esse parâmetro é importante para a integração VTEX para permitir múltiplos endereços, mais informações no link:

https://tdn.totvs.com/display/public/PROT/DSERFAT-20178+DT+EAI+Adapter+CustomerVendor+-+Clientes

MV_LJE1NUMCDefine padrão de número na geração do título financeiro1Para mais informações: DT_MV_LJE1NUM
MV_LJTDESINPara controlar o tipo de desconto na integração RetailSales 0 = desligado padrão, 1 = desconto no campo Indenização.0Parâmetro usado para desconto no total da venda, onde muda o desconto no pedido de venda para o campo Indenização (C5_DESCONT).
MV_LJCTRESLVerifica se controla quantidade reservada para o cliente que efetuou a compra..T.Na criação da reserva a quantidade é empenhada no estoque, caso houver necessidade de cancelamento o empenho é retornado ao estoque.
LJI701O1PE

Ponto de entrada para customizar os dados recebidos na integração.

Seu uso não é obrigatório e o conteúdo customizado não é avaliado pelo time de produto, conforme ocorre com demais pontos de entrada do Protheus. Somente deverá ser utilizado se houver a necessidade de customizar algum dado recebido pela camada da VTEX. Ele permite alterar o valor das tags dos itens que foram recebidas pela mensagem única RetailSales.


Documentação: Ponto de entrada LJI701O1
LJI701O2PE

Ponto de entrada para liberação da alteração do pedido de venda, gerados pela mensagem única RetailSales


Documentação: Ponto de entrada LJI701O2
LJDEPSE1PE

Este Ponto de Entrada é acionado na finalização do Venda Assistida após a gravação do título a receber na tabela SE1, possibilitando que sejam realizadas gravações complementares no titulo inserido.

O registro inserido fica posicionado para uso no Ponto de Entrada.


Documentação: LJDEPSE1 - Ponto de entrada após a gravação do título a receber (SE1)
MV_DTLIMITNParâmetro para determinar a validade de um orçamento com ou sem reserva.
Documentação: https://centraldeatendimento.totvs.com/hc/pt-br/articles/115015439487-MP-SIGALOJA-Como-determinar-a-validade-de-um-or%C3%A7amento-com-ou-sem-reserva
MV_LJIPIFRN

Define se quando produto possui cálculo de IPI com frete na base, será realizado o cálculo reverso no valor do frete da venda integrada. 0 (Padrão) = Desativado , 1 = Ativado

0

Realiza o calculo reverso de IPI no valor do Frete, para mais detalhes: Cálculo de reversão de IPI no valor do frete

MV_LJCFPDPN

Determina se a funcionalidade de Confirmar Pedido Pendente esta ativa:

0 = Desabilitado

1 = Habilitado

2 = Automático

0

Documentação: DT Venda Assistida com opção Confirma Pedido Pendente 
Para pedidos tipo retira posterior deverá habilitar o parâmetro.
1 = Habilitado.


3- Adapter

3.1- Para que o Protheus possa receber a mensagem RetailSales é necessário realizar o cadastro dos seguintes adapters: LOJA701, LOJA704 e LOJI701A. Para mais informações de como cadastrar um adapter Clique aqui.

3.2- Abaixo um exemplo do cadastro do adapter LOJA704:

Image Added


3.3- Abaixo um exemplo do cadastro do adapter LOJA701:

Image Added


3.4- Abaixo um exemplo do cadastro do adapter LOJI701A:

Image Added

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 e o estoque (armazém) que será 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:

Image Added 

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:

Image Added

  • 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 - Não é necessário o de/para de vendedor, sendo usado o parâmetro MV_VENDPAD (Vendedor Padrão - Modulo SIGALOJA)
  • Cliente - Para integração VTEX o de/para é feito automaticamente, sendo usado para a MP - RetailSales (Orçamento/Venda). Documentação na pagina: Clientes - CustomerVendor
  • Produto - Na integração VTEX o de/para é feito automaticamente no momento da inclusão do produto no Protheus, sendo possível também ser realizado manualmente. Documentação na pagina: Cadastro de Produtos - Item
  • Armazém/Estoque - Documentação disponível na pagina: Saldo de Estoque - Stocklevel
  • Forma de Pagamento /Administradora Financeira - É necessário o de/para da tabela SX5 - Formas de pagamento, exemplo para tabela compartilhada: 

Image Added

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:

Bloco de código
titleJson - RetailSales
"SaleCondition": [
					{
						"UniqueSerialNumber": "745492",
						"DateOfPayment": null,
						"PaymentValue": 105,
						"PaymentMethodCode": "CC",
						"FinancialManagerCode": "CAR"
					}
				]




  • Reserva - Na Integração VTEX de/para é feito automaticamente no recebimento da MP - ItemReserve. Documentação na pagina: Reserva de Item - ItemReserve
  • Transportadora - No caso da Transportadora não é necessário o uso do de/para, sendo possível usar o código recebido pela tag "CarrierCode". Agora queira usar o de/para poderá ser usado da seguinte forma pela tabela SA4:

Image Added 

Image Added

  • Estação de Trabalho - Na Integração VTEX  de/para é feito automaticamente no recebimento da MP - RetailSales, caso queira usar outra basta realizar o seguinte cadastro de/para de exemplo:

Documentação Cadastro de Estação de Trabalho (PDV) - ListOfStationSalePoint

Image Added

Obs.: Por padrão a integração recebe na tag StationSalePointInternalId=AUTOMATICA, se desejar definir uma estação diferente, basta informar na TAG um valor de referência para de/para.

  • Operador de Caixa - Na Integração VTEX  de/para é feito automaticamente no recebimento da MP - RetailSales, caso queira usar outra basta realizar o seguinte cadastro de/para de exemplo:

Image Added


6- Fluxo da integração da mensagem

6.1 - RetailSales - item Entrega

Após ter realizado as configurações acima a integração de Venda - RetailSales seguirá os seguintes fluxos:

  • ItemReserve - Com a venda realizada na plataforma do E-Commerce será 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 reservar do estoque o que foi enviado na MP - ItemReserve.

  • Controle de Lote/Sublote/Endereçamento/Serie Com saldo em estoque suficiente - Caso na mensagem Padronizada ItemReserve não seja informado as tags referente à Lote, SubLote, Endereçamento e Serie, mencionadas a baixo:
    • "LotNumber" - Lote
    • "SubLotNumber" - SubLote
    • "AddressingItem" - Endereçamento
    • "SeriesItem" - Serie

O sistema vai identificar o Lote com a data de validade mais próxima e fará a reserva do produto para esse lote.
Caso a quantidade do produto seja superior ao do primeiro lote, o sistema identifica se tem outros lotes do mesmo produto, caso tenha será reservado 100 unidades do lote com a validade mais próxima e 2 unidades para o segundo lote com a validade mais próxima. Com isso gerando duas linhas do mesmo produto na tabela SC0, para lotes diferentes, como mostra o exemplo abaixo:

draw.io Diagram
bordertrue
diagramNameReserva
simpleViewerfalse
width800
linksauto
tbstyletop
lboxtrue
diagramWidth887
revision3


  • Controle de Lote/Sublote/Endereçamento/Serie sem saldo em estoque -  Caso o produto tenha controle de lote e/ou endereçamento e não tenha saldo nas tabelas SBF(Saldos por Endereço) e SB8(Saldos por Lote), quando configurado para permitir reserva sem estoque (MV_LJGERSC = 4), a reserva será gerada normalmente na tabela SC0 sem preencher os campos de Lote ou Endereço e a quantidade reservada será controlada somente na tabela SB2, nas tabelas SBF e SB8 não terá nenhum tipo de movimentação. Após gerar a reserva e integrar a venda o pedido de venda será gerado no faturamento e ficara bloqueado por saldo em estoque (C9_BLEST = 02). Com isso é necessário realizar a inclusão de saldo por Lote(SB8) ou Endereçamento(SBF) e realizar a liberação do estoque no modulo do Faturamente. Caso deseje realizar alguma alteração no Pedido para informar o lote ou o endereço do produto pode utilizar o Ponto de entrada LJI701O2.

(informação) Importante : Endereçamento e Serie o tratamento é o mesmo.

    • Para reservas integradas via MP - ItemReserve o cancelamento automático de reserva com a validade expirada (C0_VALIDA) está desabilitado.
    • O cancelamento de Reserva só será realizado via Mensagem Padronizada com o evento delete que se encontra dentro do Content no Json EVENT = DELETE
    • O cancelamento de reserva também poderá ser realizado via tela na rotina Controle de Reservas - MATA430. 
  • CustomerVendor - Após 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 - Após 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. 
    • Controle de Lote/Sublote/Endereçamento/Serie - Os itens do orçamento na tabela SL2 serão criados de acordo com os itens da reserva.

draw.io Diagram
bordertrue
diagramNameOrçamento
simpleViewerfalse
width800
linksauto
tbstyletop
lboxtrue
diagramWidth801
revision2

    • (informação) Importante : Somente é homologado pedidos com pagamento confirmado na plataforma VTEX, não é homologado pedido com boleto para controle de pagamento via Protheus.
    • 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: Após processar o orçamento na tabela 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?

Links com orientações de configuração do GravaBatch:

Configuração do Job LJGRVBATCH para processamento das vendas no Protheus

SIGALOJA 0057 Qual o conceito, Configuração e Correção do campo L1_SITUA (GravaBatch, LjGrvBatch, Integração ERP)?

  • DocumentTraceAbilityOrder - Rastreio do Pedido de Vendas é uma mensagem do módulo de Faturamento enviado do sistema Protheus, e será integrado com o sistema VTEX no momento do faturamento do pedido de venda, gerando o documento de saída. Link da MP - Rastreio de Pedido de Venda
  • Importante: Existe uma validação padrão dentro do módulo do Faturamento para não permitir alterar Pedido quando a origem é do Loja, o motivo é para evitar divergência de valores entre as tabelas do controle de loja e faturamento, porém, caso o cliente deseja realizar a alteração do pedido mesmo sabendo que pode ocorrer divergência de valores caso o valor total do pedido seja alterado, deve-se utilizar o ponto de entrada LJI701O2 (DVARLOJ1-5249 DT Criação de Ponto de Entrada (rotina Pedidos de venda)) para realizar a liberação da alteração.
  • Estrutura de gravação: A gravação do pedido segue o padrão utilizado pelo Venda Assistida, onde o registro recebido de orçamento, após o processamento do Job Gravabatch, irá gerar um orçamento filho para a geração do Pedido. Para mais informações sobre essa estrutura, acessar o link: Como é gravado uma venda com itens do tipo ENTREGA (pedido) e RETIRA ?
  • Xml da Nota Sefaz: O XML da sefaz é enviado na mensagem no bloco DocumentContent somente no status do Pedido "Empacotado" e a nota fiscal transmitida.

6.2 - RetailSales - Item Retira

Apos ter realizado as configurações acima a integração de Venda - OrderRetail seguirá os seguintes fluxos:

  • ItemReserve - Com a venda realizada na plataforma do E-Commerce será 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. Caso o Produto controle Lote, SubLote, Endereçamento e Serie, será realizado o mesmo tratamento informado no tópico ItemReserve do item  6.1 - RetailSales - item Entrega.
  • 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 as tabelas SL1,SL2 e SL4. 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 - DocumentTraceAbilityOrderRetail.

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?

  • Após a geração das tabelas SL1,SL2 e SL4acessando a rotina de Venda Assistida (LOJA701):
    • No menu "Outras Ações/Confirmar Pedido Pendente", efetue a liberação do pedido - que estará com o status na cor roxa - com isso será gerada a mensagem padronizada DocumentTraceAbilityOrderRetail com o Status "Empacotado" contendo os dados do retorno da sefaz no bloco DocumentContent.
    • Finalizando esse orçamento com item de pedido do tipo retira, será gerada a mensagem padronizada DocumentTraceAbilityOrderRetail com o Status "Entregue".
    • Efetuando o cancelamento do orçamento pai ( o filho não pode ser excluído pois é um pedido retira )  será gerada a mensagem padronizada DocumentTraceAbilityOrderRetail com o status "Cancelado".
    • Para maiores informações da mensagem DocumentTraceAbilityOrderRetail, acesse: DocumentTraceAbilityOrderRetail - Pedido Retira
Dica
titleDica!

As vendas do tipo Retira segue um processo de confirmação de integração, para mais detalhes acesse: Confirmação de pedido Retira Posterior


7 - Utilizando Tes no Produto ou Tes Inteligente 

Para gravação de dados do Orçamento (Tabela SL1), é necessário a amarração da TES no produto ou configuração da TES Inteligente.

 Para a utilização da TES no produto deve ser incluído no campo TS Padrao (Campo B1_TS) como mostra o exemplo abaixo:

Image Added



Agora para utilização da TES Inteligente por default da Mensagem Padronizada utilizamos a informação existente na tag "OperationCode": "01" dentro do bloco "SaleItem", assim procuramos na tabela SFM - TES Inteligente se existe uma regra com a operação 01, caso não exista a configuração infomara a seguinte mensagem: "Inconsistência no item numero do item TES não informada, verifique o Cadastro de Produto no Protheus campo B1_TS e/ou De-Para de TES(XXF) e/ou as configurações para TES Inteligente(DHJ e SFM) e/ou parâmetros MV_TESSERV e MV_TESVEND."

Seguir orientações do ERP para TES Inteligente, exemplo abaixo:


Image Added


7.1 - Cenário onde pode ser usado a Tes Inteligente no orçamento SL1, SL2 e/ou SC5, SC6

  • Orçamento SL1 e SL2: a TES inteligente configurada para o Tp. de Operação recebida na tag OperationCode "valor padrão 01" deve gerar financeiro, pois é nesse momento que as informações de pagamento serão gravadas.
  • Pedido de Venda SC5 e SC6: a TES inteligente configurada para o Tp. de Operação "V" não deve gerar financeiro, pois as informações de pagamentos, foram geradas no passo anterior, ou seja, na gravação do orçamento(SL1/SL2).

Importante: Para realizar a busca da TES Inteligente, o parâmetro MV_LJTESPE deverá estar em branco.

8- Geração do Contas a Receber (SE1)

A geração dos dados do Contas a Receber (SE1), ocorre após a execução do Job de Integração de Vendas (LJGRVBATCH) e depende da

TES-Tipo de Entrada e Saída configurada e segue a sequência:

  • Pesquisa da TES Inteligente rotina MaTesInt, caso não encontre, segue;
  • Pesquisa da TES na tabela SBZ-Indicadores de Produtos, caso não encontre, segue;
  • Pesquisa da TES no campo Tipo de Saída do Produto (B1_TS) de acordo com o produto encontrado, caso não encontre, segue;
  • Valida se a venda é um RPS, se sim, busca a TES no parâmetro MV_TESSERV, caso contrário;
  • Caso não ache seja RPS, busca a TES para o produto no parâmetro MV_TESVEND;
  • Ao final, se nenhuma TES for encontrada haverá retorno com mensagem de inconsistência e o processo de integração não ocorrerá;

Importante:

A TES - Tipo de Entrada e Saída configurada deve ter basicamente esses campos preenchidos:

  • Do tipo 'Saída': F4_CODIGO maior ou igual a 500;
  • Gera Duplicata (F4_DUPLIC) igual a S;
  • Gera Estoque (F4_ESTOQUE) igual a S;


Nos pedidos que contem itens do tipo "1-Retira Posterior(Campo L2_ENTREGA igual a 1) os orçamentos filhos terão

o Contas a Receber gerado após a finalização do orçamento como venda.

9- Relacionamento entre Orçamento, Pedido de Venda, Pedidos Liberados e Contas a Receber

Relacionamento entre tabelas de Orçamento(Venda Assistida), Pedido de Venda, Pedidos Liberados (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


Para encontrar os Pedidos Liberados (SC9) a partir do Pedido de Venda (SC5) pode ser realizado dos campos:

SC9 - C9_FILIAL, C9_PEDIDO


Relacionamento entre as tabelas e campos:

L1_ECPEDEC = C5_PEDECOM
L1_DOCPED = E1_NUM
L1_SERPED = E1_PREFIXO
C9_PEDIDO = C5_NUM

A tabela de cabeçalho da Nota (SF2) é gerada após o Faturar o Pedido pelo módulo do Faturamento, onde:

F2_DOC = C5_NOTA


Para identificar o registro de Orçamento (SL1) que gerou o título financeiro (SE1), relaciona-se:

E1_NUM + E1_PREFIXO = L1_DOCPED + L1_SERPED


Também é possível localizar/relacionar o título financeiro com base no número do documento do e-commerce (L1_ECPEDEC e C5_PEDECOM), para isso, é necessário que o campo E1_NRDOC possua o mesmo tamanho.

E1_NRDOC = C5_PEDECOM


10- Exemplo das mensagens

10.1 - RetailSales - com item do tipo "Entrega"

Nota
titleImportante

A Tag ItemOrder no bloco itens não será considerado o seu valor recebido. O Protheus fará todo o controle de numeração para contemplarmos os pedidos com itens maiores de 100.
A Tag WarehouseInternalid no bloco itens deve ser utilizada quando o Armazém do produto for diferente de '01 ' no Protheus.
Deve ser passado o Armazém cadastrado no De/Para da NNR exemplo: 
"WarehouseInternalid": "XX" 

Dica
titleNota Tecnica - 2020.006

Foi incluído no bloco principal da venda tags para gravação das obrigações fiscais da nota tecnica NT 2020.006:

Tag IntermediaryCode - codigo do intermediario com 6 caracteres para gravação no campo L1_INTERMD

Tag PresencialIndicator = codigo com 1 caracter para indicação do tipo de venda para gravação no campo L1_INDPRES

Aviso
titleMetodo de desconto

Para desconto deve-se ser rateado por item incluido na tag DiscountAmount e totalizado na tag DiscountValue.

Bloco de código
themeEclipse
titleJson - RetailSales tipo Entrega
{
	"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": "01",
					"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": "01",
					"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": "01",
					"Quantity": 1
				}
			]
		},
		"StationSalePointInternalId": "AUTOMATICO",
		"ListOfSaleCondition": {
			"SaleCondition": [
				{
					"UniqueSerialNumber": "004112",
					"DateOfPayment": null,
					"PaymentValue": 203,
					"PaymentMethodCode": "CC",
					"FinancialManagerCode": "CAR"
				}
			]
		},
		"DocumentCode": "1027293590055-01",
		"IntermediaryCode": "000001",
		"PresencialIndicator": "1",
		"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
	}
}

10.2 - RetailSales - com item do Tipo "Retira" 

Nota
titleImportante

A Tag ItemDeliveryType no bloco itens deve estar com 1, que para o Protheus sinaliza Pedido do Tipo Retira.

A Tag WarehouseInternalid no bloco itens deve ser utilizada quando o Armazém do produto for diferente de '01 ' no Protheus.
Deve ser passado o Armazém cadastrado no De/Para da NNR exemplo: 
"WarehouseInternalid": "XX" 



Bloco de código
themeEclipse
titleJson - RetailSales tipo Retira
{
	"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": "1",
					"ItemReserveInternalId": "15da928b-9e88-4947-a508-8cdd56beabd9",
					"ItemInternalId": "d077bf8a-bbbb-4549-9b00-1a203cfe4428",
					"ItemPrice": 93,
					"InternalId": "C14B0CB7AE00430C86475D908AAB843A",
					"FreightValueProrated": 5,
					"DiscountAmount": 5,
					"OperationCode": "01",
					"Quantity": 5
				},
				{
					"ItemOrder": 2,
					"ItemCode": "69dbb151-bbe6-4547-853a-0342ace00eab",
					"UnitPrice": 55,
					"ItemDeliveryType": "1",
					"ItemReserveInternalId": "15da928b-9e88-4947-a508-8cdd56beabd9",
					"ItemInternalId": "69dbb151-bbe6-4547-853a-0342ace00eab",
					"ItemPrice": 55,
					"InternalId": "77B3D9FC812B47148AF774F44F9C6EF7",
					"FreightValueProrated": 5,
					"DiscountAmount": 5,
					"OperationCode": "01",
					"Quantity": 1
				},
				{
					"ItemOrder": 3,
					"ItemCode": "79f93baf-39ac-40de-ae73-007a256dda31",
					"UnitPrice": 55,
					"ItemDeliveryType": "1",
					"ItemReserveInternalId": "15da928b-9e88-4947-a508-8cdd56beabd9",
					"ItemInternalId": "79f93baf-39ac-40de-ae73-007a256dda31",
					"ItemPrice": 55,
					"InternalId": "F4A61206DEF543E0A613EB63D1141E1D",
					"FreightValueProrated": 5,
					"DiscountAmount": 5,
					"OperationCode": "01",
					"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": 15
	}
}

10.3 - RetailSales - recorte do JSON com demonstrativo das Formas de Pagamento e suas variações de utilização

Nota
titleImportante

A seguir um recorte, um exemplo, da parte do JSON que é responsável pela forma de pagamento na integração Retail:

Tags do JSON:

ListOfSaleCondition - tag que define que existem formas de pagamento na venda, é uma tag obrigatória.

SalesCondition - é a lista com as formas de pagamentos, o seu conteúdo definem as formas de pagamento que foram utilizadas

  • _PAYMENTMETHODINTERNALID: Código da forma de pagamento utilizada, que pode ser padrão como CC/R$/CD/BOL ou uma forma que exista no De/Para de forma de pagamento;

  • _PAYMENTMETHODCODE:  Caso conteúdo da tag _PAYMENTMETHODINTERNALID esteja em branco ou sua forma não tenha sido encontrada no Protheus, segue a busca com esse código.
    Descrição: Código da forma de pagamento utilizada, que pode ser padrão como CC/R$/CD/BOL ou uma forma que exista no De/Para de forma de pagamento;

  • _FINANCIALMANAGERCODE: Código da Administradora Financeira, deve existir no De/Para do Protheus correspondendo a
    uma Administradora Financeira cadastrada ( tabela SAE ) ;
  • _PAYMENTVALUE: Valor da forma de pagamento que deve ser usado como separador, o caracter ponto final ".". Exemplo: 152.52;

  • _ACCOUNTRECEIVABLEDOCUMENTINTERNALID: Caso seja Integração Hotelaria e a forma de pagamento recebida seja "RA",
    será pesquisado o conteúdo de SE1-Contas à Pagar associado à forma, esse código deve estar cadastrado no De/Para (tabela XXF);

  • _DATEOFPAYMENT: Data do pagamento, no padrão YYYY-MM-DD (ano - mês - dia);

  • _EFTCANCELLATIONDATE: Usado para identificar a Data do cancelamento do TEF, no padrão YYYY-MM-DD (ano - mês - dia);

  • _EFTDATE: Usado para identificar Data do pagamento TEF, no padrão YYYY-MM-DD (ano - mês - dia)
    caso esteja completo será capturado a hora da transação, no padrão HH:MM:SS (horas : minutos : segundos);
    Exemplo: 2020-11-26T13:45:02 ;

  • _EFTDOCUMENT: Número do documento do TEF;

  • _EFTAUTORIZATION: Número da autorização do TEF;

  • _EFTCANCELLATIONDOCUMENT: Número do documento de cancelamento do TEF;

  • _EFTCANCELLATIONDATE:  Usado para identificar Data do cancelamento do TEF, no padrão YYYY-MM-DD (ano - mês - dia)
    caso esteja completo será capturado a hora da transação, no padrão HH:MM:SS (horas : minutos : segundos);
    Exemplo: 2020-03-11T08:03:13 ;

  • _EFTINSTITUTE: Instituto do TEF;

  • _UNIQUESERIALNUMBER: NSU proveniente do TEF;

  • _CARDNUMBER: Número do cartão;

  • _BANKCHECK: Código Banco do Cheque, deve existir no De/Para do Protheus correspondendo a um banco cadastrado na tabela SX5;
  • _SERIECHECK: Série do Cheque;

  • _AGENCYCHECK: Agência do Cheque;

  • _ACCOUNTCHECK: Conta do Cheque;

  • _DOCUMENTOFIDENTIFICATION: Documento, RG, do Cheque;

  • _PHONENUMBER: Número do Telefone para o cheque;

  • _EFTPARCEL: Parcela do TEF;


Exemplo com 1 (uma) forma de pagamento:

Bloco de código
themeEclipse
titleListOfSaleCondition - 1 Forma
		"ListOfSaleCondition": {
            "SaleCondition": [{
                    "DateOfPayment": "2020-11-26T00:00:00",
                    "PaymentValue": 50,
                    "PaymentMethodCode": "CC",
                    "FinancialManagerCode": "",
                    "UniqueSerialNumber": "145236",
                    "EftDate": "2020-11-26T13:45:02",
                    "EftAutorization": "123456789",
                    "EftInstitute": "VISA",
                    "EftDocument": "9985",
                    "EftParcel": "1"
                }
            ]
        }

Exemplo com 2 (duas) parcelas de 1 (uma) forma de pagamento:

Bloco de código
themeEclipse
titleListOfSaleCondition - 2 Formas
"ListOfSaleCondition": {
            "SaleCondition": [{
                    "DateOfPayment": "2020-11-26T00:00:00",
                    "PaymentValue": 25,
                    "PaymentMethodCode": "CC",
                    "FinancialManagerCode": "",
                    "UniqueSerialNumber": "145236",
                    "EftDate": "2020-11-26T13:45:02",
                    "EftAutorization": "123456789",
                    "EftInstitute": "VISA",
                    "EftDocument": "9985",
                    "EftParcel": "1"
                },
                {
                    "DateOfPayment": "2020-11-26T00:00:00",
                    "PaymentValue": 25,
                    "PaymentMethodCode": "CC",
                    "FinancialManagerCode": "",
                    "UniqueSerialNumber": "145236",
                    "EftDate": "2020-11-26T13:45:02",
                    "EftAutorization": "123456789",
                    "EftInstitute": "VISA",
                    "EftDocument": "9985",
                    "EftParcel": "2"                    
                }
            ]
        }

Exemplo com formas de pagamento diversas:

Bloco de código
themeEclipse
titleListOfSaleCondition - Várias Formas
"ListOfSaleCondition": {
            "SaleCondition": [{
                    "DateOfPayment": "2020-11-26T00:00:00",
                    "PaymentValue": 20,
                    "PaymentMethodCode": "CC",
                    "FinancialManagerCode": "",
                    "UniqueSerialNumber": "145236",
                    "EftDate": "2020-11-26T13:45:02",
                    "EftAutorization": "123456789",
                    "EftInstitute": "VISA",
                    "EftDocument": "9985",
                    "EftParcel": "1"
                },
                {
                    "DateOfPayment": "2020-11-26T00:00:00",
                    "PaymentValue": 20,
                    "PaymentMethodCode": "CC",
                    "FinancialManagerCode": "",
                    "UniqueSerialNumber": "145236",
                    "EftDate": "2020-11-26T13:45:02",
                    "EftAutorization": "123456789",
                    "EftInstitute": "VISA",
                    "EftDocument": "9985",
                    "EftParcel": "2"
                },
				{
                    "DateOfPayment": "2020-11-26T00:00:00",
                    "PaymentValue": 10,
                    "PaymentMethodCode": "R$"
                }
            ]
        }

10.4 - RetailSales - explicativo de tags do JSON com demonstrativo de como devem ser enviadas em determinados cenários

Nota
titleImportante

A seguir um recorte, um exemplo, da parte do JSON que é responsável pela forma de pagamento na integração Retail:

Tags do JSON - Cabeçalho:

  • GrossPrice - tag que define o valor bruto, gravado no campo L1_VALBRUT, tag obrigatória.

Composição da Tag: Soma dos itens, subtraindo os descontos(item/total) e considerar/somar os acréscimos(frete,seguro,despesa)

  • CommodityPrice - tag que define o valor da mercadoria, gravado no campo L1_VALMERC, tag obrigatória.

Composição da Tag: Soma dos itens (ItemTablePrice * Quantity), sem considerar descontos e/ou acréscimos.

  • TotalPrice - tag que define o valor total da venda, gravado no campo L1_VLRTOT, tag obrigatória.

Composição da Tag: Soma dos itens, subtraindo os descontos(item/total) e sem considerar/somar os acréscimos(frete,seguro,despesa)

  • NetPrice - tag que define o valor líquido, gravado no campo L1_VLRLIQ, tag obrigatória.

Composição da Tag: Soma dos itens, subtraindo os descontos(item/total) e considera/soma os acréscimos(frete,seguro,despesa)

  • DiscountValue - tag que define o valor do desconto no total, gravado no campo L1_DESCONT, tag facultativa - tem tratamento caso receba valor negativo, será considerado o valor absoluto positivo.

Composição da Tag: Valor do desconto no cabeçalho da venda

  • DiscountPercent - tag que define o percentual do desconto no total, gravado no campo L1_DESCNF, tag facultativa.
  • FreightValue - tag que define o valor do frete no total, gravado no campo L1_FRETE, tag facultativa.

Composição da Tag: Valor do frete total (soma FreightValueProrated)

  • IncreaseValue - tag que define o valor do acrescimo no total, gravado no campo L1_DESPESA, tag facultativa.

Composição da Tag: Valor do acrescimo total (soma IncreaseValueProrated)


Tags do JSON - Itens:

ItemTablePrice - tag que define o preço de tabela do produto, gravado no campo L2_PRCTAB, tag facultativa - caso não seja enviada ou zerada recebe o conteúdo da tag UnitPrice.

Quantity - tag que define a quantidade, gravado no campo L2_QUANT, tag obrigatória.

UnitPrice - tag que define o preço unitário do item, gravado no campo L2_VRUNIT, tag obrigatória.

ItemPrice - tag que define o valor do item, gravado no campo L2_VLRITEM, tag obrigatória - caso não seja enviada ou zerada é efetuada o cálculo da tags: Quantity * UnitPrice.

DiscountPercentage - tag que define o percentual do desconto do item, gravado no campo L2_DESC, tag facultativa.

DiscountAmount - tag que define o valor de desconto do item, gravado no campo L2_VALDESC, tag facultativa.

FreightValueProrated - tag que define o valor rateado de frete do total, nos itens, gravado no campo L2_VALFRE, tag facultativa.

IncreaseValueProrated- tag que define o valor rateado de acrescimo no itens, gravado no campo L2_DESPESA, tag facultativa.


Tags do JSON - Pagamento:

PaymentValue - tag que define o valor do pagamento, gravado no campo L4_VALOR, tag obrigatória.


PERGUNTAS 

1- Os valores de Frete são validados?

Sim, os valores das tags <FreightValue > (Cabeçalho) e a soma das tags <FreightValueProrated> (Itens), devem dar o mesmo valor, senão haverá rejeição da venda enviada.


2- Os valores finais da venda são validados ?

Sim, deve haver compatibilidade dos valores enviados, a soma: itens - descontos no itens + frete do item, deve ser igual a soma: valor venda - desconto no total + frete total, sendo ainda igual 

ao total em valor das formas de pagamento.


3- a tag <NetPrice> em uma venda SEM frete e tendo desconto no total, como devo enviar ?

Ela deve ser enviada com o valor líquido, ou seja subtraindo o desconto. 
Exe.: 
Produto no valor de $100
<FreightValue> = 0
<DiscontValue> = 10
<NetPrice> = 90


4- a tag <NetPrice> em uma venda COM frete e tendo desconto no total, como devo enviar ?

Ela deve ser enviada com o valor do produto somando o frete e subtraindo o desconto. 
Exe.: 
Produto no valor de $100 / Frete de $5
<FreightValue> = 0
<DiscontValue> = 10
<NetPrice> = 95
<FreightValue> = 5


5- Quando preencho a tag <DiscountValue> ?

Somente quando houver desconto no total


6- Quando preencho a tag <FreightValueProrated> ?

Somente quando a tag <FreightValue> for maior do que zero.


7- Como funciona quando tenho um do tipo IPI ?

A partir da TES - Tipo de Entrada e Saída enviada na tag <OperatorCode>, deve estar configurada para calcular o IPI tanto Bruto quanto Líquido.


8- Como funciona a tag <ItemPrice>, presente nos itens ?

No desconto total, deve ser enviado normalmente com o preço de tabela;

No desconto do item, deve ser enviado com o desconto do item dividido pela quantidade;

No frete, deve ser enviado normalmente com o preço de tabela.


9- Como funciona a tag <TotalPrice>, presente no cabeçalho ?

No desconto total, deve ser enviado normalmente com o preço de tabela subtraído do valor do desconto;

No desconto do item, deve ser enviado com o preço de tabela;

No frete, deve ser enviado normalmente com o preço de tabela com a adição do frete.


10.4.1 - Exemplo de envio - VENDA COM DESCONTO NO TOTAL (JSON recortado somente com a tags importantes para entendimento):

Preço Unitário = $10 / Desconto no Total = $5 / Quantidade = 2

Bloco de código
themeEclipse
titleContent - Venda com Desconto Total
"Content": {        
        "TotalPrice": 15,
        "DiscountValue": 5,
        "NetPrice": 15,
        "GrossPrice": 15,
        "CommodityPrice": 20,
        "FreightValue": 0,
		"ListOfSaleItem": {
            "SaleItem": [{
                    "Quantity": 2,
                    "ItemTablePrice": 10,
                    "UnitPrice": 10,
                    "ItemPrice": 20,
                    "FreightValueProrated": 0,
                    "DiscountAmount": 0,
                }
            ]
        },
		"ListOfSaleCondition": {
        "SaleCondition": [
            {
                "PaymentValue": 15,
                "PaymentMethodCode": "R$",
                "FinancialManagerCode": "",
                "DateOfPayment": "2021-06-18",
                "UniqueSerialNumber": null
            }
        ]
    }
}


10.4.2 - Exemplo de envio - VENDA COM DESCONTO NO ITEM (JSON recortado somente com a tags importantes para entendimento):

Preço Unitário = $10 / Desconto no Item = $5 / Quantidade = 2

- a tag <UnitPrice> : deve ser enviada, considerando: Preço de Tabela do Produto - (Valor de Desconto do Item / Quantidade)

- a tag <ItemPrice> : deve ser enviada considerando: (Preço Unitário * Quantidade) - Valor de Desconto do Item

Bloco de código
themeEclipse
titleContent - Venda com Desconto Total
"Content": {        
        "TotalPrice": 15,
        "DiscountValue": 0,
        "NetPrice": 15,
        "GrossPrice": 15,
        "CommodityPrice": 20,
        "FreightValue": 0,
		"ListOfSaleItem": {
            "SaleItem": [{
                    "Quantity": 2,
                    "ItemTablePrice": 10,
                    "UnitPrice": 7.5,
                    "ItemPrice": 15,
                    "FreightValueProrated": 0,
                    "DiscountAmount": 0,
                }
            ]
        },
		"ListOfSaleCondition": {
        "SaleCondition": [
            {
                "PaymentValue": 15,
                "PaymentMethodCode": "R$",
                "FinancialManagerCode": "",
                "DateOfPayment": "2021-06-18",
                "UniqueSerialNumber": null
            }
        ]
    }
}


10.4.3 - Exemplo de envio - VENDA COM FRETE (JSON recortado somente com a tags importantes para entendimento):

Preço Unitário = $10 / Desconto no Total = $0 / Frete = $15 / Quantidade = 2

Bloco de código
themeEclipse
titleContent - Venda com Desconto Total
"Content": {        
        "TotalPrice": 20,
        "DiscountValue": 0,
        "NetPrice": 35,
        "GrossPrice": 35,
        "CommodityPrice": 20,
        "FreightValue": 15,
		"ListOfSaleItem": {
            "SaleItem": [{
                    "Quantity": 2,
                    "ItemTablePrice": 10,
                    "UnitPrice": 10,
                    "ItemPrice": 20,
                    "FreightValueProrated": 15,
                    "DiscountAmount": 0,
                }
            ]
        },
		"ListOfSaleCondition": {
        "SaleCondition": [
            {
                "PaymentValue": 35,
                "PaymentMethodCode": "R$",
                "FinancialManagerCode": "",
                "DateOfPayment": "2021-06-18",
                "UniqueSerialNumber": null
            }
        ]
    }
}


10.4.4 - Exemplo de envio - VENDA COM FRETE  e desconto no TOTAL (JSON recortado somente com a tags importantes para entendimento):

Preço Unitário = $10 / Desconto no Total = $5 / Frete = $15 / Quantidade = 2

Bloco de código
themeEclipse
titleContent - Venda com Desconto Total
"Content": {        
        "TotalPrice": 30,
        "DiscountValue": 5,
        "NetPrice": 30,
        "GrossPrice": 30,
        "CommodityPrice": 35,
        "FreightValue": 15,
		"ListOfSaleItem": {
            "SaleItem": [{
                    "Quantity": 2,
                    "ItemTablePrice": 10,
                    "UnitPrice": 10,
                    "ItemPrice": 20,
                    "FreightValueProrated": 15,
                    "DiscountAmount": 0,
                }
            ]
        },
		"ListOfSaleCondition": {
        "SaleCondition": [
            {
                "PaymentValue": 35,
                "PaymentMethodCode": "R$",
                "FinancialManagerCode": "",
                "DateOfPayment": "2021-06-18",
                "UniqueSerialNumber": null
            }
        ]
    }
}


10.4.5 - Exemplo de envio - VENDA COM FRETE  e desconto no ITEM (JSON recortado somente com a tags importantes para entendimento):

Preço Unitário = $10 / Desconto no Item= $5 / Frete = $15 / Quantidade = 2

- a tag <UnitPrice> : deve ser enviada, considerando: Preço de Tabela do Produto - (Valor de Desconto do Item / Quantidade)

- a tag <ItemPrice> : deve ser enviada considerando: (Preço Unitário * Quantidade) - Valor de Desconto do Item

Bloco de código
themeEclipse
titleContent - Venda com Desconto Total
"Content": {        
        "TotalPrice": 30,
        "DiscountValue": 0,
        "NetPrice": 30,
        "GrossPrice": 30,
        "CommodityPrice": 35,
        "FreightValue": 15,
		"ListOfSaleItem": {
            "SaleItem": [{
                    "Quantity": 2,
                    "ItemTablePrice": 10,
                    "UnitPrice": 7.5,
                    "ItemPrice": 15,
                    "FreightValueProrated": 15,
                    "DiscountAmount": 5,
                }
            ]
        },
		"ListOfSaleCondition": {
        "SaleCondition": [
            {
                "PaymentValue": 30,
                "PaymentMethodCode": "R$",
                "FinancialManagerCode": "",
                "DateOfPayment": "2021-06-18",
                "UniqueSerialNumber": null
            }
        ]
    }
}


10.4.6 - Exemplo de envio - VENDA com Acrescimo  (JSON recortado somente com a tags importantes para entendimento):

Produto 1 - Preço Unitário = $700 + Acrescimo rateado = $41,92 ( o valor do proporcionalizado equivale a 83,84% do total da venda)

Produto 2 - Preço Unitário = $135 + Acrescimo rateado = $8,08 ( o valor do proporcionalizado equivale a 16,17% do total da venda)

total da Venda = $885 

Bloco de código
themeEclipse
titleContent - Venda Acrescimo
"Content": {
		"items": null,
		"GrossPrice": 885,
		"ECommerceOrder": "1200873417041-01",
		"StationSalePointInternalId": "AUTOMATICO",
		"NetPrice": 885,
		"CommodityPrice": 835,
		"InternalId": "30ed312c-9ff5-4939-a940-8b11021bfFA",
		"CarrierCode": "01",
		"ListOfSaleItem": {
			"SaleItem": [
				{
					"ItemOrder": 1,
					"XItemCode": "d077bf8a-bbbb-4549-9b00-1a203cfe6650",
					"UnitPrice": 700,
					"ItemDeliveryType": "3",
					"ItemReserveInternalId": "b1e5d0d4-ceee-4e3b-9808-1db111c2f7FC",
					"ItemInternalId": "d077bf8a-bbbb-4549-9b00-1a203cfe6650",
					"ItemPrice": 700,					
					"FreightValueProrated": 0,
					"OperationCode": "01",
					"Quantity": 1,
					"IncreaseValueProrated": 41.92
				},
				{
					"ItemOrder": 1,
					"XItemCode": "30ed312c-9ff5-4939-a940-8b11021beb7e",
					"UnitPrice": 135,
					"ItemDeliveryType": "3",
					"ItemReserveInternalId": "b1e5d0d4-ceee-4e3b-9808-1db111c2f7FC",
					"ItemInternalId": "30ed312c-9ff5-4939-a940-8b11021beb7e",
					"ItemPrice": 135,					
					"FreightValueProrated": 0,
					"OperationCode": "01",
					"Quantity": 1,
					"IncreaseValueProrated": 8.08
				}				
			]
		},
		"Event": "upsert",
		"ListOfSaleCondition": {
			"SaleCondition": [
				{
					"DateOfPayment": "2022-03-30T00:00:00",
					"PaymentValue": "885",
					"PaymentMethodCode": "CC",
					"FinancialManagerCode": "CARTAO",
					"UniqueSerialNumber": "",
					"EftDate": "",
					"EftAutorization": "",
					"EftInstitute": "",
					"EftDocument": ""
				}
			]
		},
		"DocumentCode": "000000595",
		"FreightValue": 0,
		"IncreaseValue": 50,		
		"IssueDateDocument": "2022-03-30T17:00:39.01118+00:00",
		"CustomerVendorInternalId": "c5a7a767-3bae-4f0c-af28-d1ed5ef58766",
		"TotalPrice": 835,
		"DiscountValue": 0,
		"SaleType": "V",
		"OperatorCode": "AUTOMATICO"
	}

11- Configuração de Administradora Financeira - Geração de Contas a Receber calculo de Data de Vencimento 

Para Formas de pagamento CC - Cartão de Credito o Protheus trabalha a partir do cadastro da Administradora Financeira.

Com a regra configurada na Administradora Financeira o calculo do vencimento será da seguinte forma: Data de Pagamento + Regra da administradora

Abaixo um exemplo de como ficará a data de vencimento:

Venda realizada no dia 05/12, primeira parcela 05/01, porém na Administradora Financeira o campo "Virar em"(AE_DIAS) está preenchido com número 30 e o vencimento do titulo será 05/01 + 30 dias (repetindo para todas as parcelas Ex: 05/02 + 30, 05/03 + 30.)

Links para melhor entendimento das configurações na Administradora Financeira:

Como configurar uma administradora financeira:

https://centraldeatendimento.totvs.com/hc/pt-br/articles/115012459768-MP-SIGALOJA-Como-cadastrar-uma-administradora-Financeira

----------

Como é definido o vencimento do titulo financeiro para formas com administradora financeira ?
https://tdn.totvs.com/pages/releaseview.action?pageId=525033971

----------
Como fixo o dia de vencimento das parcelas conforme o vencimento da primeira parcela?
https://tdn.totvs.com/pages/releaseview.action?pageId=225264318

----------
Gerar taxa da administradora financeira no contas a pagar?
https://tdn.totvs.com/pages/releaseview.action?pageId=224442986


11.1 - Configuração de campos para armazenar o NSU da transação TEF

Caso a numeração de NSU do TEF seja maior que o padrão do Protheus ( Tag UniqueSerialNumber da mensagem padronizada), os campos abaixo devem ser ajustados e possuir o mesmo tamanho:

Campos de tabelas do Varejo: L1_NSUTEF, L4_NSUTEF, LQ_NSUTEF

Campos de tabelas do Financeiro: E1_NSUTEF, MDK_NSUTEF, FIF_NSUTEF

Link com documentação sobre o conciliador do financeiro que utiliza esses campos: https://tdn.totvs.com/display/public/PROT/Conciliador+TEF+-+Financeiro+-+P12

Em caso de dúvidas sobre conciliação de pagamentos, deverá ser acionado o time de suporte do Financeiro. 

12- Tabela de Ocorrências na geração de Pedido de Venda: RetailSales

OcorrênciaMotivo

Ação

Estado de Cobrança não encontradoNão cadastrado estado de cobrança na filial Realizar o cadastro completo da filial corrente 
Documento não informado ou já existenteNão informado ou já usado o documento disponibilizado na tag DocumentCode Verificar no json recebido a falta ou documento já existe/usado.
Código da estação não encontrada Recebido MP uma estação diferente a cadastrada ou incluída no de/paraVerificar no json recebido se houve mudança ou de/para incorreto.
Cliente não informado, não encontrado Erro na integração do cliente, não encontrado de/para ou bloqueadoVerificar no json recebido o código na tag CustomerVendorInternalId e validar de/para de Cliente e/ou identificar se não esta bloqueado no cadastro de Cliente.
Data de Emissão não informada ou incorretaData de emissão divergente com o esperado ou faltante na tag IssueDateDocumentVerificar no json recebido a tag IssueDateDocument e verificar se a data recebida é maior dos parâmetros MV_ULMES e MV_DBLQMOV 
Valor total da Venda zeradaValor total da venda zerada na tag TotalPriceVerificar no json recebido o valor recebido na tag TotalPrice 
Valor liquido da venda zeradaValor liquido da venda zerada na tag NetPriceVerificar no json recebido o valor recebido na tag NetPrice 
Valor bruto da venda zeradaValor Bruto da venda zerada na tag GrossPriceVerificar no json recebido o valor recebido na tag GrossPrice 
Produto não informado ou não encontradoProduto não informado na tag ListOfSaleItemVerificar no json recebido o código no bloco a tag ListOfSaleItem e validar de/para de Produto e/ou identificar se não esta bloqueado no cadastro de Produto.
Item do produto não informado Item do produto não informado na tag ItemOrderVerificar no json recebido o valor na tag ItemOrder no bloco a tag ListOfSaleItem 

Quantidade do produto não informado 

Quantidade do produto não informado na tag QuantityVerificar no json recebido o valor na tag Quantity no bloco a tag ListOfSaleItem 
Preço Unitário do produto não informadoPreço Unitário do produto não informado na tag UnitPriceVerificar no json recebido o valor na tag UnityPrice no bloco a tag ListOfSaleItem 
CFOP do Produto não informadoCFOP do Produto não informado na tag OperationCodeVerificar no json recebido o valor na tag OperationCode no bloco a tag ListOfSaleItem 
Preço do Produto não informadoPreço de Produto não informado na tag ItemPriceVerificar no json recebido o valor na tag ItemPrice no bloco a tag ListOfSaleItem 
Tes do Produto não informadaNão identifico Tes no produto ou na Tes InteligenteVerificar no cadastro de produto se atrelou Tes ou se configurou corretamente a Tes Inteligente

Reserva não encontrada

Não encontrado de/para de reserva


Verificar se integrou a reserva adapter - ItemReserve.

Verificar se o de/para de reserva foi criado corretamente.

Reserva com quantidade divergente

Mensagem de Erro:

Reserva (valor externo) - Já foi usada ou difere com a quantidade reservada (C0_QTDORIG) com a quantidade (valor da tag) recebida na TAG Quantity.

Verificar o de/para de reserva e identificar se esta correta a quantidade na tag Quantity no bloco ListOfSaleItem.

Verificar na tabela SC0 se já houve a exclusão do registro, com isso, a reserva já foi usada ou cancelada manualmente.

Armazém incorreto

Mensagem de Erro:

Armazém 01 retornado no de/para da tag (WarehouseInternalid) não é o mesmo armazém (C0_LOCAL) 02 da reserva numero: 000001.

Verificar na reserva integrada qual o armazém(C0_LOCAL) utilizado. Após isso deve ser informado na tag WarehouseInternalid da mensagem RetailSales o código externo do armazém de acordo com o cadastro de De/Para.
Reserva de Produto com Rastro (Lote, SubLote, Endereçamento ou Serie)

Mensagem de Erro:

Não existe um Lote que consiga atender a quantidade solicitada(x). Verifique o Saldo por Lote!

Verifique o estoque por Lote, porque a quantidade solicitada não é atendida por nenhum lote.

A tag "DetailedMessage" ira trazer o saldo disponivel por Lote para analise.

{

"Code": "001",
"Message": "Não existe um Lote que consiga atender a quantidade solicitada(300). Verifique o Saldo por Lote!",
"DetailedMessage": "{\"Item\":[{\"LotNumber\":\"LOTE_FEVER\",\"SubLotNumber\":\" \",\"ItemCode\":\"LOTE\",\"AvailableStockAmount\":16,\"AddressingItem\":\"\",\"SeriesItem\":\"\"},{\"LotNumber\":\"LOTE_MARÇO\",\"SubLotNumber\":\" \",\"ItemCode\":\"LOTE\",\"AvailableStockAmount\":20,\"AddressingItem\":\"\",\"SeriesItem\":\"\"},{\"LotNumber\":\"LOTE_ABRIL\",\"SubLotNumber\":\" \",\"ItemCode\":\"LOTE\",\"AvailableStockAmount\":18,\"AddressingItem\":\"\",\"SeriesItem\":\"\"}]}",
"HelpUrl": ""

}

Inconsistência na Forma de pagamento 

Não encontrado de/para de forma de pagamento

Não cadastrado ou não encontrado de/para de Administradora Financeira

Verificar se foi realizado o de/para de Forma de Pagamento no Configurador/Ambiente/Schedule/De Para de Mensagem Única

Verificar se foi realizado o cadastro de Administradora Financeira no Sigaloja e/ou realizado o de/para no Configurador/Ambiente/Schedule/De Para de Mensagem Única

Carga completa de estoque não é realizadaEstoque inicial não é atualizado na plataforma VTEXA data e hora de atualização de estoque na mensagem padronizada, fica registrado nos campos:  B2_DULT, B2_HULT. 
Obs.; Na primeira carga de estoque para mensagem padronizada, esses campos estão vazios e são atualizados no momento da geração da mensagem padronizada.
Contas a Receber (SE1) gerado com código do cliente (campo E1_CLIENTE) nas vendas que possuem uma administradora financeiraConfiguração da Administradora Financeira (SAE) que está sendo utilizada na vendaVerifique a configuração da Administradora Financeira (SAE) utilizada na venda, se o campo Financiamento Próprio (AE_FINPRO) está marcado com "N"- NÃO

Quero mudar a série que meu orçamento (SL1) é gerado e a série do contas a receber (SE1)

Campos(E1_PREFIXO/L1_SERPED)

São gravados conforme o padrão do Venda Assistida com base na estação utilizada na venda.

Devido a Série configurada (LG_SERIE) usada para gravar a reserva recebida.

Verificar na tag StationSalePointInternalId o código da estação configurado no De/Para do Protheus e altere o campo SÉRIE (LG_SERIE) no Cadastro de Estação (SLG - rotina LOJA121) relacionada.

Obs.: Por padrão é utilizado uma estação automática (StationSalePointInternalId = AUTOMATICA), para customizar, basta informar nessa TAG um valor de referência para localizar a estação no cadastro de de/para.


Ao tentar excluir uma reserva emite-se a mensagem:

"Este orçamento não poderá ser excluído porque se trata de um orçamento com reserva"

Esse orçamento é um orçamento filho proveniente de uma reserva.Se o pedido não tiver sido faturado, para excluir esse orçamento é necessário excluir o orçamento/venda pai que originou essa reserva.
Como evitar diferença de centavos no arredondamento dos ambientes SIGALOJACalculo reverso de IPI

Verificar a relação de campos, parâmetros e outras informações importantes a serem verificadas e configuradas para que o sistema faça os cálculos de arredondamento corretamente.

SIGAFRT_SIGALOJA_0047_Como evitar diferença de centavos no arredondamento dos ambientes SIGALOJA e SIGAFRT?


13- Cancelamentos

Cancelamento de reserva (Pagamento da venda não confirmado no E-Commerce)

  • Neste cenário ainda não temos o pedido integrado no Protheus, somente a reserva integrada.
  • Após o cancelamento do pedido no E-commerce, é enviado ao Protheus a mensagem ItemReserve com o evento DELETE, visando realizar o cancelamento desta reserva no Protheus.
  • Ao recepcionar a mensagem, é realizado todo o fluxo de cancelamento da reserva e após sua finalização é enviado um response da mensagem ItemReserve  ao E-Commerce com o status ok, caso a reserva tenha sido cancelada corretamente.


Cancelamento de Venda não faturada

  • Deve ser realizado no módulo Controle de Lojas (SIGALOJA), na rotina Venda Assistida (LOJA701), onde o orçamento pai deverá ser cancelado para que o orçamento filho (reserva) também seja deletado.

Image Added

 

Cancelamento de Venda Faturada

  • Será necessário realizar manualmente a devolução do pedido, através da rotina LOJA720 Rotina de Troca. Após realizar a devolução da venda integrada, será gerada e enviada ao E-Commerce a mensagem DocummentTraceAbilityOrder, com o status Devolvido.
  • No E-Commerce deverá ser atualizado o status da venda.
Aviso
titleAtenção

Caso seja gerada NCC para o cliente não existe integração deste processo com a plataforma E-Commerce.

Image Added

14- Onde consultar demais informações sobre configurações do módulo Venda Assistida?

Abaixo link com a FAQ do Varejo:

https://tdn.totvs.com/display/public/PROT/SIGALOJA

6.1.2. Parâmetros Gerais

15- Status de Pedido - DocumentTraceAbilityOrder

Dica
titleDica!

Como funciona a integração de Rastreio de Pedido entre o TOTVS Protheus e Vtex?

Após a integração de um pedido do tipo entrega, qualquer atualização que o mesmo tiver no Protheus, será gerado e enviado à mensagem DocumentTraceAbilityOrder, ao Vtex, com o status do pedido no Protheus.


Quais são os status de rastreio de pedido que o Protheus envia ao Vtex?

Os status de rastreio de pedido são os seguintes:

Expandir
titleLiberado

Esse status ocorre quando o pedido é integrado ao Protheus e processado pela rotina do GravaBatch, com isso ao gerar o pedido de venda verifica se o parâmetro MV_LJIFPLI  esta configurado com a forma de pagamento da venda efetuada para gerar a libertação automática.

(informação) Importante: Configurar o parâmetro MV_LJIFPLI = Ex: FI|CC|R$ para recebimento de pedido de venda liberado.
OBS: Neste momento ocorre a geração e o envio de mensagem de rastreio com o status Pedido Liberado ao Vtex.



Expandir
titleFaturado

Esse status ocorre quando é gerado no TOTVS Protheus o documento de saída(NF-e) do pedido integrado.

  1. No Faturamento (SIGAFAT) acesse Atualizações / Faturamento / Documento de Saída (MATA460A).
  2. Selecione o pedido de venda e gere o Documento de Saída.
    (informação) Importante: Pedido deve estar liberado para a emissão da Nota Fiscal de Saída.
    OBS: Neste momento é gerada e enviada a mensagem Docummenttraceabilityorder com o status Faturado ao Vtex.
Expandir
titleEmpacotado

Esse status ocorre quando é transmitida e autorizado o documento de saída(NF-e) do pedido integrado.

  1. No Faturamento (SIGAFAT) acesse Atualizações / NF-e e NFS-e / NF-e Sefaz
  2. Selecione o Documento de Saída e realize a Transmissão da Nota Fiscal à  Sefaz.
  3. Clique em Outras Ações/ Monitor/ Faixa. Informe a serie um range de notas para a pesquisa e clique em OK.
    OBS: No momento de monitoramento da NF-e é gerada e enviada a mensagem Docummenttraceabilityorder ao Vtex, com o status Empacotado e os dados da NF-e  junto com o XML da nota transmitida à Sefaz.


Aviso
titleImportante

Caso a NF-e monitorada estiver em contingência e aguardando o processamento do Lote. Não será gerado a mensagem de rastreio Docummenttraceabilityorder com o status Empacotado. 

Image Added


Neste caso aguarde a efetiva autorização da NF-e para a Sefaz e realize novamente o monitoramento. Após isso será gerado a mensagem Docummenttraceabilityorder com o status Empacotado. 

Image Added


Caso já tenha monitorado sua NF-e e a mesma esteja autorizada na Sefaz e não gerou a mensagem de rastreio Docummenttraceabilityorder com o status Empacotado. Verifique se os campos F3_PROTOC e F3_CODRSEF, estão preenchidos. Pois a mensagem é gerada somente quando os dois campos informados estejam preenchidos.

Expandir
titleDevolvido

Esse status ocorre quando é realizado a devolução manual do pedido no Protheus.

  1. No modulo Controle de Lojas (SIGALOJA) acesse Atualizações / Atendimento / Rotina de Troca
  2. Informe os dados da venda conforme sua necessidade e em seguida finalize o processo de devolução.

(informação) Importante: Qualquer item devolvido ira gerar uma mensagem de Rastreio de Pedido com o status Devolvido.

 Não existe integração de NCC com o Vtex, sendo assim ao efetuar uma devolução o e-Commerce não será avisado sobre credito do cliente.
OBS: Neste momento é gerada e enviada a mensagem Docummenttraceabilityorder com o status Devolvido ao Vtex.


16- Como é fluxo de geração de Pedido x Financeiro?

Image Added

Aviso
titleImportante

Os pagamentos contidos no XML  enviado a SEFAZ são com base os pagamentos do orçamento (Tabela SL4 ), sendo assim, a condição de pagamentos contida no pedido de venda está presente apenas para preencher uma obrigatoriedade do pedido de venda, não sendo utilizada para a geração do XML.


Importante: Realizar o checklist abaixo para validar se todas as etapas obrigatórias foram realizadas

  •  

    1 - Configurações iniciais


  •  1.1 - Versão SmartClient
    1.2 - Serviço REST
    1.3 - String > 30mb
    1.4 - Schedule para Mensagem Padronizada
    1.5 - Expedição Varejo
  •   
  •  2 - Validação da lista de parâmetros
  •  3 - Cadastro de Adapter
  •  4 - Identificação de Lojas
  •  5 - Cadastro de "De/Para"
  •  6 - Entendimento sobre o fluxo de integração de Pedido Entrega e Retira
  •  7 - Tes no Produto ou Tes Inteligente 
  •  8 - Gravabatch
  •  9 - Entendimento sobre os relacionamentos de tabelas (Loja,Financeiro e Faturamento)
  •  10 - Exemplo de mensagem padronizada
  •  11 - Administradora Financeira
  •  12 - Tabela de possíveis ocorrências de rejeição da mensagem padronizada
Aviso
  • Durante o processo de homologação, validar vendas com descontos no item e no total, frete, a forma de gravação do pedido e se tem algum impacto no modelo fiscal. Validar também vendas com IPI, desconto e IPI e se a forma de tributação está de acordo com o modelo utilizado pela empresa, exemplo: IPI com base no valor bruto ou líquido. Importante validar combinações de venda com desconto, IPI, Despesa e Frete.
  • Caso tenha alguma não conformidade durantes os fluxos de testes, verificar se a causa é uma customização, para desativar customizações: IXBLOG Como habilitar log para saber se há customização?

10- Tabela de Ocorrências na geração de Pedido de Venda - RetailSales

...

Ação

...

Quantidade do produto não informado 

...

Não encontrado de/para de reserva

Quantidade divergente encontrado no de/para de reserva

...

Verificar se integrou a reserva adapter - ItemReserve

Verificar o de/para de reserva e identificar se esta correta a quantidade na tag Quantity no bloco ListOfSaleItem

...

Não encontrado de/para de forma de pagamento

Não cadastrado ou não encontrado de/para de Administradora Financeira

Verificar se foi realizado o de/para de Forma de Pagamento no Configurador/Ambiente/Schedule/De Para de Mensagem Unica

...