179 lines
5.0 KiB
ObjectPascal
179 lines
5.0 KiB
ObjectPascal
unit datModObj;
|
|
|
|
interface
|
|
|
|
uses
|
|
System.SysUtils, System.Classes, MemTableDataEh, Data.DB, MemTableEh, ddPlugin_TLB, Vcl.ComCtrls;
|
|
|
|
const
|
|
CRLF = #13#10;
|
|
|
|
type
|
|
TdmObj = class(TDataModule)
|
|
vTabObj: TMemTableEh;
|
|
dsObj: TDataSource;
|
|
vTabPoradiSort: TSingleField;
|
|
vTabK1: TStringField;
|
|
vTabK2: TStringField;
|
|
vTabSortiment: TStringField;
|
|
vTabIDZboSklad: TIntegerField;
|
|
vTabRegCis: TStringField;
|
|
vTabNazev: TStringField;
|
|
vTabRano: TFloatField;
|
|
vTabPoledne: TFloatField;
|
|
vTabStavSkladu: TFloatField;
|
|
vTabDoporuceno: TFloatField;
|
|
vTabPriorita: TIntegerField;
|
|
vTabCisloZbozi: TStringField;
|
|
vTabIDKZ: TIntegerField;
|
|
vTabSkupZbo: TStringField;
|
|
vTabDodavatel: TIntegerField;
|
|
vTabJenRano: TSmallintField;
|
|
vTabMinimum: TFloatField;
|
|
vTabDelitelnost: TFloatField;
|
|
vTabPoradi: TSingleField;
|
|
vTabK1K2: TStringField;
|
|
vTabPoradiSortNazev: TStringField;
|
|
procedure vTabRanoValidate(Sender: TField);
|
|
procedure vTabPoledneValidate(Sender: TField);
|
|
procedure vTabAfterPost(DataSet: TDataSet);
|
|
procedure vTabAfterDelete(DataSet: TDataSet);
|
|
private
|
|
public
|
|
Helios: IHelios;
|
|
procedure ZapisObjednavky(tbl: TMemTableEh; cOrgDod, cisloObj: integer; dt: TDatetimePicker);
|
|
end;
|
|
|
|
var
|
|
dmObj: TdmObj;
|
|
|
|
|
|
implementation
|
|
uses System.Variants, frmOrder2, frmOrder21024, frmOrder21366;
|
|
{%CLASSGROUP 'Vcl.Controls.TControl'}
|
|
|
|
{$R *.dfm}
|
|
|
|
|
|
procedure TdmObj.ZapisObjednavky(tbl: TMemTableEh; cOrgDod, cisloObj: integer; dt: TDatetimePicker);
|
|
var lSQL: string;
|
|
idH, i: integer;
|
|
begin
|
|
if (tbl.RecordCount>0) then
|
|
begin
|
|
idH:= 0;
|
|
lSQL:= 'INSERT dbo._HDC_Objednavky (CisloOrg, IDSklad, CisloObj, DatPozadavek) SELECT ISNULL(TRY_PARSE(N' + cOrgDod.ToString.Replace(';', '').Replace('-','').Replace(' ', '').QuotedString;
|
|
lSQL:= lSQL + ' AS INT), 0), N' + Helios.Sklad.QuotedString + ', ' + cisloObj.ToString + ', CONVERT(datetime, N' + FormatDateTime('d.m.yyyy', dt.Date).QuotedString + ', 104)' + CRLF;
|
|
lSQL:= lSQL + 'SELECT SCOPE_IDENTITY()';
|
|
with Helios.OpenSQL(lSQL) do
|
|
idH:= VarToStr(FieldValues(0)).ToInteger;
|
|
|
|
tbl.DisableControls;
|
|
i:= tbl.RecNo;
|
|
tbl.First;
|
|
while not(tbl.Eof) do
|
|
begin
|
|
if (tbl.FieldByName('Rano').AsSingle>0) or (tbl.FieldByName('Poledne').AsSingle>0) then
|
|
begin
|
|
lSQL:= 'INSERT dbo._HDC_ObjednavkyR (IDHlava, IDZboSklad, MnRano, MnPoledne) SELECT ' + idH.ToString + ', ' + tbl.FieldByName('IDZboSklad').AsString;
|
|
lSQL:= lSQL + ', ' + tbl.FieldByName('Rano').AsSingle.ToString + ', ' + tbl.FieldByName('Poledne').AsSingle.ToString;
|
|
Helios.ExecSQL(lSQL);
|
|
end;
|
|
tbl.Next;
|
|
end;
|
|
tbl.RecNo:= i;
|
|
tbl.EnableControls;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TdmObj.vTabAfterDelete(DataSet: TDataSet);
|
|
begin
|
|
if (formOrder2.Visible) then
|
|
formOrder2.btnVynulovat.Enabled:= (DataSet.RecordCount>0);
|
|
if (formOrder21024.Visible) then
|
|
formOrder21024.btnVynulovat.Enabled:= (DataSet.RecordCount>0);
|
|
if (formOrder21366.Visible) then
|
|
formOrder21366.btnVynulovat.Enabled:= (DataSet.RecordCount>0);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TdmObj.vTabAfterPost(DataSet: TDataSet);
|
|
begin
|
|
if (formOrder2.Visible) then
|
|
formOrder2.btnVynulovat.Enabled:= (DataSet.RecordCount>0);
|
|
if (formOrder21024.Visible) then
|
|
formOrder21024.btnVynulovat.Enabled:= (DataSet.RecordCount>0);
|
|
if (formOrder21366.Visible) then
|
|
formOrder21366.btnVynulovat.Enabled:= (DataSet.RecordCount>0);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TdmObj.vTabPoledneValidate(Sender: TField);
|
|
var canCont: Boolean;
|
|
mv, mm: Single;
|
|
begin
|
|
canCont:= true;
|
|
mv:= TField(Sender).AsFloat;
|
|
mm:= TField(Sender).DataSet.FieldByName('Minimum').AsSingle;
|
|
|
|
if (TField(Sender).AsInteger<>0) and (TField(Sender).DataSet.FieldByName('JenRano').AsInteger=1) then
|
|
begin
|
|
TField(Sender).DataSet.Cancel;
|
|
Helios.Error(#1'Položka "' + TField(Sender).DataSet.FieldByName('RegCis').AsString +'" je určena jen pro ranní závoz.'#1);
|
|
canCont:= false;
|
|
end;
|
|
|
|
if (canCont) and (TField(Sender).AsInteger<0) then
|
|
begin
|
|
canCont:= false;
|
|
Helios.Error(#1'Položka "' + TField(Sender).DataSet.FieldByName('RegCis').AsString +'" je určena jen pro ranní závoz.'#1);
|
|
end;
|
|
|
|
if (canCont) and (mv<mm) then
|
|
begin
|
|
canCont:= false;
|
|
Helios.Error(#1'Minimální množství je ' + FormatFloat('#,##0.###', mm) + #1);
|
|
end;
|
|
|
|
if not(canCont) then
|
|
TField(Sender).DataSet.Cancel;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TdmObj.vTabRanoValidate(Sender: TField);
|
|
var canCont: Boolean;
|
|
mv, mm: Single;
|
|
begin
|
|
canCont:= true;
|
|
mv:= TField(Sender).AsFloat;
|
|
mm:= TField(Sender).DataSet.FieldByName('Minimum').AsSingle;
|
|
|
|
if (TField(Sender).AsInteger<0) then
|
|
begin
|
|
canCont:= false;
|
|
Helios.Error(#1'Lze zadávat jen kladná čísla.'#1);
|
|
end;
|
|
|
|
if (canCont) and (mv<mm) then
|
|
begin
|
|
canCont:= false;
|
|
Helios.Error(#1'Minimální množství je ' + FormatFloat('#,##0.###', mm) + #1);
|
|
end;
|
|
|
|
if not(canCont) then
|
|
TField(Sender).DataSet.Cancel;
|
|
|
|
end;
|
|
|
|
end.
|