Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Pessoal que acompanha o tópico, as alterações ja estão disponiveis no svn, existem algumas pequenas alterações na forma de implementação dos eventos, mas é pouca coisa, qualquer duvida estarei a disposição!!!!!!!!!!! :lol:

Até.... :D

Willians R. Gonçalves

[email protected]

"Sou louco porque vivo em um mundo que não merece minha lucidez" (Bob Marley)

  • Membros Pro
Postado

Boa tarde , será que poderia colocar um exemplo para a chamada dos eventos e como fica os campos que foram acrescentados no bloco C e nos demais , tipo o bloco a que nao possui no layout da RFB ficaria assim ? :

ACBrSpedFiscal.Bloco_0.Add('|A100|0|'); - > Seria desta forma ?

ACBrSpedFiscal.Bloco_0.Add('|A100|0|');

ACBrSpedFiscal.Bloco_0.Add('|A100|...|');

ACBrSpedFiscal.Bloco_0.Add('|A170|...|');

ACBrSpedFiscal.Bloco_0.Add('|A990|...|');

O bloco C por exemplo que ja existe com os campos declarados na unit ,como irei inserir ? :

NAT_REC_PIS

VL_BC_PIS

ALIQ_PIS

VL_PIS

CST_COFINS

Desde já agradeço a atenção .

Jorge – Analise / Desenvolvimento de Sistemas

Netstart Informatica - (18)3642-0900

www.netstart.com.br

Postado

Bom vou colocar aqui um exemplo de como é o funcionamento, vou utilizar o registro C170 como base, pois os demais registros são a mesma coisa, somente vai mudar para os blocos A e F, vou mostrar como implementei no meu sistema, nada impede que desenvolvam de outra forma.

Primeiro: Crio um TStringlist que ira armazenar as informações que o G5 pede.

var

  FrmSPEDFiscal: TFrmSPEDFiscal;

  vDadosProdutosG5 : TStringList; //Aqui vou armazenar os dados dos produtos para o G5

Segundo: Gero o registro C170 pelo componente normalmente, e depois do ultimo campos adiciono as informações do G5 no TStringlist.

with RegistroC170New do 

begin

  NUM_ITEM := FormatFloat('000', IItens);

  COD_ITEM := FormatFloat('000000', StrToInt(NUM_ITEM));

  DESCR_COMPL := FormatFloat('11000000', INotas) + ' -> ITEM '+ COD_ITEM;

  QTD := 1;

  UNID := 'UN';

  //demais campos do layout original


  //aqui verifico se estou gerando para o G5, está será a unica alteração na rotina de geração do registroC170

  if ckbContmatic.Checked then

  begin

    vDadosProdutosG5.Add( {Aqui dentro vão os campos adicionados pela contmatic...... })

  end;

end; 


  //Depois de informadas todas as informações necessárias e registros necessários mando gravar os dados do bloco C

  ACBrSPEDFiscal1.WriteBloco_C(True); // True, fecha o Bloco

Durante a execução do comando anterior ( ACBrSPEDFiscal1.WriteBloco_C(True); ) o evento OnWriteRegistroC170 do componente será disparado para cada produto que for gravado no arquivo, nesse evento coloquei o seguinte código:
procedure TFrmSPEDFiscal.ACBrSPEDFiscal1WriteRegistroC170( var ALinha: String);

begin

  {Verifico pois independente se estou gerando para G5 ou não o evento é disparado}

  if ckbContmatic.Checked then

  begin

    { A variavel a linha já virá com os dados do layout original, apenas adiciono os dados da linha 0 do StringList }

    ALinha := ALinha + vDadosProdutosG5.Strings[0];

    {Deleto a informação da linha 0 pois ela já foi utilizada}

    vDadosProdutosG5.Delete(0);

  end;

end;

Bom a implementaçao para os demais registro segue a mesma regra. Bom agora para gerar o bloco Bloco A, você poderá utilizar dois eventos dos componentes o AfterWriteRegistro0990 ou o BeforeWriteRegistroC001, mas o segundo ainda não foi implementado, de momento só resta a primeira opção. O evento AfterWriteRegistro0990 é disparado logo após o Registro0990 ser adicionado no arquivo, e através desse evento você poderá adicionar informações entre o Registro0990 e o RegistroC001, e é ai que entra o o Bloco A. Aqui deixei da seguinte forma:

procedure TfrmPisCofins.ACBrSPEDFiscalEventsBloco_0AfterWriteRegistro0990( var ALinha: AnsiString);

