Os esboço colocadoa aqui tem o intuito de ajudar aos amigos que estão as voltas com a criação do XML para intercâmbio com o SEFAZ.
Código: Selecionar todos
cNFEindPag := VerifyINI( "NFELETRONICA", "indPag" , "0" , cPath+"nfw.ini" ) // 0-a vista, 1-a prazo
cNFEmod := VerifyINI( "NFELETRONICA", "mod" , "55" , cPath+"nfw.ini" ) // 55-nota fiscal eletronica
cNFEserie := VerifyINI( "NFELETRONICA", "serie" , "1" , cPath+"nfw.ini" ) // 1
//cNFEtpNF := VerifyINI( "NFELETRONICA", "tpNF" , "1" , cPath+"nfw.ini" ) // 0-entrada, 1-saida
cNFEtpImp := VerifyINI( "NFELETRONICA", "tpImp" , "2" , cPath+"nfw.ini" ) // 1-retrato, 2-paisagem
cNFEtpEmis := VerifyINI( "NFELETRONICA", "tpEmis" , "1" , cPath+"nfw.ini" ) // 1-Normal, 2-Contingencia, 3-SCAN, 4-DPEC, 5-FS-DA
cNFEtpAmb := VerifyINI( "NFELETRONICA", "tpAmb" , "1" , cPath+"nfw.ini" ) // 1-Producao, 2-Homologacao
cNFEfinNFe := VerifyINI( "NFELETRONICA", "finNFe" , "1" , cPath+"nfw.ini" ) // 1-Normal, 2-Complementar, 3-Ajuste
cNFEprocEmi := VerifyINI( "NFELETRONICA", "procEmi" , "0" , cPath+"nfw.ini" ) // 1-Emissao pelo 5Volution, 3-Pelo Emissor do Fisco
cNFEverProc := VerifyINI( "NFELETRONICA", "verProc" , "FENIX 1.0.20", cPath+"nfw.ini" ) //
cNFEsperar := VerifyINI( "NFELETRONICA", "Esperar" , "60" , cPath+"nfw.ini" ) //
dbSelectArea( "PN" )
EDX oEDX FILE cXMLFile VERSION "1.0" ENCODING "UTF-8" FORMATED
EDX OPEN MARK "NFe" ATTRIB "xmlns" VALUE "http://www.portalfiscal.inf.br/nfe" OF oEDX
EDX OPEN MARK "infNFe" ; // ATTRIB "xmlns:xsi" VALUE "http://www.w3.org/2001/XMLSchema-instance" ;
ATTRIB "Id" VALUE "SistemaFaturamento5Volution" ;
ATTRIB "versao" VALUE "1.10" OF oEDX
EDX OPEN MARK "ide" OF oEDX /* *****( OK )***** */
EDX OPEN MARK "cUF" TYPE "" TAG ClIBGEUF AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "cNF" TYPE "" TAG str( nIDNFE ) AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "natOp" TYPE "" TAG ltrim(str( nIDNatureza ))+"-"+alltrim( cIDNatureza ) AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "indPag" TYPE "" TAG cNFEindPag AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "mod" TYPE "" TAG cNFEmod AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "serie" TYPE "" TAG cNFEserie AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "nNF" TYPE "" TAG str( nIDNFE ) AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "dEmi" TYPE "" TAG dtoz( dDTEmissao ) AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "dSaiEnt" TYPE "" TAG dtoz( dDTSaida ) AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "tpNF" TYPE "" TAG cNFEtpNF AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "cMunFG" TYPE "" TAG ClIBGEUF+ClIBGECODUF AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "tpImp" TYPE "" TAG cNFEtpImp AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "tpEmis" TYPE "" TAG cNFEtpEmis AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "cDV" TYPE "" TAG cDV AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "tpAmb" TYPE "" TAG cNFEtpAmb AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "finNFe" TYPE "" TAG cNFEfinNFe AUTOCLOSE REQUIRED OF oEDX
if nOLDIDNFe > 0
EDX OPEN MARK "NFref" OF oEDX
EDX OPEN MARK "refNFe" TYPE "" TAG cOLDIDNFe AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "refNF" OF oEDX
EDX OPEN MARK "cUF" TYPE "" TAG substr(cOLDIDNFe,01,2) AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "AAMM" TYPE "" TAG substr(cOLDIDNFe,03,2) AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "CNPJ" TYPE "" TAG substr(cOLDIDNFe,05,2) AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "mod" TYPE "" TAG substr(cOLDIDNFe,21,2) AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "serie" TYPE "" TAG substr(cOLDIDNFe,23,3) AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "nNF" TYPE "" TAG substr(cOLDIDNFe,35,9) AUTOCLOSE REQUIRED OF oEDX
EDX CLOSE MARK OF oEDX // refNF
EDX CLOSE MARK OF oEDX // NFref
endif
EDX OPEN MARK "procEmi" TYPE "" TAG cNFEprocEmi AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "verProc" TYPE "" TAG cNFEverProc AUTOCLOSE REQUIRED OF oEDX
EDX CLOSE MARK OF oEDX // ide
EDX OPEN MARK "emit" OF oEDX /* *****( OK )***** */
EDX OPEN MARK "CNPJ" TYPE "" TAG LimpaCGC( ClCNPJ ) AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "xNome" TYPE "" TAG Cl_Nome AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "xFant" TYPE "" TAG "" AUTOCLOSE OF oEDX
EDX OPEN MARK "enderEmit" OF oEDX
EDX OPEN MARK "xLgr" TYPE "" TAG ClEndereco AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "nro" TYPE "" TAG "-" AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "xCpl" TYPE "" TAG "" AUTOCLOSE OF oEDX
EDX OPEN MARK "xBairro" TYPE "" TAG ClBairro AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "cMun" TYPE "" TAG ClIBGEUF+ClIBGECODUF AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "xMun" TYPE "" TAG ClCidade AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "UF" TYPE "" TAG ClEstado AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "CEP" TYPE "" TAG Cl_Cep AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "cPais" TYPE "" TAG "1058" AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "xPais" TYPE "" TAG "BRASIL" AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "fone" TYPE "" TAG cLMPTEL( Cl_Telefone ) AUTOCLOSE OF oEDX
EDX CLOSE MARK OF oEDX // enderEmit
EDX OPEN MARK "IE" TYPE "" TAG ClIE AUTOCLOSE OF oEDX
EDX CLOSE MARK OF oEDX // emit
EDX OPEN MARK "dest" OF oEDX /* *****( OK )***** */
if cClasCli = "J"
EDX OPEN MARK "CNPJ" TYPE "" TAG LimpaCGC( cCGC ) AUTOCLOSE REQUIRED OF oEDX
else
EDX OPEN MARK "CPF" TYPE "" TAG LimpaCGC( cCGC ) AUTOCLOSE REQUIRED OF oEDX
endif
EDX OPEN MARK "xNome" TYPE "" TAG cNome AUTOCLOSE REQUIRED OF oEDX
if !empty(cIDSuframa)
EDX OPEN MARK "ISUF" TYPE "" TAG LimpaCGC( cIDSuframa ) AUTOCLOSE OF oEDX
endif
EDX OPEN MARK "enderDest" OF oEDX
EDX OPEN MARK "xLgr" TYPE "" TAG cEndereco AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "nro" TYPE "" TAG "-" AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "xCpl" TYPE "" TAG "" AUTOCLOSE OF oEDX
EDX OPEN MARK "xBairro" TYPE "" TAG cBairro AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "cMun" TYPE "" TAG cIBGEUF+cIBGECODUF AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "xMun" TYPE "" TAG cCidade AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "UF" TYPE "" TAG cEstado AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "CEP" TYPE "" TAG cCEP AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "cPais" TYPE "" TAG "1058" AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "xPais" TYPE "" TAG "BRASIL" AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "fone" TYPE "" TAG cLMPTEL( cTelefone ) AUTOCLOSE OF oEDX
EDX CLOSE MARK OF oEDX // enderDest
EDX OPEN MARK "IE" TYPE "" TAG iif(cClasCli="J",cInscr,"") AUTOCLOSE OF oEDX
EDX CLOSE MARK OF oEDX // dest
EDX OPEN MARK "retirada" OF oEDX /* *****( OK )***** */
EDX OPEN MARK "CNPJ" TYPE "" TAG LimpaCGC( Cl_Cnpj ) AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "xLgr" TYPE "" TAG ClEndereco AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "nro" TYPE "" TAG "-" AUTOCLOSE OF oEDX
EDX OPEN MARK "xCpl" TYPE "" TAG "" AUTOCLOSE OF oEDX
EDX OPEN MARK "xBairro" TYPE "" TAG ClBairro AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "cMun" TYPE "" TAG ClIBGEUF+ClIBGECODUF AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "xMun" TYPE "" TAG ClCidade AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "UF" TYPE "" TAG ClEstado AUTOCLOSE REQUIRED OF oEDX
EDX CLOSE MARK OF oEDX // retirada
EDX OPEN MARK "entrega" OF oEDX /* *****( OK )***** */
if cClasCli = "J"
EDX OPEN MARK "CNPJ" TYPE "" TAG LimpaCGC( cCGC ) AUTOCLOSE REQUIRED OF oEDX
else
EDX OPEN MARK "CPF" TYPE "" TAG LimpaCGC( cCGC ) AUTOCLOSE REQUIRED OF oEDX
endif
EDX OPEN MARK "xLgr" TYPE "" TAG cLOCEntr AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "nro" TYPE "" TAG "-" AUTOCLOSE OF oEDX
EDX OPEN MARK "xCpl" TYPE "" TAG "" AUTOCLOSE OF oEDX
EDX OPEN MARK "xBairro" TYPE "" TAG cBAIEntr AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "cMun" TYPE "" TAG cIBGEeUF+cIBGEeCODUF AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "xMun" TYPE "" TAG cCIDEntr AUTOCLOSE REQUIRED OF oEDX
EDX OPEN MARK "UF" TYPE "" TAG cESTEntr AUTOCLOSE REQUIRED OF oEDX
EDX CLOSE MARK OF oEDX // entrega
nCounter := 1
nVLTotal := 0
nVLICMS := 0
nVLIPI := 0
aDispositivos := {}
cDispositivos := ""
dbSelectArea( "ES" )
OrdSetFocus( 3 )
OrdScope(0, STR(nIdpedido,6,0) )
OrdScope(1, STR(nIdpedido,6,0) )
dbSetFilter( {|| ES->VT = 'V'}, "ES->VT = 'V'" )
dbGoTop()
DO WHILE .NOT. EOF() // Dados dos produtos
if deleted()
skip
loop
endif
nNCMIPI := PESQ(es->ncmfiscal,"FISCAL",1,"ALIQUOTA")
cICMSNat := PESQ(str(iif(es->idnatureza>0,es->idnatureza,nIDNatureza),5,0),"NATUREZA",1,"CICMS") // Incidencia de ICMS
cIPINat := PESQ(str(iif(es->idnatureza>0,es->idnatureza,nIDNatureza),5,0),"NATUREZA",1,"CIPI") // Incidencia de IPI
cISSNat := PESQ(str(iif(es->idnatureza>0,es->idnatureza,nIDNatureza),5,0),"NATUREZA",1,"CISS") // Incidencia de ISS
cDISP := PESQ(str(iif(es->idnatureza>0,es->idnatureza,nIDNatureza),5,0),"NATUREZA",1,"DISPOSITIV")
aadd( aDispositivos, cDISP )
if ascan( aDispositivos, cDISP ) > 0 // Encontrou...
cDispositivos := cDispositivos + cDISP + " "
endif
EDX OPEN MARK "det" ATTRIB "nItem" VALUE alltrim( str( nCounter ) ) OF oEDX
EDX OPEN MARK "prod" OF oEDX
EDX OPEN MARK "cProd" TYPE "" TAG es->resumido AUTOCLOSE OF oEDX
EDX OPEN MARK "cEAN" TYPE "" TAG "" AUTOCLOSE OF oEDX
EDX OPEN MARK "xProd" TYPE "" TAG es->descricao AUTOCLOSE OF oEDX
EDX OPEN MARK "NCM" TYPE "" TAG strtran( es->ncmfiscal,".","" ) AUTOCLOSE OF oEDX
EDX OPEN MARK "EXTIPI" TYPE "" TAG "" AUTOCLOSE OF oEDX
EDX OPEN MARK "genero" TYPE "" TAG "" AUTOCLOSE OF oEDX
EDX OPEN MARK "CFOP" TYPE "" TAG ltrim(str(iif(es->idnatureza>0,es->idnatureza,nIDNatureza))) AUTOCLOSE OF oEDX
EDX OPEN MARK "uCom" TYPE "" TAG es->medida AUTOCLOSE OF oEDX
EDX OPEN MARK "qCom" TYPE "" TAG str( es->quantidade,14,4) AUTOCLOSE OF oEDX
EDX OPEN MARK "vUnCom" TYPE "" TAG str( es->valorvenda,9,2) AUTOCLOSE OF oEDX
EDX OPEN MARK "vProd" TYPE "" TAG str( es->subtotal ,9,2) AUTOCLOSE OF oEDX
EDX OPEN MARK "cEANTrib" TYPE "" TAG "" AUTOCLOSE OF oEDX
EDX OPEN MARK "uTrib" TYPE "" TAG es->medida AUTOCLOSE OF oEDX
EDX OPEN MARK "qTrib" TYPE "" TAG str( es->quantidade,14,4) AUTOCLOSE OF oEDX
EDX OPEN MARK "vUnTrib" TYPE "" TAG str( es->valorvenda,9,2) AUTOCLOSE OF oEDX
EDX OPEN MARK "vFrete" TYPE "" TAG "" AUTOCLOSE OF oEDX
EDX OPEN MARK "vSeg" TYPE "" TAG "" AUTOCLOSE OF oEDX
EDX OPEN MARK "vDesc" TYPE "" TAG "" AUTOCLOSE OF oEDX
EDX CLOSE MARK OF oEDX // prod
EDX OPEN MARK "imposto" OF oEDX
EDX OPEN MARK "ICMS" OF oEDX
EDX OPEN MARK "ICMS00" OF oEDX
EDX OPEN MARK "orig" TYPE "" TAG substr( es->idtributo,1,1 ) AUTOCLOSE OF oEDX
EDX OPEN MARK "CST" TYPE "" TAG substr( es->idtributo,2,2 ) AUTOCLOSE OF oEDX
EDX OPEN MARK "modBC" TYPE "" TAG "0" AUTOCLOSE OF oEDX
if cICMSNat = "S"
EDX OPEN MARK "vBC" TYPE "" TAG str( es->subtotal,9,2) AUTOCLOSE OF oEDX
EDX OPEN MARK "pICMS" TYPE "" TAG str( nDestICMS,5,2) AUTOCLOSE OF oEDX
EDX OPEN MARK "vICMS" TYPE "" TAG str( es->subtotal*(nDestICMS*.01),9,2) AUTOCLOSE OF oEDX
EDX OPEN MARK "vBCST" TYPE "" TAG str( es->subtotal,9,2) AUTOCLOSE OF oEDX
EDX OPEN MARK "pICMSST" TYPE "" TAG str( nDestICMS,5,2) AUTOCLOSE OF oEDX
EDX OPEN MARK "vICMSST" TYPE "" TAG str( es->subtotal*(nDestICMS*.01),9,2) AUTOCLOSE OF oEDX
nVLICMS := nVLICMS + es->subtotal*(nDestICMS*.01)
endif
EDX CLOSE MARK OF oEDX // icms60
EDX CLOSE MARK OF oEDX // icms
EDX OPEN MARK "IPI" OF oEDX
EDX OPEN MARK "IPITrib" OF oEDX
EDX OPEN MARK "CST" TYPE "" TAG "" AUTOCLOSE OF oEDX
if cIPINat = "S"
EDX OPEN MARK "vBC" TYPE "" TAG str( es->subtotal,9,2) AUTOCLOSE OF oEDX
EDX OPEN MARK "pIPI" TYPE "" TAG str( nNCMIPI,5,2) AUTOCLOSE OF oEDX
EDX OPEN MARK "vIPI" TYPE "" TAG str( es->subtotal*(nNCMIPI*.01),9,2) AUTOCLOSE OF oEDX
nVLIPI := nVLIPI + es->subtotal*(nNCMIPI*.01)
endif
EDX CLOSE MARK OF oEDX // icms60
EDX CLOSE MARK OF oEDX // icms
EDX CLOSE MARK OF oEDX // imposto
EDX CLOSE MARK OF oEDX // det
nVLTotal := nVLTotal + es->subtotal
nCounter := nCounter + 1
SKIP
ENDDO
EDX OPEN MARK "total" OF oEDX
EDX OPEN MARK "ICMSTot" OF oEDX
if cICMSNat = "S"
EDX OPEN MARK "vBC" TYPE "" TAG str(iif(!empty(cIDSuframa),0,nVLTotal),9,2 ) AUTOCLOSE OF oEDX
EDX OPEN MARK "vICMS" TYPE "" TAG str(iif(!empty(cIDSuframa),0,nVLICMS),9,2 ) AUTOCLOSE OF oEDX
endif
EDX OPEN MARK "vBCST" TYPE "" TAG "0" AUTOCLOSE OF oEDX
EDX OPEN MARK "vST" TYPE "" TAG "0" AUTOCLOSE OF oEDX
EDX OPEN MARK "vProd" TYPE "" TAG str( nVLTotal,9,2 ) AUTOCLOSE OF oEDX
EDX OPEN MARK "vFrete" TYPE "" TAG str( nFrete,9,2 ) AUTOCLOSE OF oEDX
EDX OPEN MARK "vSeg" TYPE "" TAG str( nSeguro,9,2 ) AUTOCLOSE OF oEDX
EDX OPEN MARK "vDesc" TYPE "" TAG str(iif(!empty(cIDSuframa),nVLICMS,nDesconto),9,2 ) AUTOCLOSE OF oEDX
EDX OPEN MARK "vII" TYPE "" TAG "0" AUTOCLOSE OF oEDX
EDX OPEN MARK "vIPI" TYPE "" TAG str(iif(cIPINat="S",nVLIPI,0),9,2 ) AUTOCLOSE OF oEDX
EDX OPEN MARK "vPIS" TYPE "" TAG "0" AUTOCLOSE OF oEDX
EDX OPEN MARK "vCOFINS" TYPE "" TAG "0" AUTOCLOSE OF oEDX
EDX OPEN MARK "vOutro" TYPE "" TAG str( nOutros,9,2 ) AUTOCLOSE OF oEDX
EDX OPEN MARK "vNF" TYPE "" TAG str( (nVLTotal+iif(cIPINat="S",nVLIPI,0)+nFrete+nSeguro+nOutros)-iif(!empty(cIDSuframa),nVLICMS,nDesconto),9,2 ) AUTOCLOSE OF oEDX
EDX CLOSE MARK OF oEDX // ICMSTot
EDX CLOSE MARK OF oEDX // total
EDX OPEN MARK "transp" OF oEDX
EDX OPEN MARK "modFrete" TYPE "" TAG str( cFrete ) AUTOCLOSE OF oEDX
EDX OPEN MARK "transporta" OF oEDX
EDX OPEN MARK "CNPJ" TYPE "" TAG LimpaCGC( cTRCNPJ ) AUTOCLOSE OF oEDX
EDX OPEN MARK "xNome" TYPE "" TAG cTRNome AUTOCLOSE OF oEDX
EDX OPEN MARK "IE" TYPE "" TAG cTRInscr AUTOCLOSE OF oEDX
EDX OPEN MARK "xEnder" TYPE "" TAG cTREndereco AUTOCLOSE OF oEDX
EDX OPEN MARK "xMun" TYPE "" TAG cTRCidade AUTOCLOSE OF oEDX
EDX OPEN MARK "UF" TYPE "" TAG cTREstado AUTOCLOSE OF oEDX
EDX CLOSE MARK OF oEDX // transporta
EDX OPEN MARK "veicTransp" OF oEDX
EDX OPEN MARK "placa" TYPE "" TAG cPlaca AUTOCLOSE OF oEDX
EDX OPEN MARK "UF" TYPE "" TAG "SP" AUTOCLOSE OF oEDX
EDX OPEN MARK "RNTC" TYPE "" TAG "0" AUTOCLOSE OF oEDX
EDX CLOSE MARK OF oEDX // veicTransp
EDX OPEN MARK "vol" OF oEDX
EDX OPEN MARK "qVol" TYPE "" TAG str( cVolumes ) AUTOCLOSE OF oEDX
EDX OPEN MARK "esp" TYPE "" TAG cEspecie AUTOCLOSE OF oEDX
EDX OPEN MARK "marca" TYPE "" TAG "" AUTOCLOSE OF oEDX
EDX OPEN MARK "nVol" TYPE "" TAG str( nIDPedido,6 ) AUTOCLOSE OF oEDX
EDX OPEN MARK "pesoL" TYPE "" TAG str( nPesoL,9,3 ) AUTOCLOSE OF oEDX
EDX OPEN MARK "pesoB" TYPE "" TAG str( nPeso,9,3 ) AUTOCLOSE OF oEDX
EDX CLOSE MARK OF oEDX // vol
EDX CLOSE MARK OF oEDX // transp
EDX OPEN MARK "cobr" OF oEDX
IF Q_TI_TULOS >= 1
nFaturas := nFaturas + TI_TULOS[1,2]
EDX OPEN MARK "dup" OF oEDX
EDX OPEN MARK "nDup" TYPE "" TAG strZero( nIDNFE,4 )+iif(Q_TI_TULOS=1,"-A","") AUTOCLOSE OF oEDX
EDX OPEN MARK "vDup" TYPE "" TAG strtran(TRANSF(TI_TULOS[1,2],'@E 999,999.99'),".","") AUTOCLOSE OF oEDX
EDX OPEN MARK "dVenc" TYPE "" TAG myDTOS(TI_TULOS[1,3]) AUTOCLOSE OF oEDX
EDX CLOSE MARK OF oEDX
ENDIF
IF Q_TI_TULOS >= 2
nFaturas := nFaturas + TI_TULOS[2,2]
EDX OPEN MARK "dup" OF oEDX
EDX OPEN MARK "nDup" TYPE "" TAG strZero( nIDNFE,4 )+iif(Q_TI_TULOS=2,"-B","") AUTOCLOSE OF oEDX
EDX OPEN MARK "vDup" TYPE "" TAG strtran(TRANSF(TI_TULOS[2,2],'@E 999,999.99'),".","") AUTOCLOSE OF oEDX
EDX OPEN MARK "dVenc" TYPE "" TAG myDTOS(TI_TULOS[2,3]) AUTOCLOSE OF oEDX
EDX CLOSE MARK OF oEDX
ENDIF
IF Q_TI_TULOS >= 3
nFaturas := nFaturas + TI_TULOS[3,2]
EDX OPEN MARK "dup" OF oEDX
EDX OPEN MARK "nDup" TYPE "" TAG strZero( nIDNFE,4 )+iif(Q_TI_TULOS=3,"-C","") AUTOCLOSE OF oEDX
EDX OPEN MARK "vDup" TYPE "" TAG strtran(TRANSF(TI_TULOS[3,2],'@E 999,999.99'),".","") AUTOCLOSE OF oEDX
EDX OPEN MARK "dVenc" TYPE "" TAG myDTOS(TI_TULOS[3,3]) AUTOCLOSE OF oEDX
EDX CLOSE MARK OF oEDX
ENDIF
EDX CLOSE MARK OF oEDX
EDX OPEN MARK "infAdic" OF oEDX
EDX OPEN MARK "infCpl" TYPE "" TAG cDispositivos + " " + cOBSCpl AUTOCLOSE OF oEDX
EDX OPEN MARK "infAdFisco" TYPE "" TAG cOBSAdic AUTOCLOSE OF oEDX
EDX CLOSE MARK OF oEDX // lacres
EDX CLOSE MARK OF oEDX // infNFe
EDX CLOSE MARK OF oEDX // NFe
EDX END oEDX
TABELAS
PN - é minha tabela de pedidos a qual me dá suporte a informações como CFOP, código da transportadora, código do cliente.
ES - é minha tabela de itens de pedido, de onde eu vou puxar os itens da nota que irei gerar e criticar seus registros.
FISCAL - é minha tabela que contém os códigos NCM usados pela empresa e seus respectivos valores de IPI.
NCM - é uma tabela completa que possui os códigos NCM e suas aliquotas de IPI.
NATUREZA - é uma tabela que contém as CFOP usadas na nota e as caracteristicas de cálculo de ICMS e IPI.
IBGE - é uma tabela que contém os códigos de UF e de localidades que serão usados para gerar a chave NFe
CEP - é uma tabela que contém os endereços para completar e sanear o conteúdo do XML.
VARIÁVEIS
cClasCli - usada para criticar o tipo de nota, sendo "J" para juridica e "F" para consumidor final criando a tag correta.
cIDSuframa - variável que configura a tag que dirá ao SEFAZ que se trata de uma nota SUFRAMA e configura as tags.
cICMSNat - variável que configura o cálculo ou não do ICMS em cada item e permite acumular o total.
cIPINat - variável que configura o cálculo ou não do IPI em cada item e permite acumular o total.
cDISP - acumula as frases de dispositivos legais que serão apresentadas no final da nota em informações adicionais.
Cada nota poderá ter em cada item uma CFOP diferente e portanto o cálculo de ICMS e IPI referente deve ser criticado corretamente.
Caso só exista uma CFOP para a nota todos seus itens devem ser identicos.
FUNÇÕES
VerifyINI - função que le e grava arquivos INI. Uma busca pelo forum e encontrarão ela.
LimpaCGC - função de limpeza de caracteres estranhos no código. idem a VerifyINI
Pesq - função de pesquisa em outras tabelas. Uma busca por Links, Links, e mais Links...
O código acima foi trabalhado usando esta dica
A codificação é baseada na criação de arquivo em baixo nivel e não requer Fivewin, mas coloquei nesta sessão por ser direcionada a código fonte.
Espero que o esboço sirva de valia para os atrasadinhos ou que ainda estiverem confusos com a sopa de letrinhas fiscal.
