Ir para conteúdo
  • Cadastre-se

dev botao

Problemas no bloco G


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

Recommended Posts

Estou utilizando o componente AcbrSpedFiscal e percebi no arquivo gerado que existia registros do bloco E no lugar dos registro G125, G130 e G140.

Observação: É gerado o registro E111 no lugar do G125, G130 e G140, porem com os valores do corretos do G125, G130 e G140 Exmplo:

|E111|1|01012010|SI|0|0|0|0|48|10|

sendo que o correto seria:

|G125|1|01012010|SI|0|0|0|0|48|10|

Meu código:

unit lbControllerBlocoG;


interface


uses

   SysUtils,

   Forms,

   Dialogs,

   DB,

   DBTables,

   variants,

   Classes,

   DBClient,

   StdCtrls,

   SqlExpr,

   windows,

   wmgauge,

   wbvars,

   wbrots,

   wddatbas,

   ACBrEFDBloco_G,

   lbModelProdutosServicos,

   lbMensagensConstantesRFD,

   lbControllerFuncoesGenericas,

   lbDadosDeClienteNotaSerieNumCaixa,

   lbModelDadosFinanceiros,

   ACBrSpedFiscal,

   lbModelPessoas,

   lbControllerEmpresa,

   lbModelDadosFiscais,

   lbControllerGerais,

   ACBrEFDBlocos;


type

  TControllerBlocoG = class

  private

    vModelFiscal : TModelDadosFiscais;

    vFuncoesGenericas: TControllerFuncoesGenericas;

    vDadosDaNota : TDadosDeClienteNotaSerieNumCaixa;

    vMesAnterior : string;

    (*Dados de registros*)

    procedure pGeraRegistroG110;

    procedure pGeraRegistroG125(vLista:TRegistroG125List);

    procedure pGeraRegistroG130(vClienteNF, vNota, vSerieNF, VNumCaixa:STRING);

    procedure pGeraRegistroG140(vClienteNF, vNota, vSerieNF, VNumCaixa:STRING);


    (*Dados gerais*)

    function pSetDadosBlocoG(var vGeraDadosEFD: TACBrSPEDFiscal):Boolean;

  public

    constructor Create;

    destructor Destroy;override;

    function pGetDadosBlocoG(var vGeraDadosEFD: TACBrSPEDFiscal):Boolean;

end;


implementation


uses ACBrEFDBloco_G_Class, StrUtils;


{ TControllerBlocoG }


constructor TControllerBlocoG.Create;

begin

  vModelFiscal := TModelDadosFiscais.Create;

  vFuncoesGenericas:= TControllerFuncoesGenericas.Create;

  vDadosDaNota := TDadosDeClienteNotaSerieNumCaixa.Create;

end;


destructor TControllerBlocoG.Destroy;

begin

  FreeAndNil(vModelFiscal);

  FreeAndNil(vFuncoesGenericas);

  FreeAndNil(vDadosDaNota);

  inherited;

end;


procedure TControllerBlocoG.pGeraRegistroG110;

var vCDSTemp:TDataSet;

    vVL_TRIB_EXP, vVL_TOTAL:Real;

