Para vendas NFCE com desconto NO TOTAL, a integração considerará sempre como desconto NO ITEM, pois o xml no NFCE-Sefaz sempre considera o desconto no item , independente da forma como foi praticado o desconto no PDV. Para evitar impactos de base de cálculos nos impostos , não será realizada nenhuma conversão de valores.


Campo: D2_CSOSN Não é gravado em uma venda pelo venda assistida, porem via integração é, apos analise identificamos que o campo é utilizado somente no NFESEFAZ para envio de uma mensagem nas observações da nota, portanto não foi encontrado nenhum impacto no processo de venda.


Cadastrando o Processo de VENDA

Para integrarmos o processo VENDA com o PdvSync primeiramente é necessário acessar o cadastro do Processo para verificar se o processo VENDA 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 processo referente a VENDA.  

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

Processo: VENDA

Tabela: SL1

Chave: L1_FILIAL+L1_NUM

Vinculando o Processo de VENDA ao Assinante PdvSync

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

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

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

Processo: VENDA

Ativo: Sim

Tipo Process: Busca

Filiais Proc: Informe o código das filiais que deseja Buscar o Processo

Configuração: Preencha este campo com as configurações do processo de VENDA. A URL deve ser preenchida com o caminho da API de VENDA, como mostra o exemplo abaixo:

{
	"url": "https://...comercial.../api/retaguarda/vendaMensagens/",
	"listasPublicacao": {
		"SL2": "self:oRegistro['VendaItems']",
		"SL4": "self:oRegistro['VendaPagamentos']"
	},
	"ChaveUni": [
		"numeroLoja",
		"cupom",
		"serieNota"
	]
}

Layout Envio: Preencha este campo de acordo com o exemplo abaixo: 

{
	"listIdProprietario": ""
}

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

