Árvore de páginas

Versões comparadas

Chave

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

...

Aviso

As vendas compatíveis: NFC-e, SAT e ECF

Não existe integração de ficha técnica. A integração da venda é realizada utilizando as rotinas padrão do Venda Assistida, atualmente não existe no padrão a funcionalidade de baixa de estoque por ficha técnica. 

Não existe integração de Impostos. Os dados de impostos devem ser complementados na camada do TOTVS CH

EF.

Não existe integração de Inutilização de documento NFC-e

Não existe integração de Troca/Devolução de Venda

Não existe integração de venda com pagamento em NCC (Crédito)

Cadastrando o Processo VENDA

Para integrarmos as vendas do Totvs Chef com o Protheus é necessário primeiramente realizar o cadastro do processo VENDA no Protheus.

...

Exemplo do cadastro de Processo do VENDA:


Vinculando o Processo VENDA ao Assinante CHEF


1- No módulo 12 (Controle de Lojas), acesse Atualizações/ RMI/ Cadastros/ Assinantes.

...

Informações
titleReprocessamento de Venda

Para Reprocessar vendas com erro é necessário incluir tags de controle no layout de envio:

  • DataReprocessamento: Data de controle para inicialização do mecanismo de reprocessamento. Essa dava deve ser preenchida com um dia antes da data atual da maquina onde o serviço RMIBUSCA esta configurado.
  • UltimodiaReprocessado: Data de controle para saber qual foi o ultimo dia reprocessado automaticamente pelo sistema.
  • DiasRetroceder: dias definido pelo usuário para controle da DataReprocessamento. 

Exemplo:

    "DataReprocessamento": "20230515",

    "UltimodiaReprocessado": "20230515",   

    "DiasRetroceder": 10


Como será inicializado o reprocessamento?

O serviço RMIBUSCA verifica se a data da maquina onde se encontra o mesmo é maior que a data contida na tag DataReprocessamento. Caso seja será inicializado o reprocessamento seguindo as considerações abaixo:

A data inicial do reprocessamento será realizada através do calculo:

UltimodiaReprocessado - DiasRetroceder = 05/05/2023

Com isso o reprocessamento se busca as vendas do dia 05/10/2023 até o dia 14/05/2023.

As tags DataReprocessamento e UltimodiaReprocessado são atualizadas após cada execução com isso não será mais necessário realizar essa alteração manualmente.

Neste cenário começará a partir de 05/05/23 e terminará na data atual;

Com isso o Layout de Envio deve estar com essa estrutura.

{
    "CodigoLoja": "&self:aArrayFil[self:nFil][1]",
    "notasinutilizadas": 1,
    "DataMovimentoInicial": "&Str( Year(dDatabase), 4) +'-'+  StrZero( Month(dDatabase), 2) +'-'+ StrZero( Day(dDatabase), 2)",
    "DataMovimentoFinal": "&Str( Year(dDatabase), 4) +'-'+  StrZero( Month(dDatabase), 2) +'-'+ StrZero( Day(dDatabase), 2)",

    "DataReprocessamento": "20230515",

    "UltimodiaReprocessado": "20230515",   

    "DiasRetroceder": 10
}


  • Por Data de Integração:
Nota
titlePara maior entendimento

Obs: Essa opção foi descontinuada, deve utilizar a configuração acima: Por Data de Movimentação 
Veja toda a documentação tecnica sobre a configuração da API: Busca de Venda ListPorDataIntegracao

...

