Skip to content

Commit

Permalink
Merge branch 'master' of github.com:fincatto/nfe into dev
Browse files Browse the repository at this point in the history
  • Loading branch information
jefperito committed Sep 23, 2015
2 parents 2d641b9 + 42ff1a0 commit e280fc5
Show file tree
Hide file tree
Showing 9 changed files with 40 additions and 21 deletions.
6 changes: 4 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
language: java
before_script:
- echo 'America/Sao_Paulo' | sudo tee /etc/timezone
- export TZ=America/Sao_Paulo

jdk:
- oraclejdk8
Expand All @@ -11,4 +11,6 @@ notifications:
- [email protected]
- [email protected]
on_success: change
on_failure: always
on_failure: always

sudo: false
17 changes: 11 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Comunicador de nota fiscal da [fazenda](http://www.nfe.fazenda.gov.br/portal/pri

## Atenção
O pacote de classes nfe200 refere-se à versão 2.00 da NFe.<br/>
Ele deve ser utilizado apenas para tradução de notas antigas pois é prevista sua desativação em 31/03/2015, portanto,
Ele deve ser utilizado apenas para tradução de notas antigas pois é foi desativado em 31/03/2015, portanto,
faça a integração com o teu sistema com as classes contidas no pacote nfe310.<br/>
<br/>
Este é um projeto colaborativo, sinta-se a vontade em usar e colaborar com o mesmo.<br/>
Expand Down Expand Up @@ -49,7 +49,7 @@ final NFLoteEnvioRetorno retorno = new WSFacade(config).enviaLote(lote);
#### Corrige nota
Faça a correcao da nota atraves do facade:
```java
final NFEnviaEventoRetorno retorno = new WSFacade(config).corrigeNota(chaveDeAcessoDaNota, textoCorrecao);
final NFEnviaEventoRetorno retorno = new WSFacade(config).corrigeNota(chaveDeAcessoDaNota, textoCorrecao, sequencialEventoDaNota);
```

#### Cancela nota
Expand All @@ -73,8 +73,13 @@ String xmlGerado = lote.toString();
### Convertendo nota XML em Java
Existe uma classe que pode receber um File/String e converter para um objeto NFNota, faça da seguinte forma:
```java
final NFNota nota = new NotaParser().paraObjeto(xmlNota);
final NFNota nota = new NotaParser().notaParaObjeto(xmlNota);
```
Ou para uma nota já processada:
```java
final NFNotaProcessada notaProcessada = new NotaParser().notaProcessadaParaObjeto(xmlNota);
```


### Armazenando notas autorizadas
Você precisará armazenar as notas autorizadas por questões legais e também para a geração do DANFE, uma forma de fazer é armazenar o xml das notas ao enviar o lote:
Expand All @@ -90,7 +95,7 @@ final String xmlNotaRecuperada;
// Assine a nota
final String xmlNotaRecuperadaAssinada = new AssinaturaDigital(config).assinarDocumento(xmlNotaRecuperada);
// Converta para objeto java
final NFNota notaRecuperadaAssinada = new NotaParser().notaParaObjeto(xmlNota);
final NFNota notaRecuperadaAssinada = new NotaParser().notaParaObjeto(xmlNotaRecuperadaAssinada);
// Crie o objeto NFNotaProcessada
final NFNotaProcessada notaProcessada = new NFNotaProcessada();
notaProcessada.setVersao(new BigDecimal(NFeConfig.VERSAO_NFE));
Expand Down Expand Up @@ -118,7 +123,7 @@ String xmlNotaProcessadaPeloSefaz = notaProcessada.toString();
| Consulta cadastro | Estável |

## Criação do Java KeyStore (JKS)
Para usar os serviços da nota fiscal são necessarios dois certificados, o certificado do cliente que será utilizado para assinar as notas e comunicar com o fisco e o certificado da SEFAZ que desejamos acesso.
Para usar os serviços da nota fiscal são necessários dois certificados, o certificado do cliente que será utilizado para assinar as notas e comunicar com o fisco e o certificado da SEFAZ que desejamos acesso.

Os certificados são um ponto critico já que estes tem validade de apenas um ano (certificado cliente). Além disso as SEFAZ vem trocando suas cadeias de certificado a cada atualização. Dessa forma se surgirem erros de SSL vale a pena verificar se existem novas atualizações de certificados.

Expand All @@ -138,7 +143,7 @@ Apache 2.0
## Dúvidas?
O projeto da NFe brasileira é relativamente complexo e propenso a dúvidas. <br/>
Para ajudar a saná-las, foi disponibilizado um fórum para ajudar na implementação e tirar dúvidas:
* [Fórum NFe](http://tecnoandroid.com.br/nfe/)
* [Fórum NFe](http://www.edsonmoretti.com.br/nfe/)

##Agradecimentos
- [Edson Moretti](https://github.com/edsonmoretti): Criação e manutenção do forum
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ public enum NFUnidadeFederativa {
SE("SE", "Sergipe", "28"),
TO("TO", "Tocantins", "17"),
NACIONAL("NC", "Nacional", "90"),
RFB("RFB", "RFB", "91");
RFB("RFB", "RFB", "91"),
EX("EX", "Exterior", "99");

private final String codigo;
private final String descricao;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.fincatto.nfe310.classes.cadastro;

public enum NFIndicadorContribuinteCTe {
AO_CREDENCIADO_PARA_EMISSAO_CTE(0),
NAO_CREDENCIADO_PARA_EMISSAO_CTE(0),
CREDENCIADO(1),
CREDENCIADO_COM_OBRIGATORIEDADE_PARA_TODAS_OPERACOES(2),
CREDENCIADO_COM_OBRIGATORIEDADE_PARCIAL(3),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,9 @@ public void setEmail(final String email) {
}

public void setIdEstrangeiro(final String idEstrangeiro) {
StringValidador.tamanho5a20(idEstrangeiro);
if (!idEstrangeiro.isEmpty()) {
StringValidador.tamanho5a20(idEstrangeiro);
}
this.idEstrangeiro = idEstrangeiro;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public class NFNotaInfoExportacao extends NFBase {
@Element(name = "xLocExporta", required = true)
private String localEmbarqueProdutos;

@Element(name = "xLocDespacho", required = true)
@Element(name = "xLocDespacho", required = false)
private String localDespachoProdutos;

public void setUfEmbarqueProduto(final NFUnidadeFederativa ufEmbarqueProduto) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,9 @@ public void deveRepresentarOCodigoCorretamente() {

Assert.assertEquals("RFB", NFUnidadeFederativa.RFB.getCodigo());
Assert.assertEquals("91", NFUnidadeFederativa.RFB.getCodigoIbge());

Assert.assertEquals("EX", NFUnidadeFederativa.EX.getCodigo());
Assert.assertEquals("99", NFUnidadeFederativa.EX.getCodigoIbge());
}

@Test(expected = IllegalArgumentException.class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,20 @@ public void naoDevePermitirRazaoSocialNulo() {
destinatario.setInscricaoMunicipal("5ow5E1mZQPe1VUR");
destinatario.toString();
}

@Test
public void devePermitirIdEstrangeiroComTamanhoZero() {
final NFNotaInfoDestinatario destinatario = new NFNotaInfoDestinatario();
destinatario.setCnpj("12345678901234");
destinatario.setEmail("ivU3ctXKzImStrYzRpDTXRyCfSzxlEe5GTbeyVZ1OlIvgKGLJJMJlaKtYj8K");
destinatario.setEndereco(FabricaDeObjetosFake.getNFEndereco());
destinatario.setInscricaoEstadual("ISENTO");
destinatario.setRazaoSocial("F7HL85M9v7jW5lX4Z9V7sF3kshuj967gj4uACEmpmVQgM9yYeQAgaY5EcSfR");
destinatario.setIndicadorIEDestinatario(NFIndicadorIEDestinatario.NAO_CONTRIBUINTE);
destinatario.setInscricaoMunicipal("5ow5E1mZQPe1VUR");
destinatario.setIdEstrangeiro("");
destinatario.toString();
}

@Test
public void deveGerarXMLDeAcordoComOPadraoEstabelecido() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,7 @@ public void naoDevePermitirLocalEmbarqueProdutosComTamanhoNaoPermitido() {
}
Assert.fail("Validacao nao esta funcionando corretamente");
}

@Test(expected = IllegalStateException.class)
public void naoDevePermitirLocalDespachoNulo() {
final NFNotaInfoExportacao exportacao = new NFNotaInfoExportacao();
exportacao.setLocalEmbarqueProdutos("xEb99u9TExujbhMIcO9u9ycsZAg2gtKzIFgsUogoVjuyDAhnlkZz3I5Hpccm");
exportacao.setUfEmbarqueProduto(NFUnidadeFederativa.SC);
exportacao.toString();
}


@Test(expected = IllegalStateException.class)
public void naoDeveGerarXMLUfEmbarqueProdutoNulo() {
final NFNotaInfoExportacao exportacao = new NFNotaInfoExportacao();
Expand Down

0 comments on commit e280fc5

Please sign in to comment.