unit ufrmAgendamento; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, System.DateUtils, System.UITypes, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, umstMaster, Data.DB, Vcl.Grids, Vcl.DBGrids, Vcl.StdCtrls, Vcl.DBCtrls, Vcl.ComCtrls, ZAbstractRODataset, ZAbstractDataset, ZDataset; type TfrmAgendamento = class(TmstMaster) queryCobradores: TZQuery; queryCobradoresID_USUARIO: TIntegerField; queryCobradoresTX_NOME: TWideStringField; dtsCobrador: TDataSource; GroupBox1: TGroupBox; lbl_dtcobranca: TLabel; dtp_diaagendamento: TDateTimePicker; lbl_horacobranca: TLabel; dtp_horaagendamento: TDateTimePicker; lbl_cobradoragendado: TLabel; dblucb_cobradoragendar: TDBLookupComboBox; GroupBox2: TGroupBox; edt_nomefiltro: TEdit; dtsDevedores: TDataSource; DBGrid1: TDBGrid; lbl_nomedevedor: TLabel; Button1: TButton; Button2: TButton; dtsHist: TDataSource; ROqryhist: TZReadOnlyQuery; ROqryhistID_DEVEDOR: TIntegerField; ROqryhistMAX_HIST: TIntegerField; DBLookupComboBox1: TDBLookupComboBox; Label1: TLabel; mem_hist: TMemo; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure edt_nomefiltroChange(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure DBGrid1TitleClick(Column: TColumn); private procedure WMMoving(var Msg: TWMMoving); message WM_MOVING; { Private declarations } public { Public declarations } end; var frmAgendamento: TfrmAgendamento; implementation {$R *.dfm} uses udtmSystem; procedure TfrmAgendamento.Button1Click(Sender: TObject); var str_helper: string; begin inherited; if (dblucb_cobradoragendar.ListFieldIndex = -1) then begin MessageDlg ('Por favor selecione um cobrador para qual será agendada a cobrança.', mtWarning, [mbOK], 0); abort; end else begin if (DBLookupComboBox1.ListFieldIndex = -1) then begin MessageDlg ('Por favor selecione uma providência para qual será dada a agenda.', mtWarning, [mbOK], 0); abort; end; with dtmSystem do begin if not(tblAgenda.Active) then begin tblAgenda.Open; end; tblAgenda.Refresh; while tblAgenda.Locate('ID_DEVEDOR;TP_SITUACAO', VarArrayOf([dtsDevedores.DataSet.FieldByName('ID_DEVEDOR').AsInteger, 'A']), []) do begin tblAgenda.Edit; tblAgendaTP_SITUACAO.AsString := 'B'; tblAgenda.Post; end; tblAgenda.Append; tblAgendaID_COBRADOR.AsInteger := dblucb_cobradoragendar.KeyValue; tblAgendaID_DEVEDOR.AsInteger := tblDevedoresID_DEVEDOR.AsInteger; tblAgendaDT_AGENDADA.AsDateTime := Dateof(dtp_diaagendamento.Date); tblAgendaHR_AGENDADA.AsDateTime := Timeof(dtp_horaagendamento.Time); tblAgendaDT_QUE_AGENDOU.AsDateTime := Now; tblAgendaQUEM_AGENDOU.AsInteger := dtmSystem.id_usuario; tblAgenda.Post; if not(tblCampanhaDevedores.Active) then begin tblCampanhaDevedores.Open; end; tblCampanhaDevedores.Filtered := false; while tblCampanhaDevedores.Locate('ID_DEVEDOR', dtsDevedores.DataSet.FieldByName('ID_DEVEDOR').AsInteger, []) do begin dtmSystem.tblCampanhaDevedores.Delete; end; str_helper := 'Agendado para o dia ' + datetostr(dateof(dtp_diaagendamento.Date)) + ' no horário ' + timetostr(timeof(dtp_horaagendamento.Time)) + ' para o cobrador ' + dblucb_cobradoragendar.Text; dtmSystem.tblHistorico.Append; dtmSystem.tblHistoricoID_COBRADOR.AsInteger := dtmSystem.id_usuario; dtmSystem.tblHistoricoID_DEVEDOR.AsInteger := dtmSystem.tblDevedoresID_DEVEDOR.AsInteger; dtmSystem.tblHistoricoID_PROVIDENCIA.AsInteger := DBLookupComboBox1.KeyValue; mem_hist.Lines.Add(str_helper); dtmSystem.tblHistoricoTL_MEMO.AsString := mem_hist.Lines.Text; dtmSystem.tblHistorico.Post; mem_hist.Clear; end; Close; end; end; procedure TfrmAgendamento.Button2Click(Sender: TObject); begin inherited; queryCobradores.Close; Close; end; procedure TfrmAgendamento.DBGrid1TitleClick(Column: TColumn); begin inherited; dtmSystem.OrganizaPorColuna(DBGrid1.DataSource.DataSet, Column); end; procedure TfrmAgendamento.edt_nomefiltroChange(Sender: TObject); var tx_pesquisa: string; begin tx_pesquisa := UpperCase(stringreplace(edt_nomefiltro.Text, ' ', '%', [rfReplaceAll])); dtmSystem.tblDevedores.Filter := 'TX_NOME like ' + QuotedStr('*' + tx_pesquisa + '*'); end; procedure TfrmAgendamento.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; dtmSystem.tblDevedores.Filter := ''; dtmSystem.tblDevedores.Filtered := false; end; procedure TfrmAgendamento.FormCreate(Sender: TObject); begin inherited; if not(dtmSystem.tblDevedores.Active) then begin dtmSystem.tblDevedores.Open; dtmSystem.tblDevedores.Filter := ''; dtmSystem.tblDevedores.Filtered := true; end; if not(dtmSystem.tblAgenda.Active) then begin dtmSystem.tblAgenda.Open; end; if not(dtmSystem.tblHistorico.Active) then begin dtmSystem.tblHistorico.Open; end; if not(dtmSystem.tblProvidencias.Active) then begin dtmSystem.tblProvidencias.Open; end; queryCobradores.SQL.Text := 'select id_usuario, tx_nome from sys_usuarios order by tx_nome'; queryCobradores.Open; dtp_diaagendamento.Date := Date; dtp_horaagendamento.Time := Now; end; procedure TfrmAgendamento.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.