Ir para conteúdo
  • Cadastre-se

Tercio Lins

Membros
  • Total de ítens

    75
  • Registro em

  • Última visita

Tudo que Tercio Lins postou

  1. Bom dia Marcelo. Obrigado pelo exemplo. O problema é que se colocarmos após ou a cada registro C400, se não estou enganado, esse registro é para cada ECF. Mesmo uma empresa que só tenha um ou dois ECF, irá gerar uma quantidade de registro(Cupons) que irá estourar a memória. Empresas do comércio varejista e até supermercados pequenos, têm um movimento grande de Cupons. Se analisarmos no exemplo o registro C100, ele grava a cada NFe. O meu conhecimento é pequeno para opinar, não sei se existe algum fator que não permita gravar a cada cupom ou a cada redução Z. for INotas := 1 to NNotas do begin with RegistroC100New do begin ........ ........ ........ ........ ........ end; if cbConcomitante.Checked then begin if (INotas mod BNotas) = 0 then // Gravar a cada N notas begin // Grava registros na memoria para o TXT, e limpa memoria ACBrSPEDFiscal1.WriteBloco_C(False); // False, NAO fecha o Bloco ProgressBar1.Position := INotas; Application.ProcessMessages; end; end; end; "LinhasBuffer :=98304; // 100MB RAM Vc pode aumentar para 500MB = 524000. Atualmente creio que não há computadores com menos de um 1 GB de RAM, Tenho clientes que escrituram cerca de 2.000 notas por mes. Esta foi a solução que encontrei." Vou tentar o que Agnaldo indicou. Mais uma vez estou agradecido, Tércio Lins.
  2. Boa noite Marcelo. Inicialmente eu coloquei o ACBrSPEDFiscal1.WriteBloco_C(False) após o C490, e ocorreu o mesmo erro. Tentarei outra vez e, assim que puder, retornarei com o resultado. Grato, Tércio Lins.
  3. Boa tarde Marcelo. Gostaria de saber como você resolveu esse "erro". Estou com o mesmo problema quando executo o RegistroC460 concomitante: List index(-1)out of bounds. Debuguei e cheguei ao mesmo que você, ele limpa. function TBloco_C.RegistroC460New: TRegistroC460; var C400Count: integer; C405Count: integer; begin C400Count := FRegistroC001.RegistroC400.Count -1; C405Count := FRegistroC001.RegistroC400.Items[C400Count].RegistroC405.Count -1; // Erro Aqui no segundo looping após Write... // Result := FRegistroC001.RegistroC400.Items[C400Count].RegistroC405.Items[C405Count].RegistroC460.New; end; Para facilitar o teste eu usei o exemplo do ACBr, e ocorre o mesmo erro. Quando eu comento a linha //ACBrSPEDFiscal1.WriteBloco_C(False), ele faz o loop e gera todos. Eu não faço integração como você. "geração de arquivos para Contimatic G5 , Folhamatic e Mastermaq..." Se isto só ocorreu com o seu desenvolvimento e o meu, tem alguma coisa em comum. Desde já agradeço, Tércio Lins. |C400|2D|DARUMA FS600|21098765432123456789|001| |C405|30112011|001|000001|000001|100,00|100,00| |C410|0,00|0,00| |C420|T1700|100,00|01|TOTALIZADOR T1700| |C460|2D|00|000001|30112011|100,00|||33333333333|TESTE| |C470|000001|1,000|0,000|UN|100,00|000|5102|17,00|0,00|0,00| |C460|2D|00|000001|30112011|100,00|||33333333333|TESTE| |C470|000001|1,000|0,000|UN|100,00|000|5102|17,00|0,00|0,00| |C460|2D|00|000001|30112011|100,00|||33333333333|TESTE| |C470|000001|1,000|0,000|UN|100,00|000|5102|17,00|0,00|0,00| |C460|2D|00|000001|30112011|100,00|||33333333333|TESTE| |C470|000001|1,000|0,000|UN|100,00|000|5102|17,00|0,00|0,00| |C490|000|5102|17,00|100,00|100,00|17,00|000001| |C990|59| //REGISTRO C400 - EQUIPAMENTO ECF (CÓDIGO 02 e 2D). With RegistroC400New do begin COD_MOD := '2D'; ECF_MOD := 'DARUMA FS600'; ECF_FAB := '21098765432123456789'; ECF_CX := '001'; With RegistroC405New do begin DT_DOC := DT_FIN; //StrToDate('30/11/2011'); CRO := 1; CRZ := 1; NUM_COO_FIN := 1; GT_FIN := 100.00; VL_BRT := 100.00; With RegistroC410New do begin VL_PIS := 0.00; VL_COFINS := 0.00; end; With RegistroC420New do begin COD_TOT_PAR := 'T1700'; VLR_ACUM_TOT := 100.00; NR_TOT := 1; DESCR_NR_TOT := 'TOTALIZADOR T1700'; { Gera este registro somente para empresas do pergil B de apresentação } if Bloco_0.Registro0000.IND_PERFIL = pfPerfilB then begin With RegistroC425New do begin COD_ITEM := '000001'; QTD := 1; UNID := 'PC'; VL_ITEM := 100.00; VL_PIS := 0.00; VL_COFINS := 0.00; end; end; end; if Bloco_0.Registro0000.IND_PERFIL <> pfPerfilB then begin for at:=0 to 3 do // loop para o teste // begin with REgistroC460New do begin COD_MOD := '2D'; COD_SIT := sdRegular; NUM_DOC := '000001'; DT_DOC := StrToDate('30/11/2011'); VL_DOC := 100.00; VL_PIS := 0.00; VL_COFINS := 0.00; CPF_CNPJ := '33333333333'; NOM_ADQ := 'TESTE'; with RegistroC470New do begin COD_ITEM := '000001'; QTD := 1; QTD_CANC := 0; UNID := 'UN'; VL_ITEM := 100.00; CST_ICMS := '000'; CFOP := '5102'; ALIQ_ICMS := 17.00; VL_PIS := 0.00; VL_COFINS := 0.00; end; end; if cbConcomitante.Checked then begin // Grava registros na memoria para o TXT, e limpa memoria ACBrSPEDFiscal1.WriteBloco_C(False); // False, NAO fecha o Bloco end; end; end; with RegistroC490New do begin CST_ICMS := '000'; CFOP := '5102'; ALIQ_ICMS := 17.00; VL_OPR := 200.00; VL_BC_ICMS := 200.00; VL_ICMS := 32.00; COD_OBS := '000001' end; { Só envia este registro se o contribuinte for da BA } if Bloco_0.Registro0000.UF = 'BA' then begin with RegistroC495New do begin ALIQ_ICMS := 17.00; COD_ITEM := '000001'; QTD := 1.00; QTD_CANC := 0.00; UNID := 'UN'; VL_ITEM := 100.00; VL_DESC := 0.00; VL_CANC := 0.00; VL_ACMO := 0.00; VL_BC_ICMS := 100.00; VL_ICMS := 17.00; VL_ISEN := 0.00; VL_ICMS_ST := 0.00; end; end; end; end;
  4. Bom dia. Segundo a Sefaz de São Paulo, o SAT é incompatível com o PAF-ECF. Tércio Lins.
  5. Bom dia. Como o Régys colocou, ainda é obrigatório. Me desculpe por não ter cido claro. As empresas que fazem parte do projeto piloto como Carrefou, Renner e outras, quando usam a NFC-e(elas também usam o ECF), o AC não precisa ser homologado. Como foi dito está em fase de teste. Porém, para o ano que vem já será ampliado para outras empresas. O que eu coloquei é que tanto com o SAT-ECF ou com a NFC-e, o PAF-ECF irá findar. Claro que cada Estado tem o seu cronograma e a opção de usar um ou outro; ou ainda desenvolver o seu. Tércio Lins.
  6. Boa noite EMBarbosa. Ao contrário, nos estados em que a NFC-e(Nota Fiscal Consumidor Eletrônica) está sendo implementada em fase de teste(RS,SE,AM,BA e outros), o PAF-ECF não está sendo usado pois, a NFC-e segue o mesmo padrão da NFe. Veja abaixo o que contém na apresentação do encontro em Manaus 28e29 08/2012: Baixar em: http://www.tirio.org.br/media/ApresentacaoNFCeReuniaoManaus28e29_08_2012.1.pdf ENCAT-Encontro Nacional de Coordenadores e Administradores Tributários Estaduais. Projeto Nota Fiscal Eletrônica para Consumidor Final - NFC-e. PREMISSAS BASE: -Convergência com os padrões da NF-e; -Solução eletrônica sem obrigatoriedade de hardware; -Redução do custo Brasil; -Não exigência de homologação de hardware ou software; -Mínima interferência no ambiente do contribuinte; -Participação da Iniciativa Privada no Projeto; Analisando o documento, percebe-se que não haverá grandes alterações para quem já usa a NFe. Tércio Lins.
  7. Algumas informações: http://www.fazenda.sp.gov.br/sat/duvidas_frequentes/Perguntas%20mais%20Frequentes%20do%20SAT%20-%2020121106.pdf O PAF-ECF está com os dias contados. Tanto o Sat-CFe como o NFe-C(Nfe Consumidor), não usará mais o PAF-ECF. Com isso o cupom vinculado também, ou seja, volta os POS nas vendas com cartões. Tércio Lins.
  8. Boa tarde Isaque. Atualizei e está OK! Grato pela disposição, Tércio Lins.
  9. Bom dia ISaque. Atualizei e ocorre o erro: unit ACBrDFeUtil; interface uses Classes, Forms, {$IFDEF FPC} LResources, Controls, Graphics, Dialogs {$ELSE} StrUtils, SysUtils {$ENDIF}; type EACBrDFeException = class(Exception); na classe Exception mensagem:Identifier not found "Exception" Grato, Tércio Lins.
  10. Bom dia FPasqueto. Fiz o mesmo processo e ocorreu esse erro. Como eu não havia atualizado no Note, copiei para desk a última versão que estava nele. Atualizei hoje(26/11/2012) e o erro que você citou é o que ocorre. Grato, Tércio Lins.
  11. Tercio Lins

    Unificação ACBrDFeUtil

    Bom dia. Atualizei hoje(23/11/2012) os componentes pelo SVN e, quando compilei, ocorre uma mensagem referente à Unit ACBrNFeUtil na linha número 61. não encontra a referência à Unit ACBrDFeUtil. (Uso o Lazarus). unit ACBrNFeUtil; interface uses {$IFNDEF ACBrNFeOpenSSL}ACBrCAPICOM_TLB, ACBrMSXML2_TLB, JwaWinCrypt, {$ENDIF} Classes, Forms, TypInfo, {$IFDEF FPC} LResources, Controls, Graphics, Dialogs, {$ELSE} StrUtils, {$ENDIF} ACBrNFeConfiguracoes, pcnConversao, pcnNFe, ACBrDFeUtil; A Unit fica nos fontes do ACBrComum. Quando abri o pacote ACBrComum não encontrei a Unit adicionada ao pacote. Não sei se procede. Agradeço desde já, Tércio Lins.
  12. Quando escrevi: "Quando me referi ao RegistroG110New, foi ao campo DT_FIN." Deveria ter escrito: Quando me referi ao RegistroG110New, foi ao campo DT_INI. Tércio Lins.
  13. Boa noite EMBarbosa. Você está correto. O erro, ou desatenção, foi meu. Quando me referi ao RegistroG110New, foi ao campo DT_FIN. Pensei que ele estivesse recebendo o valor deste campo. if DT_INI >= EncodeDate(2011,01,01) then With RegistroG110New do begin DT_INI:=StrToDate(Fiscal.Inicial); DT_FIN:=StrToDate(Fiscal.Final); end; Verificando o meu código, percebi que coloquei os valores apos gerar os Blocos. SpedF.Bloco0; Execute(LBloco0); SpedF.BlocoC; Execute(LBlocoC); SpedF.BlocoD; Execute(LBlocoD); SpedF.BlocoE; Execute(LBlocoE); SpedF.BlocoG; Execute(LBlocoG); SpedF.BlocoH; Execute(LBlocoH); SpedF.Bloco1; Execute(LBloco1); with Dmf.ACBrSPEDFiscal do begin LinhasBuffer:=StrToIntDef('1000',0); DT_INI:=StrToDate(Fiscal.Inicial); DT_FIN:=StrToDate(Fiscal.Final); memoError.Lines.Clear; SaveFileTXT; memoTXT.Lines.LoadFromFile(Path+Arquivo); end; Nos demais registros não ocorreu erro porque eu sempre alimentei o período através da variável que eu criei. with RegistroE100New do begin DT_INI:=StrToDate(Fiscal.Inicial); DT_FIN:=StrToDate(Fiscal.Final); end; Agradeço a dica e desculpe-me pela falha. Tércio Lins.
  14. Bom dia. Após uma atualização recente, o bloco G não era gerado. Não havia movimento, porém teria que ser gerado o G001 e o G990. Encontrei o seguinte no Código: procedure TACBrSPEDFiscal.WriteBloco_G; begin if Bloco_G.Gravado then exit ; if not Bloco_E.Gravado then WriteBloco_E; /// Este ato entra em vigor na data de sua publicação, produzindo efeitos /// para as escriturações referentes aos períodos a partir de 1º de janeiro de 2010, /// --> exceto quanto ao BLOCO G e registros pertinentes ao Livro de /// Controle de Crédito de ICMS do Ativo Permanente cujos efeitos serão /// a partir de 1º de julho de 2010 <--. /// Exigência do Art. 3º do AC 09/08 /// /// Prorrogado para 01/01/2011 conforme Guia Prático da EFD 2.01 /// *Bloco G incluído para vigorar a partir do período de apuração de janeiro de 2011. if DT_INI >= EncodeDate(2011,01,01) then begin /// BLOCO G WriteRegistroG001; WriteRegistroG990; Bloco_G.WriteBuffer; end; Bloco_G.Conteudo.Clear; Bloco_G.Gravado := True ; end; Preste atenção na DT_INI. ela pertence ao With RegistroG110New do. Se não houve movimento está propriedade não será preenchida. O correto é colocar a data: if FBloco_0.Registro0000.DT_INI>=EncodeDate(2011,01,01)then Após alterar gerou normalmente. Se não procede, desculpe-me. Tércio Lins.
  15. Boa tarde. Eu fiz a alteração e resolveu o problema. Agradeço a ajuda, Tércio Lins.
  16. Bom dia Regys. No início da função a variável é criada - desculpe-me, eu não coloquei. Você colocou o registro dentro do loop. para cada NF será criado um wregistro50? Vou alterar e retorno o resultado. Grato, Tércio Lins.
  17. Boa noite. Eu segui o exemplo do componente. (em Delphi pois não tem com Lazarus). Conferi passo a passo e o loop está mudando a NF porém, quando ele gera o .txt os dados da primeira é repetido nas demais. Quando eu desabilito o while, não ocorre a mensagem de erro e gera correto o registro. if Result then begin Dm.Tabela.First; while not Dm.Tabela.EOF do begin wregistro50.CPFCNPJ:=Dm.Tabela.FieldByName('CNPJ').Value; wregistro50.Inscricao:=Dm.Tabela.FieldByName('IE').Value; wregistro50.DataDocumento:=Dm.Tabela.FieldByName('DATA').Value; wregistro50.UF:=Dm.Tabela.FieldByName('UF').Value; wregistro50.Modelo:=Dm.Tabela.FieldByName('MODELO').Value; wregistro50.Serie:=Dm.Tabela.FieldByName('SERIE').Value; wregistro50.Numero:=Dm.Tabela.FieldByName('NUMERO').Value; wregistro50.Cfop:=Dm.Tabela.FieldByName('CFOP').Value; wregistro50.EmissorDocumento:=Dm.Tabela.FieldByName('EMITENTE').Value; wregistro50.ValorContabil:=Dm.Tabela.FieldByName('TOTAL').Value; wregistro50.BasedeCalculo:=Dm.Tabela.FieldByName('BASEICMS').Value; wregistro50.Icms:=Dm.Tabela.FieldByName('VALORICMS').Value; wregistro50.Isentas:=Dm.Tabela.FieldByName('ISENTO').Value; wregistro50.Outras:=Dm.Tabela.FieldByName('OUTROS').Value; wregistro50.Aliquota:=Dm.Tabela.FieldByName('ALICMS').Value; wregistro50.Situacao:='N'; Registros50.Add(wregistro50); Dm.Tabela.Next; end; end; Grato pela disposição, Tércio Lins.
  18. Boa noite. Migrei para o Lazarus e aconteceu o mesmo quando fui instalar o AcbrNFe. Como já estou implantando o sistema no cliente, a forma que eu achei foi desenvolver em Delphi as rotinas específicas da NFe. Tércio Lins.
  19. Boa noite. Estou gerando o sintegra e o registro 50 está repetindo a mesma NF. Ocorre o erro "Projeto elevou classe exceção External:SIGSEGV". Quando eu mando os dados só uma Nota Fiscal, o erro não ocorre. PS: Eu uso o Lazarus. Grato, Tércio Lins.
  20. Boa tarde. Estou gerando o sintegra e o registro 50 está repetindo a mesma NF. Ocorre o erro "Projeto elevou classe exceção External:SIGSEGV". Quando eu mando só uma NF o erro não ocorre. PS: Eu uso o Lazarus. Desde já agradeço, Tércio Lins.
  21. Bom dia. Está na FAQ do SPED: O que é consolidação na combinação CST/CFOP/Alíquota?(75) Seria como o exemplo abaixo: Nota Fiscal: N° 0001 Item 1: CST_ICMS = 000 CFOP = 5102 ALIQ_ICMS = 17% Valor ICMS: 1000,00 Item 2: CST_ICMS = 000 CFOP = 5102 ALIQ_ICMS = 17% Valor ICMS: 1000,00 Item 3: CST_ICMS = 000 CFOP = 5101 ALIQ_ICMS = 17% Valor ICMS: 500,00. Consolidação do Registro C190: 1° Registro C190: CST_ICMS = 000, CFOP = 5102, ALIQ_ICMS = 17% Valor ICMS: 2000,00 2° Registro C190: CST_ICMS = 000, CFOP = 5101, ALIQ_ICMS = 17% Valor ICMS: 500,00.
  22. Mais uma vez agradeço. Tércio Lins.
  23. Bom dia Fernandes. A situação que você colocou também ocorre. Outros clientes não querem o desconto no produto, ou seja, não querem que apareça na impressão a alteração do valor vendido. Analizando algumas notas de fornecedores(XML), o valor unit. e o total do produto não são alterados. Obrigado pela informação que tornou mais claro o assunto. Essa mesma lógica pode ser aplicada no frete, no seguro e em outras despesas? Grato, Tércio Lins.
  24. Vou ser mais claro: item codigo descricao valor quantidade total desconto Geral 1 001 produto 1 5,00 2,000 10,00 0,00 10,00 2 002 produto 2 10,00 1,000 10,00 2,00 8,00 3 003 produto 3 4.00 2,000 8,00 0,00 8,00 base total produto desconto total da nota 26,00 28,00 2,00 26,00 Neste caso o desconto foi dado em um único produto. Se o cliente pedir para fechar em 25,00? O desconto de um real será rateado proporcionalmente por todos os itens. O desconto total será de 3,00. A dúvida é: Eu teria que acrescentar 3,85% de 1.00 ao desconto produto número 2, ou somaria todo o desconto (3,00) e ratearia por todos? Grato, Tércio Lins.
  25. Boa tarde. Se ocorrer um desconto em um item e no final o cliente pedir um desconto no total da nota, é obrigatório ratear o desconto apresentado no item, ou seja, é possível ceder um desconto individual e posteriormente no total da nota? Grato, Tércio Lins
×
×
  • 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.

The popup will be closed in 10 segundos...