Bloco de código
{
	"L1_FILIAL": "&self:aArrayFil[self:nFil][2]",
	"L1_CLIENTE": "&SuperGetMV('MV_CLIPAD',.F.,'000001', self:DePara('SM0', cValToChar(self:oRegistro['Loja']['Codigo']), 1, 0, .F., 'CHEF'))",
	"L1_LOJA": "&SuperGetMV('MV_LOJAPAD',.F., '01', self:DePara('SM0', cValToChar(self:oRegistro['Loja']['Codigo']), 1, 0, .F., 'CHEF'))",
	"L1_OPERADO": "&self:DePara('SA6', cValToChar(self:oRegistro['Loja']['Codigo']) + '|' + cValToChar(self:oRegistro['Caixa']['Operador']['Codigo']), 2, 0, .F., 'CHEF')",
	"L1_TROCO1": "&self:oRegistro['TotalizadorVenda']['ValorTroco']",
	"L1_EMISSAO": "&self:oRegistro['DataMovimento']",
	"L1_EMISNF": "&self:oRegistro['DataMovimento']",
	"L1_DTLIM": "&self:oRegistro['DataMovimento']",
	"L1_NUMMOV": "&SubStr(cValToChar(self:oRegistro['Caixa']['NumeroFechamento']),1,2)",
	"L1_NUMCFIS": "&cValToChar(self:oRegistro['NumeroCupom'])",
	"L1_DOC": "&cValToChar(self:oRegistro['NumeroNota'])",
	"L1_SERIE": "&self:LayEstAutoChef('LG_SERIE')",
	"L1_SERPDV": "&self:oRegistro['SerieECF']",
	"L1_SERSAT": "&self:oRegistro['SerieSAT']",
	"L1_KEYNFCE": "&self:oRegistro['ChaveSefaz']",
	"L1_PRONFCE": "&self:oRegistro['ProtocoloAutorizacaoSefaz']",
	"L1_COMIS": 0,
	"L1_ORIGEM": "N",
	"L1_VLRTOT": "&self:oRegistro['TotalizadorVenda']['ValorTotal']",
	"L1_VALBRUT": "&self:oRegistro['TotalizadorVenda']['ValorSubTotal']",
	"L1_VLRLIQ": "&self:oRegistro['TotalizadorVenda']['ValorSubTotal']",
	"L1_VALMERC": "&self:oRegistro['TotalizadorVenda']['ValorSubTotal']",
	"L1_DESCONT": "&self:oRegistro['TotalizadorVenda']['ValorTotalDescontoSistema']",
	"L1_DESCFIN": "&self:oRegistro['TotalizadorVenda']['ValorTotalDescontoFiscal']",
	"L1_VALICM": "&self:oRegistro['TotalizadorVenda']['ValorTotalICMS']",
	"L1_VALPIS": "&self:oRegistro['TotalizadorVenda']['ValorTotalPIS']",
	"L1_VALCOFI": "&self:oRegistro['TotalizadorVenda']['ValorTotalCOFINS']",
	"L1_CGCCLI": "&IIF(self:oRegistro['Cliente'] <> Nil, self:oRegistro['Cliente']['Documento'], '')",
	"L1_CONDPG": "CN",
	"L1_SITUA": "IP",
	"L1_TIPO": "V",
	"L1_TIPOCLI": "F",
	"L1_ESPECIE": "&IIF(self:oRegistro['ModeloFiscal'] == 1,'SATCE',IIF(self:oRegistro['ModeloFiscal'] == 2,'NFCE','ECF'))",
	"L1_PDV": "&self:LayEstAutoChef('LG_PDV')",
	"SL2": [
		{
			"L2_FILIAL": "&self:aArrayFil[self:nFil][2]": "",
			"L2_PRODUTO": "&cValToChar(self:oRegistro['Itens'][nItem]['Produto']['Codigo'])",
			"L2_DESCRI": "&self:oRegistro['Itens'][nItem]['Produto']['Nome']",
			"L2_QUANT": "&self:oRegistro['Itens'][nItem]['Quantidade']",
			"L2_VRUNIT": "&self:oRegistro['Itens'][nItem]['ValorUnitario']",
			"L2_VLRITEM": "&": "&self:oRegistro['Itens'][nItem]['ValorTotal']",
			"L2_LOCAL": "&SuperGetMV('MV_LOCPAD',.F., '01', self:DePara('SM0', cValToChar(self:oRegistro['ItensLoja'][nItem]['ValorTotalCodigo']",
			"L2_LOCAL": "&SuperGetMV('MV_LOCPAD',), 1, 0, .F., '01CHEF'))",
			"L2_UM": "&self:oRegistro['Itens'][nItem]['Produto']['Unidade']",
			"L2_VALDESC": "&self:oRegistro['Itens'][nItem]['ValorDesconto']",
			"L2_TES": "&SUPERGETMV('MV_TESSAI', SuperGetMV('MV_TESSAI', .F., '501', self:DePara('SM0', cValToChar(self:oRegistro['Loja']['Codigo']), 1, 0, .F., '501CHEF'))",
			"L2_CF": "&self:oRegistro['Itens'][nItem]['Cfop']",
			"L2_PICM": "&self:oRegistro['Itens'][nItem]['Icms']['Aliquota']",
			"L2_BASEICM": "&self:oRegistro['Itens'][nItem]['Icms']['BaseCalculo']",
			"L2_VALICM": "&self:oRegistro['Itens'][nItem]['Icms']['Valor']",
			"L2_EMISSAO": "&self:oRegistro['DataMovimento']",
			"L2_CSTPIS": "&self:oRegistro['Itens'][nItem]['Pis']['Cst']",
			"L2_CSTCOF": "&self:oRegistro['Itens'][nItem]['Cofins']['Cst']"
		}
	],
	"SL4": [
		{
			"L4_FILIAL": "&self:aArrayFil[self:nFil][2]",
			"L4_DATA": "&self:oRegistro['DataMovimento']",
			"L4_VALOR": "&IIF(self:oRegistro['Pagamentos'][nItem]['Descricao'] == 'DINHEIRO',self:oRegistro['Pagamentos'][nItem]['ValorRecebido']+self:oRegistro['TotalizadorVenda']['ValorTroco'],self:oRegistro['Pagamentos'][nItem]['ValorRecebido'])",
			"L4_ADMINIS": "&IIF(self:oRegistro['Pagamentos'][nItem]['Descricao'] <> 'DINHEIRO',Substr(self:DePara('SAE',self:oRegistro['Pagamentos'][nItem]['Descricao'], 2, 0, .F., 'CHEF'),1,20),'')",
			"L4_TROCO": "&IIF(self:oRegistro['Pagamentos'][1] <> nil .and. self:oRegistro['Pagamentos'][1]['ValorRecebido'] > 0,self:oRegistro['TotalizadorVenda']['ValorTroco'],0)",
			"L4_FORMA": "&self:DePara('SX5',IIF(cValToChar(self:oRegistro['Pagamentos'][nItem]['TipoFormaPagamento']) == '3',self:oRegistro['Pagamentos'][nItem]['Descricao'],cValToChar(self:oRegistro['Pagamentos'][nItem]['TipoFormaPagamento'])), 2, 0, .F., 'CHEF')",
			"L4_NSUTEF": "&IIF(self:oRegistro['Pagamentos'][nItem]['FormaPagamentoCartao'] <> nil .and. cValToChar(self:oRegistro['Pagamentos'][nItem]['FormaPagamentoCartao']['TipoTransacao']) == '1',self:oRegistro['Pagamentos'][nItem]['FormaPagamentoCartao']['DadosTEF']['NSUTEF'],'')",
			"L4_DOCTEF": "&IIF(self:oRegistro['Pagamentos'][nItem]['FormaPagamentoCartao'] <> nil .and. cValToChar(self:oRegistro['Pagamentos'][nItem]['FormaPagamentoCartao']['TipoTransacao']) == '1',self:oRegistro['Pagamentos'][nItem]['FormaPagamentoCartao']['DadosTEF']['NSUHost'],'')",
			"L4_DATATEF": "&IIF(self:oRegistro['Pagamentos'][nItem]['FormaPagamentoCartao'] <> nil .and. cValToChar(self:oRegistro['Pagamentos'][nItem]['FormaPagamentoCartao']['TipoTransacao']) == '1',StrTran(Substr(self:oRegistro['DataRecebimento'],1, AT('T',self:oRegistro['DataRecebimento']) -1),'-',''),'  /  /  ')",
			"L4_HORATEF": "&IIF(self:oRegistro['Pagamentos'][nItem]['FormaPagamentoCartao'] <> nil .and. cValToChar(self:oRegistro['Pagamentos'][nItem]['FormaPagamentoCartao']['TipoTransacao']) == '1',StrTran(Substr(self:oRegistro['DataRecebimento'],AT('T',self:oRegistro['DataRecebimento']) +1 ,8),':',''),'')",
			"L4_BANDEIR": "&IIF(self:oRegistro['Pagamentos'][nItem]['FormaPagamentoCartao'] <> nil .and. cValToChar(self:oRegistro['Pagamentos'][nItem]['FormaPagamentoCartao']['TipoTransacao']) == '1',self:oRegistro['Pagamentos'][nItem]['FormaPagamentoCartao']['DadosTEF']['CodigoBandeiraTexto'],'')",
			"L4_AUTORIZ": "&IIF( self:oRegistro['Pagamentos'][nItem]['FormaPagamentoCartao'] <> Nil, IIF(self:oRegistro['Pagamentos'][nItem]['FormaPagamentoCartao']['DadosTEF'] <> Nil .and. !Empty(self:oRegistro['Pagamentos'][nItem]['FormaPagamentoCartao']['DadosTEF']['CodigoAutorizacao']), self:oRegistro['Pagamentos'][nItem]['FormaPagamentoCartao']['DadosTEF']['CodigoAutorizacao'], StrZero(nItem, TamSx3('L4_FORMAID')[1])), '' )"
		}
	]
}
Nota
titleObservações
  • As tags L1_FILIAL, L2_FILIAL e L4_FILIAL são preenchidas pelo Protheus, então devem ficar com o conteúdo vazio.
Dica
titleAPI - CAPA VENDA

Para mais informações referente à campos na API do FOOD acesse: API - FOOD CAPA VENDA.

TipoFormaPagamento = 3 é para identificar as formas de pagamento do tipo cartão.

Exemplo da configuração do Processo VENDA no assinante CHEF:




Vinculando o Processo VENDA ao Assinante PROTHEUS


1- No módulo 12 (Controle de Lojas), acesse Atualizações/ RMI/ Cadastros/ Assinantes.

...