PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 25 → Lendo uma estrutura XSD pelo Windev - Exemplo Nfe BR
Lendo uma estrutura XSD pelo Windev - Exemplo Nfe BR
Iniciado por BOLLER, dez., 19 2019 6:23 PM - 5 respostas
Membro registado
3.655 mensagems
Popularité : +175 (223 votes)
Publicado em dezembro, 19 2019 - 6:23 PM
// Summary:
// Syntax:
// GravarNfe ()
//
// Parameters:
// None
// Return Value:
// None
//
// For instance:
// Indicate an example.
//
PROCEDURE GravarNfe()

//GRAVANDO A NFE

bOk1, bOk2, bOk3, bOk4, bOk5, bOk6 is boolean = False

nErros is int = 0

IF EDT_xml <> "" AND fFileExist(EDT_xml) = True

IF fDirectoryExist("C:\Temp\") = False
fMakeDir("C:\Temp\")
END

IF HTransactionStart("C:\Temp\Transaction.trs","XML_01_infNFe,XML_02_ide,XML_03_emit,XML_04_enderEmit,XML_05_dest,XML_06_enderDest,XML_07_retirada,XML_08_entrega,XML_09_det,XML_10_prod,XML_11_ICMS00,XML_12_PISAliq,XML_13_COFINSAliq,XML_14_ICMSTot,XML_15_transp,XML_16_transporta,XML_17_veicTransp,XML_18_reboque,XML_19_vol,XML_20_infAdic") = True

WHEN EXCEPTION IN

Tipo is string = COMBO_Tipo..DisplayedValue

BufResultado is Buffer = fLoadText(EDT_xml)

VERSAO is string = "versao="+Charact(34)+"4.00"+Charact(34)

RESULTADO is xmlDocument = XMLOpen(EDT_xml,fromFile)

//TOTAL DE ITENS
nPosIni is int = PositionOccurrence(BufResultado,"",lastRank,FromBeginning) //-4
sTOTAL_ITENS is string = Val(Replace(Middle(BufResultado,nPosIni,nPosFim-nPosIni),Charact(34),""))
nTOTAL_ITENS is int = Val(sTOTAL_ITENS)

IF nTOTAL_ITENS > 0

//EDT_Result += CR+CR+"//ID"+CR+CR
nCHAVE_N01, nCHAVE_N02, nCHAVE_N03, nCHAVE_N04, nCHAVE_N05 is 8-bytes int

//Cabeçalho
gsNfeID is string = RESULTADO.nfeProc.NFe.infNFe:Id
XML_01_infNFe.Id = RESULTADO.nfeProc.NFe.infNFe:Id
EDT_Nfe = RESULTADO.nfeProc.NFe.infNFe:Id
XML_01_infNFe.Tipo= Tipo

bAchou is boolean
IF HReadSeek(XML_01_infNFe,XML_01_infNFe.Id,gsNfeID,hIdentical) = True THEN
bAchou = True
nCHAVE_N01 = XML_01_infNFe.CHAVE_N01
bOk1 = HModify(XML_01_infNFe)
//reimportando e excluindo os itens e o total da nota
HReset(XML_14_ICMSTot)
IF HReadSeek(XML_14_ICMSTot,CHAVE_N01,nCHAVE_N01,hIdentical) = True THEN
HDelete(XML_14_ICMSTot)
END

HReset(XML_13_COFINSAliq)
IF HReadSeek(XML_13_COFINSAliq,CHAVE_N01,nCHAVE_N01,hIdentical) = True THEN
FOR EACH XML_13_COFINSAliq
IF XML_13_COFINSAliq.CHAVE_N01 = nCHAVE_N01
HDelete(XML_13_COFINSAliq)
END
END
END

HReset(XML_12_PISAliq)
IF HReadSeek(XML_12_PISAliq,CHAVE_N01,nCHAVE_N01,hIdentical) = True THEN
FOR EACH XML_12_PISAliq
IF XML_12_PISAliq.CHAVE_N01 = nCHAVE_N01
HDelete(XML_12_PISAliq)
END
END
END

HReset(XML_11_ICMS00)
IF HReadSeek(XML_11_ICMS00,CHAVE_N01,nCHAVE_N01,hIdentical) = True THEN
FOR EACH XML_11_ICMS00
IF XML_11_ICMS00.CHAVE_N01 = nCHAVE_N01
HDelete(XML_11_ICMS00)
END
END
END

HReset(XML_10_prod)
IF HReadSeek(XML_10_prod,gsNfeID,gsNfeID,hIdentical) = True THEN
FOR EACH XML_10_prod
IF XML_10_prod.gsNfeID = gsNfeID
HDelete(XML_10_prod)
END
END
END

HReset(XML_09_det)
IF HReadSeek(XML_09_det,CHAVE_N01,nCHAVE_N01,hIdentical) = True THEN
FOR EACH XML_09_det
IF XML_09_det.CHAVE_N01 = nCHAVE_N01
HDelete(XML_09_det)
END
END
END
ELSE
bAchou = False
XML_01_infNFe.CHAVE_N01 = GET_SEQ("XML_01_infNFe")
nCHAVE_N01 = XML_01_infNFe.CHAVE_N01
bOk1 = HAdd(XML_01_infNFe)
IF bOk1 = False THEN
nErros+=1
Info("xml_01")
END
END


IF bOk1 = True THEN

EDT_Chave = nCHAVE_N01
//20190618T16:38:4603:00
EDT_Data_Mov = Replace(RESULTADO.nfeProc.NFe.infNFe.ide.dhSaiEnt,"-","")
EDT_Data_Mov = Replace(EDT_Data_Mov,"T","")
EDT_Data_Mov = Replace(EDT_Data_Mov,":","")
//EDT_Result += CR+CR+"//IDE"+CR+CR
XML_02_ide.CHAVE_N01= nCHAVE_N01
XML_02_ide.cUF = RESULTADO.nfeProc.NFe.infNFe.ide.cUF
XML_02_ide.cNF = RESULTADO.nfeProc.NFe.infNFe.ide.cNF
XML_02_ide.natOp = RESULTADO.nfeProc.NFe.infNFe.ide.natOp
XML_02_ide.mod = RESULTADO.nfeProc.NFe.infNFe.ide.mod
XML_02_ide.serie = RESULTADO.nfeProc.NFe.infNFe.ide.serie
XML_02_ide.nNF = RESULTADO.nfeProc.NFe.infNFe.ide.nNF
XML_02_ide.dEmi = RESULTADO.nfeProc.NFe.infNFe.ide.dhEmi
XML_02_ide.dSaiEnt = RESULTADO.nfeProc.NFe.infNFe.ide.dhSaiEnt
XML_02_ide.tpNF = RESULTADO.nfeProc.NFe.infNFe.ide.tpNF
XML_02_ide.cMunFG = RESULTADO.nfeProc.NFe.infNFe.ide.cMunFG
XML_02_ide.tpImp = RESULTADO.nfeProc.NFe.infNFe.ide.tpImp
XML_02_ide.tpEmis = RESULTADO.nfeProc.NFe.infNFe.ide.tpEmis
XML_02_ide.cDV = RESULTADO.nfeProc.NFe.infNFe.ide.cDV
XML_02_ide.tpAmb = RESULTADO.nfeProc.NFe.infNFe.ide.tpAmb
XML_02_ide.finNFe = RESULTADO.nfeProc.NFe.infNFe.ide.finNFe
XML_02_ide.procEmi = RESULTADO.nfeProc.NFe.infNFe.ide.procEmi
XML_02_ide.verProc = RESULTADO.nfeProc.NFe.infNFe.ide.verProc

IF bAchou = False THEN

bOk2 = HAdd(XML_02_ide)

IF bOk2 = False THEN
nErros+=1
Info("XML_02")
END

END

//EDT_Result += CR+CR+"//EMITENTE"+CR+CR
XML_03_emit.CHAVE_N02 = GET_SEQ("XML_03_emit")
XML_03_emit.CHAVE_N01 = nCHAVE_N01
XML_03_emit.CNPJ = RESULTADO.nfeProc.NFe.infNFe.emit.CNPJ
XML_03_emit.xNome = RESULTADO.nfeProc.NFe.infNFe.emit.xNome
XML_03_emit.xFant = RESULTADO.nfeProc.NFe.infNFe.emit.xFant
XML_03_emit.IE = RESULTADO.nfeProc.NFe.infNFe.emit.IE

IF bAchou = False THEN
bOk3 = HAdd(XML_03_emit)
IF bOk3 = False
nErros += 1
Info("xml_03")
ELSE

nCHAVE_N02 = XML_03_emit.CHAVE_N02
//EDT_Result += CR+CR+"//ENDERECO EMITENTE"+CR+CR
XML_04_enderEmit.CHAVE_N01 = nCHAVE_N01
XML_04_enderEmit.CHAVE_N02 = nCHAVE_N02
XML_04_enderEmit.xLgr = RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.xLgr
XML_04_enderEmit.nro = RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.nro
XML_04_enderEmit.xCpl = RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.xCpl
XML_04_enderEmit.xBairro = RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.xBairro
XML_04_enderEmit.cMun = RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.cMun
XML_04_enderEmit.xMun = RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.xMun
XML_04_enderEmit.UF = RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.UF
XML_04_enderEmit.CEP = RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.CEP
XML_04_enderEmit.cPais = RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.cPais
XML_04_enderEmit.xPais = RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.xPais
XML_04_enderEmit.fone = RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.fone

IF HAdd(XML_04_enderEmit) = False THEN
nErros+=1
Info("xml_04")
ELSE
CadastrarFornecedor(XML_03_emit.CNPJ,XML_03_emit.xNome,XML_03_emit.IE,XML_04_enderEmit.fone)
END

END

ELSE
bOk3 = False
END


//EDT_Result += CR+CR+"//DESTINO"+CR+CR
XML_05_dest.CHAVE_N01 = nCHAVE_N01
XML_05_dest.CHAVE_N03 = GET_SEQ("XML_05_dest")
XML_05_dest.CNPJ = RESULTADO.nfeProc.NFe.infNFe.dest.CNPJ
XML_05_dest.xNome = RESULTADO.nfeProc.NFe.infNFe.dest.xNome
XML_05_dest.IE = RESULTADO.nfeProc.NFe.infNFe.dest.indIEDest

IF bAchou = False THEN
bOk4 = HAdd(XML_05_dest)
IF bOk4 = False THEN
nErros+=1
Info("XML_05")
ELSE
nCHAVE_N03 = XML_05_dest.CHAVE_N03
//EDT_Result += CR+CR+"//ENDERECO DESTINO"+CR+CR
XML_06_enderDest.CHAVE_N01 = nCHAVE_N01
XML_06_enderDest.CHAVE_N03 = nCHAVE_N03
XML_06_enderDest.xLgr = RESULTADO.nfeProc.NFe.infNFe.dest.enderDest.xLgr
XML_06_enderDest.nro = RESULTADO.nfeProc.NFe.infNFe.dest.enderDest.nro
XML_06_enderDest.xBairro = RESULTADO.nfeProc.NFe.infNFe.dest.enderDest.xBairro
XML_06_enderDest.cMun = RESULTADO.nfeProc.NFe.infNFe.dest.enderDest.cMun
XML_06_enderDest.xMun = RESULTADO.nfeProc.NFe.infNFe.dest.enderDest.xMun
XML_06_enderDest.UF = RESULTADO.nfeProc.NFe.infNFe.dest.enderDest.UF
XML_06_enderDest.CEP = RESULTADO.nfeProc.NFe.infNFe.dest.enderDest.CEP
XML_06_enderDest.cPais = RESULTADO.nfeProc.NFe.infNFe.dest.enderDest.cPais
XML_06_enderDest.xPais = RESULTADO.nfeProc.NFe.infNFe.dest.enderDest.xPais
XML_06_enderDest.fone = RESULTADO.nfeProc.NFe.infNFe.dest.enderDest.fone
IF HAdd(XML_06_enderDest) = False THEN
nErros+=1
Info("XML_06")
END

END

END

//EDT_Result += CR+CR+"//RETIRADA"+CR+CR

XML_07_retirada.CHAVE_N01 = nCHAVE_N01
// XML_07_retirada.CNPJ = RESULTADO.nfeProc.NFe.infNFe.retirada.CNPJ
// XML_07_retirada.xLgr = RESULTADO.nfeProc.NFe.infNFe.retirada.xLgr
// XML_07_retirada.nro = RESULTADO.nfeProc.NFe.infNFe.retirada.nro
// XML_07_retirada.xCpl = RESULTADO.nfeProc.NFe.infNFe.retirada.xCpl
// XML_07_retirada.xBairro = RESULTADO.nfeProc.NFe.infNFe.retirada.xBairro
// XML_07_retirada.cMun = RESULTADO.nfeProc.NFe.infNFe.retirada.cMun
// XML_07_retirada.xMun = RESULTADO.nfeProc.NFe.infNFe.retirada.xMun
// XML_07_retirada.UF = RESULTADO.nfeProc.NFe.infNFe.retirada.UF

IF bAchou = False
IF HAdd(XML_07_retirada) = False THEN
nErros+=1
Info("XML_07")
END
END

//EDT_Result += CR+CR+"//ENTREGA"+CR+CR

XML_08_entrega.CHAVE_N01 = nCHAVE_N01
// XML_08_entrega.CNPJ = RESULTADO.nfeProc.NFe.infNFe.entrega.CNPJ
// XML_08_entrega.xLgr = RESULTADO.nfeProc.NFe.infNFe.entrega.xLgr
// XML_08_entrega.nro = RESULTADO.nfeProc.NFe.infNFe.entrega.nro
// XML_08_entrega.xCpl = RESULTADO.nfeProc.NFe.infNFe.entrega.xCpl
// XML_08_entrega.xBairro = RESULTADO.nfeProc.NFe.infNFe.entrega.xBairro
// XML_08_entrega.cMun = RESULTADO.nfeProc.NFe.infNFe.entrega.cMun
// XML_08_entrega.xMun = RESULTADO.nfeProc.NFe.infNFe.entrega.xMun
// XML_08_entrega.UF = RESULTADO.nfeProc.NFe.infNFe.entrega.UF

IF bAchou = False
IF HAdd(XML_08_entrega) = False THEN
nErros+=1
Info("XML_08")
END
END

//ITENS PRODUTOS E SERVIÇOS
//========================================================
//========================================================

x is int = 0
LOOP(nTOTAL_ITENS)
x++

XML_09_det.nItem = RESULTADO.nfeProc.NFe.infNFe.det[x]:nItem
XML_09_det.CHAVE_N01 = nCHAVE_N01
XML_09_det.CHAVE_N04 = GET_SEQ("XML_09_det")
nCHAVE_N04 = XML_09_det.CHAVE_N04
bOk4 = HAdd(XML_09_det)

IF bOk4 = True THEN

XML_10_prod.CHAVE_N01 = nCHAVE_N01
XML_10_prod.CHAVE_N04 = nCHAVE_N04
XML_10_prod.gsNfeID = gsNfeID
XML_10_prod.nItem = RESULTADO.nfeProc.NFe.infNFe.det[x]:nItem
XML_10_prod.cProd = RESULTADO.nfeProc.NFe.infNFe.det[x].prod.cProd
XML_10_prod.CORRELACAO_ID = 0
XML_10_prod.PROD_CODIGO_TISS = 0
XML_10_prod.cEAN = RESULTADO.nfeProc.NFe.infNFe.det[x].prod.cEAN
XML_10_prod.xProd = RESULTADO.nfeProc.NFe.infNFe.det[x].prod.xProd
XML_10_prod.CFOP = RESULTADO.nfeProc.NFe.infNFe.det[x].prod.CFOP
XML_10_prod.uCom = RESULTADO.nfeProc.NFe.infNFe.det[x].prod.uCom
XML_10_prod.qCom = RESULTADO.nfeProc.NFe.infNFe.det[x].prod.qCom
XML_10_prod.vUnCom = RESULTADO.nfeProc.NFe.infNFe.det[x].prod.vUnCom
XML_10_prod.vProd = RESULTADO.nfeProc.NFe.infNFe.det[x].prod.vProd
XML_10_prod.cEANTrib = RESULTADO.nfeProc.NFe.infNFe.det[x].prod.cEANTrib
XML_10_prod.uTrib = RESULTADO.nfeProc.NFe.infNFe.det[x].prod.uTrib
XML_10_prod.qTrib = RESULTADO.nfeProc.NFe.infNFe.det[x].prod.qTrib
XML_10_prod.vUnTrib = RESULTADO.nfeProc.NFe.infNFe.det[x].prod.vUnTrib
IF Tipo = "E"
XML_10_prod.EntradaEstoque = 1
XML_10_prod.SaidaEstoque = 0
XML_10_prod.TransfereEstoque = 0
ELSE IF Tipo = "S"
XML_10_prod.EntradaEstoque = 0
XML_10_prod.SaidaEstoque = 1
XML_10_prod.TransfereEstoque = 0
ELSE IF Tipo = "T"
XML_10_prod.EntradaEstoque = 0
XML_10_prod.SaidaEstoque = 0
XML_10_prod.TransfereEstoque = 1
END
XML_10_prod.Processado = 0
XML_10_prod.DataProcessamento= ""
XML_10_prod.AUDT_Data_Add = DateSys()+TimeSys()
XML_10_prod.AUDT_User_Add = GnUserID


IF HAdd(XML_10_prod) = False THEN
nErros+=1
Info("xml_10")
ELSE
IF HReadSeek(F001_APS_PRODUTOS,F001_PROD_NOME,XML_10_prod.xProd,hIdentical) = False THEN
CadastrarProduto(XML_03_emit.CNPJ,XML_10_prod.cProd,XML_10_prod.cEAN,XML_10_prod.xProd,XML_10_prod.uCom)
END
END


//ICMS
XML_11_ICMS00.CHAVE_N01 = nCHAVE_N01
XML_11_ICMS00.CHAVE_N04 = nCHAVE_N04
XML_11_ICMS00.orig = RESULTADO.nfeProc.NFe.infNFe.det[x].imposto.ICMS.ICMS00.orig
XML_11_ICMS00.CST = RESULTADO.nfeProc.NFe.infNFe.det[x].imposto.ICMS.ICMS00.CST
XML_11_ICMS00.modBC = RESULTADO.nfeProc.NFe.infNFe.det[x].imposto.ICMS.ICMS00.modBC
XML_11_ICMS00.vBC = RESULTADO.nfeProc.NFe.infNFe.det[x].imposto.ICMS.ICMS00.vBC
XML_11_ICMS00.pICMS = RESULTADO.nfeProc.NFe.infNFe.det[x].imposto.ICMS.ICMS00.pICMS
XML_11_ICMS00.vICMS = RESULTADO.nfeProc.NFe.infNFe.det[x].imposto.ICMS.ICMS00.vICMS

IF HAdd(XML_11_ICMS00) = False THEN
nErros+=1
Info("xml_11")
END

//PIS
XML_12_PISAliq.CHAVE_N01 = nCHAVE_N01
XML_12_PISAliq.CHAVE_N04 = nCHAVE_N04
// XML_12_PISAliq.CST = RESULTADO.nfeProc.NFe.infNFe.det[x].imposto.PIS.PISAliq.CST
// XML_12_PISAliq.vBC = RESULTADO.nfeProc.NFe.infNFe.det[x].imposto.PIS.PISAliq.vBC
// XML_12_PISAliq.pPIS = RESULTADO.nfeProc.NFe.infNFe.det[x].imposto.PIS.PISAliq.pPIS
// XML_12_PISAliq.vPIS = RESULTADO.nfeProc.NFe.infNFe.det[x].imposto.PIS.PISAliq.vPIS

IF HAdd(XML_12_PISAliq) = False THEN
nErros+=1
Info("xml_12")
END

//COFINS
XML_13_COFINSAliq.CHAVE_N01 = nCHAVE_N01
XML_13_COFINSAliq.CHAVE_N04 = nCHAVE_N04
// XML_13_COFINSAliq.CST = RESULTADO.nfeProc.NFe.infNFe.det[x].imposto.COFINS.COFINSAliq.CST
// XML_13_COFINSAliq.vBC = RESULTADO.nfeProc.NFe.infNFe.det[x].imposto.COFINS.COFINSAliq.vBC
// XML_13_COFINSAliq.pCOFINS = RESULTADO.nfeProc.NFe.infNFe.det[x].imposto.COFINS.COFINSAliq.pCOFINS
// XML_13_COFINSAliq.vCOFINS = RESULTADO.nfeProc.NFe.infNFe.det[x].imposto.COFINS.COFINSAliq.vCOFINS

IF HAdd(XML_13_COFINSAliq) = False THEN
nErros+=1
Info("xml_13")
END

ELSE
nErros+=1
Info("XML_09")
END


//EDT_Result += CR+CR+"//ITENS PRODUTOS E SERVIÇOS - FIM//"+CR+CR
END

//========================================================
//========================================================

//EDT_Result += CR+CR+"//TOTAL"+CR+CR

XML_14_ICMSTot.CHAVE_N01 = nCHAVE_N01
XML_14_ICMSTot.vBC = RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vBC
XML_14_ICMSTot.vICMS = RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vICMS
XML_14_ICMSTot.vBCST = RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vBCST
XML_14_ICMSTot.vST = RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vST
XML_14_ICMSTot.vProd = RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vProd
XML_14_ICMSTot.vFrete = RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vFrete
XML_14_ICMSTot.vSeg = RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vSeg
XML_14_ICMSTot.vDesc = RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vDesc
XML_14_ICMSTot.vII = RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vII
XML_14_ICMSTot.vIPI = RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vIPI
XML_14_ICMSTot.vPIS = RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vPIS
XML_14_ICMSTot.vCOFINS = RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vCOFINS
XML_14_ICMSTot.vOutro = RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vOutro
XML_14_ICMSTot.vNF = RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vNF

IF HAdd(XML_14_ICMSTot) = False THEN
nErros+=1
Info("xml_14")
END


//EDT_Result += CR+CR+"//TRANSPORTADORA"+CR+CR

XML_15_transp.CHAVE_N01 = nCHAVE_N01
XML_15_transp.CHAVE_N05 = GET_SEQ("XML_15_transp")
XML_15_transp.modFrete = RESULTADO.nfeProc.NFe.infNFe.transp.modFrete

IF bAchou = False THEN
bOk5 = HAdd(XML_15_transp)
IF bOk5 = False
nErros+=1
Info("xml_15")
ELSE

nCHAVE_N05 = XML_15_transp.CHAVE_N05
XML_16_transporta.CHAVE_N01 = nCHAVE_N01
XML_16_transporta.CHAVE_N05 = nCHAVE_N05
XML_16_transporta.modFrete = RESULTADO.nfeProc.NFe.infNFe.transp.modFrete
// XML_16_transporta.CNPJ = RESULTADO.nfeProc.NFe.infNFe.transp.transporta.CNPJ
// XML_16_transporta.xNome = RESULTADO.nfeProc.NFe.infNFe.transp.transporta.xNome
// XML_16_transporta.IE = RESULTADO.nfeProc.NFe.infNFe.transp.transporta.IE
// XML_16_transporta.xEnder = RESULTADO.nfeProc.NFe.infNFe.transp.transporta.xEnder
// XML_16_transporta.xMun = RESULTADO.nfeProc.NFe.infNFe.transp.transporta.xMun
// XML_16_transporta.UF = RESULTADO.nfeProc.NFe.infNFe.transp.transporta.UF

IF bAchou = False
IF HAdd(XML_16_transporta) = False THEN
nErros+=1
Info("xml_16")
END
END

//EDT_Result += CR+CR+"//VEICULO"+CR+CR
XML_17_veicTransp.CHAVE_N01 = nCHAVE_N01
XML_17_veicTransp.CHAVE_N05 = nCHAVE_N05
// XML_17_veicTransp.placa = RESULTADO.nfeProc.NFe.infNFe.transp.veicTransp.placa
// XML_17_veicTransp.UF = RESULTADO.nfeProc.NFe.infNFe.transp.veicTransp.UF
// XML_17_veicTransp.RNTC = RESULTADO.nfeProc.NFe.infNFe.transp.veicTransp.RNTC

IF bAchou = False
IF HAdd(XML_17_veicTransp) = False THEN
nErros+=1
Info("xml_17")
END
END

//EDT_Result += CR+CR+"//VEICULO REBOQUE"+CR+CR

XML_18_reboque.CHAVE_N01 = nCHAVE_N01
XML_18_reboque.CHAVE_N05 = nCHAVE_N05
// XML_18_reboque.placa = RESULTADO.nfeProc.NFe.infNFe.transp.reboque.placa
// XML_18_reboque.UF = RESULTADO.nfeProc.NFe.infNFe.transp.reboque.UF
// XML_18_reboque.RNTC = RESULTADO.nfeProc.NFe.infNFe.transp.reboque.RNTC

IF bAchou = False
IF HAdd(XML_18_reboque) = False THEN
nErros+=1
Info("xml_18")
END
END

//EDT_Result += CR+CR+"//VOLUMES"+CR+CR

XML_19_vol.CHAVE_N01 = nCHAVE_N01
XML_19_vol.CHAVE_N05 = nCHAVE_N05
// XML_19_vol.qVol = RESULTADO.nfeProc.NFe.infNFe.transp.vol.qVol
// XML_19_vol.esp = RESULTADO.nfeProc.NFe.infNFe.transp.vol.esp
// XML_19_vol.marca = RESULTADO.nfeProc.NFe.infNFe.transp.vol.marca
// XML_19_vol.nVol = RESULTADO.nfeProc.NFe.infNFe.transp.vol.nVol
// XML_19_vol.pesoL = RESULTADO.nfeProc.NFe.infNFe.transp.vol.pesoL
// XML_19_vol.pesoB = RESULTADO.nfeProc.NFe.infNFe.transp.vol.pesoB
// XML_19_vol.nLacre = RESULTADO.nfeProc.NFe.infNFe.transp.vol.lacres.nLacre

IF bAchou = False
IF HAdd(XML_19_vol) = False THEN
nErros+=1
Info("xml_19")
END
END

END

END

//EDT_Result += CR+CR+"//INFORMAÇÕES ADICIONAIS"+CR+CR
XML_20_infAdic.CHAVE_N01 = nCHAVE_N01
XML_20_infAdic.infAdFisco = RESULTADO.nfeProc.NFe.infNFe.infAdic.infCpl
XML_20_infAdic.CERTIFICADO = RESULTADO.nfeProc.NFe.Signature.KeyInfo.X509Data.X509Certificate

IF bAchou = False
IF HAdd(XML_20_infAdic) = False THEN
nErros += 1
Info("xml_20")
END
END


ELSE
nErros += 1
Info("erro 1")
END


// Validate the addition
IF nErros = 0 //AND HError() = 0

IF HTransactionEnd() = True THEN
ToastDisplay("Gravou com sucesso!",toastLong,vaMiddle,haCenter)
ELSE
HTransactionCancel()
Info("Algo ocorreu de errado e a nota nao foi importada!")
Info("Erro 01: "+ ErrorInfo() +" - "+HError() +" - "+ HErrorInfo())
END

ELSE IF nErros > 0 //OR HError() <> 0
HTransactionCancel()
Info("Algo ocorreu de errado e a nota nao foi importada!")
Info("Erro 02: "+ ErrorInfo() +" - "+HError() +" - "+ HErrorInfo())
END

END

DO
IF ErrorInfo() = 0 AND HErrorInfo() = 0 THEN
IF HTransactionEnd() = True THEN
Info("Erros: "+nErros)
ToastDisplay("Gravou com sucesso!",toastLong,vaMiddle,haCenter)
ELSE
HTransactionCancel()
Info("Algo ocorreu de errado e a nota nao foi importada!")
Info("Erro 01: "+ ErrorInfo() +" - "+HError() +" - "+ HErrorInfo())
END
ELSE
// Delete the order lines
HTransactionCancel()
Info("Algo ocorreu de errado e a nota nao foi importada!")
Info("Erro 03: "+ ErrorInfo() +" - "+HError() +" - "+ HErrorInfo())
END
END

ELSE
HTransactionCancel()
Info("Algo ocorreu de errado e a nota nao foi importada!")
Info("Erro 04: "+ ErrorInfo() +" - "+HError() +" - "+ HErrorInfo())
END

TableDisplay(TABLEGRID_XML_10_prod,taInit)
TableDisplay(TABLEGRID_XML_10_prod,taReExecuteQuery)

//
//
//35
//518005127
//Venda a vista
//0
//55
//1
//1
//2008-05-06
//2008-05-06
//0
//3550308
//1
//1
//3
//2
//1
//0
//NF-eletronica.com
//

//
//99999090910270
//NF-e Associacao NF-e
//NF-e
//
//Rua Central
//100
//Fundos
//Distrito Industrial
//3502200
//Angatuba
//SP
//17100171
//1058
//Brasil
//1733021717
//

//123456789012
//

// -----------------------
//00000000000191
//DISTRIBUIDORA DE AGUAS MINERAIS
//
//AV DAS FONTES
//1777
//10 ANDAR
//PARQUE FONTES
//5030801
//Sao Paulo
//SP
//13950000
//1058
//BRASIL
//1932011234
//

//
//
------------------------
//
//99171171000194
//AV PAULISTA
//12345
//TERREO
//CERQUEIRA CESAR
//3550308
//SAO PAULO
//SP
//
------------------
//
//99299299000194
//AV FARIA LIMA
//1500
//15 ANDAR
//PINHEIROS
//3550308
//SAO PAULO
//SP
//
---------------------
//
//
//00001
//
//Agua Mineral
//5101
//dz
//1000000.0000
//1
//10000000.00
//
//und
//12000000.0000
//1
//

//
//
//
//0
//00
//0
//10000000.00
//18.00
//1800000.00
//

//

//
//
//01
//10000000.00
//0.65
//65000
//

//

//
//
//01
//10000000.00
//2.00
//200000.00
//

//

//

//

//
//
//00002
//
//Agua Mineral
//5101
//pack
//5000000.0000
//2
//10000000.00
//
//und
//3000000.0000
//0.3333
//

//
//
//
//0
//00
//0
//10000000.00
//18.00
//1800000.00
//

//

//
//
//01
//10000000.00
//0.65
//65000
//

//

//
//
//01
//10000000.00
//2.00
//200000.00
//

//

//

//

//----------------------------
//
//
//20000000.00
//18.00
//0
//0
//20000000.00
//0
//0
//0
//0
//0
//130000.00
//400000.00
//0
//20000000.00
//

//

//
//0
//
//99171171000191
//Distribuidora de Bebidas Fazenda de SP Ltda.
//171999999119
//Rua Central 100 - Fundos - Distrito Industrial
//SAO PAULO
//SP
//

//
//BXI1717
//SP
//123456789
//

//
//BXI1818
//SP
//123456789
//

//
//10000
//CAIXA
//LINDOYA
//500
//1000000000.000
//1200000000.000
//
//XYZ10231486
//

//

//

//
//Nota Fiscal de exemplo NF-eletronica.com
//

//

//
//
//
//
//
//
//
//
//

//
// xhTSDMH61e9uqe04lnoHT4ZzLSY=
//

//

// Iz5Z3PLQbzZt9jnBtr6xsmHZMOu/3plXG9xxfFjRCQYGnD1rjlhzBGrqt026Ca2VHHM/bHNepi6FuFkAi595GScKVuHREUotzifE2OIjgavvTOrMwbXG7+0LYgkwPFiPCao2S33UpZe7MneaxcmKQGKQZw1fP8fsWmaQ4cczZT8=
//
//
//cxvkkPolDUyBa7d7xwgm
//

//

//

//

ELSE

Info("Não existe o arquivo ou nao informado/encontrado")

END


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membro registado
3.655 mensagems
Popularité : +175 (223 votes)
Publicado em dezembro, 19 2019 - 6:31 PM
Bitao buscar Xml

EDT_xml = fSelect("", "", "Selecione o XML", "Xml (*.*)" + TAB + "*.xml", "*.xml")

IF EDT_xml <> "" THEN

LeituraXml()
UI_HabilitaCampos()

ELSE
Info("Arquivo não encontrado!")

END





// Summary:
// Syntax:
// LeituraXml ()
//
// Parameters:
// None
// Return Value:
// None
//
// For instance:
// Indicate an example.
//
PROCEDURE LeituraXml()

//EDT_NumNota
//EDT_Serie
//EDT_Nfe
//EDT_Emissao
//EDT_Entrada
//EDT_Valor_Frete
//EDT_Valor_Desconto
//EDT_Valor_Produtos
//EDT_Valor_Total_da_Nfe

//LEITURA DE NFE
IF EDT_xml <> "" AND fFileExist(EDT_xml) = True

sXml_Result is string

BufResultado is Buffer = fLoadText(EDT_xml)

sVERSAO is string = "versao="+Charact(34)+"4.00"+Charact(34)

RESULTADO is xmlDocument = XMLOpen(EDT_xml,fromFile)


//TOTAL DE ITENS
nPosIni is int = PositionOccurrence(BufResultado,"",lastRank,FromBeginning) //-4
sTOTAL_ITENS is string = Val(Replace(Middle(BufResultado,nPosIni,nPosFim-nPosIni),Charact(34),""))
nTOTAL_ITENS is int = Val(sTOTAL_ITENS)



IF nTOTAL_ITENS > 0

codigo_id_nfe is int

//CABEÇALHO DA NFE
//========================================================
//========================================================

EDT_Nfe = RESULTADO.nfeProc.NFe.infNFe:Id
sNversao is string = RESULTADO.nfeProc.NFe.infNFe:versao

Data_Mov is string = Replace(RESULTADO.nfeProc.NFe.infNFe.ide.dhSaiEnt,"-","")
Data_Mov = Replace(Data_Mov,"T","")
Data_Mov = Replace(Data_Mov,":","")

sXml_Result = CR+CR+"//ID"+CR+CR
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe:Id
sXml_Result += CR+CR+"//IDE"+CR+CR
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.ide.cUF
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.ide.cNF
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.ide.natOp
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.ide.idDest //
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.ide.indFinal //
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.ide.indPres //
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.ide.mod
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.ide.nNF

EDT_NumNota = RESULTADO.nfeProc.NFe.infNFe.ide.nNF
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.ide.serie
EDT_Serie = RESULTADO.nfeProc.NFe.infNFe.ide.serie
//2019-06-18T15:50:00-03:00
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.ide.dhEmi
Emissao is string = Middle(Replace(RESULTADO.nfeProc.NFe.infNFe.ide.dhEmi,"-",""),1,8)
EDT_Emissao = Emissao
//2019-06-18T15:50:00-03:00
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.ide.dhSaiEnt
vencimento is string = Middle(Replace(RESULTADO.nfeProc.NFe.infNFe.ide.dhSaiEnt,"-",""),1,8)
sXml_Result = vencimento
EDT_Entrada = DateSys()


sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.ide.tpNF
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.ide.cMunFG
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.ide.tpImp
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.ide.tpEmis
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.ide.cDV
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.ide.tpAmb
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.ide.finNFe
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.ide.procEmi
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.ide.verProc
sXml_Result += CR+CR+"//EMITENTE"+CR+CR
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.emit.CNPJ
sXml_Result += RESULTADO.nfeProc.NFe.infNFe.emit.CNPJ
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.emit.xNome
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.emit.xFant
sXml_Result += RESULTADO.nfeProc.NFe.infNFe.emit.xFant
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.emit.IE
sXml_Result += CR+CR+"//ENDERECO EMITENTE"+CR+CR

sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.xLgr
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.nro
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.xCpl
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.xBairro
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.cMun
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.xMun
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.UF
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.CEP
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.cPais
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.xPais
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.emit.enderEmit.fone
sXml_Result += CR+CR+"//DESTINO"+CR+CR
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.dest.CNPJ
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.dest.xNome
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.dest.indIEDest
sXml_Result += CR+CR+"//ENDERECO DESTINO"+CR+CR
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.dest.enderDest.xLgr
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.dest.enderDest.nro
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.dest.enderDest.xBairro
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.dest.enderDest.cMun
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.dest.enderDest.xMun
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.dest.enderDest.UF
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.dest.enderDest.CEP
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.dest.enderDest.cPais
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.dest.enderDest.xPais
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.dest.enderDest.fone
sXml_Result += CR+CR+"//RETIRADA"+CR+CR


// IF EDT_NumNota <> "" THEN
//
// IF YesNo("Você não salvou a NFE " + TAB + EDT_NumNota + TAB + " , os dados desta nota serão perdidos! Deseja continuar? ") THEN
//
// END
// END


FOR EACH F007_APS_NFE_TEMP
IF F007_APS_NFE_TEMP.F007_CHAVE_NFE = EDT_Nfe THEN
HDelete(F007_APS_NFE_TEMP)
END
END

ScreenToFile()
F007_APS_NFE_TEMP.AUDT_DATA_ADD = DateSys()+TimeSys()
F007_APS_NFE_TEMP.AUDT_USER_ADD = GnUserID
F007_APS_NFE_TEMP.F007_ID_NFE = GET_SEQ(F007_APS_NFE_TEMP)

IF HAdd(F007_APS_NFE_TEMP) = True THEN

codigo_id_nfe = F007_APS_NFE_TEMP.F007_ID_NFE
gnSeqNFe = codigo_id_nfe

END


//ITENS PRODUTOS E SERVIÇOS
//========================================================
//========================================================

FOR EACH F008_APS_NFE_ITENS_TEMP
IF F008_APS_NFE_ITENS_TEMP.F008_CHAVE_NFE = EDT_Nfe THEN
HDelete(F008_APS_NFE_ITENS_TEMP)
END
END


x is int = 0
LOOP(nTOTAL_ITENS)
x++


F008_APS_NFE_ITENS_TEMP.F008_ID_ITENS = GET_SEQ(F008_APS_NFE_ITENS_TEMP)
F008_APS_NFE_ITENS_TEMP.F008_ID_NFE = codigo_id_nfe
F008_APS_NFE_ITENS_TEMP.F008_CHAVE_NFE = EDT_Nfe
F008_APS_NFE_ITENS_TEMP.F008_ID_PRODUTO = 0
F008_APS_NFE_ITENS_TEMP.F008_CODIGO_TISS = 0
F008_APS_NFE_ITENS_TEMP.F008_NOME_COMERCIAL = RESULTADO.nfeProc.NFe.infNFe.det[x].prod.xProd
F008_APS_NFE_ITENS_TEMP.F008_NUMERO_LOTE = RESULTADO.nfeProc.NFe.infNFe.det[x].prod.rastro.nLote
F008_APS_NFE_ITENS_TEMP.F008_VALIDADE_LOTE = RESULTADO.nfeProc.NFe.infNFe.det[x].prod.rastro.dVal
F008_APS_NFE_ITENS_TEMP.F008_UND_PROD_NFE = RESULTADO.nfeProc.NFe.infNFe.det[x].prod.uCom
F008_APS_NFE_ITENS_TEMP.F008_QTDE_PROD_NFE = RESULTADO.nfeProc.NFe.infNFe.det[x].prod.qCom
F008_APS_NFE_ITENS_TEMP.F008_VLR_UNIT_PROD_NFE = RESULTADO.nfeProc.NFe.infNFe.det[x].prod.vUnCom
F008_APS_NFE_ITENS_TEMP.F008_VLT_TOTAL_PROD_NFE = RESULTADO.nfeProc.NFe.infNFe.det[x].prod.vProd
F008_APS_NFE_ITENS_TEMP.F008_UND_PROD_ESTOQUE = 42
F008_APS_NFE_ITENS_TEMP.F008_QTDE_PROD_ESTOQUE = 0
F008_APS_NFE_ITENS_TEMP.F008_VLR_UNIT_PROD_ESTOQUE = 0
F008_APS_NFE_ITENS_TEMP.F008_VLT_TOTAL_PROD_ESTOQUE = 0
F008_APS_NFE_ITENS_TEMP.F008_RATEIO_FRETE = 0
F008_APS_NFE_ITENS_TEMP.F008_RATEIO_DESCONTO = 0
F008_APS_NFE_ITENS_TEMP.F008_ID_CENTROCUSTO = 0
F008_APS_NFE_ITENS_TEMP.F008_CENTROCUSTO = 0
F008_APS_NFE_ITENS_TEMP.F008_CODIGO_BARRAS = 0
F008_APS_NFE_ITENS_TEMP.F008_MATMED = ""
F008_APS_NFE_ITENS_TEMP.F008_ETIQUETA = 0
F008_APS_NFE_ITENS_TEMP.AUDT_DATA_ADD = DateSys()+TimeSys()
F008_APS_NFE_ITENS_TEMP.AUDT_USER_ADD = GnUserID
F008_APS_NFE_ITENS_TEMP.AUDT_EXCLUIDO = "N"


HAdd(F008_APS_NFE_ITENS_TEMP)

END


//EDT_Valor_Frete
//EDT_Valor_Desconto
//EDT_Valor_Produtos
//EDT_Valor_Total_da_Nfe


//TOTAIS DA NFE
//========================================================
//========================================================
sXml_Result += CR+CR+"//TOTAL"+CR+CR
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vBC
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vICMS
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vBCST
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vST
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vProd
EDT_Valor_Produtos = RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vProd
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vFrete
EDT_Valor_Frete = RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vFrete //
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vSeg
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vDesc
EDT_Valor_Desconto = RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vDesc
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vII
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vIPI
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vPIS
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vCOFINS
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vOutro
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vNF
EDT_Valor_Total_da_Nfe = RESULTADO.nfeProc.NFe.infNFe.total.ICMSTot.vNF
sXml_Result += CR+CR+"//TRANSPORTADORA"+CR+CR
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.transp.modFrete
// EDT_Result += CR+RESULTADO.nfeProc.NFe.infNFe.transp.transporta.CNPJ
// EDT_Result += CR+RESULTADO.nfeProc.NFe.infNFe.transp.transporta.xNome
// EDT_Result += CR+RESULTADO.nfeProc.NFe.infNFe.transp.transporta.IE
// EDT_Result += CR+RESULTADO.nfeProc.NFe.infNFe.transp.transporta.xEnder
// EDT_Result += CR+RESULTADO.nfeProc.NFe.infNFe.transp.transporta.xMun
// EDT_Result += CR+RESULTADO.nfeProc.NFe.infNFe.transp.transporta.UF
sXml_Result += CR+CR+"//VEICULO"+CR+CR
// EDT_Result += CR+RESULTADO.nfeProc.NFe.infNFe.transp.veicTransp.placa
// EDT_Result += CR+RESULTADO.nfeProc.NFe.infNFe.transp.veicTransp.UF
// EDT_Result += CR+RESULTADO.nfeProc.NFe.infNFe.transp.veicTransp.RNTC
sXml_Result += CR+CR+"//VEICULO REBOQUE"+CR+CR
// EDT_Result += CR+RESULTADO.nfeProc.NFe.infNFe.transp.reboque.placa
// EDT_Result += CR+RESULTADO.nfeProc.NFe.infNFe.transp.reboque.UF
// EDT_Result += CR+RESULTADO.nfeProc.NFe.infNFe.transp.reboque.RNTC
sXml_Result += CR+CR+"//VOLUMES"+CR+CR
// EDT_Result += CR+RESULTADO.nfeProc.NFe.infNFe.transp.vol.qVol
// EDT_Result += CR+RESULTADO.nfeProc.NFe.infNFe.transp.vol.esp
// EDT_Result += CR+RESULTADO.nfeProc.NFe.infNFe.transp.vol.marca
// EDT_Result += CR+RESULTADO.nfeProc.NFe.infNFe.transp.vol.nVol
// EDT_Result += CR+RESULTADO.nfeProc.NFe.infNFe.transp.vol.pesoL
// EDT_Result += CR+RESULTADO.nfeProc.NFe.infNFe.transp.vol.pesoB
// EDT_Result += CR+RESULTADO.nfeProc.NFe.infNFe.transp.vol.lacres.nLacre
sXml_Result += CR+CR+"//INFORMAÇÕES ADICIONAIS"+CR+CR
sXml_Result += CR+RESULTADO.nfeProc.NFe.infNFe.infAdic.infCpl
sXml_Result += CR+CR+"//CERTIFICADO"+CR+CR
sXml_Result += CR+RESULTADO.nfeProc.NFe.Signature.KeyInfo.X509Data.X509Certificate



TableDisplay(TABLEGRID_F008_APS_NFE_ITENS_TEMP,taInit)



END


ELSE

Info("Não existe o arquivo ou nao informado/encontrado")

END




// Summary:
// Syntax:
// UI_HabilitaCampos ()
//
// Parameters:
// None
// Return value:
// None
//
// For instance:
// Indicate an example.
//
PROCEDURE UI_HabilitaCampos()

IF EDT_NumNota <> "" AND
EDT_Serie <> "" AND
EDT_Fornecedor_Razao_Social <> "" AND
EDT_Valor_Produtos <> "" AND
EDT_Valor_Total_da_Nfe <> "" AND
EDT_Valor_Produtos <> 0.0000 AND
EDT_Valor_Total_da_Nfe <> 0.0000 THEN

GR_ItensNFE..State = Active
BTN_Incluir..State = Active

IF TABLEGRID_F008_APS_NFE_ITENS_TEMP > 0 THEN
BTN_Alterar..State = Active
END

ELSE

GR_ItensNFE..State = Grayed
END



//Inicia a tela com os campos bloqueados
GR_ItensNFE..State = Grayed
BTN_GravaEstoque..State = Grayed
BTN_Ratear_item..State = Grayed
BTN_Excluir..State = Grayed
BTN_Alterar..State = Grayed
BTN_Incluir..State = Grayed


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensagem modificada, dezembro, 19 2019 - 6:35 PM
Membro registado
3.655 mensagems
Popularité : +175 (223 votes)
Publicado em dezembro, 19 2019 - 6:33 PM




Esse exemplo vai preencher o cabeçalho e os itens sozinho

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensagem modificada, dezembro, 19 2019 - 6:34 PM
Membro registado
3.655 mensagems
Popularité : +175 (223 votes)
Publicado em dezembro, 19 2019 - 6:48 PM




--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membro registado
3.655 mensagems
Popularité : +175 (223 votes)
Publicado em dezembro, 19 2019 - 6:49 PM




--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membro registado
3.655 mensagems
Popularité : +175 (223 votes)
Publicado em dezembro, 23 2019 - 1:27 PM
Detalhes adicionais
###########################

Validando e Gerenciando arquivos XSD com XML

WINDEV, WINDEV Mobile e WEBDEV incluem várias funções para manipular o código XML. O código XML usado deve estar em conformidade com o padrão XML. Consulte uma documentação específica para XML para obter mais detalhes. Veja XML para mais detalhes.
WINDEV, WEBDEV e WINDEV Mobile permitem importar arquivos no formato XSD. Um arquivo XSD contém a descrição do arquivo XML com o mesmo nome. Conhecer a estrutura de um documento XML permite verificar a validade deste documento. A linguagem de descrição para o conteúdo de um documento XSD também está no formato XML.

Um exemplo de arquivo XSD:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="person">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="lastname" type="xsd:string"/>
<xsd:element name="firstname" type="xsd:string"/>
<xsd:element name="dob" type="xsd:date"/>
<xsd:element name="email" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>


e aqui um Xml que deve obedecer a formatação do XSD:

<?xml version="1.0" encoding="UTF-8"?>
<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="person.xsd">
<lastname>Johnson</lastname>
<firstname>John</firstname>
<dob>1967-08-13</dob>
<email>test@yahoo.com</email>
</person>


Importe o arquivo XSD para um projeto, para importar um arquivo XSD para um projeto faça os seguintes passos:

No painel "Explorador de projetos", selecione "Descrições XML".

Clique com o botão direito e selecione "Importar um arquivo de descrição XML".

Selecione o arquivo XSD da descrição para importar.

Validar.

O XSD é adicionado automaticamente ao explorador de projetos (na ramificação "Descrição XML").

Está pronto para uso!!!

Cuidado:
Para operar em tempo de execução, o arquivo XSD não deve ser encontrado em um subdiretório do projeto ou em um subdiretório do executável.

Usando uma descrição importada para o projeto, para usar a descrição do documento XML, tudo que você precisa fazer é usar as variáveis ​​geradas automaticamente pela importação. Declare um documento XML no formato da descrição importada. Por exemplo, se a descrição importada for denominada 'pessoa':

cMyDoc is xmlDocument <description="person">


Nota: Você pode especificar a extensão do arquivo durante a declaração. Por exemplo:

cMyDoc is xmlDocument <description="person.xsd">


Inicialize as diferentes variáveis ​​incluídas na descrição do documento XML. Por exemplo, se o documento incluir o sobrenome e o nome de uma pessoa:

cMyDoc.person.lastname = "MOORE"
cMyDoc.person.firstname = "VINCE"


Notas:
Cada elemento é separado por um ponto . .
Uma ajuda é proposta ao inserir os nomes das variáveis.
Se o nome de um elemento contiver um caractere especial (traço, por exemplo), ele deverá ser colocado entre aspas simples:

cMyDoc.person.'id-person' = "ValueId"


Várias funções podem ser usadas para manipular o arquivo XSD para validar a descrição do arquivo XML:

XMLSave Salva um documento XML em um arquivo.

XMLValidDocument Valida um documento XML de um esquema XSD.

XMLValidNode Valida um nó XML, seus filhos e seus atributos a partir de sua descrição no esquema XSD vinculado ao documento XML.


Exemplo: criação completa de um arquivo de acordo com a descrição XSD fornecida no exemplo:
cMyDoc is xmlDocument <description="person.xsd">

cMyDoc.person.lastname = "Moore"
cMyDoc.person.firstname = "Vince"
cMyDoc.person.dob = "19710211"
cMyDoc.person.email[1] = "vince.moore@mydomain.com"
cMyDoc.person.email[2] = "vince.moore@otherdomain.com"

XMLSave(cMyDoc, fExeDir() + ["\"] + "test.xml")

// Or with an intermediate check:
IF XMLValidDocument(cMyDoc) = True THEN
XMLSave(cMyDoc, fExeDir() + ["\"] + "test.xml")
IF ErrorOccurred = True THEN
Error("Unable to save the XML document", ErrorInfo())
ELSE
Info("OK", fExeDir() + ["\"] + "test.xml")
END
ELSE
Error("The XML document is invalid", ErrorInfo())
END


LINKS

https://help.windev.com/en-US/…
https://help.windev.com/en-US/…

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensagem modificada, dezembro, 23 2019 - 1:27 PM