sequencia de nfe
Moderador: Moderadores
-
andrelucass
- Usuário Nível 3

- Mensagens: 145
- Registrado em: 25 Fev 2005 10:40
sequencia de nfe
Ola a todos
Estou migrando de DBF para postgresql gostaria de saber como voces fazem para a sequencia da nota fiscal, utilizo o AcbrMonitorPlus
Atenciosamente
André Lucas Souza
Estou migrando de DBF para postgresql gostaria de saber como voces fazem para a sequencia da nota fiscal, utilizo o AcbrMonitorPlus
Atenciosamente
André Lucas Souza
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
sequencia de nfe
Olá!
Crie a coluna que armazena o número da NF do tipo SERIAL (auto increment ). Veja: Como criar um campo auto-increment no PostgreSQL
Colunaauto-incrementPostgreSQL
Crie a coluna que armazena o número da NF do tipo SERIAL (auto increment ). Veja: Como criar um campo auto-increment no PostgreSQL
Colunaauto-incrementPostgreSQL
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
sequencia de nfe
Olá!
Saudações,
Itamar M. Lins Jr.
Faça da mesma forma que faz no DBF.como voces fazem para a sequencia da nota fiscal
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
sequencia de nfe
Sem querer criar polemica, eu nao faria dessa forma, mesmo incluindo o campo SERIE no numero da NF , se for somente o numero da NF quando chegar aos 9 digitos ele teria de mudar de serie e voltar para a NF 000000001, ja em caso de uso como PDV que usa uma Serie para cada PDV o problema acontece bem antes.alxsts escreveu:Olá!
Crie a coluna que armazena o número da NF do tipo SERIAL (auto increment ). Veja: Como criar um campo auto-increment no PostgreSQL
Colunaauto-incrementPostgreSQL
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
sequencia de nfe
Olá!
Pois é! E ainda tem a fila no meu caso que não tem como saber quem vai chegar primeiro.(Numero da NFe-NFCe)
Saudações,
Itamar M. Lins Jr.
...quando chegar aos 9 digitos
Pois é! E ainda tem a fila no meu caso que não tem como saber quem vai chegar primeiro.(Numero da NFe-NFCe)
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
andrelucass
- Usuário Nível 3

- Mensagens: 145
- Registrado em: 25 Fev 2005 10:40
sequencia de nfe
Ola a todos
Como ja falei eu uso um dbf para sequencia de notas fiscais, e como eu utilizo, na hora de emitir a nota, eu travo o registro pego a numeração acrescento mais 1, gravo no arquivo de nota fiscal e travo o registo, e mando transmitir usando o acbrmonitor, se a nota não for validada por algum motivo, dou replace no arquivo de nota fiscais para limpar o campo da numeração da nota, e dou um dbunlock() no arquivo de sequencia.
Caso a nota seja validada dou um replace no arquivo de sequencia para atualizar a sequencia e dou um dbunlock() no arquivo de sequencia.
A pergunta é: Como fazer esse processo usando o Postgresql, que é o banco de dados de estou usando atualmente.
Atenciosamente
André Lucas
Como ja falei eu uso um dbf para sequencia de notas fiscais, e como eu utilizo, na hora de emitir a nota, eu travo o registro pego a numeração acrescento mais 1, gravo no arquivo de nota fiscal e travo o registo, e mando transmitir usando o acbrmonitor, se a nota não for validada por algum motivo, dou replace no arquivo de nota fiscais para limpar o campo da numeração da nota, e dou um dbunlock() no arquivo de sequencia.
Caso a nota seja validada dou um replace no arquivo de sequencia para atualizar a sequencia e dou um dbunlock() no arquivo de sequencia.
A pergunta é: Como fazer esse processo usando o Postgresql, que é o banco de dados de estou usando atualmente.
Atenciosamente
André Lucas
-
andrelucass
- Usuário Nível 3