begin

  if ckbContmatic.Checked then

  begin

    MensagemBarra := 'Gerando Bloco A...';

    vDados := TStringList.Create;

    vDados.Clear;

    vDados.Clear;

    vDados.Add('|A001|0|');

    vDados.Add('|A100|0|'); 

    vDados.Add('|A100|...|');

    vDados.Add('|A170|...|');

    //........

    vDados.Add('|A990|...|');

    ALinha := vDados.Text;


    //O  Código abaixo não é obrigatório, apenas coloquei para ficar mais completo, mas G5 não verifica estas informações


    ACBrSPEDFiscal.Bloco_9.Registro9999.QTD_LIN := ACBrSPEDFiscal.Bloco_9.Registro9999.QTD_LIN + vDados.Count;

    vDados.Free;


    With ACBrSPEDFiscal.Bloco_9.Registro9900 do

    begin

      With New do

      begin

        REG_BLC := 'A001';

        QTD_REG_BLC := 1;

      end;


      With New do

      begin

        REG_BLC := 'A990';

        QTD_REG_BLC := 1;

      end;

    end;

  end;

end;

Lógico que pode ser implementado de outra forma, fiz assim por opção própria. Ali dentro tem um TStringlist que pode ser alimentado fora dessa rotina do jeito que achar melhor.

Para a implementação do Bloco F vai seguir a mesma coisa não muda nada e de momento deverá ser feita no evento AfterWriteRegistroE990.

Vou pegar o demo do componente e implementar a alguns eventos para verem como ficará, mas devido ai tempo creio que só conseguirei fazer no final de semana.

As verificações que faço no código ( if ckbContmatic.Checked then ), é um checkbox que tenho na tela para identificar se estou gerando no layout original ou no layout do G5, faço as verificações no eventos porque ele estando implementado sempre será disparado.

Bom pessoal é isso.

Desculpe por não ter o demo ainda e os erros de digitação...rsrs...

Qualquer dúvida estarei a disposição.

At.

Willians R. Gonçalves

[email protected]

"Sou louco porque vivo em um mundo que não merece minha lucidez" (Bob Marley)

  • Membros Pro
Postado

Muito obrigado ajudou muito, ficou bom mesmo dessa forma ai nao precisamos fazer nenhuma alteração nas units do componente mesmo, com o exemplo acima ficou bem mais facil entender .

Estamos avaliando aqui na empresa se será necessário gerar esse arquivo para a contimatic realmente, quantos clientes usam a ferramenta G5, pois o ideal mesmo seria a Contimatic criar a importação do proprio arquivo PIS/COFINS de acordo com o layout da receita .

Jorge – Analise / Desenvolvimento de Sistemas

Netstart Informatica - (18)3642-0900

www.netstart.com.br

Postado

Então netstart, no arquivo que meu sistema gera eu informo somente Saídas (NF / Cupom) e Entradas e mais registros de apuração, mas como você já deve ter percebido existem outras informações que podem ser enviadas no arquivo, como por exemplo conta de agua, luz, ......... e essas informações eu não tenho, mas o contador tem. Então nesse caso o contador pega meu arquivo importa no programa dele e depois gera novamente o arquivo ai já vai entrar as informações que ele tem la no sistema da contabilidade.

Por um lado isso é bom, tira um pouco da responsabilidade das nossas costas, pois o arquivo final gerado é do contador, mas deixo aberto também para o cliente gerar e enviar o arquivo direto pra receita ai fica a critério dele.

Eu também iria ficar feliz se a contmatic importasse o arquivo do PIS/COFINS, ai isso já estaria resolvido a bastante tempo atrás.

Até

Willians R. Gonçalves

[email protected]

"Sou louco porque vivo em um mundo que não merece minha lucidez" (Bob Marley)

  • 1 mês depois ...
Postado

Muito bom o esfoço de todos.

Fazendo uso, eu senti a falta de um "sender" no evento:

TWriteRegistroEvent = procedure(sender:TObject; var ALinha: AnsiString) of object;

Com isto talves seja possível escrever uma classe com herança das classes já existentes e que todos poderiam utilizar;

ACBrEFD_G5.pas

Amarildo Lacerda

Storeware Team

  • 1 mês depois ...
Postado

Desculpa a todos aqui, mas eu não entendi como utilizar os eventos, pois estou acustumado com eles na aba Events e não desse jeito.

Como faço para usa-los ?

Desde já, obrigado pela atenção

Postado

Desculpa a todos aqui, mas eu não entendi como utilizar os eventos, pois estou acustumado com eles na aba Events e não desse jeito.

Como faço para usa-los ?

Desde já, obrigado pela atenção

