Histórico da Página
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: |
|
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 tabele tabela SC5 e tabela SF2 o campo deve ter a mesma descrição somente mudando o ultimo . Os campos devem conter o mesmo nome, mudando apenas o último caractere que é numérico com a quantidade de campo que for necessário para atender a necessidade.
Campos da Tabela SC5
Campo | C5_PLIQUI1 |
---|---|
Tipo | N |
Tamanho | 11 |
Decimal | 4 |
Formato | @E 999,999.9999 |
Título | Texto do cliente |
Descrição | Texto do cliente |
Usado | Sim |
Campo | C5_PBRUTO1 |
---|---|
Tipo | N |
Tamanho | 11 |
Decimal | 4 |
Formato | @E 999,999.9999 |
Título | Texto do cliente |
Descrição | Texto do cliente |
Usado | Sim |
Replique a criação dos campos para acompanhar os demais volumes/espécies:
Campo | C5_PLIQUI2 e C5_PBRUTO2 |
---|---|
Campo | C5_PLIQUI3 e C5_PBRUTO3 |
Campo | C5_PLIQUI4 e C5_PBRUTO4 |
Campos da Tabela SF2
Campo | F2_PLIQUI1 |
---|---|
Tipo | N |
Tamanho | 11 |
Decimal | 4 |
Formato | @E 999,999.9999 |
Título | Texto do cliente |
Descrição | Texto do cliente |
Usado | Sim |
Campo | F2_PBRUTO1 |
---|---|
Tipo | N |
Tamanho | 11 |
Decimal | 4 |
Formato | @E 999,999.9999 |
Título | Texto 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: |
|
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
#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: |
|
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.
Replique a criação dos campos para acompanhar os demais volumes/espécies:
Campo | F2_PLIQUI2 e F2_PBRUTO2 |
---|---|
Campo | F2_PLIQUI3 e F2_PBRUTO3 |
Campo | F2_PLIQUI4 e F2_PBRUTO4 |
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: |
|
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
#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 //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) |