- Mensagens: 145
- Registrado em: 25 Fev 2005 10:40
sequencia de nfe
Ola pessoal
Geralmente estou precisando resolver isso, porque estou com quase todo o sistema migrado para o postgresql.
Geralmente estou precisando resolver isso, porque estou com quase todo o sistema migrado para o postgresql.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
sequencia de nfe
Olá!
...
https://pt.stackoverflow.com/questions/ ... e-rollback
http://www.bosontreinamentos.com.br/sql ... ql-server/
Especifico para PG.
http://postgresqlbr.blogspot.com/2007/0 ... lback.html
Saudações,
Itamar M. Lins Jr.
...
...e travo o registo, e mando transmitir usando o acbrmonitor
Já que migrou o sistema quase TODO, e só deva faltar isso... Acredito que tenha lido sobre esse assunto:com quase todo o sistema migrado para o postgresql.
https://pt.stackoverflow.com/questions/ ... e-rollback
http://www.bosontreinamentos.com.br/sql ... ql-server/
Especifico para PG.
http://postgresqlbr.blogspot.com/2007/0 ... lback.html
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
andrelucass
- Usuário Nível 3

- Mensagens: 145
- Registrado em: 25 Fev 2005 10:40
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
sequencia de nfe
Olá!
Estes links acima se referem ao tratamento de concorrência no acesso a tabelas do banco de dados (begin, commit, rollback), o que não é o caso da tua dúvida.
Na hora de fazer o INSERT na tabela de NF, de acordo com o tipo de NF e série, você consegue pegar o próximo número de NF da sequência correspondente.
Estes links acima se referem ao tratamento de concorrência no acesso a tabelas do banco de dados (begin, commit, rollback), o que não é o caso da tua dúvida.
Fernando queiroz escreveu:Sem querer criar polemica, eu nao faria dessa forma, mesmo incluindo o campo SERIE no numero da NF , se for somente o numero da NF quando chegar aos 9 digitos ele teria de mudar de serie e voltar para a NF 000000001, ja em caso de uso como PDV que usa uma Serie para cada PDV o problema acontece bem antes.
Você pode criar um tipo de objeto no banco de dados Postgre chamado sequnce( sequência). Se você tem várias séries de NFe, várias de NFCe várias de PDV, crie uma sequência para cada uma. Exemplos:Itamar M. Lins Jr. escreveu:Pois é! E ainda tem a fila no meu caso que não tem como saber quem vai chegar primeiro.(Numero da NFe-NFCe)
Código: Selecionar todos
CREATE SEQUENCE "NF"."NF_Serie_Unica"
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 1
CACHE 1;
CREATE SEQUENCE "NF"."NF_Serie_A"
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 1
CACHE 1;
CREATE SEQUENCE "NF"."PDV_Serie_001"
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 1
CACHE 1;[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
sequencia de nfe
Olá!
Senão tem que reverter o processo todo. E tem muita informação para desfazer.
Bom, mas tem milhões de formas de fazer.
Saudações,
Itamar M. Lins Jr.
Não é concorrência. É concluir SOMENTE se a NFe, NFCe for aprovada.concorrência
Senão tem que reverter o processo todo. E tem muita informação para desfazer.
Bom, mas tem milhões de formas de fazer.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
sequencia de nfe
Olá!
Uma forma por exemplo:
Senão, precisará desfazer tudo. Até baixa no estoque, contas a receber se for o caso...CARNÊ, SALDO CLIENTE, etc...
PDV só há movimentação efetiva(baixa) se tiver OK o PGTO. Numeração é o de menos. Basta olhar o numero atual e somar mais 1, quando for gravar(commit).
Não precisa saber do numero que está lá, quando faz o XML(Numero da NFe) tudo isso já deve está resolvido. Precisa criar o semáforo se trabalha com vários PDV's mandando cupom para o ACBrMonitor.
Por isso o pessoal trabalha com pré-venda nos terminais. Farmácias por exemplo, dá um "papelzinho" para o cliente com o numero do PDV(pedido) e a pessoa entra na fila no caixa. O número da "NFe ou NFCe" (XML) só é gerado DEPOIS do PGTO. Ai pode entrar até em contingência automaticamente, gerando outro número que não tem nada a ver.
Saudações,
Itamar M. Lins Jr.
Uma forma por exemplo:
Aqui começa o "begin" e só vai haver commit se existir "aceite" na sefaz e se existir "aceite" no pgto. Dinheiro, Cheque, Cartão etc...travo o registro pego a numeração acrescento mais 1
Senão, precisará desfazer tudo. Até baixa no estoque, contas a receber se for o caso...CARNÊ, SALDO CLIENTE, etc...
PDV só há movimentação efetiva(baixa) se tiver OK o PGTO. Numeração é o de menos. Basta olhar o numero atual e somar mais 1, quando for gravar(commit).
Não precisa saber do numero que está lá, quando faz o XML(Numero da NFe) tudo isso já deve está resolvido. Precisa criar o semáforo se trabalha com vários PDV's mandando cupom para o ACBrMonitor.
Por isso o pessoal trabalha com pré-venda nos terminais. Farmácias por exemplo, dá um "papelzinho" para o cliente com o numero do PDV(pedido) e a pessoa entra na fila no caixa. O número da "NFe ou NFCe" (XML) só é gerado DEPOIS do PGTO. Ai pode entrar até em contingência automaticamente, gerando outro número que não tem nada a ver.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
andrelucass
- Usuário Nível 3

- Mensagens: 145
- Registrado em: 25 Fev 2005 10:40
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
sequencia de nfe
bom no meu caso eu criei uma tabela com todos os dados da NF-e/NFC-e com os mesmos nomes das TAG do XML e alguns campos de controle
e a geração dos dados de itens sao feitos em tempo de execucao atravez de uma query que traz tudo que preciso para gerar a DANFE.
Atualmente como antigamente tenho uma tabela que tem alguns dados de configuração, nesta tabela eu controlo a SERIE/NUMERO das NF-e/NFC-e algo parecido como a SEQUENCE mostrada em post acima.
o minha tabela de DANFE controla tanto as NF-e(mod 55) / NFC-e(mod 65)
outra coisa que mantenho é : mesmo que a NF-e/NFC-e seja recusada por algum motivo eu continuo com a numeracao e mantenho os dados basicos da nota , somente altero o que causou o erro e gero a NF novamente com dta/hora e chave nova, mantenho os dados do XML ate para poder colocar ele no validador do RS e verificar quais os erros.
Código: Selecionar todos
************************************************************************************************************************************************************************************************************************
METHOD ABRE_DANFE( ) CLASS ARQUIVOSCLASS
************************************************************************************************************************************************************************************************************************
LOCAL cQuery;
cQuery:= "CREATE TABLE IF NOT EXISTS `danfe` (";
+"`DANFE_Id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,";
+"`PEDIDOS_ID` int(11) DEFAULT NULL,";
+"`ENTRADA_ID` int(11) DEFAULT NULL,";
+"`CLIENTE_ID` int(11) DEFAULT NULL,";
+"`A_VERSAO` varchar(4) DEFAULT NULL,";
+"`A_ID` varchar(47) DEFAULT NULL,";
+"`B_CUF` varchar(2) DEFAULT NULL,";
+"`B_CNF` varchar(8) DEFAULT NULL,";
+"`B_NATOP` varchar(60) DEFAULT NULL,";
+"`B_MOD` varchar(2) DEFAULT NULL,";
+"`B_SERIE` varchar(3) DEFAULT NULL,";
+"`B_NNF` int(9) DEFAULT NULL,";
+"`B_DHEMI` varchar(25) DEFAULT NULL,";
+"`B_DHSAIENT` varchar(25) DEFAULT NULL,";
+"`B_TPNF` varchar(1) DEFAULT NULL,";
+"`B_IDDEST` varchar(1) DEFAULT NULL,";
+"`B_CMUNFG` varchar(7) DEFAULT NULL,";
+"`B_TPIMP` varchar(1) DEFAULT NULL,";
+"`B_TPEMIS` varchar(1) DEFAULT NULL,";
+"`B_CDV` varchar(1) DEFAULT NULL,";
+"`B_TPAMB` varchar(1) DEFAULT NULL,";
+"`B_FINNFE` varchar(1) DEFAULT NULL,";
+"`B_INDFINAL` varchar(1) DEFAULT NULL,";
+"`B_INDPRES` varchar(1) DEFAULT NULL,";
+"`B_PROCEMI` varchar(1) DEFAULT NULL,";
+"`B_VERPROC` varchar(20) DEFAULT NULL,";
+"`B_DHCONT` varchar(25) DEFAULT NULL,";
+"`B_XJUST` text DEFAULT NULL,";
+"`C_CNPJ` varchar(14) DEFAULT NULL,";
+"`C_XNOME` varchar(60) DEFAULT NULL,";
+"`C_XFANT` varchar(60) DEFAULT NULL,";
+"`C_XLGR` varchar(60) DEFAULT NULL,";
+"`C_NRO` varchar(60) DEFAULT NULL,";
+"`C_XCPL` varchar(60) DEFAULT NULL,";
+"`C_XBAIRRO` varchar(60) DEFAULT NULL,";
+"`C_CMUN` varchar(7) DEFAULT NULL,";
+"`C_XMUN` varchar(60) DEFAULT NULL,";
+"`C_UF` varchar(2) DEFAULT NULL,";
+"`C_CEP` varchar(8) DEFAULT NULL,";
+"`C_CPAIS` varchar(4) DEFAULT NULL,";
+"`C_XPAIS` varchar(60) DEFAULT NULL,";
+"`C_FONE` varchar(14) DEFAULT NULL,";
+"`C_IE` varchar(14) DEFAULT NULL,";
+"`C_IEST` varchar(14) DEFAULT NULL,";
+"`C_IM` varchar(15) DEFAULT NULL,";
+"`C_CNAE` varchar(7) DEFAULT NULL,";
+"`C_CRT` varchar(1) DEFAULT NULL,";
+"`E_CNPJ` varchar(14) DEFAULT NULL,";
+"`E_IDESTR` varchar(20) DEFAULT NULL,";
+"`E_XNOME` varchar(60) DEFAULT NULL,";
+"`E_XFANT` varchar(60) DEFAULT NULL,";
+"`E_XLGR` varchar(60) DEFAULT NULL,";
+"`E_NRO` varchar(60) DEFAULT NULL,";
+"`E_XCPL` varchar(60) DEFAULT NULL,";
+"`E_XBAIRR` varchar(60) DEFAULT NULL,";
+"`E_CMUN` varchar(7) DEFAULT NULL,";
+"`E_XMUN` varchar(60) DEFAULT NULL,";
+"`E_UF` varchar(2) DEFAULT NULL,";
+"`E_CEP` varchar(8) DEFAULT NULL,";
+"`E_CPAIS` varchar(4) DEFAULT NULL,";
+"`E_XPAIS` varchar(60) DEFAULT NULL,";
+"`E_FONE` varchar(14) DEFAULT NULL,";
+"`E_INDIE` varchar(1) DEFAULT NULL,";
+"`E_IE` varchar(14) DEFAULT NULL,";
+"`E_ISUF` varchar(9) DEFAULT NULL,";
+"`E_IM` varchar(15) DEFAULT NULL,";
+"`E_EMAIL` varchar(60) DEFAULT NULL,";
+"`F_CNPJ` varchar(14) DEFAULT NULL,";
+"`F_XLGR` varchar(60) DEFAULT NULL,";
+"`F_NRO` varchar(60) DEFAULT NULL,";
+"`F_XCPL` varchar(60) DEFAULT NULL,";
+"`F_XBAIRR` varchar(60) DEFAULT NULL,";
+"`F_CMUN` varchar(7) DEFAULT NULL,";
+"`F_XMUN` varchar(60) DEFAULT NULL,";
+"`F_UF` varchar(2) DEFAULT NULL,";
+"`G_CNPJ` varchar(14) DEFAULT NULL,";
+"`G_XLGR` varchar(60) DEFAULT NULL,";
+"`G_NRO` varchar(60) DEFAULT NULL,";
+"`G_XCPL` varchar(60) DEFAULT NULL,";
+"`G_XBAIRR` varchar(60) DEFAULT NULL,";
+"`G_CMUN` varchar(7) DEFAULT NULL,";
+"`G_XMUN` varchar(60) DEFAULT NULL,";
+"`G_UF` varchar(2) DEFAULT NULL,";
+"`W_VBC` decimal(14,2) DEFAULT 0.00,";
+"`W_VICMS` decimal(14,2) DEFAULT 0.00,";
+"`W_VICMSD` decimal(14,2) DEFAULT 0.00,";
+"`W_VBCST` decimal(14,2) DEFAULT 0.00,";
+"`W_VST` decimal(14,2) DEFAULT 0.00,";
+"`W_VPROD` decimal(14,2) DEFAULT 0.00,";
+"`W_VFRETE` decimal(14,2) DEFAULT 0.00,";
+"`W_VSEG` decimal(14,2) DEFAULT 0.00,";
+"`W_VDESC` decimal(14,2) DEFAULT 0.00,";
+"`W_VII` decimal(14,2) DEFAULT 0.00,";
+"`W_VIPI` decimal(14,2) DEFAULT 0.00,";
+"`W_VPIS` decimal(14,2) DEFAULT 0.00,";
+"`W_VCOFINS` decimal(14,2) DEFAULT 0.00,";
+"`W_VOUTRO` decimal(14,2) DEFAULT 0.00,";
+"`W_VNF` decimal(14,2) DEFAULT 0.00,";
+"`W_VTOTTRIB` decimal(14,2) DEFAULT 0.00,";
+"`YA_TPAG` varchar(2) DEFAULT NULL,";
+"`YA_VPAG` decimal(14,2) DEFAULT 0.00,";
+"`YA_CNPJ` varchar(14) DEFAULT NULL,";
+"`YA_BAND` varchar(2) DEFAULT NULL,";
+"`YA_AUT` varchar(20) DEFAULT NULL,";
+"`Z_INFADFIS` text DEFAULT NULL,";
+"`Z_INFCPL` text DEFAULT NULL,";
+"`ZB_XNEMP` varchar(22) DEFAULT NULL,";
+"`ZB_XPED` varchar(60) DEFAULT NULL,";
+"`ZB_XCONT` varchar(60) DEFAULT NULL,";
+"`FL_VALIDA` tinyint(1) DEFAULT 0,";
+"`FL_ASSINA` tinyint(1) DEFAULT 0,";
+"`FL_TRANSM` tinyint(1) DEFAULT 0,";
+"`FL_IMPRIM` tinyint(1) DEFAULT 0,";
+"`FL_EXPORT` tinyint(1) DEFAULT 0,";
+"`FL_SITUAC` varchar(3) DEFAULT NULL,";
+"`FL_MOTIVO` varchar(60) DEFAULT NULL,";
+"`FL_CANCEL` tinyint(1) DEFAULT 0,";
+"`FL_DHEMI` varchar(25) DEFAULT NULL,";
+"`FL_INUTIL` tinyint(1) DEFAULT 0,";
+"`FL_DHRECBT` varchar(25) DEFAULT NULL,";
+"`FL_CONTIG` tinyint(1) DEFAULT 0,";
+"`FL_DHCONT` varchar(25) DEFAULT NULL,";
+"`FL_CONTEN` tinyint(1) DEFAULT 0,";
+"`FL_DHCOEN` varchar(25) DEFAULT NULL,";
+"`OPERADOR` varchar(20) DEFAULT NULL,";
+"`MAQUINA` varchar(20) DEFAULT NULL,";
+"`TIPPAG` tinyint(2) DEFAULT 0,";
+"`CERTIFICADO_DIGITAL` varchar(100) DEFAULT NULL,";
+"`cIdTokenCupom` int(6) DEFAULT NULL," ;
+"`CSCCupomFiscal` varchar(40) DEFAULT NULL," ;
+"`Tipo_Operacao` int(2) DEFAULT NULL)" ;
+"COLLATE='utf8_general_ci' ENGINE=InnoDB "
ConeccoesClass():ExecuteSQL(::oServer, cQuery)
RETURN NILAtualmente como antigamente tenho uma tabela que tem alguns dados de configuração, nesta tabela eu controlo a SERIE/NUMERO das NF-e/NFC-e algo parecido como a SEQUENCE mostrada em post acima.
o minha tabela de DANFE controla tanto as NF-e(mod 55) / NFC-e(mod 65)
outra coisa que mantenho é : mesmo que a NF-e/NFC-e seja recusada por algum motivo eu continuo com a numeracao e mantenho os dados basicos da nota , somente altero o que causou o erro e gero a NF novamente com dta/hora e chave nova, mantenho os dados do XML ate para poder colocar ele no validador do RS e verificar quais os erros.
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
sequencia de nfe
Olá!
E lembrando que além da serie o XML NFe-NFCe tem DOIS números, o nosso e o do governo e não podem ser iguais.
Se tirar o NFCe e o cartão não passar ?
Resumindo, PAGOU(faz XML) tem "commit". Não pagou, desfaz. Tem que deixar todas essas informações em "stand by" pronto para o tal "ROLLBACK"
Saudações,
Itamar M. Lins Jr.
E lembrando que além da serie o XML NFe-NFCe tem DOIS números, o nosso e o do governo e não podem ser iguais.
Se tirar o NFCe e o cartão não passar ?
Resumindo, PAGOU(faz XML) tem "commit". Não pagou, desfaz. Tem que deixar todas essas informações em "stand by" pronto para o tal "ROLLBACK"
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.