Jump to content

dev botao

Problemas no bloco G


analista.edilson
  • Este tópico foi criado há 4909 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 to comment
Share on other sites

  • 2 weeks later...

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 to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.