begin

  with vAcbrSpedFiscal.Bloco_G do

  begin

    vCDSTemp:=TClientDataSet.Create(nil);

    with RegistroG110New do

    begin


      vVL_TRIB_EXP:=0;

      vVL_TOTAL :=0;


      vCDSTemp:=vModelFiscal.pGetListaDeDadosG110(vMesAnterior);

      DT_INI :=StrToDate(vDataIniEFD);

      DT_FIN :=StrToDate(vDataFimEFD);

      if not (vCDSTemp.FieldByName('SALDO_IN_ICMS').IsNull)then

        SALDO_IN_ICMS:=vCDSTemp.FieldValues['SALDO_IN_ICMS']

      else

        SALDO_IN_ICMS:=0;


      vCDSTemp.Close;

      vCDSTemp :=vModelFiscal.pGetListaDeDadosG110SomaDasParcelas(Copy(DateToStr(vPonteiroPeriodos^.vDataInicialPER),4,7));

      if not (vCDSTemp.FieldByName('SOM_PARC').IsNull)then

        SOM_PARC :=vCDSTemp.FieldValues['SOM_PARC']

      else

        SOM_PARC :=0;


      vCDSTemp.Close;

      vCDSTemp :=vModelFiscal.pGetListaDeDadosG110DentroDoPais;

      if not (vCDSTemp.FieldByName('VL_TOTAL').IsNull)then

        VL_TOTAL :=vCDSTemp.FieldValues['VL_TOTAL']

      else

        VL_TOTAL :=0;


      vCDSTemp.Close;

      vCDSTemp :=vModelFiscal.pGetListaDeDadosG110ForaDoPais;

      if not (vCDSTemp.FieldByName('VL_TRIB_EXP').IsNull)then

        VL_TRIB_EXP :=vCDSTemp.FieldValues['VL_TRIB_EXP']

      else

        VL_TRIB_EXP :=0;


      vVL_TRIB_EXP:=VL_TRIB_EXP;

      vVL_TOTAL :=VL_TOTAL;


      if (vVL_TOTAL>0) then

        PER_SAI_TRIB :=(vVL_TRIB_EXP/vVL_TOTAL);


      ICMS_APROP :=(SOM_PARC*PER_SAI_TRIB);

      MODO_CIAP :='0';

      pGeraRegistroG125(RegistroG110New.RegistroG125);

    end;

  end;

end;


procedure TControllerBlocoG.pGeraRegistroG125(vLista:TRegistroG125List);

var vCDSTemp:TDataSet;

    vConta:Byte;

begin

  with vAcbrSpedFiscal.Bloco_G do

  begin

    vCDSTemp:=TClientDataSet.Create(nil);

    vCDSTemp:=vModelFiscal.pGetListaDeDadosG125;

    if not (vCDSTemp.IsEmpty) then

    begin

      vFuncoesGenericas.pCriaGauge('Bloco "G" Registro "G125"');

      vCDSTemp.First;

      vConta:=0;

      while not (vCDSTemp.Eof) do

      begin

        wfgauge.gauge1.AddProgress(1);

        with RegistroG125New do

        begin

          COD_IND_BEM :=vCDSTemp.FieldValues['COD_IND_BEM'];

          DT_MOV :=StrToDate(vDataIniEFD);

          TIPO_MOV :=vFuncoesGenericas.pGetTipoMovimentoBens(vCDSTemp.FieldValues['TIPO_MOV']);

          VL_IMOB_ICMS_OP :=vCDSTemp.FieldValues['VL_IMOB_ICMS_OP'];

          VL_IMOB_ICMS_ST :=0;

          VL_IMOB_ICMS_FRT:=0;

          VL_IMOB_ICMS_DIF:=0;

          NUM_PARC :=vCDSTemp.FieldValues['NR_PARC' ];

          VL_PARC_PASS :=vCDSTemp.FieldValues['VL_PARC_PASS'];

          VL_PARC_APROP :=vCDSTemp.FieldValues['VL_PARC_PASS'];


          pGeraRegistroG130(vCDSTemp.FieldValues['CLIENTENF'],

                            vCDSTemp.FieldValues['NUMNOTA' ],

                            vCDSTemp.FieldValues['SERIE' ],

                            vCDSTemp.FieldValues['NUMCAIXA' ]);


          Inc(vConta);

        end;

        vCDSTemp.Next;

      end;

      vFuncoesGenericas.pDestroiGauge;

    end;

  end;

end;


procedure TControllerBlocoG.pGeraRegistroG130(vClienteNF, vNota, vSerieNF, VNumCaixa:STRING);

var vCDSTemp:TDataSet;