Esse eventos estão na aba eventos do objeto inspector, olha no componente, os classifiquei por blocos.

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Postado

Desculpa a todos aqui, mas eu não entendi como utilizar os eventos, pois estou acustumado com eles na aba Events e não desse jeito.

Como faço para usa-los ?

Desde já, obrigado pela atenção

Esse eventos estão na aba eventos do objeto inspector, olha no componente, os classifiquei por blocos.

Por aqui não esta aparecendo na aba Events, aparece como property

acbrSPEDFiscal_OI.png

Postado

Desculpa a todos aqui, mas eu não entendi como utilizar os eventos, pois estou acustumado com eles na aba Events e não desse jeito.

Como faço para usa-los ?

Desde já, obrigado pela atenção

Esse eventos estão na aba eventos do objeto inspector, olha no componente, os classifiquei por blocos.

Por aqui não esta aparecendo na aba Events, aparece como property

acbrSPEDFiscal_OI.png

Atualize e de um build no pacote novamente.

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Postado

Esse eventos estão na aba eventos do objeto inspector, olha no componente, os classifiquei por blocos.

Por aqui não esta aparecendo na aba Events, aparece como property

acbrSPEDFiscal_OI.png

Atualize e de um build no pacote novamente.

Removi o pacote SPED completo, deletei a bpl, deixei novamente e tive o mesmo problema. Alguma ideia ?

Postado

Esse eventos estão na aba eventos do objeto inspector, olha no componente, os classifiquei por blocos.

Por aqui não esta aparecendo na aba Events, aparece como property

acbrSPEDFiscal_OI.png

Atualize e de um build no pacote novamente.

Removi o pacote SPED completo, deletei a bpl, deixei novamente e tive o mesmo problema. Alguma ideia ?

Desinstala ele da sua IDE e instala novamente.

post-193-13548988042794.png

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Postado

Esse eventos estão na aba eventos do objeto inspector, olha no componente, os classifiquei por blocos.

Por aqui não esta aparecendo na aba Events, aparece como property

acbrSPEDFiscal_OI.png

Atualize e de um build no pacote novamente.

Removi o pacote SPED completo, deletei a bpl, deixei novamente e tive o mesmo problema. Alguma ideia ?

Desinstala ele da sua IDE e instala novamente.

Foi o que fiz a primeira vez. Mandei remover pela IDE e depois apaguei a bpl. Apaguei os arquivos e fiz download novamente. Build / Install e nada.

  • Consultores
Postado

Talvez o arquivo BPL esteja sendo jogado na pasta errada. Ou talvez buscado numa pasta errada, como a de uma outra versão do Delphi ou Lazarus

Faça uma busca por ACBr*.bpl em todo o computador e verifique.

Se for o caso, apague todos (mande pra lixeira), inclusive de outras versões do Delphi.

Faça um build e reinstale o ACBr completamente.

EDIT: A propósito, tenha certeza de que está com a versão mais recente do SVN

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • 5 meses depois ...
Postado

Pessoal realmente estou precisando de ajuda também no Layout do JB CEPIL, so que diferentemente do ContMatic, ele gera um registro filho para o produto (registro 0200), chamado registro 020B, qual seria a maneira correta de gerar o registro filho usando a ideia do Willians R. Goncalves.

Att,

Michael Belmonte
Gestor em TI
http://www.systronic.com.br
"Ha 15 anos desenvolvendo soluções criativas!"

Postado

Eu até tentei usar a idéia do Willians que ele mostra mais acima para gerar o Bloco A, porém o problema que encontrei é que o bloco 0200 ja havia sido carregado, e quando for gerar o bloco no meu caso 020B ele já nao tem mais os dados daquela tabela...

Att,

Michael Belmonte
Gestor em TI
http://www.systronic.com.br
"Ha 15 anos desenvolvendo soluções criativas!"

  • 2 semanas depois ...
Postado

Boa tarde a todos, tem como me tirar uma dúvida?

 

 Com as alterações para o G5 o novo arquivo gerado é para o SPED Contribuições e para o SPED Fiscal?

 

O G5 importa o arquivo baseado do Sped Fiscal ! (Arquivo gerado pelo ACBrSpedFiscal com adaptações nos Eventos do componente) para ser importado pelo G5 , com essas adaptações do arquivo do Sped Fiscal o Sped Contribuições Pis Cofins e Sped Fiscal são contemplados em um unico arquivo de Escrituração completa , Sped Fiscal + Contribuições .

Postado

Entendi Marcelo, eu já faço o SPED Fiscal com o C170 mesmo para NF-e de emissão própria porque a menina do escritório me pediu,

