GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEV
,
WEBDEV
e
WINDEV Mobile
Inicio
|
Mensagens recentes
|
Conecte-se...
|
Disconnect
|
Português
Inicio
→
WINDEV 25
→
XMLtoVariant para a DANFE Nfe do Brasil by Igor
XMLtoVariant para a DANFE Nfe do Brasil by Igor
Iniciado por Boller, mai., 05 2023 11:37 PM - Sem resposta
Conecte-se…
Boller
#1
Membro registado
3.659 mensagems
Popularité : +175 (223 votes)
Publicado em maio, 05 2023 - 11:37 PM
PROCEDURE XMLtoVariant
(
pEnderecoXML
)
XMLDoc is a xmlDocument
vXMLVariant is Variant
XMLDoc
=
XMLOpen
(
pEnderecoXML
)
sChave is string
=
XMLDoc.nfeProc.NFe.infNFe
:
Id
/
/
IF sChave
=
""
/
/
sChave
=
XMLDoc.NFEPROC.NFE.INFNFE
:
ID
/
/
IF sChave
=
""
THEN
/
/
sChave
=
XMLDoc
.
.
NoeudRacine
[
1
]
.
.
NoeudFils
[
1
]
.
.
NoeudFils
[
1
]
.
.
Attribut
[
1
]
/
/
END
/
/
END
vXMLVariant.Id
=
sChave
IF sChave
=
""
THEN
vXMLVariant.Erro
=
True
RESULT vXMLVariant
END
/
/
IDE
ide is a xmlNode
FOR EACH ide OF XMLDoc.nfeProc.NFe.infNFe.ide
vXMLVariant.ide
[
ide
.
.
Name
] =
ide
.
.
Text
END
/
/
EMITENTE
emit is a xmlNode
FOR EACH emit OF XMLDoc.nfeProc.NFe.infNFe.emit
IF emit
.
.
Name
=
"enderEmit"
/
/
endereco
enderEmit is a xmlNode
FOR EACH enderEmit OF XMLDoc.nfeProc.NFe.infNFe.emit.enderEmit
vXMLVariant.emit.enderEmit
[
enderEmit
.
.
Name
] =
enderEmit
.
.
Text
END
ELSE
vXMLVariant.emit
[
emit
.
.
Name
] =
emit
.
.
Text
END
END
/
/
DESTINATARIO
dest is a xmlNode
FOR EACH dest OF XMLDoc.nfeProc.NFe.infNFe.dest
IF dest
.
.
Name
=
"enderDest"
/
/
endereco
enderDest is a xmlNode
FOR EACH enderDest OF XMLDoc.nfeProc.NFe.infNFe.dest.enderDest
vXMLVariant.dest.enderDest
[
enderDest
.
.
Name
] =
enderDest
.
.
Text
END
ELSE
vXMLVariant.dest
[
dest
.
.
Name
] =
dest
.
.
Text
END
END
/
/
ITENS
FOR EACH det OF XMLDoc.nfeProc.NFe.infNFe ON det
/
/
descrição dos itens
numItem is numeric
=
det
:
nItem
IF det.prod
.
.
Name
=
"prod"
prod is a xmlNode
FOR EACH prod OF det.prod
vXMLVariant.det
[
numItem
]
.
prod.nItem
=
numItem
vXMLVariant.det
[
numItem
]
.
prod
[
prod
.
.
Name
] =
prod
.
.
Text
END
END
/
/
total de tributos
IF det.imposto.vTotTrib
.
.
Name
=
"vTotTrib"
vXMLVariant.det
[
numItem
]
.
imposto
[
det.imposto.vTotTrib
.
.
Name
] =
det.imposto.vTotTrib
.
.
Text
END
/
/
icms
IF det.imposto.ICMS
.
.
Name
=
"ICMS"
icms is a xmlNode
FOR EACH icms OF det.imposto.ICMS
/
/
det.imposto.ICMS
icms1 is a xmlNode
FOR EACH icms1 OF icms
vXMLVariant.det
[
numItem
]
.
imposto.ICMS
[
icms1
.
.
Name
] =
icms1
.
.
Text
END
END
/
/
icmsST is a xmlNode
/
/
FOR EACH icmsST OF det.imposto.ICMS
/
/
det.imposto.ICMS
/
/
icms1 is a xmlNode
/
/
FOR EACH icms1 OF icms
/
/
vXMLVariant.det
[
numItem
]
.
imposto.ICMS
[
icms1
.
.
Name
] =
icms1
.
.
Text
/
/
END
/
/
END
END
/
/
ipi
IF det.imposto.IPI
.
.
Name
=
"IPI"
ipi is a xmlNode
FOR EACH ipi OF det.imposto.IPI
IF ipi
.
.
Name
<
>
"IPINT" AND ipi..Name
<
>
"IPITrib"
vXMLVariant.det[numItem].imposto.IPI[ipi..Name] = ipi..Text
END
ipi1 is a xmlNode
FOR EACH ipi1 OF ipi
IF ipi1..Name
<
>
""
vXMLVariant.det[numItem].imposto.IPI[ipi1..Name] = ipi1..Text
END
END
END
END
//pis
IF det.imposto.PIS..Name="PIS"
pis is a xmlNode
FOR EACH pis OF det.imposto.PIS
pis1 is a xmlNode
FOR EACH pis1 OF pis
vXMLVariant.det[numItem].imposto.PIS[pis1..Name] = pis1..Text
END
END
END
//cofins
IF det.imposto.COFINS..Name="COFINS"
cofins is a xmlNode
FOR EACH cofins OF det.imposto.COFINS
cofins1 is a xmlNode
FOR EACH cofins1 OF cofins
vXMLVariant.det[numItem].imposto.COFINS[cofins1..Name] = cofins1..Text
END
END
END
//informacao adicional
IF det.infAdProd..Name="infAdProd"
vXMLVariant.det[numItem][det.infAdProd..Name] = det.infAdProd..Text
END
END
// TOTAL
total is a xmlNode
FOR EACH total OF XMLDoc.nfeProc.NFe.infNFe.total.ICMSTot
vXMLVariant.total.ICMSTot[total..Name] = total..Text
END
// PARCELAS
i is int = 0
cobr is a xmlNode
FOR EACH cobr OF XMLDoc.nfeProc.NFe.infNFe.cobr
//faturamento
IF cobr..Name="fat" THEN
fat is a xmlNode
FOR EACH fat OF cobr
vXMLVariant.cobr.fat[fat..Name] = fat..Text
END
END
//duplicatas
IF cobr..Name="dup" THEN
i++
dup is a xmlNode
FOR EACH dup OF cobr
vXMLVariant.cobr.dup[i][dup..Name] = dup..Text
END
END
END
// INFORMACOES
infCpl is a xmlNode
FOR EACH infCpl OF XMLDoc.nfeProc.NFe.infNFe.infAdic
vXMLVariant.infAdic.infCpl = infCpl..Text
END
vXMLVariant.Erro = False
RESULT vXMLVariant
by Igor B.
--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Denunciar
0
0
→ Voltar para WINDEV 25
WINDEV 25
Français
English
Español
Portuguesa
Fermer cette fenêtre
Tipo de Pesquisa
Apenas tópicos
Todas as mensagens
Período de pesquisa
Qualquer momento
Última hora
Últimas 24 horas
Semana passada
Mês passado
Ano passado
Cancelar
Pré-visualização da sua mensagem
Adicionar imagem
Importar uma imagem de uma URL
Enviar uma imagem a partir do seu disco
Deixe um ficheiro ou clique em "Procurar ..."
ou
Cancelar
0%
WLanguage
SQL
XML, HTML
JAVA, Javascript
Texto