|
FOROS PROFESIONALES WINDEV, WEBDEV y WINDEV Mobile |
| | | | | |
XMLtoVariant para a DANFE Nfe do Brasil by Igor |
Iniciado por Boller, 05,may. 2023 23:37 - No hay respuesta |
| |
| | | |
|
| |
Miembro registrado 4.521 mensajes |
|
Publicado el 05,mayo 2023 - 23:37 |
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/ |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|