Árvore de páginas

Versões comparadas

Chave

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

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

RmiBusLiveObj- 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 no Assinante Live.

03. SOLUÇÃO

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

...

Neste exemplo o processo Venda está configurado como busca para o assinantes Live utilizando a operação RecuperarCupomFiscalLC_Integracao_Xml.

Image RemovedImage Added


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

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

2=Busca


  • Configuração do Assinante - Para acessar API CapaVendao WebSevice do LiveConector
Bloco de código
	{
		    "url_token":"http://caminho.para.capavenda/ListPorDataMovimento"  /PracticoLive/LiveConnector/FacadeIntegracao.svc?wsdl",   	(Url para acessar ao API CapaVendaLiveConector)
	}
  • Layout Envio - Body que a API CapaVenda precisa para retornar as vendas
Bloco de código
	{ 
		"CodigoLoja":12345, (código da loja que será feita a consulta)
		"DataMovimentoInicial":"&Str( Year(dDatabase - 1), 4) +'-'+ StrZero( Month(dDatabase - 1), 2) +'-'+ StrZero( Day(dDatabase - 1), 2)",
		"DataMovimentoFinal":"&Str( Year(dDatabase), 4) +'-'+ StrZero( Month(dDatabase), 2) +'-'+ StrZero( Day(dDatabase), 2)",
		"Online":true
	}

Observação:

  • & - Este carácter define que deve macro executar tudo o quem depois em tempo de execução.
  • Layout Publi - Layout que será utilizado para gerar a Publicação (tabela MHQ), especificamente o campo MHQ_MENSAG
    "operacao":"ObterChaveAcessoLC_Integracao", 											(Operação para buscar token)
    "sistemasatelite":"123456789", 															(código do sistema satélite)
    "usuario":"[email protected]", 														(nome do usuário)
    "senha":"senha" 																		(senha do usuário)
}


  • Configuração do Processo - Necessário para executar a operação RecuperarCupomFiscalLC_Integracao_Xml