{
    "L1_FILIAL": "&self:oRegistro['Loja']['IdRetaguarda']",
    "L1_CLIENTE": "&IIF( Empty(self:oRegistro['IdentificacaoCliente']), SuperGetMv('MV_CLIPAD', .F., '000001'), self:DePara('SA1', self:oRegistro['IdentificacaoCliente'], 2, 0) )",
    "L1_LOJA": "&IIF( Empty(self:oRegistro['IdentificacaoCliente']), SuperGetMv('MV_LOJAPAD', .F., '01'), self:DePara('SA1', self:oRegistro['IdentificacaoCliente'], 3, 0) )",
    "L1_OPERADO": "C06",
    "L1_EMISSAO": "&self:oRegistro['VendaData']",
    "L1_HORA": "&Substr(self:oRegistro['VendaData'],12,8)",
    "L1_EMISNF": "&self:oRegistro['VendaData']",
    "L1_DTLIM": "&self:oRegistro['VendaData']",
    "L1_NUMMOV": "&SubStr(cValToChar(self:oRegistro['IdCaixa']),1,2)",
    "L1_NUMCFIS": "&IIF( self:oRegistro['ModeloFiscal'] == 1, self:oXmlSefaz:get( , {'ide', 'nCFe'}, ''), IIF(self:oRegistro['ModeloFiscal'] == 2, self:oXmlSefaz:get( , {'ide', 'nNF'}, ''), self:oRegistro['Ccf']) )",
    "L1_DOC": "&IIF( self:oRegistro['ModeloFiscal'] == 1, self:oXmlSefaz:get( , {'ide', 'nCFe'}, ''), IIF(self:oRegistro['ModeloFiscal'] == 2, self:oXmlSefaz:get( , {'ide', 'nNF'}, ''), self:oRegistro['Ccf']) )",
    "L1_SERIE": "&self:LayEstAuto('LG_SERIE')",
    "L1_SERPDV": "&cValToChar(self:oRegistro['SerieNota'])",
    "L1_SERSAT": "&IIF(self:oRegistro['ModeloFiscal'] == 1,self:oXmlSefaz:get( , {'ide', 'nserieSAT'}, ''), '')",
    "L1_KEYNFCE": "&self:oRegistro['Chaveacesso']",
    "L1_COMIS": 0,
    "L1_VLRTOT": "&self:oXmlSefaz:getTotal({'ICMSTot', 'vProd'}) - self:oXmlSefaz:getTotal({'ICMSTot', 'vDesc'}, 0) - self:oXmlSefaz:getTotal({'DescAcrEntr', 'vDescSubtot'}, 0)",
    "L1_VALBRUT": "&self:oXmlSefaz:getTotal({'ICMSTot', 'vProd'}) - self:oXmlSefaz:getTotal({'ICMSTot', 'vDesc'}, 0) - self:oXmlSefaz:getTotal({'DescAcrEntr', 'vDescSubtot'}, 0)",
    "L1_VLRLIQ": "&self:oXmlSefaz:getTotal({'ICMSTot', 'vProd'}) - self:oXmlSefaz:getTotal({'ICMSTot', 'vDesc'}, 0) - self:oXmlSefaz:getTotal({'DescAcrEntr', 'vDescSubtot'}, 0)",
    "L1_VALMERC": "&self:oXmlSefaz:getTotal({'ICMSTot', 'vProd'})",
    "L1_DESCONT": "&IIF( self:oRegistro['ModeloFiscal'] == 2, 0, self:oXmlSefaz:getTotal({'DescAcrEntr', 'vDescSubtot'}, 0) )",
    "L1_DESPESA": "&self:oXmlSefaz:getTotal({'ICMSTot', 'vOutro'}, 0)",
    "L1_FRETE": "&self:oXmlSefaz:getTotal({'ICMSTot', 'vFrete'}, 0)",
    "L1_SEGURO": "&self:oXmlSefaz:getTotal({'ICMSTot', 'vSeg'}, 0)",
    "L1_ORIGEM": "N",
    "L1_CGCCLI": "&IIF( Empty(self:oRegistro['CpfCnpjConsumidor']), '', self:oRegistro['CpfCnpjConsumidor'] )",
    "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:LayEstAuto('LG_PDV')",
    "L1_ESTACAO": "&self:LayEstAuto('LG_CODIGO')",
    "L1_INDPRES": "&self:oXmlSefaz:get( , {'ide', 'indPres'}, '')",
    "SL2": [
        {
            "L2_FILIAL": "&self:oRegistro['Loja']['IdRetaguarda']",
            "L2_PRODUTO": "&self:oXmlSefaz:getDet({'prod', 'cProd'}, self:oRegistro['VendaItems'][nItem]['Sequencia'])",
            "L2_POSIPI": "&self:oXmlSefaz:getDet({'prod', 'NCM'}, self:oRegistro['VendaItems'][nItem]['Sequencia'])",
            "L2_ITEM": "&StrZero(self:oRegistro['VendaItems'][nItem]['Sequencia'], TamSx3('L2_ITEM')[1])",
            "L2_DESCRI": "&self:oXmlSefaz:getDet({'prod', 'xProd'}, self:oRegistro['VendaItems'][nItem]['Sequencia'])",
            "L2_QUANT": "&self:oXmlSefaz:getDet({'prod', 'qCom'}, self:oRegistro['VendaItems'][nItem]['Sequencia'])",
            "L2_VRUNIT": "&self:oXmlSefaz:getDet({'prod', 'vUnCom'}, self:oRegistro['VendaItems'][nItem]['Sequencia']) - ( ( self:oXmlSefaz:getDet({'prod', 'vDesc'}, self:oRegistro['VendaItems'][nItem]['Sequencia'], 0) + self:oXmlSefaz:getDet({'prod', 'vRatDesc'}, self:oRegistro['VendaItems'][nItem]['Sequencia'], 0) ) / self:oXmlSefaz:getDet({'prod', 'qCom'}, self:oRegistro['VendaItems'][nItem]['Sequencia']) )",
            "L2_PRCTAB": "&self:oXmlSefaz:getDet({'prod', 'vUnCom'}, self:oRegistro['VendaItems'][nItem]['Sequencia'])",
            "L2_VLRITEM": "&self:oXmlSefaz:getDet({'prod', 'vProd'}, self:oRegistro['VendaItems'][nItem]['Sequencia']) - ( self:oXmlSefaz:getDet({'prod', 'vDesc'}, self:oRegistro['VendaItems'][nItem]['Sequencia'], 0) + self:oXmlSefaz:getDet({'prod', 'vRatDesc'}, self:oRegistro['VendaItems'][nItem]['Sequencia'], 0) )",
            "L2_LOCAL": "&SuperGetMv('MV_LOCPAD', .F., '01')",
            "L2_UM": "&self:oXmlSefaz:getDet({'prod', 'uCom'}, self:oRegistro['VendaItems'][nItem]['Sequencia'])",
            "L2_VALDESC": "&self:oXmlSefaz:getDet({'prod', 'vDesc'}, self:oRegistro['VendaItems'][nItem]['Sequencia'], 0)",
            "L2_DESCPRO": "&self:oXmlSefaz:getDet({'prod', 'vRatDesc'}, self:oRegistro['VendaItems'][nItem]['Sequencia'], 0)",
            "L2_TES": "&RmiTesProd(self:oXmlSefaz:getDet({'prod', 'cProd'}, self:oRegistro['VendaItems'][nItem]['Sequencia']))",
            "L2_DOC": "&IIF( self:oRegistro['ModeloFiscal'] == 1, self:oXmlSefaz:get( , {'ide', 'nCFe'}, ''), IIF(self:oRegistro['ModeloFiscal'] == 2, self:oXmlSefaz:get( , {'ide', 'nNF'}, ''), self:oRegistro['Ccf']) )",
            "L2_SERIE": "&self:LayEstAuto('LG_SERIE')",
            "L2_ESPECIE": "&IIF( self:oRegistro['ModeloFiscal'] == 1, 'SATCE', IIF(self:oRegistro['ModeloFiscal'] == 2, 'NFCE', 'ECF') )",
            "L2_EMISSAO": "&self:oRegistro['VendaData']",
            "L2_VEND": "&IIF( Empty(self:oRegistro['VendaItems'][nItem]['Vendedor']['IdRetaguarda']),SuperGetMv('MV_VENDPAD', .F., '000001'),self:GetCadAux(self:oRegistro['VendaItems'][nItem]['Vendedor']['IdRetaguarda'],'OPERADOR DE LOJA','VENDEDOR'))",
            "L2_CF": "&self:oXmlSefaz:getDet({'prod', 'CFOP'}, self:oRegistro['VendaItems'][nItem]['Sequencia'])",
            "L2_PICM": "&self:oXmlSefaz:getDetIcms('pICMS', self:oRegistro['VendaItems'][nItem]['Sequencia'], 0)",
            "L2_VALICM": "&self:oXmlSefaz:getDetIcms('vICMS', self:oRegistro['VendaItems'][nItem]['Sequencia'], 0)",
			"L2_BASEICM": "&IIF( self:oRegistro['ModeloFiscal'] == 1, 	self:oXmlSefaz:getDet({'prod', 'vItem'}, self:oRegistro['VendaItems'][nItem]['Sequencia'], 0),self:oXmlSefaz:getDetIcms('vBC', self:oRegistro['VendaItems'][nItem]['Sequencia'], 0) )",
             "L2_MODBC": "&self:oXmlSefaz:getDetIcms('modBC', self:oRegistro['VendaItems'][nItem]['Sequencia'], '0')",
            "L2_ORIGEM": "&self:oXmlSefaz:getDetIcms('Orig', self:oRegistro['VendaItems'][nItem]['Sequencia'], '0')",
            "L2_CLASFIS": "&self:oXmlSefaz:getDetIcms('Orig', self:oRegistro['VendaItems'][nItem]['Sequencia'], ' ') + self:oXmlSefaz:getDetIcms('CST', self:oRegistro['VendaItems'][nItem]['Sequencia'], '  ')",
            "L2_VALPS2": "&IIF( RMIRetApur(self:oRegistro['IdentificacaoCliente']),self:oXmlSefaz:getDetPIS('vPIS', self:oRegistro['VendaItems'][nItem]['Sequencia'], 0),0)",
            "L2_BASEPS2": "&IIF( RMIRetApur(self:oRegistro['IdentificacaoCliente']),self:oXmlSefaz:getDetPIS('vBC', self:oRegistro['VendaItems'][nItem]['Sequencia'], 0),0)",
            "L2_ALIQPS2": "&IIF( RMIRetApur(self:oRegistro['IdentificacaoCliente']),self:oXmlSefaz:getDetPIS('pPIS', self:oRegistro['VendaItems'][nItem]['Sequencia'], 0) * 100,0)",
            "L2_CSTPIS": "&self:oXmlSefaz:getDetPIS('CST', self:oRegistro['VendaItems'][nItem]['Sequencia'], '')",
			"L2_VALPIS": "&IIF( !RMIRetApur(self:oRegistro['IdentificacaoCliente']),self:oXmlSefaz:getDetPIS('vPIS', self:oRegistro['VendaItems'][nItem]['Sequencia'], 0),0)",
            "L2_BASEPIS": "&IIF( !RMIRetApur(self:oRegistro['IdentificacaoCliente']),self:oXmlSefaz:getDetPIS('vBC', self:oRegistro['VendaItems'][nItem]['Sequencia'], 0),0)",
            "L2_ALIQPIS": "&IIF( !RMIRetApur(self:oRegistro['IdentificacaoCliente']),self:oXmlSefaz:getDetPIS('pPIS', self:oRegistro['VendaItems'][nItem]['Sequencia'], 0) * 100,0)",
            "L2_VALCF2": "&IIF( RMIRetApur(self:oRegistro['IdentificacaoCliente']),self:oXmlSefaz:getDetCOF('vCOFINS', self:oRegistro['VendaItems'][nItem]['Sequencia'], 0),0)",
            "L2_BASECF2": "&IIF( RMIRetApur(self:oRegistro['IdentificacaoCliente']),self:oXmlSefaz:getDetCOF('vBC', self:oRegistro['VendaItems'][nItem]['Sequencia'], 0),0)",
            "L2_ALIQCF2": "&IIF( RMIRetApur(self:oRegistro['IdentificacaoCliente']),self:oXmlSefaz:getDetCOF('pCOFINS', self:oRegistro['VendaItems'][nItem]['Sequencia'], 0) * 100,0)",
            "L2_CSTCOF": "&self:oXmlSefaz:getDetCOF('CST', self:oRegistro['VendaItems'][nItem]['Sequencia'], '')",
			"L2_VALCOFI": "&IIF( !RMIRetApur(self:oRegistro['IdentificacaoCliente']),self:oXmlSefaz:getDetCOF('vCOFINS', self:oRegistro['VendaItems'][nItem]['Sequencia'], 0),0)",
            "L2_BASECOF": "&IIF( !RMIRetApur(self:oRegistro['IdentificacaoCliente']),self:oXmlSefaz:getDetCOF('vBC', self:oRegistro['VendaItems'][nItem]['Sequencia'], 0),0)",
            "L2_ALIQCOF": "&IIF( !RMIRetApur(self:oRegistro['IdentificacaoCliente']),self:oXmlSefaz:getDetCOF('pCOFINS', self:oRegistro['VendaItems'][nItem]['Sequencia'], 0) * 100,0)",
            "L2_BRICMS": "&self:oXmlSefaz:getDetIcms('vBCSTRet', self:oRegistro['VendaItems'][nItem]['Sequencia'], '0')",
            "L2_ICMSRET": "&self:oXmlSefaz:getDetIcms('vICMSSTRet', self:oRegistro['VendaItems'][nItem]['Sequencia'], '0')",
            "L2_BASFECP": "&IIF( self:oXmlSefaz:getDetIcms('vFCP', self:oRegistro['VendaItems'][nItem]['Sequencia'], 0) > 0, self:oXmlSefaz:getDetIcms('vBC', self:oRegistro['VendaItems'][nItem]['Sequencia'], 0), 0)",
            "L2_ALQFECP": "&self:oXmlSefaz:getDetIcms('pFCP', self:oRegistro['VendaItems'][nItem]['Sequencia'], '0')",
            "L2_VALFECP": "&self:oXmlSefaz:getDetIcms('vFCP', self:oRegistro['VendaItems'][nItem]['Sequencia'], '0')",
            "L2_ALQFCST": "&self:oXmlSefaz:getDetIcms('pFCPSTRet', self:oRegistro['VendaItems'][nItem]['Sequencia'], '0')",
            "L2_VFECPST": "&self:oXmlSefaz:getDetIcms('vFCPSTRet', self:oRegistro['VendaItems'][nItem]['Sequencia'], '0')",
            "L2_PREDIC": "&IiF(Val(self:oXmlSefaz:getDetIcms('pRedBC', self:oRegistro['VendaItems'][nItem]['Sequencia'], '0')) > 0,100-(Val(self:oXmlSefaz:getDetIcms('pRedBC', self:oRegistro['VendaItems'][nItem]['Sequencia'],'0'))),0)"
        }
    ]
}