-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUfrmCadTemporada.pas
168 lines (147 loc) · 4.85 KB
/
UfrmCadTemporada.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
unit UfrmCadTemporada;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, ufrmCadPadrao, FireDAC.Stan.Intf,
FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS,
FireDAC.Phys.Intf, FireDAC.DApt.Intf, FireDAC.Stan.Async, FireDAC.DApt,
Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client, Vcl.StdCtrls, Vcl.Mask,
Vcl.DBCtrls, Vcl.ExtCtrls, JvExMask, JvToolEdit, JvMaskEdit, UGeral,
JvCheckedMaskEdit, JvDatePickerEdit, JvDBDatePickerEdit;
type
TfrmCadTemporada = class(TfrmCadBase)
fdqEdicaoID_TEMPORADAS: TLargeintField;
fdqEdicaoCOD_TEMP: TSmallintField;
fdqEdicaoPERIODO_INICIAL: TDateField;
fdqEdicaoPERIODO_FINAL: TDateField;
fdqEdicaoDESCRICAO: TStringField;
fdqEdicaoATIVO: TBooleanField;
dbchkATIVO: TDBCheckBox;
lbl1: TLabel;
lbl2: TLabel;
lbl3: TLabel;
lbl4: TLabel;
dbedtPERIODO_INICIAL: TJvDBDatePickerEdit;
dbedtPERIODO_FINAL: TJvDBDatePickerEdit;
private
procedure desativaOutrasTemporadas(idTemporada: Integer);
protected
function verificaCampos: Boolean; override;
{ Private declarations }
public
class function inserir(Aowner: TComponent; AIdTemporada: Integer): Boolean; override;
class function editar(Aowner: TComponent; AId: Int64): Boolean; override;
end;
var
frmCadTemporada: TfrmCadTemporada;
implementation
uses
udtmCon;
{$R *.dfm}
{ TfrmCadTemporada }
class function TfrmCadTemporada.editar(Aowner: TComponent; AId: Int64): Boolean;
var
frmCadtemporada: TfrmCadTemporada;
begin
result := False;
frmCadtemporada:= TfrmCadTemporada.Create(Aowner);
try
frmCadtemporada.FId := AId;
frmCadtemporada.fdqEdicao.Open();
frmCadtemporada.fdqEdicao.Edit;
if frmCadtemporada.ShowModal = mrOk then
begin
frmCadtemporada.fdqEdicao.Post;
frmCadtemporada.fdqEdicao.ApplyUpdates(-1);
Result := True;
end;
finally
tryFreeAndNil(frmCadtemporada);
end;
end;
procedure TfrmCadTemporada.desativaOutrasTemporadas(idTemporada: Integer);
//const
// DESATIVA_TEMPORADAS =
// ' update temporadas t' + sLineBreak +
// ' set' + sLineBreak +
// ' t.ativo = false' + sLineBreak +
// ' where' + sLineBreak +
// ' T.ativo' + sLineBreak +
// ' and t.id_temporadas <> :id_temporadas';
//var
// tipes:array[1..1] of TFieldType;
begin
// transferido para trigger
// tipes[1]:= ftInteger;
// dtmcon.conexao.ExecSQL(DESATIVA_TEMPORADAS, [idTemporada],tipes );
end;
class function TfrmCadTemporada.inserir(Aowner: TComponent; AIdTemporada: Integer): Boolean;
//Const
// FINALIZA_TEMPORADA =
// ' update temporadas t' + sLineBreak +
// ' set' + sLineBreak +
// ' t.periodo_final = dateadd(day,-1,Cast(:data_inicio as date))' + sLineBreak +
// ' where' + sLineBreak +
// ' T.periodo_final is null' + sLineBreak +
// ' and t.periodo_inicial < dateadd(day,-1,cast(:data_inicio as date))';
var
frmCadTemporada: TfrmCadTemporada;
inTransection:Boolean;
begin
Result := False;
frmCadTemporada:= TfrmCadTemporada.Create(Aowner);
try
frmCadTemporada.FId := -1;
frmCadTemporada.fdqEdicao.Open();
frmCadTemporada.fdqEdicao.Insert;
frmCadTemporada.dbedtCodigo.Field.AsInteger := dtmcon.getNextCod('temporadas','cod_temp');
frmCadTemporada.dbedtDescricao.Field.AsInteger := CurrentYear;
frmCadTemporada.dbchkATIVO.Field.AsBoolean :=True;
frmCadTemporada.dbedtPERIODO_INICIAL.Field.AsDateTime := Now;
if frmCadTemporada.ShowModal = mrOk then
begin
inTransection := dtmcon.conexao.InTransaction;
try
if not inTransection then
dtmcon.conexao.StartTransaction;
if frmCadTemporada.fdqEdicaoATIVO.AsBoolean then
frmCadTemporada.desativaOutrasTemporadas(0);
// inserido em trigger
// dtmcon.conexao.ExecSQL(FINALIZA_TEMPORADA,
// [frmCadTemporada.fdqEdicaoPERIODO_INICIAL.AsDateTime]
// , [ftDate]);
frmCadTemporada.fdqEdicao.Post;
frmCadTemporada.fdqEdicao.ApplyUpdates(-1);
if (not inTransection) and dtmcon.conexao.InTransaction then
dtmcon.conexao.Commit;
Result:= True;
Except
if (not inTransection) and dtmcon.conexao.InTransaction then
dtmcon.conexao.Rollback;
end;
end;
finally
tryFreeAndNil(frmCadTemporada);
end;
end;
function TfrmCadTemporada.verificaCampos: Boolean;
begin
ActiveControl := nil;
Result:= True;
if dbedtCodigo.Field.IsNull then
begin
ShowMessage('Código deve ser preenchido');
Result := False;
end;
if dbedtDescricao.Field.IsNull then
begin
ShowMessage('Descrição deve ser preenchido');
Result := False;
end;
if dbedtPERIODO_INICIAL.Field.IsNull then
begin
ShowMessage('Data inicial da temporada deve ser preenchido');
Result := False;
end;
end;
end.