mas acredito que irá faltar informações no C170 e no Bloco 0 para contemplar os "dois SPEDs".

 

Não abusando da boa vontade de ninguém, é que não achei essa informação dando uma clássica googlada você saberia me dizer

o que tenho que informar a mais (não a maneira como informar e sim o que tem que ser informado a mais) e a posição?

 

Ex: Bloco 0 - Registro 0200, adicionar campos (x, y e z)...

 

Desde já obrigado pela ajuda

Marcos Gerene

[email protected]

Postado

Certo , olhe só  , vou dar um exemplo do 0200 , para os demais registros é igual :

 

 

1º - Vc vai precisar de um TStringList privado para armazenar isso abaixo , para os demais registros segue a mesma regra .

 

 

              with Registro0200New do
                   begin
                   COD_ITEM     := QryProdutosComercializados.fieldbyname('CODIGO').AsString ; //codigo do item
                   DESCR_ITEM   := QryProdutosComercializados.fieldbyname('DESCRICAO').asstring ; //descrição do item
                   COD_BARRA    := QryProdutosComercializados.fieldbyname('CODIGO_BARRAS').asstring ; //codigo de barras, se houver
                   COD_ANT_ITEM := '' ; //código anterior do item
                   UNID_INV     := QryProdutosComercializados.fieldbyname('UNIDADE_CODIGO').asstring ; //unidade de medida utilizada na quantificação de estoques
                   TIPO_ITEM    := tiMercadoriaRevenda ;
                   COD_NCM      := QryProdutosComercializados.fieldbyname('NCM').asstring  ;
                   EX_IPI       := '' ; // codigo EX, conforme a TIPI
                   COD_GEN      := '' ; // codigo do genero do item
                   COD_LST      := '' ; // codigo do serviço
                   ALIQ_ICMS    := 0  ; // aliquota de ICMS aplicavel ao item nas operações internas


 

                   // TAG's Adicionais para registro 0200  Formato = ( Contimatic Phoenix G5 )
                   if Radio_Contimatic_G5.Checked = True Then
                      begin

                      // Coloquei essas variaveis somente para melhor entendimento Estética dos Campos (A gosto !!)
                      REG_0200_COD_GRUPO           := '' ;  

                      REG_0200_DESC_GRUPO          := '' ;
                      REG_0200_COD_SEFAZ           := '' ;
                      REG_0200_CSOSN               := '' ;
                      REG_0200_CST_ICMS            := '' ;
                      REG_0200_PER_RED_BC_ICMS     := '' ;
                      REG_0200_BC_ICMS_ST          := '' ;
                      REG_0200_CST_IPI_ENTRADA     := '' ;
                      REG_0200_CST_IPI_SAIDA       := '' ;
                      REG_0200_ALIQ_IPI            := '' ;
                      REG_0200_CST_PIS_ENTRADA     := '' ;
                      REG_0200_CST_PIS_SAIDA       := '' ;
                      REG_0200_NAT_REC_PIS         := '' ;
                      REG_0200_ALIQ_PIS            := '' ;
                      REG_0200_CST_COFINS_ENTRADA  := '' ;
                      REG_0200_CST_COFINS_SAIDA    := '' ;
                      REG_0200_NAT_REC_COFINS      := '' ;
                      REG_0200_ALIQ_COFINS         := '' ;
                      REG_0200_ALIQ_ISS            := '' ;
                      REG_0200_CC                  := '' ;
                      REG_0200_OBSERVACAO          := '' ;
                      Arquivo_Temp_0200.Add(   '|' + REG_0200_COD_GRUPO           + '|' +
                                                     REG_0200_DESC_GRUPO          + '|' +
                                                     REG_0200_COD_SEFAZ           + '|' +
                                                     REG_0200_CSOSN               + '|' +
                                                     REG_0200_CST_ICMS            + '|' +
                                                     REG_0200_PER_RED_BC_ICMS     + '|' +
                                                     REG_0200_BC_ICMS_ST          + '|' +
                                                     REG_0200_CST_IPI_ENTRADA     + '|' +
                                                     REG_0200_CST_IPI_SAIDA       + '|' +
                                                     REG_0200_ALIQ_IPI            + '|' +
                                                     REG_0200_CST_PIS_ENTRADA     + '|' +
                                                     REG_0200_CST_PIS_SAIDA       + '|' +
                                                     REG_0200_NAT_REC_PIS         + '|' +
                                                     REG_0200_ALIQ_PIS            + '|' +
                                                     REG_0200_CST_COFINS_ENTRADA  + '|' +
                                                     REG_0200_CST_COFINS_SAIDA    + '|' +
                                                     REG_0200_NAT_REC_COFINS      + '|' +
                                                     REG_0200_ALIQ_COFINS         + '|' +
                                                     REG_0200_ALIQ_ISS            + '|' +
                                                     REG_0200_CC                  + '|' +
                                                     REG_0200_OBSERVACAO           )  ;
                      end ;
                   // TAG's Adicionais para registro 0200  Formato = ( Contimatic Phoenix G5 )
                  
                   end; // registro 0200 do Sped Fiscal

 

 

 

 

 

