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.
484 lines
15 KiB
484 lines
15 KiB
unit ufrmBoleto;
|
|
|
|
interface
|
|
|
|
uses
|
|
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
|
|
System.Classes, Vcl.Graphics,
|
|
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, ACBrBoleto,
|
|
ACBrBoletoFCFortesFr, ACBrBase, ACBrUtil, Vcl.Grids, Vcl.DBGrids,
|
|
Vcl.StdCtrls,
|
|
Vcl.DBCtrls, Vcl.ComCtrls, rDBComponents, Vcl.Mask, Vcl.ExtCtrls, ACBrMail;
|
|
|
|
type
|
|
TfrmBoleto = class(TForm)
|
|
ACBrBoletoFCFortes: TACBrBoletoFCFortes;
|
|
dtsContas: TDataSource;
|
|
dtsTitulos: TDataSource;
|
|
GroupBox1: TGroupBox;
|
|
dbgrd_titulos: TDBGrid;
|
|
GroupBox2: TGroupBox;
|
|
Label1: TLabel;
|
|
Label2: TLabel;
|
|
Label3: TLabel;
|
|
Label4: TLabel;
|
|
Label5: TLabel;
|
|
Label6: TLabel;
|
|
edtLocalPag: TEdit;
|
|
edtEspecieDoc: TEdit;
|
|
edtEspecieMod: TEdit;
|
|
cbxAceite: TComboBox;
|
|
edtCarteira: TEdit;
|
|
edtNossoNro: TEdit;
|
|
ACBrBoleto: TACBrBoleto;
|
|
GroupBox3: TGroupBox;
|
|
Label7: TLabel;
|
|
Label8: TLabel;
|
|
Label9: TLabel;
|
|
Label10: TLabel;
|
|
Label11: TLabel;
|
|
Label12: TLabel;
|
|
Label13: TLabel;
|
|
Label14: TLabel;
|
|
edtValorDesconto: TEdit;
|
|
edtValorAbatimento: TEdit;
|
|
GroupBox4: TGroupBox;
|
|
Label15: TLabel;
|
|
Label16: TLabel;
|
|
memMensagem: TMemo;
|
|
edtInstrucoes1: TEdit;
|
|
edtInstrucoes2: TEdit;
|
|
Panel2: TPanel;
|
|
GroupBox5: TGroupBox;
|
|
Label17: TLabel;
|
|
Label18: TLabel;
|
|
Label19: TLabel;
|
|
Label20: TLabel;
|
|
edtNumeroDoc: TEdit;
|
|
GroupBox6: TGroupBox;
|
|
Label29: TLabel;
|
|
Panel1: TPanel;
|
|
Button2: TButton;
|
|
Button3: TButton;
|
|
Button4: TButton;
|
|
Button5: TButton;
|
|
Button6: TButton;
|
|
dbdtp_juros: TrDBDateTimePicker;
|
|
dbdtp_desc: TrDBDateTimePicker;
|
|
dtsCHGEmpresa: TDataSource;
|
|
dbedt_mora: TDBEdit;
|
|
dbedt_multa: TDBEdit;
|
|
dbedt_vltitulo: TDBEdit;
|
|
dtp_abatimento: TDateTimePicker;
|
|
dtp_protesto: TDateTimePicker;
|
|
dtp_emissao: TDateTimePicker;
|
|
dtp_vencimento: TDateTimePicker;
|
|
dtsDevedor: TDataSource;
|
|
dtsEnderecos: TDataSource;
|
|
dtsUF: TDataSource;
|
|
dtsCidades: TDataSource;
|
|
lbl_logradouro: TLabel;
|
|
dbedt_logradouro: TDBEdit;
|
|
lbl_num: TLabel;
|
|
dbedt_num: TDBEdit;
|
|
lbl_comp: TLabel;
|
|
dbedt_comp: TDBEdit;
|
|
lbl_bairro: TLabel;
|
|
dbedt_bairro: TDBEdit;
|
|
dblucmbox_uf: TDBLookupComboBox;
|
|
lbl_uf: TLabel;
|
|
dblucmbox_cidade: TDBLookupComboBox;
|
|
lbl_cidade: TLabel;
|
|
dbgrd_enderecos: TDBGrid;
|
|
dblucbx_contas: TDBLookupComboBox;
|
|
cbx_abatimento: TCheckBox;
|
|
dbedt_cep: TDBEdit;
|
|
cbx_protesto: TCheckBox;
|
|
btnenviaremail: TButton;
|
|
ACBrMail: TACBrMail;
|
|
rg_email: TRadioGroup;
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure dtsContasDataChange(Sender: TObject; Field: TField);
|
|
procedure dtsTitulosDataChange(Sender: TObject; Field: TField);
|
|
procedure Button4Click(Sender: TObject);
|
|
procedure dtsEnderecosDataChange(Sender: TObject; Field: TField);
|
|
procedure dtsCidadesDataChange(Sender: TObject; Field: TField);
|
|
procedure dtsUFDataChange(Sender: TObject; Field: TField);
|
|
procedure Button2Click(Sender: TObject);
|
|
procedure cbx_abatimentoClick(Sender: TObject);
|
|
procedure cbx_protestoClick(Sender: TObject);
|
|
procedure rg_emailClick(Sender: TObject);
|
|
procedure btnenviaremailClick(Sender: TObject);
|
|
procedure Button6Click(Sender: TObject);
|
|
procedure WMMoving(var MSG: TWMMoving); message WM_MOVING;
|
|
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
frmBoleto: TfrmBoleto;
|
|
|
|
implementation
|
|
|
|
{$R *.dfm}
|
|
|
|
uses udtmSystem;
|
|
|
|
procedure TfrmBoleto.btnenviaremailClick(Sender: TObject);
|
|
begin
|
|
try
|
|
case rg_email.ItemIndex of
|
|
0:
|
|
begin
|
|
try
|
|
with ACBrMail do
|
|
begin
|
|
Clear;
|
|
IsHTML := true;
|
|
Subject := 'Envio de boleto';
|
|
From := dtmSystem.tblEmpresaTX_EMAIL.AsString;
|
|
FromName := dtmSystem.tblEmpresaTX_EMAILNOME.AsString;
|
|
Host := dtmSystem.tblEmpresaTX_SMTP.AsString;
|
|
// troque pelo seu servidor smtp
|
|
Username := dtmSystem.tblEmpresaTX_USUARIO.AsString;
|
|
Password := dtmSystem.tblEmpresaTX_SENHA.AsString;
|
|
Port := dtmSystem.tblEmpresaTX_PORTA.AsString;
|
|
// troque pela porta do seu servidor smtp
|
|
SetTLS := true;
|
|
SetSSL := true;
|
|
// Verifique se o seu servidor necessita SSL
|
|
DefaultCharset := TMailCharset(0);
|
|
IDECharset := TMailCharset(0);
|
|
AddAddress(dtsDevedor.DataSet.FieldByName('TX_EMAIL').AsString,
|
|
dtsDevedor.DataSet.FieldByName('TX_NOME').AsString);
|
|
// ACBrMail1.AddCC('outro_email@gmail.com'); // opcional
|
|
// ACBrMail1.AddReplyTo('um_email'); // opcional
|
|
// ACBrMail1.AddBCC('um_email'); // opcional
|
|
// ACBrMail1.Priority := MP_high;
|
|
// ACBrMail1.ReadingConfirmation := True; // solicita confirmação de leitura
|
|
AddAttachment(ExtractFilePath(Application.ExeName) +
|
|
'BOLETOS\boleto.pdf', 'Boleto');
|
|
Application.ProcessMessages;
|
|
Screen.Cursor := crHourGlass;
|
|
Send(false);
|
|
Screen.Cursor := crDefault;
|
|
end;
|
|
finally
|
|
|
|
end;
|
|
end;
|
|
1:
|
|
begin
|
|
dtmSystem.tblUsuarios.Locate('ID_USUARIO', dtmSystem.id_usuario, []);
|
|
try
|
|
with ACBrMail do
|
|
begin
|
|
Clear;
|
|
IsHTML := true;
|
|
Subject := 'Envio de boleto';
|
|
From := dtmSystem.tblUsuariosTX_EMAIL.AsString;
|
|
FromName := dtmSystem.tblUsuariosTX_EMAILNOME.AsString;
|
|
Host := dtmSystem.tblUsuariosTX_SMTP.AsString;
|
|
// troque pelo seu servidor smtp
|
|
Username := dtmSystem.tblUsuariosTX_USUARIOEMAIL.AsString;
|
|
Password := dtmSystem.tblUsuariosTX_SENHAEMAIL.AsString;
|
|
Port := dtmSystem.tblUsuariosTX_PORTA.AsString;
|
|
// troque pela porta do seu servidor smtp
|
|
SetTLS := true;
|
|
SetSSL := true;
|
|
// Verifique se o seu servidor necessita SSL
|
|
DefaultCharset := TMailCharset(0);
|
|
IDECharset := TMailCharset(0);
|
|
AddAddress(dtsDevedor.DataSet.FieldByName('TX_EMAIL').AsString,
|
|
dtsDevedor.DataSet.FieldByName('TX_NOME').AsString);
|
|
// ACBrMail1.AddCC('outro_email@gmail.com'); // opcional
|
|
// ACBrMail1.AddReplyTo('um_email'); // opcional
|
|
// ACBrMail1.AddBCC('um_email'); // opcional
|
|
// ACBrMail1.Priority := MP_high;
|
|
// ACBrMail1.ReadingConfirmation := True; // solicita confirmação de leitura
|
|
AddAttachment(ExtractFilePath(Application.ExeName) +
|
|
'BOLETOS\boleto.pdf', 'Boleto');
|
|
Application.ProcessMessages;
|
|
Screen.Cursor := crHourGlass;
|
|
Send(false);
|
|
Screen.Cursor := crDefault;
|
|
end;
|
|
finally
|
|
|
|
end;
|
|
end;
|
|
end;
|
|
finally
|
|
btnenviaremail.Enabled := false;
|
|
rg_email.ItemIndex := -1;
|
|
DeleteFile(ExtractFilePath(Application.ExeName) + 'BOLETOS\boleto.pdf');
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmBoleto.Button2Click(Sender: TObject);
|
|
begin
|
|
if (ACBrBoleto.Banco.TipoCobranca = cobBradesco) and (edtLocalPag.text = '')
|
|
then
|
|
begin
|
|
MessageDlg
|
|
('O bradesco exige que você preencha a mensagem de local de pagamento.',
|
|
mtWarning, [mbOK], 0);
|
|
abort;
|
|
end;
|
|
if edtEspecieDoc.text = '' then
|
|
begin
|
|
MessageDlg('Por favor preencha a espécie do documento.', mtWarning,
|
|
[mbOK], 0);
|
|
abort;
|
|
end;
|
|
if edtEspecieMod.text = '' then
|
|
begin
|
|
MessageDlg('Por favor preencha o tipo de moeda.', mtWarning, [mbOK], 0);
|
|
abort;
|
|
end;
|
|
if edtCarteira.text = '' then
|
|
begin
|
|
MessageDlg('Por favor preencha o tipo de carteira.', mtWarning, [mbOK], 0);
|
|
abort;
|
|
end;
|
|
if edtNossoNro.text = '' then
|
|
begin
|
|
MessageDlg('Por favor preencha o nosso número.', mtWarning, [mbOK], 0);
|
|
abort;
|
|
end;
|
|
|
|
if not(DirectoryExists(ExtractFilePath(Application.ExeName) + 'BOLETOS')) then
|
|
begin
|
|
CreateDir(ExtractFilePath(Application.ExeName) + 'BOLETOS');
|
|
end;
|
|
ACBrBoletoFCFortes.NomeArquivo := ExtractFilePath(Application.ExeName) +
|
|
'BOLETOS\boleto.pdf';
|
|
|
|
try
|
|
ACBrBoleto.GerarPDF;
|
|
rg_email.Enabled := true;
|
|
finally
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
procedure TfrmBoleto.Button4Click(Sender: TObject);
|
|
var
|
|
Titulo: TACBrTitulo;
|
|
begin
|
|
Titulo := ACBrBoleto.CriarTituloNaLista;
|
|
|
|
with Titulo do
|
|
begin
|
|
Vencimento := dtp_vencimento.Date;
|
|
DataDocumento := dtp_emissao.Date;
|
|
NumeroDocumento := edtNumeroDoc.text;
|
|
EspecieDoc := edtEspecieDoc.text;
|
|
// if cbxAceite.ItemIndex = 0 then
|
|
// Aceite := atSim
|
|
// else
|
|
// Aceite := atNao;
|
|
|
|
DataProcessamento := Now;
|
|
Carteira := edtCarteira.text;
|
|
NossoNumero := edtNossoNro.text;
|
|
ValorDocumento := dtsTitulos.DataSet.FieldByName('VL_TITULO').AsCurrency;
|
|
Sacado.NomeSacado := dtsDevedor.DataSet.FieldByName('TX_NOME').AsString;
|
|
if dtsDevedor.DataSet.FieldByName('CD_CPF').AsString <> '' then
|
|
begin
|
|
Sacado.CNPJCPF := OnlyNumber(dtsDevedor.DataSet.FieldByName('CD_CPF')
|
|
.AsString);
|
|
end
|
|
else
|
|
begin
|
|
Sacado.CNPJCPF := OnlyNumber(dtsDevedor.DataSet.FieldByName('CD_CNPJ')
|
|
.AsString);
|
|
end;
|
|
Sacado.Logradouro := dtsEnderecos.DataSet.FieldByName
|
|
('TX_LOGRADOURO').AsString;
|
|
Sacado.Numero := dtsEnderecos.DataSet.FieldByName('NR_NUMERO').AsString;
|
|
Sacado.Bairro := dtsEnderecos.DataSet.FieldByName('TX_BAIRRO').AsString;
|
|
Sacado.Cidade := dblucmbox_cidade.text;
|
|
Sacado.UF := dblucmbox_uf.text;
|
|
Sacado.CEP := OnlyNumber(dtsEnderecos.DataSet.FieldByName('TX_CEP')
|
|
.AsString);
|
|
ValorAbatimento := StrToCurrDef(edtValorAbatimento.text, 0);
|
|
LocalPagamento := edtLocalPag.text;
|
|
CodigoMora := '2';
|
|
ValorMoraJuros := dtsCHGEmpresa.DataSet.FieldByName('PR_JUROS').AsCurrency;
|
|
ValorDesconto := StrToCurrDef(edtValorDesconto.text, 0);
|
|
ValorAbatimento := StrToCurrDef(edtValorAbatimento.text, 0);
|
|
DataMoraJuros := dbdtp_juros.Date;
|
|
DataDesconto := dbdtp_desc.Date;
|
|
if cbx_abatimento.Checked then
|
|
begin
|
|
DataAbatimento := dtp_abatimento.Date;
|
|
end;
|
|
if cbx_protesto.Checked then
|
|
begin
|
|
DataProtesto := dtp_protesto.Date;
|
|
end;
|
|
PercentualMulta := dtsCHGEmpresa.DataSet.FieldByName('PR_JUROS').AsCurrency;
|
|
Mensagem.text := memMensagem.text;
|
|
OcorrenciaOriginal.Tipo := toRemessaBaixar;
|
|
Instrucao1 := PadRight(trim(edtInstrucoes1.text), 2, '0');
|
|
Instrucao2 := PadRight(trim(edtInstrucoes2.text), 2, '0');
|
|
// dm.ACBrBoleto.AdicionarMensagensPadroes(Titulo,Mensagem);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmBoleto.Button6Click(Sender: TObject);
|
|
begin
|
|
ACBrBoleto.GerarRemessa(1);
|
|
end;
|
|
|
|
procedure TfrmBoleto.cbx_abatimentoClick(Sender: TObject);
|
|
begin
|
|
edtValorAbatimento.Enabled := cbx_abatimento.Checked;
|
|
if not(cbx_abatimento.Checked) then
|
|
begin
|
|
edtValorAbatimento.text := '';
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmBoleto.cbx_protestoClick(Sender: TObject);
|
|
begin
|
|
dtp_protesto.Enabled := cbx_protesto.Checked;
|
|
end;
|
|
|
|
procedure TfrmBoleto.dtsCidadesDataChange(Sender: TObject; Field: TField);
|
|
begin
|
|
if (dtmSystem.tblEnderecosID_CIDADE.AsVariant >= 0) then
|
|
begin
|
|
dblucmbox_cidade.KeyValue := dtmSystem.tblEnderecosID_CIDADE.AsVariant;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmBoleto.dtsContasDataChange(Sender: TObject; Field: TField);
|
|
begin
|
|
ACBrBoleto.Banco.TipoCobranca :=
|
|
TACBrTipoCobranca(dtsContas.DataSet.FieldByName('ID_BANCO').AsInteger);
|
|
with ACBrBoleto.Cedente do
|
|
begin
|
|
Agencia := dtsContas.DataSet.FieldByName('CD_AGENCIA').AsString;
|
|
AgenciaDigito := dtsContas.DataSet.FieldByName('CD_AGENCIA_DV').AsString;
|
|
// CNPJCPF := dtmSystem.tblEmpresaTX_CNPJ.AsString;
|
|
CodigoCedente := dtsContas.DataSet.FieldByName('CD_CEDENTE').AsString;
|
|
Conta := dtsContas.DataSet.FieldByName('CD_CONTA').AsString;
|
|
ContaDigito := dtsContas.DataSet.FieldByName('CD_CONTA_DV').AsString;
|
|
Convenio := dtsContas.DataSet.FieldByName('CD_CONVENIO').AsString;
|
|
Modalidade := dtsContas.DataSet.FieldByName('CD_MODALIDADE').AsString;;
|
|
Nome := dtmSystem.tblEmpresaTX_NOME.AsString;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmBoleto.dtsEnderecosDataChange(Sender: TObject; Field: TField);
|
|
begin
|
|
if (dtmSystem.tblEnderecosID_ESTADO.AsVariant >= 0) then
|
|
begin
|
|
dblucmbox_uf.KeyValue := dtmSystem.tblEstadosID_ESTADO.AsVariant;
|
|
end;
|
|
|
|
if (dtmSystem.tblEnderecosID_CIDADE.AsVariant >= 0) then
|
|
begin
|
|
dblucmbox_cidade.KeyValue := dtmSystem.tblCidadesID_CIDADE.AsVariant;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmBoleto.dtsTitulosDataChange(Sender: TObject; Field: TField);
|
|
begin
|
|
dtmSystem.tblCHGEmpresa.Locate('ID_EMPRESA',
|
|
dtsTitulos.DataSet.FieldByName('ID_EMPRESA').AsInteger, []);
|
|
edtNumeroDoc.text := PadLeft(dtsTitulos.DataSet.FieldByName('ID_TITULO')
|
|
.AsString, 10, '0');
|
|
end;
|
|
|
|
procedure TfrmBoleto.dtsUFDataChange(Sender: TObject; Field: TField);
|
|
begin
|
|
if (dtmSystem.tblEnderecosID_ESTADO.AsVariant >= 0) then
|
|
begin
|
|
dblucmbox_uf.KeyValue := dtmSystem.tblEstadosID_ESTADO.AsVariant;
|
|
end;
|
|
if (dtmSystem.tblEnderecosID_CIDADE.AsVariant >= 0) then
|
|
begin
|
|
dblucmbox_cidade.KeyValue := dtmSystem.tblCidadesID_CIDADE.AsVariant;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmBoleto.FormCreate(Sender: TObject);
|
|
begin
|
|
with dtmSystem do
|
|
begin
|
|
if not(tblCHGEmpresa.Active) then
|
|
begin
|
|
tblCHGEmpresa.Open;
|
|
end;
|
|
if not(tblTitulos.Active) then
|
|
begin
|
|
tblTitulos.Open;
|
|
end;
|
|
// tblContas.Filter := 'TP_SITUACAO = 1';
|
|
// tblContas.Filtered := true;
|
|
|
|
tblTitulos.Filter := 'TP_SITUACAO = ''A''';
|
|
tblTitulos.Filtered := true;
|
|
|
|
end;
|
|
if not(DirectoryExists(ExtractFilePath(Application.ExeName) + 'REMESSAS'))
|
|
then
|
|
begin
|
|
ForceDirectories(ExtractFilePath(Application.ExeName) + 'REMESSAS');
|
|
end;
|
|
ACBrBoleto.DirArqRemessa := ExtractFilePath(Application.ExeName) + 'REMESSAS';
|
|
end;
|
|
|
|
procedure TfrmBoleto.FormKeyDown(Sender: TObject; var Key: Word;
|
|
Shift: TShiftState);
|
|
begin
|
|
if Key = VK_ESCAPE then
|
|
begin
|
|
Key := 0;
|
|
Close;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmBoleto.rg_emailClick(Sender: TObject);
|
|
begin
|
|
if rg_email.ItemIndex < 0 then
|
|
begin
|
|
btnenviaremail.Enabled := false;
|
|
end
|
|
else
|
|
begin
|
|
btnenviaremail.Enabled := true;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmBoleto.WMMoving(var MSG: TWMMoving);
|
|
var
|
|
workArea: TRect;
|
|
begin
|
|
workArea := Screen.WorkareaRect;
|
|
|
|
with MSG.DragRect^ do
|
|
begin
|
|
if left < workArea.left then
|
|
OffsetRect(MSG.DragRect^, workArea.left - left, 0);
|
|
|
|
if top < workArea.top then
|
|
OffsetRect(MSG.DragRect^, 0, workArea.top - top);
|
|
|
|
if Right > workArea.Right then
|
|
OffsetRect(MSG.DragRect^, workArea.Right - Right, 0);
|
|
|
|
if Bottom > workArea.Bottom then
|
|
OffsetRect(MSG.DragRect^, 0, workArea.Bottom - Bottom);
|
|
end;
|
|
|
|
end;
|
|
|
|
end.
|