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