begin

  with vAcbrSpedFiscal.Bloco_G do

  begin

    vCDSTemp:=TClientDataSet.Create(nil);

    vCDSTemp:=vModelFiscal.pGetListaDeDadosG130(vClienteNF, vNota, vSerieNF, VNumCaixa);

    if not (vCDSTemp.IsEmpty) then

    begin

      //vFuncoesGenericas.pCriaGauge('Bloco "G" Registro "G125"');

      vCDSTemp.First;

      while not (vCDSTemp.Eof) do

      begin

        //wfgauge.gauge1.AddProgress(1);

        with RegistroG130New do

        begin

          IND_EMIT :=edTerceiros;

          COD_PART :=vCDSTemp.FieldValues['COD_PART' ];

          COD_MOD :=vCDSTemp.FieldValues['COD_MOD' ];

          SERIE :=vCDSTemp.FieldValues['SERIE' ];

          NUM_DOC :=vCDSTemp.FieldValues['NUM_DOC' ];

          CHV_NFE_CTE:=vCDSTemp.FieldValues['CHV_NFE_CTE'];

          DT_DOC :=vCDSTemp.FieldValues['DT_DOC' ];

        end;

        pGeraRegistroG140(vCDSTemp.FieldValues['COD_PART'],

                          vCDSTemp.FieldValues['NUM_DOC' ],

                          vCDSTemp.FieldValues['SERIE' ],

                          vCDSTemp.FieldValues['NUMCAIXA' ]);

        vCDSTemp.Next;

      end;

      ///vFuncoesGenericas.pDestroiGauge;

    end;

  end;

end;


procedure TControllerBlocoG.pGeraRegistroG140(vClienteNF, vNota, vSerieNF,

  VNumCaixa: STRING);

var vCDSTemp:TDataSet;

begin

  with vAcbrSpedFiscal.Bloco_G do

  begin

    vCDSTemp:=TClientDataSet.Create(nil);

    vCDSTemp:=vModelFiscal.pGetListaDeDadosG140(vClienteNF, vNota, vSerieNF, VNumCaixa); 

    if not (vCDSTemp.IsEmpty) then

    begin

      //vFuncoesGenericas.pCriaGauge('Bloco "G" Registro "G125"');

      vCDSTemp.First;

      while not (vCDSTemp.Eof) do

      begin

        //wfgauge.gauge1.AddProgress(1);

        with RegistroG140New do

        begin

          NUM_ITEM:=vCDSTemp.FieldValues['SEQ'];

          COD_ITEM:=vCDSTemp.FieldValues['codpa']+

                    IfThen(vUtilizaGrade='S','.'+vCDSTemp.FieldValues['grade1']+

                                   '.'+vCDSTemp.FieldValues['grade2'],'');

        end;

        vCDSTemp.Next;

      end;

      ///vFuncoesGenericas.pDestroiGauge;

    end;

  end;

end;


function TControllerBlocoG.pGetDadosBlocoG(

  var vGeraDadosEFD: TACBrSPEDFiscal): Boolean;

begin

  Result:=pSetDadosBlocoG(vGeraDadosEFD);

end;


function TControllerBlocoG.pSetDadosBlocoG(

  var vGeraDadosEFD: TACBrSPEDFiscal): Boolean;

var vI:Byte;

begin

   vAcbrSpedFiscal:=vGeraDadosEFD;

   with vGeraDadosEFD.Bloco_G do

   begin

     // Desbarrar se não tiver gerando.

     //vAcbrSpedFiscal.Bloco_G.Gravado:=False;

      with RegistroG001New do

      begin

        IND_MOV := vIndicadorDeMovimento;


        (*Gera o bloco sem dados*)

        if (vIndicadorDeMovimento=imSemDados) then

        begin

          vAcbrSpedFiscal.WriteBloco_G;

          Exit;

        end;


        (*Gerando periodos*)

        for vI := 0 to vListaDePeriodos.Count - 1 do

        begin

          vPonteiroPeriodos := vListaDePeriodos.Items[ vI ];

          vMesAnterior := Copy(DateToStr(vPonteiroPeriodos^.vDataFinalPER-32),4,7);


          vDataIniEFD:=DateToStr(vPonteiroPeriodos^.vDataInicialPER);

          vDataFimEFD:=DateToStr(vPonteiroPeriodos^.vDataFinalPER);

          pGeraRegistroG110;

        end;

      end;

   end;


   vAcbrSpedFiscal.WriteBloco_G;

end;


end.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

Encontrei o problema no código fonte do Acbr, abra o arquivo AcbrEFDBloco_G.pas e procure pela string "E111" e altere para para G125 onde for G125 e assim sucessivamente.

Porem existe o problema de estar gerando campos a mais vou altera e se dar certo eu coloco um post aqui.

até mais...

Isso já foi corrigido, favor conferir e relatar se houver algum problema.

--
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

 

Link para o comentário
Compartilhar em outros sites

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