unit ufrmMandaMensagem; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, System.StrUtils, System.DateUtils, System.UITypes, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, umstMaster, Data.DB, ACBrBase, ACBrMail, ZAbstractRODataset, ZAbstractDataset, ZDataset, Vcl.StdCtrls, Vcl.ComCtrls, Vcl.DBCtrls, Vcl.Grids, Vcl.DBGrids, Vcl.ExtCtrls, Vcl.CheckLst; type TfrmMandaMensagem = class(TmstMaster) dbg_textoemail: TDBGrid; btn_pesquisa: TButton; pb_pesquisa: TProgressBar; dbre_textomensagem: TDBRichEdit; dtsTextoEmail: TDataSource; dtsQPesquisa: TDataSource; QPesquisa: TZQuery; dbg_pesquisa: TDBGrid; ACBrMail: TACBrMail; rg_email: TRadioGroup; btn_mandaemail: TButton; edt_assunto: TEdit; Label1: TLabel; sbx_filtro: TScrollBox; pnl_providências: TPanel; Label5: TLabel; Label6: TLabel; cb_providencias: TCheckBox; clb_providencias: TCheckListBox; pnl_filtroprov: TPanel; rg_filtroprov: TRadioGroup; dtp_provin: TDateTimePicker; dtp_provfim: TDateTimePicker; cb_periodoprov: TCheckBox; cb_bacalhau: TCheckBox; edt_pprov: TEdit; cb_cobradoresprov: TCheckBox; edt_puserprov: TEdit; clb_usuariosprov: TCheckListBox; pnl_beneficiarios: TPanel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; cb_beneficiarios: TCheckBox; clb_beneficiarios: TCheckListBox; edt_pcredor: TEdit; cb_credorentrada: TCheckBox; dtp_credorentrada1: TDateTimePicker; dtp_credorentrada2: TDateTimePicker; cb_credorvencimento: TCheckBox; dtp_credorvenc1: TDateTimePicker; dtp_credorvenc2: TDateTimePicker; cb_credortptitulo: TCheckBox; Panel3: TPanel; rg_credortptitulo: TRadioGroup; pnl_agendamento: TPanel; lbl_agendcomeco: TLabel; lbl_agendfim: TLabel; cb_agendamento: TCheckBox; dtp_agendcomeco: TDateTimePicker; dtp_agendfim: TDateTimePicker; clb_usuariosagenda: TCheckListBox; cb_cobradoresagenda: TCheckBox; edt_puseragenda: TEdit; Panel2: TPanel; rg_agendamento: TRadioGroup; pnl_alfabeto: TPanel; Label7: TLabel; Label8: TLabel; cb_faixanome: TCheckBox; edt_nomein: TEdit; edt_nomefim: TEdit; pnl_atraso: TPanel; Label9: TLabel; Label10: TLabel; cb_atraso: TCheckBox; edt_atrasoin: TEdit; edt_atrasofim: TEdit; pnl_tipopessoa: TPanel; cb_tipopessoa: TCheckBox; Panel1: TPanel; rg_tipopessoa: TRadioGroup; QPesquisaTX_NOME: TWideStringField; QPesquisaTX_DOCUMENTO: TWideStringField; QPesquisaTX_EMAIL: TWideStringField; dblulb_provs: TDBLookupComboBox; lbl_prov: TLabel; cb_retornaprov: TCheckBox; QPesquisaID_DEVEDOR: TIntegerField; Label2: TLabel; mb_log: TMemo; lbl_resultado: TLabel; procedure btn_pesquisaClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure cb_beneficiariosClick(Sender: TObject); procedure cb_providenciasClick(Sender: TObject); procedure cb_periodoprovClick(Sender: TObject); procedure cb_cobradoresClick(Sender: TObject); procedure cb_faixavalorClick(Sender: TObject); procedure cb_entradaClick(Sender: TObject); procedure cb_agendamentoClick(Sender: TObject); procedure cb_faixanomeClick(Sender: TObject); procedure cb_atrasoClick(Sender: TObject); procedure cb_tipopessoaClick(Sender: TObject); procedure clb_beneficiariosClickCheck(Sender: TObject); procedure clb_providenciasClickCheck(Sender: TObject); procedure btn_mandaemailClick(Sender: TObject); procedure Button1Click(Sender: TObject); procedure edt_pcredorChange(Sender: TObject); procedure edt_pprovChange(Sender: TObject); procedure cb_credorentradaClick(Sender: TObject); procedure cb_credorvencimentoClick(Sender: TObject); procedure cb_credortptituloClick(Sender: TObject); procedure cb_cobradoresprovClick(Sender: TObject); procedure edt_puserprovClick(Sender: TObject); procedure clb_usuariosprovClickCheck(Sender: TObject); procedure rg_agendamentoClick(Sender: TObject); procedure cb_cobradoresagendaClick(Sender: TObject); procedure edt_puseragendaChange(Sender: TObject); procedure clb_usuariosagendaClickCheck(Sender: TObject); private procedure AdjustCheckListBox(var CB: TCheckListBox); procedure marca_todos(clb: TCheckListBox); { Private declarations } public { Public declarations } end; var frmMandaMensagem: TfrmMandaMensagem; implementation {$R *.dfm} uses udtmSystem; { TfrmMandaEmail } procedure TfrmMandaMensagem.AdjustCheckListBox(var CB: TCheckListBox); var i, nMaxWidth, nItemWidth: Integer; begin nMaxWidth := CB.ClientWidth; for i := 0 to CB.Items.Count - 1 do begin nItemWidth := CB.Canvas.TextWidth(CB.Items[i]) + 20; if (nItemWidth > nMaxWidth) then nMaxWidth := nItemWidth; end; if (nMaxWidth > CB.ClientWidth) then begin CB.ScrollWidth := nMaxWidth; end; end; procedure TfrmMandaMensagem.btn_mandaemailClick(Sender: TObject); begin if edt_assunto.Text = '' then begin MessageDlg('Por favor especifique um assunto antes de enviar os e-mails.', mtWarning, [mbOK], 0); abort; end; // if dblulb_provs.KeyValue < 0 then // begin // MessageDlg // ('Por favor selecione a providência a ser lançada antes de enviar os e-mails.', // mtWarning, [mbOK], 0); // abort; // end; Screen.Cursor := crHourGlass; QPesquisa.DisableControls; QPesquisa.First; pb_pesquisa.Position := 0; pb_pesquisa.Max := QPesquisa.RecordCount; pb_pesquisa.Step := 1; // safe := 'teste1'; // if safe <> 'teste' then // begin mb_log.lines.add('Iniciando envio de emails.'); while not QPesquisa.Eof do begin // enviou := true; try case rg_email.ItemIndex of 0: // Empresa begin with ACBrMail do begin Clear; IsHTML := true; Subject := edt_assunto.Text; From := dtmSystem.tblEmpresaTX_EMAIL.AsString; FromName := dtmSystem.tblEmpresaTX_EMAILNOME.AsString; Host := dtmSystem.tblEmpresaTX_SMTP.AsString; Username := dtmSystem.tblEmpresaTX_USUARIO.AsString; Password := dtmSystem.tblEmpresaTX_SENHA.AsString; Port := dtmSystem.tblEmpresaTX_PORTA.AsString; if dtmSystem.tblEmpresaTP_TLS.AsString = 'S' then begin SetTLS := true; end else begin SetTLS := false; end; if dtmSystem.tblEmpresaTP_SSL.AsString = 'S' then begin SetSSL := true; end else begin SetSSL := false; end; DefaultCharset := TMailCharset(0); IDECharset := TMailCharset(0); AddAddress(QPesquisaTX_EMAIL.AsString, QPesquisaTX_NOME.AsString); Body.Text := stringreplace(dtsTextoEmail.DataSet.FieldByName('TL_TEXTO') .AsString, '% DEVEDOR %', QPesquisaTX_NOME.AsString, [rfReplaceAll]); Screen.Cursor := crHourGlass; Send(false); Screen.Cursor := crDefault; end; end; 1: // Usuário begin dtmSystem.tblUsuariosConsulta.Locate('ID_USUARIO', dtmSystem.id_usuario, []); with ACBrMail do begin Clear; IsHTML := true; Subject := edt_assunto.Text; From := dtmSystem.tblUsuariosConsultaTX_EMAIL.AsString; FromName := dtmSystem.tblUsuariosConsultaTX_EMAILNOME.AsString; Host := dtmSystem.tblUsuariosConsultaTX_SMTP.AsString; Username := dtmSystem.tblUsuariosConsultaTX_USUARIOEMAIL.AsString; Password := dtmSystem.tblUsuariosConsultaTX_SENHAEMAIL.AsString; Port := dtmSystem.tblUsuariosConsultaTX_PORTA.AsString; if dtmSystem.tblUsuariosConsultaTP_TLS.AsString = 'S' then begin SetTLS := true; end else begin SetTLS := false; end; if dtmSystem.tblUsuariosConsultaTP_SSL.AsString = 'S' then begin SetSSL := true; end else begin SetSSL := false; end; DefaultCharset := TMailCharset(0); IDECharset := TMailCharset(0); AddAddress(QPesquisaTX_EMAIL.AsString, QPesquisaTX_NOME.AsString); Body.Text := stringreplace(dtsTextoEmail.DataSet.FieldByName('TL_TEXTO') .AsString, '% DEVEDOR %', QPesquisaTX_NOME.AsString, [rfReplaceAll]); Screen.Cursor := crHourGlass; Send(false); Screen.Cursor := crDefault; end; end; end; Application.ProcessMessages; mb_log.lines.add('Email enviado com sucesso.'); except on E: Exception do begin // enviou := false; mb_log.lines.add('Falha ao enviar email. Devedor: ' + QPesquisaTX_NOME.AsString); mb_log.lines.add(E.ClassName + ' error raised, with message : ' + E.Message); end; end; sleep(750); QPesquisa.Next; pb_pesquisa.StepIt; end; // end; QPesquisa.First; QPesquisa.EnableControls; cb_retornaprov.Checked := false; mb_log.lines.add('Fim do processo de envio.'); Screen.Cursor := crDefault; end; procedure TfrmMandaMensagem.btn_pesquisaClick(Sender: TObject); var string_selecionados, dt_inicio, dt_fim: string; i: Integer; begin if (not cb_beneficiarios.Checked) and (not cb_providencias.Checked) and (not cb_agendamento.Checked) and (not cb_faixanome.Checked) and (not cb_atraso.Checked) and (not cb_tipopessoa.Checked) then begin MessageDlg('Por favor escolha um filtro para a pesquisa.', mtWarning, [mbOK], 0); abort; end; lbl_resultado.caption := 'Resultado: '; string_selecionados := ''; mb_log.lines.Clear; mb_log.lines.add('Montado a Pesquisa.'); // começa o sofrimento QPesquisa.SQL.Clear; with QPesquisa.SQL do // início dasql begin add('select'); add('d.tx_nome, t.id_devedor,'); add('case when d.tp_cliente = ' + QuotedStr('F') + ' then d.cd_cpf'); add('when d.tp_cliente = ' + QuotedStr('J') + ' then d.cd_cnpj'); add('end as tx_documento'); add(',e.tx_email'); add('from chg_titulos t'); add('left join chg_devedores d on d.id_devedor = t.id_devedor'); add('left join chg_emails e on t.id_devedor = e.id_devedor'); add('where'); add('char_length(e.tx_email) > 3 and'); end; if cb_beneficiarios.Checked then // se beneficiarios tá selecionado begin for i := 1 to clb_beneficiarios.Items.Count - 1 do begin if clb_beneficiarios.Checked[i] then begin dtmSystem.tblCHGEmpresa.RecNo := i; string_selecionados := string_selecionados + dtmSystem.tblCHGEmpresaID_EMPRESA.AsString + ','; end; end; string_selecionados := LeftStr(string_selecionados, length(string_selecionados) - 1); with QPesquisa.SQL do begin add('t.id_empresa in '); add('(' + string_selecionados + ')'); if cb_credorentrada.Checked then begin dt_inicio := DateToStr(dtp_credorentrada1.Date); dt_inicio := RightStr(dt_inicio, 4) + '-' + copy(dt_inicio, 4, 2) + '-' + LeftStr(dt_inicio, 2); dt_fim := DateToStr(dtp_credorentrada2.Date); dt_fim := RightStr(dt_fim, 4) + '-' + copy(dt_fim, 4, 2) + '-' + LeftStr(dt_fim, 2); add('and'); add('cast(t.dt_entrada as date) >= ' + QuotedStr(dt_inicio) + ' and '); add('cast(t.dt_entrada as date) <= ' + QuotedStr(dt_fim)); end; if cb_credorvencimento.Checked then begin dt_inicio := DateToStr(dtp_credorvenc1.Date); dt_inicio := RightStr(dt_inicio, 4) + '-' + copy(dt_inicio, 4, 2) + '-' + LeftStr(dt_inicio, 2); dt_fim := DateToStr(dtp_credorvenc2.Date); dt_fim := RightStr(dt_fim, 4) + '-' + copy(dt_fim, 4, 2) + '-' + LeftStr(dt_fim, 2); add('and'); add('cast(t.dt_vencimento as date) >= ' + QuotedStr(dt_inicio) + ' and '); add('cast(t.dt_vencimento as date) <= ' + QuotedStr(dt_fim)); end; if cb_credortptitulo.Checked then begin add('and'); case rg_credortptitulo.ItemIndex of 0: begin add('t.TP_SITUACAO <> ' + QuotedStr('Ç')); end; 1: begin add('(t.TP_SITUACAO = ' + QuotedStr('A') + 'or t.TP_SITUACAO = ' + QuotedStr('AC') + ')'); end; 2: begin add('(t.TP_SITUACAO = ' + QuotedStr('B') + ' OR '); add('t.TP_SITUACAO = ' + QuotedStr('QC') + ' OR '); add('t.TP_SITUACAO = ' + QuotedStr('QB') + ')'); end; end; end; add('and '); end; string_selecionados := ''; end; if cb_providencias.Checked then // se providências ta selecionado begin for i := 1 to clb_providencias.Items.Count - 1 do begin if clb_providencias.Checked[i] then begin dtmSystem.tblProvidencias.RecNo := i; string_selecionados := string_selecionados + dtmSystem.tblProvidenciasID_PROVIDENCIA.AsString + ','; end; end; string_selecionados := LeftStr(string_selecionados, length(string_selecionados) - 1); if rg_filtroprov.ItemIndex >= 0 then // se escolheu algum filtro begin case rg_filtroprov.ItemIndex of 0: // contenha providencia begin with QPesquisa.SQL do begin add('t.id_devedor in'); add('(select h.id_devedor from chg_historico h'); add('where h.id_providencia in'); add('(' + string_selecionados + ')'); end; end; 1: // não contenha begin with QPesquisa.SQL do begin add('t.id_devedor not in'); add('(select h.id_devedor from chg_historico h'); add('where h.id_providencia in'); add('(' + string_selecionados + ')'); end; end; 2: // seja a última providencia lançada begin with QPesquisa.SQL do begin add('t.id_devedor in'); add('(select h.id_devedor from chg_historico h'); add('inner join (SELECT h.id_devedor, MAX(h.ID_HISTORICO) AS MAXHIST FROM CHG_HISTORICO h'); add('group by id_devedor)'); add('hist on hist.id_devedor = h.id_devedor and h.id_historico = hist.maxhist'); add('where h.id_providencia in'); add('(' + string_selecionados + ')'); end; end; 3: // positivas begin with QPesquisa.SQL do begin add('t.id_devedor in'); add('(select h.id_devedor from chg_historico h'); add('where'); add('h.id_providencia in'); add('(select p.id_providencia from chg_providencias p where'); add('p.tp_providencia = ' + QuotedStr('Positiva') + ')'); end; end; 4: // negativas begin with QPesquisa.SQL do begin add('t.id_devedor in'); add('(select h.id_devedor from chg_historico h'); add('where'); add('h.id_providencia in'); add('(select p.id_providencia from chg_providencias p where'); add('p.tp_providencia = ' + QuotedStr('Negativa') + ')'); end; end; end; if cb_periodoprov.Checked then // se escolheu um período de lançamento da providencia begin dt_inicio := DateToStr(dtp_provin.Date); dt_inicio := RightStr(dt_inicio, 4) + '-' + copy(dt_inicio, 4, 2) + '-' + LeftStr(dt_inicio, 2); dt_fim := DateToStr(dtp_provfim.Date); dt_fim := RightStr(dt_fim, 4) + '-' + copy(dt_fim, 4, 2) + '-' + LeftStr(dt_fim, 2); with QPesquisa.SQL do begin add('and '); add('cast(h.dt_contato as date) >= ' + QuotedStr(dt_inicio)); add('and '); add('cast(h.dt_contato as date) <= ' + QuotedStr(dt_fim)); end; end; if cb_cobradoresprov.Checked then begin for i := 1 to clb_usuariosprov.Items.Count - 1 do begin if clb_usuariosprov.Checked[i] then begin dtmSystem.tblUsuariosConsulta.RecNo := i; string_selecionados := string_selecionados + dtmSystem.tblUsuariosConsultaID_USUARIO.AsString + ','; end; end; string_selecionados := LeftStr(string_selecionados, length(string_selecionados) - 1); with QPesquisa.SQL do begin add('and '); add('t.id_devedor in'); add('(select h.id_devedor from chg_historico h'); add('where h.id_cobrador in'); add('(' + string_selecionados + '))'); end; end; with QPesquisa.SQL do begin add(') '); add('and'); end; string_selecionados := ''; end; end; if cb_tipopessoa.Checked then // tipo de pessoa begin with QPesquisa.SQL do begin case rg_tipopessoa.ItemIndex of 0: begin add('d.tp_cliente = ' + QuotedStr('F')); add('and '); end; 1: begin add('d.tp_cliente = ' + QuotedStr('J')); add('and '); end; end; end; end; if cb_agendamento.Checked then // Agendamento begin with QPesquisa.SQL do begin case rg_agendamento.ItemIndex of 0: begin end; 1: begin add('t.id_devedor in'); add('(select a.id_devedor from chg_agenda a where a.tp_situacao = ' + QuotedStr('A') + ')'); add('and '); end; 2: begin dt_inicio := DateToStr(dtp_agendcomeco.Date); dt_inicio := RightStr(dt_inicio, 4) + '-' + copy(dt_inicio, 4, 2) + '-' + LeftStr(dt_inicio, 2); dt_fim := DateToStr(dtp_agendfim.Date); dt_fim := RightStr(dt_fim, 4) + '-' + copy(dt_fim, 4, 2) + '-' + LeftStr(dt_fim, 2); add('t.id_devedor in'); add('(select a.id_devedor from chg_agenda a where a.tp_situacao = ' + QuotedStr('A')); add('and '); add('cast(dt_agendada as date) >= ' + QuotedStr(dt_inicio) + ' '); add('and '); add('cast(dt_agendada as date) <= ' + QuotedStr(dt_fim) + ')'); add('and '); end; 3: begin add('t.id_devedor in'); add('(select a.id_devedor from chg_agenda a where a.tp_situacao = ' + QuotedStr('A')); add('and '); add('a.dt_agendada <= ' + QuotedStr(FormatDateTime('YYYY-MM-DD', Date)) + ')'); add('and '); end; 4: begin add('t.id_devedor not in'); add('(select a.id_devedor from chg_agenda a where tp_situacao = ' + QuotedStr('A') + ')'); add('and '); end; end; end; end; if cb_faixanome.Checked then // faixa de nomes begin with QPesquisa.SQL do begin // Upper(d.TX_NOME) similar to '[A-M]_*' add('Upper(d.TX_NOME) similar to ' + '''[' + edt_nomein.Text + '-' + edt_nomefim.Text + ']_*'''); add('and '); end; end; if cb_atraso.Checked then // dias de atraso no título begin with QPesquisa.SQL do begin // datediff(day,t.dt_vencimento,cast('now' as date)) >= 1 add('datediff(day,cast(t.dt_vencimento as date),cast(''now'' as date)) >= ' + edt_atrasoin.Text); add('and '); add('datediff(day,cast(t.dt_vencimento as date),cast(''now'' as date)) <= ' + edt_atrasofim.Text); add('and '); end; end; QPesquisa.SQL.Delete(QPesquisa.SQL.Count - 1); QPesquisa.SQL.add ('group by d.tx_nome, tx_documento, e.tx_email, t.id_devedor'); QPesquisa.SQL.add('order by d.tx_nome'); Screen.Cursor := crHourGlass; mb_log.lines.add('Iniciando a Pesquisa.'); QPesquisa.Open; QPesquisa.First; Screen.Cursor := crDefault; if QPesquisa.RecordCount > 0 then begin QPesquisa.First; lbl_resultado.caption := 'Resultado: ' + inttostr(QPesquisa.RecordCount) + ' emails.'; end; mb_log.lines.add('Pesquisa realizada.'); end; procedure TfrmMandaMensagem.Button1Click(Sender: TObject); begin with ACBrMail do begin Clear; // IsHTML := false; IsHTML := true; Subject := edt_assunto.Text; From := dtmSystem.tblEmpresaTX_EMAIL.AsString; FromName := dtmSystem.tblEmpresaTX_EMAILNOME.AsString; Host := dtmSystem.tblEmpresaTX_SMTP.AsString; Username := dtmSystem.tblEmpresaTX_USUARIO.AsString; Password := dtmSystem.tblEmpresaTX_SENHA.AsString; Port := dtmSystem.tblEmpresaTX_PORTA.AsString; SetTLS := true; SetSSL := true; DefaultCharset := TMailCharset(0); IDECharset := TMailCharset(0); AddAddress('marcus@nexverse.com.br', 'marcus'); Body.Text := stringreplace(dbre_textomensagem.Text, '% DEVEDOR %', QPesquisaTX_NOME.AsString, [rfReplaceAll]); Application.ProcessMessages; Screen.Cursor := crHourGlass; Send(false); Screen.Cursor := crDefault; end; end; procedure TfrmMandaMensagem.cb_agendamentoClick(Sender: TObject); begin case cb_agendamento.Checked of true: begin rg_agendamento.Enabled := cb_agendamento.Checked; cb_cobradoresagenda.Enabled := cb_agendamento.Checked; end; false: begin rg_agendamento.Enabled := cb_agendamento.Checked; cb_cobradoresagenda.Enabled := cb_agendamento.Checked; edt_puseragenda.Enabled := cb_agendamento.Checked; clb_usuariosagenda.Enabled := cb_agendamento.Checked; end; end; end; procedure TfrmMandaMensagem.cb_atrasoClick(Sender: TObject); begin edt_atrasoin.Enabled := cb_atraso.Checked; edt_atrasofim.Enabled := cb_atraso.Checked; end; procedure TfrmMandaMensagem.cb_beneficiariosClick(Sender: TObject); begin case cb_beneficiarios.Checked of true: begin clb_beneficiarios.Enabled := cb_beneficiarios.Checked; edt_pcredor.Enabled := cb_beneficiarios.Checked; cb_credorentrada.Enabled := cb_beneficiarios.Checked; cb_credorvencimento.Enabled := cb_beneficiarios.Checked; cb_credortptitulo.Enabled := cb_beneficiarios.Checked; end; false: begin clb_beneficiarios.Enabled := cb_beneficiarios.Checked; edt_pcredor.Enabled := cb_beneficiarios.Checked; cb_credorentrada.Enabled := cb_beneficiarios.Checked; cb_credorentrada.Checked := cb_beneficiarios.Checked; dtp_credorentrada1.Enabled := cb_beneficiarios.Checked; dtp_credorentrada2.Enabled := cb_beneficiarios.Checked; cb_credorvencimento.Enabled := cb_beneficiarios.Checked; cb_credorvencimento.Checked := cb_beneficiarios.Checked; dtp_credorvenc1.Enabled := cb_beneficiarios.Checked; dtp_credorvenc2.Enabled := cb_beneficiarios.Checked; cb_credortptitulo.Enabled := cb_beneficiarios.Checked; rg_credortptitulo.ItemIndex := -1; end; end; end; procedure TfrmMandaMensagem.cb_cobradoresagendaClick(Sender: TObject); begin edt_puseragenda.Enabled := cb_cobradoresagenda.Checked; clb_usuariosagenda.Enabled := cb_cobradoresagenda.Checked; end; procedure TfrmMandaMensagem.cb_cobradoresClick(Sender: TObject); begin // clb_usuarios.Enabled := cb_cobradores.Checked; // edt_puser.Enabled := cb_cobradores.Enabled; end; procedure TfrmMandaMensagem.cb_cobradoresprovClick(Sender: TObject); begin edt_puserprov.Enabled := cb_cobradoresprov.Checked; clb_usuariosprov.Enabled := cb_cobradoresprov.Checked; end; procedure TfrmMandaMensagem.cb_credorentradaClick(Sender: TObject); begin dtp_credorentrada1.Enabled := cb_credorentrada.Checked; dtp_credorentrada2.Enabled := cb_credorentrada.Checked; end; procedure TfrmMandaMensagem.cb_credortptituloClick(Sender: TObject); begin rg_credortptitulo.Enabled := cb_credortptitulo.Checked; end; procedure TfrmMandaMensagem.cb_credorvencimentoClick(Sender: TObject); begin dtp_credorvenc1.Enabled := cb_credorvencimento.Checked; dtp_credorvenc2.Enabled := cb_credorvencimento.Checked; end; procedure TfrmMandaMensagem.cb_entradaClick(Sender: TObject); begin // if cb_entrada.Checked = true then // begin // dtp_entradacomeco.Enabled := true; // dtp_entradafim.Enabled := true; // end // else // begin // dtp_entradacomeco.Enabled := false; // dtp_entradafim.Enabled := false; // end; end; procedure TfrmMandaMensagem.cb_faixanomeClick(Sender: TObject); begin edt_nomein.Enabled := cb_faixanome.Checked; edt_nomefim.Enabled := cb_faixanome.Checked; end; procedure TfrmMandaMensagem.cb_faixavalorClick(Sender: TObject); begin // edt_faixain.Enabled := cb_faixavalor.Checked; // edt_faixafim.Enabled := cb_faixavalor.Checked; end; procedure TfrmMandaMensagem.cb_periodoprovClick(Sender: TObject); begin dtp_provin.Enabled := cb_periodoprov.Checked; dtp_provfim.Enabled := cb_periodoprov.Checked; end; procedure TfrmMandaMensagem.cb_providenciasClick(Sender: TObject); begin case cb_providencias.Checked of true: begin clb_providencias.Enabled := cb_providencias.Checked; edt_pprov.Enabled := cb_providencias.Checked; rg_filtroprov.Enabled := cb_providencias.Checked; cb_periodoprov.Enabled := cb_providencias.Checked; cb_cobradoresprov.Enabled := cb_providencias.Checked; end; false: begin clb_providencias.Enabled := cb_providencias.Checked; edt_pprov.Enabled := cb_providencias.Checked; rg_filtroprov.Enabled := cb_providencias.Checked; dtp_provin.Enabled := cb_providencias.Checked; dtp_provfim.Enabled := cb_providencias.Checked; cb_periodoprov.Enabled := cb_providencias.Checked; cb_cobradoresprov.Enabled := cb_providencias.Checked; edt_puserprov.Enabled := cb_providencias.Checked; clb_usuariosprov.Enabled := cb_providencias.Checked; end; end; end; procedure TfrmMandaMensagem.cb_tipopessoaClick(Sender: TObject); begin rg_tipopessoa.Enabled := cb_tipopessoa.Checked; end; procedure TfrmMandaMensagem.clb_beneficiariosClickCheck(Sender: TObject); begin marca_todos(clb_beneficiarios); end; procedure TfrmMandaMensagem.clb_providenciasClickCheck(Sender: TObject); begin marca_todos(clb_providencias); end; procedure TfrmMandaMensagem.clb_usuariosagendaClickCheck(Sender: TObject); begin marca_todos(clb_usuariosagenda); end; procedure TfrmMandaMensagem.clb_usuariosprovClickCheck(Sender: TObject); begin marca_todos(clb_usuariosprov); end; procedure TfrmMandaMensagem.edt_pcredorChange(Sender: TObject); var i: Integer; begin for i := 0 to clb_beneficiarios.Items.Count do begin try if ContainsText(clb_beneficiarios.Items[i], edt_pcredor.Text) then begin clb_beneficiarios.ItemIndex := i; break; end; except break; end; end; end; procedure TfrmMandaMensagem.edt_pprovChange(Sender: TObject); var i: Integer; begin for i := 0 to clb_providencias.Items.Count do begin try if ContainsText(clb_providencias.Items[i], edt_pprov.Text) then begin clb_providencias.ItemIndex := i; break; end; except break; end; end; end; procedure TfrmMandaMensagem.edt_puseragendaChange(Sender: TObject); var i: Integer; begin for i := 0 to clb_usuariosagenda.Items.Count do begin try if ContainsText(clb_usuariosagenda.Items[i], edt_puseragenda.Text) then begin clb_usuariosagenda.ItemIndex := i; break; end; except break; end; end; end; procedure TfrmMandaMensagem.edt_puserprovClick(Sender: TObject); var i: Integer; begin for i := 0 to clb_usuariosprov.Items.Count do begin try if ContainsText(clb_usuariosprov.Items[i], edt_puserprov.Text) then begin clb_usuariosprov.ItemIndex := i; break; end; except break; end; end; end; procedure TfrmMandaMensagem.FormCreate(Sender: TObject); begin sbx_filtro.VertScrollBar.Position := 0; with dtmSystem do begin if not tblProvidencias.Active then begin tblProvidencias.Open; end else begin tblProvidencias.Refresh; end; if not tblDevedores.Active then begin tblDevedores.Open; end else begin tblDevedores.Refresh; end; if not tblHistorico.Active then begin tblHistorico.Open; end else begin tblHistorico.Refresh; end; if not(tblCHGEmpresa.Active) then begin tblCHGEmpresa.Open; end; tblCHGEmpresa.First; clb_beneficiarios.Items.add('Marcar Todos'); while not tblCHGEmpresa.Eof do // preenche o list box begin clb_beneficiarios.Items.add(tblCHGEmpresaTX_NOME.AsString); tblCHGEmpresa.Next; end; if not(tblUsuariosConsulta.Active) then begin tblUsuariosConsulta.Open; end; tblUsuariosConsulta.First; // clb_usuarios.Items.Add('Marcar Todos'); // while not tblUsuariosConsulta.Eof do // preenche o list box // begin // clb_usuarios.Items.Add(tblUsuariosConsultaTX_NOME.AsString); // tblUsuariosConsulta.Next; // end; if not(tblProvidencias.Active) then begin tblProvidencias.Open; end; tblProvidencias.First; clb_providencias.Items.add('Marcar Todos'); while not tblProvidencias.Eof do // preenche o list box begin clb_providencias.Items.add(tblProvidenciasTX_NOME.AsString); tblProvidencias.Next; end; if not tblTextoEmail.Active then begin tblTextoEmail.Open; end; dtp_agendcomeco.Enabled := false; dtp_agendfim.Enabled := false; end; dtp_provin.Date := Date; dtp_provfim.Date := Date; // dtp_vencicomeco.Date := Date; // dtp_vencifim.Date := Date; // dtp_entradacomeco.Date := Date; // dtp_entradafim.Date := Date; AdjustCheckListBox(clb_beneficiarios); AdjustCheckListBox(clb_providencias); // AdjustCheckListBox(clb_usuarios); end; procedure TfrmMandaMensagem.marca_todos(clb: TCheckListBox); var i, j: Integer; begin with clb do begin if Checked[ItemIndex] then begin Items.beginupdate; // marcou o marca todos, marca todos for i := 0 to Items.Count - 1 do begin if (ItemIndex = 0) and (Checked[i] = true) then begin for j := 1 to Items.Count - 1 do begin Checked[j] := true; end; end; Items.EndUpdate; end; end else begin Items.beginupdate; for i := 0 to Items.Count - 1 do // desmarcou o marca todos, desmarca todos begin if (ItemIndex = 0) and (Checked[i] = false) then begin for j := 1 to Items.Count - 1 do begin Checked[j] := false; end; end; Items.EndUpdate; end; end; end; end; procedure TfrmMandaMensagem.rg_agendamentoClick(Sender: TObject); begin if rg_agendamento.ItemIndex = 2 then begin dtp_agendcomeco.Enabled := true; dtp_agendfim.Enabled := true; end else begin dtp_agendcomeco.Enabled := false; dtp_agendfim.Enabled := false; end; end; end.