Bloco de código
{ 
    "url":"http://caminho/PracticoLive/LiveConnector/FacadeIntegracao.svc?wsdl",
    "operacao":"RecuperarCupomFiscalLC_Integracao_Xml",
    "tagretorno":"<LC_TicketCupomFiscal>",
    "SL2":"self:oRegistro:_Itens:_Lc_ItemCupomfiscal
Bloco de código
{
    "L1_FILIAL":"&xFilial('SL1')",
    "L1_VEND":"&SUPERGETMV('MV_VENDPAD', .F., '01')",
    "L1_CLIENTESL4":"&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":"&xFilial('SL2')",
            "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":"&xFilial('SL4')",
            "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:

...

self:oRegistro:_FormasPagamento:_Lc_FormaPagamento"
}


  • Layout Envio - Body que o LiveConector precisa para retornar as vendas
Bloco de código
&"<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:liv="http://LiveConnector/">
   <soapenv:Header />
   <soapenv:Body>
      <liv:RecuperarCupomFiscalLC_Integracao_Xml>
         <liv:codigoSistemaSatelite>" + self:oConfAssin['sistemasatelite'] + "</liv:codigoSistemaSatelite>
         <liv:xmlIdentificacao><![CDATA[<?xml version='1.0' encoding='utf-8'?><LC_Identificacao><Chave>" + self:cToken + "</Chave><CodigoSistemaSatelite>" + self:oConfAssin['sistemasatelite'] + "</CodigoSistemaSatelite><Data/><Hora/></LC_Identificacao>]]></liv:xmlIdentificacao>
      </liv:RecuperarCupomFiscalLC_Integracao_Xml>
   </soapenv:Body>
</soapenv:Envelope>"

Observação:

& - Este carácter define que deve macro executar tudo o quem depois em tempo de execução.


  • Layout Publi - Layout que será utilizado para gerar a Publicação (tabela MHQ), especificamente o campo MHQ_MENSAG
Bloco de código
{
	"L1_FILIAL": "&self:DePara('SM0', self:oRegistro:_CodigoLoja:Text, 1, 0)",
	"L1_CLIENTE": "&IIF( Empty(self:oRegistro:_IdentificacaoCliente:Text), SuperGetMv('MV_CLIPAD', .F., '000001'), self:DePara('SA1', self:oRegistro:_IdentificacaoCliente:Text, 2) )",
	"L1_LOJA": "&IIF( Empty(self:oRegistro:_IdentificacaoCliente:Text), SuperGetMv('MV_LOJPAD', .F., '01'), self:DePara('SA1', self:oRegistro:_IdentificacaoCliente:Text, 3) )",
	"L1_OPERADO": "C01",
	"L1_EMISSAO": "&DtoS( CtoD( SubStr(self:oRegistro:_DataHora:Text, 1, 10) ) )",
	"L1_NUMCFIS": "&self:oRegistro:_Numero:Text",
	"L1_DOC": "&cValToChar(self:oRegistro:_Numero:Text)",
	"L1_SERIE": "&self:oRegistro:_SerieNFCe:Text",
	"L1_KEYNFCE": "&IIF(self:oRegistro:_SiglaModelo:Text <> '2D', self:oRegistro:_ChaveNFCe:Text, '')",
	"L1_SERSAT": "&IIF(self:oRegistro:_SiglaModelo:Text == '59', self:oRegistro:_SerieNFCe:Text, '')",
	"L1_SERPDV": "&IIF(self:oRegistro:_SiglaModelo:Text == '2D', self:oRegistro:_NumeroImpressora:Text, '')",
	"L1_COMIS": 0,
	"L1_VLRTOT": "&Val(self:oRegistro:_ValorLiquido:Text)",
	"L1_VALBRUT": "&Val(self:oRegistro:_ValorBruto:Text)",
	"L1_VLRLIQ": "&Val(self:oRegistro:_ValorLiquido:Text)",
	"L1_VALMERC": "&Val(self:oRegistro:_ValorBruto:Text)",
	"L1_DESCONT": "&Val(self:oRegistro:_ValorDesconto:Text)",
	"L1_CGCCLI": "&self:oRegistro:_CPFCliente:Text",
	"L1_MSEXP": "&DtoS(Date())",
	"L1_CONDPG": "CN",
	"L1_TIPO": "V",
	"L1_TIPOCLI": "F",
	"L1_PDV": "&self:oRegistro:_NumeroPDV:Text",
	"L1_ORIGEM": "N",
	"SL2": [
		{
			"L2_FILIAL": "&self:DePara('SM0', self:oRegistro:_CodigoLoja:Text, 1, 0)",
			"L2_PRODUTO": "&self:DePara('SB1', self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_CodigoProduto:Text, 2)",
			"L2_ITEM": "&Right( AllTrim(self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_NumeroItem:Text), TamSx3('L2_ITEM')[1])",
			"L2_DESCRI": "",
			"L2_VEND": "&IIF( Empty(self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_IdentificacaoVendedor:Text), SuperGetMv('MV_VENDPAD', .F., '000001'), self:DePara('SA3', self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_IdentificacaoVendedor:Text, 2) )",
			"L2_QUANT": "&Val(self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_Quantidade:Text)",
			"L2_VRUNIT": "&Val(self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_ValorUnitarioLiquido:Text)",
			"L2_VLRITEM": "&Val(self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_ValorTotalLiquido:Text)",
			"L2_LOCAL": "01",
			"L2_UM": "&self:DePara('SAH', self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_UnidadeMedida:Text, 2)",
			"L2_TES": "&SuperGetMv('MV_TESSAI', .F., '501')",
			"L2_CF": "",
			"L2_EMISSAO": "&DtoS( CtoD( SubStr(self:oRegistro:_DataHora:Text, 1, 10) ) )"
		}
	],
	"SL4": [
		{
			"L4_FILIAL": "&self:DePara('SM0', self:oRegistro:_CodigoLoja:Text, 1, 0)",
			"L4_DATA": "&DtoS( CtoD( SubStr(self:oRegistro:_DataHora:Text, 1, 10) ) )",
			"L4_VALOR": "&Val(self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_ValorPagamento:Text)",
			"L4_FORMA": "&self:DePara('SX5', self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_FormaPagamento:Text, 3)",
			"L4_ADMINIS": "&IIF( Empty(self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_CodigoAdministradoraCartao:Text), '', self:DePara('SAE', self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_CodigoAdministradoraCartao:Text, 2) )",
			"L4_AUTORIZ": "&AllTrim(self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_Autorizacao:Text)",
			"L4_NSUTEF": "&self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_NSU:Text",
			"L4_PARCTEF": "&self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_Parcela:Text"
		}
	]
}

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 todas as TAGs retornadas pela operação RecuperarCupomFiscalLC_Integracao_Xml do LiveConector,  definido por uma venda por vez. 
Caso seja necessário receber mais algum campo deve ser incluído no layout acima.


Exemplo de geração do mensagem publicada (MHQ_MENSAG):

Bloco de código
{
	"L1_DESCONT": 0,
	"L1_KEYNFCE": "41191182373077000171657030000001571207022516",
	"L1_TIPOCLI": "F",
	"L1_OPERADO": "C01",
	"L1_TIPO": "V",
	"L1_VLRLIQ": 890,
	"L1_COMIS": 0,
	"L1_SERSAT": "",
	"L1_PDV": "1",
	"L1_MSEXP": "20200321",
	"L1_LOJA": "01",
	"L1_NUMCFIS": "157",
	"L1_VALBRUT": 890,
	"L1_SERIE": "",
	"L1_SERPDV": "",
	"L1_VALMERC": 890,
	"L1_FILIAL": "D MG 01",
	"L1_ORIGEM": "N",
	"L1_EMISSAO": "20191127",
	"SL2": [
		{
			"L2_QUANT": 1,
			"L2_BASECOF": 480,
			"L2_ALIQCOF": 0,
			"L2_BASEICM": 480,
			"L2_PRODUTO": "LJTEST02",
			"L2_BASEPIS": 480,
			"L2_ALIQPIS": 0,
			"L2_FILIAL": "D MG 01",
			"L2_VLRITEM": 480,
			"L2_UM": "UN",
			"L2_ITEM": "01",
			"L2_TES": "501",
			"L2_VEND": "000001",
			"L2_VRUNIT": 480,
			"L2_VALPIS": 0,
			"L2_DESCRI": "",
			"L2_VALCOFI": 0,
			"L2_LOCAL": "01",
			"L2_EMISSAO": "20191127",
			"L2_CF": "",
			"L2_VALICM": 0,
			"L2_PICM": 0
		},
		{
			"L2_QUANT": 1,
			"L2_BASECOF": 146,
			"L2_ALIQCOF": 0,
			"L2_BASEICM": 146,
			"L2_PRODUTO": "LJTEST06",
			"L2_BASEPIS": 146,
			"L2_ALIQPIS": 0,
			"L2_FILIAL": "D MG 01",
			"L2_VLRITEM": 146,
			"L2_UM": "UN",
			"L2_ITEM": "02",
			"L2_TES": "501",
			"L2_VEND": "000001",
			"L2_VRUNIT": 146,
			"L2_VALPIS": 0,
			"L2_DESCRI": "",
			"L2_VALCOFI": 0,
			"L2_LOCAL": "01",
			"L2_EMISSAO": "20191127",
			"L2_CF": "",
			"L2_VALICM": 26.28,
			"L2_PICM": 18
		},
		{
			"L2_QUANT": 1,
			"L2_BASECOF": 264,
			"L2_ALIQCOF": 0,
			"L2_BASEICM": 264,
			"L2_PRODUTO": "LJTEST03",
			"L2_BASEPIS": 264,
			"L2_ALIQPIS": 0,
			"L2_FILIAL": "D MG 01",
			"L2_VLRITEM": 264,
			"L2_UM": "UN",
			"L2_ITEM": "03",
			"L2_TES": "501",
			"L2_VEND": "000001",
			"L2_VRUNIT": 264,
			"L2_VALPIS": 0,
			"L2_DESCRI": "",
			"L2_VALCOFI": 0,
			"L2_LOCAL": "01",
			"L2_EMISSAO": "20191127",
			"L2_CF": "",
			"L2_VALICM": 46.2,
			"L2_PICM": 17.5
		}
	],
	"L1_DOC": "157",
	"L1_VLRTOT": 890,
	"L1_CLIENTE": "000001",
	"L1_CONDPG": "CN",
	"L1_CGCCLI": "",
	"SL4": [
		{
			"L4_DATA": "20191127",
			"L4_FORMA": "R$",
			"L4_VALOR": 890,
			"L4_ADMINIS": "",
			"L4_NSUTEF": "",
			"L4_PARCTEF": "1",
			"L4_AUTORIZ": "",
			"L4_FILIAL": "D MG 01"
		}
	]
}

...


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 Live deverá seguir a documentação a na seguinte estrutura: Assinante ChefLive..

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

[RMIBUSCA]
Main=RmiBusca
Environment=12_1_25 (Ambiente)
nParms=2
Parm1=T1 (Empresa)
Parm2=D MG 01 (Filial)

05. ASSUNTOS RELACIONADOS

Dúvidas Frequentes - Varejo

Guia da Integração RMI - Retail Integration ManagementAPI - Capa Venda

Templatedocumentos


HTML
<style>
div.theme-default .ia-splitter #main {
    margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
    display: none;
}
#main {
    padding-left: 10px;
    padding-right: 10px;
    overflow-x: hidden;
}

.aui-header-primary .aui-nav,  .aui-page-panel {
    margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
    margin-left: 0px !important;
}
</style>