Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado

Caros, estou com um problema na hora de gravar os dados da reducao z em uma impressora bematech mp4000,  usando "DadosReducaoZ" o cooInicial sempre fica zerado. Tenho o seguinte procedimento no meu sistema:

ThreadSimplesProcesso(nil, 'Emitindo Redução Z. Aguarde..',
    procedure
    var
      Sintegra60m: TSintegra60m;
      Sintegra60a: TSintegra60a;
      ACBrECFDadosRZ: TACBrECFDadosRZ;
      ReducaoZ: TStringList;
      IdSintegra60m: Int64;
      TimeoutAnterior: Integer;
    begin
      try
        TThread.Queue(TThread.CurrentThread,
          procedure
          var
            I: Integer;
          begin
            FDataModule.ACBrECF.Desativar;
            FDataModule.ACBrECF.Ativar;
            TimeoutAnterior := FDataModule.ACBrECF.TimeOut;
            FDataModule.ACBrECF.TimeOut := 600;
            ReducaoZ := TStringList.Create;
            Try
              ACBrECFDadosRZ := FDataModule.ACBrECF.DadosReducaoZClass;
              FDataModule.ACBrECF.ReducaoZ;
              ReducaoZ.Text := FDataModule.ACBrECF.DadosUltimaReducaoZ;

              Sintegra60m := TSintegra60m.Create;
              Sintegra60m.BeginTransaction;
              Sintegra60m.Id := 0;
              Sintegra60m.IdEmpresa := TSessaoUsuario.GetInstance.Empresa.Id;
              Sintegra60m.NumeroEquipamento := StrToIntDef(ACBrECFDadosRZ.NumeroDoECF, 0);
              Sintegra60m.NumeroSerieEcf := ACBrECFDadosRZ.NumeroDeSerie;
              Sintegra60m.DataEmissao := TSessaoUsuario.GetInstance.DataServidor;
              Sintegra60m.HoraEmissao := TSessaoUsuario.GetInstance.HoraMovimento;
              Sintegra60m.DataMovimento := ACBrECFDadosRZ.DataDoMovimento;
              Sintegra60m.ModeloDocumentoFiscal := '2D';
              Sintegra60m.COOInicial := StrToIntDef(ACBrECFDadosRZ.NumeroCOOInicial, 0);
              Sintegra60m.COOFinal := (ACBrECFDadosRZ.COO + 1);
              Sintegra60m.CRZ := (ACBrECFDadosRZ.CRZ + 1);
              Sintegra60m.CRO := ACBrECFDadosRZ.CRO;
              Sintegra60m.ValorVendaBruta := ACBrECFDadosRZ.ValorVendaBruta;
              Sintegra60m.ValorGrandeTotal := ACBrECFDadosRZ.ValorGrandeTotal;
              IdSintegra60m := Sintegra60m.Salvar;

              // ICMS
              for I := 0 to ACBrECFDadosRZ.ICMS.Count - 1 do
              begin
                try
                  Sintegra60a := TSintegra60a.Create;
                  Sintegra60a.Id := 0;
                  Sintegra60a.IdSintegra60m := IdSintegra60m;
                  Sintegra60a.SituacaoTributaria := StringReplace(FormatFloat('00.00', ACBrECFDadosRZ.ICMS.Aliquota), ',', '', [rfReplaceAll]);
                  Sintegra60a.Valor := ACBrECFDadosRZ.ICMS.Total;
                  Sintegra60a.Salvar;
                finally
                  FreeAndNil(Sintegra60a);
                end;
              end;

              // ICMS - Substituição Tributária
              try
                Sintegra60a := TSintegra60a.Create;
                Sintegra60a.Id := 0;
                Sintegra60a.IdSintegra60m := IdSintegra60m;
                Sintegra60a.SituacaoTributaria := 'F';
                Sintegra60a.Valor := ACBrECFDadosRZ.SubstituicaoTributariaICMS;
                Sintegra60a.Salvar;
              finally
                FreeAndNil(Sintegra60a);
              end;

              // ICMS - ISento
              try
                Sintegra60a := TSintegra60a.Create;
                Sintegra60a.Id := 0;
                Sintegra60a.IdSintegra60m := IdSintegra60m;
                Sintegra60a.SituacaoTributaria := 'I';
                Sintegra60a.Valor := ACBrECFDadosRZ.IsentoICMS;
                Sintegra60a.Salvar;
              finally
                FreeAndNil(Sintegra60a);
              end;

              // ICMS - Não-incidência
              try
                Sintegra60a := TSintegra60a.Create;
                Sintegra60a.Id := 0;
                Sintegra60a.IdSintegra60m := IdSintegra60m;
                Sintegra60a.SituacaoTributaria := 'N';
                Sintegra60a.Valor := ACBrECFDadosRZ.NaoTributadoICMS;
                Sintegra60a.Salvar;
              finally
                FreeAndNil(Sintegra60a);
              end;

              // ICMS - Desconto
              try
                Sintegra60a := TSintegra60a.Create;
                Sintegra60a.Id := 0;
                Sintegra60a.IdSintegra60m := IdSintegra60m;
                Sintegra60a.SituacaoTributaria := 'DESC';
                Sintegra60a.Valor := ACBrECFDadosRZ.DescontoICMS;
                Sintegra60a.Salvar;
              finally
                FreeAndNil(Sintegra60a);
              end;

              // Cancelamento - ICMS
              try
                Sintegra60a := TSintegra60a.Create;
                Sintegra60a.Id := 0;
                Sintegra60a.IdSintegra60m := IdSintegra60m;
                Sintegra60a.SituacaoTributaria := 'CANC';
                Sintegra60a.Valor := ACBrECFDadosRZ.CancelamentoICMS;
                Sintegra60a.Salvar;
              finally
                FreeAndNil(Sintegra60a);
              end;

              // ISSQN
              for I := 0 to ACBrECFDadosRZ.ISSQN.Count - 1 do
              begin
                try
                  Sintegra60a := TSintegra60a.Create;
                  Sintegra60a.Id := 0;
                  Sintegra60a.IdSintegra60m := IdSintegra60m;
                  Sintegra60a.SituacaoTributaria := 'ISS';
                  Sintegra60a.Valor := ACBrECFDadosRZ.ISSQN.Total;
                  Sintegra60a.Salvar;
                finally
                  FreeAndNil(Sintegra60a);
                end;
              end;
              Sintegra60m.CommitTransaction;

            except
              on E: Exception do
              begin
                Sintegra60m.RollbackTransaction;
                raise Exception.Create('Falha na emissão da Redução Z. ' + E.Message);
              end;
            end;

            try
              if not DirectoryExists(CaminhoApp + 'Arquivos\Reducoes Z') then
              begin
                if ForceDirectories(CaminhoApp + 'Arquivos\Reducoes Z') then
                  ReducaoZ.SaveToFile(Format('%sArquivos\Reducoes Z\ReducaoZ_%s.txt', [CaminhoApp, FormatDateTime('ddmmyyyy', ACBrECFDadosRZ.DataDoMovimento)]));
              end
              else
                ReducaoZ.SaveToFile(Format('%sArquivos\Reducoes Z\ReducaoZ_%s.txt', [CaminhoApp, FormatDateTime('ddmmyyyy', ACBrECFDadosRZ.DataDoMovimento)]));
            except
              // on E: Exception do
            end;
          end);
      finally
        FDataModule.ACBrECF.TimeOut := TimeoutAnterior;
        FreeAndNil(Sintegra60m);
        FreeAndNil(ReducaoZ);
      end;
    end);

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