Árvore de páginas

Integrando Nota de Entrada

Abaixo iremos mostrar como configurar o Processo de Nota de Entrada no Protheus para integra-lo com o sistema Totvs Live. Siga o Passo a Passo.

Cadastrando o Processo de Nota de Entrada

Para integrarmos Nota de entrada do tipo Devolução com o Totvs Live primeiramente é necessário acessar o cadastro do Processo para verificar se o NOTA DE ENTRADA foi criado automaticamente no Protheus.


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

2- Aguarde a criação automática do cadastro de processo referente ao NOTA DE ENTRADA.  

3- Verifique se foi criado as Informações abaixo:

Processo: NOTA DE ENTRADA  

Tabela: SF1

Chave: F1_FILIAL+F1_DOC+F1_SERIE+F1_FORNECE+F1_LOJA

Filtro Publicação: F1_CHVNFE <> '' AND F1_ORIGEM <> 'SMARTCON' AND D_E_L_E_T_ = ' '

4- Tabela Secundaria com as informações abaixo:

Tabela: SD1

Descrição: Itens da NFS de Entrada

Chave: D1_FILIAL+D1_DOC+D1_SERIE+D1_FORNECE+D1_LOJA  

Vinculando o Processo de  Caixa Sangria ao Assinante Live

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

2- Com o assinante Live previamente cadastrado, posicione no assinante Live e clique em alterar.

3- Na guia Assinantes x Processos, preencha os seguintes campos:

Processo: NOTA DE ENTRADA

Ativo: Sim

Tipo Process: Busca

Filiais Proc: Informe o código de apenas uma filial para buscar o Processo. (todas as lojas abaixo do sistema satélite serão retornadas)

Configuração: Preencha esta campo de acordo com a sua URL da API  RecuperarNotaFiscalLC_Integracao_Xml , como mostra o exemplo abaixo:

{
    "url": "XXXXXXXXXXXX/PracticoLive/LiveConnector/FacadeIntegracao.svc?wsdl",
    "operacao": "RecuperarNotaFiscalLC_Integracao_Xml",
    "tagretorno": "<LC_TicketNotaFiscal>",
    "SD1": "self:oRegistro:_Itens:_Lc_ItemNotaFiscal",
	 "ChaveUni": [
        "CodigoLoja",
        "Serie",
		"NumeroControle"
    ]
}

Layout Envio: Preencha este campo de acordo com o exemplo abaixo: Lembrando que é permitido utilizar macro execuções no Layout abaixo, após o &.

&"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:liv='http://LiveConnector/'>
	<soapenv:Header/>
	<soapenv:Body>
		<liv:RecuperarNotaFiscalLC_Integracao_Xml>
			<liv:codigoSistemaSatelite>" + self:oLive:getSatelite(self) + "</liv:codigoSistemaSatelite>
			<liv:xmlIdentificacao><![CDATA[<?xml version='1.0'?><LC_Identificacao><Chave>" + self:oLive:getToken(self) + "</Chave><CodigoSistemaSatelite>" + self:oLive:getSatelite(self) + "</CodigoSistemaSatelite></LC_Identificacao>]]></liv:xmlIdentificacao>
		</liv:RecuperarNotaFiscalLC_Integracao_Xml>
	</soapenv:Body>
</soapenv:Envelope>"

Layout Publicação:  Layout que será utilizado para gerar a Publicação (tabela MHQ), especificamente o campo MHQ_MENSAG

Obs: Os campos abaixo são configuráveis conforme a sua necessidade após o &. Podendo incluir mais campos e chamada de funções para preenchimento.

