Página 1 de 1

Duvida sobre Contingência - NFe

Enviado: 15 Abr 2012 11:19
por ANDRIL
Gostaria de saber como estão fazendo quando detectado modo em contingência na SEFAZ estadual. Como diz no manual em caso do ambiente SCAN a serie devera ser 900-999 e o numero da nota também deve ser alterado. Entao criei um numerador para notas no ambiente NORMAL e outro para o SCAN. Apos enviar o XML marco ela como SCAN para que ao retornar o serviço normal, seja enviada novamente para a SEFAZ estadual. A duvida, o numero da serie/nota deve ser alterado ou envio para o ambiente normal com os mesmos do SCAN. Devo gerar uma outra nota com numeracao e serie do ambiente normal referenciando a NFe emitida no ambiente SCAN?

Tem muitas informações como proceder no momento do indisponibilidade (alterar tipo de finalidade de emissão, serie etc) porem não explicam como proceder ao estabelecer o serviço (somente tem que enviar a nfe) mais não falam sobre a questão que eu citei.

Não sei se consegui passar a minha duvida claramente, mais qualquer ajuda será bem vinda.
Ate+

Duvida sobre Contingência - NFe

Enviado: 16 Abr 2012 13:43
por rochinha
Amiguinho,

A contingencia é basicamente um protocolo de permissão. Após o retorno do serviço ao normal voce deve fazer o envio da mesma na forma normal para que receba o protocolo e possa seguir a distribuição do xml.

Duvida sobre Contingência - NFe

Enviado: 16 Abr 2012 14:10
por ANDRIL
rochinha escreveu:envio da mesma na forma normal para que receba o protocolo e possa seguir a distribuição do xml.
Então, no caso se usar o ambiente SCAN eu tenho um numero de protocolo e diz o manual que deve-se mudar a serie e a numeração da nota, bom, se eu alterei na hora que vou emita-la novamente agora no ambiente NORMAL volto o numero para a numeração que era antes. Essa é minha dúvida. Agora a contigencia que usam o FORMULARIO de seguranca, o numero da nota pode permanecer a mesma, pois quando voltar o serviço bastar transmiti-la.

Acho que vou criar 2 campos a mais no meu controle para ser armazenado o numerador da serie/numero da nota em contingencia, assim informo este na emissao em contingencia sem alterar o numero da nota principal e quando voltar emito com a numeração normal.

Abraços.

Duvida sobre Contingência - NFe

Enviado: 16 Abr 2012 14:26
por rochinha
Amiguinho,

Voce precisará criar também uma tabela de manutenção para as séries, exemplo:

SERIE - Numerico, tamanho 3
SEQUENCIA - Numerico, tamanho 9

A medida que voce necessitar de um numero de uma série voce pega o mesmo e atualiza para o proximo.

Desta forma voce não perde a sequencia dentro de cada série. Geralmente todas as sequencias devem iniciar em 1.

Continue analisando o manual.

Caso ache meio confuso criar tal controle use minha função:

Código: Selecionar todos

FUNCTION PsqControle( database, _altera_, _ComValor_ )
   DEFAULT _altera_:= .t., _ComValor_ := 0
   nControle := iif( recco()=0, 1, recco()+(recco()/4) )
   OldArea := Select()
   if !file("CONTROLE.DBF")
      ESTRU_DBF := { { "DATABASE"  , "C",12, 0 } , ;
                     { "CONTADOR"  , "N", 7, 0 } }
                     DBCREATE( "CONTROLE", ESTRU_DBF )
   endIf
   If Select("controle") == 0
      USE controle NEW SHARED
   Else
      DbSelectArea("controle")
   EndIf
   LOCATE FOR UPPER(controle->database) = UPPER(database)
   if found()
      nControle := controle->contador
      if _altera_ = .t. // NIL
         if _ComValor_ # 0 // NIL
            nControle := _ComValor_
         else
            nControle := controle->contador + 1
         endif
         //else
         //   nControle := controle->contador + 1
         controle->( rLock() )
         controle->contador := nControle
         controle->( dbUnLock() )
         controle->( dbCommit() )
      endif
   else
      if _altera_ = .t. // NIL
         if _ComValor_ # 0 // NIL
            nControle := _ComValor_
         endif
      endif
      controle->( dbAppend() )
      controle->database := database
      controle->contador := nControle
      controle->( dbUnLock() )
      controle->( dbCommit() )
   endif
   SELE (OldArea)
   RETURN nControle
Para usar basta passar um nome de tabela que voce deseja controlar, exemplo:

Para pegar o novo codigo para o cadastro de clientes:

PsqControle( "clientes" )

Para pegar um numero de controle de uma tabela previamente selecionada:

PsqControle( dbf() )

Outros exemplos:

Pegar numero para pedidos: PsqControle( "pedidos" )
Para pegar um codigo para produtos em estoque: PsqControle( "estoque" )

Para pegar as sequencias de série:

PsqControle( "001" )
PsqControle( "999" )

Analisando a tabela CONTROLE.DBF criada pelo uso da função voce terá idéia de seu funcionamento podendo criar uma tela de manutenção para consertar ou atualizar as sequencias.

Duvida sobre Contingência - NFe

Enviado: 16 Abr 2012 15:04
por ANDRIL
Rochinha obrigado. Já disponho de controle de sequencia no meu sistema. Vou fazer exatamente isso, no meu dbf de numeracao vou criar NUMCONT, SERIECONT alem dos campos que ja tenho para numero e serie de notas. O que eu disse, foi criar mais dois campos em cada nota, que em caso de contigencia eu pego o proximo numero de NUMCONT e mesma SERIECONT e coloco neste campos. Assim o meu NUMERO DE NOTA real, nao preciso alterar. Quando voltar o serviço normal, emito a nota pelo numero e serie real da nota.

E fazendo um bom controle da sequencia, diminui-se a possibilidade de inutilizacao do numerario.

Agora to firmao (como voce mesmo diz) no trabalho da NFe e agora vai sai de um jeito ou de outro. Já deve ter percebido minha enxurrada de dúvidas aqui no forum, mais vamos enfrente.

Duvida sobre Contingência - NFe

Enviado: 16 Abr 2012 15:38
por rochinha
Amiguinho,

Precisando é só gritar.