Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Migration of unmigrated content due to installation of a new plugin
E01NFESEFAZ_Altera dados do produto volume especie peso liquido e peso bruto

Exemplo para customizar a atribuição de peso líquido e peso bruto para volume/espécie 1, volume/espécie 2, volume/espécie 3, volume/espécie 4 na DANFE.

Características do Requisito

Linha de Produto:

Microsiga Protheus®

Segmento:

Serviços

Módulo:

Faturamento

Rotina:

Rotina

Nome Técnico

NFESEFAZ.

Geração de XML da nota

Descrição

Ponto de entrada que permite alterada alterar dados do produto, neste caso altera peso liquido, peso líquido e peso bruto , por volume e especie espécie na geração xml da nota, antes de transmitir.

Os campos criados na tabelas SC5 deve ser alimentados manualmente e este valor será transportado para a tabela SF2.

Para transportar os campos da SC5 para SF2 use o ponto de entrada (M461LSF2-Alterar SF2 após gravação).

 

Exemplo de campo a ser criado

Criar os campos de peso líquido e bruto na tabela SC5 e tabela SF2. Os campos devem conter o mesmo nome, mudando apenas o último caractere que é numérico.

Campos da Tabela SC5

CampoC5_PLIQUI1
TipoN
Tamanho11
Decimal4
Formato@E 999,999.9999                              
TítuloTexto do cliente
Descrição Texto do cliente
UsadoSim
CampoC5_PBRUTO1
TipoN
Tamanho11
Decimal4
Formato@E 999,999.9999                              
TítuloTexto do cliente
Descrição Texto do cliente
UsadoSim

Replique a criação dos campos para acompanhar os demais volumes/espécies:

CampoC5_PLIQUI2 e C5_PBRUTO2
CampoC5_PLIQUI3 e C5_PBRUTO3
CampoC5_PLIQUI4 e C5_PBRUTO4


Campos da Tabela SF2

CampoF2_PLIQUI1
TipoN
Tamanho11
Decimal4
Formato@E 999,999.9999                              
TítuloTexto do cliente
Descrição Texto do cliente
UsadoSim
CampoF2_PBRUTO1
TipoN
Tamanho11
Decimal4
Formato@E 999,999.9999                              
TítuloTexto do cliente
Descrição Texto do cliente
Usado Sim

Replique a criação dos campos para acompanhar os demais volumes/espécies:

CampoF2_PLIQUI2 e F2_PBRUTO2
CampoF2_PLIQUI3 e F2_PBRUTO3
CampoF2_PLIQUI4 e F2_PBRUTO4

Ponto de Entrada

Descrição:

PE01NFESEFAZ-Ponto de entrada que permite alterar dados de produto/volume/especie/peso liquido/peso bruto na geração do xml para transmitir a nota.

Localização:

BRA

Eventos:

alteração de array aParam para geração de dados do xml e antes da transmissão da nota

Programa Fonte:

NFESEFAZ.PRW

 U_XmlNfeSef()

Retorno:

Nome

Tipo

Descrição

Obrigatório

 aRetorno

Array

Array contendo dados para a nota

sim

 

Exemplo

 Exemplo:

Bloco de código
languagecpp
titleExemplo:
#include 'protheus.ch'
#include 'parmtype.ch'
user function PE01NFESEFAZ()
Local aProd     	:= PARAMIXB[1]
Local cMensCli  	:= PARAMIXB[2]
Local cMensFis  	:= PARAMIXB[3]
Local aDest     	:= PARAMIXB[4] 
Local aNota     	:= PARAMIXB[5]
Local aInfoItem 	:= PARAMIXB[6]
Local aDupl     	:= PARAMIXB[7]
Local aTransp   	:= PARAMIXB[8]
Local aEntrega  	:= PARAMIXB[9]
Local aRetirada 	:= PARAMIXB[10]
Local aVeiculo  	:= PARAMIXB[11]
Local aReboque  	:= PARAMIXB[12]
Local aNfVincRur	:= PARAMIXB[13]
Local aEspVol     	:= PARAMIXB[14]
Local aRetorno      := {}
Local aAreaSB1nPesoLiq		:= {}
Local aAreaSAH		:= {}0
Local nPesoBr		:= 0
Local nPesoLiq		:= 0
Local y x				:= 0
Local nPos cScan			:= 0
Local x				:= 0"1"
//O retorno deve ser exatamente nesta ordem e passando o conteúdo completo dos arrays
//pois no rdmake nfesefaz é atribuido o retorno completo para as respectivas variáveis
//Ordem:
//      aRetorno[1] -> aProd
//      aRetorno[2] -> cMensCli
//      aRetorno[3] -> cMensFis
//      aRetorno[4] -> aDest
//      aRetorno[5] -> aNota
//      aRetorno[6] -> aInfoItem
//      aRetorno[7] -> aDupl
//      aRetorno[8] -> aTransp
//      aRetorno[9] -> aEntrega
//      aRetorno[10] -> aRetirada
//      aRetorno[11] -> aVeiculo
//      aRetorno[12] -> aReboque
//      aRetorno[13] -> aNfVincRur
//      aRetorno[14] -> aEspVol
aAreaSB1 := SB1->(GetArea())//Salvando area para não perder o posicionamento
aAreaSAH := SAH->(GetArea())
dbSelectArea("SB1")//Abrindo Area SB1 Tabela de produto
dbSetOrder(1)
dbSelectArea("SAH")//Abrindo Area SAH Tabela de unidade de medida
dbSetOrder(1)
For y := 1 to len(APROD)//Loop que percorre o Array produto para alimentar o peso liquido e peso bruto
	If SB1->(MsSeek(xFilial("SB1")+APROD[Y][2]))
	nPesoBr		:= SB1->B1_PESBRU
	nPesoLiq	:= SB1->B1_PESO
		If SAH->(MsSeek(xFilial("SAH")+APROD[Y][11])) //Condição que verifica unidade de medida para calcular o peso liquido e peso bruto a partir do Volume x unidade de medida.
	SF2")
If SF2->F2_DOC == aNota[2]
	For x:=1 to Len(aEspVol)
		cEspecie := Upper(FieldGet(FieldPos("F2_ESPECI"+cScan)))
		If nPos:= aScan(aEspVol,{|x| alltrim(x[1]) == alltrim(SAH->AH_UMRES)})
	cEspecie)})
			nPesoLiq := FieldGet(FieldPos("F2_PLIQUI"+cScan))
			nPesoBr	 :=	FieldGet(FieldPos("F2_PBRUTO"+cScan))
			aEspVol[nPos][3] := APROD[Y][9] * nPesoLiq
				aEspVol[nPos][4] := APROD[Y][9] * nPesoBr
			EndIf
		EndIfcScan:=Soma1(cScan,1)
	EndIf
Next
RestArea(aAreaSB1)//Devolve Area da tabela SB1
RestArea(aAreaSAH)//Devolve Area da tabela SAH
//EndIf
//Alimenta array aRtorno que no nfesefaz será o aParam
aadd(aRetorno,aProd) 
aadd(aRetorno,cMensCli)
aadd(aRetorno,cMensFis)
aadd(aRetorno,aDest)
aadd(aRetorno,aNota)
aadd(aRetorno,aInfoItem)
aadd(aRetorno,aDupl)
aadd(aRetorno,aTransp)
aadd(aRetorno,aEntrega)
aadd(aRetorno,aRetirada)
aadd(aRetorno,aVeiculo)
aadd(aRetorno,aReboque)
aadd(aRetorno,aNfVincRur)
aadd(aRetorno,aEspVol)
	
returnReturn(aRetorno)