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