{
	"F1_FILIAL": "&self:DePara('SM0', self:oRegistro:_Destinatario:Text, 1, 0)",
	"F1_CHVNFE": "&self:oRegistro:_ChaveNFe:Text",
	"F1_EMISSAO": "&DtoS( CtoD( SubStr(self:oRegistro:_DataEmissao:Text, 1, 10) ) )",
	"F1_FORNECE": "&self:DePara('SA1', self:oRegistro:_Emitente:Text, 2, 0)",
	"F1_LOJA": "&SuperGetMv('MV_LOJPAD', .F., '01')",
	"F1_DOC": "",
	"F1_SERIE": "&self:oRegistro:_Serie:Text",
	"F1_COND": "001",
	"F1_VALMERC": "&self:oRegistro:_ValorLiquido:Text",
	"F1_VALBRUT": "&self:oRegistro:_ValorBruto:Text",
	"F1_TIPO": "D",
	"F1_FORMUL": "S",
	"F1_DESCONT": "&self:oRegistro:_ValorDesconto:Text",
	"F1_DTDIGIT": "&DtoS( CtoD( SubStr(self:oRegistro:_DataMovimento:Text, 1, 10) ) )",
	"F1_ESPECIE": "SPED",
	"F1_MSEXP": "&DtoS(Date())",
	"F1_DAUTNFE": "&DtoS( CtoD( SubStr(self:oRegistro:_DataMovimento:Text, 1, 10) ) )",
	"F1_HAUTNFE": "&SubStr(self:oRegistro:_DataMovimento:Text, 12,8)",
	"F1_HORA": "&SubStr(self:oRegistro:_DataMovimento:Text, 12, 8)",
	"F1_ORIGEM": "SMARTCON",
	"SD1": [
		{
			"D1_FILIAL": "&self:DePara('SM0', self:oRegistro:_Destinatario:Text, 1, 0)",
			"D1_COD": "&self:oRegistro:_Itens:_Lc_ItemNotaFiscal[nItem]:_CodigoProduto:Text",
			"D1_ITEM": "&Right( AllTrim(self:oRegistro:_Itens:_Lc_ItemNotaFiscal[nItem]:_NumeroItem:Text), TamSx3('D1_ITEM')[1])",
			"D1_QUANT": "&self:oRegistro:_Itens:_Lc_ItemNotaFiscal[nItem]:_Quantidade:Text",
			"D1_VUNIT": "&self:oRegistro:_Itens:_Lc_ItemNotaFiscal[nItem]:_PrecoUnitario:Text",
			"D1_TOTAL": "&self:oRegistro:_Itens:_Lc_ItemNotaFiscal[nItem]:_ValorLiquidoItem:Text",
			"D1_LOCAL": "&SuperGetMv('MV_LOCPAD', .F., '01',self:DePara('SM0', self:oRegistro:_Destinatario:Text, 1, 0))",
			"D1_UM": "&self:DePara('SAH', self:oRegistro:_Itens:_Lc_ItemNotaFiscal[nItem]:_UnidadeMedida:Text, 2, 0)",
			"D1_TES": "&SuperGetMv('LJ_TESTROC', .F., '',self:DePara('SM0', self:oRegistro:_Destinatario:Text, 1, 0))",
			"D1_CF": "&StrTran(self:oRegistro:_Itens:_Lc_ItemNotaFiscal[nItem]:_OperacaoFiscal:Text, '.', '')",
			"D1_EMISSAO": "&DtoS( CtoD( SubStr(self:oRegistro:_DataEmissao:Text, 1, 10) ) )",
			"D1_DTDIGIT": "&DtoS( CtoD( SubStr(self:oRegistro:_DataEmissao:Text, 1, 10) ) )",
			"D1_TIPO": "D",
			"D1_FORMUL": "S",
			"D1_SERIE": "&self:oRegistro:_Serie:Text",
			"D1_TP": "&self:DePara('SAH', self:oRegistro:_Itens:_Lc_ItemNotaFiscal[nItem]:_UnidadeMedida:Text, 2, 0)",
			"D1_FILORI": "&self:DePara('SM0', self:oRegistro:_Itens:_Lc_ItemNotaFiscal[nItem]:_CNPJLojaOrigem:Text, 1, 0)",
			"D1_NFORI": "&self:LayDocOri(nItem,'D1_NFORI')",
			"D1_SERIORI": "&self:LayEstAuto('LG_SERIE', SubStr(self:oRegistro:_Itens:_Lc_ItemNotaFiscal[nItem]:_ChaveAcessoOrigem:Text, 21, 2), self:oRegistro:_Itens:_Lc_ItemNotaFiscal[nItem]:_SerieDoctoOrigem:Text, self:oRegistro:_Itens:_Lc_ItemNotaFiscal[nItem]:_SerieEquipamentoOrigem:Text, self:oRegistro:_Itens:_Lc_ItemNotaFiscal[nItem]:_CNPJLojaOrigem:Text)",
			"D1_ITEMORI": "&self:LayDocOri(nItem,'D1_ITEMORI')"
		}
	]
}


Exemplo da configuração do Processo Nota de Entrada no assinante Live:


Fluxo de integração

Após ter realizado as configurações acima a integração da Nota de Entrada seguirá o seguinte fluxo:

Com os serviços RMIPUBLICA, RMIDISTRIB e RMIENVIA configurados e ativos, será gerado as publicações na tabela MHQ.

Após a busca da publicação sera realizado a distribuição das publicações do Caixa Sangria para o Assinante Live na tabela MHR.

Com as distribuições realizadas o serviço RMIENVIA realizara o envio da Nota de Entrada para o Totvs Protheus, após a finalização do serviço RMIENVIA, no campo MHR_ENVIO, será gravado o json que enviamos para o Protheus e no campo MHR_RETORN é gravado a mensagem de retorno do Live, se obteve sucesso ou não na inclusão da Nota de Entrada de Devolução.

  • Sem rótulos