Árvore de páginas

Versões comparadas

Chave

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

PE01NFESEFAZ_Altera dados do produto volume especie peso liquido e peso bruto.

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 dados do produto, neste caso altera peso liquido, peso bruto, volume e especie na geração xml da nota, antes de transmitir.

 

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:

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 aAreaSB1		:= {}
Local aAreaSAH		:= {}
Local nPesoBr		:= 0
Local nPesoLiq		:= 0
Local y 			:= 0
Local nPos 			:= 0
Local x				:= 0
//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.
			If nPos:= aScan(aEspVol,{|x| alltrim(x[1]) == alltrim(SAH->AH_UMRES)})
				aEspVol[nPos][3] := APROD[Y][9] * nPesoLiq
				aEspVol[nPos][4] := APROD[Y][9] * nPesoBr
			EndIf
		EndIf
	EndIf
Next
RestArea(aAreaSB1)//Devolve Area da tabela SB1
RestArea(aAreaSAH)//Devolve Area da tabela SAH
//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)
	
return(aRetorno)