Código: Selecionar todos
SET DEVICE TO PRINTER
SET PRINTER TO C:\TEMP\SIGDANFE.XML
@PROW(),0 SAY '<?xml version="1.0" encoding="utf-8"?>'
@PROW()+1,0 SAY '<nfeProc versao="1.10" xmlns="http://www.portalfiscal.inf.br/nfe">'
@PROW()+1,0 SAY '<NFe xmlns="http://www.portalfiscal.inf.br/nfe">'
@PROW()+1,0 SAY '<infNFe Id="NFe00000000000000000000000000000000000000000000" versao="1.10">'
@PROW()+1,0 SAY '<ide>'
@PROW()+1,0 SAY '<cUF>22</cUF>'
@PROW()+1,0 SAY '<cNF>180244091</cNF>'
@PROW()+1,0 SAY '<natOp>'+RTRIM(xcfop_nom)+'</natOp>'
@PROW()+1,0 SAY '<indPag>0</indPag>'
@PROW()+1,0 SAY '<mod>55</mod>'
@PROW()+1,0 SAY '<serie>1</serie>'
@PROW()+1,0 SAY '<nNF>'+LTRIM(str(t_ult_nf))+'</nNF>'
SET DATE FORMAT TO "yyyy-mm-dd"
@PROW()+1,0 SAY '<dEmi>'+DTOC(t_dtmovi)+'</dEmi>'
@PROW()+1,0 SAY '<dSaiEnt>'+DTOC(t_dtmovi)+'</dSaiEnt>'
set date brit
@PROW()+1,0 SAY '<tpNF>'+xtiponf+'</tpNF>'
@PROW()+1,0 SAY '<cMunFG>'+tcodcid+'</cMunFG>'
@PROW()+1,0 SAY '<tpImp>1</tpImp>'
@PROW()+1,0 SAY '<tpEmis>1</tpEmis>'
@PROW()+1,0 SAY '<cDV>3</cDV>'
@PROW()+1,0 SAY '<tpAmb>2</tpAmb>'
@PROW()+1,0 SAY '<finNFe>1</finNFe>'
@PROW()+1,0 SAY '<procEmi>0</procEmi>'
@PROW()+1,0 SAY '<verProc>NF-eletronica.com</verProc>'
@PROW()+1,0 SAY '</ide>'
@PROW()+1,0 SAY '<emit>'
@PROW()+1,0 SAY '<CNPJ>'+LTRIM(cnpj_usu)+'</CNPJ>'
@PROW()+1,0 SAY '<xNome>'+rtrim(empresa)+'</xNome>'
@PROW()+1,0 SAY '<xFant>'+rtrim(empresa)+'</xFant>'
@PROW()+1,0 SAY '<enderEmit>'
@PROW()+1,0 SAY '<xLgr>'+rtrim(tender)+'</xLgr>'
@PROW()+1,0 SAY '<nro>'+RTRIM(tnumemp)+'</nro>'
@PROW()+1,0 SAY '<xCpl>'+rtrim(tbairro)+'</xCpl>'
@PROW()+1,0 SAY '<xBairro>'+rtrim(tbairro)+'</xBairro>'
@PROW()+1,0 SAY '<cMun>'+tcodcid+'</cMun>'
@PROW()+1,0 SAY '<xMun>'+rtrim(cid_usu)+'</xMun>'
@PROW()+1,0 SAY '<UF>'+uf_usu+'</UF>'
@PROW()+1,0 SAY '<CEP>'+tcepemp+'</CEP>'
@PROW()+1,0 SAY '<cPais>1058</cPais>'
@PROW()+1,0 SAY '<xPais>Brasil</xPais>'
@PROW()+1,0 SAY '<fone>'+tfonemp+'</fone>'
@PROW()+1,0 SAY '</enderEmit>'
@PROW()+1,0 SAY '<IE>'+rtrim(charRem("-./()",inscri))+'</IE>'
@PROW()+1,0 SAY '</emit>'
@PROW()+1,0 SAY '<dest>'
@PROW()+1,0 SAY '<CNPJ>'+t_cpfcgc+'</CNPJ>'
@PROW()+1,0 SAY '<xNome>'+rtrim(t_clifor)+'</xNome>'
@PROW()+1,0 SAY '<enderDest>'
@PROW()+1,0 SAY '<xLgr>'+rtrim(endereco)+'</xLgr>'
@PROW()+1,0 SAY '<nro>0</nro>'
@PROW()+1,0 SAY '<xCpl>URBANO</xCpl>'
@PROW()+1,0 SAY '<xBairro>'+RTRIM(bairro)+'</xBairro>'
@PROW()+1,0 SAY '<cMun>0000000</cMun>'
@PROW()+1,0 SAY '<xMun>'+rtrim(cidade)+'</xMun>'
@PROW()+1,0 SAY '<UF>'+uf+'</UF>'
@PROW()+1,0 SAY '<CEP>'+cep+'</CEP>'
@PROW()+1,0 SAY '<cPais>1058</cPais>'
@PROW()+1,0 SAY '<xPais>Brasil</xPais>'
@PROW()+1,0 SAY '<fone>'+rtrim(charRem("-./()",fone))+'</fone>'
@PROW()+1,0 SAY '</enderDest>'
@PROW()+1,0 SAY '<IE>'+rtrim(charRem("-./()",t_iest))+'</IE>'
@PROW()+1,0 SAY '</dest>'
* Abrindo arquido de Pedido, para imprimir os Itens...
SELE PEDIDO
val_icms1 =0
val_icms2 =0
val_ipi1 =0
val_ipi2 =0
tot_frete =0
tot1_nf =0
combust =''
fabrica =''
base_reduz=0
* calculando impostos e outros dados - parte principal...
tot1_nf = tot1_nf + total_p
base_reduz= total_p * baseicms /100
val_ipi1 = total_p * poripi / 100
val_ipi2 = val_ipi2 + val_ipi1
val_icms1 = base_reduz * poricms / 100
val_icms2 = val_icms2 + val_icms1
tot_frete = tot_frete + frete
IF t_combust = '1'
combust = 'ALCOOL'
ELSEIF t_combust = '2'
combust = 'GASOLINA'
ELSEIF t_combust = '3'
combust = 'DIESEL'
ELSEIF t_combust = '4'
combust = 'A/G FLEX'
ELSEIF t_combust = '5'
combust = 'OUTROS'
ENDIF
IF fabricante='1'
fabrica='VOLKSWAGEM'
ELSEIF fabricante='2'
fabrica='CHEVROLET '
ELSEIF fabricante='3'
fabrica='FIAT '
ELSEIF fabricante='4'
fabrica='FORD '
ELSEIF fabricante='5'
fabrica='MOTOS '
ELSEIF fabricante='6'
fabrica='OUTROS '
ELSEIF fabricante='7'
fabrica='RENAULT '
ELSEIF fabricante='8'
fabrica='HONDA '
ELSEIF fabricante='9'
fabrica='TOYOTA '
ENDIF
* numero do item - obrigatorio 1 a 3
@PROW()+1,0 SAY '<det nItem="1">'
@PROW()+1,0 SAY '<prod>'
@PROW()+1,0 SAY '<cProd>'+ltrim(str(codpro_p))+'</cProd>'
@PROW()+1,0 SAY '<cEAN />'
@PROW()+1,0 SAY '<xProd>'+RTRIM(descpro_p)+" "+fabrica+" COMBUST "+combust+" CHASSI "+n_chassis+" PLACA "+placa+" ANO "+ano+" COR "+rtrim(cor)+'</xProd>'
@PROW()+1,0 SAY '<CFOP>'+cfop+'</CFOP>'
@PROW()+1,0 SAY '<uCom>1</uCom>'
@PROW()+1,0 SAY '<qCom>1</qCom>'
* foi adicionado 00 abaixo para completar as 4 decimais obrigatorias...
@PROW()+1,0 SAY '<vUnCom>'+ltrim(str(unit_p))+'00'+'</vUnCom>'
@PROW()+1,0 SAY '<vProd>'+ltrim(str(total_p))+'</vProd>'
@PROW()+1,0 SAY '<cEANTrib />'
@PROW()+1,0 SAY '<uTrib>UNI</uTrib>'
@PROW()+1,0 SAY '<qTrib>1</qTrib>'
@PROW()+1,0 SAY '<vUnTrib>1</vUnTrib>'
@PROW()+1,0 SAY '</prod>'
@PROW()+1,0 SAY '<imposto>'
tot_ger = tot1_nf + tot_frete + seguro + taxas + val_ipi2
@PROW()+1,0 SAY '<ICMS>'
@PROW()+1,0 SAY '<ICMS00>'
@PROW()+1,0 SAY '<orig>0</orig>'
@PROW()+1,0 SAY '<CST>00</CST>'
@PROW()+1,0 SAY '<modBC>0</modBC>'
@PROW()+1,0 SAY '<vBC>'+LTRIM(str(base_reduz))+'</vBC>'
@PROW()+1,0 SAY '<pICMS>'+LTRIM(STR(poricms))+'</pICMS>'
@PROW()+1,0 SAY '<vICMS>'+ltrim(str(val_icms2))+'</vICMS>'
@PROW()+1,0 SAY '</ICMS00>'
@PROW()+1,0 SAY '</ICMS>'
@PROW()+1,0 SAY '<PIS>'
@PROW()+1,0 SAY '<PISAliq>'
@PROW()+1,0 SAY '<CST>01</CST>'
@PROW()+1,0 SAY '<vBC>1.00</vBC>'
@PROW()+1,0 SAY '<pPIS>0.65</pPIS>'
@PROW()+1,0 SAY '<vPIS>0.01</vPIS>'
@PROW()+1,0 SAY '</PISAliq>'
@PROW()+1,0 SAY '</PIS>'
@PROW()+1,0 SAY '<COFINS>'
@PROW()+1,0 SAY '<COFINSAliq>'
@PROW()+1,0 SAY '<CST>01</CST>'
@PROW()+1,0 SAY '<vBC>1.00</vBC>'
@PROW()+1,0 SAY '<pCOFINS>3.00</pCOFINS>'
@PROW()+1,0 SAY '<vCOFINS>0.03</vCOFINS>'
@PROW()+1,0 SAY '</COFINSAliq>'
@PROW()+1,0 SAY '</COFINS>'
@PROW()+1,0 SAY '</imposto>'
@PROW()+1,0 SAY '</det>'
@PROW()+1,0 SAY '<total>'
@PROW()+1,0 SAY '<ICMSTot>'
@PROW()+1,0 SAY '<vBC>'+LTRIM(str(base_reduz))+'</vBC>'
@PROW()+1,0 SAY '<vICMS>'+LTRIM(STR(poricms))+'</vICMS>'
@PROW()+1,0 SAY '<vBCST>0</vBCST>'
@PROW()+1,0 SAY '<vST>0</vST>'
@PROW()+1,0 SAY '<vProd>'+LTRIM(str(tot1_nf))+'</vProd>'
@PROW()+1,0 SAY '<vFrete>0.00</vFrete>'
@PROW()+1,0 SAY '<vSeg>0.00</vSeg>'
@PROW()+1,0 SAY '<vDesc>0</vDesc>'
@PROW()+1,0 SAY '<vII>0</vII>'
@PROW()+1,0 SAY '<vIPI>0</vIPI>'
@PROW()+1,0 SAY '<vPIS>0.01</vPIS>'
@PROW()+1,0 SAY '<vCOFINS>0.03</vCOFINS>'
@PROW()+1,0 SAY '<vOutro>0</vOutro>'
@PROW()+1,0 SAY '<vNF>'+LTRIM(str(tot_ger))+'</vNF>'
@PROW()+1,0 SAY '</ICMSTot>'
@PROW()+1,0 SAY '</total>'
@PROW()+1,0 SAY '<transp>'
@PROW()+1,0 SAY '<modFrete>'+despfrete+'</modFrete>'
@PROW()+1,0 SAY '<transporta>'
IF !EMPTY(cpfcgctra)
@PROW()+1,0 SAY '<CNPJ>'+RTRIM(cpfcgctra)+'</CNPJ>'
ENDIF
IF !EMPTY(transport)
@PROW()+1,0 SAY '<xNome>'+RTRIM(transport)+'</xNome>'
ENDIF
IF !EMPTY(insctrans)
@PROW()+1,0 SAY '<IE>'+rtrim(charRem("-./()",insctrans))+'</IE>'
ENDIF
IF !EMPTY(endtransp)
@PROW()+1,0 SAY '<xEnder>'+RTRIM(endtransp)+'</xEnder>'
ENDIF
IF !EMPTY(cidtransp)
@PROW()+1,0 SAY '<xMun>'+rtrim(cidtransp)+'</xMun>'
@PROW()+1,0 SAY '<UF>'+uftransp+'</UF>'
ENDIF
@PROW()+1,0 SAY '</transporta>'
IF !EMPTY(placatran)
@PROW()+1,0 SAY '<veicTransp>'
@PROW()+1,0 SAY '<placa>'+placatran+'</placa>'
@PROW()+1,0 SAY '<UF>'+ufplaca+'</UF>'
@PROW()+1,0 SAY '</veicTransp>'
ENDIF
@PROW()+1,0 SAY '<vol>'
@PROW()+1,0 SAY '<qVol>1</qVol>'
@PROW()+1,0 SAY '<esp>1</esp>'
@PROW()+1,0 SAY '<marca>1</marca>'
@PROW()+1,0 SAY '<pesoL>1.000</pesoL>'
@PROW()+1,0 SAY '<pesoB>1.000</pesoB>'
@PROW()+1,0 SAY '</vol>'
@PROW()+1,0 SAY '</transp>'
@PROW()+1,0 SAY '<cobr>'
@PROW()+1,0 SAY '<fat>'
@PROW()+1,0 SAY '<nFat>FATURADO</nFat>'
@PROW()+1,0 SAY '</fat>'
@PROW()+1,0 SAY '</cobr>'
@PROW()+1,0 SAY '</infNFe>'
@PROW()+1,0 SAY '<signature xmlns="http://www.w3.org/2000/09/xmldsig#">'
@PROW()+1,0 SAY '</signature>'
@PROW()+1,0 SAY '</NFe>'
@PROW()+1,0 SAY '</nfeProc>'
SET DEVICE TO SCREEN
SET PRINTER TO
RETURN
Obs.: tem alguns erros que na validação do programa da SEFAZ ocorrem. Preciso de ajuda de todos para poder solucionar o problema.
PS.: o fonte acima precisa ser modificado dependendo do usuário (variaveis por exemplo).