Ir para conteúdo
  • Cadastre-se

dev botao
  • Este tópico foi criado há 3384 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Bom dia pessoal,

no meu sistema, pra emitir uma NFe, o usuário deve gerar uma venda e, se quiser, emitir a NFe e/ou cupom fiscal.

Gostaria de saber como/se o ACBr permite enviar várias NFe's de uma vez ao invés do usuário emitir uma NFe de cada vez pra cada venda.

 

Desde já, obrigado.

  • Consultores
Postado

Boa tarde Flavio,

 

A sua aplicação deve ter uma procedure responsável por alimentar o componente com os dados da venda, correto?

 

Essa rotina possui:

 

 with ACBrNFe.NotasFiscais.Add.NFe do
  begin
  // alimentação das propriedades do componente com os dados da venda
  end;
 
O que eu coloquei em negrito esta dizendo o que?
 
Portanto se você tem 20 notas para serem emitidas basta executar a rotina acima 20 vezes, ou seja, uma para cada nota.
 
Cuidado a linha abaixo só deve ser executada antes de ADD a primeira nota:
 
 ACBrNFe.NotasFiscais.Clear;
 

O limite máximo aceito pela SEFAZ é um lote de no máximo 50 notas, e o tamanho do lote não deve ultrapassar 500 Kbytes.

 

A sua aplicação pode e deve controlar o limite de notas por lote, mas o componente se encarrega de chegar tanto a quantidade quanto o tamanho, caso os limites não seja respeitados, um erro será apresentado na tela.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Caro Italo,

obrigado pela resposta. Acredito que dessa forma já é possível eu executar essa rotina.

 

Outra dúvida: e quanto a impressão das DANFE's, como vou "mandar imprimir" as X notas que eu emiti de uma vez???

Postado

Caro Italo,

obrigado pela resposta. Acredito que dessa forma já é possível eu executar essa rotina.

 

Outra dúvida: e quanto a impressão das DANFE's, como vou "mandar imprimir" as X notas que eu emiti de uma vez???

Cara, tudo que você precisa vai encontrar no demo da Nota Fiscal...

Sistema de Automação Comercial para diversos segmentos
NF-e, NFC-e, SPED Fiscal - www.arenasoft.com.br

Postado

Pesquisei sim no demo do ACBr, inclusive eu já emito NFe's só que uma por vez. Bom, pelo menos não vi como emitir várias de uma vez no demo do ACBr.

 

Após os comentários do Italo ficou mais claro, porém, estou com dúvidas em como vai ser gerado cada DANFE.

 

Outro detalhe: por exemplo, estou emitindo 50 notas. Lá na 20ª nota da um erro de código do municipio inválido ou cEAN inválido ou algum erro que o ACBr trata somente no envio da NFe (e claro, não foi validado pela aplicação). Como é tratado essa situação???

 

Desde já, obrigado pelos comentários.

  • Consultores
Postado

Bom dia Flavio,

 

Dentro da pasta ...\Doctos\Manuais você encontra o manual do ACBrNFe, por favor leia com atenção sobre o método Enviar.

 

Resumidamente, se você deixar o Enviar imprimir o DANFE, se você alimentar o componente com 50 notas, após o envio se todas forem autorizadas pela SEFAZ, os 50 DANFEs serão impressos.

 

Se no momento da validação ocorrer algum erro, o usuário da sua aplicação deverá ter acesso a informação errada e efetuar a correção.

 

Por exemplo, se o erro é a Inscrição Estadual do Cliente, ele terá que acessar o cadastro desse cliente e informar a IE correta.

 

Se o erro é o EAN, ele deve entrar no cado do produto que e informar o EAN correto.

 

Efetuado todas as correções, é preciso disparar novamente a rotina que vai ler as informações do banco de dados para alimentar o componente e depois realizar o envio.

 

Lembre-se que se ocorrer erro de validação, nenhuma nota que consta no lote será enviada.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • 2 meses depois ...
Postado

Boa noite italo, poderia me dá uma ideia de como fazer o mesmo processo acima, gravando o xml aceito no banco de dados?

 

Só que meu processo é o seguinte,

- Gero o xml e gravo no banco;

- valido o xml e gravo no banco;

- envio o xml e o retorno dele OK eu gravo no banco;

 

o problema é que estou precisando fazer um loop pra realizar isso em todos processo pra gerar, validar e enviar e conforme

ir retornando gravando no banco..

 

aguardo retorno!

ONYX Tecnologia em Softwares
[ Simplicidade e Segurança ]
www.onyxsistemas.com
[email protected]
© ONYX Sistemas - Todos os Direitos Reservados

  • Consultores
Postado

Bom dia,

O XML é salvo em campos diferentes em cada etapa do processo?

Ou o campo é o mesmo e ele vai sendo atualizado?

Se é o mesmo, porque você não salva o XML assinado e validado antes do envio e depois do envio só que agora com o protocolo de autorização?

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • 2 semanas depois ...
Postado

Oi Italo, bom dia!

Desculpa a demora, estive ausente esses dias, mais voltando ao assunto

acho que me expressei com dificuldades em explicar qual realmente é minha dúvida.

A questão é: me será retornado vários arquivos xml (um para cada nota), ou será apenas um arquivo de retorno?

1. Eis o detalhe, se resultar em vários arquivos, como posso identificar qual é? e de qual nota pertence para gravar na nota correta?

2. Se retornar um único arquivo contendo todo o resultado e status de cada nota, como pegar o xml de cada uma para gravar no banco?

 

no aguardo!

ONYX Tecnologia em Softwares
[ Simplicidade e Segurança ]
www.onyxsistemas.com
[email protected]
© ONYX Sistemas - Todos os Direitos Reservados

  • Consultores
