NFE 2.0

Fórum sobre desenvolvimento de software para atender as exigências da legislação fiscal e tributária (NFe, NFCe, NFSe, SPEED, Projeto ACBr, TEF, ECD, EFD, etc.)

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Re: NFE 2.0

Mensagem por JoséQuintas »

Já tem até o aviso no emissor.
É a partir de 01/04/2011.

A alteração básica é moleza, mas pra empresas no simples... complicou um pouco.
Pode partir do 1.0 pra chegar no 2.0, fazendo testes de importação.
O próprio emissor vai dizendo aonde alterar.

Aqui eu usei esse esquema como ponto de partida.
E na rotina de geração fui acrescentando IFs nos pontos diferentes.

Código: Selecionar todos

set alternate to nota.txt additive
If mLayout="1"
   ?? "1.4.3"
Else
   ?? "2.0.3"
Endif
?? mCrLf
set alternate to nota.xml additive
If mLayout =="1"
   ?? "<versao>1.4.3</versao>"
Else
   ?? "<versao>2.0.3</versao>"
Endif
É apenas um ponto de partida.
Tem a parte de tributacao pelo simples, que mudou radical.
Mas partindo da geração que já tem, só ir alterando aonde o emissor reclama.
No final de tudo, trabalhar na parte do simples.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
EANDRIOLI
Usuário Nível 3
Usuário Nível 3
Mensagens: 109
Registrado em: 22 Jun 2007 18:31
Localização: Sorriso-MT

Re: NFE 2.0

Mensagem por EANDRIOLI »

Vamos dar uma olhada em como criar um xML puro no Clipper:

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).

Saudações

ERASMO ANDRIOLI
Editado pela última vez por Toledo em 10 Fev 2011 07:19, em um total de 1 vez.
Razão: Mensagem editada para formatação de texto em letras minúsculas. Evite postar mensagens com texto TOTALMENTE EM LETRAS MAIÚSCULAS.<br>Veja as Regras do Fórum:<br>7 - Mensagens em letras MAIÚSCULAS poderão ser editadas sem aviso prévio.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Re: NFE 2.0

Mensagem por JoséQuintas »

Sem mensagem de erro, teria que ficar conferindo cada item da geração.
Deixa de ser ajuda pra ser realmente trabalho.
Complicado assim.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder