You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

387 lines
11 KiB

unit urelRecibo;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, System.Math, System.DateUtils,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, umstMaster, RLReport, Data.DB,
Vcl.ComCtrls, RLRichText, RLFilters, RLPDFFilter, RLPreviewForm, RLPrinters,
frxClass, frxDBSet, frxRich;
type
TrelRecibo = class(TmstMaster)
dtsReport: TDataSource;
dtsDevedor: TDataSource;
dtsTitulos: TDataSource;
frRecibo: TRLReport;
frb_header: TRLBand;
frpnl_logo: TRLPanel;
frdbimg_logo: TRLDBImage;
frpnl_headertop: TRLPanel;
frlbl_headertop: TRLLabel;
frpnl_headerbot: TRLPanel;
frlbl_headerbot: TRLLabel;
frb_header2: TRLBand;
frlbl_valortot: TRLLabel;
frlbl_vlextenso: TRLLabel;
frpnl_nome: TRLPanel;
frdblbl_cpf: TRLDBText;
frdblbl_nome: TRLDBText;
frlbl_recebemos: TRLLabel;
frpnl_recibo: TRLPanel;
frdblbl_nrrecibo: TRLDBText;
frlbl_recibo: TRLLabel;
frb_footer: TRLBand;
frpnl_organizasum: TRLPanel;
frdbresult_juros: TRLDBResult;
frdbresult_multa: TRLDBResult;
frdbresult_principal: TRLDBResult;
frdbresult_encargos: TRLDBResult;
frdbresult_descontos: TRLDBResult;
frdbresult_total: TRLDBResult;
frlbl_formarecebimento: TRLLabel;
frpnl_cheque: TRLPanel;
frlbl_nrcheque: TRLLabel;
frlbl_banco: TRLLabel;
frlbl_praca: TRLLabel;
frb_detail: TRLBand;
frdblbl_vencimento: TRLDBText;
frdblbl_juros: TRLDBText;
frdblbl_multa: TRLDBText;
frdblbl_principal: TRLDBText;
frdblbl_encargos: TRLDBText;
frdblbl_descontos: TRLDBText;
frdblbl_total: TRLDBText;
frsubdbnd1: TRLSubDetail;
frsubdbndmeio: TRLSubDetail;
frb_detail2v: TRLBand;
RLDBText9: TRLDBText;
RLDBText10: TRLDBText;
RLDBText11: TRLDBText;
RLDBText12: TRLDBText;
RLDBText13: TRLDBText;
RLDBText14: TRLDBText;
RLDBText15: TRLDBText;
frb_footer2v: TRLBand;
RLPanel3: TRLPanel;
RLDBResult7: TRLDBResult;
RLDBResult8: TRLDBResult;
RLDBResult9: TRLDBResult;
RLDBResult10: TRLDBResult;
RLDBResult11: TRLDBResult;
RLDBResult12: TRLDBResult;
frlbl_formarecebimento2v: TRLLabel;
frpnl_cheque2v: TRLPanel;
frlbl_nrcheque2v: TRLLabel;
frlbl_banco2v: TRLLabel;
frlbl_praca2v: TRLLabel;
frb_header2v: TRLBand;
frpnl_logo2v: TRLPanel;
frdbimg_logo2v: TRLDBImage;
RLPanel6: TRLPanel;
frlbl_headertop2v: TRLLabel;
RLPanel7: TRLPanel;
frlbl_headerbot2v: TRLLabel;
frb_header22v: TRLBand;
frlbl_valortot2v: TRLLabel;
frlbl_vlextenso2v: TRLLabel;
RLPanel8: TRLPanel;
frdblbl_cpf2v: TRLDBText;
frdblbl_nome2v: TRLDBText;
RLLabel30: TRLLabel;
RLPanel9: TRLPanel;
RLDBText19: TRLDBText;
RLLabel31: TRLLabel;
frsubdbnd2: TRLSubDetail;
RLBand5: TRLBand;
RLDBText2: TRLDBText;
RLDBResult1: TRLDBResult;
RLDBText3: TRLDBText;
RLDBResult2: TRLDBResult;
RLDBText4: TRLDBText;
RLDBResult3: TRLDBResult;
RLDBText5: TRLDBText;
RLDBResult4: TRLDBResult;
dtsCaixa: TDataSource;
frpnl_headers: TRLPanel;
frlbl_vencimento: TRLLabel;
frlbl_principal: TRLLabel;
frlbl_encargos: TRLLabel;
frlbl_descontos: TRLLabel;
frlbl_total: TRLLabel;
frlbl_juros: TRLLabel;
frlbl_multa: TRLLabel;
frlbl_despesas: TRLLabel;
RLLabel2: TRLLabel;
RLPanel1: TRLPanel;
RLLabel4: TRLLabel;
RLLabel11: TRLLabel;
RLLabel12: TRLLabel;
RLLabel13: TRLLabel;
RLLabel14: TRLLabel;
RLLabel15: TRLLabel;
RLLabel16: TRLLabel;
RLLabel1: TRLLabel;
RLLabel3: TRLLabel;
frlbl_nometit: TRLLabel;
RLDBText1: TRLDBText;
RLLabel5: TRLLabel;
RLDBText6: TRLDBText;
RLPanel2: TRLPanel;
frlbl_empresatit: TRLLabel;
RLPanel4: TRLPanel;
frlbl_empresatit2v: TRLLabel;
frlbl_dtpag: TRLLabel;
frlbl_dtpag2v: TRLLabel;
RLPanel5: TRLPanel;
frlbl_empresa: TRLLabel;
frlbl_usuario: TRLLabel;
frdblbl_usuario: TRLDBText;
fr_date: TRLSystemInfo;
fr_time: TRLSystemInfo;
RLPanel10: TRLPanel;
fr_membobs: TRLMemo;
RLPanel11: TRLPanel;
RLLabel18: TRLLabel;
RLLabel19: TRLLabel;
RLDBText16: TRLDBText;
RLSystemInfo2: TRLSystemInfo;
RLSystemInfo1: TRLSystemInfo;
RLPanel12: TRLPanel;
fr_membobs2v: TRLMemo;
RLLabel6: TRLLabel;
RLLabel7: TRLLabel;
frlbl_nr_reciboprimeiravia: TRLLabel;
frlbl_nr_recibosegundavia: TRLLabel;
fr_filterpdf: TRLPDFFilter;
procedure frReciboBeforePrint(Sender: TObject; var PrintIt: Boolean);
procedure frReciboAfterPrint(Sender: TObject);
procedure frsubdbnd2BeforePrint(Sender: TObject; var PrintIt: Boolean);
procedure frsubdbnd1BeforePrint(Sender: TObject; var PrintIt: Boolean);
procedure frdblbl_cpfBeforePrint(Sender: TObject; var AText: string;
var PrintIt: Boolean);
procedure frdblbl_cpf2vBeforePrint(Sender: TObject; var AText: string;
var PrintIt: Boolean);
procedure RLDBText19BeforePrint(Sender: TObject; var AText: string;
var PrintIt: Boolean);
private
procedure SalvarReciboPDF;
function CmtoPix(cm: double): integer;
{ Private declarations }
public
duaspags: Boolean;
nr_recibo_print: string;
{ Public declarations }
end;
var
relRecibo: TrelRecibo;
meses: array [1 .. 12] of string = (
'JANEIRO',
'FEVEREIRO',
'MARCO',
'ABRIL',
'MAIO',
'JUNHO',
'JULHO',
'AGOSTO',
'SETEMBRO',
'OUTUBRO',
'NOVEMBRO',
'DEZEMBRO'
);
implementation
{$R *.dfm}
uses udtmSystem, ufrmAtendimento;
function TrelRecibo.CmtoPix(cm: double): integer;
var
ppcm: double;
begin
ppcm := Screen.PixelsPerInch / 2.54;
Result := Trunc(ppcm * cm);
end;
procedure TrelRecibo.frdblbl_cpf2vBeforePrint(Sender: TObject;
var AText: string; var PrintIt: Boolean);
begin
inherited;
frdblbl_cpf2v.Left := frdblbl_nome2v.Left + frdblbl_nome2v.Width + 10;
end;
procedure TrelRecibo.frdblbl_cpfBeforePrint(Sender: TObject; var AText: string;
var PrintIt: Boolean);
begin
inherited;
frdblbl_cpf.Left := frdblbl_nome.Left + frdblbl_nome.Width + 10;
end;
procedure TrelRecibo.frReciboAfterPrint(Sender: TObject);
begin
frmAtendimento.btn_concluir.Enabled := true;
SalvarReciboPDF;
end;
procedure TrelRecibo.frReciboBeforePrint(Sender: TObject; var PrintIt: Boolean);
begin
dtsReport.dataset.open;
dtsDevedor.dataset.open;
dtsTitulos.dataset.open;
if not dtmSystem.tblUsuariosConsulta.Active then
begin
dtmSystem.tblUsuariosConsulta.open;
end;
dtmSystem.tblUsuariosConsulta.Locate('ID_USUARIO', dtmSystem.id_usuario, []);
end;
procedure TrelRecibo.frsubdbnd1BeforePrint(Sender: TObject;
var PrintIt: Boolean);
var
tam: double;
papel: integer;
begin
inherited;
tam := frsubdbnd1.Height + frsubdbnd2.Height + frsubdbndmeio.Height;
papel := CmtoPix(29);
if tam < papel then
begin
if (frsubdbnd1.Height + frsubdbndmeio.Height + frsubdbndmeio.Height) <=
ceil(papel / 2) then
begin
frb_footer.Height := floor(papel / 2) - frb_detail.Height -
frb_header.Height - frb_header2.Height - 100;
frb_footer2v.Height := frb_footer.Height;
duaspags := false;
end
else
begin
duaspags := true;
end;
end
else
begin
duaspags := true;
end;
end;
procedure TrelRecibo.frsubdbnd2BeforePrint(Sender: TObject;
var PrintIt: Boolean);
begin
if duaspags then
begin
frsubdbnd2.PageBreaking := pbBeforePrint;
end
else
begin
frsubdbnd2.PageBreaking := RLReport.pbNone;
end;
dtsReport.dataset.RecNo := dtsReport.dataset.RecordCount;
dtmSystem.tblConteudoRecibo.RecNo := 1;
end;
procedure TrelRecibo.RLDBText19BeforePrint(Sender: TObject; var AText: string;
var PrintIt: Boolean);
begin
inherited;
// dtsReport.DataSet.First;
end;
procedure TrelRecibo.SalvarReciboPDF;
var
path, file_name: string;
Fmt: TFormatSettings;
i: integer;
begin
// Fmt := TFormatSettings.Create;
// for i := 0 to High(meses) do
// begin
// Fmt.LongMonthNames[i] := meses[i];
// end;
// path := dtmSystem.path_executavel + '\RECIBOS';
// if not DirectoryExists(path) then
// begin
// CreateDir(path);
// end;
// path := TrimRight(path);
// path := path + '\' + FormatDateTime('YYYY', Date);
// if not DirectoryExists(path) then
// begin
// CreateDir(path);
// end;
// // path := path + '\' + FormatDateTime('mmmm', Date, Fmt);
// path := path + '\' + meses[MonthOf(Date)];
// if not DirectoryExists(path) then
// begin
// CreateDir(path);
// end;
// path := path + '\' + FormatDateTime('dd', Date);
// if not DirectoryExists(path) then
// begin
// CreateDir(path);
// end;
// file_name := path + '\' + dtmSystem.tblReciboNR_RECIBO.AsString + '.pdf';
// file_name := path + '\' + nr_recibo_print + '.pdf';
frmAtendimento.log_recibo.Add('Nº do recibo dentro do recibo: ' +
nr_recibo_print);
// file_name := 'E:\Programa_Cobranca\Win32\Debug\RECIBOS\2021\MAIO\21\teste3.pdf';
Try
// frRecibo.SaveToFile(ExtractFilePath(Application.ExeName) +
// dtmSystem.tblReciboNR_RECIBO.AsString + '.pdf');
frRecibo.SaveToFile(ExtractFilePath(Application.ExeName) + nr_recibo_print
+ '.pdf');
frmAtendimento.log_recibo.Add('Caminho salvo no local: ' +
ExtractFilePath(Application.ExeName) + nr_recibo_print + '.pdf');
path := dtmSystem.path_executavel + '\RECIBOS';
if not DirectoryExists(path) then
begin
CreateDir(path);
end;
path := TrimRight(path);
path := path + '\' + FormatDateTime('YYYY', Date);
if not DirectoryExists(path) then
begin
CreateDir(path);
end;
// path := path + '\' + FormatDateTime('mmmm', Date, Fmt);
path := path + '\' + meses[MonthOf(Date)];
if not DirectoryExists(path) then
begin
CreateDir(path);
end;
path := path + '\' + FormatDateTime('dd', Date);
if not DirectoryExists(path) then
begin
CreateDir(path);
end;
// file_name := path + '\' + dtmSystem.tblReciboNR_RECIBO.AsString + '.pdf';
file_name := path + '\' + nr_recibo_print + '.pdf';
frmAtendimento.log_recibo.Add('Caminho do recibo no servidor: ' +
file_name);
// MoveFile(PChar(ExtractFilePath(Application.ExeName) +
// dtmSystem.tblReciboNR_RECIBO.AsString + '.pdf'), PChar(file_name));
MoveFile(PChar(ExtractFilePath(Application.ExeName) + nr_recibo_print +
'.pdf'), PChar(file_name));
// dtmSystem.tblRecibo.Edit;
// dtmSystem.tblReciboTX_CAMINHO.AsString := file_name;
// dtmSystem.tblRecibo.Post;
Except
on E: Exception do
begin
ShowMessage
('Erro ao tentar salvar o arquivo pdf. Por favor salve manualmente.' +
sLineBreak + 'Erro: ' + E.Message);
end;
end;
file_name := ExtractFilePath(Application.ExeName) + nr_recibo_print
+ '.pdf';
fr_filterpdf.FileName := file_name;
frRecibo.DefaultFilter := fr_filterpdf;
end;
end.