Postado

Boa tarde, 

O XML retornado e salvo em disco possui o seguinte nome: chave-nfe.xml, você pode também ler a propriedade ID pois esta contem a chave.

Exemplo: 

chave := Copy(ACBrNFe.NotasFiscais.Items[X].NFe.inFNFe.ID, 4, 44); // onde x varia de zero até a quantidade de notas -1

 

Se eu envio um lote contendo 10 notas terei um XML para cada nota.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

onyxsistemas existe uma propriedade no componente onde você pega o XML sem ter que procurar por arquivo... se eu errado alguém me corrija mas eu faço da seguinte forma... quando obtenho o retorno eu crio um for... até ACBrNFe.NotasFiscais.Count-1 e cada nota eu verifico o status que retornou caso a nota autorizou ai então chamo a impressão e faço um update no banco carregando um campo blob com o XML da nota, além do arquivo que fica na pasta....

ACBrNFe.NotasFiscais.Items.XML  sempre tem me retornado o XML assinad ou seja o mesmo que fica na pasta em arquivos... eu acesso dentro do For... que percorre as notas, assim pego um XML de cada vez...

Quero deixar uma dica, como o amigo Italo disse, 50 notas por lote é o limite, eu ja tive problemas ao enviar o lote muito carregado, mesmo com 50 notas devemos tomar cuidado... as notas são todas reunidas e um XML é gerado e transmitido até onde entendi, tem um limite na sefaz de 500kb por transmissão, se estas 50 notas tiverem muitos itens vai haver rejeição devido ao tamanho do arquivo de envio... recomendo 30 notas por lote, ja é uma boa média de 30 em 30 despacha rapidamente...

onyxsistemas existe uma propriedade no componente onde você pega o XML sem ter que procurar por arquivo... se eu errado alguém me corrija mas eu faço da seguinte forma... quando obtenho o retorno eu crio um for... até ACBrNFe.NotasFiscais.Count-1 e cada nota eu verifico o status que retornou caso a nota autorizou ai então chamo a impressão e faço um update no banco carregando um campo blob com o XML da nota, além do arquivo que fica na pasta....

ACBrNFe.NotasFiscais.Items.XML  sempre tem me retornado o XML assinad ou seja o mesmo que fica na pasta em arquivos... eu acesso dentro do For... que percorre as notas, assim pego um XML de cada vez...

Quero deixar uma dica, como o amigo Italo disse, 50 notas por lote é o limite, eu ja tive problemas ao enviar o lote muito carregado, mesmo com 50 notas devemos tomar cuidado... as notas são todas reunidas e um XML é gerado e transmitido até onde entendi, tem um limite na sefaz de 500kb por transmissão, se estas 50 notas tiverem muitos itens vai haver rejeição devido ao tamanho do arquivo de envio... recomendo 30 notas por lote, ja é uma boa média de 30 em 30 despacha rapidamente...

Lembrando que isso de 500kb não é uma limitação do componente, não há nada que o ACBr deva alterar... é uma limitação por parte da sefaz...

Postado

opa.. boa tarde a vocês..

Agradeço por tirarem essa minha dúvida, mais me atentei ao que o Italo falou acima e surgiu uma outra dúvida,

qual campo eu alimento o numero do meu lote: 

Ide.cNF ou qual? 

outra coisa que sei que não é bem o assunto, mais todas as minhas notas que imprimo pelo ACBrNFeDANFeCB não ajusta este campo

Ide.hSaiEnt

o certo seria sair nesse formato: YYYY-MM-DDThh:mm:ssTZD

porém, já tentei alimentar o componente de todas as formas que me lembro;

segue um exemplo anexado!

 

como posso preencher este?

 

de já agradeço!

00991218820789000192550000000000001806686370-nfe.xml

ONYX Tecnologia em Softwares
[ Simplicidade e Segurança ]
www.onyxsistemas.com
[email protected]
© ONYX Sistemas - Todos os Direitos Reservados

  • Consultores
Postado

Boa tarde a todos,

Maiko, o componente antes do envio do lote checa a quantidade e o tamanho do mesmo, caso a quantidade de notas for superior a 50 o lote ou se o tamanho for maior que 500 Kbytes o lote será rejeitado pelo próprio componente.

É interessante você parametrizar a quantidade na sua aplicação. Para cliente que emitem notas com 2 ou 3 itens poderias montar lotes com 40 ou 45 notas e para aqueles que emitem notas com 10 15 itens montariamos lotes com 30 notas.

Onyx, o numero do lote não é informado no XML da nota. O campo cNF se refere ao código aleatório da Nota Fiscal.

O lote aparece na montagem do lote quando este é enviado. Apesar de não ser utilizado pela SEFAZ, recomenda-se que seja sequencial e gerado pela sua aplicação.

No meu sistema tenho uma tabela no banco de dados com os seguintes campos:

NumLote (integer), DataEnv (data/hora), NFeIni (integer) e NFeFim (integer)

Através desta tabela sei quando uma NF-e foi enviada para SEFAZ e qual é o numero do lote.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Italo, é verdade, só que a pergunta é como posso mascarar este campo? pois na minha forma de impressão atual não sai data e hora da saída,

no xml fica com a data 30/12/1899 e nao aparece nenhuma hora.. outro detalhe é que a nova tag nao aparece no ACBrNFe

 

como posso resolver esse detalhe?

 

aguardo!

ONYX Tecnologia em Softwares
[ Simplicidade e Segurança ]
www.onyxsistemas.com
[email protected]
© ONYX Sistemas - Todos os Direitos Reservados

  • Este tópico foi criado há 3384 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.