....e no evento abaixo fica assim :

 

 

 

 

procedure TFrmSpedFiscal.ACBrSPEDFiscal1EventsBloco_0WriteRegistro0200(
  var ALinha: String);
begin
  if Radio_Contimatic_G5.Checked = True Then
     begin
     ALinha := ALinha  + Arquivo_Temp_0200.Strings[0] ;
     Arquivo_Temp_0200.Delete(0);
     end ;
end;

Postado

Isaque , devido alguns colegas ainda terem duvidas de utilização do ACBrSpedFiscal com adaptação do Software G5 entre outros , estou disponibilizando o Demo do ACBrSpedFiscal implementado com a geração para o G5 , acho que é legal ter um paralelo deste Demo para não confundir com o Demo Original na distribuição do componente , quando tiver tempo faz um merge e veja oque pode ser feito de melhor , blz !

 

abraço

  • 2 semanas depois ...
Postado

Marcelo, você ajudou até mais do que precisava...

 

Eu só queria saber os campos que estariam "faltando" para completar o arquivo, mas já que você

disponibilizou os campos e o código ficou fácil.. rsrs

 

Muito obrigado a todos, sério, a galera toda é muito fera, ajuda muito!

Marcos Gerene

[email protected]

Postado

Willians realmente você tinha razão nem o JB CEPIL atende diretamente o arquivo SPED no layout padrão, eles tem um layout próprio também, vou utilizar usas ideias para implementar e atender o layout deles...vlew pela excelente senão brilhante cooperação, o mesmo para o Isaque Pinheiro incansável moderador!

Att,

Michael Belmonte
Gestor em TI
http://www.systronic.com.br
"Ha 15 anos desenvolvendo soluções criativas!"

Postado

Boa tarde a todos,

 

Eu estou desenvolvendo para o G5, neste documento: http://www.gsm.cnt.br/ftp/332LayoutSpedPhoenix.pdf

está as alterações que são necessárias fazer para gerar o arquivo no layout do arquivo (quais campos em quais

blocos e quais registros a mais devem ser informados).

 

Espero conseguir ajudar quem ainda está "patinando" assim como fui ajudado neste mesmo forum, e mais uma

vez muito obrigado a todos.

Marcos Gerene

[email protected]

  • 2 semanas depois ...
Postado (editado)

Pessoal serviu como uma luva para o BLOCO A do JB CEPIL, porém so ficou um pequeno problema que peço a ajuda do pessoal para ver se conseguimos resolver sem muitas alterações no que o Marcelo e o Isaque fizeram que é o seguinte: 

 

No caso do JB após cada registro 0200 é gerado alguns registros filhos chamados 020B que contem em cada linha um tipo de tributo, no caso por exemplo na linha 01 - PIS

02 - COFINS

03 - ICMS

04 - outros...

 

Como poderia implementar isto sem precisar mexer na estrutura do SPED FISCAL como já fizeram nossos amigos? Veja como ficaria, no caso abaixo so tem duas linhas que sao o PIS e o COFINS:

 

 

|0200|000001|CLORETS DIVERSOS ADMS|||UN|00|||00||0,00|
|020B|01|01|5405|2|1,65|0,00|||||
|020B|02|01|5405|2|7,60|0,00|||||
|0200|000002|BALAS TELE|||UN|00|21069090||00||12,00|
|020B|01|01|5102|2|1,65|0,00|||||
|020B|02|01|5102|2|7,60|0,00|||||
|0200|000003|CHICLET PLETS|||UN|00|21069090||21||0,00|
|020B|01|01|5405|2|1,65|0,00|||||
|020B|02|01|5405|2|7,60|0,00|||||

 

 

 

Alguém tem alguma ideia?

 

Att,

Editado por systronic

Att,

Michael Belmonte
Gestor em TI
http://www.systronic.com.br
"Ha 15 anos desenvolvendo soluções criativas!"

  • Este tópico foi criado há 3002 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.