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.
 

216 lines
6.1 KiB

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.