Histórico da Página
...
| Linha de Produto: | Microsiga Protheus |
|---|---|
| Segmento: | Varejo |
| Módulo: | SigaLoja - Controle de Loja |
| Função: | RmiBuscaObj - Classe responsável por buscar informações RmiBusLiveObj- Classe responsável por buscar informações com particularidades do Totvs ChefLive. |
02. SITUAÇÃO/REQUISITO
Disponibilizar um serviço que efetue Permitir que o serviço RMIBUSCA efetue a busca de Cliente no Assinante Live.
03. SOLUÇÃO
Atualizado serviço RmiBusca para o Assinantes Live, que será responsável por buscar os processos nos assinantes , permitindo realizar a busca dos Clientes cadastrados no TOTVS LIVE 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 CLIENTE está configurado como busca para o assinantes assinante Live utilizando a operação RecuperarCupomFiscalLCRecuperarClienteLC_Integracao_Xml.
Definição dos principais campos para efetuar a busca:
...
- Configuração do Processo - Necessário para executar a operação RecuperarCupomFiscalLCRecuperarClienteLC_Integracao_Xml
| Bloco de código |
|---|
{
"url": "http://caminho/PracticoLive/LiveConnector/FacadeIntegracao.svc?wsdl", (Url para acessar o LiveConector)
"operacao": "RecuperarCupomFiscalLCRecuperarClienteLC_Integracao_Xml",
"tagretorno": "<LC_TicketCupomFiscal>TicketClienteSaida>",
"SL2documentoId": "self:oRegistro:_Itens:_Lc_ItemCupomfiscal",LC_ClienteSaida",
"SL4ChaveUni": "self:oRegistro:_FormasPagamento:_Lc_FormaPagamentoCPF_CNPJ"
} |
- 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:RecuperarCupomFiscalLCRecuperarClienteLC_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:RecuperarCupomFiscalLCRecuperarClienteLC_Integracao_Xml> </soapenv:Body> </soapenv:Envelope>" |
...
& - Este carácter define que deve macro executar tudo o quem depois em tempo de execução.
A1_FILIAL - O campo de Filial da tabela SA1 deve ser compartilhado.
A1_COD - O campo de código do cliente no Protheus ( A1_COD ) segue a mesma regra da rotina padrão (MATA030) verificando se existe Inicializador Padrão para o preenchimento caso não exista deve incluir.
- Layout Publi - Layout que será utilizado para gerar a Publicação (tabela MHQ), especificamente o campo MHQ_MENSAG
| Bloco de código |
|---|
{
"L1 "A1_FILIAL": "&self:DeParaxFilial('SM0SA1')", self:oRegistro:_CodigoLoja:Text, 1, 0)",
"L1_CLIENTE
"A1_NOME": "&IIF( Empty(self:oRegistro:_IdentificacaoClienteApelido:Text)", SuperGetMv('MV_CLIPAD', .F., '000001'), self:DePara('SA1', self:oRegistro:_IdentificacaoCliente:Text, 2) )",
"L1
"A1_TIPO": "F",
"A1_LOJA": "&IIF( Empty(self:oRegistro:_IdentificacaoCliente:Text), SuperGetMv(SuperGetMV('MV_LOJPADLOJAPAD', .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_NUMCFISA1_CGC": "&self:oRegistro:_NumeroCPF_CNPJ:Text",
"L1_DOC": "&cValToChar(self:oRegistro:_Numero:Text)",
"L1_SERIE": "&self:oRegistro:_SerieNFCe:Text",
"L1_KEYNFCE" "A1_NREDUZ": "&IIFSubStr(self:oRegistro:_SiglaModeloNome_RazaoSocial:Text <> '2D', self:oRegistro:_ChaveNFCe:Text, '',1,20)",
"L1_SERSAT": "&IIF(self:oRegistro:_SiglaModelo:Text == '59', self:oRegistro:_SerieNFCe:Text, '')",
"L1_SERPDV"A1_PESSOA": "&IIF(UPPER(Alltrim(self:oRegistro:_SiglaModeloTipoCliente:Text)) == '2DJURIDICA', self:oRegistro:_NumeroImpressora:Text, ''J','F')",
"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" "A1_BAIRRO": "&Val(self:oRegistro:_ValorBruto:Text)",
"L1_DESCONT": "&Val(self:oRegistro:_ValorDesconto:Text)",
"L1_CGCCLI": "&self:oRegistro:_CPFCliente:LISTAENDERECOSSAIDA:_LC_ENDERECOSAIDA:_BAIRRO:Text",
"L1_MSEXP": "&DtoS(Date())",
"L1_CONDPG": "CN",
"L1_TIPO": "V",
"L1_TIPOCLI": "F",
"L1_PDV "A1_CEP": "&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( EmptyLISTAENDERECOSSAIDA:_LC_ENDERECOSAIDA:_CEP:TEXT",
"A1_COD_MUN": "&SUBSTR(self:oRegistro:_ItensLISTAENDERECOSSAIDA:_Lc_ItemCupomfiscal[nItem]LC_ENDERECOSAIDA:_IdentificacaoVendedorCidade_NumeroMunicipioIBGE:Text), SuperGetMv('MV_VENDPAD', .F., '000001'), self:DePara('SA3', self:oRegistro:_Itens:_Lc_ItemCupomfiscal[nItem]:_IdentificacaoVendedor:Text, 2) )",
"L2_QUANT,3,5)",
"A1_COMPLEM": "&Val(self:oRegistro:_ItensLISTAENDERECOSSAIDA:_Lc_ItemCupomfiscal[nItem]LC_ENDERECOSAIDA:_QuantidadeComplemento: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 "A1_EST": "&self:DePara('SAH', self:oRegistro:_ItensLISTAENDERECOSSAIDA:_Lc_ItemCupomfiscal[nItem]LC_ENDERECOSAIDA:_UnidadeMedidaEstado:Text, 2)",
"L2_TES": "&SuperGetMv('MV_TESSAI', .F., '501')",
"L2_CF": "",
"L2_EMISSAO "A1_END": "&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_VALORLISTAENDERECOSSAIDA:_LC_ENDERECOSAIDA:_LOGRADOURO:Text",
"A1_DDD": "&Val(self:oRegistro:_FormasPagamentoLISTATELEFONESSAIDA:_Lc_FormaPagamento[nItem]LC_TELEFONESAIDA:_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_AUTORIZDDD:TEXT",
"A1_TEL": "&AllTrim(self:oRegistro:_FormasPagamentoLISTATELEFONESSAIDA:_Lc_FormaPagamento[nItem]LC_TELEFONESAIDA:_Autorizacao:Text)",
"L4_NSUTEF": "&self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_NSU:Text",
"L4_PARCTEF": "&self:oRegistro:_FormasPagamento:_Lc_FormaPagamento[nItem]:_Parcela:Text"
}
]
}NUMERO: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 RecuperarCupomFiscalLCoperação RecuperarClienteLC_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 |
|---|
{
"L1A1_DESCONTCOD": 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",
"L1A1_LOJA": "01",
"L1_NUMCFIS": "157",
"L1A1_VALBRUTCEP": 890,
"L1_SERIE": """02039010",
"L1A1_SERPDVPESSOA": "F",
"L1A1_VALMERCDTNASC": 890,
"L1_FILIAL": "D MG 01"20010101",
"L1A1_ORIGEMEST": "NPB",
"L1A1_EMISSAOEND": "20191127",
"SL2": [
{
"L2_QUANT": 1,
"L2_BASECOF": 480,
"L2_ALIQCOF": 0,
"L2_BASEICM": 480,
"L2_PRODUTO": "LJTEST02",
"L2_BASEPIS": 480,
"L2_ALIQPIS": 0,
"L2_Rua Teste23/03/2020 16:55:17",
"A1_DDD": "65",
"A1_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,
"L2A1_DESCRICOMPLEM": "",
"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"
}
]
}Complemento23/03/2020 16:55:17",
"A1_COD_MUN": "2507507",
"A1_CGC": "14315476382",
"A1_NOME": "Apelido 23/03/2020 16:55:17",
"A1_NREDUZ": "Cliente 23/03/2020 16:55:17",
"A1_TEL": "763526188",
"A1_BAIRRO": "B23/03/2020 16:55:17"
}
|
Neste serviço serão utilizadas as seguintes tabelas:
...
MHQ - Mensagens Publicadas
04. DEMAIS INFORMAÇÕES
A configuração do assinante Live deverá seguir a documentação na seguinte estrutura: Assinante Live.
Exemplo de configuração do Job no AppServer.ini
...
Não há.
05. ASSUNTOS RELACIONADOS
Guia da Integração RMI - Retail Integration Management
| 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>
|


