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.