• R/O
  • SSH
  • HTTPS

cico: Commit


Commit MetaInfo

Revisión17 (tree)
Tiempo2020-03-09 04:55:52
Autorderekwildstar

Log Message

Ajustes em alinhamentos e tamanhos de controles/componentes
Criado um campo agregado para retornar o saldo mês a mês
Criados métodos para atualização e obtenção de saldos
Implementado o manipulador do evento OnMonthBalance que vai excluir o saldo de um mês específico e reinserir os saldos de cada um de seus dias

Cambiar Resumen

Diferencia incremental

--- trunk/client/src/cico/UDAMOPrincipal.pas (revision 16)
+++ trunk/client/src/cico/UDAMOPrincipal.pas (revision 17)
@@ -31,6 +31,7 @@
3131 FDTASaldossaldo: TIntegerField;
3232 DASOSaldos: TDataSource;
3333 FDTASaldosdia: TIntegerField;
34+ FDTASaldosSaldoMensal: TAggregateField;
3435 procedure TMERTimer(Sender: TObject);
3536 procedure APEVMinimize(Sender: TObject);
3637 procedure Sair1Click(Sender: TObject);
@@ -41,6 +42,7 @@
4142 procedure APEVMessage(var Msg: tagMSG; var Handled: Boolean);
4243 procedure FDTASaldosdiaGetText(Sender: TField; var Text: string; DisplayText: Boolean);
4344 procedure FDTASaldossaldoGetText(Sender: TField; var Text: string; DisplayText: Boolean);
45+ procedure FDTASaldosSaldoMensalGetText(Sender: TField; var Text: string; DisplayText: Boolean);
4446 private
4547 { Private declarations }
4648 FLoggedUserName: String;
@@ -48,6 +50,7 @@
4850 procedure Reset;
4951 procedure OpenTables;
5052 procedure DoMonthBalance(AMes: Byte; AAno: Word; ASaldos: TSaldos);
53+ procedure AtualizarSaldos(AAnoInicial: Word = 0; AMesInicial: Byte = 0);
5154 public
5255 { Public declarations }
5356 function LimparCPF(ACPF: String): String;
@@ -57,7 +60,10 @@
5760 procedure EuJaExisto;
5861 procedure AplicarFiltro;
5962 procedure PreencherComboAnos;
60- procedure ObterSaldos(AAnoInicial: Word = 0; AMesInicial: Byte = 0);
63+ procedure ObterSaldoGlobal;
64+ procedure ObterSaldoMensal;
65+ procedure AtualizarSaldoAtual;
66+ procedure AtualizarSaldoGlobal;
6167
6268 property LoggedUserName: String read FLoggedUserName;
6369 end;
@@ -87,6 +93,51 @@
8793 FORMPrincipal.Close;
8894 end;
8995
96+procedure TDAMOPrincipal.ObterSaldoGlobal;
97+begin
98+ FORMPrincipal.PNBBSaldoGlobal.Font.Color := clWhite;
99+
100+ FDTASaldos.Filtered := False;
101+ try
102+ if FDTASaldosSaldoMensal.Value > 0 then
103+ begin
104+ FORMPrincipal.PNBBSaldoGlobal.Caption := FormatDateTime(' hh:nn',FDTASaldosSaldoMensal.Value / 24 / 60);
105+ FORMPrincipal.PNBBSaldoGlobal.Font.Color := clLime;
106+ end
107+ else
108+ begin
109+ FORMPrincipal.PNBBSaldoGlobal.Caption := FormatDateTime('-hh:nn',FDTASaldosSaldoMensal.Value / 24 / 60);
110+ FORMPrincipal.PNBBSaldoGlobal.Font.Color := clRed;
111+ end
112+ finally
113+ FDTASaldos.Filtered := True;
114+ end;
115+end;
116+
117+procedure TDAMOPrincipal.ObterSaldoMensal;
118+begin
119+ FORMPrincipal.PNBBSaldoDoMes.Font.Color := clWhite;
120+
121+ // Por conta deste ser um campo agregado, precisamos verificar se existem
122+ // dados sendo exibidos no dataset, pois ele termina somando todos os
123+ // registros quando o dataset filtrado fica vazio
124+ if (FDTASaldos.RecordCount > 0) and (not FDTASaldosSaldoMensal.IsNull) then
125+ begin
126+ if FDTASaldosSaldoMensal.Value > 0 then
127+ begin
128+ FORMPrincipal.PNBBSaldoDoMes.Caption := FormatDateTime(' hh:nn',FDTASaldosSaldoMensal.Value / 24 / 60);
129+ FORMPrincipal.PNBBSaldoDoMes.Font.Color := clLime;
130+ end
131+ else
132+ begin
133+ FORMPrincipal.PNBBSaldoDoMes.Caption := FormatDateTime('-hh:nn',FDTASaldosSaldoMensal.Value / 24 / 60);
134+ FORMPrincipal.PNBBSaldoDoMes.Font.Color := clRed;
135+ end
136+ end
137+ else
138+ FORMPrincipal.PNBBSaldoDoMes.Caption := ' 00:00';
139+end;
140+
90141 procedure TDAMOPrincipal.Reset;
91142 var
92143 H: Word;
@@ -189,18 +240,41 @@
189240 Result := StringReplace(Result,'-','',[rfReplaceAll]);
190241 end;
191242
192-procedure TDAMOPrincipal.ObterSaldos(AAnoInicial: Word = 0; AMesInicial: Byte = 0);
243+procedure TDAMOPrincipal.AtualizarSaldoAtual;
193244 begin
194- FullBalance(FORMPrincipal.Handle
195- ,Configuracoes.Ambiente = aProducao
196- ,LimparCPF(Configuracoes.CPF)
197- ,FORMPrincipal.LAEDSenha.Text // Para não ter que decodificar a senha novamente
198- ,Configuracoes.Matricula
199- ,DoMonthBalance
200- ,AAnoInicial
201- ,AMesInicial);
245+ if Application.MessageBox('Isso vai atualizar o saldo do mês/ano atualmente '+
246+ 'sendo exibido com as informações recentes, a partir do sistema de sistema o'+
247+ 'ficial (Controle de frequência). Isso pode demorar um pouco dependendo do q'+
248+ 'uão distante o mês se encontra do mês atual. Tem certeza?','Tem certeza?',MB_ICONQUESTION or MB_YESNO) = IDYES then
249+ AtualizarSaldos(StrToInt(FORMPrincipal.CBBXYears.Text),Succ(FORMPrincipal.TASEMonths.TabIndex));
202250 end;
203251
252+procedure TDAMOPrincipal.AtualizarSaldoGlobal;
253+begin
254+ if Application.MessageBox('Isso vai atualizar o saldo global, isto é, o sald'+
255+ 'o de todos os meses disponíveis desde a implantação do Controle de Frequênc'+
256+ 'ia. Este procedimento pode demorar alguns minutos. Tem certeza?','Tem certeza?',MB_ICONQUESTION or MB_YESNO) = IDYES then
257+ AtualizarSaldos;
258+end;
259+
260+procedure TDAMOPrincipal.AtualizarSaldos(AAnoInicial: Word = 0; AMesInicial: Byte = 0);
261+begin
262+ Screen.Cursor := crHourGlass;
263+ try
264+ FullBalance(FORMPrincipal.Handle
265+ ,Configuracoes.Ambiente = aProducao
266+ ,LimparCPF(Configuracoes.CPF)
267+ ,FORMPrincipal.LAEDSenha.Text // Para não ter que decodificar a senha novamente
268+ ,Configuracoes.Matricula
269+ ,DoMonthBalance
270+ ,AAnoInicial
271+ ,AMesInicial);
272+ finally
273+ FDTASaldos.Refresh;
274+ Screen.Cursor := crDefault;
275+ end;
276+end;
277+
204278 procedure TDAMOPrincipal.OpenTables;
205279 begin
206280 FDTAEventos.Open;
@@ -233,10 +307,19 @@
233307 end;
234308
235309 procedure TDAMOPrincipal.DoMonthBalance(AMes: Byte; AAno: Word; ASaldos: TSaldos);
310+var
311+ i: Byte;
236312 begin
237313 // A cada execução deste manipulador, nós obtivemos as informações completas
238314 // do mês e do ano, portanto podemos apagar todos os registros, pois todos
239315 // serão reinseridos
316+ FDCO.ExecSQL('delete from saldos where ano = :ano and mes = :mes',[AAno,AMes],[ftWord,ftByte]);
317+
318+ // O array ASaldos tem 32 elementos. O elemento zero é o saldo do mês, e os
319+ // elementos de 1 até a quantidade de dias no mês possuem o saldo de cada dia.
320+ // Aqui estamos inserido cada um dos saldos disponíveis
321+ for i := 1 to DaysInAMonth(AAno,AMes) do
322+ FDCO.ExecSQL('insert into saldos values(:ano,:mes,:dia,:saldo)',[AAno,AMes,i,ASaldos[i]],[ftWord,ftByte,ftByte,ftSmallint]);
240323 end;
241324
242325 procedure TDAMOPrincipal.EuJaExisto;
@@ -277,6 +360,12 @@
277360 Text := FormatDateTime('-hh:nn',Sender.AsInteger / 24 / 60)
278361 end;
279362
363+procedure TDAMOPrincipal.FDTASaldosSaldoMensalGetText(Sender: TField; var Text: string; DisplayText: Boolean);
364+begin
365+ if DisplayText then
366+ ObterSaldoMensal;
367+end;
368+
280369 procedure TDAMOPrincipal.TMERTimer(Sender: TObject);
281370 var
282371 Data: String;
--- trunk/client/src/cico/UFORMPrincipal.pas (revision 16)
+++ trunk/client/src/cico/UFORMPrincipal.pas (revision 17)
@@ -8,7 +8,7 @@
88 Vcl.StdCtrls, Vcl.OleCtrls, Vcl.ExtCtrls, Vcl.ComCtrls,
99 KRK.Vcl.ExtCtrls, Vcl.Buttons, UDAMOPrincipal,
1010 Vcl.Grids, Vcl.ValEdit, UPngBitBtn, UPngSpeedButton, Data.DB, Vcl.DBGrids,
11- Vcl.Samples.Spin, Vcl.Tabs;
11+ Vcl.Samples.Spin, Vcl.Tabs, Vcl.DBCtrls;
1212
1313 type
1414 TWMWTSSessionChange = record
@@ -52,10 +52,11 @@
5252 CBBXYears: TComboBox;
5353 LABEAno: TLabel;
5454 LABEMonthBalance: TLabel;
55- LABEMonthBalanceValue: TLabel;
5655 LABEGlobalBalance: TLabel;
57- LABEGlobalBalanceValue: TLabel;
58- Button2: TButton;
56+ PngSpeedButton1: TPngSpeedButton;
57+ PNBBSaldoGlobal: TPngBitBtn;
58+ PNBBSaldoDoMes: TPngBitBtn;
59+ DBText1: TDBText;
5960 procedure BUTNEntradaClick(Sender: TObject);
6061 procedure BUTNSaidaClick(Sender: TObject);
6162 procedure FormCreate(Sender: TObject);
@@ -69,7 +70,8 @@
6970 procedure TASEMonthsClick(Sender: TObject);
7071 procedure FormShow(Sender: TObject);
7172 procedure CBBXYearsChange(Sender: TObject);
72- procedure Button2Click(Sender: TObject);
73+ procedure PNBBSaldoDoMesClick(Sender: TObject);
74+ procedure PNBBSaldoGlobalClick(Sender: TObject);
7375 private
7476 { Private declarations }
7577 FAcaoAutomatica: Boolean;
@@ -161,11 +163,6 @@
161163 end;
162164 end;
163165
164-procedure TFORMPrincipal.Button2Click(Sender: TObject);
165-begin
166- DAMOPrincipal.ObterSaldos;
167-end;
168-
169166 procedure TFORMPrincipal.CBBXYearsChange(Sender: TObject);
170167 begin
171168 DAMOPrincipal.AplicarFiltro;
@@ -252,7 +249,7 @@
252249 begin
253250 TASHCiCo.TabVisible := False;
254251 TASHEvents.TabVisible := False;
255-// TASHBalance.TabVisible := False;
252+ TASHBalance.TabVisible := False;
256253 end;
257254 end;
258255
@@ -270,6 +267,7 @@
270267 procedure TFORMPrincipal.FormShow(Sender: TObject);
271268 begin
272269 DAMOPrincipal.PreencherComboAnos;
270+ DAMOPrincipal.ObterSaldoGlobal;
273271 TASEMonths.TabIndex := Pred(MonthOf(Now))
274272 end;
275273
@@ -283,6 +281,16 @@
283281 DAMOPrincipal.CheckStatusAndUpdateGUI(DAMOPrincipal.LimparCPF(KRLECPF.Text),LAEDSenha.Text);
284282 end;
285283
284+procedure TFORMPrincipal.PNBBSaldoDoMesClick(Sender: TObject);
285+begin
286+ DAMOPrincipal.AtualizarSaldoAtual;
287+end;
288+
289+procedure TFORMPrincipal.PNBBSaldoGlobalClick(Sender: TObject);
290+begin
291+ DAMOPrincipal.AtualizarSaldoGlobal;
292+end;
293+
286294 procedure TFORMPrincipal.TASEMonthsClick(Sender: TObject);
287295 begin
288296 DAMOPrincipal.AplicarFiltro;
Show on old repository browser