Árvore de páginas

Versões comparadas

Chave

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

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.

 

Exemplo de campo a ser criado

Criar os campos na tabele SC5 e tabela SF2 o campo deve ter a mesma descrição somente mudando o ultimo caractere que é numérico com a quantidade de campo que for necessário para atender a necessidade.

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

 

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

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 nPesoLiq		:= 0
Local nPesoBr		:= 0
Local x				:= 0
Local cScan			:= "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)
dbSelectArea("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(cEspecie)})
			nPesoLiq := FieldGet(FieldPos("F2_PLIQUI"+cScan))
			nPesoBr	 :=	FieldGet(FieldPos("F2_PBRUTO"+cScan))
			aEspVol[nPos][3] := nPesoLiq
			aEspVol[nPos][4] := nPesoBr
		EndIf
		cScan:=Soma1(cScan,1)
	Next
EndIf
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)

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.

 

 

Campo

 

(X3_CAMPO)

 

Tipo

 

(X3_TIPO)

 

Tamanho

 

(X3_TAMANHO)

 

Decimal

 

(X3_DECIMAL)

 

Formato

 

(X3_PICTURE)

 

Título

 

(X3_TITULO)

 

Descrição

 

(X3_DESCRIC)

 

Nível

 

(X3_NÍVEL)

 

Usado

 

(X3_USADO) Informe Sim ou Não

 

Obrigatório

 

(X3_OBRIGAT) Informe Sim ou Não

 

Browse

 

(X3_BROWSE) Informe Sim ou Não

 

Opções

 

(X3_CBOX)

 

When

 

(X3_WHEN)

 

Relação

 

(X3_RELACAO)

 

Val. Sistema

 

(X3_VALID)

 

Help

 

Descreva o conteúdo informado para Help de Campo no ATUSX

 





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 nPesoLiq		:= 0
Local nPesoBr		:= 0
Local x				:= 0
Local cScan			:= "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)
dbSelectArea("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(cEspecie)})
			nPesoLiq := FieldGet(FieldPos("F2_PLIQUI"+cScan))
			nPesoBr	 :=	FieldGet(FieldPos("F2_PBRUTO"+cScan))
			aEspVol[nPos][3] := nPesoLiq
			aEspVol[nPos][4] := nPesoBr
		EndIf
		cScan:=Soma1(cScan,1)
	Next
EndIf
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)