Árvore de páginas

01. DADOS GERAIS

Linha de Produto:Microsiga Protheus
Segmento:Varejo
Módulo:SigaLoja - Controle de Loja
Função:

RmiBusca - Serviço controlador de buscas

RmiBuscaObj - Classe responsável por buscar informações

RmiBusChefObj- Classe responsável por buscar informações com particularidades do Totvs Chef.

02. SITUAÇÃO/REQUISITO

Disponibilizar um serviço que efetue a busca de Vendas por data de Integração no Assinante Chef 

03. SOLUÇÃO

Criado serviço RmiBusca, que será responsável por buscar os processos nos assinantes e publica-los na tabela MHQ - Mensagens Publicadas.

Este serviço será executado com base na configuração de Assinantes.

Neste exemplo o processo Venda está configurado como busca para o assinantes Chef.

Definição dos principais campos para efetuar a busca:

  • Tipo Process - Tipo de Execução do Processo

2=Busca


  • Configuração - Para acessar API CapaVenda
	{
		"url":"http://caminho.para.capavenda/ListPorDataIntegracaoChefWeb"  (Url para acessar a API CapaVenda)
	}


  • Layout Envio - Body que a API CapaVenda/ListPorDataIntegracao precisa para retornar as vendas
	{ 
		"CodigoLoja":"&self:aArrayFil[self:nFil][1]",
	    "DataInicialIntegracaoChefweb":"&Str( Year(dDatabase), 4) +'-'+  StrZero( Month(dDatabase), 2) +'-'+ StrZero( Day(dDatabase), 2)",
	    "DataFinalIntegracaoChefweb":"&Str( Year(dDatabase), 4) +'-'+  StrZero( Month(dDatabase), 2) +'-'+ StrZero( Day(dDatabase), 2)",
		"DataHoraUltimaIntegracaoChefWeb":""
	}

Observação:

  • & - Este carácter define que deve macro executar tudo o quem depois em tempo de execução.
  • Uso das tags estão na pagina API CapaVenda/ListPorDataIntegração
  • Para exemplificar o uso das tags da API - ListPorDataIntegração podemos usa-las da seguinte forma:

"DataInicialIntegracaoChefweb":"2019-12-12T00:00:00",

"DataFinalIntegracaoChefweb":"2019-12-12T23:59:59",

"DataHoraUltimaIntegracaoChefWeb":"2019-12-12T10:00:00"

Dessa forma podemos buscar vendas de data a partir das 10:00:00 do dia 12/12/2019 ate as 23:59:59 do dia 12/12/2019 não podemos passar de 24 horas do parâmetro.


  • Layout Filial- Json com as filiais e informação de data e hora 

Campo criado MHP_LAYFIL na tabela MHP com a seguinte estrutura:

Nome: Layout Fil

Descrição: Layout de Filial 

Tipo: Memo

	{
		"Filiais":[
			{
				"Data":"12/12/19",
				"Hora":"14:44",
				"Filial":"D RJ 02"
			}
		]
	}

Observação:

  • O campo foi criado apenas físico e não sera mostrado na tela Cadastro de Assinante, seu preenchimento sera feito de forma automática apos a escolha das filiais do campo MHP_FILPRO.
  • A Data e hora será atualizada a cada processamento de venda pela TAG DataIntegracaoChefweb
  • Layout Publi - Layout que será utilizado para gerar a Publicação (tabela MHQ), especificamente o campo MHQ_MENSAG
{
    "L1_FILIAL":"&self:aArrayFil[self:nFil][2]",
    "L1_VEND":"&SUPERGETMV('MV_VENDPAD', .F., '01')",
    "L1_CLIENTE":"&SUPERGETMV('MV_CLIPAD', .F., '000001')",
    "L1_LOJA":"&SUPERGETMV('MV_LOJPAD', .F., '01')",
    "L1_OPERADO":"&cValToChar(self:oRegistro['Caixa']['Operador']['Codigo'])",
    "L1_EMISSAO":"&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:oRegistro['SerieNota']",
    "L1_SERPDV":"&self:oRegistro['SerieECF']",
    "L1_SERSAT":"&self:oRegistro['SerieSAT']",
    "L1_KEYNFCE":"&self:oRegistro['ChaveSefaz']",
    "L1_PRONFCE":"&self:oRegistro['ProtocoloAutorizacaoSefaz']",
    "L1_COMIS":0,
    "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_DINHEIR":"&self:oRegistro['TotalizadorVenda']['ValorTotalCOFINS']",
    "L1_MSEXP":"&SubStr( StrTran( self:oRegistro['DataRecebimento'], '-', ''), 1, 8)",
    "L1_CONDPG":"CN",
    "L1_SITUA":"IP",
    "L1_TIPO":"V",
    "L1_TIPOCLI":"F",
    "L1_PDV":"001",
    "SL2":[
        {
            "L2_FILIAL":"&self:aArrayFil[self:nFil][2]",
            "L2_PRODUTO":"&cValToChar(self:oRegistro['Itens'][nItem]['Produto']['Codigo'])",
            "L2_ITEM":"&StrZero(nItem, TamSx3('L2_ITEM')[1])",
            "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":"01",
            "L2_UM":"&self:oRegistro['Itens'][nItem]['Produto']['Unidade']",
            "L2_VALDESC":"&self:oRegistro['Itens'][nItem]['ValorDesconto']",
            "L2_TES":"&SUPERGETMV('MV_TESSAI', .F., '501')", 
            "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']"
        }
    ],
    "SL4":[
        {
            "L4_FILIAL": "&self:aArrayFil[self:nFil][2]",
            "L4_DATA":"&self:oRegistro['DataMovimento']",
            "L4_VALOR":"&self:oRegistro['Pagamentos'][nItem]['ValorRecebido']",
            "L4_ADMINIS":"&IIF(self:oRegistro['Pagamentos'][nItem]['Descricao'] <> 'DINHEIRO',self:oRegistro['Pagamentos'][nItem]['Descricao'],'')",
            "L4_FORMA":"&IIF(cValToChar(self:oRegistro['Pagamentos'][nItem]['TipoFormaPagamento']) == '3',self:oRegistro['Pagamentos'][nItem]['FormaPagamentoCartao']['TipoCartao'],cValToChar(self:oRegistro['Pagamentos'][nItem]['TipoFormaPagamento']))"
        }
    ]
}

Observação:

  • & - Este carácter define que deve macro executar tudo o quem depois em tempo de execução.
  • self:oRegistro - Possibilita o acesso a tudo que foi retornado pela API CapaVenda.
    Caso seja necessário receber mais algum campo deve ser incluído no layout acima.
    Para mais informações sofre os retornos da API CapaVenda acesse: API - Capa Venda


Neste serviço serão utilizadas as seguintes tabelas:

  • MHP - Assinantes x Processos
  • MHQ - Mensagens Publicadas

04. DEMAIS INFORMAÇÕES

A configuração do assinante Chef deverá seguir a documentação a seguinte estrutura: Assinante Chef.

Exemplo de configuração do Job no AppServer.ini

[RMIBUSCA]
Main=RmiBusca
Environment=12_1_30 (Ambiente)
nParms=2
Parm1=T1 (Empresa)
Parm2=D RJ 02 (Filial)

05. ASSUNTOS RELACIONADOS

Dúvidas Frequentes - Varejo

Guia da Integração RMI - Retail Integration Management

API - Capa Venda