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

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.