From cab52aaa5aea4ac4cc7eb1159d3d31886251549c Mon Sep 17 00:00:00 2001 From: TomBuz Date: Fri, 5 Sep 2025 12:22:48 +0200 Subject: [PATCH] Prvotni verze pro Giteu --- .gitignore | 17 + ComObjekt.pas | 477 ++++++++++++++++ datModObj.dfm | 277 ++++++++++ datModObj.pas | 178 ++++++ datModPrij.dfm | 217 ++++++++ datModPrij.pas | 142 +++++ frmLikvidace.dfm | 384 +++++++++++++ frmLikvidace.pas | 426 ++++++++++++++ frmLikvidace1024.dfm | 384 +++++++++++++ frmLikvidace1024.pas | 423 ++++++++++++++ frmOrder.dfm | 409 ++++++++++++++ frmOrder.pas | 215 ++++++++ frmOrder2.dfm | 895 ++++++++++++++++++++++++++++++ frmOrder2.pas | 1202 ++++++++++++++++++++++++++++++++++++++++ frmOrder21024.dfm | 901 ++++++++++++++++++++++++++++++ frmOrder21024.pas | 1198 ++++++++++++++++++++++++++++++++++++++++ frmOrder21366.dfm | 895 ++++++++++++++++++++++++++++++ frmOrder21366.pas | 1204 ++++++++++++++++++++++++++++++++++++++++ frmPrijem.dfm | 677 +++++++++++++++++++++++ frmPrijem.pas | 1004 +++++++++++++++++++++++++++++++++ frmPrijem1024.dfm | 677 +++++++++++++++++++++++ frmPrijem1024.pas | 1001 +++++++++++++++++++++++++++++++++ frmZamena.dfm | 301 ++++++++++ frmZamena.pas | 162 ++++++ plgPolanskych.ctp | 5 + plgPolanskych.dpr | 55 ++ plgPolanskych.dproj | 1249 ++++++++++++++++++++++++++++++++++++++++++ plgPolanskych.eof | 7 + plgPolanskych.res | Bin 0 -> 940 bytes 29 files changed, 14982 insertions(+) create mode 100644 ComObjekt.pas create mode 100644 datModObj.dfm create mode 100644 datModObj.pas create mode 100644 datModPrij.dfm create mode 100644 datModPrij.pas create mode 100644 frmLikvidace.dfm create mode 100644 frmLikvidace.pas create mode 100644 frmLikvidace1024.dfm create mode 100644 frmLikvidace1024.pas create mode 100644 frmOrder.dfm create mode 100644 frmOrder.pas create mode 100644 frmOrder2.dfm create mode 100644 frmOrder2.pas create mode 100644 frmOrder21024.dfm create mode 100644 frmOrder21024.pas create mode 100644 frmOrder21366.dfm create mode 100644 frmOrder21366.pas create mode 100644 frmPrijem.dfm create mode 100644 frmPrijem.pas create mode 100644 frmPrijem1024.dfm create mode 100644 frmPrijem1024.pas create mode 100644 frmZamena.dfm create mode 100644 frmZamena.pas create mode 100644 plgPolanskych.ctp create mode 100644 plgPolanskych.dpr create mode 100644 plgPolanskych.dproj create mode 100644 plgPolanskych.eof create mode 100644 plgPolanskych.res diff --git a/.gitignore b/.gitignore index e9d123f..c980899 100644 --- a/.gitignore +++ b/.gitignore @@ -80,4 +80,21 @@ __recovery/ # Boss dependency manager vendor folder https://github.com/HashLoad/boss modules/ +.git/ + +*.otares +*.cmds +*.skincfg +*.bmp +*.mp3 +*.mes +*.vtd +*.xls +*.xlsx +*.vlb +*.tmp +*.xml + +*.zip +*.7z diff --git a/ComObjekt.pas b/ComObjekt.pas new file mode 100644 index 0000000..f97d447 --- /dev/null +++ b/ComObjekt.pas @@ -0,0 +1,477 @@ +unit ComObjekt; + +interface + +uses System.SysUtils, System.Win.ComObj, ddPlugin_TLB; + +const + Class_plgPolanskych: TGUID = '{0E52DB47-274A-44D3-A492-85BD0BE8760E}'; + +type + TUctenkaVydejItem = record + id, idZboSklad, idUctoR: integer; + jcEvid, jcJC: single; + end; + + TUctenkaItem = record + id, idZboSklad, idKmen, idUctoR: integer; + isVyrobek: boolean; + rada: string; + mnozstvi, jcEvid, jcJC: single; + end; + + TUctenkaHlava = record + id, typDokladu: integer; + rada: string; + vydejkyItems: TArray; + end; + + TUctenkaDoklad = record + id, druhPohybu, vstupniCena: integer; + mena, doklad: string; + kurz, jednotkaMeny, kurzEuro: single; + end; + + TplgPolanskych = class(TComObject, IHePlugin) + private + procedure Run(const Helios: IHelios); safecall; + public + function KontrolyLikvidaceOK(const Helios: IHelios): boolean; safecall; + procedure VytvorStornoVydejky (const Helios: IHelios; const idDZ: integer); safecall; + procedure VytvorVydejkaDoSpotreby (const Helios: IHelios; const idDZ: integer); safecall; + procedure ZrusCertifikatEETTrzby (const Helios: IHelios; arrID: TArray); safecall; + procedure OdeslatEmail(const Helios: IHelios; idDZ: integer; idTiskFrm: integer); safecall; + end; + + + +implementation + +uses System.Win.ComServ, System.Variants, System.StrUtils, System.UITypes, Vcl.Themes, Vcl.Forms, + frmOrder, frmOrder2, frmOrder21024, frmOrder21366, frmLikvidace, frmLikvidace1024, frmPrijem, frmPrijem1024, + frmZamena, + helUtils, myUtils; + +var + oVar1, oVar2: OleVariant; + jeTest: boolean; + stylWin10: TStyleManager.TStyleServicesHandle; + delkaPoradCisla: byte; + + + + + procedure TplgPolanskych.OdeslatEmail(const Helios: IHelios; idDZ: Integer; idTiskFrm: Integer); + var lSQL: string; + begin + if (idDZ>0) and (idTiskFrm>0) then + begin + + end; + end; + + + + + function TplgPolanskych.KontrolyLikvidaceOK(const Helios: IHelios): Boolean; + var lSQL: string; + begin +{ + result:= false; + + lSQL:= 'SELECT ID FROM ' + tblKZ + ' WHERE Aktu' + with Helios.OpenSQL(lSQL) do + if (RecordCount=0) then +} + result:= true; + end; + + + + + procedure TplgPolanskych.VytvorVydejkaDoSpotreby (const Helios: IHelios; const idDZ: integer); + var lSQL: string; + uct: TUctenkaHlava; + begin + uct.id:= idDZ; + uct.rada:= ''; + uct.typDokladu:= helUtils.getHeliosIntVal(Helios, -1, 'SELECT TypDokladu FROM ' + tblUctenkaH + ' WHERE ID=' + idDZ.ToString); + if (uct.typDokladu=1) or (uct.typDokladu=2) then + begin + uct.rada:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Rada FROM ' + tblUctenkaH + ' WHERE ID=' + idDZ.ToString); + end; + end; + + + + + procedure TplgPolanskych.VytvorStornoVydejky(const Helios: IHelios; const idDZ: integer); + var uct: TUctenkaHlava; + itm: TUctenkaItem; + begin + uct.id:= idDZ; + uct.rada:= ''; + uct.typDokladu:= helUtils.getHeliosIntVal(Helios, -1, 'SELECT TypDokladu FROM ' + tblUctenkaH + ' WHERE ID=' + idDZ.ToString); + if (uct.typDokladu=1) or (uct.typDokladu=2) then + begin + uct.rada:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Rada FROM ' + tblUctenkaH + ' WHERE ID=' + idDZ.ToString); + with Helios.OpenSQL('SELECT * FROM ' + tblUctenkaR + ' WHERE IDHlava=' + idDZ.ToString + ' ORDER BY PoradiPolozky') do + begin + First; + while not(EOF) do + begin + itm.id:= StrToInt(VarToStr(FieldByNameValues('ID'))); + itm.idZboSklad:= StrToInt(VarToStr(FieldByNameValues('IDZboSklad'))); + itm.idKmen:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDKmenZbozi FROM ' + tblSS + ' WHERE ID=' + itm.idZboSklad.ToString); + itm.mnozstvi:= StrToFloat(VarToStr(FieldByNameValues('Mnozstvi'))); +// itm.isVyrobek + itm.jcEvid:= StrToFloat(VarToStr(FieldByNameValues('ID'))); + itm.jcJC:= StrToFloat(VarToStr(FieldByNameValues('ID'))); + Next; + end; + end; + end; + end; + + + + + procedure TplgPolanskych.ZrusCertifikatEETTrzby(const Helios: IHelios; arrID: TArray); + var lSQL: string; + i: Integer; + begin + lSQL:= ''; + for i:=0 to Length(arrID)-1 do + begin + lSQL:= 'UPDATE dbo.TabEETTrzba SET SCertByName=NULL, SCertSN=NULL, SCertStoreLocation=NULL, SCertStoreName=NULL, Pocitac=N'''' WHERE ID=' + arrID[i].ToString ; + Helios.ExecSQL(lSQL); + end; + end; + + + + + procedure TplgPolanskych.Run(const Helios: IHelios); + const MinVerzeHeO = $030020220300; + var sql, IDcka, podm: string; + params, vlastTbl, vlastTbl2, verText: string; + browId, typAkce, cRec, cntID, l_loop, scrW: integer; + arrId: TArray; + contInfo, sTmp1, sTmp2: string; + fOrd: TformOrder; + fOrd2: TformOrder2; + fOrd21024: TformOrder21024; + fOrd21366: TformOrder21366; + fLikv: TformLikvidace; + fLikv1024: TformLikvidace1024; + fPrij: TformPrijem; + fPrij1024: TformPrijem1024; + fZamena: TformZamena; + begin +// Application.Handle:= Helios.MainApplicationHandle; +// Application.Icon.Handle:= Helios.MainApplicationIconHandle; + + with Helios.OpenSQL('SELECT CONVERT(nvarchar(128),CONTEXT_INFO(),2)') do + if VarIsNull(FieldValues(0)) then + contInfo:= 'NULL' + else + contInfo:= VarToStr(FieldValues(0)); + + Helios.ExecSQL('SET CONTEXT_INFO 0x' + StringToHex2('HDC - plgPolanskych')); // nastav context v sys.sysprocesses + + verText:= StringReplace(GetFileVersion2(GetModuleName(HInstance)),'.','',[rfReplaceAll]); + verText:= '0300' + MidStr(verText,3,8); + if Length(verText)=11 then + verText:= LeftStr(verText,8) + '0' + RightStr(verText,3); + +{$REGION 'Region - zjistit jeTest, typAkce, browID, vlastTbl, vytvor #TabExtKom'} + jeTest:= false; + typAkce:= 0; + vlastTbl:= ''; + vlastTbl2:= ''; + params:= ''; + with Helios.OpenSQL('SELECT Parametry FROM TabExtKom WHERE ID=' + IntToStr(Helios.ExtKomID)) do + begin + params:= VarToStr(FieldValues(0)); + jeTest:= ContainsText(params, ';test'); + + if Pos(';',params)>0 then + begin + typAkce:= StrToInt(LeftStr(params, Pos(';', params)-1)); + params:= MidStr(params,Pos(';',params)+1,255); + if (Pos(';',params)>0) then + begin + if not(TryStrToInt(LeftStr(params, Pos(';', params)-1), browId)) then + browID:= 0; + end + else + if not(TryStrToInt(params, browId)) then + browID:= 0; + if (Pos(';', params)>0) then // zadany 3 parametry (akce, browID, vlastnikID) + begin + params:= MidStr(params, Pos(';', params)+1,255); + vlastTbl:= params; + if (Pos(';', vlastTbl)>0) then + begin + vlastTbl:= LeftStr(vlastTbl, Pos(';', vlastTbl)-1); + vlastTbl2:= MidStr(vlastTbl, Pos(';', vlastTbl)+1,255); + end; + end; + end + else + raise Exception.Create('Nemám potřebný počet parametrů !'); + end; + + sql:= 'IF OBJECT_ID(N''tempdb..#TabExtKom'', N''U'') IS NOT NULL DROP TABLE #TabExtKom' + CRLF; + sql:= sql + 'CREATE TABLE #TabExtKom (Poznamka nvarchar(255) NOT NULL, Typ TINYINT)'; + Helios.ExecSQL(sql); +{$ENDREGION} + + if (Helios.HeVersion'') then + IDcka:= Helios.SelectedRecordIDs + else + if not VarIsNull(Helios.CurrentRecordID) then + begin + cRec:= StrToInt(VarToStr(Helios.CurrentRecordID)); + IDcka:= IntToStr(cRec); + end; + + if (IDcka<>'') then + begin + cntID:= 1 + Length(IDcka)-Length(StringReplace(IDcka, ',', '', [rfReplaceAll])); + SetLength(arrID,cntID); + for l_loop:=0 to cntID-1 do + begin + if Pos(',', IDcka)>0 then + begin + arrID[l_loop]:= StrToInt(LeftStr(IDcka,Pos(',', IDcka)-1)); + IDcka:= MidStr(IDcka,Pos(',', IDcka)+1, 20*1024) + end + else + arrID[l_loop]:= StrToInt(IDcka); + end; + cRec:= arrID[0]; + end; + + vlastTbl:= vlastTbl.Replace('''', '').Replace(';',''); + + scrW:= Screen.WorkAreaWidth; + + case typAkce of + 1: begin + sql:= 'SELECT s.ID FROM ' + tblStrom + ' s LEFT JOIN ' + tblStromE + ' se ON (se.ID=s.ID) WHERE s.Cislo=N'; + sql:= sql + Helios.Sklad.QuotedString + ' AND ISNULL(se._App_Objednavka,0)=1'; + with Helios.OpenSQL(sql) do + if (RecordCount>0) then + begin + helUtils.waitStart(nil, 'Načítám historická data...', 0, 0); + if (scrW>1020) and (scrW<1030) then + begin + fOrd21024:= TformOrder21024.Create(nil); + try + fOrd21024.Helios:= Helios; + fOrd21024.jeTest:= jeTest; + fOrd21024.oznacKOdeslani:= (vlastTbl='1'); + fOrd21024.ShowModal; + finally + fOrd21024.Free; + end; + end + else + if (scrW>1360) and (scrW<1380) then + begin + fOrd21366:= TformOrder21366.Create(nil); + try + fOrd21366.Helios:= Helios; + fOrd21366.jeTest:= jeTest; + fOrd21366.oznacKOdeslani:= (vlastTbl='1'); + fOrd21366.ShowModal; + finally + fOrd21366.Free; + end; + end + else + begin + fOrd2:= TformOrder2.Create(nil); + try + fOrd2.Helios:= Helios; + fOrd2.jeTest:= jeTest; + fOrd2.oznacKOdeslani:= (vlastTbl='1'); + fOrd2.ShowModal; + finally + fOrd2.Free; + end; + end; + end + else + Helios.Error('Na tomto skladě není aplikace Objednávka povolena.'); + + helUtils.waitEnd; + end; + + 2: begin + if (Length(arrID)>1) then + Helios.Error(#1'Akci lze spustit pouze nad jednim dokladem'#1) + else + VytvorStornoVydejky(Helios, cRec); + end; + + 3: begin + if Length(arrId)>0 then + ZrusCertifikatEETTrzby(Helios, arrID); + end; + + 4: begin // z účtenky generuj výd/stor (plg) + if (Length(arrID)>1) then + Helios.Error(#1'Akci lze spustit pouze nad jednim dokladem'#1) + else +// VytvorVydejkaDoSpotreby(Helios, cRec); + if (vlastTbl<>'') and (LeftStr(vlastTbl,4)='dbo.') then + try + sql:= 'IF OBJECT_ID(N' + vlastTbl.QuotedString + ', N''P'') IS NOT NULL EXEC ' + vlastTbl + ' ' + cRec.ToString; + if (vlastTbl2<>'') then + sql:= sql + ', ' + vlastTbl2; + Helios.ExecSQL(sql); + except on E:Exception do + Helios.Error(#1'Chyba HDC plg (4) - '#1 + E.Message); + end; + end; + + 5: begin +// if (KontrolyLikvidaceOK(Helios)) then + begin + sql:= 'SELECT s.ID FROM ' + tblStrom + ' s LEFT JOIN ' + tblStromE + ' se ON (se.ID=s.ID) WHERE s.Cislo=N'; + sql:= sql + Helios.Sklad.QuotedString + ' AND ISNULL(se._App_Likvidace,0)=1'; + with Helios.OpenSQL(sql) do + if (RecordCount>0) then + begin + helUtils.waitStart(nil, 'Načítám data skladu...', 0, 0); + if (scrW>1020) and (scrW<1030) then + begin + fLikv1024:= TformLikvidace1024.Create(nil); + try + fLikv1024.Helios:= Helios; + fLikv1024.jeTest:= jeTest; + fLikv1024.ShowModal; + finally + fLikv1024.Free; + end; + end + else + begin + fLikv:= TformLikvidace.Create(nil); + try + fLikv.Helios:= Helios; + fLikv.jeTest:= jeTest; + fLikv.ShowModal; + finally + fLikv.Free; + end; + end + end + else + Helios.Error('Na tomto skladě není aplikace Likvidace povolena.'); + helUtils.waitEnd; + end; + end; + + 6: begin + sql:= 'SELECT ID FROM ' + tblPZ + ' WHERE DruhPohybuZbo=6 AND IDDoklad=' + cRec.ToString; + with Helios.OpenSQL(sql) do + if (RecordCount>0) then + begin + sql:= 'SELECT p.ID FROM ' + tblPZ + ' p LEFT JOIN ' + tblPZe + ' pe ON (pe.ID=p.ID) INNER JOIN ' + tblDZ + ' d ON (d.ID=p.IDDoklad) WHERE d.DruhPohybuZbo=6 AND d.ID=' + cRec.ToString; + sql:= sql + ' AND (p.Mnozstvi-p.MnOdebrane-p.MnozstviStorno)>0 AND d.Splneno=0'; + with Helios.OpenSQL(sql) do + if (RecordCount=0) then + begin + Helios.Error(#1'Vydaná objednávka je plně převedena do příjemky, akci nelze opakovat.'#1); + Exit; + end; + + helUtils.waitStart(nil, 'Načítám data objednávky...', 0, 0); + if (scrW>1020) and (scrW<1030) then + begin + fPrij1024:= TformPrijem1024.Create(nil); + try + fPrij1024.idDZ:= cRec; + fPrij1024.Helios:= Helios; + fPrij1024.jeTest:= jeTest; + fPrij1024.ShowModal; + finally + fPrij1024.Free; + end; + end + else + if (scrW>1360) then + begin + fPrij:= TformPrijem.Create(nil); + try + fPrij.idDZ:= cRec; + fPrij.Helios:= Helios; + fPrij.jeTest:= jeTest; + fPrij.ShowModal; + finally + fPrij.Free; + end; + end; + helUtils.waitEnd; + end + else + Helios.Error(#1'! Na dokladu Vydané objednávky nejsou položky !'#1); + end; + + 7: begin + sql:= 'SELECT s.ID FROM ' + tblStrom + ' s LEFT JOIN ' + tblStromE + ' se ON (se.ID=s.ID) WHERE s.Cislo=N'; + sql:= sql + Helios.Sklad.QuotedString + ' AND ISNULL(se._App_Zamena,0)=1'; + with Helios.OpenSQL(sql) do + if (RecordCount>0) then + begin + fZamena:= TformZamena.Create(nil); + try + fZamena.Helios:= Helios; + fZamena.jeTest:= jeTest; + fZamena.ShowModal; + finally + fZamena.Free; + end; + end + else + Helios.Error('Na tomto skladě není aplikace Záměna povolena.'); + end; + + 8: begin + if (cRec>0) then + begin + try + Helios.ExecSQL('IF OBJECT_ID(N''dbo.ep_HDC_NavazneDoklady'', N''P'') IS NOT NULL EXEC dbo.ep_HDC_NavazneDoklady @IDSrc=' + cRec.ToString); + Helios.OpenBrowse(231, ''); + except + end; + end; + end; + end; + + + + Helios.Refresh(true); + if (contInfo='NULL') then + Helios.ExecSQL('SET CONTEXT_INFO 0x00') + else + Helios.ExecSQL('SET CONTEXT_INFO 0x' + contInfo); // vymaz context v sys.sysprocesses + end; + +initialization + TComObjectFactory.Create(ComServer, TplgPolanskych, Class_plgPolanskych, 'runMe', '', ciMultiInstance, tmSingle); + TStyleManager.SystemHooks := []; +// stylWin10:= TStyleManager.LoadFromResource(HInstance, 'stylWin10Blue'); +// TStyleManager.SetStyle(stylWin10); + +finalization + +end. diff --git a/datModObj.dfm b/datModObj.dfm new file mode 100644 index 0000000..23f43b0 --- /dev/null +++ b/datModObj.dfm @@ -0,0 +1,277 @@ +object dmObj: TdmObj + Height = 240 + Width = 640 + PixelsPerInch = 96 + object vTabObj: TMemTableEh + Params = <> + Left = 24 + Top = 20 + object vTabPoradiSort: TSingleField + FieldName = 'PoradiSort' + Visible = False + end + object vTabK1: TStringField + FieldName = 'K1' + Size = 10 + end + object vTabK2: TStringField + FieldName = 'K2' + Size = 10 + end + object vTabSortiment: TStringField + FieldName = 'Sortiment' + Required = True + Size = 50 + end + object vTabIDZboSklad: TIntegerField + FieldName = 'IDZboSklad' + Visible = False + end + object vTabRegCis: TStringField + FieldName = 'RegCis' + Size = 30 + end + object vTabNazev: TStringField + FieldName = 'Nazev' + Size = 100 + end + object vTabRano: TFloatField + DisplayLabel = 'R'#225'no' + FieldName = 'Rano' + end + object vTabDoporuceno: TFloatField + FieldName = 'Doporuceno' + end + object vTabPoledne: TFloatField + FieldName = 'Poledne' + end + object vTabStavSkladu: TFloatField + DisplayLabel = 'Stav skladu' + FieldName = 'StavSkladu' + end + object vTabPriorita: TIntegerField + DisplayWidth = 10 + FieldName = 'Priorita' + Visible = False + end + object vTabCisloZbozi: TStringField + FieldName = 'CisloZbozi' + Visible = False + Size = 33 + end + object vTabIDKZ: TIntegerField + FieldName = 'IDKZ' + Visible = False + end + object vTabSkupZbo: TStringField + FieldName = 'SkupZbo' + Visible = False + Size = 3 + end + object vTabDodavatel: TIntegerField + FieldName = 'Dodavatel' + Visible = False + end + object vTabJenRano: TSmallintField + FieldName = 'JenRano' + Visible = False + end + object vTabMinimum: TFloatField + FieldName = 'Minimum' + Visible = False + end + object vTabDelitelnost: TFloatField + FieldName = 'Delitelnost' + Visible = False + end + object vTabPoradi: TSingleField + FieldName = 'Poradi' + Visible = False + end + object vTabK1K2: TStringField + FieldName = 'K1K2' + Visible = False + Size = 15 + end + object vTabPoradiSortNazev: TStringField + FieldName = 'PoradiSortNazev' + Size = 100 + end + object MemTableData: TMemTableDataEh + object DataStruct: TMTDataStructEh + object PoradiSortNazev: TMTStringDataFieldEh + FieldName = 'PoradiSortNazev' + StringDataType = fdtStringEh + DisplayWidth = 100 + Size = 100 + end + object Delitelnost: TMTNumericDataFieldEh + FieldName = 'Delitelnost' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object Minimum: TMTNumericDataFieldEh + FieldName = 'Minimum' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object JenRano: TMTNumericDataFieldEh + FieldName = 'JenRano' + NumericDataType = fdtSmallintEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object Dodavatel: TMTNumericDataFieldEh + FieldName = 'Dodavatel' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + Visible = False + currency = False + Precision = 15 + end + object SkupZbo: TMTStringDataFieldEh + FieldName = 'SkupZbo' + StringDataType = fdtStringEh + DisplayWidth = 3 + Visible = False + Size = 3 + end + object PoradiSort: TMTNumericDataFieldEh + FieldName = 'PoradiSort' + NumericDataType = fdtSingleEh + AutoIncrement = False + DisplayWidth = 20 + Visible = False + currency = False + Precision = 15 + end + object K1: TMTStringDataFieldEh + FieldName = 'K1' + StringDataType = fdtStringEh + DisplayWidth = 10 + Size = 10 + end + object K2: TMTStringDataFieldEh + FieldName = 'K2' + StringDataType = fdtStringEh + DisplayWidth = 10 + Size = 10 + end + object Sortiment: TMTStringDataFieldEh + FieldName = 'Sortiment' + StringDataType = fdtStringEh + DisplayWidth = 50 + Size = 50 + end + object IDZboSklad: TMTNumericDataFieldEh + FieldName = 'IDZboSklad' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object IDKZ: TMTNumericDataFieldEh + FieldName = 'IDKZ' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object RegCis: TMTStringDataFieldEh + FieldName = 'RegCis' + StringDataType = fdtStringEh + DisplayWidth = 10 + Size = 30 + end + object Nazev: TMTStringDataFieldEh + FieldName = 'Nazev' + StringDataType = fdtStringEh + DisplayWidth = 50 + Size = 100 + end + object StavSkladu: TMTNumericDataFieldEh + FieldName = 'StavSkladu' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayLabel = '0' + DisplayWidth = 20 + currency = False + Precision = 10 + end + object Doporuceno: TMTNumericDataFieldEh + FieldName = 'Doporuceno' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayLabel = '0' + DisplayWidth = 20 + currency = False + Precision = 10 + end + object Rano: TMTNumericDataFieldEh + FieldName = 'Rano' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayLabel = '0' + DisplayWidth = 20 + currency = False + Precision = 10 + end + object Poledne: TMTNumericDataFieldEh + FieldName = 'Poledne' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayLabel = '0' + DisplayWidth = 20 + currency = False + Precision = 10 + end + object K1K2: TMTStringDataFieldEh + FieldName = 'K1K2' + StringDataType = fdtStringEh + DisplayWidth = 20 + Visible = False + end + object Poradi: TMTNumericDataFieldEh + FieldName = 'Poradi' + NumericDataType = fdtSingleEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object Priorita: TMTNumericDataFieldEh + FieldName = 'Priorita' + NumericDataType = fdtSmallintEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 3 + end + object CisloZbozi: TMTStringDataFieldEh + FieldName = 'CisloZbozi' + StringDataType = fdtStringEh + DisplayWidth = 50 + Size = 33 + end + end + object RecordsList: TRecordsListEh + end + end + end + object dsObj: TDataSource + DataSet = vTabObj + Left = 85 + Top = 21 + end +end diff --git a/datModObj.pas b/datModObj.pas new file mode 100644 index 0000000..6da2c78 --- /dev/null +++ b/datModObj.pas @@ -0,0 +1,178 @@ +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 + Options = [mtoPersistentStructEh] + OnFilterRecord = vTabFilterRecord + Left = 27 + Top = 17 + object vTabPoradiSort: TSingleField + FieldName = 'PoradiSort' + Visible = False + end + object vTabPoradi: TSmallintField + DisplayLabel = 'Po'#345'ad'#237 + FieldName = 'Poradi' + DisplayFormat = '#0' + end + object vTabRegCis: TStringField + DisplayLabel = #268#237'slo' + FieldName = 'RegCis' + Required = True + Size = 30 + end + object vTabNazev1: TStringField + DisplayLabel = 'N'#225'zev' + FieldName = 'Nazev1' + Size = 100 + end + object vTabMnozstvi: TFloatField + DisplayLabel = 'Mno'#382'stv'#237 + FieldName = 'Mnozstvi' + OnValidate = vTabMnozstviValidate + DisplayFormat = '##0.##' + end + object vTabSkupZbo: TStringField + FieldName = 'SkupZbo' + Visible = False + Size = 3 + end + object vTabIDZboSklad: TIntegerField + FieldName = 'IDZboSklad' + Required = True + Visible = False + end + object vTabIDPohybZboziObj: TIntegerField + FieldName = 'IDPohybZboziObj' + Required = True + Visible = False + end + object vTabSortiment: TStringField + FieldName = 'Sortiment' + Size = 100 + end + object vTabK2: TStringField + FieldName = 'K2' + Size = 10 + end + object vTabK1: TStringField + FieldName = 'K1' + Size = 10 + end + object vTabTypZavozu: TStringField + FieldName = 'TypZavozu' + Visible = False + Size = 1 + end + object vTabPoradiExt: TSingleField + FieldName = 'PoradiExt' + Visible = False + end + object vTabK1K2: TStringField + FieldName = 'K1K2' + Visible = False + Size = 15 + end + object vTabPoradiSortNazev: TStringField + FieldName = 'PoradiSortNazev' + Size = 100 + end + object vTabJCbezDaniKc: TSingleField + FieldName = 'JCbezDaniKc' + end + object MemTableData: TMemTableDataEh + object DataStruct: TMTDataStructEh + object JCbezDaniKc: TMTNumericDataFieldEh + FieldName = 'JCbezDaniKc' + NumericDataType = fdtSingleEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object PoradiSortNazev: TMTStringDataFieldEh + FieldName = 'PoradiSortNazev' + StringDataType = fdtStringEh + DisplayWidth = 100 + Size = 100 + end + object PoradiExt: TMTNumericDataFieldEh + FieldName = 'PoradiExt' + NumericDataType = fdtSingleEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object PoradiSort: TMTNumericDataFieldEh + FieldName = 'PoradiSort' + NumericDataType = fdtSingleEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object Poradi: TMTNumericDataFieldEh + FieldName = 'Poradi' + NumericDataType = fdtSmallintEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object TypZavozu: TMTStringDataFieldEh + FieldName = 'TypZavozu' + StringDataType = fdtStringEh + DisplayWidth = 1 + Size = 1 + end + object Sortiment: TMTStringDataFieldEh + FieldName = 'Sortiment' + StringDataType = fdtStringEh + DisplayWidth = 100 + Size = 100 + end + object K2: TMTStringDataFieldEh + FieldName = 'K2' + StringDataType = fdtStringEh + DisplayWidth = 10 + Visible = False + Size = 10 + end + object K1: TMTStringDataFieldEh + FieldName = 'K1' + StringDataType = fdtStringEh + DisplayWidth = 10 + Visible = False + Size = 10 + end + object Nazev1: TMTStringDataFieldEh + FieldName = 'Nazev1' + StringDataType = fdtStringEh + DisplayWidth = 100 + Size = 100 + end + object RegCis: TMTStringDataFieldEh + FieldName = 'RegCis' + StringDataType = fdtStringEh + DisplayWidth = 30 + Required = True + Size = 30 + end + object SkupZbo: TMTStringDataFieldEh + FieldName = 'SkupZbo' + StringDataType = fdtStringEh + DisplayWidth = 3 + Visible = False + Size = 3 + end + object IDZboSklad: TMTNumericDataFieldEh + FieldName = 'IDZboSklad' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + Required = True + Visible = False + currency = False + Precision = 15 + end + object Mnozstvi: TMTNumericDataFieldEh + FieldName = 'Mnozstvi' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayLabel = '0' + DisplayWidth = 20 + DisplayFormat = '##0.##' + currency = False + Precision = 15 + end + object K1K2: TMTStringDataFieldEh + FieldName = 'K1K2' + StringDataType = fdtStringEh + DisplayWidth = 20 + Visible = False + end + object IDPohybZboziObj: TMTNumericDataFieldEh + FieldName = 'IDPohybZboziObj' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + Required = True + Visible = False + currency = False + Precision = 15 + end + end + object RecordsList: TRecordsListEh + end + end + end + object dsPrij: TDataSource + DataSet = vTabPrij + Left = 100 + Top = 18 + end +end diff --git a/datModPrij.pas b/datModPrij.pas new file mode 100644 index 0000000..e9ab30f --- /dev/null +++ b/datModPrij.pas @@ -0,0 +1,142 @@ +unit datModPrij; + +interface + +uses + System.SysUtils, System.Classes, MemTableDataEh, Data.DB, MemTableEh, ddPlugin_TLB; + +type + TdmPrij = class(TDataModule) + vTabPrij: TMemTableEh; + dsPrij: TDataSource; + vTabPoradiSort: TSingleField; + vTabPoradi: TSmallintField; + vTabPoradiSortNazev: TStringField; + vTabNazev1: TStringField; + vTabRegCis: TStringField; + vTabSkupZbo: TStringField; + vTabIDZboSklad: TIntegerField; + vTabMnozstvi: TFloatField; + vTabIDPohybZboziObj: TIntegerField; + vTabSortiment: TStringField; + vTabK2: TStringField; + vTabK1: TStringField; + vTabTypZavozu: TStringField; + vTabPoradiExt: TSingleField; + vTabK1K2: TStringField; + vTabJCbezDaniKc: TSingleField; + procedure vTabFilterRecord(DataSet: TDataSet; var Accept: Boolean); + procedure vTabMnozstviValidate(Sender: TField); + procedure vTabRanoValidate(Sender: TField); + procedure vTabPoledneValidate(Sender: TField); + private + public + Helios: IHelios; + end; + +var + dmPrij: TdmPrij; + + +implementation +uses frmPrijem; + +{%CLASSGROUP 'Vcl.Controls.TControl'} + +{$R *.dfm} + + + procedure TdmPrij.vTabFilterRecord(DataSet: TDataSet; var Accept: Boolean); + var t: string; + begin + if (vTabPrij.RecordCount>0) then + begin + t:= vTabPrij.FieldByName('TypZavozu').AsString; + case formPrijem.cbZavoz.ItemIndex of + 0: Accept:= (t='R'); + 1: Accept:= (t='P'); + end; + end; + end; + + + + + procedure TdmPrij.vTabMnozstviValidate(Sender: TField); + var canCont: Boolean; + mv, mm: Single; + begin + canCont:= true; + mv:= TField(Sender).AsFloat; + if (mv<0) then + canCont:=false; + + if not(canCont) then + TField(Sender).DataSet.Cancel; + end; + + + + + procedure TdmPrij.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 + DataGrouping.ParentColor = False + DataSource = dSource + DynProps = <> + GridLineParams.ColorScheme = glcsThemedEh + GridLineParams.VertEmptySpaceStyle = dessNonEh + IndicatorOptions = [] + Options = [dgEditing, dgTitles, dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit] + OptionsEh = [dghFixed3D, dghData3D, dghHighlightFocus, dghClearSelection, dghRowHighlight] + SelectionDrawParams.SelectionStyle = gsdsClassicEh + TabOrder = 0 + TitleParams.Color = clMoneyGreen + TitleParams.FillStyle = cfstSolidEh + TitleParams.MultiTitle = True + TitleParams.SecondColor = clMoneyGreen + OnGetCellParams = grdPolGetCellParams + Columns = < + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'NazevSort' + Footers = <> + MRUList.AutoAdd = False + STFilter.Visible = False + Visible = False + end + item + Alignment = taCenter + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'RegCis' + Footers = <> + ReadOnly = True + TextEditing = False + Title.Caption = 'Zbo'#382#237'|'#268#237'slo' + Width = 189 + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Nazev1' + Footers = <> + ReadOnly = True + TextEditing = False + Title.Caption = 'Zbo'#382#237'|N'#225'zev' + Width = 572 + end + item + Alignment = taCenter + CellButtons = <> + DisplayFormat = '###0.##' + DynProps = <> + EditButtons = <> + FieldName = 'StavSkladu' + Footers = <> + ReadOnly = True + TextEditing = False + Title.Caption = 'Mno'#382'stv'#237'|Stav skladu' + Width = 125 + end + item + Alignment = taCenter + CellButtons = <> + DisplayFormat = '###0.##' + DynProps = <> + EditButtons = <> + FieldName = 'KeVraceni' + Footers = <> + Layout = tlCenter + Title.Caption = 'Mno'#382'stv'#237'|Ke vr'#225'cen'#237 + Width = 124 + OnAdvDrawDataCell = grdPolColumns4AdvDrawDataCell + OnGetCellParams = grdPolColumns4GetCellParams + OnUpdateData = grdPolColumns4UpdateData + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Priorita' + Footers = <> + Visible = False + end> + object RowDetailData: TRowDetailPanelControlEh + end + end + end + object btnOK: TButton + Left = 1102 + Top = 66 + Width = 244 + Height = 69 + Anchors = [akTop, akRight] + Caption = 'Ulo'#382'it v'#253'dej k likvidaci' + TabOrder = 0 + OnClick = btnOKClick + end + object btnRozbalit: TButton + Left = 1102 + Top = 209 + Width = 244 + Height = 46 + Anchors = [akTop, akRight] + Caption = 'Rozbalit v'#353'e' + TabOrder = 2 + OnClick = btnRozbalitClick + end + object btnSbalit: TButton + Left = 1102 + Top = 277 + Width = 244 + Height = 45 + Anchors = [akTop, akRight] + Caption = 'Sbalit v'#353'e' + TabOrder = 3 + OnClick = btnSbalitClick + end + object btnZavrit: TButton + Left = 1102 + Top = 385 + Width = 244 + Height = 65 + Anchors = [akTop, akRight] + Caption = 'Zav'#345#237't (bez ulo'#382'en'#237')' + TabOrder = 4 + OnClick = btnZavritClick + end + object Button1: TButton + Left = 1089 + Top = 663 + Width = 166 + Height = 50 + Anchors = [akRight, akBottom] + Caption = '(HDC) Save tbl' + TabOrder = 5 + Visible = False + OnClick = Button1Click + end + object btnNuluj: TButton + Left = 1089 + Top = 594 + Width = 253 + Height = 50 + Anchors = [akRight, akBottom] + Caption = '(HDC) Vymazat mno'#382'stv'#237 + TabOrder = 6 + Visible = False + OnClick = btnNulujClick + end + object dSource: TDataSource + DataSet = vTab + Left = 1224 + Top = 10 + end + object vTab: TMemTableEh + Params = <> + Left = 1278 + Top = 12 + object vTabSortimentK1: TStringField + Alignment = taCenter + FieldName = 'K1' + Visible = False + Size = 10 + end + object vTabSortimentK2: TStringField + Alignment = taCenter + FieldName = 'K2' + Visible = False + Size = 10 + end + object vTabNazevSort: TStringField + DisplayLabel = 'Sortiment' + FieldName = 'NazevSort' + Size = 100 + end + object vTabSkupZbo: TStringField + FieldName = 'SkupZbo' + Visible = False + Size = 3 + end + object vTabRegCis: TStringField + FieldName = 'RegCis' + Size = 30 + end + object vTabNazev1: TStringField + FieldName = 'Nazev1' + Size = 100 + end + object vTabStavSkladu: TFloatField + FieldName = 'StavSkladu' + DisplayFormat = '0' + EditFormat = '0' + Precision = 2 + end + object vTabKeVraceni: TFloatField + FieldName = 'KeVraceni' + DisplayFormat = '0' + EditFormat = '0' + Precision = 2 + end + object vTabIDStavSkladu: TIntegerField + FieldName = 'IDStavSkladu' + Visible = False + end + object vTabAktDodavatel: TIntegerField + FieldName = 'AktDodavatel' + Visible = False + end + object vTabPriorita: TIntegerField + FieldName = 'Priorita' + Visible = False + end + object vTabPoradiSortNazev: TStringField + FieldName = 'PoradiSortNazev' + Visible = False + Size = 100 + end + object vTabK1K2: TStringField + FieldName = 'K1K2' + Visible = False + end + object vTabPoradiVSort: TSingleField + FieldName = 'PoradiVSort' + Visible = False + end + object MemTableData: TMemTableDataEh + object DataStruct: TMTDataStructEh + object PoradiVSort: TMTNumericDataFieldEh + FieldName = 'PoradiVSort' + NumericDataType = fdtSingleEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object K1K2: TMTStringDataFieldEh + FieldName = 'K1K2' + StringDataType = fdtStringEh + DisplayWidth = 20 + Visible = False + end + object PoradiSortNazev: TMTStringDataFieldEh + FieldName = 'PoradiSortNazev' + StringDataType = fdtStringEh + DisplayWidth = 20 + Visible = False + Size = 100 + end + object Priorita: TMTNumericDataFieldEh + FieldName = 'Priorita' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 2 + currency = False + Precision = 0 + end + object AktDodavatel: TMTNumericDataFieldEh + FieldName = 'AktDodavatel' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object IDStavSkladu: TMTNumericDataFieldEh + FieldName = 'IDStavSkladu' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object KeVraceni: TMTNumericDataFieldEh + FieldName = 'KeVraceni' + NumericDataType = fdtFloatEh + AutoIncrement = False + Alignment = taCenter + DisplayWidth = 20 + DisplayFormat = '0' + currency = False + Precision = 2 + end + object StavSkladu: TMTNumericDataFieldEh + FieldName = 'StavSkladu' + NumericDataType = fdtFloatEh + AutoIncrement = False + Alignment = taCenter + DisplayWidth = 20 + DisplayFormat = '0' + currency = False + Precision = 2 + end + object Nazev1: TMTStringDataFieldEh + FieldName = 'Nazev1' + StringDataType = fdtStringEh + DisplayWidth = 20 + Size = 100 + end + object RegCis: TMTStringDataFieldEh + FieldName = 'RegCis' + StringDataType = fdtStringEh + DisplayWidth = 20 + Size = 30 + end + object SkupZbo: TMTStringDataFieldEh + FieldName = 'SkupZbo' + StringDataType = fdtStringEh + DisplayWidth = 20 + Size = 3 + end + object NazevSort: TMTStringDataFieldEh + FieldName = 'NazevSort' + StringDataType = fdtStringEh + DisplayWidth = 20 + Size = 100 + end + object K2: TMTStringDataFieldEh + FieldName = 'K2' + StringDataType = fdtStringEh + DisplayWidth = 20 + Size = 10 + end + object K1: TMTStringDataFieldEh + FieldName = 'K1' + StringDataType = fdtStringEh + DisplayWidth = 20 + Size = 10 + end + end + object RecordsList: TRecordsListEh + end + end + end +end diff --git a/frmLikvidace.pas b/frmLikvidace.pas new file mode 100644 index 0000000..d1bff8a --- /dev/null +++ b/frmLikvidace.pas @@ -0,0 +1,426 @@ +unit frmLikvidace; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Types, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, System.ImageList, Vcl.StdCtrls, Vcl.Buttons, + Vcl.ComCtrls, ddPlugin_TLB, TBPackageU, Vcl.WinXPickers, Vcl.Mask, DBGridEhGrouping, ToolCtrlsEh, DBGridEhToolCtrls, + DynVarsEh, Data.DB, EhLibVCL, GridsEh, DBAxisGridsEh, DBGridEh, MemDS, MemTableDataEh, MemTableEh; + +type + TWideStringHelper = record helper for WideString + function QuotedString: string; overload; + end; + + TformLikvidace = class(TForm) + gbPolozky: TGroupBox; + btnOK: TButton; + btnRozbalit: TButton; + btnSbalit: TButton; + btnZavrit: TButton; + dSource: TDataSource; + vTab: TMemTableEh; + vTabSortimentK1: TStringField; + vTabSortimentK2: TStringField; + vTabSkupZbo: TStringField; + vTabRegCis: TStringField; + vTabNazev1: TStringField; + vTabStavSkladu: TFloatField; + vTabKeVraceni: TFloatField; + vTabNazevSort: TStringField; + Button1: TButton; + grdPol: TDBGridEh; + vTabIDStavSkladu: TIntegerField; + vTabAktDodavatel: TIntegerField; + vTabPriorita: TIntegerField; + vTabPoradiSortNazev: TStringField; + vTabK1K2: TStringField; + vTabPoradiVSort: TSingleField; + btnNuluj: TButton; + procedure FormShow(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure btnZavritClick(Sender: TObject); + procedure Button1Click(Sender: TObject); + procedure grdPolColumns4GetCellParams(Sender: TObject; EditMode: Boolean; Params: TColCellParamsEh); + procedure grdPolColumns4UpdateData(Sender: TObject; var Text: string; var Value: Variant; var UseText, + Handled: Boolean); + procedure btnRozbalitClick(Sender: TObject); + procedure btnSbalitClick(Sender: TObject); + procedure grdPolColumns4AdvDrawDataCell(Sender: TCustomDBGridEh; Cell, AreaCell: TGridCoord; Column: TColumnEh; + const ARect: TRect; var Params: TColCellParamsEh; var Processed: Boolean); + procedure btnOKClick(Sender: TObject); + procedure grdPolGetCellParams(Sender: TObject; Column: TColumnEh; AFont: TFont; var Background: TColor; + State: TGridDrawState); + procedure btnNulujClick(Sender: TObject); + private + procedure NactiData; + function ZjistiBranchID: Integer; + public + Helios: IHelios; + jeTest: boolean; + end; + +var + formLikvidace: TformLikvidace; + branchId: integer; + +implementation +uses System.StrUtils, System.RegularExpressions, helUtils; + +{$R *.dfm} + + +{$IF CompilerVersion>=34} // Sydney a vys +{$ENDIF} + + function TWideStringHelper.QuotedString: string; + begin + Result:= string(Self).QuotedString; + end; + + + + + function TformLikvidace.ZjistiBranchID: Integer; + var s: string; + begin + result:= -1; + s:= Helios.Sklad; + if (LeftStr(s, 3)='005') then + result:= RightStr(s, 1).ToInteger; + end; + + + + + + + procedure TformLikvidace.btnOKClick(Sender: TObject); + var lSQL, cZbo: string; + begin + if (Helios.YesNo('Opravdu uložit doklad k likvidaci ?', false)) then + begin + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabLikvidaceR'') IS NOT NULL DELETE FROM dbo._temp_TabLikvidaceR WHERE Autor=SUSER_SNAME()' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabLikvidaceR'') IS NOT NULL' + CRLF + ' IF NOT EXISTS(SELECT * FROM dbo._temp_TabLikvidaceR)' + CRLF; + lSQL:= lSQL + ' DROP TABLE dbo._temp_TabLikvidaceR' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''tempdb..#HDC_TabLikvidaceR'') IS NOT NULL DROP TABLE #HDC_TabLikvidaceR' + CRLF; + Helios.ExecSQL(lSQL); + + if (vTab.RecordCount>0) then + begin + lSQL:= lSQL + 'IF OBJECT_ID(N''tempdb..#HDC_TabLikvidaceR'') IS NULL' + CRLF; + lSQL:= lSQL + ' CREATE TABLE #HDC_TabLikvidaceR (ID INT IDENTITY(1,1) NOT NULL, Sklad NVARCHAR(30), Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME(), IDZboSklad INT NOT NULL'; + lSQL:= lSQL + ', Mnozstvi NUMERIC(15,4) NOT NULL DEFAULT 0.0, CisloZbozi NVARCHAR(33) NOT NULL, DatPorizeni DATETIME NOT NULL DEFAULT GETDATE())'; + if (jeTest) then + begin + lSQL:= lSQL.Replace('tempdb..#HDC_TabLi', 'dbo._temp_TabLi'); + lSQL:= lSQL.Replace('#HDC_TabLi', 'dbo._temp_TabLi'); + end; + Helios.ExecSQL(lSQL); + + vTab.First; + while not(vTab.Eof) do + begin + if (vTab.FieldByName('IDStavSkladu').AsInteger>0) and (vTab.FieldByName('KeVraceni').AsFloat>0) then + begin + cZbo:= vTab.FieldByName('SkupZbo').AsString + vTab.FieldByName('RegCis').AsString; + lSQL:= 'INSERT #HDC_TabLikvidaceR (IDZboSklad, Sklad, Mnozstvi, CisloZbozi) SELECT ' + vTab.FieldByName('IDStavSkladu').AsString + ', N' + Helios.Sklad.QuotedString + ', '; + lSQL:= lSQL + vTab.FieldByName('KeVraceni').AsString.Replace(',', '.') + ', N' + cZbo.QuotedString; + if (jeTest) then + lSQL:= lSQL.Replace('#HDC_TabLi', 'dbo._temp_TabLi'); + Helios.ExecSQL(lSQL); + end; + vTab.Next; + end; + + if not(jeTest) then + begin + helUtils.waitStart(self, 'Probíhá generování likvidace/výdejky...', 0, 0); + try + Helios.ExecSQL('IF OBJECT_ID(N''dbo.ep_HDC_App_Likvidace'') IS NOT NULL EXEC dbo.ep_HDC_App_Likvidace @Sklad=N' + Helios.Sklad.QuotedString); + except + end; + helUtils.waitEnd; + end; + Close; + end; + end; + end; + + + + + procedure TformLikvidace.btnRozbalitClick(Sender: TObject); + begin + grdPol.DataGrouping.ActiveGroupLevels[0].ExpandNodes; + end; + + + + + procedure TformLikvidace.btnSbalitClick(Sender: TObject); + begin + grdPol.DataGrouping.ActiveGroupLevels[0].CollapseNodes; + end; + + + + + + procedure TformLikvidace.btnZavritClick(Sender: TObject); + begin + Close; + end; + + + + procedure TformLikvidace.Button1Click(Sender: TObject); + var s: string; + begin + s:= ExtractFilePath(GetModuleName(hInstance)); + s:= GetEnvironmentVariable('USERPROFILE') + '/Desktop/'; + vTab.SaveToFile(s + 'data.vtd'); + Helios.Info(#1'Uloženo na plochu - data.vtd'#1); + end; + + + + + procedure TformLikvidace.btnNulujClick(Sender: TObject); + var i: integer; + begin + if (vTab.RecordCount>0) then + begin + i:= vTab.RecNo; + vTab.DisableControls; + vTab.First; + while not(vTab.Eof) do + begin + vTab.Edit; + vTab.FieldByName('KeVraceni').AsInteger:= 0; + vTab.Post; + vTab.Next; + end; + vTab.RecNo:= i; + vTab.EnableControls; + end; + end; + + + + + procedure TformLikvidace.FormClose(Sender: TObject; var Action: TCloseAction); + begin + if (vTab.Active) then + vTab.Close; + Action:= caFree; + end; + + + + + procedure TformLikvidace.NactiData; + var lSQL: string; + nazevSort, nazevSort2, K1, K2: string; + idSort: integer; + poradiSort, poradiSort2: Single; + begin + lSQL:= 'SELECT DISTINCT(k.IDSortiment) AS IDSortiment, s.K1, s.K2, s.Nazev FROM ' + tblKZ + ' k INNER JOIN ' + tblSortim + ' s ON (s.ID=k.IDSortiment)'; + lSQL:= lSQL + ' LEFT JOIN' + tblSortimE + ' se ON (se.ID=s.ID) INNER JOIN ' + tblSS + ' ss ON (ss.IDKmenZbozi=k.ID AND ss.IDSklad=N' + Helios.Sklad.QuotedString; + lSQL:= lSQL + ') WHERE (s.K1 IN (SELECT so.K1 FROM ' + tblSortim + ' so INNER JOIN ' + tblSortimE + ' soe ON (soe.ID=so.ID) WHERE soe._ProLikvidaci=1)'; + lSQL:= lSQL + ' OR ISNULL(se._ProLikvidaci,0)=1) AND ss.Mnozstvi>0 AND ISNULL(s.K2,N'''')<>N'''' ORDER BY s.Nazev'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + if not(vTab.Active) then + vTab.Open; + First; + while not(EOF) do + begin + idSort:= VarToStr(FieldByNameValues('IDSortiment')).ToInteger; + K1:= VarToStr(FieldByNameValues('K1')); + K2:= VarToStr(FieldByNameValues('K2')); + + lSQL:= 'SELECT ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)) FROM ' + tblSortim + ' s LEFT JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE K2 IS NULL AND K1=N' + k1.QuotedString; + poradiSort:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + + lSQL:= 'SELECT ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)) FROM ' + tblSortim + ' s LEFT JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE K3 IS NULL AND K2=N' + k2.QuotedString; + lSQL:= lSQL + ' AND K1=N' + k1.QuotedString; + poradiSort2:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + +{ + nazevSort:= K2 + ' ' + VarToStr(FieldByNameValues('Nazev')); + nazevSort2:= VarToStr(FieldByNameValues('Nazev')); + vTab.Append; + vTab.FieldByName('K1').AsString:= K1; + vTab.FieldByName('K2').AsString:= K2; + vTab.FieldByName('NazevSort').AsString:= nazevSort; + vTab.Post; +} + lSQL:= 'SELECT k.SkupZbo, k.RegCis, k.Nazev1, so.Nazev, s.Mnozstvi, s.ID AS idSS, ISNULL(k.Aktualni_Dodavatel, -1) AS Aktualni_Dodavatel, ISNULL(ke._priorita, 0) AS Priorita'; + lSQL:= lSQL + ', ISNULL(ke._poradivsortimentu, ISNULL(ke._poradivsortimentu, 999)) AS PoradiVSort'; + lSQL:= lSQL + ' FROM ' + tblKZ; + lSQL:= lSQL + ' k INNER JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) INNER JOIN ' + tblSortim + ' so ON (so.ID=k.IDSortiment) INNER JOIN '; + lSQL:= lSQL + tblSS + ' s ON (s.IDKmenZbozi=k.ID AND s.IDSklad=N' + Helios.Sklad.QuotedString + ') WHERE so.K1=N' + K1.QuotedString; + lSQL:= lSQL + ' AND so.K2=N' + K2.QuotedString + ' AND so.K3 IS NULL AND s.Mnozstvi>0 ORDER BY k.SkupZbo, k.RegCis'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + First; + while not(EOF) do + begin + vTab.Append; + vTab.FieldByName('K1').AsString:= K1; + vTab.FieldByName('K2').AsString:= K2; + vTab.FieldByName('K1K2').AsString:= K1+K2; + vTab.FieldByName('PoradiSortNazev').AsString:= ((poradiSort*1000.0)+poradiSort2).ToString.Replace(',', '.') + ' ' + nazevSort2; + vTab.FieldByName('NazevSort').AsString:= nazevSort2; + vTab.FieldByName('SkupZbo').AsString:= VarToStr(FieldByNameValues('SkupZbo')); + vTab.FieldByName('RegCis').AsString:= VarToStr(FieldByNameValues('RegCis')); + vTab.FieldByName('Nazev1').AsString:= VarToStr(FieldByNameValues('Nazev1')); + vTab.FieldByName('StavSkladu').AsFloat:= VarToStr(FieldByNameValues('Mnozstvi')).ToSingle; + vTab.FieldByName('KeVraceni').AsFloat:= VarToStr(FieldByNameValues('Mnozstvi')).ToSingle; + vTab.FieldByName('IDStavSkladu').AsInteger:= VarToStr(FieldByNameValues('idSS')).ToInteger; + vTab.FieldByName('AktDodavatel').AsInteger:= VarToStr(FieldByNameValues('Aktualni_Dodavatel')).ToInteger; + vTab.FieldByName('Priorita').AsInteger:= VarToStr(FieldByNameValues('Priorita')).ToInteger; + vTab.FieldByName('PoradiVSort').AsSingle:= VarToStr(FieldByNameValues('PoradiVSort')).ToSingle; + vTab.Post; + Next; + end; + end; + + Next; + end; + + vTab.SortByFields('PoradiSortNazev, PoradiVSort, SkupZbo, RegCis'); + + vTab.First; + vTab.DisableControls; + while not(vTab.Eof) do + begin + if (vTab.FieldByName('K1').AsString='') then + vTab.Delete; + vTab.Next; + end; + vTab.First; + vTab.EnableControls; + grdPol.Invalidate; + end; + + helUtils.waitEnd; + + end; + + + + + procedure TformLikvidace.FormShow(Sender: TObject); + var rHeight: integer; + lSQL: string; + begin + UseLatestCommonDialogs:= true; + self.SetBounds(Screen.WorkAreaRect.Left, 0, Screen.WorkAreaRect.Width, Screen.WorkAreaRect.Height); + + branchId:= ZjistiBranchID; + + if (Helios.LoginName='hdc') then + Button1.Visible:= true; + +{ + grd.RowCount:= 2; + grd.FixedRows:= 1; + + rHeight:= grd.Canvas.TextHeight('Áý'); + grd.DefaultRowHeight:= grd.Font.Size + 18; + +// grd.RowHeights[1]:= grd.Canvas.TextHeight('Akce') + 4; + grd.Cells[0, 0]:= 'Akce'; + grd.Cells[1, 0]:= 'Číslo'; + grd.Cells[2, 0]:= 'Název'; + grd.Cells[3, 0]:= 'Doporučeno'; + grd.Cells[4, 0]:= 'Ráno'; + grd.Cells[5, 0]:= 'Poledne'; +} + + btnNuluj.Visible:= (Helios.LoginName='hdc'); + + NactiData; + end; + + + + procedure TformLikvidace.grdPolColumns4AdvDrawDataCell(Sender: TCustomDBGridEh; Cell, AreaCell: TGridCoord; + Column: TColumnEh; const ARect: TRect; var Params: TColCellParamsEh; var Processed: Boolean); + var x: single; + begin + if (vTab.FieldByName('StavSkladu').AsSingle<>vTab.FieldByName('KeVraceni').AsSingle) then + Params.Background:= $00A4A4FF; + end; + + + + + procedure TformLikvidace.grdPolColumns4GetCellParams(Sender: TObject; EditMode: Boolean; Params: TColCellParamsEh); + begin + Params.Alignment:= taCenter; + end; + + + + + procedure TformLikvidace.grdPolColumns4UpdateData(Sender: TObject; var Text: string; var Value: Variant; var UseText, Handled: Boolean); + var s: single; + begin + Text:= Text.Trim.Replace(' ', '').Replace('.', ','); + if not(VarIsNull(Value)) then + if (Text='') then + begin + Helios.Error(#1'Musíte zadat číslo'#1); + Handled:= true; + end + else + begin + if not(TryStrToFloat(Text,s)) then + s:= 0; + if ((s<0) or (s>vTab.FieldByName('StavSkladu').AsSingle)) then + begin + Helios.Error(#1'Nelze vrátit množství menší než 0 a větší než je skladem'#1); + Handled:= true; + end; + end; + end; + + + + + procedure TformLikvidace.grdPolGetCellParams(Sender: TObject; Column: TColumnEh; AFont: TFont; var Background: TColor; State: TGridDrawState); + begin +// if (State<>[]) then +// if (gdRowSelected in State) then + if (Column.FieldName='KeVraceni') then + Background:= grdPol.Color; + if (vTab.FieldByName('Priorita').AsInteger=1) or (vTab.FieldByName('Priorita').AsInteger=2) then + Background:= clSilver; + end; + + + + + end. diff --git a/frmLikvidace1024.dfm b/frmLikvidace1024.dfm new file mode 100644 index 0000000..8a761e5 --- /dev/null +++ b/frmLikvidace1024.dfm @@ -0,0 +1,384 @@ +object formLikvidace1024: TformLikvidace1024 + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = ' V'#221'DEJ ZBO'#381#205' K LIKVIDACI' + ClientHeight = 729 + ClientWidth = 1008 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + Position = poOwnerFormCenter + OnClose = FormClose + OnShow = FormShow + PixelsPerInch = 96 + DesignSize = ( + 1008 + 729) + TextHeight = 23 + object gbPolozky: TGroupBox + Left = 7 + Top = 12 + Width = 746 + Height = 700 + Anchors = [akLeft, akTop, akRight, akBottom] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + object grdPol: TDBGridEh + Left = 2 + Top = 27 + Width = 742 + Height = 671 + Align = alClient + AllowedSelections = [] + DataGrouping.Active = True + DataGrouping.Color = 13425149 + DataGrouping.GroupLevels = < + item + ColumnName = 'Column_0_NazevSort' + end> + DataGrouping.ParentColor = False + DataSource = dSource + DynProps = <> + GridLineParams.ColorScheme = glcsThemedEh + GridLineParams.VertEmptySpaceStyle = dessNonEh + IndicatorOptions = [] + Options = [dgEditing, dgTitles, dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit] + OptionsEh = [dghFixed3D, dghData3D, dghHighlightFocus, dghClearSelection, dghRowHighlight] + SelectionDrawParams.SelectionStyle = gsdsClassicEh + TabOrder = 0 + TitleParams.Color = clMoneyGreen + TitleParams.FillStyle = cfstSolidEh + TitleParams.MultiTitle = True + TitleParams.SecondColor = clMoneyGreen + OnGetCellParams = grdPolGetCellParams + Columns = < + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'NazevSort' + Footers = <> + MRUList.AutoAdd = False + STFilter.Visible = False + Visible = False + end + item + Alignment = taCenter + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'RegCis' + Footers = <> + ReadOnly = True + TextEditing = False + Title.Caption = 'Zbo'#382#237'|'#268#237'slo' + Width = 150 + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Nazev1' + Footers = <> + ReadOnly = True + TextEditing = False + Title.Caption = 'Zbo'#382#237'|N'#225'zev' + Width = 374 + end + item + Alignment = taCenter + CellButtons = <> + DisplayFormat = '###0.##' + DynProps = <> + EditButtons = <> + FieldName = 'StavSkladu' + Footers = <> + ReadOnly = True + TextEditing = False + Title.Caption = 'Mno'#382'stv'#237'|Stav skl.' + Width = 93 + end + item + Alignment = taCenter + CellButtons = <> + DisplayFormat = '###0.##' + DynProps = <> + EditButtons = <> + FieldName = 'KeVraceni' + Footers = <> + Layout = tlCenter + Title.Caption = 'Mno'#382'stv'#237'|Vr'#225'tit' + Width = 85 + OnAdvDrawDataCell = grdPolColumns4AdvDrawDataCell + OnGetCellParams = grdPolColumns4GetCellParams + OnUpdateData = grdPolColumns4UpdateData + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Priorita' + Footers = <> + Visible = False + end> + object RowDetailData: TRowDetailPanelControlEh + end + end + end + object btnOK: TButton + Left = 770 + Top = 66 + Width = 221 + Height = 69 + Anchors = [akTop, akRight] + Caption = 'Ulo'#382'it v'#253'dej k likvidaci' + TabOrder = 0 + OnClick = btnOKClick + end + object btnRozbalit: TButton + Left = 770 + Top = 209 + Width = 221 + Height = 46 + Anchors = [akTop, akRight] + Caption = 'Rozbalit v'#353'e' + TabOrder = 2 + OnClick = btnRozbalitClick + end + object btnSbalit: TButton + Left = 770 + Top = 277 + Width = 221 + Height = 45 + Anchors = [akTop, akRight] + Caption = 'Sbalit v'#353'e' + TabOrder = 3 + OnClick = btnSbalitClick + end + object btnZavrit: TButton + Left = 770 + Top = 385 + Width = 221 + Height = 65 + Anchors = [akTop, akRight] + Caption = 'Zav'#345#237't (bez ulo'#382'en'#237')' + TabOrder = 4 + OnClick = btnZavritClick + end + object Button1: TButton + Left = 791 + Top = 639 + Width = 166 + Height = 50 + Anchors = [akRight, akBottom] + Caption = '(HDC) Save tbl' + TabOrder = 5 + Visible = False + OnClick = Button1Click + end + object btnNuluj: TButton + Left = 764 + Top = 579 + Width = 229 + Height = 50 + Anchors = [akRight, akBottom] + Caption = '(HDC) Vymazat mno'#382'stv'#237 + TabOrder = 6 + Visible = False + OnClick = btnNulujClick + end + object dSource: TDataSource + DataSet = vTab + Left = 1224 + Top = 10 + end + object vTab: TMemTableEh + Params = <> + Left = 1278 + Top = 12 + object vTabSortimentK1: TStringField + Alignment = taCenter + FieldName = 'K1' + Visible = False + Size = 10 + end + object vTabSortimentK2: TStringField + Alignment = taCenter + FieldName = 'K2' + Visible = False + Size = 10 + end + object vTabNazevSort: TStringField + DisplayLabel = 'Sortiment' + FieldName = 'NazevSort' + Size = 100 + end + object vTabSkupZbo: TStringField + FieldName = 'SkupZbo' + Visible = False + Size = 3 + end + object vTabRegCis: TStringField + FieldName = 'RegCis' + Size = 30 + end + object vTabNazev1: TStringField + FieldName = 'Nazev1' + Size = 100 + end + object vTabStavSkladu: TFloatField + FieldName = 'StavSkladu' + DisplayFormat = '0' + EditFormat = '0' + Precision = 2 + end + object vTabKeVraceni: TFloatField + FieldName = 'KeVraceni' + DisplayFormat = '0' + EditFormat = '0' + Precision = 2 + end + object vTabIDStavSkladu: TIntegerField + FieldName = 'IDStavSkladu' + Visible = False + end + object vTabAktDodavatel: TIntegerField + FieldName = 'AktDodavatel' + Visible = False + end + object vTabPriorita: TIntegerField + FieldName = 'Priorita' + Visible = False + end + object vTabPoradiSortNazev: TStringField + FieldName = 'PoradiSortNazev' + Visible = False + Size = 100 + end + object vTabK1K2: TStringField + FieldName = 'K1K2' + Visible = False + end + object vTabPoradiVSort: TSingleField + FieldName = 'PoradiVSort' + Visible = False + end + object MemTableData: TMemTableDataEh + object DataStruct: TMTDataStructEh + object PoradiVSort: TMTNumericDataFieldEh + FieldName = 'PoradiVSort' + NumericDataType = fdtSingleEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object K1K2: TMTStringDataFieldEh + FieldName = 'K1K2' + StringDataType = fdtStringEh + DisplayWidth = 20 + Visible = False + end + object PoradiSortNazev: TMTStringDataFieldEh + FieldName = 'PoradiSortNazev' + StringDataType = fdtStringEh + DisplayWidth = 20 + Visible = False + Size = 100 + end + object Priorita: TMTNumericDataFieldEh + FieldName = 'Priorita' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 2 + currency = False + Precision = 0 + end + object AktDodavatel: TMTNumericDataFieldEh + FieldName = 'AktDodavatel' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object IDStavSkladu: TMTNumericDataFieldEh + FieldName = 'IDStavSkladu' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object KeVraceni: TMTNumericDataFieldEh + FieldName = 'KeVraceni' + NumericDataType = fdtFloatEh + AutoIncrement = False + Alignment = taCenter + DisplayWidth = 20 + DisplayFormat = '0' + currency = False + Precision = 2 + end + object StavSkladu: TMTNumericDataFieldEh + FieldName = 'StavSkladu' + NumericDataType = fdtFloatEh + AutoIncrement = False + Alignment = taCenter + DisplayWidth = 20 + DisplayFormat = '0' + currency = False + Precision = 2 + end + object Nazev1: TMTStringDataFieldEh + FieldName = 'Nazev1' + StringDataType = fdtStringEh + DisplayWidth = 20 + Size = 100 + end + object RegCis: TMTStringDataFieldEh + FieldName = 'RegCis' + StringDataType = fdtStringEh + DisplayWidth = 20 + Size = 30 + end + object SkupZbo: TMTStringDataFieldEh + FieldName = 'SkupZbo' + StringDataType = fdtStringEh + DisplayWidth = 20 + Size = 3 + end + object NazevSort: TMTStringDataFieldEh + FieldName = 'NazevSort' + StringDataType = fdtStringEh + DisplayWidth = 20 + Size = 100 + end + object K2: TMTStringDataFieldEh + FieldName = 'K2' + StringDataType = fdtStringEh + DisplayWidth = 20 + Size = 10 + end + object K1: TMTStringDataFieldEh + FieldName = 'K1' + StringDataType = fdtStringEh + DisplayWidth = 20 + Size = 10 + end + end + object RecordsList: TRecordsListEh + end + end + end +end diff --git a/frmLikvidace1024.pas b/frmLikvidace1024.pas new file mode 100644 index 0000000..a3f1a1a --- /dev/null +++ b/frmLikvidace1024.pas @@ -0,0 +1,423 @@ +unit frmLikvidace1024; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Types, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, System.ImageList, Vcl.StdCtrls, Vcl.Buttons, + Vcl.ComCtrls, ddPlugin_TLB, TBPackageU, Vcl.WinXPickers, Vcl.Mask, DBGridEhGrouping, ToolCtrlsEh, DBGridEhToolCtrls, + DynVarsEh, Data.DB, EhLibVCL, GridsEh, DBAxisGridsEh, DBGridEh, MemDS, MemTableDataEh, MemTableEh; + +type + TWideStringHelper = record helper for WideString + function QuotedString: string; overload; + end; + + TformLikvidace1024 = class(TForm) + gbPolozky: TGroupBox; + btnOK: TButton; + btnRozbalit: TButton; + btnSbalit: TButton; + btnZavrit: TButton; + dSource: TDataSource; + vTab: TMemTableEh; + vTabSortimentK1: TStringField; + vTabSortimentK2: TStringField; + vTabSkupZbo: TStringField; + vTabRegCis: TStringField; + vTabNazev1: TStringField; + vTabStavSkladu: TFloatField; + vTabKeVraceni: TFloatField; + vTabNazevSort: TStringField; + Button1: TButton; + grdPol: TDBGridEh; + vTabIDStavSkladu: TIntegerField; + vTabAktDodavatel: TIntegerField; + vTabPriorita: TIntegerField; + vTabPoradiSortNazev: TStringField; + vTabK1K2: TStringField; + vTabPoradiVSort: TSingleField; + btnNuluj: TButton; + procedure FormShow(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure btnZavritClick(Sender: TObject); + procedure Button1Click(Sender: TObject); + procedure grdPolColumns4GetCellParams(Sender: TObject; EditMode: Boolean; Params: TColCellParamsEh); + procedure grdPolColumns4UpdateData(Sender: TObject; var Text: string; var Value: Variant; var UseText, + Handled: Boolean); + procedure btnRozbalitClick(Sender: TObject); + procedure btnSbalitClick(Sender: TObject); + procedure grdPolColumns4AdvDrawDataCell(Sender: TCustomDBGridEh; Cell, AreaCell: TGridCoord; Column: TColumnEh; + const ARect: TRect; var Params: TColCellParamsEh; var Processed: Boolean); + procedure btnOKClick(Sender: TObject); + procedure grdPolGetCellParams(Sender: TObject; Column: TColumnEh; AFont: TFont; var Background: TColor; + State: TGridDrawState); + procedure btnNulujClick(Sender: TObject); + private + procedure NactiData; + function ZjistiBranchID: Integer; + public + Helios: IHelios; + jeTest: boolean; + end; + +var + formLikvidace1024: TformLikvidace1024; + branchId: integer; + +implementation +uses System.StrUtils, helUtils; + +{$R *.dfm} + + +{$IF CompilerVersion>=34} // Sydney a vys +{$ENDIF} + + function TWideStringHelper.QuotedString: string; + begin + Result:= string(Self).QuotedString; + end; + + + + + function TformLikvidace1024.ZjistiBranchID: Integer; + var s: string; + begin + result:= -1; + s:= Helios.Sklad; + if (LeftStr(s, 3)='005') then + result:= RightStr(s, 1).ToInteger; + end; + + + + + + + procedure TformLikvidace1024.btnOKClick(Sender: TObject); + var lSQL, cZbo: string; + begin + if (Helios.YesNo('Opravdu uložit doklad k likvidaci ?', false)) then + begin + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabLikvidaceR'') IS NOT NULL DELETE FROM dbo._temp_TabLikvidaceR WHERE Autor=SUSER_SNAME()' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabLikvidaceR'') IS NOT NULL' + CRLF + ' IF NOT EXISTS(SELECT * FROM dbo._temp_TabLikvidaceR)' + CRLF; + lSQL:= lSQL + ' DROP TABLE dbo._temp_TabLikvidaceR' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''tempdb..#HDC_TabLikvidaceR'') IS NOT NULL DROP TABLE #HDC_TabLikvidaceR' + CRLF; + Helios.ExecSQL(lSQL); + + if (vTab.RecordCount>0) then + begin + lSQL:= lSQL + 'IF OBJECT_ID(N''tempdb..#HDC_TabLikvidaceR'') IS NULL' + CRLF; + lSQL:= lSQL + ' CREATE TABLE #HDC_TabLikvidaceR (ID INT IDENTITY(1,1) NOT NULL, Sklad NVARCHAR(30), Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME(), IDZboSklad INT NOT NULL'; + lSQL:= lSQL + ', Mnozstvi NUMERIC(15,4) NOT NULL DEFAULT 0.0, CisloZbozi NVARCHAR(33) NOT NULL, DatPorizeni DATETIME NOT NULL DEFAULT GETDATE())'; + if (jeTest) then + begin + lSQL:= lSQL.Replace('tempdb..#HDC_TabLi', 'dbo._temp_TabLi'); + lSQL:= lSQL.Replace('#HDC_TabLi', 'dbo._temp_TabLi'); + end; + Helios.ExecSQL(lSQL); + + vTab.First; + while not(vTab.Eof) do + begin + if (vTab.FieldByName('IDStavSkladu').AsInteger>0) and (vTab.FieldByName('KeVraceni').AsFloat>0) then + begin + cZbo:= vTab.FieldByName('SkupZbo').AsString + vTab.FieldByName('RegCis').AsString; + lSQL:= 'INSERT #HDC_TabLikvidaceR (IDZboSklad, Sklad, Mnozstvi, CisloZbozi) SELECT ' + vTab.FieldByName('IDStavSkladu').AsString + ', N' + Helios.Sklad.QuotedString + ', '; + lSQL:= lSQL + vTab.FieldByName('KeVraceni').AsString.Replace(',', '.') + ', N' + cZbo.QuotedString; + if (jeTest) then + lSQL:= lSQL.Replace('#HDC_TabLi', 'dbo._temp_TabLi'); + Helios.ExecSQL(lSQL); + end; + vTab.Next; + end; + + if not(jeTest) then + begin + helUtils.waitStart(self, 'Probíhá generování likvidace/výdejky...', 0, 0); + try + Helios.ExecSQL('IF OBJECT_ID(N''dbo.ep_HDC_App_Likvidace'') IS NOT NULL EXEC dbo.ep_HDC_App_Likvidace @Sklad=N' + Helios.Sklad.QuotedString); + except + end; + helUtils.waitEnd; + end; + Close; + end; + end; + end; + + + + + procedure TformLikvidace1024.btnRozbalitClick(Sender: TObject); + begin + grdPol.DataGrouping.ActiveGroupLevels[0].ExpandNodes; + end; + + + + + procedure TformLikvidace1024.btnSbalitClick(Sender: TObject); + begin + grdPol.DataGrouping.ActiveGroupLevels[0].CollapseNodes; + end; + + + + + + procedure TformLikvidace1024.btnZavritClick(Sender: TObject); + begin + Close; + end; + + + + procedure TformLikvidace1024.Button1Click(Sender: TObject); + var s: string; + begin + s:= ExtractFilePath(GetModuleName(hInstance)); + s:= GetEnvironmentVariable('USERPROFILE') + '/Desktop/'; + vTab.SaveToFile(s + 'data.vtd'); + Helios.Info(#1'Uloženo na plochu - data.vtd'#1); + end; + + + + + procedure TformLikvidace1024.btnNulujClick(Sender: TObject); + var i: integer; + begin + if (vTab.RecordCount>0) then + begin + i:= vTab.RecNo; + vTab.DisableControls; + vTab.First; + while not(vTab.Eof) do + begin + vTab.Edit; + vTab.FieldByName('KeVraceni').AsInteger:= 0; + vTab.Post; + vTab.Next; + end; + vTab.RecNo:= i; + vTab.EnableControls; + end; + end; + + + + + procedure TformLikvidace1024.FormClose(Sender: TObject; var Action: TCloseAction); + begin + if (vTab.Active) then + vTab.Close; + Action:= caFree; + end; + + + + + procedure TformLikvidace1024.NactiData; + var lSQL: string; + nazevSort, nazevSort2, K1, K2: string; + idSort: integer; + poradiSort, poradiSort2: Single; + begin + lSQL:= 'SELECT DISTINCT(k.IDSortiment) AS IDSortiment, s.K1, s.K2, s.Nazev FROM ' + tblKZ + ' k INNER JOIN ' + tblSortim + ' s ON (s.ID=k.IDSortiment)'; + lSQL:= lSQL + ' LEFT JOIN' + tblSortimE + ' se ON (se.ID=s.ID) INNER JOIN ' + tblSS + ' ss ON (ss.IDKmenZbozi=k.ID AND ss.IDSklad=N' + Helios.Sklad.QuotedString; + lSQL:= lSQL + ') WHERE (s.K1 IN (SELECT so.K1 FROM ' + tblSortim + ' so INNER JOIN ' + tblSortimE + ' soe ON (soe.ID=so.ID) WHERE soe._ProLikvidaci=1)'; + lSQL:= lSQL + ' OR ISNULL(se._ProLikvidaci,0)=1) AND ss.Mnozstvi>0 AND ISNULL(s.K2,N'''')<>N'''' ORDER BY s.Nazev'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + if not(vTab.Active) then + vTab.Open; + First; + while not(EOF) do + begin + idSort:= VarToStr(FieldByNameValues('IDSortiment')).ToInteger; + K1:= VarToStr(FieldByNameValues('K1')); + K2:= VarToStr(FieldByNameValues('K2')); + + lSQL:= 'SELECT ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)) FROM ' + tblSortim + ' s LEFT JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE K2 IS NULL AND K1=N' + k1.QuotedString; + poradiSort:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + + lSQL:= 'SELECT ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)) FROM ' + tblSortim + ' s LEFT JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE K3 IS NULL AND K2=N' + k2.QuotedString; + lSQL:= lSQL + ' AND K1=N' + k1.QuotedString; + poradiSort2:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + +{ + nazevSort:= K2 + ' ' + VarToStr(FieldByNameValues('Nazev')); + nazevSort2:= VarToStr(FieldByNameValues('Nazev')); + vTab.Append; + vTab.FieldByName('K1').AsString:= K1; + vTab.FieldByName('K2').AsString:= K2; + vTab.FieldByName('NazevSort').AsString:= nazevSort; + vTab.Post; +} + lSQL:= 'SELECT k.SkupZbo, k.RegCis, k.Nazev1, so.Nazev, s.Mnozstvi, s.ID AS idSS, ISNULL(k.Aktualni_Dodavatel, -1) AS Aktualni_Dodavatel, ISNULL(ke._priorita, 0) AS Priorita'; + lSQL:= lSQL + ', ISNULL(ke._poradivsortimentu, ISNULL(ke._poradivsortimentu, 999)) AS PoradiVSort'; + lSQL:= lSQL + ' FROM ' + tblKZ; + lSQL:= lSQL + ' k INNER JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) INNER JOIN ' + tblSortim + ' so ON (so.ID=k.IDSortiment) INNER JOIN '; + lSQL:= lSQL + tblSS + ' s ON (s.IDKmenZbozi=k.ID AND s.IDSklad=N' + Helios.Sklad.QuotedString + ') WHERE so.K1=N' + K1.QuotedString; + lSQL:= lSQL + ' AND so.K2=N' + K2.QuotedString + ' AND so.K3 IS NULL AND s.Mnozstvi>0 ORDER BY k.SkupZbo, k.RegCis'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + First; + while not(EOF) do + begin + vTab.Append; + vTab.FieldByName('K1').AsString:= K1; + vTab.FieldByName('K2').AsString:= K2; + vTab.FieldByName('K1K2').AsString:= K1+K2; + vTab.FieldByName('PoradiSortNazev').AsString:= ((poradiSort*1000.0)+poradiSort2).ToString.Replace(',', '.') + ' ' + nazevSort2; + vTab.FieldByName('NazevSort').AsString:= nazevSort2; + vTab.FieldByName('SkupZbo').AsString:= VarToStr(FieldByNameValues('SkupZbo')); + vTab.FieldByName('RegCis').AsString:= VarToStr(FieldByNameValues('RegCis')); + vTab.FieldByName('Nazev1').AsString:= VarToStr(FieldByNameValues('Nazev1')); + vTab.FieldByName('StavSkladu').AsFloat:= VarToStr(FieldByNameValues('Mnozstvi')).ToSingle; + vTab.FieldByName('KeVraceni').AsFloat:= VarToStr(FieldByNameValues('Mnozstvi')).ToSingle; + vTab.FieldByName('IDStavSkladu').AsInteger:= VarToStr(FieldByNameValues('idSS')).ToInteger; + vTab.FieldByName('AktDodavatel').AsInteger:= VarToStr(FieldByNameValues('Aktualni_Dodavatel')).ToInteger; + vTab.FieldByName('Priorita').AsInteger:= VarToStr(FieldByNameValues('Priorita')).ToInteger; + vTab.FieldByName('PoradiVSort').AsSingle:= VarToStr(FieldByNameValues('PoradiVSort')).ToSingle; + vTab.Post; + Next; + end; + end; + + Next; + end; + + vTab.SortByFields('PoradiSortNazev, PoradiVSort, SkupZbo, RegCis'); + + vTab.First; + vTab.DisableControls; + while not(vTab.Eof) do + begin + if (vTab.FieldByName('K1').AsString='') then + vTab.Delete; + vTab.Next; + end; + vTab.First; + vTab.EnableControls; + grdPol.Invalidate; + end; + + helUtils.waitEnd; + + end; + + + + + procedure TformLikvidace1024.FormShow(Sender: TObject); + var rHeight: integer; + lSQL: string; + begin + UseLatestCommonDialogs:= true; + self.SetBounds(Screen.WorkAreaRect.Left, 0, Screen.WorkAreaRect.Width, Screen.WorkAreaRect.Height); + + branchId:= ZjistiBranchID; + + if (Helios.LoginName='hdc') then + Button1.Visible:= true; + +{ + grd.RowCount:= 2; + grd.FixedRows:= 1; + + rHeight:= grd.Canvas.TextHeight('Áý'); + grd.DefaultRowHeight:= grd.Font.Size + 18; + +// grd.RowHeights[1]:= grd.Canvas.TextHeight('Akce') + 4; + grd.Cells[0, 0]:= 'Akce'; + grd.Cells[1, 0]:= 'Číslo'; + grd.Cells[2, 0]:= 'Název'; + grd.Cells[3, 0]:= 'Doporučeno'; + grd.Cells[4, 0]:= 'Ráno'; + grd.Cells[5, 0]:= 'Poledne'; +} + + btnNuluj.Visible:= (Helios.LoginName='hdc'); + + NactiData; + end; + + + + procedure TformLikvidace1024.grdPolColumns4AdvDrawDataCell(Sender: TCustomDBGridEh; Cell, AreaCell: TGridCoord; + Column: TColumnEh; const ARect: TRect; var Params: TColCellParamsEh; var Processed: Boolean); + var x: single; + begin + if (vTab.FieldByName('StavSkladu').AsSingle<>vTab.FieldByName('KeVraceni').AsSingle) then + Params.Background:= $00A4A4FF; + end; + + + + procedure TformLikvidace1024.grdPolColumns4GetCellParams(Sender: TObject; EditMode: Boolean; Params: TColCellParamsEh); + begin + Params.Alignment:= taCenter; + end; + + + + + procedure TformLikvidace1024.grdPolColumns4UpdateData(Sender: TObject; var Text: string; var Value: Variant; var UseText, Handled: Boolean); + var s: single; + begin + Text:= Text.Trim.Replace(' ', '').Replace('.', ','); + if not(VarIsNull(Value)) then + if (Text='') then + begin + Helios.Error(#1'Musíte zadat číslo'#1); + Handled:= true; + end + else + begin + if not(TryStrToFloat(Text,s)) then + s:= 0; + if ((s<0) or (s>vTab.FieldByName('StavSkladu').AsSingle)) then + begin + Helios.Error(#1'Nelze vrátit množství menší než 0 a větší než je skladem'#1); + Handled:= true; + end; + end; + end; + + + + + procedure TformLikvidace1024.grdPolGetCellParams(Sender: TObject; Column: TColumnEh; AFont: TFont; var Background: TColor; State: TGridDrawState); + begin +// if (State<>[]) then +// if (gdRowSelected in State) then + if (Column.FieldName='KeVraceni') then + Background:= grdPol.Color; + if (vTab.FieldByName('Priorita').AsInteger=1) or (vTab.FieldByName('Priorita').AsInteger=2) then + Background:= clSilver; + end; + + + end. diff --git a/frmOrder.dfm b/frmOrder.dfm new file mode 100644 index 0000000..52f1c2c --- /dev/null +++ b/frmOrder.dfm @@ -0,0 +1,409 @@ +object formOrder: TformOrder + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = ' Vytvo'#345'en'#237' objedn'#225'vky' + ClientHeight = 766 + ClientWidth = 1475 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Position = poOwnerFormCenter + OnClose = FormClose + OnShow = FormShow + PixelsPerInch = 96 + DesignSize = ( + 1475 + 766) + TextHeight = 25 + object Label1: TLabel + Left = 41 + Top = 82 + Width = 138 + Height = 25 + Caption = 'Datum z'#225'vozu:' + end + object Label3: TLabel + Left = 20 + Top = 22 + Width = 160 + Height = 25 + Caption = 'Druh sortimentu:' + end + object Label4: TLabel + Left = 15 + Top = 138 + Width = 162 + Height = 25 + Caption = #268#237'slo objedn'#225'vky:' + end + object gbDodavatel: TGroupBox + Left = 569 + Top = 19 + Width = 594 + Height = 169 + Caption = ' Dodavatel ' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 4 + object Label2: TLabel + Left = 28 + Top = 88 + Width = 71 + Height = 25 + Caption = 'Adresa:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblDodAdresa: TLabel + Left = 129 + Top = 88 + Width = 445 + Height = 29 + AutoSize = False + end + object lblDodICO: TLabel + Left = 52 + Top = 126 + Width = 485 + Height = 29 + AutoSize = False + end + object selCOrg: TComboEdit + Left = 28 + Top = 32 + Width = 127 + Height = 33 + Alignment = taCenter + GlyphKind = gkEllipsis + NumGlyphs = 1 + TabOrder = 0 + Text = '' + end + object selOrg: TComboEdit + Left = 168 + Top = 32 + Width = 407 + Height = 33 + GlyphKind = gkEllipsis + NumGlyphs = 1 + TabOrder = 1 + Text = '' + end + end + object gbPolozky: TGroupBox + Left = 20 + Top = 234 + Width = 1175 + Height = 507 + Anchors = [akLeft, akTop, akBottom] + Caption = ' Polo'#382'ky ' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 5 + DesignSize = ( + 1175 + 507) + object Panel1: TPanel + Left = 8 + Top = 30 + Width = 763 + Height = 35 + Caption = 'Zbo'#382#237 + Color = 14471860 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBackground = False + ParentFont = False + TabOrder = 0 + end + object Panel2: TPanel + Left = 770 + Top = 30 + Width = 389 + Height = 35 + Anchors = [akTop, akRight] + Caption = 'Objedn'#225'no' + Color = 14471860 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBackground = False + ParentFont = False + TabOrder = 1 + end + object polTree: TVirtualStringTree + Left = 8 + Top = 98 + Width = 1151 + Height = 403 + Anchors = [akLeft, akTop, akRight, akBottom] + Colors.BorderColor = 15987699 + Colors.DisabledColor = clGray + Colors.DropMarkColor = 15385233 + Colors.DropTargetColor = 15385233 + Colors.DropTargetBorderColor = 15385233 + Colors.FocusedSelectionColor = 15385233 + Colors.FocusedSelectionBorderColor = 15385233 + Colors.GridLineColor = 15987699 + Colors.HeaderHotColor = clBlack + Colors.HotColor = clBlack + Colors.SelectionRectangleBlendColor = 15385233 + Colors.SelectionRectangleBorderColor = 15385233 + Colors.SelectionTextColor = clBlack + Colors.TreeLineColor = 9471874 + Colors.UnfocusedColor = clGray + Colors.UnfocusedSelectionColor = 13421772 + Colors.UnfocusedSelectionBorderColor = 13421772 + Header.AutoSizeIndex = 0 + Header.Height = 25 + SelectionCurveRadius = 5 + TabOrder = 2 + TreeOptions.AnimationOptions = [toAnimatedToggle] + TreeOptions.AutoOptions = [toAutoDropExpand, toAutoTristateTracking, toAutoDeleteMovedNodes, toAutoChangeScale] + TreeOptions.PaintOptions = [toShowButtons, toShowDropmark, toThemeAware, toUseBlendedImages] + TreeOptions.SelectionOptions = [toExtendedFocus, toFullRowSelect] + TreeOptions.StringOptions = [toAutoAcceptEditChange] + OnGetText = polTreeGetText + Columns = < + item + Alignment = taCenter + Position = 0 + Text = 'Akce' + Width = 73 + end + item + Alignment = taCenter + Position = 1 + Text = #268#237'slo' + Width = 152 + end + item + Position = 2 + Text = 'N'#225'zev' + end + item + Alignment = taCenter + Position = 3 + Text = 'Doporu'#269'eno' + end + item + Alignment = taCenter + Position = 4 + Text = 'R'#225'no' + end + item + Alignment = taCenter + Position = 5 + Text = 'Poledne' + end> + end + object pnlAkce: TPanel + Left = 8 + Top = 64 + Width = 73 + Height = 35 + Caption = 'Akce' + Color = 14471860 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBackground = False + ParentFont = False + TabOrder = 3 + end + object pnlCislo: TPanel + Left = 81 + Top = 64 + Width = 152 + Height = 35 + Caption = #268#237'slo' + Color = 14471860 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBackground = False + ParentFont = False + TabOrder = 4 + end + object pnlNazev: TPanel + Left = 233 + Top = 64 + Width = 320 + Height = 35 + Caption = 'N'#225'zev' + Color = 14471860 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBackground = False + ParentFont = False + TabOrder = 5 + end + object pnlDoporuceno: TPanel + Left = 552 + Top = 64 + Width = 219 + Height = 35 + Caption = 'Doporu'#269'eno' + Color = 14471860 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBackground = False + ParentFont = False + TabOrder = 6 + end + object pnlRano: TPanel + Left = 770 + Top = 64 + Width = 191 + Height = 35 + Caption = 'R'#225'no' + Color = 14471860 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBackground = False + ParentFont = False + TabOrder = 7 + end + object pnlPoledne: TPanel + Left = 960 + Top = 64 + Width = 199 + Height = 35 + Caption = 'Poledne' + Color = 14471860 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBackground = False + ParentFont = False + TabOrder = 8 + end + end + object btnOK: TButton + Left = 1213 + Top = 234 + Width = 244 + Height = 69 + Anchors = [akLeft, akTop, akRight] + Caption = 'Ulo'#382'it objedn'#225'vku' + TabOrder = 0 + end + object dtZavoz: TDateTimePicker + Left = 191 + Top = 79 + Width = 149 + Height = 33 + Date = 44268.000000000000000000 + Time = 0.431178437502239800 + TabOrder = 1 + end + object cbSortiment: TComboBox + Left = 191 + Top = 19 + Width = 339 + Height = 33 + Style = csDropDownList + TabOrder = 2 + OnChange = cbSortimentChange + end + object edtCisloObj: TNumberBox + Left = 191 + Top = 135 + Width = 97 + Height = 33 + Alignment = taCenter + Enabled = False + TabOrder = 3 + end + object btnTisk: TButton + Left = 1213 + Top = 320 + Width = 244 + Height = 49 + Anchors = [akLeft, akTop, akRight] + Caption = 'Vytisknout' + TabOrder = 6 + end + object btnPoslat: TButton + Left = 1213 + Top = 392 + Width = 244 + Height = 51 + Anchors = [akLeft, akTop, akRight] + Caption = 'Odeslat dodavateli' + TabOrder = 7 + end + object btnRozbalit: TButton + Left = 1213 + Top = 504 + Width = 244 + Height = 46 + Anchors = [akLeft, akTop, akRight] + Caption = 'Rozbalit v'#353'e' + TabOrder = 8 + end + object btnSbalit: TButton + Left = 1213 + Top = 572 + Width = 244 + Height = 45 + Anchors = [akLeft, akTop, akRight] + Caption = 'Sbalit v'#353'e' + TabOrder = 9 + end + object btnZavrit: TButton + Left = 1213 + Top = 680 + Width = 244 + Height = 61 + Anchors = [akLeft, akTop, akRight, akBottom] + Caption = 'Zav'#345#237't' + TabOrder = 10 + end + object cbSortimentX: TComboBox + Left = 385 + Top = 51 + Width = 145 + Height = 33 + TabOrder = 11 + Text = 'cbSortimentX' + Visible = False + end +end diff --git a/frmOrder.pas b/frmOrder.pas new file mode 100644 index 0000000..621b921 --- /dev/null +++ b/frmOrder.pas @@ -0,0 +1,215 @@ +unit frmOrder; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Types, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, System.ImageList, Vcl.ImgList, Vcl.StdCtrls, Vcl.Buttons, + Vcl.ComCtrls, ddPlugin_TLB, TBPackageU, Vcl.WinXPickers, Vcl.Mask, RxToolEdit, Vcl.NumberBox, Vcl.Grids, VirtualTrees; + +type + PPolozka = ^TPolozka; + TPolozka = packed record + idKZ: integer; + regCislo, nazev: string; + k1, k2: string; + mnRano, mnPoledne, mnDoporuceno: smallint; +{$IF CompilerVersion>=34} // Sydney a vys + class operator Initialize(out Dest: TPolozka); +{$ENDIF} + end; + + TTreeData = record + regCislo: string[35]; + PNodePolozka: Pointer; + end; + + + TformOrder = class(TForm) + gbDodavatel: TGroupBox; + gbPolozky: TGroupBox; + selCOrg: TComboEdit; + selOrg: TComboEdit; + Label1: TLabel; + dtZavoz: TDateTimePicker; + btnOK: TButton; + Label2: TLabel; + lblDodAdresa: TLabel; + lblDodICO: TLabel; + cbSortiment: TComboBox; + Label3: TLabel; + edtCisloObj: TNumberBox; + Label4: TLabel; + btnTisk: TButton; + btnPoslat: TButton; + btnRozbalit: TButton; + btnSbalit: TButton; + btnZavrit: TButton; + Panel1: TPanel; + Panel2: TPanel; + polTree: TVirtualStringTree; + pnlAkce: TPanel; + pnlCislo: TPanel; + pnlNazev: TPanel; + pnlDoporuceno: TPanel; + pnlRano: TPanel; + pnlPoledne: TPanel; + cbSortimentX: TComboBox; + procedure FormShow(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure cbSortimentChange(Sender: TObject); + procedure polTreeGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; + var CellText: string); + private + public + Helios: IHelios; + jeTest: boolean; + end; + +var + formOrder: TformOrder; + +implementation +uses helUtils; + +{$R *.dfm} + + +{$IF CompilerVersion>=34} // Sydney a vys + class operator TPolozka.Initialize(out Dest: TPolozka); + begin + dest.idKZ:= 0; + dest.regCislo:= ''; + dest.nazev:= ''; + dest.k1:= ''; + dest.k2:= ''; + dest.mnRano:= 0; + dest.mnPoledne:= 0; + dest.mnDoporuceno:= 0; + end; +{$ENDIF} + + + + procedure TformOrder.cbSortimentChange(Sender: TObject); + var lSQL: string; + idSort: integer; + rNode, pNode: PVirtualNode; + myRec: PPolozka; + begin + cbSortimentX.ItemIndex:= cbSortiment.ItemIndex; + + lSQL:= 'SELECT s.ID FROM ' + tblSortim + ' s INNER JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE se._Objednavky_Zobrazit=1'; + lSQL:= lSQL + ' AND s.K1=N' + cbSortimentX.Items[0].QuotedString + ' AND s.K2 IS NOT NULL'; + with Helios.OpenSQL(lSQL) do + begin + polTree.BeginUpdate; + polTree.Clear; + if (RecordCount>0) then + begin + idSort:= VarToStr(FieldByNameValues('ID')).ToInteger; + + lSQL:= 'SELECT ID, SkupZbo, RegCis, Nazev1 FROM ' + tblKZ + ' WHERE IDSortiment=' + idSort.ToString + ' ORDER BY SkupZbo, RegCis'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + First; + rNode:= polTree.AddChild(nil); // root + while not(EOF) do + begin + pNode:= polTree.AddChild(nil); + myRec:= polTree.GetNodeData(pNode); + myRec.idKZ:= VarToStr(FieldByNameValues('ID')).ToInteger; + myRec.regCislo:= VarToStr(FieldByNameValues('RegCis')); + myRec.nazev:= VarToStr(FieldByNameValues('Nazev1')); + pNode:= polTree.AddChild(rNode, myRec); + Next; + end; + end; + + + end; + polTree.EndUpdate; + end; + + end; + + + + + procedure TformOrder.FormClose(Sender: TObject; var Action: TCloseAction); + begin + Action:= caFree; + end; + + + + + procedure TformOrder.FormShow(Sender: TObject); + var rHeight: integer; + lSQL: string; + begin + UseLatestCommonDialogs:= true; + self.SetBounds(Screen.WorkAreaRect.Left, Screen.WorkAreaRect.Top, Screen.WorkAreaRect.Width, Screen.WorkAreaRect.Height); + +{ + grd.RowCount:= 2; + grd.FixedRows:= 1; + + rHeight:= grd.Canvas.TextHeight('Áý'); + grd.DefaultRowHeight:= grd.Font.Size + 18; + +// grd.RowHeights[1]:= grd.Canvas.TextHeight('Akce') + 4; + grd.Cells[0, 0]:= 'Akce'; + grd.Cells[1, 0]:= 'Číslo'; + grd.Cells[2, 0]:= 'Název'; + grd.Cells[3, 0]:= 'Doporučeno'; + grd.Cells[4, 0]:= 'Ráno'; + grd.Cells[5, 0]:= 'Poledne'; +} + + polTree.NodeDataSize:= SizeOf(TPolozka); + polTree.DefaultNodeHeight:= polTree.Canvas.TextHeight('Áý') + 8; + polTree.Header.Columns[0].Width:= pnlAkce.Width-1; + polTree.Header.Columns[1].Width:= pnlCislo.Width-1; + polTree.Header.Columns[2].Width:= pnlNazev.Width-1; + polTree.Header.Columns[3].Width:= pnlDoporuceno.Width-1; + polTree.Header.Columns[4].Width:= pnlRano.Width-1; + polTree.Header.Columns[5].Width:= pnlPoledne.Width-1; + polTree.RootNodeCount:= 1; + + cbSortiment.Items.Clear; + cbSortimentX.Items.Clear; + lSQL:= 'SELECT DISTINCT(s.K1), ISNULL(e._priorita, 999) AS PoradiSort FROM ' + tblSortim + ' s INNER JOIN ' + tblSortimE + ' e ON (e.ID=s.ID) WHERE e._Objednavky_Zobrazit=1 GROUP BY s.K1'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + First; + while not(EOF) do + begin + cbSortimentX.Items.Add(VarToStr(FieldValues(0))); + lSQL:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblSortim + ' WHERE K2 IS NULL AND K1=N' + VarToStr(FieldValues(0)).QuotedString); + cbSortiment.Items.Add(lSQL); + Next; + end; + cbSortiment.ItemIndex:= 0; + cbSortimentChange(Sender); + end; + + end; + + + + procedure TformOrder.polTreeGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: string); + var myRec: PPolozka; + begin + myRec:= Sender.GetNodeData(Node); + case Column of + 0: CellText:= ''; + 1: CellText:= myRec.regCislo; + 2: CellText:= myRec.nazev; + end; + + end; + +end. diff --git a/frmOrder2.dfm b/frmOrder2.dfm new file mode 100644 index 0000000..db3b95a --- /dev/null +++ b/frmOrder2.dfm @@ -0,0 +1,895 @@ +object formOrder2: TformOrder2 + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = ' Vytvo'#345'en'#237' objedn'#225'vky' + ClientHeight = 766 + ClientWidth = 1413 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Position = poOwnerFormCenter + OnClose = FormClose + OnResize = FormResize + OnShow = FormShow + PixelsPerInch = 96 + DesignSize = ( + 1413 + 766) + TextHeight = 25 + object lblInfo: TLabel + Left = 80 + Top = 194 + Width = 4 + Height = 16 + Anchors = [akLeft, akBottom] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + Visible = False + end + object gbDodavatel: TGroupBox + Left = 666 + Top = 19 + Width = 640 + Height = 169 + Caption = ' Dodavatel ' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + object Label2: TLabel + Left = 28 + Top = 72 + Width = 71 + Height = 25 + Caption = 'Adresa:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblDodAdresa: TLabel + Left = 130 + Top = 72 + Width = 445 + Height = 29 + AutoSize = False + end + object lblDodMisto: TLabel + Left = 130 + Top = 110 + Width = 405 + Height = 29 + AutoSize = False + end + object lblDodICO: TLabel + Left = 130 + Top = 142 + Width = 7 + Height = 25 + end + object lblDodDIC: TLabel + Left = 360 + Top = 142 + Width = 7 + Height = 25 + end + object cbxDodavatel: TComboBox + Left = 28 + Top = 33 + Width = 589 + Height = 33 + Style = csDropDownList + TabOrder = 0 + OnChange = cbxDodavatelChange + end + end + object gbPolozky: TGroupBox + Left = 20 + Top = 276 + Width = 1139 + Height = 462 + Anchors = [akLeft, akTop, akRight, akBottom] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 2 + object btnNovaPolozka: TSpeedButton + Left = 15 + Top = 0 + Width = 37 + Height = 28 + Glyph.Data = { + 36100000424D3610000000000000360000002800000020000000200000000100 + 2000000000000010000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000020003092A0145145902911C7B02C9219103ED239C03FF239C03FF2192 + 03EF1C7C02CB145A02940A2C0149000200040000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000200040E3F + 01681F8803DF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF1F8B03E30F43016E01030005000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000061A002A1C7E02CE239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF1D8102D3061D00300000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000A2E014B219503F4239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF229703F60B33 + 0153000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000A2D0149229903FA239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239A + 03FC0B3301530000000000000000000000000000000000000000000000000000 + 0000000000000000000006190029219403F3239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF229703F6061D003000000000000000000000000000000000000000000000 + 000000000000000200031C7C02CC239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF1D8102D301030005000000000000000000000000000000000000 + 0000000000000E3C0163239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF0F43016E000000000000000000000000000000000000 + 0000000100011E8503DA239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF1F8A03E3000200040000000000000000000000000000 + 00000826013E239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF0A2C01490000000000000000000000000000 + 000013540289239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF145A02940000000000000000000000000000 + 00001A7602C0239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF1C7C02CB0000000000000000000000000000 + 00001F8B03E4239C03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF239C03FF239C + 03FF239C03FF239C03FF239C03FF219203EE0000000000000000000000000000 + 0000229503F4239C03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF0000000000000000000000000000 + 0000229503F4239C03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF0000000000000000000000000000 + 00001F8A03E3239C03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF239C03FF239C + 03FF239C03FF239C03FF239C03FF219103ED0000000000000000000000000000 + 00001A7402BF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF1C7B02C90000000000000000000000000000 + 000012520286239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF145902910000000000000000000000000000 + 00000823013A239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF092A01450000000000000000000000000000 + 0000000000011D8302D6239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF1F8803DF000200030000000000000000000000000000 + 0000000000000D39015D239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF0E3F0168000000000000000000000000000000000000 + 000000000000000100021B7902C6239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF1C7E02CE00020004000000000000000000000000000000000000 + 0000000000000000000005160024219203EF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF219503F4061A002A00000000000000000000000000000000000000000000 + 000000000000000000000000000009280141229803F8239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF2299 + 03FA0A2E014B0000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000009280141219203EF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF219403F30A2D + 0149000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000051600241B7902C6239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF1C7C02CC061900290000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000100020D39 + 015D1D8302D6239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF1E8503DA0E3D016300020003000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000100010823013A125202871A7502BF1F8B03E3229503F4229503F41F8B + 03E41A7602C0135402890826013E000100010000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000} + OnClick = btnNovaPolozkaClick + end + object polGrd: TDBGridEh + Left = 2 + Top = 27 + Width = 1135 + Height = 433 + Align = alClient + DataGrouping.Active = True + DataGrouping.DefaultStateExpanded = True + DataGrouping.GroupLevels = < + item + ColumnName = 'Column_15_PoradiSortNazev' + end> + DataSource = ds + DynProps = <> + GridLineParams.VertEmptySpaceStyle = dessNonEh + IndicatorOptions = [] + EmptyDataInfo.Active = True + EmptyDataInfo.Text = #381#225'dn'#233' polo'#382'ky nenalezeny' + Options = [dgEditing, dgTitles, dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit] + OptionsEh = [dghFixed3D, dghData3D, dghHighlightFocus, dghClearSelection, dghRowHighlight] + SelectionDrawParams.SelectionStyle = gsdsClassicEh + TabOrder = 0 + TitleParams.Color = clMoneyGreen + TitleParams.FillStyle = cfstSolidEh + TitleParams.MultiTitle = True + TitleParams.SecondColor = clMoneyGreen + OnDataGroupGetRowText = polGrdDataGroupGetRowText + OnKeyUp = polGrdKeyUp + Columns = < + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'PoradiSort' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'K1' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'K2' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Sortiment' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'IDZboSklad' + Footers = <> + Visible = False + end + item + Alignment = taCenter + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Poradi' + Footers = <> + Title.Caption = 'Po'#345'ad'#237 + Visible = False + Width = 80 + end + item + Alignment = taCenter + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'RegCis' + Footers = <> + ReadOnly = True + TextEditing = False + Title.Caption = #268#237'slo' + Width = 158 + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Nazev' + Footers = <> + ReadOnly = True + TextEditing = False + Width = 441 + end + item + Alignment = taCenter + CellButtons = <> + DisplayFormat = '##0.##' + DynProps = <> + EditButtons = <> + FieldName = 'StavSkladu' + Footers = <> + ReadOnly = True + TextEditing = False + Width = 126 + end + item + Alignment = taCenter + CellButtons = <> + DisplayFormat = '##0.##' + DynProps = <> + EditButtons = <> + FieldName = 'Doporuceno' + Footers = <> + ReadOnly = True + TextEditing = False + Title.Caption = 'Doporu'#269'eno' + Width = 125 + end + item + Alignment = taCenter + CellButtons = <> + DisplayFormat = '##0.##' + DynProps = <> + EditButtons = <> + FieldName = 'Rano' + Footers = <> + Width = 112 + end + item + Alignment = taCenter + CellButtons = <> + DisplayFormat = '##0.##' + DynProps = <> + EditButtons = <> + FieldName = 'Poledne' + Footers = <> + Width = 120 + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Priorita' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'CisloZbozi' + Footers = <> + STFilter.DataField = 'CisloZbozi' + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'K1K2' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'PoradiSortNazev' + Footers = <> + TextEditing = False + Visible = False + end> + object RowDetailData: TRowDetailPanelControlEh + end + end + end + object btnOK: TButton + Left = 1187 + Top = 204 + Width = 208 + Height = 99 + Anchors = [akTop, akRight] + Caption = 'Ulo'#382'it a odeslat objedn'#225'vku' + TabOrder = 0 + WordWrap = True + OnClick = btnOKClick + end + object btnTisk: TButton + Left = 1187 + Top = 320 + Width = 208 + Height = 49 + Anchors = [akTop, akRight] + Caption = 'Vytisknout' + TabOrder = 3 + Visible = False + OnClick = btnTiskClick + end + object btnPoslat: TButton + Left = 1187 + Top = 392 + Width = 208 + Height = 51 + Anchors = [akTop, akRight] + Caption = 'Odeslat dodavateli' + TabOrder = 4 + Visible = False + OnClick = btnPoslatClick + end + object btnRozbalit: TButton + Left = 1187 + Top = 504 + Width = 208 + Height = 46 + Anchors = [akRight, akBottom] + Caption = 'Rozbalit v'#353'e' + TabOrder = 5 + OnClick = btnRozbalitClick + end + object btnSbalit: TButton + Left = 1187 + Top = 572 + Width = 208 + Height = 45 + Anchors = [akRight, akBottom] + Caption = 'Sbalit v'#353'e' + TabOrder = 6 + OnClick = btnSbalitClick + end + object btnZavrit: TButton + Left = 1187 + Top = 680 + Width = 208 + Height = 61 + Anchors = [akRight, akBottom] + Caption = 'Zav'#345#237't' + TabOrder = 7 + OnClick = btnZavritClick + end + object edtNumEditor: TNxEdit6 + Left = 501 + Top = 190 + Width = 121 + Height = 41 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -27 + Font.Name = 'Tahoma' + Font.Style = [] + MaxLength = 3 + NumbersOnly = True + ParentFont = False + TabOrder = 8 + Visible = False + UserDefinedColorPalette.GeometryHoverColor = clBlack + OnClick = edtNumEditorClick + end + object Panel1: TPanel + Left = 20 + Top = 242 + Width = 855 + Height = 35 + Anchors = [akLeft, akTop, akRight] + Caption = 'Zbo'#382#237 + Color = 14471860 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBackground = False + ParentFont = False + TabOrder = 9 + end + object Panel2: TPanel + Left = 874 + Top = 242 + Width = 243 + Height = 35 + Anchors = [akTop, akRight] + Caption = 'Objedn'#225'no' + Color = 14471860 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBackground = False + ParentFont = False + TabOrder = 10 + end + object btnVynulovat: TButton + Left = 885 + Top = 194 + Width = 220 + Height = 42 + Anchors = [akLeft, akTop, akRight] + Caption = 'Vynulovat mno'#382'stv'#237 + TabOrder = 11 + OnClick = btnVynulovatClick + end + object gbSortiment: TGroupBox + Left = 80 + Top = 19 + Width = 559 + Height = 175 + TabOrder = 12 + object Label1: TLabel + Left = 38 + Top = 74 + Width = 138 + Height = 25 + Caption = 'Datum z'#225'vozu:' + end + object Label3: TLabel + Left = 16 + Top = 16 + Width = 160 + Height = 25 + Caption = 'Druh sortimentu:' + end + object Label4: TLabel + Left = 14 + Top = 125 + Width = 162 + Height = 25 + Caption = #268#237'slo objedn'#225'vky:' + end + object cbxSortiment: TComboBox + Left = 196 + Top = 13 + Width = 339 + Height = 33 + Style = csDropDownList + TabOrder = 0 + OnChange = cbxSortimentChange + end + object dtZavoz: TDateTimePicker + Left = 196 + Top = 70 + Width = 149 + Height = 33 + Date = 44268.000000000000000000 + Time = 0.431178437502239800 + TabOrder = 1 + OnChange = dtZavozChange + end + object edtCisloObj: TNumberBox + Left = 196 + Top = 122 + Width = 97 + Height = 33 + Alignment = taCenter + DisplayFormat = '#####0' + Enabled = False + TabOrder = 2 + end + end + object vTab: TMemTableEh + Params = <> + AfterPost = vTabAfterPost + AfterDelete = vTabAfterDelete + Left = 12 + Top = 11 + object vTabPoradiSort: TSingleField + FieldName = 'PoradiSort' + Visible = False + end + object vTabK1: TStringField + FieldName = 'K1' + Size = 10 + end + object vTabK2: TStringField + FieldName = 'K2' + Size = 10 + end + object vTabSortiment: TStringField + FieldName = 'Sortiment' + Required = True + Size = 50 + end + object vTabIDZboSklad: TIntegerField + FieldName = 'IDZboSklad' + Visible = False + end + object vTabRegCis: TStringField + FieldName = 'RegCis' + Size = 30 + end + object vTabNazev: TStringField + FieldName = 'Nazev' + Size = 100 + end + object vTabRano: TFloatField + DisplayLabel = 'R'#225'no' + FieldName = 'Rano' + OnValidate = vTabRanoValidate + end + object vTabDoporuceno: TFloatField + FieldName = 'Doporuceno' + end + object vTabPoledne: TFloatField + FieldName = 'Poledne' + OnValidate = vTabPoledneValidate + end + object vTabStavSkladu: TFloatField + DisplayLabel = 'Stav skladu' + FieldName = 'StavSkladu' + end + object vTabPriorita: TIntegerField + DisplayWidth = 10 + FieldName = 'Priorita' + Visible = False + end + object vTabCisloZbozi: TStringField + FieldName = 'CisloZbozi' + Visible = False + Size = 33 + end + object vTabIDKZ: TIntegerField + FieldName = 'IDKZ' + Visible = False + end + object vTabSkupZbo: TStringField + FieldName = 'SkupZbo' + Visible = False + Size = 3 + end + object vTabDodavatel: TIntegerField + FieldName = 'Dodavatel' + Visible = False + end + object vTabJenRano: TSmallintField + FieldName = 'JenRano' + Visible = False + end + object vTabMinimum: TFloatField + FieldName = 'Minimum' + Visible = False + end + object vTabDelitelnost: TFloatField + FieldName = 'Delitelnost' + Visible = False + end + object vTabPoradi: TSingleField + FieldName = 'Poradi' + Visible = False + end + object vTabK1K2: TStringField + FieldName = 'K1K2' + Visible = False + Size = 15 + end + object vTabPoradiSortNazev: TStringField + FieldName = 'PoradiSortNazev' + Size = 100 + end + object MemTableData: TMemTableDataEh + object DataStruct: TMTDataStructEh + object PoradiSortNazev: TMTStringDataFieldEh + FieldName = 'PoradiSortNazev' + StringDataType = fdtStringEh + DisplayWidth = 100 + Size = 100 + end + object Delitelnost: TMTNumericDataFieldEh + FieldName = 'Delitelnost' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object Minimum: TMTNumericDataFieldEh + FieldName = 'Minimum' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object JenRano: TMTNumericDataFieldEh + FieldName = 'JenRano' + NumericDataType = fdtSmallintEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object Dodavatel: TMTNumericDataFieldEh + FieldName = 'Dodavatel' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + Visible = False + currency = False + Precision = 15 + end + object SkupZbo: TMTStringDataFieldEh + FieldName = 'SkupZbo' + StringDataType = fdtStringEh + DisplayWidth = 3 + Visible = False + Size = 3 + end + object PoradiSort: TMTNumericDataFieldEh + FieldName = 'PoradiSort' + NumericDataType = fdtSingleEh + AutoIncrement = False + DisplayWidth = 20 + Visible = False + currency = False + Precision = 15 + end + object K1: TMTStringDataFieldEh + FieldName = 'K1' + StringDataType = fdtStringEh + DisplayWidth = 10 + Size = 10 + end + object K2: TMTStringDataFieldEh + FieldName = 'K2' + StringDataType = fdtStringEh + DisplayWidth = 10 + Size = 10 + end + object Sortiment: TMTStringDataFieldEh + FieldName = 'Sortiment' + StringDataType = fdtStringEh + DisplayWidth = 50 + Size = 50 + end + object IDZboSklad: TMTNumericDataFieldEh + FieldName = 'IDZboSklad' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object IDKZ: TMTNumericDataFieldEh + FieldName = 'IDKZ' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object RegCis: TMTStringDataFieldEh + FieldName = 'RegCis' + StringDataType = fdtStringEh + DisplayWidth = 10 + Size = 30 + end + object Nazev: TMTStringDataFieldEh + FieldName = 'Nazev' + StringDataType = fdtStringEh + DisplayWidth = 50 + Size = 100 + end + object StavSkladu: TMTNumericDataFieldEh + FieldName = 'StavSkladu' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayLabel = '0' + DisplayWidth = 20 + currency = False + Precision = 10 + end + object Doporuceno: TMTNumericDataFieldEh + FieldName = 'Doporuceno' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayLabel = '0' + DisplayWidth = 20 + currency = False + Precision = 10 + end + object Rano: TMTNumericDataFieldEh + FieldName = 'Rano' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayLabel = '0' + DisplayWidth = 20 + currency = False + Precision = 10 + end + object Poledne: TMTNumericDataFieldEh + FieldName = 'Poledne' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayLabel = '0' + DisplayWidth = 20 + currency = False + Precision = 10 + end + object K1K2: TMTStringDataFieldEh + FieldName = 'K1K2' + StringDataType = fdtStringEh + DisplayWidth = 20 + Visible = False + end + object Poradi: TMTNumericDataFieldEh + FieldName = 'Poradi' + NumericDataType = fdtSingleEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object Priorita: TMTNumericDataFieldEh + FieldName = 'Priorita' + NumericDataType = fdtSmallintEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 3 + end + object CisloZbozi: TMTStringDataFieldEh + FieldName = 'CisloZbozi' + StringDataType = fdtStringEh + DisplayWidth = 50 + Size = 33 + end + end + object RecordsList: TRecordsListEh + end + end + end + object ds: TDataSource + DataSet = vTab + Left = 13 + Top = 60 + end +end diff --git a/frmOrder2.pas b/frmOrder2.pas new file mode 100644 index 0000000..fab5fd6 --- /dev/null +++ b/frmOrder2.pas @@ -0,0 +1,1202 @@ +unit frmOrder2; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Types, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, System.ImageList, Vcl.ImgList, Vcl.StdCtrls, Vcl.Buttons, + Vcl.ComCtrls, ddPlugin_TLB, TBPackageU, Vcl.WinXPickers, Vcl.Mask, RxToolEdit, Vcl.NumberBox, Vcl.Grids, VirtualTrees, + NxGridView6, NxColumns6, NxControls6, NxCustomGrid6, NxVirtualGrid6, NxGrid6, NxEdit6, MemTableDataEh, Data.DB, + DBGridEhGrouping, ToolCtrlsEh, DBGridEhToolCtrls, DynVarsEh, EhLibVCL, GridsEh, DBAxisGridsEh, DBGridEh, MemTableEh, EhLibMTE, + System.MaskUtils, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase, + IdSMTP, IdBaseComponent, IdMessage, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL, + IdAttachment, IdAttachmentFile, IdAttachmentMemory, datModObj; + +type + TWideStringHelper = record helper for WideString + function QuotedString: string; overload; + end; + + TMaskedTextHelper = record helper for TMaskedText + function QuotedString: string; overload; + function Replace(oldStr, newStr: string): string; overload; + end; + + TVisColumn = record + index: integer; + koeficient: Single; + end; + + TSortiment = record + nazev, k1, poleDodav: string; + dodavatel: integer; + poradiSort: Single; + typSort: byte; + end; + + TformOrder2 = class(TForm) + gbDodavatel: TGroupBox; + gbPolozky: TGroupBox; + Label1: TLabel; + dtZavoz: TDateTimePicker; + btnOK: TButton; + Label2: TLabel; + lblDodAdresa: TLabel; + lblDodMisto: TLabel; + cbxSortiment: TComboBox; + Label3: TLabel; + edtCisloObj: TNumberBox; + Label4: TLabel; + btnTisk: TButton; + btnPoslat: TButton; + btnRozbalit: TButton; + btnSbalit: TButton; + btnZavrit: TButton; + Panel1: TPanel; + Panel2: TPanel; + edtNumEditor: TNxEdit6; + vTab: TMemTableEh; + ds: TDataSource; + polGrd: TDBGridEh; + 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; + cbxDodavatel: TComboBox; + lblDodICO: TLabel; + lblDodDIC: TLabel; + vTabIDKZ: TIntegerField; + vTabSkupZbo: TStringField; + vTabDodavatel: TIntegerField; + vTabJenRano: TSmallintField; + vTabMinimum: TFloatField; + vTabDelitelnost: TFloatField; + btnVynulovat: TButton; + lblInfo: TLabel; + vTabPoradi: TSingleField; + gbSortiment: TGroupBox; + vTabK1K2: TStringField; + vTabPoradiSortNazev: TStringField; + btnNovaPolozka: TSpeedButton; + procedure FormShow(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure cbxSortimentChange(Sender: TObject); + procedure edtNumEditorClick(Sender: TObject); + procedure btnRozbalitClick(Sender: TObject); + procedure btnSbalitClick(Sender: TObject); + procedure btnOKClick(Sender: TObject); + procedure cbxDodavatelChange(Sender: TObject); + procedure polGrdKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure btnZavritClick(Sender: TObject); + procedure btnTiskClick(Sender: TObject); + procedure vTabRanoValidate(Sender: TField); + procedure vTabPoledneValidate(Sender: TField); + procedure dtZavozChange(Sender: TObject); + procedure FormResize(Sender: TObject); + procedure btnVynulovatClick(Sender: TObject); + procedure vTabAfterPost(DataSet: TDataSet); + procedure vTabAfterDelete(DataSet: TDataSet); + procedure btnPoslatClick(Sender: TObject); + procedure polGrdDataGroupGetRowText(Sender: TCustomDBGridEh; GroupDataTreeNode: TGroupDataTreeNodeEh; var GroupRowText: string); + procedure btnNovaPolozkaClick(Sender: TObject); + private + cOrg: integer; + visCols: TArray; + function ZjistiBranchID: Integer; + procedure NactiKarty; + public + Helios: IHelios; + jeTest: boolean; + oznacKOdeslani: boolean; + end; + +var + formOrder2: TformOrder2; + sortim: TArray; + dmObj: TdmObj; + cOrgs: TArray; + cOrgDod: integer; +// poradCislo: integer; + branchID, idDZ, idObd, idBidVydObjHDC, idTiskForm, idTiskFormVydObjHDC, idMailProfile: integer; + tabExtOrdInfo, cisloDokl, rDokl: string; + smtpProfil: boolean; + delkaPoradCisla: byte; + arrIdSS: TArray; + +implementation +uses System.StrUtils, System.DateUtils, helUtils; + +{$R *.dfm} + + +{$IF CompilerVersion>=34} // Sydney a vys +{$ENDIF} + + function TWideStringHelper.QuotedString: string; + begin + Result:= string(Self).QuotedString; + end; + + function TMaskedTextHelper.QuotedString: string; + var s: string; + begin + s:= Self; + Result:= s.QuotedString; + end; + + function TmaskedTextHelper.Replace(oldStr: string; newStr: string): string; + var s: string; + begin + s:= Self; + Result:= s.Replace(oldStr, newStr); + end; + + + + + + + + function TformOrder2.ZjistiBranchID: Integer; + var s: string; + begin + result:= -1; + s:= Helios.Sklad; + if (LeftStr(s, 3)='005') then + result:= RightStr(s, 1).ToInteger; + end; + + + + + procedure TformOrder2.btnNovaPolozkaClick(Sender: TObject); + var oVar: OleVariant; + idSS, idKZ: integer; + lSQL, k1, k2: string; + poradiSort, poradiSort2: Single; + begin + lSQL:= 'TabStavSkladu.Blokovano=0'; + if (Length(arrIdSS)>0) then + lSQL:= lSQL + ' AND TabStavSkladu.ID NOT IN (' + helUtils.ArrayToString(arrIdSS, ',') + ')'; + if Helios.Prenos(bidSS, 'TabStavSkladu.ID', oVar, lSQL, 'PĹ™idejte kartu na objednávku', true) then + begin + idSS:= VarToStr(oVar).ToInteger; + idKZ:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDKmenZbozi FROM ' + tblSS + ' WHERE ID=' + idSS.ToString); + vTab.Append; + vTab.FieldByName('IDZboSklad').AsInteger:= idSS; + vTab.FieldByName('IDKZ').AsInteger:= idKZ; + vTab.FieldByName('Rano').AsInteger:= 0; + vTab.FieldByName('Poledne').AsInteger:= 0; + vTab.FieldByName('Doporuceno').AsInteger:= 0; + + lSQL:= 'SELECT k.SkupZbo, k.RegCis, k.Nazev1, k.CisloZbozi, ISNULL(ke._delitelnost,1) AS delitelnost, ISNULL(ke._poradivsortimentu,999) AS PoradiVSort, ISNULL(ke._priorita,3) AS priorita'; + lSQL:= lSQL + ', ISNULL(ke._zavoz,1) AS zavoz, ISNULL(so.K1,N'''')+ISNULL(so.K2,N'''') AS K1K2, ISNULL(so.K1,N'''') AS K1, ISNULL(so.K2,N'''') AS K2, ISNULL(k.Aktualni_Dodavatel,-1) AS dodavatel'; + lSQL:= lSQL + ', ISNULL(so.Nazev,N'''') AS SortNazev FROM ' + tblKZ + ' k LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) LEFT JOIN ' + tblSortim; + lSQL:= lSQL + ' so ON (so.ID=k.IDSortiment) LEFT JOIN ' + tblSortimE + ' soe ON (soe.ID=so.ID) WHERE k.ID=' + idKZ.ToString; + with Helios.OpenSQL(lSQL) do + begin + k1:= VarToStr(FieldByNameValues('K1')); + k2:= VarToStr(FieldByNameValues('K2')); + + vTab.FieldByName('PoradiSort').AsSingle:= VarToStr(FieldByNameValues('PoradiVSort')).ToSingle; + vTab.FieldByName('K1').AsString:= k1; + vTab.FieldByName('K2').AsString:= k2; + vTab.FieldByName('K1K2').AsString:= k1+k2; + vTab.FieldByName('Priorita').AsInteger:= VarToStr(FieldByNameValues('priorita')).ToInteger; + vTab.FieldByName('Dodavatel').AsInteger:= VarToStr(FieldByNameValues('dodavatel')).ToInteger; + if (VarToStr(FieldByNameValues('zavoz'))='1') then + vTab.FieldByName('JenRano').AsInteger:= 1 + else + vTab.FieldByName('JenRano').AsInteger:= 0; + + + lSQL:= 'SELECT s.ID, s.Nazev, s.K1, ISNULL(s.K2,N'''') AS K2, ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)) AS Poradi FROM ' + tblSortim + ' s LEFT JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE se._Objednavky_Zobrazit=1'; + lSQL:= lSQL + ' AND s.K1=N' + k1.QuotedString; // + ' AND s.K2 IS NOT NULL'; + lSQL:= lSQL + ' ORDER BY ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)), K1, ISNULL(s.K2, N'''')'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + poradiSort2:= VarToStr(FieldByNameValues('Poradi')).ToSingle; + vTab.FieldByName('PoradiSortNazev').AsString:= ((poradiSort*1000.0)+poradiSort2).ToString.Replace(',', '.') + ' ' + VarToStr(FieldByNameValues('SortNazev')); + end; + + vTab.FieldByName('Sortiment').AsString:= VarToStr(FieldByNameValues('SortNazev')); + vTab.FieldByName('SkupZbo').AsString:= VarToStr(FieldByNameValues('SkupZbo')); + vTab.FieldByName('RegCis').AsString:= VarToStr(FieldByNameValues('RegCis')); + vTab.FieldByName('Nazev').AsString:= VarToStr(FieldByNameValues('Nazev1')); + vTab.FieldByName('StavSkladu').AsExtended:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT ISNULL((SELECT Mnozstvi FROM ' + tblSS + ' WHERE ID=' + idSS.ToString + '),0)'); + end; + vTab.Post; + vTab.Refresh; + end; + end; + + + + + procedure TformOrder2.btnOKClick(Sender: TObject); + var oldRec, idHlava, idHlava2: integer; + lSQL, spojeniKontaktu, popisKontaktu, idSS, sz, rc: string; + tiskOK, kontaktNalezen: boolean; + begin + cisloDokl:= ''; + + if (vTab.RecordCount>0) then + begin + +// dmObj.ZapisObjednavky(vTab, cOrgDod, edtCisloObj.ValueInt, dtZavoz); + + spojeniKontaktu:= ''; + popisKontaktu:= ''; + kontaktNalezen:= false; + + if not(smtpProfil) then + Helios.Error(#1'Nemáte pĹ™ednastavenĂ˝ emailovĂ˝ profil pro odeslánĂ­ pĹ™es SMTP'#1) + else + begin + with Helios.OpenSQL('EXEC dbo.hp_GetKontaktProKosAOrg @IDKOs=NULL, @CisOrg=' + cOrgDod.ToString + ', @Druh=6') do + if (RecordCount>0) then + begin + First; + while not(EOF) and not(kontaktNalezen) do + begin + popisKontaktu:= VarToStr(FieldValues(0)); // @Popis + spojeniKontaktu:= VarToStr(FieldValues(1)); // @Spojeni + if (spojeniKontaktu<>'') or (popisKontaktu='Objednávky') then + kontaktNalezen:= true; + Next; + end; + end; + + if not(kontaktNalezen) then + Helios.Error(#1'U dodavatele nenĂ­ kontakt typu email s popisem "Objednávky"'#1 + CRLF + 'Email nebude automatem odeslán.'); + end; + + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabObjednavkaH'') IS NOT NULL' + CRLF + ' DELETE FROM dbo._temp_TabObjednavkaH WHERE Autor=SUSER_SNAME()' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabObjednavkaR'') IS NOT NULL AND OBJECT_ID(N''dbo._temp_TabObjednavkaH'') IS NOT NULL' + CRLF + ' DELETE FROM dbo._temp_TabObjednavkaR WHERE'; + lSQL:= lSQL + ' IDHlava NOT IN (SELECT ID FROM dbo._temp_TabObjednavkaH)' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabObjednavkaH'') IS NOT NULL' + CRLF + ' IF NOT EXISTS(SELECT * FROM dbo._temp_TabObjednavkaH)' + CRLF + ' DROP TABLE dbo._temp_TabObjednavkaH' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabObjednavkaR'') IS NOT NULL' + CRLF + ' IF NOT EXISTS(SELECT * FROM dbo._temp_TabObjednavkaR)' + CRLF + ' DROP TABLE dbo._temp_TabObjednavkaR'; + Helios.ExecSQL(lSQL); + + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabObjednavkaH'') IS NOT NULL' + CRLF + ' DROP TABLE #TabObjednavkaH' + CRLF; + lSQL:= lSQL + 'CREATE TABLE #TabObjednavkaH (ID INT IDENTITY(1,1) NOT NULL, CisloOrg INT NOT NULL, Sklad NVARCHAR(30), Datum DATETIME, EmailCil NVARCHAR(80) NOT NULL DEFAULT N'''''; + lSQL:= lSQL + ', Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME())'; + if (jeTest) then + lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabO', 'dbo._temp_TabO'); + Helios.ExecSQL(lSQL); + + idHlava:= 0; + lSQL:= 'INSERT #TabObjednavkaH (CisloOrg, Sklad, Datum, EmailCil)' + CRLF + ' SELECT ISNULL(TRY_PARSE(N' + cOrgDod.ToString.Replace(';', '').Replace('-','').Replace(' ', '').QuotedString; + lSQL:= lSQL + ' AS INT), 0), N' + Helios.Sklad.QuotedString + ', CONVERT(datetime, N' + FormatDateTime('d.m.yyyy', dtZavoz.Date).QuotedString + ', 104), N' + spojeniKontaktu.QuotedString; + lSQL:= lSQL + CRLF + 'SELECT SCOPE_IDENTITY()'; + if (jeTest) then + lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabO', 'dbo._temp_TabO'); + with Helios.OpenSQL(lSQL) do + idHlava:= VarToStr(FieldValues(0)).ToInteger; + + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabObjednavkaR'') IS NOT NULL' + CRLF + ' DROP TABLE #TabObjednavkaR' + CRLF; + lSQL:= lSQL + 'CREATE TABLE #TabObjednavkaR (ID INT IDENTITY(1,1) NOT NULL, IDHlava INT NOT NULL, IDZboSklad INT NOT NULL, Rano NUMERIC(15,4) NOT NULL DEFAULT 0.0, PoradiObj NUMERIC(10,2) DEFAULT 999'; + lSQL:= lSQL + ', Poledne NUMERIC(15,4) NOT NULL DEFAULT 0.0, Doporuceno NUMERIC(15,4) NOT NULL DEFAULT 0.0, SkupZbo NVARCHAR(3), RegCis NVARCHAR(30), Sklad NVARCHAR(30), Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME())'; + if (jeTest) then + lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabO', 'dbo._temp_TabO'); + Helios.ExecSQL(lSQL); + + lSQL:= 'INSERT dbo._HDC_TabAplikace (TypDokladu, IDSklad) VALUES (1, N' + Helios.Sklad.QuotedString + '); SELECT SCOPE_IDENTITY()'; + idHlava2:= helUtils.getHeliosIntVal(Helios, 0, lSQL); + + oldRec:= vTab.RecNo; + vTab.DisableControls; + vTab.First; + while not(vTab.Eof) do + begin + if (vTab.FieldByName('Rano').AsSingle>0) or (vTab.FieldByName('Poledne').AsSingle>0) then + begin + idSS:= IfThen(vTab.FieldByName('IDZboSklad').AsString='', '0', vTab.FieldByName('IDZboSklad').AsString); + sz:= vTab.FieldByName('SkupZbo').AsString; + rc:= vTab.FieldByName('RegCis').AsString; + + lSQL:= 'INSERT dbo._HDC_TabAplikaceR (IDHlava, TypDokladu, IDSklad, IDZboSklad, CisloZbozi, Rano, Poledne) SELECT ' + idHlava2.ToString + ', 1, N' + Helios.Sklad.QuotedString; + lSQL:= lSQL + ', ' + idSS + ', N' + (sz+rc).QuotedString + ', ' + vTab.FieldByName('Rano').AsSingle.ToString + ', ' + vTab.FieldByName('Poledne').AsSingle.ToString; + Helios.ExecSQL(lSQL); + + lSQL:= 'INSERT #TabObjednavkaR (IDHlava, IDZboSklad, Rano, Poledne, Doporuceno, Sklad, PoradiObj, SkupZbo, RegCis)' + CRLF + ' SELECT ' + idHlava.ToString + ', ' + idSS + ', '; + lSQL:= lSQL + vTab.FieldByName('Rano').AsSingle.ToString.Replace(',','.') + ', ' + vTab.FieldByName('Poledne').AsSingle.ToString.Replace(',','.'); + lSQL:= lSQL + ', ' + vTab.FieldByName('Doporuceno').AsSingle.ToString.Replace(',','.') + ', N' + Helios.Sklad.QuotedString + ', ' + vTab.FieldByName('Poradi').AsString.Replace(',', '.'); + lSQL:= lSQL + ', N' + sz.QuotedString + ', N' + rc.QuotedString; + if (jeTest) then + lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabO', 'dbo._temp_TabO'); + Helios.ExecSQL(lSQL); + end; + vTab.Next; + end; + vTab.RecNo:= oldRec; + vTab.EnableControls; + + idDZ:= 0; + if not(jeTest) then + begin + helUtils.waitStart(self, 'Zápis vydanĂ© objednávky...', 0, 0); + try + lSQL:= 'DECLARE @i INT; IF OBJECT_ID(N''dbo.ep_HDC_App_Objednavka'', N''P'') IS NOT NULL EXEC dbo.ep_HDC_App_Objednavka @idDZ=@i OUT, @Sklad=N' + Helios.Sklad.QuotedString + CRLF + 'SELECT @i'; + with Helios.OpenSQL(lSQL) do + idDZ:= VarToStr(FieldValues(0)).ToInteger; + if (idDZ>0) and (oznacKOdeslani) then + begin + Helios.ExecSQL('IF NOT EXISTS(SELECT ID FROM ' + tblDZe + ' WHERE ID=' + idDZ.ToString + ') INSERT ' + tblDZe + ' (ID) SELECT ' + idDZ.ToString); + Helios.ExecSQL('UPDATE ' + tblDZe+ ' SET _VydObj_OdeslatNaMail=1 WHERE ID=' + idDZ.ToString); +// Helios.Info(#1'Objednávka byla oznaÄŤena k odeslánĂ­ emailem dodavateli.'#1); + end; + except + end; + helUtils.waitEnd; + end; + cisloDokl:= helUtils.getHeliosStrVal(Helios, '', 'SELECT PoradoveCislo FROM ' + tblDZ + ' WHERE ID=' + idDZ.ToString); + idTiskForm:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT TiskovyForm FROM ' + tblDDZ + ' WHERE ID=' + idDZ.ToString); + end; + + + lSQL:= ''; + if (Sender.ToString='TButton') then + lSQL:= (Sender as TButton).Name; + + if (lSQL='btnOK') then + Close; + if (lSQL='btnTisk') or (lSQL='btnPoslat') then + begin + tiskOK:= false; + Helios.Info(#1'Objednávka byla uloĹľena - ÄŤ. ' + cisloDokl + #1); + if (lSQL='btnTisk') then + if (idBidVydObjHDC>0) then + tiskOK:= Helios.PrintForm3(idBidVydObjHDC, idTiskFormVydObjHDC, 'ID=' + idDZ.ToString) + else + tiskOK:= Helios.PrintForm2(11, 'ID=' + idDZ.ToString); + end; + + end; + + + + + procedure TformOrder2.btnPoslatClick(Sender: TObject); + var popisKontaktu, spojeniKontaktu: string; + kontaktNalezen: Boolean; + begin + if (cOrgDod<0) then + begin + Helios.Error(#1'NenĂ­ vybrán dodavatel'#1); + Exit; + end; + + if not(smtpProfil) then + Helios.Error(#1'Nemáte pĹ™ednastavenĂ˝ emailovĂ˝ profil pro odeslánĂ­ pĹ™es SMTP'#1) + else + begin + spojeniKontaktu:= ''; + popisKontaktu:= ''; + kontaktNalezen:= false; + + with Helios.OpenSQL('EXEC dbo.hp_GetKontaktProKosAOrg @IDKOs=NULL, @CisOrg=' + cOrgDod.ToString + ', @Druh=6') do + if (RecordCount>0) then + begin + First; + while not(EOF) and not(kontaktNalezen) do + begin + popisKontaktu:= VarToStr(FieldValues(0)); // @Popis + spojeniKontaktu:= VarToStr(FieldValues(1)); // @Spojeni + if (spojeniKontaktu<>'') or (popisKontaktu='Objednávky') then + kontaktNalezen:= true; + Next; + end; + end; + + if not(kontaktNalezen) then + Helios.Error(#1'U dodavatele nenĂ­ kontakt typu email s popisem "Objednávky"'#1 + CRLF + 'Email nebude automatem odeslán.') + else + begin + btnOKClick(Sender); + if (idDZ>0) then + begin + Helios.ExecSQL('IF NOT EXISTS(SELECT ID FROM ' + tblDZe + ' WHERE ID=' + idDZ.ToString + ') INSERT ' + tblDZe + ' (ID) SELECT ' + idDZ.ToString); + Helios.ExecSQL('UPDATE ' + tblDZe+ ' SET _VydObj_OdeslatNaMail=1 WHERE ID=' + idDZ.ToString); + Helios.Info(#1'Objednávka byla oznaÄŤena k odeslánĂ­ emailem dodavateli.'#1); + Close; + end + else + Helios.Error(#1'Chyba, objednávku se v rámci odeslánĂ­ nepodaĹ™ilo uloĹľit. Zkuste to znovu.'#1) + end; + end; + end; + + + + + procedure TformOrder2.btnRozbalitClick(Sender: TObject); + begin + polGrd.DataGrouping.ActiveGroupLevels[0].ExpandNodes; + end; + + + + + procedure TformOrder2.btnSbalitClick(Sender: TObject); + begin + polGrd.DataGrouping.ActiveGroupLevels[0].CollapseNodes; + end; + + + + + procedure TformOrder2.btnTiskClick(Sender: TObject); + var lSQL: string; + i: integer; + begin +{ + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabObjTiskH'') IS NOT NULL DROP TABLE #TabObjTiskH' + CRLF + 'CREATE TABLE #TabObjTiskH (ID INT IDENTITY(1,1) NOT NULL'; + lSQL:= lSQL + ', CisloOrg INT NOT NULL, Sklad NVARCHAR(30), Datum DATETIME)' + CRLF; + Helios.ExecSQL(lSQL); + + lSQL:= 'INSERT #TabObjTiskH (CisloOrg, Sklad, Datum) SELECT ISNULL(TRY_PARSE(N' + cOrgDod.ToString.Replace(';', '').Replace('-','').Replace(' ', '').QuotedString; + lSQL:= lSQL + ' AS INT), 0), N' + Helios.Sklad.QuotedString + ', CONVERT(datetime, N' + FormatDateTime('d.m.yyyy', dtZavoz.Date).QuotedString + ', 104)'; + Helios.ExecSQL(lSQL); + + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabObjTiskR'') IS NOT NULL DROP TABLE #TabObjTiskR' + CRLF + 'CREATE TABLE #TabObjTiskR (ID INT IDENTITY(1,1) NOT NULL'; + lSQL:= lSQL + ', SkupZbo NVARCHAR(3), RegCis NVARCHAR(30), Nazev1 NVARCHAR(100), Rano NUMERIC(15,3) DEFAULT 0.0, Poledne NUMERIC(15,3) DEFAULT 0.0)' + CRLF; + Helios.ExecSQL(lSQL); + + vTab.DisableControls; + vTab.First; + while not(vTab.Eof) do + begin + lSQL:= 'INSERT #TabObjTiskR (SkupZbo, RegCis, Nazev1, Rano, Poledne) SELECT N' + vTab.FieldByName('SkupZbo').AsString.QuotedString + ', N'; + lSQL:= lSQL + vTab.FieldByName('RegCis').AsString.QuotedString + ', N' + vTab.FieldByName('Nazev').AsString.QuotedString + ', '; + lSQL:= lSQL + vTab.FieldByName('Rano').AsString.Replace(',', '.') + ', ' + vTab.FieldByName('Poledne').AsString.Replace(',', '.'); + Helios.ExecSQL(lSQL); + vTab.Next; + end; + +// Helios.PrintForm(12); + + vTab.EnableControls; +} + btnOKClick(Sender); + + end; + + + + + procedure TformOrder2.btnVynulovatClick(Sender: TObject); + var i: integer; + begin + if (vTab.RecordCount>0) then + if (Helios.YesNo('!! POZOR !! Toto je ' + #1 + 'nevratná akce' + #1 + ' !!', false)) then + if (Helios.YesNo('?? Opravdu vynulovat ' + #1 + 'všechna' + #1 + ' nabĂ­zená mnoĹľstvĂ­ ??', false)) then + begin + i:= vTab.RecNo; + vTab.DisableControls; + vTab.First; + while not(vTab.Eof) do + begin + vTab.Edit; + vTab.FieldByName('Rano').AsInteger:= 0; + vTab.FieldByName('Poledne').AsInteger:= 0; + vTab.Post; + vTab.Next; + end; + vTab.EnableControls; + vTab.RecNo:= i; + end; + + end; + + + + + procedure TformOrder2.btnZavritClick(Sender: TObject); + begin + if (Helios.YesNo('UkonÄŤit bez uloĹľenĂ­ objednávky ?', false)) then + Close; + end; + + + + + procedure TformOrder2.NactiKarty; + var lSQL, sort, k1, k2, cZbo, flt: string; + idSort, idx, idxSS: integer; + poradiSort, poradiSort2: Single; + mnR, mnP: Single; + extOrdInfo: boolean; + begin + if (cbxSortiment.ItemIndex>-1) and (cbxDodavatel.ItemIndex>-1) and (dtZavoz.DateTime>Now) then + begin + idx:= cbxSortiment.ItemIndex; + k1:= sortim[idx].k1; + poradiSort:= 1; // sortim[idx].poradiSort; + + lSQL:= 'SELECT s.ID, s.Nazev, s.K1, ISNULL(s.K2,N'''') AS K2, ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)) AS Poradi FROM ' + tblSortim + ' s LEFT JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE se._Objednavky_Zobrazit=1'; + lSQL:= lSQL + ' AND s.K1=N' + k1.QuotedString; // + ' AND s.K2 IS NOT NULL'; + lSQL:= lSQL + ' ORDER BY ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)), K1, ISNULL(s.K2, N'''')'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + if not(vTab.Active) then + vTab.Open; + + tabExtOrdInfo:= ''; + lSQL:= 'SET NOCOUNT ON' + CRLF +'DECLARE @dt DATETIME, @tabName NVARCHAR(30)=N''''' + CRLF + ' SET @dt=CONVERT(datetime, N'; + lSQL:= lSQL + FormatDateTime('d.m.yyyy', dtZavoz.DateTime).QuotedString + ', 104)' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo.ep_HDC_App_Objednavka_GenerujTabulkyProObjednavku'', N''P'') IS NOT NULL' + CRLF; + lSQL:= lSQL + ' EXEC dbo.ep_HDC_App_Objednavka_GenerujTabulkyProObjednavku @Dodavatel=' + cOrgDod.ToString; + lSQL:= lSQL + ', @DatumDodani=@dt, @RadaDokladu1=N' + ('7' + branchID.ToString + '0').QuotedString + ', @RadaDokladu2=N'; + lSQL:= lSQL + ('7' + branchID.ToString + '1').QuotedString + ', @Sklad=N' + Helios.Sklad.QuotedString + ', @TypSortimentu='; + lSQL:= lSQL + sortim[cbxSortiment.ItemIndex].typSort.ToString + ', @BranchID=' + branchID.ToString + ', @SortimentK1=N' +k1.QuotedString; + lSQL:= lSQL + ', @TabName=@tabName OUT' + CRLF + 'SELECT @tabName'; + with Helios.OpenSQL(lSQL) do + tabExtOrdInfo:= VarToStr(FieldValues(0)); + + flt:= 'K1=''' + k1 + ''''; + vTab.Filter:= flt; + vTab.Filtered:= true; + + + extOrdInfo:= false; + lSQL:= 'SELECT CASE WHEN OBJECT_ID(N'+ tabExtOrdInfo.QuotedString + ', N''U'') IS NOT NULL THEN 1 ELSE 0 END'; + with Helios.OpenSQL(lSQL) do + if (VarToStr(FieldValues(0))='1') then + extOrdInfo:= true; + + + First; + while not(EOF) do + begin + idSort:= VarToStr(FieldByNameValues('ID')).ToInteger; + sort:= VarToStr(FieldByNameValues('Nazev')); + // k1:= VarToStr(FieldByNameValues('K1')); + k2:= VarToStr(FieldByNameValues('K2')); + poradiSort2:= VarToStr(FieldByNameValues('Poradi')).ToSingle; + + lSQL:= 'SELECT ISNULL(s.ID,0) AS idSS, k.ID AS idKZ, k.SkupZbo, k.RegCis, k.Nazev1, ISNULL(s.Mnozstvi,0) AS MnSkladem, k.CisloZbozi'; + lSQL:= lSQL + ', ISNULL(ke._priorita,0) AS Priorita, ISNULL(k.Aktualni_Dodavatel,-1) AS AktDod, ISNULL(ke._zavoz,0) AS Zavoz, '; + lSQL:= lSQL + 'k.Minimum_Dodavatel, ISNULL(ke._delitelnost,0) AS Delitelnost, '; + if (extOrdInfo) then + lSQL:= lSQL + 'ISNULL(eo.Navrh,0)' + else + lSQL:= lSQL + '0'; + lSQL:= lSQL + ' AS Doporuceno, ISNULL(ke.'; +// case branchID of +// 1: lSQL:= lSQL + '_PoradiSortiment_Klas1'; +// 2: lSQL:= lSQL + '_PoradiSortiment_MozVod'; +// 3: lSQL:= lSQL + '_PoradiSortiment_MozPi'; +// else + lSQL:= lSQL + '_poradivsortimentu'; +// end; + + lSQL:= lSQL + ', ISNULL(ke._poradivsortimentu, 999)) AS PoradiVSort FROM ' + tblKZ + ' k LEFT JOIN ' + tblSS + ' s ON (s.IDKmenZbozi=k.ID AND s.IDSklad=N'; + lSQL:= lSQL + Helios.Sklad.QuotedString + ') INNER JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID)'; + if (extOrdInfo) then + lSQL:= lSQL + ' LEFT JOIN ' + tabExtOrdInfo + ' eo ON (eo.SkupZbo=k.SkupZbo AND eo.RegCis=k.RegCis)'; + lSQL:= lSQL + ' WHERE k.IDSortiment=' + idSort.ToString + ' ORDER BY ISNULL(ke.'; +// case branchID of +// 1: lSQL:= lSQL + '_PoradiSortiment_Klas1'; +// 2: lSQL:= lSQL + '_PoradiSortiment_MozVod'; +// 3: lSQL:= lSQL + '_PoradiSortiment_MozPi'; +// else + lSQL:= lSQL + '_poradivsortimentu'; +// end; + lSQL:= lSQL + ', ISNULL(ke._poradivsortimentu, 999))'; + + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + First; + while not(EOF) do + begin + cZbo:= VarToStr(FieldByNameValues('CisloZbozi')); + if not(vTab.Locate('CisloZbozi', cZbo, [])) then + begin + vTab.Append; + vTab.FieldByName('Sortiment').AsString:= sort; + vTab.FieldByName('PoradiSort').AsSingle:= poradiSort; + vTab.FieldByName('K1').AsString:= k1; + vTab.FieldByName('K2').AsString:= k2; + vTab.FieldByName('K1K2').AsString:= k1+k2; + vTab.FieldByName('PoradiSortNazev').AsString:= ((poradiSort*1000.0)+poradiSort2).ToString.Replace(',', '.') + ' ' + sort; + vTab.FieldByName('IDZboSklad').AsInteger:= VarToStr(FieldByNameValues('idSS')).ToInteger; + vTab.FieldByName('IDKZ').AsInteger:= VarToStr(FieldByNameValues('idKZ')).ToInteger; + vTab.FieldByName('SkupZbo').AsString:= VarToStr(FieldByNameValues('SkupZbo')); + vTab.FieldByName('RegCis').AsString:= VarToStr(FieldByNameValues('RegCis')); + vTab.FieldByName('Nazev').AsString:= VarToStr(FieldByNameValues('Nazev1')); + vTab.FieldByName('CisloZbozi').AsString:= cZbo; + vTab.FieldByName('Priorita').AsInteger:= VarToStr(FieldByNameValues('Priorita')).ToInteger; + vTab.FieldByName('Poradi').AsSingle:= VarToStr(FieldByNameValues('PoradiVSort')).ToSingle; + vTab.FieldByName('StavSkladu').AsFloat:= VarToStr(FieldByNameValues('MnSkladem')).ToExtended; + vTab.FieldByName('Doporuceno').AsFloat:= VarToStr(FieldByNameValues('Doporuceno')).ToExtended; + vTab.FieldByName('Rano').AsFloat:= VarToStr(FieldByNameValues('Doporuceno')).ToExtended; + vTab.FieldByName('Poledne').AsFloat:= 0; + vTab.FieldByName('Dodavatel').AsInteger:= VarToStr(FieldByNameValues('AktDod')).ToInteger; + vTab.FieldByName('JenRano').AsInteger:= VarToStr(FieldByNameValues('Zavoz')).ToInteger; + vTab.FieldByName('Minimum').AsFloat:= VarToStr(FieldByNameValues('Minimum_Dodavatel')).ToExtended; + vTab.FieldByName('Delitelnost').AsFloat:= VarToStr(FieldByNameValues('Delitelnost')).ToExtended; + vTab.Post; + end; + Next; + end; + end; + Next; + end; + + flt:= 'K1=''' + k1 + ''''; + if (cOrgDod>-1) then + flt:= flt + ' AND Dodavatel=' + cOrgDod.ToString; + vTab.Filter:= flt; + vTab.Filtered:= true; + + end; + + vTab.SortByFields('PoradiSortNazev,Poradi,SkupZbo,RegCis'); + + helUtils.waitEnd; + + polGrd.Options:= polGrd.Options + [dgEditing]; + if not(vTab.Active) then + polGrd.Options:= polGrd.Options - [dgEditing] + else + if (vTab.RecordCount=0) then + polGrd.Options:= polGrd.Options - [dgEditing]; + + if (k1='001') then + vTab.Locate('K1;K2', VarArrayOf(['001','']), []); + end; + end; + + + + + procedure TformOrder2.polGrdDataGroupGetRowText(Sender: TCustomDBGridEh; GroupDataTreeNode: TGroupDataTreeNodeEh; var GroupRowText: string); + var s, s2: string; + i: integer; + errReverse: boolean; + begin + errReverse:= false; + s2:= '(123)'; + s2:= ReverseString(s2); + if (s2.EndsWith('(')) then + errReverse:= true; + + s:= GroupRowText.Replace('PoradiSortNazev: ', ''); + if (s.IndexOf(' ')>-1) then + s:= MidStr(s, s.IndexOf(' ')+1, s.Length).Trim; + if (s.EndsWith(')')) then + begin + s:= ReverseString(s); + if (errReverse) then + i:= s.IndexOf('(') + else + i:= s.IndexOf(')'); + if (i>-1) then + s:= MidStr(s, i+2, s.Length); + s:= ReverseString(s).Trim; + end; + s2:= helUtils.getHeliosStrVal(Helios, '', 'SELECT TOP(1) KatAllTecky FROM ' + tblSortim + ' WHERE Nazev=N' + s.QuotedString); + GroupRowText:= IfThen(s2<>'', s2 + ' ', '') + s; + end; + + + + + procedure TformOrder2.polGrdKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); + var i, i2: integer; + lSQL: string; + begin + if (Key=Ord('p')) or (Key=Ord('P')) then + begin + i:= polGrd.DataSource.DataSet.FieldByName('IDKZ').AsInteger; + if (i>0) then + begin + lSQL:= 'TabPohybyZbozi.IDZboSklad=(SELECT ID FROM ' + tblSS + ' WHERE IDKmenZbozi=' + i.ToString + ' AND IDSklad=N' + Helios.Sklad.QuotedString + ')'; + Helios.OpenBrowse(66, lSQL); + end; + end; + + if (Key=Ord('o')) or (Key=Ord('O')) then + begin + i:= polGrd.DataSource.DataSet.FieldByName('IDKZ').AsInteger; + i2:= 0; + with Helios.OpenSQL('SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_HDC_StareProdeje_Pol''') do + if (RecordCount=1) then + i2:= VarToStr(FieldValues(0)).ToInteger; + + if (i2>0) then + begin + lSQL:= 'hvw_HDC_StareProdeje_Pol.IDSklad=N' + Helios.Sklad.QuotedString + ' AND hvw_HDC_StareProdeje_Pol.SkupZbo=N'; + lSQL:= lSQL + polGrd.DataSource.DataSet.FieldByName('SkupZbo').AsString.QuotedString + ' AND hvw_HDC_StareProdeje_Pol.RegCis=N'; + lSQL:= lSQL + polGrd.DataSource.DataSet.FieldByName('RegCis').AsString.QuotedString; + lSQL:= lSQL + ' AND hvw_HDC_StareProdeje_Pol.DruhPohybuZbo IN (2,4)'; + Helios.OpenBrowse(i2, lSQL); + end; + end; + + + end; + + + + + procedure TformOrder2.vTabAfterDelete(DataSet: TDataSet); + begin + btnVynulovat.Enabled:= (DataSet.RecordCount>0); + end; + + + + + procedure TformOrder2.vTabAfterPost(DataSet: TDataSet); + var maxPoz: integer; + begin + btnVynulovat.Enabled:= (DataSet.RecordCount>0); + SetLength(arrIdSS, Length(arrIdSS)+1); + maxPoz:= Length(arrIdSS)-1; + arrIdSS[maxPoz]:= DataSet.FieldByName('IDZboSklad').AsInteger; + end; + + + + + procedure TformOrder2.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 (mv0) then + begin + SetLength(cOrgs, RecordCount); + First; + idx:= 0; + while not(EOF) do + begin + cbxDodavatel.Items.Add(VarToStr(FieldValues(1))); + cOrgs[idx]:= VarToStr(FieldValues(0)).ToInteger; + Inc(idx); + Next; + end; + end; + + if (cbxDodavatel.Items.Count=1) then + helUtils.waitStart(nil, 'NaÄŤĂ­tám historická data...', 0, 0); + + cbxDodavatel.ItemIndex:= helUtils.IfThenInt(cbxDodavatel.Items.Count=1, 0, -1); + polGrd.Enabled:= (cbxDodavatel.ItemIndex>-1); + +{ + polGrd.Options:= polGrd.Options + [dgEditing]; + if not(vTab.Active) then + polGrd.Options:= polGrd.Options - [dgEditing] + else + if (vTab.RecordCount=0) then + polGrd.Options:= polGrd.Options - [dgEditing]; +} + cbxDodavatelChange(Sender); + + end; + + + + + procedure TformOrder2.dtZavozChange(Sender: TObject); + var lSQL, podm: string; + begin + idObd:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblObd + ' WHERE DatumOd_Y=' + dtZavoz.DateTime.GetYear.ToString); + + lSQL:= 'SELECT DelkaPorCis FROM ' + tblObd + ' WHERE ID=' + idObd.ToString; + delkaPoradCisla:= helUtils.getHeliosIntVal(Helios, 6, lSQL); + + podm:= 'DruhPohybuZbo=6 AND IDSklad=N' + Helios.Sklad.QuotedString + ' AND RadaDokladu=N' + rDokl.QuotedString + ' AND Obdobi=' + idObd.ToString; + lSQL:= 'SELECT def.PosledniPC FROM ' + tblDDZ + ' d INNER JOIN ' + tblDDZdef + ' def ON (def.IDDruhDZ=d.ID) WHERE d.DruhPohybuZbo=6 AND def.IDObdobi=' + idObd.ToString; + lSQL:= lSQL + ' AND d.RadaDokladu=N' + rDokl.QuotedString; + + lSQL:= 'DECLARE @ppc INT, @d INT, @i INT' + CRLF + 'SET @ppc=ISNULL( (' + lSQL + '), 1)' + CRLF + 'SET @d=(DATEPART(year, GETDATE())-2000) * 10000' + CRLF; + lSQL:= lSQL + 'IF (@ppc=@d) SET @ppc=@ppc+1' + CRLF; + lSQL:= lSQL + 'EXEC @i=dbo.hp_NajdiPrvniVolny @Tabulka=N''TabDokladyZbozi'', @Atribut=N''PoradoveCislo'', @Odkud=@ppc, @Kam=999999, @Where=N' + podm.QuotedString + ', @Returnem=1'; + lSQL:= lSQL + CRLF + 'SELECT @i'; + cisloDokl:= helUtils.getHeliosStrVal(Helios, (YearOf(now)-2000).ToString + StringOfChar('0', delkaPoradCisla-2-1) + '1', lSQL); + + edtCisloObj.ValueInt:= cisloDokl.ToInteger; + end; + + + + + procedure TformOrder2.cbxDodavatelChange(Sender: TObject); + var lSQL: string; + begin + + if (cbxDodavatel.ItemIndex>0) then + helUtils.waitStart(nil, 'NaÄŤĂ­tám historická data...', 0, 0); + + lblDodAdresa.Caption:= ''; + lblDodMisto.Caption:= ''; + lblDodICO.Caption:= ''; + lblDodDIC.Caption:= ''; + gbDodavatel.Caption:= ' Dodavatel '; + if (cbxDodavatel.ItemIndex=-1) then + cOrgDod:= -1 + else + cOrgDod:= cOrgs[cbxDodavatel.ItemIndex]; + lSQL:= 'SELECT Nazev, UliceSCisly, Misto, PSC, ICO, DIC FROM ' + tblCOrg + ' WHERE CisloOrg=' + cOrgDod.ToString; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + lblDodAdresa.Caption:= VarToStr(FieldValues(1)); + lblDodMisto.Caption:= VarToStr(FieldValues(3)) + ' ' + VarToStr(FieldValues(2)); + lblDodICO.Caption:= 'IÄŚ ' + VarToStr(FieldValues(4)); + lblDodDIC.Caption:= 'DIÄŚ ' + VarToStr(FieldValues(5)); + gbDodavatel.Caption:= ' Dodavatel: ÄŤ.org. ' + cOrgDod.ToString + ' '; + NactiKarty; + end + else + begin + vTab.Filter:= 'K1=''999'''; + vTab.Filtered:= true; + end; + polGrd.Enabled:= (cOrgDod>-1); + if (polGrd.Enabled) then + polGrd.DataSource.DataSet.First; + end; + + + + + procedure TformOrder2.edtNumEditorClick(Sender: TObject); + begin + edtNumEditor.Visible:= true; + end; + + + + + procedure TformOrder2.FormClose(Sender: TObject; var Action: TCloseAction); + begin + if (vTab.Active) then + vTab.Close; + if (tabExtOrdInfo<>'') and not(jeTest) then + Helios.ExecSQL('IF OBJECT_ID(N' + tabExtOrdInfo.QuotedString + ', N''U'') IS NOT NULL DROP TABLE ' + tabExtOrdInfo); + Action:= caFree; + end; + + + + + + procedure TformOrder2.FormResize(Sender: TObject); + var i, ii, w: integer; + begin + + for i:=0 to polGrd.Columns.Count-1 do + begin + for ii:=0 to Length(visCols)-1 do + if (visCols[ii].index=i) and (polGrd.Columns.Items[i].Visible) then + polGrd.Columns[i].Width:= Trunc(visCols[ii].koeficient * polGrd.Width); + end; + + end; + + + + + procedure TformOrder2.FormShow(Sender: TObject); + var rHeight, i, ii: integer; + lSQL, podm: string; + m: TMonitor; + begin + UseLatestCommonDialogs:= true; +{ + self.Top:= 0; + self.Left:= 0; + self.Height:= Screen.WorkAreaHeight-25; + self.Width:= Screen.WorkAreaWidth; +} + edtNumEditor.Height:= polGrd.RowHeight+2; + + rDokl:= helUtils.getHeliosStrVal(Helios, '', 'SELECT TOP(1) RadaDokladu FROM ' + tblDDZ + ' WHERE DruhPohybuZbo=6 AND StredNaklad=N' + Helios.Sklad.QuotedString); + if (rDokl='') then + begin + Helios.Error(#1'Chyba zjišťovánĂ­ Ĺ™ady dokladu VydObj'#1 + CRLF + '(nelze dohledat podle nákl.stĹ™ediska)'); + Close; + end; + + idObd:= Helios.Obdobi; + dtZavoz.DateTime:= IncDay(Now, 1); + dtZavozChange(Sender); + + lblInfo.Caption:= 'w: ' + Screen.WorkAreaWidth.ToString + ' / h: ' + Screen.WorkAreaHeight.ToString; + + smtpProfil:= false; + idMailProfile:= 0; + with Helios.OpenSQL('SELECT ID FROM ' + tblUziv + ' WHERE EMailIDProfilu IS NOT NULL AND LoginName=SUSER_SNAME()') do + if (RecordCount=1) then + idMailProfile:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT EMailIDProfilu FROM ' + tblUziv + ' WHERE EMailIDProfilu IS NOT NULL AND LoginName=SUSER_SNAME()'); + if (idMailProfile>0) then + with Helios.OpenSQL('SELECT ID FROM ' + tblMailProfil + ' WHERE ID=' + idMailProfile.ToString + ' AND TypRozhrani=2') do + if (RecordCount=1) then + smtpProfil:= true; + + idBidVydObjHDC:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_DokladyZbozi'''); + idTiskFormVydObjHDC:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblFormDef + ' WHERE Nazev=N''Objednávka pekárna'' AND Aktivni=1 AND Skupina=' + idBidVydObjHDC.ToString); + + ii:= 0; + SetLength(visCols, polGrd.VisibleColumns.Count); + for i:=0 to polGrd.Columns.Count-1 do + if (polGrd.Columns.Items[i].Visible) then + begin + visCols[ii].index:= i; + visCols[ii].koeficient:= RoundToEx(polGrd.Columns.Items[i].Width / polGrd.Width, -5); + Inc(ii); + end; + + +{ + podm:= 'DruhPohybuZbo=6 AND IDSklad=N' + Helios.Sklad.QuotedString + ' AND RadaDokladu=N' + rDokl.QuotedString + ' AND Obdobi=' + idObd.ToString; + lSQL:= 'SELECT def.PosledniPC FROM ' + tblDDZ + ' d INNER JOIN ' + tblDDZdef + ' def ON (def.IDDruhDZ=d.ID) WHERE d.DruhPohybuZbo=6 AND def.IDObdobi=' + idObd.ToString; + lSQL:= lSQL + ' AND d.RadaDokladu=N' + rDokl.QuotedString; + + lSQL:= 'DECLARE @ppc INT, @i INT' + CRLF + 'SET @ppc=ISNULL( (' + lSQL + '), 1)' + CRLF; + lSQL:= lSQL + 'EXEC @i=dbo.hp_NajdiPrvniVolny @Tabulka=N''TabDokladyZbozi'', @Atribut=N''PoradoveCislo'', @Odkud=@ppc, @Kam=999999, @Where=N' + podm.QuotedString + ', @Returnem=1; SELECT @i'; + cisloDokl:= helUtils.getHeliosStrVal(Helios, '0', lSQL); + + edtCisloObj.ValueInt:= cisloDokl.ToInteger; +} + + +{ + rDokl:= helUtils.getHeliosStrVal(Helios, '', 'SELECT TOP(1) RadaDokladu FROM ' + tblDDZ + ' WHERE DruhPohybuZbo=6 AND StredNaklad=N' + Helios.Sklad.QuotedString); + if (rDokl='') then + begin + Helios.Error(#1'Chyba zjišťovánĂ­ Ĺ™ady dokladu VydObj'#1 + CRLF + '(nelze dohledat podle nákl.stĹ™ediska)'); + Close; + end; + + lSQL:= 'DruhPohybuZbo=6 AND IDSklad=N' + Helios.Sklad.QuotedString + ' AND RadaDokladu=N' + rDokl.QuotedString + ' AND Obdobi=' + Helios.Obdobi.ToString; + lSQL:= 'DECLARE @i INT; EXEC @i=dbo.hp_NajdiPrvniVolny @Tabulka=N''TabDokladyZbozi'', @Atribut=N''PoradoveCislo'', @Odkud=0, @Kam=999999, @Where=N' + lSQL.QuotedString + ', @Returnem=1; SELECT @i'; + poradCislo:= helUtils.getHeliosIntVal(Helios, 0, lSQL); +} + +{ + grd.RowCount:= 2; + grd.FixedRows:= 1; + + rHeight:= grd.Canvas.TextHeight('ĂĂ˝'); + grd.DefaultRowHeight:= grd.Font.Size + 18; + +// grd.RowHeights[1]:= grd.Canvas.TextHeight('Akce') + 4; + grd.Cells[0, 0]:= 'Akce'; + grd.Cells[1, 0]:= 'ÄŚĂ­slo'; + grd.Cells[2, 0]:= 'Název'; + grd.Cells[3, 0]:= 'DoporuÄŤeno'; + grd.Cells[4, 0]:= 'Ráno'; + grd.Cells[5, 0]:= 'Poledne'; +} + + branchID:= ZjistiBranchID; + cOrgDod:= -1; + + lblDodAdresa.Caption:= ''; + lblDodMisto.Caption:= ''; + lblDodICO.Caption:= ''; + lblDodDIC.Caption:= ''; + + cbxSortiment.Items.Clear; + + lSQL:= 'SELECT DISTINCT(s.K1), ISNULL(e.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(e._priorita, 999)) AS PoradiSort FROM ' + tblSortim + ' s INNER JOIN ' + tblSortimE + ' e ON (e.ID=s.ID) WHERE e._Objednavky_Zobrazit=1'; + lSQL:= lSQL + ' AND ISNULL(e.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', 0)>0 GROUP BY s.K1, ISNULL(e.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(e._priorita, 999))'; + + + lSQL:= 'SELECT DISTINCT(s.K1) FROM ' + tblSortim + ' s INNER JOIN ' + tblSortimE + ' e ON (e.ID=s.ID) WHERE e._Objednavky_Zobrazit=1'; + lSQL:= lSQL + ' GROUP BY s.K1'; + + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + SetLength(sortim, RecordCount); + i:= 0; + First; + while not(EOF) do + begin + cbxSortiment.Items.Add(helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblSortim + ' WHERE K2 IS NULL AND K1=N' + VarToStr(FieldValues(0)).QuotedString)); + + sortim[i].k1:= VarToStr(FieldValues(0)); +// sortim[i].poradiSort:= VarToStr(FieldValues(1)).ToSingle; + sortim[i].nazev:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblSortim + ' WHERE K2 IS NULL AND K1=N' + VarToStr(FieldValues(0)).QuotedString); + + sortim[i].poleDodav:= ''; + sortim[i].typSort:= 255; + + if (sortim[i].k1='001') then + begin + sortim[i].typSort:= 0; + sortim[i].poleDodav:= '_dodpek'; + end; + + if (sortim[i].k1='003') then + begin + sortim[i].typSort:= 1; + sortim[i].poleDodav:= '_dodlah'; + end; + + if (sortim[i].k1='004') then + begin + sortim[i].typSort:= 2; + sortim[i].poleDodav:= '_dodvelko'; + end; + + Inc(i); + Next; + end; + cbxSortiment.ItemIndex:= 0; + cbxSortimentChange(Sender); + end; + + end; + + + + + end. diff --git a/frmOrder21024.dfm b/frmOrder21024.dfm new file mode 100644 index 0000000..6bf68cc --- /dev/null +++ b/frmOrder21024.dfm @@ -0,0 +1,901 @@ +object formOrder21024: TformOrder21024 + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = ' Vytvo'#345'en'#237' objedn'#225'vky' + ClientHeight = 729 + ClientWidth = 1008 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + Position = poOwnerFormCenter + OnClose = FormClose + OnResize = FormResize + OnShow = FormShow + PixelsPerInch = 96 + DesignSize = ( + 1008 + 729) + TextHeight = 23 + object lblInfo: TLabel + Left = 12 + Top = 197 + Width = 4 + Height = 16 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + Visible = False + end + object gbDodavatel: TGroupBox + Left = 522 + Top = 19 + Width = 478 + Height = 169 + Caption = ' Dodavatel ' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + object Label2: TLabel + Left = 28 + Top = 68 + Width = 71 + Height = 25 + Caption = 'Adresa:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblDodAdresa: TLabel + Left = 111 + Top = 68 + Width = 362 + Height = 29 + AutoSize = False + end + object lblDodMisto: TLabel + Left = 111 + Top = 104 + Width = 359 + Height = 29 + AutoSize = False + end + object lblDodICO: TLabel + Left = 111 + Top = 135 + Width = 7 + Height = 25 + end + object lblDodDIC: TLabel + Left = 301 + Top = 135 + Width = 7 + Height = 25 + end + object cbxDodavatel: TComboBox + Left = 28 + Top = 29 + Width = 439 + Height = 33 + Style = csDropDownList + TabOrder = 0 + OnChange = cbxDodavatelChange + end + end + object gbPolozky: TGroupBox + Left = 4 + Top = 276 + Width = 778 + Height = 425 + Anchors = [akLeft, akTop, akRight, akBottom] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 2 + object btnNovaPolozka: TSpeedButton + Left = 15 + Top = 0 + Width = 37 + Height = 28 + Glyph.Data = { + 36100000424D3610000000000000360000002800000020000000200000000100 + 2000000000000010000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000020003092A0145145902911C7B02C9219103ED239C03FF239C03FF2192 + 03EF1C7C02CB145A02940A2C0149000200040000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000200040E3F + 01681F8803DF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF1F8B03E30F43016E01030005000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000061A002A1C7E02CE239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF1D8102D3061D00300000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000A2E014B219503F4239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF229703F60B33 + 0153000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000A2D0149229903FA239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239A + 03FC0B3301530000000000000000000000000000000000000000000000000000 + 0000000000000000000006190029219403F3239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF229703F6061D003000000000000000000000000000000000000000000000 + 000000000000000200031C7C02CC239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF1D8102D301030005000000000000000000000000000000000000 + 0000000000000E3C0163239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF0F43016E000000000000000000000000000000000000 + 0000000100011E8503DA239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF1F8A03E3000200040000000000000000000000000000 + 00000826013E239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF0A2C01490000000000000000000000000000 + 000013540289239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF145A02940000000000000000000000000000 + 00001A7602C0239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF1C7C02CB0000000000000000000000000000 + 00001F8B03E4239C03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF239C03FF239C + 03FF239C03FF239C03FF239C03FF219203EE0000000000000000000000000000 + 0000229503F4239C03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF0000000000000000000000000000 + 0000229503F4239C03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF0000000000000000000000000000 + 00001F8A03E3239C03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF239C03FF239C + 03FF239C03FF239C03FF239C03FF219103ED0000000000000000000000000000 + 00001A7402BF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF1C7B02C90000000000000000000000000000 + 000012520286239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF145902910000000000000000000000000000 + 00000823013A239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF092A01450000000000000000000000000000 + 0000000000011D8302D6239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF1F8803DF000200030000000000000000000000000000 + 0000000000000D39015D239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF0E3F0168000000000000000000000000000000000000 + 000000000000000100021B7902C6239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF1C7E02CE00020004000000000000000000000000000000000000 + 0000000000000000000005160024219203EF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF219503F4061A002A00000000000000000000000000000000000000000000 + 000000000000000000000000000009280141229803F8239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF2299 + 03FA0A2E014B0000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000009280141219203EF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF219403F30A2D + 0149000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000051600241B7902C6239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF1C7C02CC061900290000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000100020D39 + 015D1D8302D6239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF1E8503DA0E3D016300020003000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000100010823013A125202871A7502BF1F8B03E3229503F4229503F41F8B + 03E41A7602C0135402890826013E000100010000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000} + OnClick = btnNovaPolozkaClick + end + object polGrd: TDBGridEh + Left = 2 + Top = 27 + Width = 774 + Height = 396 + Align = alClient + DataGrouping.Active = True + DataGrouping.DefaultStateExpanded = True + DataGrouping.GroupLevels = < + item + ColumnName = 'Column_15_PoradiSortNazev' + end> + DataSource = ds + DynProps = <> + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + GridLineParams.VertEmptySpaceStyle = dessNonEh + IndicatorOptions = [] + EmptyDataInfo.Active = True + EmptyDataInfo.Text = #381#225'dn'#233' polo'#382'ky nenalezeny' + Options = [dgEditing, dgTitles, dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit] + OptionsEh = [dghFixed3D, dghData3D, dghHighlightFocus, dghClearSelection, dghRowHighlight] + ParentFont = False + SelectionDrawParams.SelectionStyle = gsdsClassicEh + TabOrder = 0 + TitleParams.Color = clMoneyGreen + TitleParams.FillStyle = cfstSolidEh + TitleParams.MultiTitle = True + TitleParams.SecondColor = clMoneyGreen + OnDataGroupGetRowText = polGrdDataGroupGetRowText + OnKeyUp = polGrdKeyUp + Columns = < + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'PoradiSort' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'K1' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'K2' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Sortiment' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'IDZboSklad' + Footers = <> + Visible = False + end + item + Alignment = taCenter + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Poradi' + Footers = <> + Title.Caption = 'Po'#345'ad'#237 + Visible = False + Width = 80 + end + item + Alignment = taCenter + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'RegCis' + Footers = <> + ReadOnly = True + TextEditing = False + Title.Caption = #268#237'slo' + Width = 112 + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Nazev' + Footers = <> + ReadOnly = True + TextEditing = False + Width = 291 + end + item + Alignment = taCenter + CellButtons = <> + DisplayFormat = '##0.##' + DynProps = <> + EditButtons = <> + FieldName = 'StavSkladu' + Footers = <> + ReadOnly = True + TextEditing = False + Title.Caption = 'Stav skl.' + Width = 89 + end + item + Alignment = taCenter + CellButtons = <> + DisplayFormat = '##0.##' + DynProps = <> + EditButtons = <> + FieldName = 'Doporuceno' + Footers = <> + ReadOnly = True + TextEditing = False + Title.Caption = 'Doporu'#269'.' + Width = 91 + end + item + Alignment = taCenter + CellButtons = <> + DisplayFormat = '##0.##' + DynProps = <> + EditButtons = <> + FieldName = 'Rano' + Footers = <> + Width = 65 + end + item + Alignment = taCenter + CellButtons = <> + DisplayFormat = '##0.##' + DynProps = <> + EditButtons = <> + FieldName = 'Poledne' + Footers = <> + Width = 82 + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Priorita' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'CisloZbozi' + Footers = <> + STFilter.DataField = 'CisloZbozi' + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'K1K2' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'PoradiSortNazev' + Footers = <> + TextEditing = False + Visible = False + end> + object RowDetailData: TRowDetailPanelControlEh + end + end + end + object btnOK: TButton + Left = 793 + Top = 198 + Width = 208 + Height = 105 + Anchors = [akTop, akRight] + Caption = 'Ulo'#382'it a odeslat objedn'#225'vku' + TabOrder = 0 + WordWrap = True + OnClick = btnOKClick + end + object btnTisk: TButton + Left = 793 + Top = 320 + Width = 208 + Height = 49 + Anchors = [akTop, akRight] + Caption = 'Vytisknout' + TabOrder = 3 + Visible = False + OnClick = btnTiskClick + end + object btnPoslat: TButton + Left = 793 + Top = 392 + Width = 208 + Height = 51 + Anchors = [akTop, akRight] + Caption = 'Odeslat dodavateli' + TabOrder = 4 + Visible = False + OnClick = btnPoslatClick + end + object btnRozbalit: TButton + Left = 793 + Top = 488 + Width = 208 + Height = 46 + Anchors = [akRight, akBottom] + Caption = 'Rozbalit v'#353'e' + TabOrder = 5 + OnClick = btnRozbalitClick + end + object btnSbalit: TButton + Left = 793 + Top = 556 + Width = 208 + Height = 45 + Anchors = [akRight, akBottom] + Caption = 'Sbalit v'#353'e' + TabOrder = 6 + OnClick = btnSbalitClick + end + object btnZavrit: TButton + Left = 793 + Top = 643 + Width = 208 + Height = 61 + Anchors = [akRight, akBottom] + Caption = 'Zav'#345#237't' + TabOrder = 7 + OnClick = btnZavritClick + end + object edtNumEditor: TNxEdit6 + Left = 102 + Top = 195 + Width = 121 + Height = 41 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -27 + Font.Name = 'Tahoma' + Font.Style = [] + MaxLength = 3 + NumbersOnly = True + ParentFont = False + TabOrder = 8 + Visible = False + UserDefinedColorPalette.GeometryHoverColor = clBlack + OnClick = edtNumEditorClick + end + object Panel1: TPanel + Left = 7 + Top = 242 + Width = 585 + Height = 35 + Anchors = [akLeft, akTop, akRight] + Caption = 'Zbo'#382#237 + Color = 14471860 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBackground = False + ParentFont = False + TabOrder = 9 + end + object Panel2: TPanel + Left = 591 + Top = 242 + Width = 153 + Height = 35 + Anchors = [akTop, akRight] + Caption = 'Objedn'#225'no' + Color = 14471860 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBackground = False + ParentFont = False + TabOrder = 10 + end + object btnVynulovat: TButton + Left = 579 + Top = 198 + Width = 183 + Height = 42 + Anchors = [akLeft, akTop, akRight] + Caption = 'Vynulovat mno'#382'stv'#237 + TabOrder = 11 + OnClick = btnVynulovatClick + end + object gbSortiment: TGroupBox + Left = 9 + Top = 19 + Width = 503 + Height = 175 + TabOrder = 12 + object Label1: TLabel + Left = 38 + Top = 74 + Width = 125 + Height = 23 + Caption = 'Datum z'#225'vozu:' + end + object Label3: TLabel + Left = 16 + Top = 16 + Width = 144 + Height = 23 + Caption = 'Druh sortimentu:' + end + object Label4: TLabel + Left = 14 + Top = 125 + Width = 145 + Height = 23 + Caption = #268#237'slo objedn'#225'vky:' + end + object cbxSortiment: TComboBox + Left = 171 + Top = 13 + Width = 320 + Height = 31 + Style = csDropDownList + TabOrder = 0 + OnChange = cbxSortimentChange + end + object dtZavoz: TDateTimePicker + Left = 171 + Top = 70 + Width = 149 + Height = 31 + Date = 44268.000000000000000000 + Time = 0.431178437502239800 + TabOrder = 1 + OnChange = dtZavozChange + end + object edtCisloObj: TNumberBox + Left = 171 + Top = 122 + Width = 97 + Height = 31 + Alignment = taCenter + DisplayFormat = '#####0' + Enabled = False + TabOrder = 2 + end + end + object vTab: TMemTableEh + Params = <> + AfterPost = vTabAfterPost + AfterDelete = vTabAfterDelete + Left = 12 + Top = 11 + object vTabPoradiSort: TSingleField + FieldName = 'PoradiSort' + Visible = False + end + object vTabK1: TStringField + FieldName = 'K1' + Size = 10 + end + object vTabK2: TStringField + FieldName = 'K2' + Size = 10 + end + object vTabSortiment: TStringField + FieldName = 'Sortiment' + Required = True + Size = 50 + end + object vTabIDZboSklad: TIntegerField + FieldName = 'IDZboSklad' + Visible = False + end + object vTabRegCis: TStringField + FieldName = 'RegCis' + Size = 30 + end + object vTabNazev: TStringField + FieldName = 'Nazev' + Size = 100 + end + object vTabRano: TFloatField + DisplayLabel = 'R'#225'no' + FieldName = 'Rano' + OnValidate = vTabRanoValidate + end + object vTabDoporuceno: TFloatField + FieldName = 'Doporuceno' + end + object vTabPoledne: TFloatField + FieldName = 'Poledne' + OnValidate = vTabPoledneValidate + end + object vTabStavSkladu: TFloatField + DisplayLabel = 'Stav skladu' + FieldName = 'StavSkladu' + end + object vTabPriorita: TIntegerField + DisplayWidth = 10 + FieldName = 'Priorita' + Visible = False + end + object vTabCisloZbozi: TStringField + FieldName = 'CisloZbozi' + Visible = False + Size = 33 + end + object vTabIDKZ: TIntegerField + FieldName = 'IDKZ' + Visible = False + end + object vTabSkupZbo: TStringField + FieldName = 'SkupZbo' + Visible = False + Size = 3 + end + object vTabDodavatel: TIntegerField + FieldName = 'Dodavatel' + Visible = False + end + object vTabJenRano: TSmallintField + FieldName = 'JenRano' + Visible = False + end + object vTabMinimum: TFloatField + FieldName = 'Minimum' + Visible = False + end + object vTabDelitelnost: TFloatField + FieldName = 'Delitelnost' + Visible = False + end + object vTabPoradi: TSingleField + FieldName = 'Poradi' + Visible = False + end + object vTabK1K2: TStringField + FieldName = 'K1K2' + Visible = False + Size = 15 + end + object vTabPoradiSortNazev: TStringField + FieldName = 'PoradiSortNazev' + Size = 100 + end + object MemTableData: TMemTableDataEh + object DataStruct: TMTDataStructEh + object PoradiSortNazev: TMTStringDataFieldEh + FieldName = 'PoradiSortNazev' + StringDataType = fdtStringEh + DisplayWidth = 100 + Size = 100 + end + object Delitelnost: TMTNumericDataFieldEh + FieldName = 'Delitelnost' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object Minimum: TMTNumericDataFieldEh + FieldName = 'Minimum' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object JenRano: TMTNumericDataFieldEh + FieldName = 'JenRano' + NumericDataType = fdtSmallintEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object Dodavatel: TMTNumericDataFieldEh + FieldName = 'Dodavatel' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + Visible = False + currency = False + Precision = 15 + end + object SkupZbo: TMTStringDataFieldEh + FieldName = 'SkupZbo' + StringDataType = fdtStringEh + DisplayWidth = 3 + Visible = False + Size = 3 + end + object PoradiSort: TMTNumericDataFieldEh + FieldName = 'PoradiSort' + NumericDataType = fdtSingleEh + AutoIncrement = False + DisplayWidth = 20 + Visible = False + currency = False + Precision = 15 + end + object K1: TMTStringDataFieldEh + FieldName = 'K1' + StringDataType = fdtStringEh + DisplayWidth = 10 + Size = 10 + end + object K2: TMTStringDataFieldEh + FieldName = 'K2' + StringDataType = fdtStringEh + DisplayWidth = 10 + Size = 10 + end + object Sortiment: TMTStringDataFieldEh + FieldName = 'Sortiment' + StringDataType = fdtStringEh + DisplayWidth = 50 + Size = 50 + end + object IDZboSklad: TMTNumericDataFieldEh + FieldName = 'IDZboSklad' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object IDKZ: TMTNumericDataFieldEh + FieldName = 'IDKZ' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object RegCis: TMTStringDataFieldEh + FieldName = 'RegCis' + StringDataType = fdtStringEh + DisplayWidth = 10 + Size = 30 + end + object Nazev: TMTStringDataFieldEh + FieldName = 'Nazev' + StringDataType = fdtStringEh + DisplayWidth = 50 + Size = 100 + end + object StavSkladu: TMTNumericDataFieldEh + FieldName = 'StavSkladu' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayLabel = '0' + DisplayWidth = 20 + currency = False + Precision = 10 + end + object Doporuceno: TMTNumericDataFieldEh + FieldName = 'Doporuceno' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayLabel = '0' + DisplayWidth = 20 + currency = False + Precision = 10 + end + object Rano: TMTNumericDataFieldEh + FieldName = 'Rano' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayLabel = '0' + DisplayWidth = 20 + currency = False + Precision = 10 + end + object Poledne: TMTNumericDataFieldEh + FieldName = 'Poledne' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayLabel = '0' + DisplayWidth = 20 + currency = False + Precision = 10 + end + object K1K2: TMTStringDataFieldEh + FieldName = 'K1K2' + StringDataType = fdtStringEh + DisplayWidth = 20 + Visible = False + end + object Poradi: TMTNumericDataFieldEh + FieldName = 'Poradi' + NumericDataType = fdtSingleEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object Priorita: TMTNumericDataFieldEh + FieldName = 'Priorita' + NumericDataType = fdtSmallintEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 3 + end + object CisloZbozi: TMTStringDataFieldEh + FieldName = 'CisloZbozi' + StringDataType = fdtStringEh + DisplayWidth = 50 + Size = 33 + end + end + object RecordsList: TRecordsListEh + end + end + end + object ds: TDataSource + DataSet = vTab + Left = 13 + Top = 60 + end +end diff --git a/frmOrder21024.pas b/frmOrder21024.pas new file mode 100644 index 0000000..1be5625 --- /dev/null +++ b/frmOrder21024.pas @@ -0,0 +1,1198 @@ +unit frmOrder21024; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Types, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, System.ImageList, Vcl.ImgList, Vcl.StdCtrls, Vcl.Buttons, + Vcl.ComCtrls, ddPlugin_TLB, TBPackageU, Vcl.WinXPickers, Vcl.Mask, RxToolEdit, Vcl.NumberBox, Vcl.Grids, VirtualTrees, + NxGridView6, NxColumns6, NxControls6, NxCustomGrid6, NxVirtualGrid6, NxGrid6, NxEdit6, MemTableDataEh, Data.DB, + DBGridEhGrouping, ToolCtrlsEh, DBGridEhToolCtrls, DynVarsEh, EhLibVCL, GridsEh, DBAxisGridsEh, DBGridEh, MemTableEh, EhLibMTE, + System.MaskUtils, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase, + IdSMTP, IdBaseComponent, IdMessage, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL, + IdAttachment, IdAttachmentFile, IdAttachmentMemory, datModObj; + +type + TWideStringHelper = record helper for WideString + function QuotedString: string; overload; + end; + + TMaskedTextHelper = record helper for TMaskedText + function QuotedString: string; overload; + function Replace(oldStr, newStr: string): string; overload; + end; + + TVisColumn = record + index: integer; + koeficient: Single; + end; + + TSortiment = record + nazev, k1, poleDodav: string; + dodavatel: integer; + poradiSort: Single; + typSort: byte; + end; + + TformOrder21024 = class(TForm) + gbDodavatel: TGroupBox; + gbPolozky: TGroupBox; + Label1: TLabel; + dtZavoz: TDateTimePicker; + btnOK: TButton; + Label2: TLabel; + lblDodAdresa: TLabel; + lblDodMisto: TLabel; + cbxSortiment: TComboBox; + Label3: TLabel; + edtCisloObj: TNumberBox; + Label4: TLabel; + btnTisk: TButton; + btnPoslat: TButton; + btnRozbalit: TButton; + btnSbalit: TButton; + btnZavrit: TButton; + Panel1: TPanel; + Panel2: TPanel; + edtNumEditor: TNxEdit6; + vTab: TMemTableEh; + ds: TDataSource; + polGrd: TDBGridEh; + 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; + cbxDodavatel: TComboBox; + lblDodICO: TLabel; + lblDodDIC: TLabel; + vTabIDKZ: TIntegerField; + vTabSkupZbo: TStringField; + vTabDodavatel: TIntegerField; + vTabJenRano: TSmallintField; + vTabMinimum: TFloatField; + vTabDelitelnost: TFloatField; + btnVynulovat: TButton; + lblInfo: TLabel; + vTabPoradi: TSingleField; + gbSortiment: TGroupBox; + vTabK1K2: TStringField; + vTabPoradiSortNazev: TStringField; + btnNovaPolozka: TSpeedButton; + procedure FormShow(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure cbxSortimentChange(Sender: TObject); + procedure edtNumEditorClick(Sender: TObject); + procedure btnRozbalitClick(Sender: TObject); + procedure btnSbalitClick(Sender: TObject); + procedure btnOKClick(Sender: TObject); + procedure cbxDodavatelChange(Sender: TObject); + procedure polGrdKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure btnZavritClick(Sender: TObject); + procedure btnTiskClick(Sender: TObject); + procedure vTabRanoValidate(Sender: TField); + procedure vTabPoledneValidate(Sender: TField); + procedure dtZavozChange(Sender: TObject); + procedure FormResize(Sender: TObject); + procedure btnVynulovatClick(Sender: TObject); + procedure vTabAfterPost(DataSet: TDataSet); + procedure vTabAfterDelete(DataSet: TDataSet); + procedure btnPoslatClick(Sender: TObject); + procedure polGrdDataGroupGetRowText(Sender: TCustomDBGridEh; GroupDataTreeNode: TGroupDataTreeNodeEh; var GroupRowText: string); + procedure btnNovaPolozkaClick(Sender: TObject); + private + cOrg: integer; + visCols: TArray; + function ZjistiBranchID: Integer; + procedure NactiKarty; + public + Helios: IHelios; + jeTest: boolean; + oznacKOdeslani: boolean; + end; + +var + formOrder21024: TformOrder21024; + sortim: TArray; + cOrgs: TArray; + dmObj: TdmObj; + cOrgDod: integer; +// poradCislo: integer; + branchID, idDZ, idObd, idBidVydObjHDC, idTiskForm, idTiskFormVydObjHDC, idMailProfile: integer; + tabExtOrdInfo, cisloDokl, rDokl: string; + smtpProfil: boolean; + delkaPoradCisla: byte; + arrIdSS: TArray; + +implementation +uses System.StrUtils, System.DateUtils, helUtils; + +{$R *.dfm} + + +{$IF CompilerVersion>=34} // Sydney a vys +{$ENDIF} + + function TWideStringHelper.QuotedString: string; + begin + Result:= string(Self).QuotedString; + end; + + function TMaskedTextHelper.QuotedString: string; + var s: string; + begin + s:= Self; + Result:= s.QuotedString; + end; + + function TmaskedTextHelper.Replace(oldStr: string; newStr: string): string; + var s: string; + begin + s:= Self; + Result:= s.Replace(oldStr, newStr); + end; + + + + + + + + function TformOrder21024.ZjistiBranchID: Integer; + var s: string; + begin + result:= -1; + s:= Helios.Sklad; + if (LeftStr(s, 3)='005') then + result:= RightStr(s, 1).ToInteger; + end; + + + + + procedure TformOrder21024.btnNovaPolozkaClick(Sender: TObject); + var oVar: OleVariant; + idSS, idKZ: integer; + lSQL, k1, k2: string; + poradiSort, poradiSort2: Single; + begin + lSQL:= 'TabStavSkladu.Blokovano=0'; + if (Length(arrIdSS)>0) then + lSQL:= lSQL + ' AND TabStavSkladu.ID NOT IN (' + helUtils.ArrayToString(arrIdSS, ',') + ')'; + if Helios.Prenos(bidSS, 'TabStavSkladu.ID', oVar, lSQL, 'PĹ™idejte kartu na objednávku', true) then + begin + idSS:= VarToStr(oVar).ToInteger; + idKZ:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDKmenZbozi FROM ' + tblSS + ' WHERE ID=' + idSS.ToString); + vTab.Append; + vTab.FieldByName('IDZboSklad').AsInteger:= idSS; + vTab.FieldByName('IDKZ').AsInteger:= idKZ; + vTab.FieldByName('Rano').AsInteger:= 0; + vTab.FieldByName('Poledne').AsInteger:= 0; + vTab.FieldByName('Doporuceno').AsInteger:= 0; + + lSQL:= 'SELECT k.SkupZbo, k.RegCis, k.Nazev1, k.CisloZbozi, ISNULL(ke._delitelnost,1) AS delitelnost, ISNULL(ke._poradivsortimentu,999) AS PoradiVSort, ISNULL(ke._priorita,3) AS priorita'; + lSQL:= lSQL + ', ISNULL(ke._zavoz,1) AS zavoz, ISNULL(so.K1,N'''')+ISNULL(so.K2,N'''') AS K1K2, ISNULL(so.K1,N'''') AS K1, ISNULL(so.K2,N'''') AS K2, ISNULL(k.Aktualni_Dodavatel,-1) AS dodavatel'; + lSQL:= lSQL + ', ISNULL(so.Nazev,N'''') AS SortNazev FROM ' + tblKZ + ' k LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) LEFT JOIN ' + tblSortim; + lSQL:= lSQL + ' so ON (so.ID=k.IDSortiment) LEFT JOIN ' + tblSortimE + ' soe ON (soe.ID=so.ID) WHERE k.ID=' + idKZ.ToString; + with Helios.OpenSQL(lSQL) do + begin + k1:= VarToStr(FieldByNameValues('K1')); + k2:= VarToStr(FieldByNameValues('K2')); + + vTab.FieldByName('PoradiSort').AsSingle:= VarToStr(FieldByNameValues('PoradiVSort')).ToSingle; + vTab.FieldByName('K1').AsString:= k1; + vTab.FieldByName('K2').AsString:= k2; + vTab.FieldByName('K1K2').AsString:= k1+k2; + vTab.FieldByName('Priorita').AsInteger:= VarToStr(FieldByNameValues('priorita')).ToInteger; + vTab.FieldByName('Dodavatel').AsInteger:= VarToStr(FieldByNameValues('dodavatel')).ToInteger; + if (VarToStr(FieldByNameValues('zavoz'))='1') then + vTab.FieldByName('JenRano').AsInteger:= 1 + else + vTab.FieldByName('JenRano').AsInteger:= 0; + + + lSQL:= 'SELECT s.ID, s.Nazev, s.K1, ISNULL(s.K2,N'''') AS K2, ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)) AS Poradi FROM ' + tblSortim + ' s LEFT JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE se._Objednavky_Zobrazit=1'; + lSQL:= lSQL + ' AND s.K1=N' + k1.QuotedString; // + ' AND s.K2 IS NOT NULL'; + lSQL:= lSQL + ' ORDER BY ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)), K1, ISNULL(s.K2, N'''')'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + poradiSort2:= VarToStr(FieldByNameValues('Poradi')).ToSingle; + vTab.FieldByName('PoradiSortNazev').AsString:= ((poradiSort*1000.0)+poradiSort2).ToString.Replace(',', '.') + ' ' + VarToStr(FieldByNameValues('SortNazev')); + end; + + vTab.FieldByName('Sortiment').AsString:= VarToStr(FieldByNameValues('SortNazev')); + vTab.FieldByName('SkupZbo').AsString:= VarToStr(FieldByNameValues('SkupZbo')); + vTab.FieldByName('RegCis').AsString:= VarToStr(FieldByNameValues('RegCis')); + vTab.FieldByName('Nazev').AsString:= VarToStr(FieldByNameValues('Nazev1')); + vTab.FieldByName('StavSkladu').AsExtended:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT ISNULL((SELECT Mnozstvi FROM ' + tblSS + ' WHERE ID=' + idSS.ToString + '),0)'); + end; + vTab.Post; + vTab.Refresh; + end; + end; + + + + + procedure TformOrder21024.btnOKClick(Sender: TObject); + var oldRec, idHlava, idHlava2: integer; + lSQL, spojeniKontaktu, popisKontaktu, sz, rc, idSS: string; + tiskOK, kontaktNalezen: boolean; + begin + cisloDokl:= ''; + + if (vTab.RecordCount>0) then + begin + +// dmObj.ZapisObjednavky(vTab, cOrgDod, edtCisloObj.ValueInt, dtZavoz); + + spojeniKontaktu:= ''; + popisKontaktu:= ''; + kontaktNalezen:= false; + + if not(smtpProfil) then + Helios.Error(#1'Nemáte pĹ™ednastavenĂ˝ emailovĂ˝ profil pro odeslánĂ­ pĹ™es SMTP'#1) + else + begin + with Helios.OpenSQL('EXEC dbo.hp_GetKontaktProKosAOrg @IDKOs=NULL, @CisOrg=' + cOrgDod.ToString + ', @Druh=6') do + if (RecordCount>0) then + begin + First; + while not(EOF) and not(kontaktNalezen) do + begin + popisKontaktu:= VarToStr(FieldValues(0)); // @Popis + spojeniKontaktu:= VarToStr(FieldValues(1)); // @Spojeni + if (spojeniKontaktu<>'') or (popisKontaktu='Objednávky') then + kontaktNalezen:= true; + Next; + end; + end; + + if not(kontaktNalezen) then + Helios.Error(#1'U dodavatele nenĂ­ kontakt typu email s popisem "Objednávky"'#1 + CRLF + 'Email nebude automatem odeslán.'); + end; + + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabObjednavkaH'') IS NOT NULL' + CRLF + ' DELETE FROM dbo._temp_TabObjednavkaH WHERE Autor=SUSER_SNAME()' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabObjednavkaR'') IS NOT NULL AND OBJECT_ID(N''dbo._temp_TabObjednavkaH'') IS NOT NULL' + CRLF + ' DELETE FROM dbo._temp_TabObjednavkaR WHERE'; + lSQL:= lSQL + ' IDHlava NOT IN (SELECT ID FROM dbo._temp_TabObjednavkaH)' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabObjednavkaH'') IS NOT NULL' + CRLF + ' IF NOT EXISTS(SELECT * FROM dbo._temp_TabObjednavkaH)' + CRLF + ' DROP TABLE dbo._temp_TabObjednavkaH' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabObjednavkaR'') IS NOT NULL' + CRLF + ' IF NOT EXISTS(SELECT * FROM dbo._temp_TabObjednavkaR)' + CRLF + ' DROP TABLE dbo._temp_TabObjednavkaR'; + Helios.ExecSQL(lSQL); + + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabObjednavkaH'') IS NOT NULL' + CRLF + ' DROP TABLE #TabObjednavkaH' + CRLF; + lSQL:= lSQL + 'CREATE TABLE #TabObjednavkaH (ID INT IDENTITY(1,1) NOT NULL, CisloOrg INT NOT NULL, Sklad NVARCHAR(30), Datum DATETIME, EmailCil NVARCHAR(80) NOT NULL DEFAULT N'''''; + lSQL:= lSQL + ', Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME())'; + if (jeTest) then + lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabO', 'dbo._temp_TabO'); + Helios.ExecSQL(lSQL); + + idHlava:= 0; + lSQL:= 'INSERT #TabObjednavkaH (CisloOrg, Sklad, Datum, EmailCil)' + CRLF + ' SELECT ISNULL(TRY_PARSE(N' + cOrgDod.ToString.Replace(';', '').Replace('-','').Replace(' ', '').QuotedString; + lSQL:= lSQL + ' AS INT), 0), N' + Helios.Sklad.QuotedString + ', CONVERT(datetime, N' + FormatDateTime('d.m.yyyy', dtZavoz.Date).QuotedString + ', 104), N' + spojeniKontaktu.QuotedString; + lSQL:= lSQL + CRLF + 'SELECT SCOPE_IDENTITY()'; + if (jeTest) then + lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabO', 'dbo._temp_TabO'); + with Helios.OpenSQL(lSQL) do + idHlava:= VarToStr(FieldValues(0)).ToInteger; + + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabObjednavkaR'') IS NOT NULL' + CRLF + ' DROP TABLE #TabObjednavkaR' + CRLF; + lSQL:= lSQL + 'CREATE TABLE #TabObjednavkaR (ID INT IDENTITY(1,1) NOT NULL, IDHlava INT NOT NULL, IDZboSklad INT NOT NULL, Rano NUMERIC(15,4) NOT NULL DEFAULT 0.0, PoradiObj NUMERIC(10,2) DEFAULT 999'; + lSQL:= lSQL + ', Poledne NUMERIC(15,4) NOT NULL DEFAULT 0.0, Doporuceno NUMERIC(15,4) NOT NULL DEFAULT 0.0, SkupZbo NVARCHAR(3), RegCis NVARCHAR(30), Sklad NVARCHAR(30), Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME())'; + if (jeTest) then + lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabO', 'dbo._temp_TabO'); + Helios.ExecSQL(lSQL); + + lSQL:= 'INSERT dbo._HDC_TabAplikace (TypDokladu, IDSklad) VALUES (1, N' + Helios.Sklad.QuotedString + '); SELECT SCOPE_IDENTITY()'; + idHlava2:= helUtils.getHeliosIntVal(Helios, 0, lSQL); + + + oldRec:= vTab.RecNo; + vTab.DisableControls; + vTab.First; + while not(vTab.Eof) do + begin + if (vTab.FieldByName('Rano').AsSingle>0) or (vTab.FieldByName('Poledne').AsSingle>0) then + begin + idSS:= IfThen(vTab.FieldByName('IDZboSklad').AsString='', '0', vTab.FieldByName('IDZboSklad').AsString); + sz:= vTab.FieldByName('SkupZbo').AsString; + rc:= vTab.FieldByName('RegCis').AsString; + + lSQL:= 'INSERT dbo._HDC_TabAplikaceR (IDHlava, TypDokladu, IDSklad, IDZboSklad, CisloZbozi, Rano, Poledne) SELECT ' + idHlava2.ToString + ', 1, N' + Helios.Sklad.QuotedString; + lSQL:= lSQL + ', ' + idSS + ', N' + (sz+rc).QuotedString + ', ' + vTab.FieldByName('Rano').AsSingle.ToString + ', ' + vTab.FieldByName('Poledne').AsSingle.ToString; + Helios.ExecSQL(lSQL); + + lSQL:= 'INSERT #TabObjednavkaR (IDHlava, IDZboSklad, Rano, Poledne, Doporuceno, Sklad, PoradiObj, SkupZbo, RegCis)' + CRLF + ' SELECT ' + idHlava.ToString + ', ' + idSS + ', '; + lSQL:= lSQL + vTab.FieldByName('Rano').AsSingle.ToString.Replace(',','.') + ', ' + vTab.FieldByName('Poledne').AsSingle.ToString.Replace(',','.'); + lSQL:= lSQL + ', ' + vTab.FieldByName('Doporuceno').AsSingle.ToString.Replace(',','.') + ', N' + Helios.Sklad.QuotedString + ', ' + vTab.FieldByName('Poradi').AsString.Replace(',', '.'); + lSQL:= lSQL + ', N' + sz.QuotedString + ', N' + rc.QuotedString; + if (jeTest) then + lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabO', 'dbo._temp_TabO'); + Helios.ExecSQL(lSQL); + end; + vTab.Next; + end; + vTab.RecNo:= oldRec; + vTab.EnableControls; + + idDZ:= 0; + if not(jeTest) then + begin + helUtils.waitStart(self, 'Zápis vydanĂ© objednávky...', 0, 0); + try + lSQL:= 'DECLARE @i INT; IF OBJECT_ID(N''dbo.ep_HDC_App_Objednavka'', N''P'') IS NOT NULL EXEC dbo.ep_HDC_App_Objednavka @idDZ=@i OUT, @Sklad=N' + Helios.Sklad.QuotedString + CRLF + 'SELECT @i'; + with Helios.OpenSQL(lSQL) do + idDZ:= VarToStr(FieldValues(0)).ToInteger; + if (idDZ>0) and (oznacKOdeslani) then + begin + Helios.ExecSQL('IF NOT EXISTS(SELECT ID FROM ' + tblDZe + ' WHERE ID=' + idDZ.ToString + ') INSERT ' + tblDZe + ' (ID) SELECT ' + idDZ.ToString); + Helios.ExecSQL('UPDATE ' + tblDZe+ ' SET _VydObj_OdeslatNaMail=1 WHERE ID=' + idDZ.ToString); +// Helios.Info(#1'Objednávka byla oznaÄŤena k odeslánĂ­ emailem dodavateli.'#1); + end; + except + end; + helUtils.waitEnd; + end; + cisloDokl:= helUtils.getHeliosStrVal(Helios, '', 'SELECT PoradoveCislo FROM ' + tblDZ + ' WHERE ID=' + idDZ.ToString); + idTiskForm:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT TiskovyForm FROM ' + tblDDZ + ' WHERE ID=' + idDZ.ToString); + end; + + + lSQL:= ''; + if (Sender.ToString='TButton') then + lSQL:= (Sender as TButton).Name; + + if (lSQL='btnOK') then + Close; + if (lSQL='btnTisk') or (lSQL='btnPoslat') then + begin + tiskOK:= false; + Helios.Info(#1'Objednávka byla uloĹľena - ÄŤ. ' + cisloDokl + #1); + if (lSQL='btnTisk') then + if (idBidVydObjHDC>0) then + tiskOK:= Helios.PrintForm3(idBidVydObjHDC, idTiskFormVydObjHDC, 'ID=' + idDZ.ToString) + else + tiskOK:= Helios.PrintForm2(11, 'ID=' + idDZ.ToString); + end; + + end; + + + + + procedure TformOrder21024.btnPoslatClick(Sender: TObject); + var popisKontaktu, spojeniKontaktu: string; + kontaktNalezen: Boolean; + begin + if (cOrgDod<0) then + begin + Helios.Error(#1'NenĂ­ vybrán dodavatel'#1); + Exit; + end; + + if not(smtpProfil) then + Helios.Error(#1'Nemáte pĹ™ednastavenĂ˝ emailovĂ˝ profil pro odeslánĂ­ pĹ™es SMTP'#1) + else + begin + spojeniKontaktu:= ''; + popisKontaktu:= ''; + kontaktNalezen:= false; + + with Helios.OpenSQL('EXEC dbo.hp_GetKontaktProKosAOrg @IDKOs=NULL, @CisOrg=' + cOrgDod.ToString + ', @Druh=6') do + if (RecordCount>0) then + begin + First; + while not(EOF) and not(kontaktNalezen) do + begin + popisKontaktu:= VarToStr(FieldValues(0)); // @Popis + spojeniKontaktu:= VarToStr(FieldValues(1)); // @Spojeni + if (spojeniKontaktu<>'') or (popisKontaktu='Objednávky') then + kontaktNalezen:= true; + Next; + end; + end; + + if not(kontaktNalezen) then + Helios.Error(#1'U dodavatele nenĂ­ kontakt typu email s popisem "Objednávky"'#1 + CRLF + 'Email nebude automatem odeslán.') + else + begin + btnOKClick(Sender); + if (idDZ>0) then + begin + Helios.ExecSQL('IF NOT EXISTS(SELECT ID FROM ' + tblDZe + ' WHERE ID=' + idDZ.ToString + ') INSERT ' + tblDZe + ' (ID) SELECT ' + idDZ.ToString); + Helios.ExecSQL('UPDATE ' + tblDZe+ ' SET _VydObj_OdeslatNaMail=1 WHERE ID=' + idDZ.ToString); + Helios.Info(#1'Objednávka byla oznaÄŤena k odeslánĂ­ emailem dodavateli.'#1); + Close; + end + else + Helios.Error(#1'Chyba, objednávku se v rámci odeslánĂ­ nepodaĹ™ilo uloĹľit. Zkuste to znovu.'#1) + end; + end; + end; + + + + + procedure TformOrder21024.btnRozbalitClick(Sender: TObject); + begin + polGrd.DataGrouping.ActiveGroupLevels[0].ExpandNodes; + end; + + + + + procedure TformOrder21024.btnSbalitClick(Sender: TObject); + begin + polGrd.DataGrouping.ActiveGroupLevels[0].CollapseNodes; + end; + + + + + procedure TformOrder21024.btnTiskClick(Sender: TObject); + var lSQL: string; + i: integer; + begin +{ + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabObjTiskH'') IS NOT NULL DROP TABLE #TabObjTiskH' + CRLF + 'CREATE TABLE #TabObjTiskH (ID INT IDENTITY(1,1) NOT NULL'; + lSQL:= lSQL + ', CisloOrg INT NOT NULL, Sklad NVARCHAR(30), Datum DATETIME)' + CRLF; + Helios.ExecSQL(lSQL); + + lSQL:= 'INSERT #TabObjTiskH (CisloOrg, Sklad, Datum) SELECT ISNULL(TRY_PARSE(N' + cOrgDod.ToString.Replace(';', '').Replace('-','').Replace(' ', '').QuotedString; + lSQL:= lSQL + ' AS INT), 0), N' + Helios.Sklad.QuotedString + ', CONVERT(datetime, N' + FormatDateTime('d.m.yyyy', dtZavoz.Date).QuotedString + ', 104)'; + Helios.ExecSQL(lSQL); + + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabObjTiskR'') IS NOT NULL DROP TABLE #TabObjTiskR' + CRLF + 'CREATE TABLE #TabObjTiskR (ID INT IDENTITY(1,1) NOT NULL'; + lSQL:= lSQL + ', SkupZbo NVARCHAR(3), RegCis NVARCHAR(30), Nazev1 NVARCHAR(100), Rano NUMERIC(15,3) DEFAULT 0.0, Poledne NUMERIC(15,3) DEFAULT 0.0)' + CRLF; + Helios.ExecSQL(lSQL); + + vTab.DisableControls; + vTab.First; + while not(vTab.Eof) do + begin + lSQL:= 'INSERT #TabObjTiskR (SkupZbo, RegCis, Nazev1, Rano, Poledne) SELECT N' + vTab.FieldByName('SkupZbo').AsString.QuotedString + ', N'; + lSQL:= lSQL + vTab.FieldByName('RegCis').AsString.QuotedString + ', N' + vTab.FieldByName('Nazev').AsString.QuotedString + ', '; + lSQL:= lSQL + vTab.FieldByName('Rano').AsString.Replace(',', '.') + ', ' + vTab.FieldByName('Poledne').AsString.Replace(',', '.'); + Helios.ExecSQL(lSQL); + vTab.Next; + end; + +// Helios.PrintForm(12); + + vTab.EnableControls; +} + btnOKClick(Sender); + + end; + + + + + procedure TformOrder21024.btnVynulovatClick(Sender: TObject); + var i: integer; + begin + if (vTab.RecordCount>0) then + if (Helios.YesNo('!! POZOR !! Toto je ' + #1 + 'nevratná akce' + #1 + ' !!', false)) then + if (Helios.YesNo('?? Opravdu vynulovat ' + #1 + 'všechna' + #1 + ' nabĂ­zená mnoĹľstvĂ­ ??', false)) then + begin + i:= vTab.RecNo; + vTab.DisableControls; + vTab.First; + while not(vTab.Eof) do + begin + vTab.Edit; + vTab.FieldByName('Rano').AsInteger:= 0; + vTab.FieldByName('Poledne').AsInteger:= 0; + vTab.Post; + vTab.Next; + end; + vTab.EnableControls; + vTab.RecNo:= i; + end; + + end; + + + + + procedure TformOrder21024.btnZavritClick(Sender: TObject); + begin + if (Helios.YesNo('UkonÄŤit bez uloĹľenĂ­ objednávky ?', false)) then + Close; + end; + + + + + procedure TformOrder21024.NactiKarty; + var lSQL, sort, k1, k2, cZbo, flt: string; + idSort, idx: integer; + poradiSort, poradiSort2: Single; + mnR, mnP: Single; + extOrdInfo: boolean; + begin + if (cbxSortiment.ItemIndex>-1) and (cbxDodavatel.ItemIndex>-1) and (dtZavoz.DateTime>Now) then + begin + idx:= cbxSortiment.ItemIndex; + k1:= sortim[idx].k1; + poradiSort:= 1; //sortim[idx].poradiSort; + + lSQL:= 'SELECT s.ID, s.Nazev, s.K1, ISNULL(s.K2,N'''') AS K2, ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)) AS Poradi FROM ' + tblSortim + ' s LEFT JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE se._Objednavky_Zobrazit=1'; + lSQL:= lSQL + ' AND s.K1=N' + k1.QuotedString; // + ' AND s.K2 IS NOT NULL'; + lSQL:= lSQL + ' ORDER BY ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)), K1, ISNULL(s.K2, N'''')'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + if not(vTab.Active) then + vTab.Open; + + tabExtOrdInfo:= ''; + lSQL:= 'SET NOCOUNT ON' + CRLF +'DECLARE @dt DATETIME, @tabName NVARCHAR(30)=N''''' + CRLF + ' SET @dt=CONVERT(datetime, N'; + lSQL:= lSQL + FormatDateTime('d.m.yyyy', dtZavoz.DateTime).QuotedString + ', 104)' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo.ep_HDC_App_Objednavka_GenerujTabulkyProObjednavku'', N''P'') IS NOT NULL' + CRLF; + lSQL:= lSQL + ' EXEC dbo.ep_HDC_App_Objednavka_GenerujTabulkyProObjednavku @Dodavatel=' + cOrgDod.ToString; + lSQL:= lSQL + ', @DatumDodani=@dt, @RadaDokladu1=N' + ('7' + branchID.ToString + '0').QuotedString + ', @RadaDokladu2=N'; + lSQL:= lSQL + ('7' + branchID.ToString + '1').QuotedString + ', @Sklad=N' + Helios.Sklad.QuotedString + ', @TypSortimentu='; + lSQL:= lSQL + sortim[cbxSortiment.ItemIndex].typSort.ToString + ', @BranchID=' + branchID.ToString + ', @SortimentK1=N' +k1.QuotedString; + lSQL:= lSQL + ', @TabName=@tabName OUT' + CRLF + 'SELECT @tabName'; + with Helios.OpenSQL(lSQL) do + tabExtOrdInfo:= VarToStr(FieldValues(0)); + + flt:= 'K1=''' + k1 + ''''; + vTab.Filter:= flt; + vTab.Filtered:= true; + + + extOrdInfo:= false; + lSQL:= 'SELECT CASE WHEN OBJECT_ID(N'+ tabExtOrdInfo.QuotedString + ', N''U'') IS NOT NULL THEN 1 ELSE 0 END'; + with Helios.OpenSQL(lSQL) do + if (VarToStr(FieldValues(0))='1') then + extOrdInfo:= true; + + + First; + while not(EOF) do + begin + idSort:= VarToStr(FieldByNameValues('ID')).ToInteger; + sort:= VarToStr(FieldByNameValues('Nazev')); + // k1:= VarToStr(FieldByNameValues('K1')); + k2:= VarToStr(FieldByNameValues('K2')); + poradiSort2:= VarToStr(FieldByNameValues('Poradi')).ToSingle; + + lSQL:= 'SELECT ISNULL(s.ID,0) AS idSS, k.ID AS idKZ, k.SkupZbo, k.RegCis, k.Nazev1, ISNULL(s.Mnozstvi,0) AS MnSkladem, k.CisloZbozi'; + lSQL:= lSQL + ', ISNULL(ke._priorita,0) AS Priorita, ISNULL(k.Aktualni_Dodavatel,-1) AS AktDod, ISNULL(ke._zavoz,0) AS Zavoz, '; + lSQL:= lSQL + 'k.Minimum_Dodavatel, ISNULL(ke._delitelnost,0) AS Delitelnost, '; + if (extOrdInfo) then + lSQL:= lSQL + 'ISNULL(eo.Navrh,0)' + else + lSQL:= lSQL + '0'; + lSQL:= lSQL + ' AS Doporuceno, ISNULL(ke.'; +// case branchID of +// 1: lSQL:= lSQL + '_PoradiSortiment_Klas1'; +// 2: lSQL:= lSQL + '_PoradiSortiment_MozVod'; +// 3: lSQL:= lSQL + '_PoradiSortiment_MozPi'; +// else + lSQL:= lSQL + '_poradivsortimentu'; +// end; + + lSQL:= lSQL + ', ISNULL(ke._poradivsortimentu, 999)) AS PoradiVSort FROM ' + tblKZ + ' k LEFT JOIN ' + tblSS + ' s ON (s.IDKmenZbozi=k.ID AND s.IDSklad=N'; + lSQL:= lSQL + Helios.Sklad.QuotedString + ') INNER JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID)'; + if (extOrdInfo) then + lSQL:= lSQL + ' LEFT JOIN ' + tabExtOrdInfo + ' eo ON (eo.SkupZbo=k.SkupZbo AND eo.RegCis=k.RegCis)'; + lSQL:= lSQL + ' WHERE k.IDSortiment=' + idSort.ToString + ' ORDER BY ISNULL(ke.'; +// case branchID of +// 1: lSQL:= lSQL + '_PoradiSortiment_Klas1'; +// 2: lSQL:= lSQL + '_PoradiSortiment_MozVod'; +// 3: lSQL:= lSQL + '_PoradiSortiment_MozPi'; +// else + lSQL:= lSQL + '_poradivsortimentu'; +// end; + lSQL:= lSQL + ', ISNULL(ke._poradivsortimentu, 999))'; + + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + First; + while not(EOF) do + begin + cZbo:= VarToStr(FieldByNameValues('CisloZbozi')); + if not(vTab.Locate('CisloZbozi', cZbo, [])) then + begin + vTab.Append; + vTab.FieldByName('Sortiment').AsString:= sort; + vTab.FieldByName('PoradiSort').AsSingle:= poradiSort; + vTab.FieldByName('K1').AsString:= k1; + vTab.FieldByName('K2').AsString:= k2; + vTab.FieldByName('K1K2').AsString:= k1+k2; + vTab.FieldByName('PoradiSortNazev').AsString:= ((poradiSort*1000.0)+poradiSort2).ToString.Replace(',', '.') + ' ' + sort; + vTab.FieldByName('IDZboSklad').AsInteger:= VarToStr(FieldByNameValues('idSS')).ToInteger; + vTab.FieldByName('IDKZ').AsInteger:= VarToStr(FieldByNameValues('idKZ')).ToInteger; + vTab.FieldByName('SkupZbo').AsString:= VarToStr(FieldByNameValues('SkupZbo')); + vTab.FieldByName('RegCis').AsString:= VarToStr(FieldByNameValues('RegCis')); + vTab.FieldByName('Nazev').AsString:= VarToStr(FieldByNameValues('Nazev1')); + vTab.FieldByName('CisloZbozi').AsString:= cZbo; + vTab.FieldByName('Priorita').AsInteger:= VarToStr(FieldByNameValues('Priorita')).ToInteger; + vTab.FieldByName('Poradi').AsSingle:= VarToStr(FieldByNameValues('PoradiVSort')).ToSingle; + vTab.FieldByName('StavSkladu').AsFloat:= VarToStr(FieldByNameValues('MnSkladem')).ToExtended; + vTab.FieldByName('Doporuceno').AsFloat:= VarToStr(FieldByNameValues('Doporuceno')).ToExtended; + vTab.FieldByName('Rano').AsFloat:= VarToStr(FieldByNameValues('Doporuceno')).ToExtended; + vTab.FieldByName('Poledne').AsFloat:= 0; + vTab.FieldByName('Dodavatel').AsInteger:= VarToStr(FieldByNameValues('AktDod')).ToInteger; + vTab.FieldByName('JenRano').AsInteger:= VarToStr(FieldByNameValues('Zavoz')).ToInteger; + vTab.FieldByName('Minimum').AsFloat:= VarToStr(FieldByNameValues('Minimum_Dodavatel')).ToExtended; + vTab.FieldByName('Delitelnost').AsFloat:= VarToStr(FieldByNameValues('Delitelnost')).ToExtended; + vTab.Post; + end; + Next; + end; + end; + Next; + end; + + flt:= 'K1=''' + k1 + ''''; + if (cOrgDod>-1) then + flt:= flt + ' AND Dodavatel=' + cOrgDod.ToString; + vTab.Filter:= flt; + vTab.Filtered:= true; + + end; + + vTab.SortByFields('PoradiSortNazev,Poradi,SkupZbo,RegCis'); + + helUtils.waitEnd; + + polGrd.Options:= polGrd.Options + [dgEditing]; + if not(vTab.Active) then + polGrd.Options:= polGrd.Options - [dgEditing] + else + if (vTab.RecordCount=0) then + polGrd.Options:= polGrd.Options - [dgEditing]; + + if (k1='001') then + vTab.Locate('K1;K2', VarArrayOf(['001','']), []); + end; + end; + + + + + procedure TformOrder21024.polGrdDataGroupGetRowText(Sender: TCustomDBGridEh; GroupDataTreeNode: TGroupDataTreeNodeEh; var GroupRowText: string); + var s, s2: string; + i: integer; + errReverse: boolean; + begin + errReverse:= false; + s2:= '(123)'; + s2:= ReverseString(s2); + if (s2.EndsWith('(')) then + errReverse:= true; + + s:= GroupRowText.Replace('PoradiSortNazev: ', ''); + if (s.IndexOf(' ')>-1) then + s:= MidStr(s, s.IndexOf(' ')+1, s.Length).Trim; + if (s.EndsWith(')')) then + begin + s:= ReverseString(s); + if (errReverse) then + i:= s.IndexOf('(') + else + i:= s.IndexOf(')'); + if (i>-1) then + s:= MidStr(s, i+2, s.Length); + s:= ReverseString(s).Trim; + end; + s2:= helUtils.getHeliosStrVal(Helios, '', 'SELECT TOP(1) KatAllTecky FROM ' + tblSortim + ' WHERE Nazev=N' + s.QuotedString); + GroupRowText:= IfThen(s2<>'', s2 + ' ', '') + s; + end; + + + + + procedure TformOrder21024.polGrdKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); + var i, i2: integer; + lSQL: string; + begin + if (Key=Ord('p')) or (Key=Ord('P')) then + begin + i:= polGrd.DataSource.DataSet.FieldByName('IDKZ').AsInteger; + if (i>0) then + begin + lSQL:= 'TabPohybyZbozi.IDZboSklad=(SELECT ID FROM ' + tblSS + ' WHERE IDKmenZbozi=' + i.ToString + ' AND IDSklad=N' + Helios.Sklad.QuotedString + ')'; + Helios.OpenBrowse(66, lSQL); + end; + end; + + if (Key=Ord('o')) or (Key=Ord('O')) then + begin + i:= polGrd.DataSource.DataSet.FieldByName('IDKZ').AsInteger; + i2:= 0; + with Helios.OpenSQL('SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_HDC_StareProdeje_Pol''') do + if (RecordCount=1) then + i2:= VarToStr(FieldValues(0)).ToInteger; + + if (i2>0) then + begin + lSQL:= 'hvw_HDC_StareProdeje_Pol.IDSklad=N' + Helios.Sklad.QuotedString + ' AND hvw_HDC_StareProdeje_Pol.SkupZbo=N'; + lSQL:= lSQL + polGrd.DataSource.DataSet.FieldByName('SkupZbo').AsString.QuotedString + ' AND hvw_HDC_StareProdeje_Pol.RegCis=N'; + lSQL:= lSQL + polGrd.DataSource.DataSet.FieldByName('RegCis').AsString.QuotedString; + lSQL:= lSQL + ' AND hvw_HDC_StareProdeje_Pol.DruhPohybuZbo IN (2,4)'; + Helios.OpenBrowse(i2, lSQL); + end; + end; + end; + + + + + procedure TformOrder21024.vTabAfterDelete(DataSet: TDataSet); + begin + btnVynulovat.Enabled:= (DataSet.RecordCount>0); + end; + + + + + procedure TformOrder21024.vTabAfterPost(DataSet: TDataSet); + var maxPoz: integer; + begin + btnVynulovat.Enabled:= (DataSet.RecordCount>0); + SetLength(arrIdSS, Length(arrIdSS)+1); + maxPoz:= Length(arrIdSS)-1; + arrIdSS[maxPoz]:= DataSet.FieldByName('IDZboSklad').AsInteger; + end; + + + + + procedure TformOrder21024.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 (mv0) then + begin + SetLength(cOrgs, RecordCount); + First; + idx:= 0; + while not(EOF) do + begin + cbxDodavatel.Items.Add(VarToStr(FieldValues(1))); + cOrgs[idx]:= VarToStr(FieldValues(0)).ToInteger; + Inc(idx); + Next; + end; + end; + + if (cbxDodavatel.Items.Count=1) then + helUtils.waitStart(nil, 'NaÄŤĂ­tám historická data...', 0, 0); + + cbxDodavatel.ItemIndex:= helUtils.IfThenInt(cbxDodavatel.Items.Count=1, 0, -1); + polGrd.Enabled:= (cbxDodavatel.ItemIndex>-1); + +{ + polGrd.Options:= polGrd.Options + [dgEditing]; + if not(vTab.Active) then + polGrd.Options:= polGrd.Options - [dgEditing] + else + if (vTab.RecordCount=0) then + polGrd.Options:= polGrd.Options - [dgEditing]; +} + cbxDodavatelChange(Sender); + + end; + + + + + procedure TformOrder21024.dtZavozChange(Sender: TObject); + var lSQL, podm: string; + begin + idObd:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblObd + ' WHERE DatumOd_Y=' + dtZavoz.DateTime.GetYear.ToString); + + podm:= 'DruhPohybuZbo=6 AND IDSklad=N' + Helios.Sklad.QuotedString + ' AND RadaDokladu=N' + rDokl.QuotedString + ' AND Obdobi=' + idObd.ToString; + lSQL:= 'SELECT def.PosledniPC FROM ' + tblDDZ + ' d INNER JOIN ' + tblDDZdef + ' def ON (def.IDDruhDZ=d.ID) WHERE d.DruhPohybuZbo=6 AND def.IDObdobi=' + idObd.ToString; + lSQL:= lSQL + ' AND d.RadaDokladu=N' + rDokl.QuotedString; + + lSQL:= 'DECLARE @ppc INT, @d INT, @i INT' + CRLF + 'SET @ppc=ISNULL( (' + lSQL + '), 1)' + CRLF + 'SET @d=(DATEPART(year, GETDATE())-2000) * 10000' + CRLF; + lSQL:= lSQL + 'IF (@ppc=@d) SET @ppc=@ppc+1' + CRLF; + lSQL:= lSQL + 'EXEC @i=dbo.hp_NajdiPrvniVolny @Tabulka=N''TabDokladyZbozi'', @Atribut=N''PoradoveCislo'', @Odkud=@ppc, @Kam=999999, @Where=N' + podm.QuotedString + ', @Returnem=1'; + lSQL:= lSQL + CRLF + 'SELECT @i'; + cisloDokl:= helUtils.getHeliosStrVal(Helios, '0', lSQL); + + edtCisloObj.ValueInt:= cisloDokl.ToInteger; + end; + + + + + procedure TformOrder21024.cbxDodavatelChange(Sender: TObject); + var lSQL: string; + begin + + if (cbxDodavatel.ItemIndex>0) then + helUtils.waitStart(nil, 'NaÄŤĂ­tám historická data...', 0, 0); + + lblDodAdresa.Caption:= ''; + lblDodMisto.Caption:= ''; + lblDodICO.Caption:= ''; + lblDodDIC.Caption:= ''; + gbDodavatel.Caption:= ' Dodavatel '; + if (cbxDodavatel.ItemIndex=-1) then + cOrgDod:= -1 + else + cOrgDod:= cOrgs[cbxDodavatel.ItemIndex]; + lSQL:= 'SELECT Nazev, UliceSCisly, Misto, PSC, ICO, DIC FROM ' + tblCOrg + ' WHERE CisloOrg=' + cOrgDod.ToString; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + lblDodAdresa.Caption:= VarToStr(FieldValues(1)); + lblDodMisto.Caption:= VarToStr(FieldValues(3)) + ' ' + VarToStr(FieldValues(2)); + lblDodICO.Caption:= 'IÄŚ ' + VarToStr(FieldValues(4)); + lblDodDIC.Caption:= 'DIÄŚ ' + VarToStr(FieldValues(5)); + gbDodavatel.Caption:= ' Dodavatel: ÄŤ.org. ' + cOrgDod.ToString + ' '; + NactiKarty; + end + else + begin + vTab.Filter:= 'K1=''999'''; + vTab.Filtered:= true; + end; + polGrd.Enabled:= (cOrgDod>-1); + if (polGrd.Enabled) then + polGrd.DataSource.DataSet.First; + end; + + + + + procedure TformOrder21024.edtNumEditorClick(Sender: TObject); + begin + edtNumEditor.Visible:= true; + end; + + + + + procedure TformOrder21024.FormClose(Sender: TObject; var Action: TCloseAction); + begin + if (vTab.Active) then + vTab.Close; + if (tabExtOrdInfo<>'') and not(jeTest) then + Helios.ExecSQL('IF OBJECT_ID(N' + tabExtOrdInfo.QuotedString + ', N''U'') IS NOT NULL DROP TABLE ' + tabExtOrdInfo); + Action:= caFree; + end; + + + + + + procedure TformOrder21024.FormResize(Sender: TObject); + var i, ii, w: integer; + begin + + for i:=0 to polGrd.Columns.Count-1 do + begin + for ii:=0 to Length(visCols)-1 do + if (visCols[ii].index=i) and (polGrd.Columns.Items[i].Visible) then + polGrd.Columns[i].Width:= Trunc(visCols[ii].koeficient * polGrd.Width); + end; + + end; + + + + + procedure TformOrder21024.FormShow(Sender: TObject); + var rHeight, i, ii: integer; + lSQL, podm: string; + m: TMonitor; + begin + UseLatestCommonDialogs:= true; +{ + self.Top:= 0; + self.Left:= 0; + self.Height:= Screen.WorkAreaHeight-25; + self.Width:= Screen.WorkAreaWidth; +} + edtNumEditor.Height:= polGrd.RowHeight+2; + + rDokl:= helUtils.getHeliosStrVal(Helios, '', 'SELECT TOP(1) RadaDokladu FROM ' + tblDDZ + ' WHERE DruhPohybuZbo=6 AND StredNaklad=N' + Helios.Sklad.QuotedString); + if (rDokl='') then + begin + Helios.Error(#1'Chyba zjišťovánĂ­ Ĺ™ady dokladu VydObj'#1 + CRLF + '(nelze dohledat podle nákl.stĹ™ediska)'); + Close; + end; + + idObd:= Helios.Obdobi; + dtZavoz.DateTime:= IncDay(Now, 1); + dtZavozChange(Sender); + + lblInfo.Caption:= 'w: ' + Screen.WorkAreaWidth.ToString + ' / h: ' + Screen.WorkAreaHeight.ToString; + + smtpProfil:= false; + idMailProfile:= 0; + with Helios.OpenSQL('SELECT ID FROM ' + tblUziv + ' WHERE EMailIDProfilu IS NOT NULL AND LoginName=SUSER_SNAME()') do + if (RecordCount=1) then + idMailProfile:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT EMailIDProfilu FROM ' + tblUziv + ' WHERE EMailIDProfilu IS NOT NULL AND LoginName=SUSER_SNAME()'); + if (idMailProfile>0) then + with Helios.OpenSQL('SELECT ID FROM ' + tblMailProfil + ' WHERE ID=' + idMailProfile.ToString + ' AND TypRozhrani=2') do + if (RecordCount=1) then + smtpProfil:= true; + + idBidVydObjHDC:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_DokladyZbozi'''); + idTiskFormVydObjHDC:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblFormDef + ' WHERE Nazev=N''Objednávka pekárna'' AND Aktivni=1 AND Skupina=' + idBidVydObjHDC.ToString); + + ii:= 0; + SetLength(visCols, polGrd.VisibleColumns.Count); + for i:=0 to polGrd.Columns.Count-1 do + if (polGrd.Columns.Items[i].Visible) then + begin + visCols[ii].index:= i; + visCols[ii].koeficient:= RoundToEx(polGrd.Columns.Items[i].Width / polGrd.Width, -5); + Inc(ii); + end; + + +{ + podm:= 'DruhPohybuZbo=6 AND IDSklad=N' + Helios.Sklad.QuotedString + ' AND RadaDokladu=N' + rDokl.QuotedString + ' AND Obdobi=' + idObd.ToString; + lSQL:= 'SELECT def.PosledniPC FROM ' + tblDDZ + ' d INNER JOIN ' + tblDDZdef + ' def ON (def.IDDruhDZ=d.ID) WHERE d.DruhPohybuZbo=6 AND def.IDObdobi=' + idObd.ToString; + lSQL:= lSQL + ' AND d.RadaDokladu=N' + rDokl.QuotedString; + + lSQL:= 'DECLARE @ppc INT, @i INT' + CRLF + 'SET @ppc=ISNULL( (' + lSQL + '), 1)' + CRLF; + lSQL:= lSQL + 'EXEC @i=dbo.hp_NajdiPrvniVolny @Tabulka=N''TabDokladyZbozi'', @Atribut=N''PoradoveCislo'', @Odkud=@ppc, @Kam=999999, @Where=N' + podm.QuotedString + ', @Returnem=1; SELECT @i'; + cisloDokl:= helUtils.getHeliosStrVal(Helios, '0', lSQL); + + edtCisloObj.ValueInt:= cisloDokl.ToInteger; +} + + +{ + rDokl:= helUtils.getHeliosStrVal(Helios, '', 'SELECT TOP(1) RadaDokladu FROM ' + tblDDZ + ' WHERE DruhPohybuZbo=6 AND StredNaklad=N' + Helios.Sklad.QuotedString); + if (rDokl='') then + begin + Helios.Error(#1'Chyba zjišťovánĂ­ Ĺ™ady dokladu VydObj'#1 + CRLF + '(nelze dohledat podle nákl.stĹ™ediska)'); + Close; + end; + + lSQL:= 'DruhPohybuZbo=6 AND IDSklad=N' + Helios.Sklad.QuotedString + ' AND RadaDokladu=N' + rDokl.QuotedString + ' AND Obdobi=' + Helios.Obdobi.ToString; + lSQL:= 'DECLARE @i INT; EXEC @i=dbo.hp_NajdiPrvniVolny @Tabulka=N''TabDokladyZbozi'', @Atribut=N''PoradoveCislo'', @Odkud=0, @Kam=999999, @Where=N' + lSQL.QuotedString + ', @Returnem=1; SELECT @i'; + poradCislo:= helUtils.getHeliosIntVal(Helios, 0, lSQL); +} + +{ + grd.RowCount:= 2; + grd.FixedRows:= 1; + + rHeight:= grd.Canvas.TextHeight('ĂĂ˝'); + grd.DefaultRowHeight:= grd.Font.Size + 18; + +// grd.RowHeights[1]:= grd.Canvas.TextHeight('Akce') + 4; + grd.Cells[0, 0]:= 'Akce'; + grd.Cells[1, 0]:= 'ÄŚĂ­slo'; + grd.Cells[2, 0]:= 'Název'; + grd.Cells[3, 0]:= 'DoporuÄŤeno'; + grd.Cells[4, 0]:= 'Ráno'; + grd.Cells[5, 0]:= 'Poledne'; +} + + branchID:= ZjistiBranchID; + cOrgDod:= -1; + + lblDodAdresa.Caption:= ''; + lblDodMisto.Caption:= ''; + lblDodICO.Caption:= ''; + lblDodDIC.Caption:= ''; + + cbxSortiment.Items.Clear; + + lSQL:= 'SELECT DISTINCT(s.K1), ISNULL(e.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(e._priorita, 999)) AS PoradiSort FROM ' + tblSortim + ' s INNER JOIN ' + tblSortimE + ' e ON (e.ID=s.ID) WHERE e._Objednavky_Zobrazit=1'; + lSQL:= lSQL + ' AND ISNULL(e.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', 0)>0 GROUP BY s.K1, ISNULL(e.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(e._priorita, 999))'; + + + lSQL:= 'SELECT DISTINCT(s.K1) FROM ' + tblSortim + ' s INNER JOIN ' + tblSortimE + ' e ON (e.ID=s.ID) WHERE e._Objednavky_Zobrazit=1'; + lSQL:= lSQL + ' GROUP BY s.K1'; + + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + SetLength(sortim, RecordCount); + i:= 0; + First; + while not(EOF) do + begin + cbxSortiment.Items.Add(helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblSortim + ' WHERE K2 IS NULL AND K1=N' + VarToStr(FieldValues(0)).QuotedString)); + + sortim[i].k1:= VarToStr(FieldValues(0)); +// sortim[i].poradiSort:= VarToStr(FieldValues(1)).ToSingle; + sortim[i].nazev:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblSortim + ' WHERE K2 IS NULL AND K1=N' + VarToStr(FieldValues(0)).QuotedString); + + sortim[i].poleDodav:= ''; + sortim[i].typSort:= 255; + + if (sortim[i].k1='001') then + begin + sortim[i].typSort:= 0; + sortim[i].poleDodav:= '_dodpek'; + end; + + if (sortim[i].k1='003') then + begin + sortim[i].typSort:= 1; + sortim[i].poleDodav:= '_dodlah'; + end; + + if (sortim[i].k1='004') then + begin + sortim[i].typSort:= 2; + sortim[i].poleDodav:= '_dodvelko'; + end; + + Inc(i); + Next; + end; + cbxSortiment.ItemIndex:= 0; + cbxSortimentChange(Sender); + end; + + end; + + + + + end. diff --git a/frmOrder21366.dfm b/frmOrder21366.dfm new file mode 100644 index 0000000..ae0dcae --- /dev/null +++ b/frmOrder21366.dfm @@ -0,0 +1,895 @@ +object formOrder21366: TformOrder21366 + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = ' Vytvo'#345'en'#237' objedn'#225'vky' + ClientHeight = 729 + ClientWidth = 1350 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Position = poOwnerFormCenter + OnClose = FormClose + OnResize = FormResize + OnShow = FormShow + PixelsPerInch = 96 + DesignSize = ( + 1350 + 729) + TextHeight = 25 + object lblInfo: TLabel + Left = 80 + Top = 200 + Width = 4 + Height = 16 + Anchors = [akLeft, akBottom] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + Visible = False + end + object gbDodavatel: TGroupBox + Left = 666 + Top = 19 + Width = 640 + Height = 169 + Caption = ' Dodavatel ' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + object Label2: TLabel + Left = 28 + Top = 72 + Width = 71 + Height = 25 + Caption = 'Adresa:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblDodAdresa: TLabel + Left = 130 + Top = 72 + Width = 445 + Height = 29 + AutoSize = False + end + object lblDodMisto: TLabel + Left = 130 + Top = 110 + Width = 405 + Height = 29 + AutoSize = False + end + object lblDodICO: TLabel + Left = 130 + Top = 142 + Width = 7 + Height = 25 + end + object lblDodDIC: TLabel + Left = 360 + Top = 142 + Width = 7 + Height = 25 + end + object cbxDodavatel: TComboBox + Left = 28 + Top = 33 + Width = 589 + Height = 33 + Style = csDropDownList + TabOrder = 0 + OnChange = cbxDodavatelChange + end + end + object gbPolozky: TGroupBox + Left = 20 + Top = 276 + Width = 1076 + Height = 425 + Anchors = [akLeft, akTop, akRight, akBottom] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 2 + object btnNovaPolozka: TSpeedButton + Left = 15 + Top = 0 + Width = 37 + Height = 28 + Glyph.Data = { + 36100000424D3610000000000000360000002800000020000000200000000100 + 2000000000000010000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000020003092A0145145902911C7B02C9219103ED239C03FF239C03FF2192 + 03EF1C7C02CB145A02940A2C0149000200040000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000200040E3F + 01681F8803DF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF1F8B03E30F43016E01030005000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000061A002A1C7E02CE239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF1D8102D3061D00300000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000A2E014B219503F4239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF229703F60B33 + 0153000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000A2D0149229903FA239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239A + 03FC0B3301530000000000000000000000000000000000000000000000000000 + 0000000000000000000006190029219403F3239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF229703F6061D003000000000000000000000000000000000000000000000 + 000000000000000200031C7C02CC239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF1D8102D301030005000000000000000000000000000000000000 + 0000000000000E3C0163239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF0F43016E000000000000000000000000000000000000 + 0000000100011E8503DA239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF1F8A03E3000200040000000000000000000000000000 + 00000826013E239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF0A2C01490000000000000000000000000000 + 000013540289239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF145A02940000000000000000000000000000 + 00001A7602C0239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF1C7C02CB0000000000000000000000000000 + 00001F8B03E4239C03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF239C03FF239C + 03FF239C03FF239C03FF239C03FF219203EE0000000000000000000000000000 + 0000229503F4239C03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF0000000000000000000000000000 + 0000229503F4239C03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF0000000000000000000000000000 + 00001F8A03E3239C03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF239C03FF239C + 03FF239C03FF239C03FF239C03FF219103ED0000000000000000000000000000 + 00001A7402BF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF1C7B02C90000000000000000000000000000 + 000012520286239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF145902910000000000000000000000000000 + 00000823013A239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF092A01450000000000000000000000000000 + 0000000000011D8302D6239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF1F8803DF000200030000000000000000000000000000 + 0000000000000D39015D239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF0E3F0168000000000000000000000000000000000000 + 000000000000000100021B7902C6239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF1C7E02CE00020004000000000000000000000000000000000000 + 0000000000000000000005160024219203EF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF219503F4061A002A00000000000000000000000000000000000000000000 + 000000000000000000000000000009280141229803F8239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF2299 + 03FA0A2E014B0000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000009280141219203EF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF219403F30A2D + 0149000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000051600241B7902C6239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF239C03FF239C03FF1C7C02CC061900290000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000100020D39 + 015D1D8302D6239C03FF239C03FF239C03FF239C03FF239C03FF239C03FF239C + 03FF239C03FF239C03FF239C03FF1E8503DA0E3D016300020003000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000100010823013A125202871A7502BF1F8B03E3229503F4229503F41F8B + 03E41A7602C0135402890826013E000100010000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000} + OnClick = btnNovaPolozkaClick + end + object polGrd: TDBGridEh + Left = 2 + Top = 27 + Width = 1072 + Height = 396 + Align = alClient + DataGrouping.Active = True + DataGrouping.DefaultStateExpanded = True + DataGrouping.GroupLevels = < + item + ColumnName = 'Column_15_PoradiSortNazev' + end> + DataSource = ds + DynProps = <> + GridLineParams.VertEmptySpaceStyle = dessNonEh + IndicatorOptions = [] + EmptyDataInfo.Active = True + EmptyDataInfo.Text = #381#225'dn'#233' polo'#382'ky nenalezeny' + Options = [dgEditing, dgTitles, dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit] + OptionsEh = [dghFixed3D, dghData3D, dghHighlightFocus, dghClearSelection, dghRowHighlight] + SelectionDrawParams.SelectionStyle = gsdsClassicEh + TabOrder = 0 + TitleParams.Color = clMoneyGreen + TitleParams.FillStyle = cfstSolidEh + TitleParams.MultiTitle = True + TitleParams.SecondColor = clMoneyGreen + OnDataGroupGetRowText = polGrdDataGroupGetRowText + OnKeyUp = polGrdKeyUp + Columns = < + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'PoradiSort' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'K1' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'K2' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Sortiment' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'IDZboSklad' + Footers = <> + Visible = False + end + item + Alignment = taCenter + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Poradi' + Footers = <> + Title.Caption = 'Po'#345'ad'#237 + Visible = False + Width = 80 + end + item + Alignment = taCenter + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'RegCis' + Footers = <> + ReadOnly = True + TextEditing = False + Title.Caption = #268#237'slo' + Width = 142 + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Nazev' + Footers = <> + ReadOnly = True + TextEditing = False + Width = 409 + end + item + Alignment = taCenter + CellButtons = <> + DisplayFormat = '##0.##' + DynProps = <> + EditButtons = <> + FieldName = 'StavSkladu' + Footers = <> + ReadOnly = True + TextEditing = False + Width = 118 + end + item + Alignment = taCenter + CellButtons = <> + DisplayFormat = '##0.##' + DynProps = <> + EditButtons = <> + FieldName = 'Doporuceno' + Footers = <> + ReadOnly = True + TextEditing = False + Title.Caption = 'Doporu'#269'eno' + Width = 125 + end + item + Alignment = taCenter + CellButtons = <> + DisplayFormat = '##0.##' + DynProps = <> + EditButtons = <> + FieldName = 'Rano' + Footers = <> + Width = 104 + end + item + Alignment = taCenter + CellButtons = <> + DisplayFormat = '##0.##' + DynProps = <> + EditButtons = <> + FieldName = 'Poledne' + Footers = <> + Width = 109 + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Priorita' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'CisloZbozi' + Footers = <> + STFilter.DataField = 'CisloZbozi' + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'K1K2' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'PoradiSortNazev' + Footers = <> + TextEditing = False + Visible = False + end> + object RowDetailData: TRowDetailPanelControlEh + end + end + end + object btnOK: TButton + Left = 1124 + Top = 200 + Width = 208 + Height = 103 + Anchors = [akTop, akRight] + Caption = 'Ulo'#382'it a odeslat objedn'#225'vku' + TabOrder = 0 + WordWrap = True + OnClick = btnOKClick + end + object btnTisk: TButton + Left = 1124 + Top = 320 + Width = 208 + Height = 49 + Anchors = [akTop, akRight] + Caption = 'Vytisknout' + TabOrder = 3 + Visible = False + OnClick = btnTiskClick + end + object btnPoslat: TButton + Left = 1124 + Top = 392 + Width = 208 + Height = 51 + Anchors = [akTop, akRight] + Caption = 'Odeslat dodavateli' + TabOrder = 4 + Visible = False + OnClick = btnPoslatClick + end + object btnRozbalit: TButton + Left = 1124 + Top = 467 + Width = 208 + Height = 46 + Anchors = [akRight, akBottom] + Caption = 'Rozbalit v'#353'e' + TabOrder = 5 + OnClick = btnRozbalitClick + end + object btnSbalit: TButton + Left = 1124 + Top = 535 + Width = 208 + Height = 45 + Anchors = [akRight, akBottom] + Caption = 'Sbalit v'#353'e' + TabOrder = 6 + OnClick = btnSbalitClick + end + object btnZavrit: TButton + Left = 1124 + Top = 643 + Width = 208 + Height = 61 + Anchors = [akRight, akBottom] + Caption = 'Zav'#345#237't' + TabOrder = 7 + OnClick = btnZavritClick + end + object edtNumEditor: TNxEdit6 + Left = 501 + Top = 190 + Width = 121 + Height = 41 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -27 + Font.Name = 'Tahoma' + Font.Style = [] + MaxLength = 3 + NumbersOnly = True + ParentFont = False + TabOrder = 8 + Visible = False + UserDefinedColorPalette.GeometryHoverColor = clBlack + OnClick = edtNumEditorClick + end + object Panel1: TPanel + Left = 20 + Top = 242 + Width = 792 + Height = 35 + Anchors = [akLeft, akTop, akRight] + Caption = 'Zbo'#382#237 + Color = 14471860 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBackground = False + ParentFont = False + TabOrder = 9 + end + object Panel2: TPanel + Left = 811 + Top = 242 + Width = 243 + Height = 35 + Anchors = [akTop, akRight] + Caption = 'Objedn'#225'no' + Color = 14471860 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBackground = False + ParentFont = False + TabOrder = 10 + end + object btnVynulovat: TButton + Left = 816 + Top = 197 + Width = 235 + Height = 42 + Anchors = [akLeft, akTop, akRight] + Caption = 'Vynulovat mno'#382'stv'#237 + TabOrder = 11 + OnClick = btnVynulovatClick + end + object gbSortiment: TGroupBox + Left = 80 + Top = 19 + Width = 559 + Height = 175 + TabOrder = 12 + object Label1: TLabel + Left = 38 + Top = 74 + Width = 138 + Height = 25 + Caption = 'Datum z'#225'vozu:' + end + object Label3: TLabel + Left = 16 + Top = 16 + Width = 160 + Height = 25 + Caption = 'Druh sortimentu:' + end + object Label4: TLabel + Left = 14 + Top = 125 + Width = 162 + Height = 25 + Caption = #268#237'slo objedn'#225'vky:' + end + object cbxSortiment: TComboBox + Left = 196 + Top = 13 + Width = 339 + Height = 33 + Style = csDropDownList + TabOrder = 0 + OnChange = cbxSortimentChange + end + object dtZavoz: TDateTimePicker + Left = 196 + Top = 70 + Width = 149 + Height = 33 + Date = 44268.000000000000000000 + Time = 0.431178437502239800 + TabOrder = 1 + OnChange = dtZavozChange + end + object edtCisloObj: TNumberBox + Left = 196 + Top = 122 + Width = 97 + Height = 33 + Alignment = taCenter + DisplayFormat = '#####0' + Enabled = False + TabOrder = 2 + end + end + object vTab: TMemTableEh + Params = <> + AfterPost = vTabAfterPost + AfterDelete = vTabAfterDelete + Left = 12 + Top = 11 + object vTabPoradiSort: TSingleField + FieldName = 'PoradiSort' + Visible = False + end + object vTabK1: TStringField + FieldName = 'K1' + Size = 10 + end + object vTabK2: TStringField + FieldName = 'K2' + Size = 10 + end + object vTabSortiment: TStringField + FieldName = 'Sortiment' + Required = True + Size = 50 + end + object vTabIDZboSklad: TIntegerField + FieldName = 'IDZboSklad' + Visible = False + end + object vTabRegCis: TStringField + FieldName = 'RegCis' + Size = 30 + end + object vTabNazev: TStringField + FieldName = 'Nazev' + Size = 100 + end + object vTabRano: TFloatField + DisplayLabel = 'R'#225'no' + FieldName = 'Rano' + OnValidate = vTabRanoValidate + end + object vTabDoporuceno: TFloatField + FieldName = 'Doporuceno' + end + object vTabPoledne: TFloatField + FieldName = 'Poledne' + OnValidate = vTabPoledneValidate + end + object vTabStavSkladu: TFloatField + DisplayLabel = 'Stav skladu' + FieldName = 'StavSkladu' + end + object vTabPriorita: TIntegerField + DisplayWidth = 10 + FieldName = 'Priorita' + Visible = False + end + object vTabCisloZbozi: TStringField + FieldName = 'CisloZbozi' + Visible = False + Size = 33 + end + object vTabIDKZ: TIntegerField + FieldName = 'IDKZ' + Visible = False + end + object vTabSkupZbo: TStringField + FieldName = 'SkupZbo' + Visible = False + Size = 3 + end + object vTabDodavatel: TIntegerField + FieldName = 'Dodavatel' + Visible = False + end + object vTabJenRano: TSmallintField + FieldName = 'JenRano' + Visible = False + end + object vTabMinimum: TFloatField + FieldName = 'Minimum' + Visible = False + end + object vTabDelitelnost: TFloatField + FieldName = 'Delitelnost' + Visible = False + end + object vTabPoradi: TSingleField + FieldName = 'Poradi' + Visible = False + end + object vTabK1K2: TStringField + FieldName = 'K1K2' + Visible = False + Size = 15 + end + object vTabPoradiSortNazev: TStringField + FieldName = 'PoradiSortNazev' + Size = 100 + end + object MemTableData: TMemTableDataEh + object DataStruct: TMTDataStructEh + object PoradiSortNazev: TMTStringDataFieldEh + FieldName = 'PoradiSortNazev' + StringDataType = fdtStringEh + DisplayWidth = 100 + Size = 100 + end + object Delitelnost: TMTNumericDataFieldEh + FieldName = 'Delitelnost' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object Minimum: TMTNumericDataFieldEh + FieldName = 'Minimum' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object JenRano: TMTNumericDataFieldEh + FieldName = 'JenRano' + NumericDataType = fdtSmallintEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object Dodavatel: TMTNumericDataFieldEh + FieldName = 'Dodavatel' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + Visible = False + currency = False + Precision = 15 + end + object SkupZbo: TMTStringDataFieldEh + FieldName = 'SkupZbo' + StringDataType = fdtStringEh + DisplayWidth = 3 + Visible = False + Size = 3 + end + object PoradiSort: TMTNumericDataFieldEh + FieldName = 'PoradiSort' + NumericDataType = fdtSingleEh + AutoIncrement = False + DisplayWidth = 20 + Visible = False + currency = False + Precision = 15 + end + object K1: TMTStringDataFieldEh + FieldName = 'K1' + StringDataType = fdtStringEh + DisplayWidth = 10 + Size = 10 + end + object K2: TMTStringDataFieldEh + FieldName = 'K2' + StringDataType = fdtStringEh + DisplayWidth = 10 + Size = 10 + end + object Sortiment: TMTStringDataFieldEh + FieldName = 'Sortiment' + StringDataType = fdtStringEh + DisplayWidth = 50 + Size = 50 + end + object IDZboSklad: TMTNumericDataFieldEh + FieldName = 'IDZboSklad' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object IDKZ: TMTNumericDataFieldEh + FieldName = 'IDKZ' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object RegCis: TMTStringDataFieldEh + FieldName = 'RegCis' + StringDataType = fdtStringEh + DisplayWidth = 10 + Size = 30 + end + object Nazev: TMTStringDataFieldEh + FieldName = 'Nazev' + StringDataType = fdtStringEh + DisplayWidth = 50 + Size = 100 + end + object StavSkladu: TMTNumericDataFieldEh + FieldName = 'StavSkladu' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayLabel = '0' + DisplayWidth = 20 + currency = False + Precision = 10 + end + object Doporuceno: TMTNumericDataFieldEh + FieldName = 'Doporuceno' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayLabel = '0' + DisplayWidth = 20 + currency = False + Precision = 10 + end + object Rano: TMTNumericDataFieldEh + FieldName = 'Rano' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayLabel = '0' + DisplayWidth = 20 + currency = False + Precision = 10 + end + object Poledne: TMTNumericDataFieldEh + FieldName = 'Poledne' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayLabel = '0' + DisplayWidth = 20 + currency = False + Precision = 10 + end + object K1K2: TMTStringDataFieldEh + FieldName = 'K1K2' + StringDataType = fdtStringEh + DisplayWidth = 20 + Visible = False + end + object Poradi: TMTNumericDataFieldEh + FieldName = 'Poradi' + NumericDataType = fdtSingleEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object Priorita: TMTNumericDataFieldEh + FieldName = 'Priorita' + NumericDataType = fdtSmallintEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 3 + end + object CisloZbozi: TMTStringDataFieldEh + FieldName = 'CisloZbozi' + StringDataType = fdtStringEh + DisplayWidth = 50 + Size = 33 + end + end + object RecordsList: TRecordsListEh + end + end + end + object ds: TDataSource + DataSet = vTab + Left = 13 + Top = 60 + end +end diff --git a/frmOrder21366.pas b/frmOrder21366.pas new file mode 100644 index 0000000..8bcd1cd --- /dev/null +++ b/frmOrder21366.pas @@ -0,0 +1,1204 @@ +unit frmOrder21366; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Types, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, System.ImageList, Vcl.ImgList, Vcl.StdCtrls, Vcl.Buttons, + Vcl.ComCtrls, ddPlugin_TLB, TBPackageU, Vcl.WinXPickers, Vcl.Mask, RxToolEdit, Vcl.NumberBox, Vcl.Grids, VirtualTrees, + NxGridView6, NxColumns6, NxControls6, NxCustomGrid6, NxVirtualGrid6, NxGrid6, NxEdit6, MemTableDataEh, Data.DB, + DBGridEhGrouping, ToolCtrlsEh, DBGridEhToolCtrls, DynVarsEh, EhLibVCL, GridsEh, DBAxisGridsEh, DBGridEh, MemTableEh, EhLibMTE, + System.MaskUtils, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase, + IdSMTP, IdBaseComponent, IdMessage, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL, + IdAttachment, IdAttachmentFile, IdAttachmentMemory, datModObj; + +type + TWideStringHelper = record helper for WideString + function QuotedString: string; overload; + end; + + TMaskedTextHelper = record helper for TMaskedText + function QuotedString: string; overload; + function Replace(oldStr, newStr: string): string; overload; + end; + + TVisColumn = record + index: integer; + koeficient: Single; + end; + + TSortiment = record + nazev, k1, poleDodav: string; + dodavatel: integer; + poradiSort: Single; + typSort: byte; + end; + + TformOrder21366 = class(TForm) + gbDodavatel: TGroupBox; + gbPolozky: TGroupBox; + Label1: TLabel; + dtZavoz: TDateTimePicker; + btnOK: TButton; + Label2: TLabel; + lblDodAdresa: TLabel; + lblDodMisto: TLabel; + cbxSortiment: TComboBox; + Label3: TLabel; + edtCisloObj: TNumberBox; + Label4: TLabel; + btnTisk: TButton; + btnPoslat: TButton; + btnRozbalit: TButton; + btnSbalit: TButton; + btnZavrit: TButton; + Panel1: TPanel; + Panel2: TPanel; + edtNumEditor: TNxEdit6; + vTab: TMemTableEh; + ds: TDataSource; + polGrd: TDBGridEh; + 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; + cbxDodavatel: TComboBox; + lblDodICO: TLabel; + lblDodDIC: TLabel; + vTabIDKZ: TIntegerField; + vTabSkupZbo: TStringField; + vTabDodavatel: TIntegerField; + vTabJenRano: TSmallintField; + vTabMinimum: TFloatField; + vTabDelitelnost: TFloatField; + btnVynulovat: TButton; + lblInfo: TLabel; + vTabPoradi: TSingleField; + gbSortiment: TGroupBox; + vTabK1K2: TStringField; + vTabPoradiSortNazev: TStringField; + btnNovaPolozka: TSpeedButton; + procedure FormShow(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure cbxSortimentChange(Sender: TObject); + procedure edtNumEditorClick(Sender: TObject); + procedure btnRozbalitClick(Sender: TObject); + procedure btnSbalitClick(Sender: TObject); + procedure btnOKClick(Sender: TObject); + procedure cbxDodavatelChange(Sender: TObject); + procedure polGrdKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure btnZavritClick(Sender: TObject); + procedure btnTiskClick(Sender: TObject); + procedure vTabRanoValidate(Sender: TField); + procedure vTabPoledneValidate(Sender: TField); + procedure dtZavozChange(Sender: TObject); + procedure FormResize(Sender: TObject); + procedure btnVynulovatClick(Sender: TObject); + procedure vTabAfterPost(DataSet: TDataSet); + procedure vTabAfterDelete(DataSet: TDataSet); + procedure btnPoslatClick(Sender: TObject); + procedure polGrdDataGroupGetRowText(Sender: TCustomDBGridEh; + GroupDataTreeNode: TGroupDataTreeNodeEh; var GroupRowText: string); + procedure btnNovaPolozkaClick(Sender: TObject); + private + cOrg: integer; + visCols: TArray; + function ZjistiBranchID: Integer; + procedure NactiKarty; + public + Helios: IHelios; + jeTest: boolean; + oznacKOdeslani: boolean; + end; + +var + formOrder21366: TformOrder21366; + sortim: TArray; + dmObj: TdmObj; + cOrgs: TArray; + cOrgDod: integer; +// poradCislo: integer; + branchID, idDZ, idObd, idBidVydObjHDC, idTiskForm, idTiskFormVydObjHDC, idMailProfile: integer; + tabExtOrdInfo, cisloDokl, rDokl: string; + smtpProfil: boolean; + delkaPoradCisla: byte; + arrIdSS: TArray; + + +implementation +uses System.StrUtils, System.DateUtils, helUtils; + +{$R *.dfm} + + +{$IF CompilerVersion>=34} // Sydney a vys +{$ENDIF} + + function TWideStringHelper.QuotedString: string; + begin + Result:= string(Self).QuotedString; + end; + + function TMaskedTextHelper.QuotedString: string; + var s: string; + begin + s:= Self; + Result:= s.QuotedString; + end; + + function TmaskedTextHelper.Replace(oldStr: string; newStr: string): string; + var s: string; + begin + s:= Self; + Result:= s.Replace(oldStr, newStr); + end; + + + + + + + + function TformOrder21366.ZjistiBranchID: Integer; + var s: string; + begin + result:= -1; + s:= Helios.Sklad; + if (LeftStr(s, 3)='005') then + result:= RightStr(s, 1).ToInteger; + end; + + + + + procedure TformOrder21366.btnNovaPolozkaClick(Sender: TObject); + var oVar: OleVariant; + idSS, idKZ: integer; + lSQL, k1, k2: string; + poradiSort, poradiSort2: Single; + begin + lSQL:= 'TabStavSkladu.Blokovano=0'; + if (Length(arrIdSS)>0) then + lSQL:= lSQL + ' AND TabStavSkladu.ID NOT IN (' + helUtils.ArrayToString(arrIdSS, ',') + ')'; + if Helios.Prenos(bidSS, 'TabStavSkladu.ID', oVar, lSQL, 'PĹ™idejte kartu na objednávku', true) then + begin + idSS:= VarToStr(oVar).ToInteger; + idKZ:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDKmenZbozi FROM ' + tblSS + ' WHERE ID=' + idSS.ToString); + vTab.Append; + vTab.FieldByName('IDZboSklad').AsInteger:= idSS; + vTab.FieldByName('IDKZ').AsInteger:= idKZ; + vTab.FieldByName('Rano').AsInteger:= 0; + vTab.FieldByName('Poledne').AsInteger:= 0; + vTab.FieldByName('Doporuceno').AsInteger:= 0; + + lSQL:= 'SELECT k.SkupZbo, k.RegCis, k.Nazev1, k.CisloZbozi, ISNULL(ke._delitelnost,1) AS delitelnost, ISNULL(ke._poradivsortimentu,999) AS PoradiVSort, ISNULL(ke._priorita,3) AS priorita'; + lSQL:= lSQL + ', ISNULL(ke._zavoz,1) AS zavoz, ISNULL(so.K1,N'''')+ISNULL(so.K2,N'''') AS K1K2, ISNULL(so.K1,N'''') AS K1, ISNULL(so.K2,N'''') AS K2, ISNULL(k.Aktualni_Dodavatel,-1) AS dodavatel'; + lSQL:= lSQL + ', ISNULL(so.Nazev,N'''') AS SortNazev FROM ' + tblKZ + ' k LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) LEFT JOIN ' + tblSortim; + lSQL:= lSQL + ' so ON (so.ID=k.IDSortiment) LEFT JOIN ' + tblSortimE + ' soe ON (soe.ID=so.ID) WHERE k.ID=' + idKZ.ToString; + with Helios.OpenSQL(lSQL) do + begin + k1:= VarToStr(FieldByNameValues('K1')); + k2:= VarToStr(FieldByNameValues('K2')); + + vTab.FieldByName('PoradiSort').AsSingle:= VarToStr(FieldByNameValues('PoradiVSort')).ToSingle; + vTab.FieldByName('K1').AsString:= k1; + vTab.FieldByName('K2').AsString:= k2; + vTab.FieldByName('K1K2').AsString:= k1+k2; + vTab.FieldByName('Priorita').AsInteger:= VarToStr(FieldByNameValues('priorita')).ToInteger; + vTab.FieldByName('Dodavatel').AsInteger:= VarToStr(FieldByNameValues('dodavatel')).ToInteger; + if (VarToStr(FieldByNameValues('zavoz'))='1') then + vTab.FieldByName('JenRano').AsInteger:= 1 + else + vTab.FieldByName('JenRano').AsInteger:= 0; + + + lSQL:= 'SELECT s.ID, s.Nazev, s.K1, ISNULL(s.K2,N'''') AS K2, ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)) AS Poradi FROM ' + tblSortim + ' s LEFT JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE se._Objednavky_Zobrazit=1'; + lSQL:= lSQL + ' AND s.K1=N' + k1.QuotedString; // + ' AND s.K2 IS NOT NULL'; + lSQL:= lSQL + ' ORDER BY ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)), K1, ISNULL(s.K2, N'''')'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + poradiSort2:= VarToStr(FieldByNameValues('Poradi')).ToSingle; + vTab.FieldByName('PoradiSortNazev').AsString:= ((poradiSort*1000.0)+poradiSort2).ToString.Replace(',', '.') + ' ' + VarToStr(FieldByNameValues('SortNazev')); + end; + + vTab.FieldByName('Sortiment').AsString:= VarToStr(FieldByNameValues('SortNazev')); + vTab.FieldByName('SkupZbo').AsString:= VarToStr(FieldByNameValues('SkupZbo')); + vTab.FieldByName('RegCis').AsString:= VarToStr(FieldByNameValues('RegCis')); + vTab.FieldByName('Nazev').AsString:= VarToStr(FieldByNameValues('Nazev1')); + vTab.FieldByName('StavSkladu').AsExtended:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT ISNULL((SELECT Mnozstvi FROM ' + tblSS + ' WHERE ID=' + idSS.ToString + '),0)'); + end; + vTab.Post; + vTab.Refresh; + end; + end; + + + + + procedure TformOrder21366.btnOKClick(Sender: TObject); + var oldRec, idHlava, idHlava2: integer; + lSQL, spojeniKontaktu, popisKontaktu, idSS, sz, rc: string; + tiskOK, kontaktNalezen: boolean; + begin + cisloDokl:= ''; + + if (vTab.RecordCount>0) then + begin + +// dmObj.ZapisObjednavky(vTab, cOrgDod, edtCisloObj.ValueInt, dtZavoz); + + spojeniKontaktu:= ''; + popisKontaktu:= ''; + kontaktNalezen:= false; + + if not(smtpProfil) then + Helios.Error(#1'Nemáte pĹ™ednastavenĂ˝ emailovĂ˝ profil pro odeslánĂ­ pĹ™es SMTP'#1) + else + begin + with Helios.OpenSQL('EXEC dbo.hp_GetKontaktProKosAOrg @IDKOs=NULL, @CisOrg=' + cOrgDod.ToString + ', @Druh=6') do + if (RecordCount>0) then + begin + First; + while not(EOF) and not(kontaktNalezen) do + begin + popisKontaktu:= VarToStr(FieldValues(0)); // @Popis + spojeniKontaktu:= VarToStr(FieldValues(1)); // @Spojeni + if (spojeniKontaktu<>'') or (popisKontaktu='Objednávky') then + kontaktNalezen:= true; + Next; + end; + end; + + if not(kontaktNalezen) then + Helios.Error(#1'U dodavatele nenĂ­ kontakt typu email s popisem "Objednávky"'#1 + CRLF + 'Email nebude automatem odeslán.'); + end; + + + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabObjednavkaH'') IS NOT NULL' + CRLF + ' DELETE FROM dbo._temp_TabObjednavkaH WHERE Autor=SUSER_SNAME()' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabObjednavkaR'') IS NOT NULL AND OBJECT_ID(N''dbo._temp_TabObjednavkaH'') IS NOT NULL' + CRLF + ' DELETE FROM dbo._temp_TabObjednavkaR WHERE'; + lSQL:= lSQL + ' IDHlava NOT IN (SELECT ID FROM dbo._temp_TabObjednavkaH)' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabObjednavkaH'') IS NOT NULL' + CRLF + ' IF NOT EXISTS(SELECT * FROM dbo._temp_TabObjednavkaH)' + CRLF + ' DROP TABLE dbo._temp_TabObjednavkaH' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabObjednavkaR'') IS NOT NULL' + CRLF + ' IF NOT EXISTS(SELECT * FROM dbo._temp_TabObjednavkaR)' + CRLF + ' DROP TABLE dbo._temp_TabObjednavkaR'; + Helios.ExecSQL(lSQL); + + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabObjednavkaH'') IS NOT NULL' + CRLF + ' DROP TABLE #TabObjednavkaH' + CRLF; + lSQL:= lSQL + 'CREATE TABLE #TabObjednavkaH (ID INT IDENTITY(1,1) NOT NULL, CisloOrg INT NOT NULL, Sklad NVARCHAR(30), Datum DATETIME, EmailCil NVARCHAR(80) NOT NULL DEFAULT N'''''; + lSQL:= lSQL + ', Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME())'; + if (jeTest) then + lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabO', 'dbo._temp_TabO'); + Helios.ExecSQL(lSQL); + + idHlava:= 0; + lSQL:= 'INSERT #TabObjednavkaH (CisloOrg, Sklad, Datum, EmailCil)' + CRLF + ' SELECT ISNULL(TRY_PARSE(N' + cOrgDod.ToString.Replace(';', '').Replace('-','').Replace(' ', '').QuotedString; + lSQL:= lSQL + ' AS INT), 0), N' + Helios.Sklad.QuotedString + ', CONVERT(datetime, N' + FormatDateTime('d.m.yyyy', dtZavoz.Date).QuotedString + ', 104), N' + spojeniKontaktu.QuotedString; + lSQL:= lSQL + CRLF + 'SELECT SCOPE_IDENTITY()'; + if (jeTest) then + lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabO', 'dbo._temp_TabO'); + with Helios.OpenSQL(lSQL) do + idHlava:= VarToStr(FieldValues(0)).ToInteger; + + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabObjednavkaR'') IS NOT NULL' + CRLF + ' DROP TABLE #TabObjednavkaR' + CRLF; + lSQL:= lSQL + 'CREATE TABLE #TabObjednavkaR (ID INT IDENTITY(1,1) NOT NULL, IDHlava INT NOT NULL, IDZboSklad INT NOT NULL, Rano NUMERIC(15,4) NOT NULL DEFAULT 0.0, PoradiObj NUMERIC(10,2) DEFAULT 999'; + lSQL:= lSQL + ', Poledne NUMERIC(15,4) NOT NULL DEFAULT 0.0, Doporuceno NUMERIC(15,4) NOT NULL DEFAULT 0.0, SkupZbo NVARCHAR(3), RegCis NVARCHAR(30), Sklad NVARCHAR(30), Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME())'; + if (jeTest) then + lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabO', 'dbo._temp_TabO'); + Helios.ExecSQL(lSQL); + + lSQL:= 'INSERT dbo._HDC_TabAplikace (TypDokladu, IDSklad) VALUES (1, N' + Helios.Sklad.QuotedString + '); SELECT SCOPE_IDENTITY()'; + idHlava2:= helUtils.getHeliosIntVal(Helios, 0, lSQL); + + oldRec:= vTab.RecNo; + vTab.DisableControls; + vTab.First; + while not(vTab.Eof) do + begin + if (vTab.FieldByName('Rano').AsSingle>0) or (vTab.FieldByName('Poledne').AsSingle>0) then + begin + idSS:= IfThen(vTab.FieldByName('IDZboSklad').AsString='', '0', vTab.FieldByName('IDZboSklad').AsString); + sz:= vTab.FieldByName('SkupZbo').AsString; + rc:= vTab.FieldByName('RegCis').AsString; + + lSQL:= 'INSERT dbo._HDC_TabAplikaceR (IDHlava, TypDokladu, IDSklad, IDZboSklad, CisloZbozi, Rano, Poledne) SELECT ' + idHlava2.ToString + ', 1, N' + Helios.Sklad.QuotedString; + lSQL:= lSQL + ', ' + idSS + ', N' + (sz+rc).QuotedString + ', ' + vTab.FieldByName('Rano').AsSingle.ToString + ', ' + vTab.FieldByName('Poledne').AsSingle.ToString; + Helios.ExecSQL(lSQL); + + lSQL:= 'INSERT #TabObjednavkaR (IDHlava, IDZboSklad, Rano, Poledne, Doporuceno, Sklad, PoradiObj, SkupZbo, RegCis)' + CRLF + ' SELECT ' + idHlava.ToString + ', ' + idSS + ', '; + lSQL:= lSQL + vTab.FieldByName('Rano').AsSingle.ToString.Replace(',','.') + ', ' + vTab.FieldByName('Poledne').AsSingle.ToString.Replace(',','.'); + lSQL:= lSQL + ', ' + vTab.FieldByName('Doporuceno').AsSingle.ToString.Replace(',','.') + ', N' + Helios.Sklad.QuotedString + ', ' + vTab.FieldByName('Poradi').AsString.Replace(',', '.'); + lSQL:= lSQL + ', N' + sz.QuotedString + ', N' + rc.QuotedString; + if (jeTest) then + lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabO', 'dbo._temp_TabO'); + Helios.ExecSQL(lSQL); + end; + vTab.Next; + end; + vTab.RecNo:= oldRec; + vTab.EnableControls; + + idDZ:= 0; + if not(jeTest) then + begin + helUtils.waitStart(self, 'Zápis vydanĂ© objednávky...', 0, 0); + try + lSQL:= 'DECLARE @i INT; IF OBJECT_ID(N''dbo.ep_HDC_App_Objednavka'', N''P'') IS NOT NULL EXEC dbo.ep_HDC_App_Objednavka @idDZ=@i OUT, @Sklad=N' + Helios.Sklad.QuotedString + CRLF + 'SELECT @i'; + with Helios.OpenSQL(lSQL) do + idDZ:= VarToStr(FieldValues(0)).ToInteger; + if (idDZ>0) and (oznacKOdeslani) then + begin + Helios.ExecSQL('IF NOT EXISTS(SELECT ID FROM ' + tblDZe + ' WHERE ID=' + idDZ.ToString + ') INSERT ' + tblDZe + ' (ID) SELECT ' + idDZ.ToString); + Helios.ExecSQL('UPDATE ' + tblDZe+ ' SET _VydObj_OdeslatNaMail=1 WHERE ID=' + idDZ.ToString); +// Helios.Info(#1'Objednávka byla oznaÄŤena k odeslánĂ­ emailem dodavateli.'#1); + end; + except + end; + helUtils.waitEnd; + end; + cisloDokl:= helUtils.getHeliosStrVal(Helios, '', 'SELECT PoradoveCislo FROM ' + tblDZ + ' WHERE ID=' + idDZ.ToString); + idTiskForm:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT TiskovyForm FROM ' + tblDDZ + ' WHERE ID=' + idDZ.ToString); + end; + + + lSQL:= ''; + if (Sender.ToString='TButton') then + lSQL:= (Sender as TButton).Name; + + if (lSQL='btnOK') then + Close; + if (lSQL='btnTisk') or (lSQL='btnPoslat') then + begin + tiskOK:= false; + Helios.Info(#1'Objednávka byla uloĹľena - ÄŤ. ' + cisloDokl + #1); + if (lSQL='btnTisk') then + if (idBidVydObjHDC>0) then + tiskOK:= Helios.PrintForm3(idBidVydObjHDC, idTiskFormVydObjHDC, 'ID=' + idDZ.ToString) + else + tiskOK:= Helios.PrintForm2(11, 'ID=' + idDZ.ToString); + end; + + end; + + + + + procedure TformOrder21366.btnPoslatClick(Sender: TObject); + var popisKontaktu, spojeniKontaktu: string; + kontaktNalezen: Boolean; + begin + if (cOrgDod<0) then + begin + Helios.Error(#1'NenĂ­ vybrán dodavatel'#1); + Exit; + end; + + if not(smtpProfil) then + Helios.Error(#1'Nemáte pĹ™ednastavenĂ˝ emailovĂ˝ profil pro odeslánĂ­ pĹ™es SMTP'#1) + else + begin + spojeniKontaktu:= ''; + popisKontaktu:= ''; + kontaktNalezen:= false; + + with Helios.OpenSQL('EXEC dbo.hp_GetKontaktProKosAOrg @IDKOs=NULL, @CisOrg=' + cOrgDod.ToString + ', @Druh=6') do + if (RecordCount>0) then + begin + First; + while not(EOF) and not(kontaktNalezen) do + begin + popisKontaktu:= VarToStr(FieldValues(0)); // @Popis + spojeniKontaktu:= VarToStr(FieldValues(1)); // @Spojeni + if (spojeniKontaktu<>'') or (popisKontaktu='Objednávky') then + kontaktNalezen:= true; + Next; + end; + end; + + if not(kontaktNalezen) then + Helios.Error(#1'U dodavatele nenĂ­ kontakt typu email s popisem "Objednávky"'#1 + CRLF + 'Email nebude automatem odeslán.') + else + begin + btnOKClick(Sender); + if (idDZ>0) then + begin + Helios.ExecSQL('IF NOT EXISTS(SELECT ID FROM ' + tblDZe + ' WHERE ID=' + idDZ.ToString + ') INSERT ' + tblDZe + ' (ID) SELECT ' + idDZ.ToString); + Helios.ExecSQL('UPDATE ' + tblDZe+ ' SET _VydObj_OdeslatNaMail=1 WHERE ID=' + idDZ.ToString); + Helios.Info(#1'Objednávka byla oznaÄŤena k odeslánĂ­ emailem dodavateli.'#1); + Close; + end + else + Helios.Error(#1'Chyba, objednávku se v rámci odeslánĂ­ nepodaĹ™ilo uloĹľit. Zkuste to znovu.'#1) + end; + end; + end; + + + + + procedure TformOrder21366.btnRozbalitClick(Sender: TObject); + begin + polGrd.DataGrouping.ActiveGroupLevels[0].ExpandNodes; + end; + + + + + procedure TformOrder21366.btnSbalitClick(Sender: TObject); + begin + polGrd.DataGrouping.ActiveGroupLevels[0].CollapseNodes; + end; + + + + + procedure TformOrder21366.btnTiskClick(Sender: TObject); + var lSQL: string; + i: integer; + begin +{ + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabObjTiskH'') IS NOT NULL DROP TABLE #TabObjTiskH' + CRLF + 'CREATE TABLE #TabObjTiskH (ID INT IDENTITY(1,1) NOT NULL'; + lSQL:= lSQL + ', CisloOrg INT NOT NULL, Sklad NVARCHAR(30), Datum DATETIME)' + CRLF; + Helios.ExecSQL(lSQL); + + lSQL:= 'INSERT #TabObjTiskH (CisloOrg, Sklad, Datum) SELECT ISNULL(TRY_PARSE(N' + cOrgDod.ToString.Replace(';', '').Replace('-','').Replace(' ', '').QuotedString; + lSQL:= lSQL + ' AS INT), 0), N' + Helios.Sklad.QuotedString + ', CONVERT(datetime, N' + FormatDateTime('d.m.yyyy', dtZavoz.Date).QuotedString + ', 104)'; + Helios.ExecSQL(lSQL); + + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabObjTiskR'') IS NOT NULL DROP TABLE #TabObjTiskR' + CRLF + 'CREATE TABLE #TabObjTiskR (ID INT IDENTITY(1,1) NOT NULL'; + lSQL:= lSQL + ', SkupZbo NVARCHAR(3), RegCis NVARCHAR(30), Nazev1 NVARCHAR(100), Rano NUMERIC(15,3) DEFAULT 0.0, Poledne NUMERIC(15,3) DEFAULT 0.0)' + CRLF; + Helios.ExecSQL(lSQL); + + vTab.DisableControls; + vTab.First; + while not(vTab.Eof) do + begin + lSQL:= 'INSERT #TabObjTiskR (SkupZbo, RegCis, Nazev1, Rano, Poledne) SELECT N' + vTab.FieldByName('SkupZbo').AsString.QuotedString + ', N'; + lSQL:= lSQL + vTab.FieldByName('RegCis').AsString.QuotedString + ', N' + vTab.FieldByName('Nazev').AsString.QuotedString + ', '; + lSQL:= lSQL + vTab.FieldByName('Rano').AsString.Replace(',', '.') + ', ' + vTab.FieldByName('Poledne').AsString.Replace(',', '.'); + Helios.ExecSQL(lSQL); + vTab.Next; + end; + +// Helios.PrintForm(12); + + vTab.EnableControls; +} + btnOKClick(Sender); + + end; + + + + + procedure TformOrder21366.btnVynulovatClick(Sender: TObject); + var i: integer; + begin + if (vTab.RecordCount>0) then + if (Helios.YesNo('!! POZOR !! Toto je ' + #1 + 'nevratná akce' + #1 + ' !!', false)) then + if (Helios.YesNo('?? Opravdu vynulovat ' + #1 + 'všechna' + #1 + ' nabĂ­zená mnoĹľstvĂ­ ??', false)) then + begin + i:= vTab.RecNo; + vTab.DisableControls; + vTab.First; + while not(vTab.Eof) do + begin + vTab.Edit; + vTab.FieldByName('Rano').AsInteger:= 0; + vTab.FieldByName('Poledne').AsInteger:= 0; + vTab.Post; + vTab.Next; + end; + vTab.EnableControls; + vTab.RecNo:= i; + end; + + end; + + + + + procedure TformOrder21366.btnZavritClick(Sender: TObject); + begin + if (Helios.YesNo('UkonÄŤit bez uloĹľenĂ­ objednávky ?', false)) then + Close; + end; + + + + + procedure TformOrder21366.NactiKarty; + var lSQL, sort, k1, k2, cZbo, flt: string; + idSort, idx: integer; + poradiSort, poradiSort2: Single; + mnR, mnP: Single; + extOrdInfo: boolean; + begin + if (cbxSortiment.ItemIndex>-1) and (cbxDodavatel.ItemIndex>-1) and (dtZavoz.DateTime>Now) then + begin + idx:= cbxSortiment.ItemIndex; + k1:= sortim[idx].k1; + poradiSort:= 1; + + lSQL:= 'SELECT s.ID, s.Nazev, s.K1, ISNULL(s.K2,N'''') AS K2, ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)) AS Poradi FROM ' + tblSortim + ' s LEFT JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE se._Objednavky_Zobrazit=1'; + lSQL:= lSQL + ' AND s.K1=N' + k1.QuotedString; // + ' AND s.K2 IS NOT NULL'; + lSQL:= lSQL + ' ORDER BY ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)), K1, ISNULL(s.K2, N'''')'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + if not(vTab.Active) then + vTab.Open; + + tabExtOrdInfo:= ''; + lSQL:= 'SET NOCOUNT ON' + CRLF +'DECLARE @dt DATETIME, @tabName NVARCHAR(30)=N''''' + CRLF + ' SET @dt=CONVERT(datetime, N'; + lSQL:= lSQL + FormatDateTime('d.m.yyyy', dtZavoz.DateTime).QuotedString + ', 104)' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo.ep_HDC_App_Objednavka_GenerujTabulkyProObjednavku'', N''P'') IS NOT NULL' + CRLF; + lSQL:= lSQL + ' EXEC dbo.ep_HDC_App_Objednavka_GenerujTabulkyProObjednavku @Dodavatel=' + cOrgDod.ToString; + lSQL:= lSQL + ', @DatumDodani=@dt, @RadaDokladu1=N' + ('7' + branchID.ToString + '0').QuotedString + ', @RadaDokladu2=N'; + lSQL:= lSQL + ('7' + branchID.ToString + '1').QuotedString + ', @Sklad=N' + Helios.Sklad.QuotedString + ', @TypSortimentu='; + lSQL:= lSQL + sortim[cbxSortiment.ItemIndex].typSort.ToString + ', @BranchID=' + branchID.ToString + ', @SortimentK1=N' +k1.QuotedString; + lSQL:= lSQL + ', @TabName=@tabName OUT' + CRLF + 'SELECT @tabName'; + with Helios.OpenSQL(lSQL) do + tabExtOrdInfo:= VarToStr(FieldValues(0)); + + flt:= 'K1=''' + k1 + ''''; + vTab.Filter:= flt; + vTab.Filtered:= true; + + + extOrdInfo:= false; + lSQL:= 'SELECT CASE WHEN OBJECT_ID(N'+ tabExtOrdInfo.QuotedString + ', N''U'') IS NOT NULL THEN 1 ELSE 0 END'; + with Helios.OpenSQL(lSQL) do + if (VarToStr(FieldValues(0))='1') then + extOrdInfo:= true; + + + First; + while not(EOF) do + begin + idSort:= VarToStr(FieldByNameValues('ID')).ToInteger; + sort:= VarToStr(FieldByNameValues('Nazev')); + // k1:= VarToStr(FieldByNameValues('K1')); + k2:= VarToStr(FieldByNameValues('K2')); + poradiSort2:= VarToStr(FieldByNameValues('Poradi')).ToSingle; + + lSQL:= 'SELECT ISNULL(s.ID,0) AS idSS, k.ID AS idKZ, k.SkupZbo, k.RegCis, k.Nazev1, ISNULL(s.Mnozstvi,0) AS MnSkladem, k.CisloZbozi'; + lSQL:= lSQL + ', ISNULL(ke._priorita,0) AS Priorita, ISNULL(k.Aktualni_Dodavatel,-1) AS AktDod, ISNULL(ke._zavoz,0) AS Zavoz, '; + lSQL:= lSQL + 'k.Minimum_Dodavatel, ISNULL(ke._delitelnost,0) AS Delitelnost, '; + if (extOrdInfo) then + lSQL:= lSQL + 'ISNULL(eo.Navrh,0)' + else + lSQL:= lSQL + '0'; + lSQL:= lSQL + ' AS Doporuceno, ISNULL(ke.'; +// case branchID of +// 1: lSQL:= lSQL + '_PoradiSortiment_Klas1'; +// 2: lSQL:= lSQL + '_PoradiSortiment_MozVod'; +// 3: lSQL:= lSQL + '_PoradiSortiment_MozPi'; +// else + lSQL:= lSQL + '_poradivsortimentu'; +// end; + + lSQL:= lSQL + ', ISNULL(ke._poradivsortimentu, 999)) AS PoradiVSort FROM ' + tblKZ + ' k LEFT JOIN ' + tblSS + ' s ON (s.IDKmenZbozi=k.ID AND s.IDSklad=N'; + lSQL:= lSQL + Helios.Sklad.QuotedString + ') INNER JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID)'; + if (extOrdInfo) then + lSQL:= lSQL + ' LEFT JOIN ' + tabExtOrdInfo + ' eo ON (eo.SkupZbo=k.SkupZbo AND eo.RegCis=k.RegCis)'; + lSQL:= lSQL + ' WHERE k.IDSortiment=' + idSort.ToString + ' ORDER BY ISNULL(ke.'; +// case branchID of +// 1: lSQL:= lSQL + '_PoradiSortiment_Klas1'; +// 2: lSQL:= lSQL + '_PoradiSortiment_MozVod'; +// 3: lSQL:= lSQL + '_PoradiSortiment_MozPi'; +// else + lSQL:= lSQL + '_poradivsortimentu'; +// end; + lSQL:= lSQL + ', ISNULL(ke._poradivsortimentu, 999))'; + + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + First; + while not(EOF) do + begin + cZbo:= VarToStr(FieldByNameValues('CisloZbozi')); + if not(vTab.Locate('CisloZbozi', cZbo, [])) then + begin + vTab.Append; + vTab.FieldByName('Sortiment').AsString:= sort; + vTab.FieldByName('PoradiSort').AsSingle:= poradiSort; + vTab.FieldByName('K1').AsString:= k1; + vTab.FieldByName('K2').AsString:= k2; + vTab.FieldByName('K1K2').AsString:= k1+k2; + vTab.FieldByName('PoradiSortNazev').AsString:= ((poradiSort*1000.0)+poradiSort2).ToString.Replace(',', '.') + ' ' + sort; + vTab.FieldByName('IDZboSklad').AsInteger:= VarToStr(FieldByNameValues('idSS')).ToInteger; + vTab.FieldByName('IDKZ').AsInteger:= VarToStr(FieldByNameValues('idKZ')).ToInteger; + vTab.FieldByName('SkupZbo').AsString:= VarToStr(FieldByNameValues('SkupZbo')); + vTab.FieldByName('RegCis').AsString:= VarToStr(FieldByNameValues('RegCis')); + vTab.FieldByName('Nazev').AsString:= VarToStr(FieldByNameValues('Nazev1')); + vTab.FieldByName('CisloZbozi').AsString:= cZbo; + vTab.FieldByName('Priorita').AsInteger:= VarToStr(FieldByNameValues('Priorita')).ToInteger; + vTab.FieldByName('Poradi').AsSingle:= VarToStr(FieldByNameValues('PoradiVSort')).ToSingle; + vTab.FieldByName('StavSkladu').AsFloat:= VarToStr(FieldByNameValues('MnSkladem')).ToExtended; + vTab.FieldByName('Doporuceno').AsFloat:= VarToStr(FieldByNameValues('Doporuceno')).ToExtended; + vTab.FieldByName('Rano').AsFloat:= VarToStr(FieldByNameValues('Doporuceno')).ToExtended; + vTab.FieldByName('Poledne').AsFloat:= 0; + vTab.FieldByName('Dodavatel').AsInteger:= VarToStr(FieldByNameValues('AktDod')).ToInteger; + vTab.FieldByName('JenRano').AsInteger:= VarToStr(FieldByNameValues('Zavoz')).ToInteger; + vTab.FieldByName('Minimum').AsFloat:= VarToStr(FieldByNameValues('Minimum_Dodavatel')).ToExtended; + vTab.FieldByName('Delitelnost').AsFloat:= VarToStr(FieldByNameValues('Delitelnost')).ToExtended; + vTab.Post; + end; + Next; + end; + end; + Next; + end; + + flt:= 'K1=''' + k1 + ''''; + if (cOrgDod>-1) then + flt:= flt + ' AND Dodavatel=' + cOrgDod.ToString; + vTab.Filter:= flt; + vTab.Filtered:= true; + + end; + + vTab.SortByFields('PoradiSortNazev,Poradi,SkupZbo,RegCis'); + + helUtils.waitEnd; + + polGrd.Options:= polGrd.Options + [dgEditing]; + if not(vTab.Active) then + polGrd.Options:= polGrd.Options - [dgEditing] + else + if (vTab.RecordCount=0) then + polGrd.Options:= polGrd.Options - [dgEditing]; + + if (k1='001') then + vTab.Locate('K1;K2', VarArrayOf(['001','']), []); + end; + end; + + + + + procedure TformOrder21366.polGrdDataGroupGetRowText(Sender: TCustomDBGridEh; GroupDataTreeNode: TGroupDataTreeNodeEh; var GroupRowText: string); + var s, s2: string; + i: integer; + errReverse: boolean; + begin + errReverse:= false; + s2:= '(123)'; + s2:= ReverseString(s2); + if (s2.EndsWith('(')) then + errReverse:= true; + + s:= GroupRowText.Replace('PoradiSortNazev: ', ''); + if (s.IndexOf(' ')>-1) then + s:= MidStr(s, s.IndexOf(' ')+1, s.Length).Trim; + if (s.EndsWith(')')) then + begin + s:= ReverseString(s); + if (errReverse) then + i:= s.IndexOf('(') + else + i:= s.IndexOf(')'); + if (i>-1) then + s:= MidStr(s, i+2, s.Length); + s:= ReverseString(s).Trim; + end; + s2:= helUtils.getHeliosStrVal(Helios, '', 'SELECT TOP(1) KatAllTecky FROM ' + tblSortim + ' WHERE Nazev=N' + s.QuotedString); + GroupRowText:= IfThen(s2<>'', s2 + ' ', '') + s; + end; + + + + + procedure TformOrder21366.polGrdKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); + var i, i2: integer; + lSQL: string; + begin + if (Key=Ord('p')) or (Key=Ord('P')) then + begin + i:= polGrd.DataSource.DataSet.FieldByName('IDKZ').AsInteger; + if (i>0) then + begin + lSQL:= 'TabPohybyZbozi.IDZboSklad=(SELECT ID FROM ' + tblSS + ' WHERE IDKmenZbozi=' + i.ToString + ' AND IDSklad=N' + Helios.Sklad.QuotedString + ')'; + Helios.OpenBrowse(66, lSQL); + end; + end; + + if (Key=Ord('o')) or (Key=Ord('O')) then + begin + i:= polGrd.DataSource.DataSet.FieldByName('IDKZ').AsInteger; + i2:= 0; + with Helios.OpenSQL('SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_HDC_StareProdeje_Pol''') do + if (RecordCount=1) then + i2:= VarToStr(FieldValues(0)).ToInteger; + + if (i2>0) then + begin + lSQL:= 'hvw_HDC_StareProdeje_Pol.IDSklad=N' + Helios.Sklad.QuotedString + ' AND hvw_HDC_StareProdeje_Pol.SkupZbo=N'; + lSQL:= lSQL + polGrd.DataSource.DataSet.FieldByName('SkupZbo').AsString.QuotedString + ' AND hvw_HDC_StareProdeje_Pol.RegCis=N'; + lSQL:= lSQL + polGrd.DataSource.DataSet.FieldByName('RegCis').AsString.QuotedString; + lSQL:= lSQL + ' AND hvw_HDC_StareProdeje_Pol.DruhPohybuZbo IN (2,4)'; + Helios.OpenBrowse(i2, lSQL); + end; + end; + + + end; + + + + + procedure TformOrder21366.vTabAfterDelete(DataSet: TDataSet); + begin + btnVynulovat.Enabled:= (DataSet.RecordCount>0); + end; + + + + + procedure TformOrder21366.vTabAfterPost(DataSet: TDataSet); + var maxPoz: integer; + begin + btnVynulovat.Enabled:= (DataSet.RecordCount>0); + SetLength(arrIdSS, Length(arrIdSS)+1); + maxPoz:= Length(arrIdSS)-1; + arrIdSS[maxPoz]:= DataSet.FieldByName('IDZboSklad').AsInteger; + end; + + + + + procedure TformOrder21366.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 (mv0) then + begin + SetLength(cOrgs, RecordCount); + First; + idx:= 0; + while not(EOF) do + begin + cbxDodavatel.Items.Add(VarToStr(FieldValues(1))); + cOrgs[idx]:= VarToStr(FieldValues(0)).ToInteger; + Inc(idx); + Next; + end; + end; + + if (cbxDodavatel.Items.Count=1) then + helUtils.waitStart(nil, 'NaÄŤĂ­tám historická data...', 0, 0); + + cbxDodavatel.ItemIndex:= helUtils.IfThenInt(cbxDodavatel.Items.Count=1, 0, -1); + polGrd.Enabled:= (cbxDodavatel.ItemIndex>-1); + +{ + polGrd.Options:= polGrd.Options + [dgEditing]; + if not(vTab.Active) then + polGrd.Options:= polGrd.Options - [dgEditing] + else + if (vTab.RecordCount=0) then + polGrd.Options:= polGrd.Options - [dgEditing]; +} + cbxDodavatelChange(Sender); + + end; + + + + + procedure TformOrder21366.dtZavozChange(Sender: TObject); + var lSQL, podm: string; + begin + idObd:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblObd + ' WHERE DatumOd_Y=' + dtZavoz.DateTime.GetYear.ToString); + + podm:= 'DruhPohybuZbo=6 AND IDSklad=N' + Helios.Sklad.QuotedString + ' AND RadaDokladu=N' + rDokl.QuotedString + ' AND Obdobi=' + idObd.ToString; + lSQL:= 'SELECT def.PosledniPC FROM ' + tblDDZ + ' d INNER JOIN ' + tblDDZdef + ' def ON (def.IDDruhDZ=d.ID) WHERE d.DruhPohybuZbo=6 AND def.IDObdobi=' + idObd.ToString; + lSQL:= lSQL + ' AND d.RadaDokladu=N' + rDokl.QuotedString; + + lSQL:= 'DECLARE @ppc INT, @d INT, @i INT' + CRLF + 'SET @ppc=ISNULL( (' + lSQL + '), 1)' + CRLF + 'SET @d=(DATEPART(year, GETDATE())-2000) * 10000' + CRLF; + lSQL:= lSQL + 'IF (@ppc=@d) SET @ppc=@ppc+1' + CRLF; + lSQL:= lSQL + 'EXEC @i=dbo.hp_NajdiPrvniVolny @Tabulka=N''TabDokladyZbozi'', @Atribut=N''PoradoveCislo'', @Odkud=@ppc, @Kam=999999, @Where=N' + podm.QuotedString + ', @Returnem=1'; + lSQL:= lSQL + CRLF + 'SELECT @i'; + cisloDokl:= helUtils.getHeliosStrVal(Helios, '0', lSQL); + + edtCisloObj.ValueInt:= cisloDokl.ToInteger; + end; + + + + + procedure TformOrder21366.cbxDodavatelChange(Sender: TObject); + var lSQL: string; + begin + + if (cbxDodavatel.ItemIndex>0) then + helUtils.waitStart(nil, 'NaÄŤĂ­tám historická data...', 0, 0); + + lblDodAdresa.Caption:= ''; + lblDodMisto.Caption:= ''; + lblDodICO.Caption:= ''; + lblDodDIC.Caption:= ''; + gbDodavatel.Caption:= ' Dodavatel '; + if (cbxDodavatel.ItemIndex=-1) then + cOrgDod:= -1 + else + cOrgDod:= cOrgs[cbxDodavatel.ItemIndex]; + lSQL:= 'SELECT Nazev, UliceSCisly, Misto, PSC, ICO, DIC FROM ' + tblCOrg + ' WHERE CisloOrg=' + cOrgDod.ToString; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + lblDodAdresa.Caption:= VarToStr(FieldValues(1)); + lblDodMisto.Caption:= VarToStr(FieldValues(3)) + ' ' + VarToStr(FieldValues(2)); + lblDodICO.Caption:= 'IÄŚ ' + VarToStr(FieldValues(4)); + lblDodDIC.Caption:= 'DIÄŚ ' + VarToStr(FieldValues(5)); + gbDodavatel.Caption:= ' Dodavatel: ÄŤ.org. ' + cOrgDod.ToString + ' '; + NactiKarty; + end + else + begin + vTab.Filter:= 'K1=''999'''; + vTab.Filtered:= true; + end; + polGrd.Enabled:= (cOrgDod>-1); + if (polGrd.Enabled) then + polGrd.DataSource.DataSet.First; + end; + + + + + procedure TformOrder21366.edtNumEditorClick(Sender: TObject); + begin + edtNumEditor.Visible:= true; + end; + + + + + procedure TformOrder21366.FormClose(Sender: TObject; var Action: TCloseAction); + begin + if (vTab.Active) then + vTab.Close; + if (tabExtOrdInfo<>'') and not(jeTest) then + Helios.ExecSQL('IF OBJECT_ID(N' + tabExtOrdInfo.QuotedString + ', N''U'') IS NOT NULL DROP TABLE ' + tabExtOrdInfo); + Action:= caFree; + end; + + + + + + procedure TformOrder21366.FormResize(Sender: TObject); + var i, ii, w: integer; + begin + + for i:=0 to polGrd.Columns.Count-1 do + begin + for ii:=0 to Length(visCols)-1 do + if (visCols[ii].index=i) and (polGrd.Columns.Items[i].Visible) then + polGrd.Columns[i].Width:= Trunc(visCols[ii].koeficient * polGrd.Width); + end; + + end; + + + + + procedure TformOrder21366.FormShow(Sender: TObject); + var rHeight, i, ii: integer; + lSQL, podm: string; + m: TMonitor; + begin + UseLatestCommonDialogs:= true; +{ + self.Top:= 0; + self.Left:= 0; + self.Height:= Screen.WorkAreaHeight-25; + self.Width:= Screen.WorkAreaWidth; +} + edtNumEditor.Height:= polGrd.RowHeight+2; + + rDokl:= helUtils.getHeliosStrVal(Helios, '', 'SELECT TOP(1) RadaDokladu FROM ' + tblDDZ + ' WHERE DruhPohybuZbo=6 AND StredNaklad=N' + Helios.Sklad.QuotedString); + if (rDokl='') then + begin + Helios.Error(#1'Chyba zjišťovánĂ­ Ĺ™ady dokladu VydObj'#1 + CRLF + '(nelze dohledat podle nákl.stĹ™ediska)'); + Close; + end; + + idObd:= Helios.Obdobi; + dtZavoz.DateTime:= IncDay(Now, 1); + dtZavozChange(Sender); + + lblInfo.Caption:= 'w: ' + Screen.WorkAreaWidth.ToString + ' / h: ' + Screen.WorkAreaHeight.ToString; + + smtpProfil:= false; + idMailProfile:= 0; + with Helios.OpenSQL('SELECT ID FROM ' + tblUziv + ' WHERE EMailIDProfilu IS NOT NULL AND LoginName=SUSER_SNAME()') do + if (RecordCount=1) then + idMailProfile:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT EMailIDProfilu FROM ' + tblUziv + ' WHERE EMailIDProfilu IS NOT NULL AND LoginName=SUSER_SNAME()'); + if (idMailProfile>0) then + with Helios.OpenSQL('SELECT ID FROM ' + tblMailProfil + ' WHERE ID=' + idMailProfile.ToString + ' AND TypRozhrani=2') do + if (RecordCount=1) then + smtpProfil:= true; + + idBidVydObjHDC:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_DokladyZbozi'''); + idTiskFormVydObjHDC:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblFormDef + ' WHERE Nazev=N''Objednávka pekárna'' AND Aktivni=1 AND Skupina=' + idBidVydObjHDC.ToString); + + ii:= 0; + SetLength(visCols, polGrd.VisibleColumns.Count); + for i:=0 to polGrd.Columns.Count-1 do + if (polGrd.Columns.Items[i].Visible) then + begin + visCols[ii].index:= i; + visCols[ii].koeficient:= RoundToEx(polGrd.Columns.Items[i].Width / polGrd.Width, -5); + Inc(ii); + end; + + +{ + podm:= 'DruhPohybuZbo=6 AND IDSklad=N' + Helios.Sklad.QuotedString + ' AND RadaDokladu=N' + rDokl.QuotedString + ' AND Obdobi=' + idObd.ToString; + lSQL:= 'SELECT def.PosledniPC FROM ' + tblDDZ + ' d INNER JOIN ' + tblDDZdef + ' def ON (def.IDDruhDZ=d.ID) WHERE d.DruhPohybuZbo=6 AND def.IDObdobi=' + idObd.ToString; + lSQL:= lSQL + ' AND d.RadaDokladu=N' + rDokl.QuotedString; + + lSQL:= 'DECLARE @ppc INT, @i INT' + CRLF + 'SET @ppc=ISNULL( (' + lSQL + '), 1)' + CRLF; + lSQL:= lSQL + 'EXEC @i=dbo.hp_NajdiPrvniVolny @Tabulka=N''TabDokladyZbozi'', @Atribut=N''PoradoveCislo'', @Odkud=@ppc, @Kam=999999, @Where=N' + podm.QuotedString + ', @Returnem=1; SELECT @i'; + cisloDokl:= helUtils.getHeliosStrVal(Helios, '0', lSQL); + + edtCisloObj.ValueInt:= cisloDokl.ToInteger; +} + + +{ + rDokl:= helUtils.getHeliosStrVal(Helios, '', 'SELECT TOP(1) RadaDokladu FROM ' + tblDDZ + ' WHERE DruhPohybuZbo=6 AND StredNaklad=N' + Helios.Sklad.QuotedString); + if (rDokl='') then + begin + Helios.Error(#1'Chyba zjišťovánĂ­ Ĺ™ady dokladu VydObj'#1 + CRLF + '(nelze dohledat podle nákl.stĹ™ediska)'); + Close; + end; + + lSQL:= 'DruhPohybuZbo=6 AND IDSklad=N' + Helios.Sklad.QuotedString + ' AND RadaDokladu=N' + rDokl.QuotedString + ' AND Obdobi=' + Helios.Obdobi.ToString; + lSQL:= 'DECLARE @i INT; EXEC @i=dbo.hp_NajdiPrvniVolny @Tabulka=N''TabDokladyZbozi'', @Atribut=N''PoradoveCislo'', @Odkud=0, @Kam=999999, @Where=N' + lSQL.QuotedString + ', @Returnem=1; SELECT @i'; + poradCislo:= helUtils.getHeliosIntVal(Helios, 0, lSQL); +} + +{ + grd.RowCount:= 2; + grd.FixedRows:= 1; + + rHeight:= grd.Canvas.TextHeight('ĂĂ˝'); + grd.DefaultRowHeight:= grd.Font.Size + 18; + +// grd.RowHeights[1]:= grd.Canvas.TextHeight('Akce') + 4; + grd.Cells[0, 0]:= 'Akce'; + grd.Cells[1, 0]:= 'ÄŚĂ­slo'; + grd.Cells[2, 0]:= 'Název'; + grd.Cells[3, 0]:= 'DoporuÄŤeno'; + grd.Cells[4, 0]:= 'Ráno'; + grd.Cells[5, 0]:= 'Poledne'; +} + + branchID:= ZjistiBranchID; + cOrgDod:= -1; + + lblDodAdresa.Caption:= ''; + lblDodMisto.Caption:= ''; + lblDodICO.Caption:= ''; + lblDodDIC.Caption:= ''; + + cbxSortiment.Items.Clear; + + lSQL:= 'SELECT DISTINCT(s.K1), ISNULL(e.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(e._priorita, 999)) AS PoradiSort FROM ' + tblSortim + ' s INNER JOIN ' + tblSortimE + ' e ON (e.ID=s.ID) WHERE e._Objednavky_Zobrazit=1'; + lSQL:= lSQL + ' AND ISNULL(e.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', 0)>0 GROUP BY s.K1, ISNULL(e.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(e._priorita, 999))'; + + + + lSQL:= 'SELECT DISTINCT(s.K1) FROM ' + tblSortim + ' s INNER JOIN ' + tblSortimE + ' e ON (e.ID=s.ID) WHERE e._Objednavky_Zobrazit=1'; + lSQL:= lSQL + ' GROUP BY s.K1'; + + + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + SetLength(sortim, RecordCount); + i:= 0; + First; + while not(EOF) do + begin + cbxSortiment.Items.Add(helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblSortim + ' WHERE K2 IS NULL AND K1=N' + VarToStr(FieldValues(0)).QuotedString)); + + sortim[i].k1:= VarToStr(FieldValues(0)); +// sortim[i].poradiSort:= VarToStr(FieldValues(1)).ToSingle; + sortim[i].nazev:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblSortim + ' WHERE K2 IS NULL AND K1=N' + VarToStr(FieldValues(0)).QuotedString); + + sortim[i].poleDodav:= ''; + sortim[i].typSort:= 255; + + if (sortim[i].k1='001') then + begin + sortim[i].typSort:= 0; + sortim[i].poleDodav:= '_dodpek'; + end; + + if (sortim[i].k1='003') then + begin + sortim[i].typSort:= 1; + sortim[i].poleDodav:= '_dodlah'; + end; + + if (sortim[i].k1='004') then + begin + sortim[i].typSort:= 2; + sortim[i].poleDodav:= '_dodvelko'; + end; + + Inc(i); + Next; + end; + cbxSortiment.ItemIndex:= 0; + cbxSortimentChange(Sender); + end; + + end; + + + + + end. diff --git a/frmPrijem.dfm b/frmPrijem.dfm new file mode 100644 index 0000000..149e75b --- /dev/null +++ b/frmPrijem.dfm @@ -0,0 +1,677 @@ +object formPrijem: TformPrijem + Left = 0 + Top = 0 + Align = alLeft + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = ' P'#345#237'jem objedn'#225'vky' + ClientHeight = 774 + ClientWidth = 1324 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Position = poOwnerFormCenter + OnClose = FormClose + OnShow = FormShow + PixelsPerInch = 96 + DesignSize = ( + 1324 + 774) + TextHeight = 25 + object Label1: TLabel + Left = 138 + Top = 82 + Width = 130 + Height = 25 + Caption = 'Datum p'#345#237'jmu' + end + object Label3: TLabel + Left = 120 + Top = 31 + Width = 160 + Height = 25 + Caption = 'Druh sortimentu:' + end + object Label4: TLabel + Left = 112 + Top = 138 + Width = 162 + Height = 25 + Caption = #268#237'slo objedn'#225'vky:' + end + object Label5: TLabel + Left = 91 + Top = 193 + Width = 60 + Height = 25 + Caption = 'Z'#225'voz:' + end + object Label6: TLabel + Left = 365 + Top = 193 + Width = 85 + Height = 25 + Alignment = taRightJustify + Caption = 'Dod.fakt:' + end + object gbDodavatel: TGroupBox + Left = 666 + Top = 19 + Width = 640 + Height = 169 + Caption = ' Dodavatel ' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 8 + object Label2: TLabel + Left = 28 + Top = 72 + Width = 71 + Height = 25 + Caption = 'Adresa:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblDodAdresa: TLabel + Left = 130 + Top = 72 + Width = 445 + Height = 29 + AutoSize = False + end + object lblDodMisto: TLabel + Left = 130 + Top = 110 + Width = 405 + Height = 29 + AutoSize = False + end + object lblDodICO: TLabel + Left = 130 + Top = 142 + Width = 7 + Height = 25 + end + object lblDodDIC: TLabel + Left = 360 + Top = 142 + Width = 7 + Height = 25 + end + object cbxDodavatel: TComboBox + Left = 28 + Top = 33 + Width = 589 + Height = 33 + Style = csDropDownList + TabOrder = 0 + end + end + object gbPolozky: TGroupBox + Left = 3 + Top = 276 + Width = 1089 + Height = 470 + Anchors = [akLeft, akTop, akRight, akBottom] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 9 + object polGrd: TDBGridEh + Left = 2 + Top = 27 + Width = 1085 + Height = 441 + Align = alClient + DataGrouping.Active = True + DataGrouping.DefaultStateExpanded = True + DataGrouping.GroupLevels = < + item + ColumnName = 'Column_12_PoradiSortNazev' + end> + DataSource = ds + DynProps = <> + GridLineParams.VertEmptySpaceStyle = dessNonEh + IndicatorOptions = [] + EmptyDataInfo.Active = True + EmptyDataInfo.Text = #381#225'dn'#233' polo'#382'ky nenalezeny' + Options = [dgTitles, dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit] + OptionsEh = [dghFixed3D, dghData3D, dghHighlightFocus, dghClearSelection, dghRowHighlight] + SelectionDrawParams.SelectionStyle = gsdsClassicEh + STFilter.Local = True + TabOrder = 0 + TitleParams.Color = clMoneyGreen + TitleParams.FillStyle = cfstSolidEh + TitleParams.MultiTitle = True + TitleParams.SecondColor = clMoneyGreen + OnDataGroupGetRowText = polGrdDataGroupGetRowText + OnDrawColumnCell = polGrdDrawColumnCell + OnKeyUp = polGrdKeyUp + Columns = < + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'PoradiSort' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'K1' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'K2' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Sortiment' + Footers = <> + Visible = False + end + item + Alignment = taCenter + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'RegCis' + Footers = <> + ReadOnly = True + TextEditing = False + Width = 230 + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Nazev1' + Footers = <> + ReadOnly = True + TextEditing = False + Width = 594 + end + item + Alignment = taCenter + CellButtons = <> + DisplayFormat = '##0.##' + DynProps = <> + EditButtons = <> + FieldName = 'Mnozstvi' + Footers = <> + Width = 105 + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'IDZboSklad' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Poradi' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'SkupZbo' + Footers = <> + Visible = False + WordWrap = True + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'IDPohybZboziObj' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'PoradiExt' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'PoradiSortNazev' + Footers = <> + TextEditing = False + Visible = False + end + item + Alignment = taCenter + CellButtons = <> + DisplayFormat = '##0.##' + DynProps = <> + EditButtons = <> + FieldName = 'JCbezDaniKc' + Footers = <> + Title.Caption = 'JC bez DPH' + Width = 120 + end> + object RowDetailData: TRowDetailPanelControlEh + end + end + end + object btnOK: TButton + Left = 1124 + Top = 234 + Width = 191 + Height = 69 + Anchors = [akTop, akRight] + Caption = 'Ulo'#382'it p'#345#237'jemku' + TabOrder = 0 + OnClick = btnOKClick + end + object dtZavoz: TDateTimePicker + Left = 288 + Top = 79 + Width = 149 + Height = 33 + Date = 44268.000000000000000000 + Time = 0.431178437502239800 + TabOrder = 1 + end + object cbxSortiment: TComboBox + Left = 291 + Top = 28 + Width = 339 + Height = 33 + Style = csDropDownList + TabOrder = 2 + OnChange = cbxSortimentChange + end + object edtCisloObj: TNumberBox + Left = 288 + Top = 135 + Width = 97 + Height = 33 + Alignment = taCenter + Enabled = False + TabOrder = 3 + OnExit = edtCisloObjExit + end + object btnTisk: TButton + Left = 1124 + Top = 320 + Width = 188 + Height = 49 + Anchors = [akTop, akRight] + Caption = 'Vytisknout' + TabOrder = 10 + Visible = False + OnClick = btnTiskClick + end + object btnRozbalit: TButton + Left = 1124 + Top = 504 + Width = 188 + Height = 46 + Anchors = [akRight, akBottom] + Caption = 'Rozbalit v'#353'e' + TabOrder = 11 + OnClick = btnRozbalitClick + end + object btnSbalit: TButton + Left = 1124 + Top = 572 + Width = 188 + Height = 45 + Anchors = [akRight, akBottom] + Caption = 'Sbalit v'#353'e' + TabOrder = 12 + OnClick = btnSbalitClick + end + object btnZavrit: TButton + Left = 1124 + Top = 680 + Width = 188 + Height = 69 + Anchors = [akRight, akBottom] + Caption = 'Zav'#345#237't' + TabOrder = 13 + OnClick = btnZavritClick + end + object edtNumEditor: TNxEdit6 + Left = 8 + Top = 177 + Width = 121 + Height = 41 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -27 + Font.Name = 'Tahoma' + Font.Style = [] + MaxLength = 3 + NumbersOnly = True + ParentFont = False + TabOrder = 14 + Visible = False + UserDefinedColorPalette.GeometryHoverColor = clBlack + OnClick = edtNumEditorClick + end + object Panel1: TPanel + Left = 3 + Top = 242 + Width = 829 + Height = 35 + Caption = 'Zbo'#382#237 + Color = 14471860 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBackground = False + ParentFont = False + TabOrder = 15 + end + object Panel2: TPanel + Left = 831 + Top = 242 + Width = 232 + Height = 35 + Caption = 'P'#345#237'jem' + Color = 14471860 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBackground = False + ParentFont = False + TabOrder = 16 + end + object btnNactiObj: TButton + Left = 398 + Top = 133 + Width = 117 + Height = 37 + Caption = 'Na'#269'ti data' + TabOrder = 4 + OnClick = btnNactiObjClick + end + object cbZavoz: TComboBox + Left = 160 + Top = 190 + Width = 163 + Height = 33 + Style = csDropDownList + ExtendedUI = True + ItemIndex = 0 + TabOrder = 5 + Text = ' R'#225'no' + OnChange = cbZavozChange + Items.Strings = ( + ' R'#225'no' + ' Poledne') + end + object btnNuluj: TButton + Left = 831 + Top = 199 + Width = 109 + Height = 37 + Caption = 'Vynulovat' + TabOrder = 7 + Visible = False + OnClick = btnNulujClick + end + object edtDodFak: TEdit + Left = 456 + Top = 189 + Width = 198 + Height = 33 + MaxLength = 20 + TabOrder = 6 + end + object vTab: TMemTableEh + Params = <> + Options = [mtoPersistentStructEh] + OnFilterRecord = vTabFilterRecord + Left = 27 + Top = 17 + object vTabPoradiSort: TSingleField + FieldName = 'PoradiSort' + Visible = False + end + object vTabPoradi: TSmallintField + DisplayLabel = 'Po'#345'ad'#237 + FieldName = 'Poradi' + DisplayFormat = '#0' + end + object vTabRegCis: TStringField + DisplayLabel = #268#237'slo' + FieldName = 'RegCis' + Required = True + Size = 30 + end + object vTabNazev1: TStringField + DisplayLabel = 'N'#225'zev' + FieldName = 'Nazev1' + Size = 100 + end + object vTabMnozstvi: TFloatField + DisplayLabel = 'Mno'#382'stv'#237 + FieldName = 'Mnozstvi' + OnValidate = vTabMnozstviValidate + DisplayFormat = '##0.##' + end + object vTabSkupZbo: TStringField + FieldName = 'SkupZbo' + Visible = False + Size = 3 + end + object vTabIDZboSklad: TIntegerField + FieldName = 'IDZboSklad' + Required = True + Visible = False + end + object vTabIDPohybZboziObj: TIntegerField + FieldName = 'IDPohybZboziObj' + Required = True + Visible = False + end + object vTabSortiment: TStringField + FieldName = 'Sortiment' + Size = 100 + end + object vTabK2: TStringField + FieldName = 'K2' + Size = 10 + end + object vTabK1: TStringField + FieldName = 'K1' + Size = 10 + end + object vTabTypZavozu: TStringField + FieldName = 'TypZavozu' + Visible = False + Size = 1 + end + object vTabPoradiExt: TSingleField + FieldName = 'PoradiExt' + Visible = False + end + object vTabK1K2: TStringField + FieldName = 'K1K2' + Visible = False + Size = 15 + end + object vTabPoradiSortNazev: TStringField + FieldName = 'PoradiSortNazev' + Size = 100 + end + object vTabJCbezDaniKc: TSingleField + FieldName = 'JCbezDaniKc' + end + object MemTableData: TMemTableDataEh + object DataStruct: TMTDataStructEh + object JCbezDaniKc: TMTNumericDataFieldEh + FieldName = 'JCbezDaniKc' + NumericDataType = fdtSingleEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object PoradiSortNazev: TMTStringDataFieldEh + FieldName = 'PoradiSortNazev' + StringDataType = fdtStringEh + DisplayWidth = 100 + Size = 100 + end + object PoradiExt: TMTNumericDataFieldEh + FieldName = 'PoradiExt' + NumericDataType = fdtSingleEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object PoradiSort: TMTNumericDataFieldEh + FieldName = 'PoradiSort' + NumericDataType = fdtSingleEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object Poradi: TMTNumericDataFieldEh + FieldName = 'Poradi' + NumericDataType = fdtSmallintEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object TypZavozu: TMTStringDataFieldEh + FieldName = 'TypZavozu' + StringDataType = fdtStringEh + DisplayWidth = 1 + Size = 1 + end + object Sortiment: TMTStringDataFieldEh + FieldName = 'Sortiment' + StringDataType = fdtStringEh + DisplayWidth = 100 + Size = 100 + end + object K2: TMTStringDataFieldEh + FieldName = 'K2' + StringDataType = fdtStringEh + DisplayWidth = 10 + Visible = False + Size = 10 + end + object K1: TMTStringDataFieldEh + FieldName = 'K1' + StringDataType = fdtStringEh + DisplayWidth = 10 + Visible = False + Size = 10 + end + object Nazev1: TMTStringDataFieldEh + FieldName = 'Nazev1' + StringDataType = fdtStringEh + DisplayWidth = 100 + Size = 100 + end + object RegCis: TMTStringDataFieldEh + FieldName = 'RegCis' + StringDataType = fdtStringEh + DisplayWidth = 30 + Required = True + Size = 30 + end + object SkupZbo: TMTStringDataFieldEh + FieldName = 'SkupZbo' + StringDataType = fdtStringEh + DisplayWidth = 3 + Visible = False + Size = 3 + end + object IDZboSklad: TMTNumericDataFieldEh + FieldName = 'IDZboSklad' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + Required = True + Visible = False + currency = False + Precision = 15 + end + object Mnozstvi: TMTNumericDataFieldEh + FieldName = 'Mnozstvi' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayLabel = '0' + DisplayWidth = 20 + DisplayFormat = '##0.##' + currency = False + Precision = 15 + end + object K1K2: TMTStringDataFieldEh + FieldName = 'K1K2' + StringDataType = fdtStringEh + DisplayWidth = 20 + Visible = False + end + object IDPohybZboziObj: TMTNumericDataFieldEh + FieldName = 'IDPohybZboziObj' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + Required = True + Visible = False + currency = False + Precision = 15 + end + end + object RecordsList: TRecordsListEh + end + end + end + object ds: TDataSource + DataSet = vTab + Left = 34 + Top = 81 + end +end diff --git a/frmPrijem.pas b/frmPrijem.pas new file mode 100644 index 0000000..1a7ea7d --- /dev/null +++ b/frmPrijem.pas @@ -0,0 +1,1004 @@ +unit frmPrijem; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Types, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, System.ImageList, Vcl.ImgList, Vcl.StdCtrls, Vcl.Buttons, + Vcl.ComCtrls, ddPlugin_TLB, TBPackageU, Vcl.WinXPickers, Vcl.Mask, RxToolEdit, Vcl.NumberBox, Vcl.Grids, VirtualTrees, + NxGridView6, NxColumns6, NxControls6, NxCustomGrid6, NxVirtualGrid6, NxGrid6, NxEdit6, MemTableDataEh, Data.DB, + DBGridEhGrouping, ToolCtrlsEh, DBGridEhToolCtrls, DynVarsEh, EhLibVCL, GridsEh, EhLibMTE, DBAxisGridsEh, DBGridEh, MemTableEh, + System.MaskUtils; + +type +{ + TWideStringHelper = record helper for WideString + function QuotedString: string; overload; + end; + + TMaskedTextHelper = record helper for TMaskedText + function QuotedString: string; overload; + function Replace(oldStr, newStr: string): string; overload; + end; +} + + TSortiment = record + nazev, k1, poleDodav: string; + dodavatel: integer; + typSort: byte; + end; + + TformPrijem = class(TForm) + gbDodavatel: TGroupBox; + gbPolozky: TGroupBox; + Label1: TLabel; + dtZavoz: TDateTimePicker; + btnOK: TButton; + Label2: TLabel; + lblDodAdresa: TLabel; + lblDodMisto: TLabel; + cbxSortiment: TComboBox; + Label3: TLabel; + edtCisloObj: TNumberBox; + Label4: TLabel; + btnTisk: TButton; + btnRozbalit: TButton; + btnSbalit: TButton; + btnZavrit: TButton; + Panel1: TPanel; + Panel2: TPanel; + edtNumEditor: TNxEdit6; + vTab: TMemTableEh; + ds: TDataSource; + polGrd: TDBGridEh; + cbxDodavatel: TComboBox; + lblDodICO: TLabel; + lblDodDIC: TLabel; + vTabPoradiSort: TSingleField; + vTabPoradi: TSmallintField; + vTabPoradiSortNazev: TStringField; + vTabNazev1: TStringField; + vTabRegCis: TStringField; + vTabSkupZbo: TStringField; + vTabIDZboSklad: TIntegerField; + vTabMnozstvi: TFloatField; + vTabIDPohybZboziObj: TIntegerField; + vTabSortiment: TStringField; + vTabK2: TStringField; + vTabK1: TStringField; + btnNactiObj: TButton; + vTabTypZavozu: TStringField; + cbZavoz: TComboBox; + Label5: TLabel; + vTabPoradiExt: TSingleField; + vTabK1K2: TStringField; + btnNuluj: TButton; + vTabJCbezDaniKc: TSingleField; + edtDodFak: TEdit; + Label6: TLabel; + procedure FormShow(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure cbxSortimentChange(Sender: TObject); + procedure edtNumEditorClick(Sender: TObject); + procedure btnRozbalitClick(Sender: TObject); + procedure btnSbalitClick(Sender: TObject); + procedure btnOKClick(Sender: TObject); + procedure polGrdKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure btnZavritClick(Sender: TObject); + procedure btnTiskClick(Sender: TObject); + procedure vTabRanoValidate(Sender: TField); + procedure vTabPoledneValidate(Sender: TField); + procedure edtCisloObjExit(Sender: TObject); + procedure btnNactiObjClick(Sender: TObject); + procedure vTabMnozstviValidate(Sender: TField); + procedure polGrdDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); + procedure vTabFilterRecord(DataSet: TDataSet; var Accept: Boolean); + procedure cbZavozChange(Sender: TObject); + procedure polGrdDataGroupGetRowText(Sender: TCustomDBGridEh; GroupDataTreeNode: TGroupDataTreeNodeEh; var GroupRowText: string); + procedure btnNulujClick(Sender: TObject); + private + cOrg: integer; + function ZjistiBranchID: Integer; + function MnozstviKPrijmuSum: Single; + procedure NactiObjednavku(const idObj: integer); safecall; + procedure WMGetMinMaxInfo(Var msg: TWMGetMinMaxInfo); message WM_GETMINMAXINFO; + public + Helios: IHelios; + jeTest: boolean; + idDZ: integer; + end; + +var + formPrijem: TformPrijem; + sortim: TArray; + cOrgs: TArray; + cOrgDod, idDZ: integer; + branchID: integer; + compName, tabExtOrdInfo, cisloDokl, rDokl: string; + bidHDCObj: integer; + +implementation +uses System.StrUtils, System.DateUtils, helUtils; + +{$R *.dfm} + + +{$IF CompilerVersion>=34} // Sydney a vys +{$ENDIF} + +{ + function TWideStringHelper.QuotedString: string; + begin + Result:= string(Self).QuotedString; + end; + + function TMaskedTextHelper.QuotedString: string; + var s: string; + begin + s:= Self; + Result:= s.QuotedString; + end; + + function TmaskedTextHelper.Replace(oldStr: string; newStr: string): string; + var s: string; + begin + s:= Self; + Result:= s.Replace(oldStr, newStr); + end; + } + + + + + procedure TformPrijem.WMGetMinMaxInfo(Var msg: TWMGetMinMaxInfo); + begin + inherited; + with msg.MinMaxInfo^.ptMaxTrackSize Do + begin + X:= GetDeviceCaps( Canvas.handle, HORZRES ) + (Width - ClientWidth); + Y:= GetDeviceCaps( Canvas.handle, VERTRES ) + (Height - ClientHeight); + end; + end; + + + + + function TformPrijem.MnozstviKPrijmuSum: Single; + var i: integer; + begin + result:= 0; + if (vTab.RecordCount>0) then + begin + i:= vTab.RecNo; + vTab.DisableControls; + vTab.First; + while not(vTab.Eof) do + begin + result:= result + vTab.FieldByName('Mnozstvi').AsSingle; + vTab.Next; + end; + vTab.RecNo:= i; + vTab.EnableControls; + end; + end; + + + + + function TformPrijem.ZjistiBranchID: Integer; + var s: string; + begin + result:= -1; + s:= Helios.Sklad; + if (LeftStr(s, 3)='005') then + result:= RightStr(s, 1).ToInteger; + end; + + + + + + procedure TformPrijem.btnNactiObjClick(Sender: TObject); + var lSQL, zavoz, k1, k2: string; + poradiSort, poradiSort2: Single; + begin + if (edtCisloObj.Value>0) then + begin + + if not(vTab.Active) then + vTab.Open; + + lSQL:= 'SELECT TOP(1) CisloOrg FROM ' + tblDZ + ' WHERE RadaDokladu LIKE N''9%0'' AND IDSklad=N' + Helios.Sklad.QuotedString + ' AND PoradoveCislo=' + edtCisloObj.ValueInt.ToString + ' ORDER BY DatPorizeni DESC'; + cOrgDod:= helUtils.getHeliosIntVal(Helios, 0, lSQL); + + lSQL:= 'SELECT p.ID, p.IDZboSklad, p.Nazev1, (p.Mnozstvi-p.MnOdebrane-p.MnozstviStorno) AS Mnozstvi, p.SkupZbo, p.RegCis, p.Poradi, s.K1, s.K2'; + lSQL:= lSQL + ', s.Nazev AS NazevSortim, p.JCbezDaniKC, ISNULL(pe._typzavozu,0) AS TypZavozu, ISNULL(sore.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(sore._priorita, 999)) AS Poradi FROM ' + tblDZ + ' d INNER JOIN ' + tblPZ; + lSQL:= lSQL + ' p ON (p.IDDoklad=d.ID) INNER JOIN ' + tblSS + ' s ON (s.ID=p.IDZboSklad) INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi)' + ' LEFT JOIN ' + tblSortim; + lSQL:= lSQL + ' sor ON (sor.ID=k.IDSortiment) LEFT JOIN ' + tblSortimE + ' sore ON (sore.ID=sor.ID) LEFT JOIN ' + tblPZe + ' pe ON (pe.ID=p.ID) WHERE d.DruhPohybuZbo=6'; + lSQL:= lSQL + ' AND d.Splneno=0 AND d.PoradoveCislo=' + edtCisloObj.ValueInt.ToString; + lSQL:= lSQL + ' AND d.IDSklad=N' + Helios.Sklad.QuotedString + ' AND (p.Mnozstvi-p.MnOdebrane-p.MnozstviStorno)>0 ORDER BY'; + lSQL:= lSQL + ' p.Poradi'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + First; + while not(EOF) do + begin + + k1:= VarToStr(FieldByName('K1').Value); + k2:= VarToStr(FieldByName('K2').Value); + + lSQL:= 'SELECT ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)) FROM ' + tblSortim + ' s LEFT JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE s.K1=N' + k1.QuotedString + ' AND s.K2 IS NULL'; + poradiSort:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + + lSQL:= 'SELECT ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)) FROM ' + tblSortim + ' s LEFT JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE s.K1=N' + k1.QuotedString; + lSQL:= lSQL + ' AND s.K2=N' + k2.QuotedString + ' AND s.K3 IS NULL'; + poradiSort2:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + + vTab.Append; + + vTab.FieldByName('IDPohybZboziObj').AsInteger:= VarToStr(FieldByNameValues('ID')).ToInteger; + vTab.FieldByName('IDZboSklad').AsInteger:= VarToStr(FieldByNameValues('IDZboSklad')).ToInteger; + if (VarIsNull(FieldByNameValues('Poradi'))) then + vTab.FieldByName('Poradi').AsSingle:= 1 + else + vTab.FieldByName('Poradi').AsSingle:= VarToStr(FieldByNameValues('Poradi')).ToSingle; + vTab.FieldByName('JCbezDaniKc').AsSingle:= VarToStr(FieldByNameValues('JCbezDaniKC')).ToSingle; + vTab.FieldByName('SkupZbo').AsString:= VarToStr(FieldByNameValues('SkupZbo')); + vTab.FieldByName('RegCis').AsString:= VarToStr(FieldByNameValues('RegCis')); + vTab.FieldByName('Nazev1').AsString:= VarToStr(FieldByNameValues('Nazev1')); + vTab.FieldByName('Mnozstvi').AsExtended:= VarToStr(FieldByNameValues('Mnozstvi')).ToExtended; + vTab.FieldByName('K1').AsString:= k1; + vTab.FieldByName('K2').AsString:= k2; + vTab.FieldByName('K1K2').AsString:= k1 + k2; + vTab.FieldByName('Sortiment').AsString:= VarToStr(FieldByNameValues('NazevSortim')); + vTab.FieldByName('PoradiSortNazev').AsString:= k1 + k2 + VarToStr(FieldByNameValues('NazevSortim')); + if (VarIsNull(FieldByNameValues('PoradiObj'))) then + vTab.FieldByName('PoradiExt').AsSingle:= 1 + else + vTab.FieldByName('PoradiExt').AsSingle:= VarToStr(FieldByNameValues('PoradiObj')).ToSingle; + zavoz:= VarToStr(FieldByNameValues('TypZavozu')); + if (zavoz='1') then + vTab.FieldByName('TypZavozu').AsString:= 'R'; + if (zavoz='2') then + vTab.FieldByName('TypZavozu').AsString:= 'P'; + + vTab.Post; + Next; + end; + + vTab.SortByFields('PoradiSortNazev,PoradiExt,K1,SkupZbo,RegCis'); + + end; + + end + else + begin + Helios.Error(#1'Zadejte ÄŤĂ­slo objednávky'#1); + if (edtCisloObj.CanFocus) then + edtCisloObj.SetFocus; + end; + end; + + + + + procedure TformPrijem.btnNulujClick(Sender: TObject); + var i: integer; + begin + if (vTab.RecordCount>0) then + begin + i:= vTab.RecNo; + vTab.DisableControls; + vTab.First; + while not(vTab.Eof) do + begin + vTab.Edit; + vTab.FieldByName('Mnozstvi').AsInteger:= 0; + vTab.Post; + vTab.Next; + end; + vTab.RecNo:= i; + vTab.EnableControls; + end; + end; + + + + + procedure TformPrijem.btnOKClick(Sender: TObject); + var oldRec, idHlava, idTiskForm: integer; + lSQL: string; + begin + cisloDokl:= ''; + idTiskForm:= -25; + + if (vTab.RecordCount>0) then + begin + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabPrijemH'') IS NOT NULL' + CRLF + ' DELETE FROM dbo._temp_TabPrijemH WHERE Autor=SUSER_SNAME()' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabPrijemR'') IS NOT NULL' + CRLF + ' IF OBJECT_ID(N''dbo._temp_TabPrijemH'') IS NOT NULL' + CRLF + ' DELETE FROM dbo._temp_TabPrijemR'; + lSQL:= lSQL + ' WHERE IDHlava NOT IN (SELECT ID FROM dbo._temp_TabPrijemH)' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabPrijemH'') IS NOT NULL' + CRLF + ' IF NOT EXISTS(SELECT ID FROM dbo._temp_TabPrijemH)' + CRLF + ' DROP TABLE dbo._temp_TabPrijemH' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabPrijemR'') IS NOT NULL' + CRLF + ' IF NOT EXISTS(SELECT ID FROM dbo._temp_TabPrijemR)' + CRLF + ' DROP TABLE dbo._temp_TabPrijemR'; + Helios.ExecSQL(lSQL); + + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabPrijemH'') IS NOT NULL DROP TABLE #TabPrijemH' + CRLF; + lSQL:= lSQL + 'CREATE TABLE #TabPrijemH (ID INT IDENTITY(1,1) NOT NULL, Sklad NVARCHAR(30), CisloOrg INT NOT NULL, Datum DATETIME, DodFak NVARCHAR(20), Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME())'; + if (jeTest) then + lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabP', 'dbo._temp_TabP'); + Helios.ExecSQL(lSQL); + + lSQL:= 'INSERT #TabPrijemH (CisloOrg, Sklad, Datum, DodFak) SELECT ISNULL(TRY_PARSE(N' + cOrgDod.ToString.Replace(';', '').Replace('-','').Replace(' ', '').QuotedString; + lSQL:= lSQL + ' AS INT), 0), N' + Helios.Sklad.QuotedString + ', CONVERT(datetime, N' + FormatDateTime('d.m.yyyy', dtZavoz.Date).QuotedString + ', 104), N' + edtDodFak.Text.Trim.QuotedString; + lSQL:= lSQL + CRLF + 'SELECT SCOPE_IDENTITY()'; + if (jeTest) then + lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabP', 'dbo._temp_TabP'); + with Helios.OpenSQL(lSQL) do + idHlava:= VarToStr(FieldValues(0)).ToInteger; + + + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabPrijemR'') IS NOT NULL' + CRLF + ' DROP TABLE #TabPrijemR' + CRLF; + lSQL:= lSQL + 'CREATE TABLE #TabPrijemR (ID INT IDENTITY(1,1) NOT NULL, IDHlava INT NOT NULL, IDZboSklad INT NOT NULL, Mnozstvi NUMERIC(12,2) NOT NULL DEFAULT 0.0'; + lSQL:= lSQL + ', JCbezDaniKc NUMERIC(19,6) NOT NULL DEFAULT 0.0, IDPohybZbozi INT NOT NULL, Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME())'; + if (jeTest) then + lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabP', 'dbo._temp_TabP'); + Helios.ExecSQL(lSQL); + + oldRec:= vTab.RecNo; + vTab.DisableControls; + vTab.First; + while not(vTab.Eof) do + begin + if (vTab.FieldByName('Mnozstvi').AsSingle>0) then + begin + lSQL:= 'INSERT #TabPrijemR (IDHlava, IDZboSklad, Mnozstvi, IDPohybZbozi, JCbezDaniKc)' + CRLF + ' SELECT ' + idHlava.ToString + ', ' + vTab.FieldByName('IDZboSklad').AsString + ', '; + lSQL:= lSQL + vTab.FieldByName('Mnozstvi').AsSingle.ToString.Replace(',', '.') + ', ' + vTab.FieldByName('IDPohybZboziObj').AsSingle.ToString; + lSQL:= lSQL + ', ROUND(' + vTab.FieldByName('JCbezDaniKc').AsSingle.ToString.Replace(',', '.') + ', 3)'; + if (jeTest) then + lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabP', 'dbo._temp_TabP'); + Helios.ExecSQL(lSQL); + end; + vTab.Next; + end; + vTab.RecNo:= oldRec; + vTab.EnableControls; + + idDZ:= 0; + if not(jeTest) and (MnozstviKPrijmuSum>0) then + begin + helUtils.waitStart(nil, 'GenerovánĂ­ příjemky...', 0, 0); + lSQL:= 'DECLARE @i INT=0' + CRLF + 'IF OBJECT_ID(N''dbo.ep_HDC_App_Prijemka'', N''P'') IS NOT NULL' + CRLF + ' EXEC dbo.ep_HDC_App_Prijemka @idDZ=@i OUT, @Sklad=N' + Helios.Sklad.QuotedString; + lSQL:= lSQL + CRLF + 'SELECT @i'; + try + with Helios.OpenSQL(lSQL) do + idDZ:= VarToStr(FieldValues(0)).ToInteger; + cisloDokl:= helUtils.getHeliosStrVal(Helios, '', 'SELECT PoradoveCislo FROM ' + tblDZ + ' WHERE ID=' + idDZ.ToString); + idTiskForm:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT TiskovyForm FROM ' + tblDDZ + ' WHERE ID=' + idDZ.ToString); + except on E:Exception do + Helios.Error(#1'Chyba generovánĂ­ příjemky' + #1 + CRLF + E.Message); + end; + helUtils.waitEnd; + end; + end; + + + lSQL:= ''; + if (Sender.ToString='TButton') then + lSQL:= (Sender as TButton).Name; + + if (lSQL='btnOK') then + Close; + if (lSQL='btnTisk') and (idDZ>0) then + begin + Helios.Info(#1'Byla uloĹľena příjemka - ÄŤ. ' + cisloDokl + #1); + Helios.PrintForm2(idTiskForm, 'ID=' + idDZ.ToString); + end; + + end; + + + + + procedure TformPrijem.btnRozbalitClick(Sender: TObject); + begin + polGrd.DataGrouping.ActiveGroupLevels[0].ExpandNodes; + end; + + + + + procedure TformPrijem.btnSbalitClick(Sender: TObject); + begin + polGrd.DataGrouping.ActiveGroupLevels[0].CollapseNodes; + end; + + + + + procedure TformPrijem.btnTiskClick(Sender: TObject); + var lSQL: string; + i: integer; + begin + btnOKClick(Sender); + end; + + + + + procedure TformPrijem.btnZavritClick(Sender: TObject); + begin + if (Helios.YesNo('UkonÄŤit bez uloĹľenĂ­ příjemky ?', false)) then + Close; + end; + + + + + procedure TformPrijem.NactiObjednavku(const idObj: integer); + var lSQL, sort, k1, k2, cZbo, flt: string; + idSort, idx: integer; + mnR, mnP: Single; + extOrdInfo: boolean; + poradiSort, poradiSort2: Single; + begin + + if not(vTab.Active) then + vTab.Open; + + lSQL:= ''; + idx:= cbxSortiment.ItemIndex; + cOrgDod:= -1; + + if (idObj>0) then + begin + btnNactiObj.Enabled:= false; + k1:= sortim[idx].k1; + + lSQL:= 'SELECT o.Nazev, o.UliceSCisly, o.PSC, o.Misto FROM ' + tblDZ + ' d INNER JOIN ' + tblCOrg + ' o ON (o.CisloOrg=d.CisloOrg) WHERE d.ID=' + idObj.ToString; + cbxDodavatel.Items.Clear; + cbxDodavatel.Items.Add(helUtils.getHeliosStrVal(Helios, '', lSQL)); + cbxDodavatel.ItemIndex:= 0; + + lSQL:= 'SELECT o.UliceSCisly, o.PSC, o.Misto, o.ICO, o.DIC, d.CisloOrg, d.Splatnost FROM ' + tblDZ + ' d INNER JOIN ' + tblCOrg + ' o ON (o.CisloOrg=d.CisloOrg) WHERE d.ID=' + idObj.ToString; + with Helios.OpenSQL(lSQL) do + begin + First; + cOrgDod:= VarToStr(FieldByNameValues('CisloOrg')).ToInteger; + lblDodAdresa.Caption:= VarToStr(FieldByNameValues('UliceSCisly')); + lblDodICO.Caption:= 'IÄŚ ' + VarToStr(FieldByNameValues('ICO')); + lblDodDIC.Caption:= 'DIÄŚ ' + VarToStr(FieldByNameValues('DIC')); + lblDodMisto.Caption:= Trim(VarToStr(FieldByNameValues('PSC')) + ' ' + VarToStr(FieldByNameValues('Misto'))); + dtZavoz.DateTime:= StrToDate(VarToStr(FieldByNameValues('Splatnost'))) + end; + + lSQL:= 'SELECT p.*, ISNULL(so.Nazev,N'''') AS NazevSort, ISNULL(so.K1, N'''') AS K1, ISNULL(so.K2, N'''') AS K2, (p.Mnozstvi-p.MnOdebrane-p.MnozstviStorno) AS MnozstviZustatek'; + lSQL:= lSQL + ', ISNULL(pe._typzavozu, 0) AS TypZavozu, p.JCbezDaniKC, ISNULL(soe.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(soe._priorita, 999)) AS PoradiSort, ISNULL(ke._poradivsortimentu, 999) AS PoradiVSort FROM ' + tblPZ + ' p LEFT JOIN ' + tblPZe + ' pe ON (pe.ID=p.ID) INNER JOIN '; + lSQL:= lSQL + tblDZ + ' d ON (d.ID=p.IDDoklad) INNER JOIN ' + tblSS + ' s ON (s.ID=p.IDZboSklad) INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi)'; + lSQL:= lSQL + ' LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID)'; + lSQL:= lSQL + ' LEFT JOIN ' + tblSortim + ' so ON (so.ID=k.IdSortiment) LEFT JOIN ' + tblSortimE + ' soe ON (soe.ID=so.ID)'; + lSQL:= lSQL + ' WHERE d.ID=' + idObj.ToString + ' AND (p.Mnozstvi-p.MnOdebrane-p.MnozstviStorno)>0 AND d.Splneno=0 AND d.DruhPohybuZbo=6'; + lSQL:= lSQL + ' AND d.RadaDokladu=N' + ('9' + branchID.ToString + '0').QuotedString; + lSQL:= lSQL + ' AND ISNULL(pe._typzavozu,0)=' + (1+cbZavoz.ItemIndex).ToString; + end + else + if (edtCisloObj.ValueInt>0) then + begin + k1:= sortim[idx].k1; + + lSQL:= 'SELECT p.*, ISNULL(so.Nazev,N'''') AS NazevSort, ISNULL(so.K1, N'''') AS K1, ISNULL(so.K2, N'''') AS K2, (p.Mnozstvi-p.MnOdebrane-p.MnozstviStorno) AS MnozstviZustatek'; + lSQL:= lSQL + ', ISNULL(pe._typzavozu, 0) AS TypZavozu, p.JCbezDaniKC, ISNULL(soe.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(soe._priorita, 999)) AS PoradiSort, ISNULL(ke._poradivsortimentu, 999) AS PoradiVSort FROM ' + tblPZ + ' p LEFT JOIN ' + tblPZe + ' pe ON (pe.ID=p.ID) INNER JOIN '; + lSQL:= lSQL + tblDZ + ' d ON (d.ID=p.IDDoklad) INNER JOIN ' + tblSS + ' s ON (s.ID=p.IDZboSklad) INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi)'; + lSQL:= lSQL + ' LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID)'; + lSQL:= lSQL + ' LEFT JOIN ' + tblSortim + ' so ON (so.ID=k.IdSortiment) LEFT JOIN ' + tblSortimE + ' soe ON (soe.ID=so.ID)'; + lSQL:= lSQL + ' WHERE d.RadaDokladu=N' + ('9' + branchID.ToString + '0').QuotedString; + lSQL:= lSQL + ' AND (p.Mnozstvi-p.MnOdebrane-p.MnozstviStorno)>0 AND d.Splneno=0 AND d.DruhPohybuZbo=6 AND d.PoradoveCislo=' + edtCisloObj.ValueInt.ToString; + lSQL:= lSQL + ' AND d.IDSklad=N' + Helios.Sklad.QuotedString; + lSQL:= lSQL + ' AND ISNULL(pe._typzavozu,0)=' + (1+cbZavoz.ItemIndex).ToString; + end; + + if (lSQL<>'') then + begin + vTab.EmptyTable; + vTab.DisableControls; + + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + First; + while not(EOF) do + begin + k1:= VarToStr(FieldByNameValues('K1')); + k2:= VarToStr(FieldByNameValues('K2')); + + lSQL:= 'SELECT ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)) FROM ' + tblSortim + ' s LEFT JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE s.K1=N' + k1.QuotedString + ' AND s.K2 IS NULL'; + poradiSort:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + + lSQL:= 'SELECT ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)) FROM ' + tblSortim + ' s LEFT JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE s.K1=N' + k1.QuotedString; + lSQL:= lSQL + ' AND s.K2=N' + k2.QuotedString + ' AND s.K3 IS NULL'; + poradiSort2:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + + vTab.Append; + vTab.FieldByName('Poradi').AsString:= VarToStr(FieldByNameValues('Poradi')); + vTab.FieldByName('PoradiSort').AsSingle:= VarToStr(FieldByNameValues('PoradiVSort')).ToSingle; + vTab.FieldByName('JCbezDaniKc').AsSingle:= VarToStr(FieldByNameValues('JCbezDaniKC')).ToSingle; + if (VarIsNull(FieldByNameValues('Poradi'))) then + vTab.FieldByName('PoradiExt').AsExtended:= 1 + else + vTab.FieldByName('PoradiExt').AsExtended:= VarToStr(FieldByNameValues('Poradi')).ToExtended; + vTab.FieldByName('IDPohybZboziObj').AsString:= VarToStr(FieldByNameValues('ID')); + vTab.FieldByName('IDZboSklad').AsString:= VarToStr(FieldByNameValues('IDZboSklad')); + vTab.FieldByName('Sortiment').AsString:= VarToStr(FieldByNameValues('NazevSort')); + vTab.FieldByName('K1').AsString:= k1; + vTab.FieldByName('K2').AsString:= k2; + vTab.FieldByName('K1K2').AsString:= k1 + k2; + vTab.FieldByName('PoradiSortNazev').AsString:= ((poradiSort*1000.0)+poradiSort2).ToString.Replace(',', '.') + ' ' + VarToStr(FieldByNameValues('NazevSort')); + vTab.FieldByName('TypZavozu').AsString:= ''; + if (VarToStr(FieldByNameValues('TypZavozu'))='1') then + vTab.FieldByName('TypZavozu').AsString:= 'R'; + if (VarToStr(FieldByNameValues('TypZavozu'))='2') then + vTab.FieldByName('TypZavozu').AsString:= 'P'; + vTab.FieldByName('SkupZbo').AsString:= VarToStr(FieldByNameValues('SkupZbo')); + vTab.FieldByName('RegCis').AsString:= VarToStr(FieldByNameValues('RegCis')); + vTab.FieldByName('Nazev1').AsString:= VarToStr(FieldByNameValues('Nazev1')); + vTab.FieldByName('Mnozstvi').AsString:= VarToStr(FieldByNameValues('MnozstviZustatek')); + vTab.Post; + Next; + end; + end; + + vTab.EnableControls; + end; + + helUtils.waitEnd; + + polGrd.Options:= polGrd.Options + [dgEditing]; + if not(vTab.Active) then + polGrd.Options:= polGrd.Options - [dgEditing] + else + if (vTab.RecordCount=0) then + polGrd.Options:= polGrd.Options - [dgEditing]; + + vTab.SortByFields('PoradiSortNazev,PoradiSort,SkupZbo,RegCis'); + + if (idObj=0) and (k1='001') then + vTab.Locate('K1;K2', VarArrayOf(['001','']), []) + else + vTab.First; + + end; + + + + + procedure TformPrijem.polGrdDataGroupGetRowText(Sender: TCustomDBGridEh; GroupDataTreeNode: TGroupDataTreeNodeEh; var GroupRowText: string); + var s, s2: string; + i: integer; + errReverse: boolean; + begin + errReverse:= false; + s2:= '(123)'; + s2:= ReverseString(s2); + if (s2.EndsWith('(')) then + errReverse:= true; + + s:= GroupRowText.Replace('PoradiSortNazev: ', ''); + if (s.IndexOf(' ')>-1) then + s:= MidStr(s, s.IndexOf(' ')+1, s.Length).Trim; + if (s.EndsWith(')')) then + begin + s:= ReverseString(s); + if (errReverse) then + i:= s.IndexOf('(') + else + i:= s.IndexOf(')'); + if (i>-1) then + s:= MidStr(s, i+2, s.Length); + s:= ReverseString(s).Trim; + end; + s2:= helUtils.getHeliosStrVal(Helios, '', 'SELECT TOP(1) KatAllTecky FROM ' + tblSortim + ' WHERE Nazev=N' + s.QuotedString); + GroupRowText:= IfThen(s2<>'', s2 + ' ', '') + s; + end; + + + + + procedure TformPrijem.polGrdDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); + begin +{ + if (Column.FieldName='Mnozstvi') then + if (vTab.FieldByName('TypZavozu').AsString='P') then + polGrd.Canvas.Brush.Color:= $00F7EE8A; + if (Column.FieldName='Mnozstvi') then + polGrd.DefaultDrawColumnCell(Rect, DataCol, Column, State); +} + end; + + + + + procedure TformPrijem.polGrdKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); + var i, i2: integer; + lSQL: string; + begin + if (Key=Ord('p')) or (Key=Ord('P')) then + begin + i:= polGrd.DataSource.DataSet.FieldByName('IDKZ').AsInteger; + if (i>0) then + begin + lSQL:= 'TabPohybyZbozi.IDZboSklad=(SELECT ID FROM ' + tblSS + ' WHERE IDKmenZbozi=' + i.ToString + ' AND IDSklad=N' + Helios.Sklad.QuotedString + ')'; + Helios.OpenBrowse(66, lSQL); + end; + end; + + if (Key=Ord('o')) or (Key=Ord('O')) then + begin + i:= polGrd.DataSource.DataSet.FieldByName('IDKZ').AsInteger; + i2:= 0; + with Helios.OpenSQL('SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_HDC_StareProdeje_Pol''') do + if (RecordCount=1) then + i2:= VarToStr(FieldValues(0)).ToInteger; + + if (i2>0) then + begin + lSQL:= 'hvw_HDC_StareProdeje_Pol.IDSklad=N' + Helios.Sklad.QuotedString + ' AND hvw_HDC_StareProdeje_Pol.SkupZbo=N'; + lSQL:= lSQL + polGrd.DataSource.DataSet.FieldByName('SkupZbo').AsString.QuotedString + ' AND hvw_HDC_StareProdeje_Pol.RegCis=N'; + lSQL:= lSQL + polGrd.DataSource.DataSet.FieldByName('RegCis').AsString.QuotedString; + lSQL:= lSQL + ' AND hvw_HDC_StareProdeje_Pol.DruhPohybuZbo IN (2,4)'; + Helios.OpenBrowse(i2, lSQL); + end; + end; + + + end; + + + + + procedure TformPrijem.vTabFilterRecord(DataSet: TDataSet; var Accept: Boolean); + var t: string; + begin + if (vTab.RecordCount>0) then + begin + t:= vTab.FieldByName('TypZavozu').AsString; + case cbZavoz.ItemIndex of + 0: Accept:= (t='R'); + 1: Accept:= (t='P'); + end; + end; + end; + + + + + procedure TformPrijem.vTabMnozstviValidate(Sender: TField); + var canCont: Boolean; + mv, mm: Single; + begin + canCont:= true; + mv:= TField(Sender).AsFloat; + if (mv<0) then + canCont:=false; + + if not(canCont) then + TField(Sender).DataSet.Cancel; + end; + + + + + procedure TformPrijem.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 (mv0) then + begin + SetLength(cOrgs, RecordCount); + First; + idx:= 0; + while not(EOF) do + begin + cbxDodavatel.Items.Add(VarToStr(FieldValues(1))); + cOrgs[idx]:= VarToStr(FieldValues(0)).ToInteger; + Inc(idx); + Next; + end; + end; + + cbxDodavatel.ItemIndex:= helUtils.IfThenInt(cbxDodavatel.Items.Count=1, 0, -1); + polGrd.Enabled:= (cbxDodavatel.ItemIndex>-1); + +{ + polGrd.Options:= polGrd.Options + [dgEditing]; + if not(vTab.Active) then + polGrd.Options:= polGrd.Options - [dgEditing] + else + if (vTab.RecordCount=0) then + polGrd.Options:= polGrd.Options - [dgEditing]; +} + end; + + + + + procedure TformPrijem.cbZavozChange(Sender: TObject); + begin + NactiObjednavku(idDZ); + end; + + + + + procedure TformPrijem.edtCisloObjExit(Sender: TObject); + begin + if (edtCisloObj.Value>0) then + NactiObjednavku(0); + end; + + + + + procedure TformPrijem.edtNumEditorClick(Sender: TObject); + begin + edtNumEditor.Visible:= true; + end; + + + + + procedure TformPrijem.FormClose(Sender: TObject; var Action: TCloseAction); + begin + if (vTab.Active) then + vTab.Close; + if (tabExtOrdInfo<>'') and not(jeTest) then + Helios.ExecSQL('IF OBJECT_ID(N' + tabExtOrdInfo.QuotedString + ', N''U'') IS NOT NULL DROP TABLE ' + tabExtOrdInfo); + Action:= caFree; + end; + + + + + + procedure TformPrijem.FormShow(Sender: TObject); + var rHeight, i: integer; + lSQL: string; + rct: TRect; + begin + compName:= GetEnvironmentVariable('COMPUTERNAME'); + UseLatestCommonDialogs:= true; + + self.SetBounds(Screen.WorkAreaRect.Left, 0, Screen.WorkAreaRect.Width, Screen.WorkAreaRect.Height); + +// rct.Create(0, 0, 0, 0); +// rct:= BoundsRect; + SetBounds( Left - ClientOrigin.X, + Top - ClientOrigin.Y, + GetDeviceCaps( Canvas.handle, HORZRES ) + (Width - ClientWidth), + GetDeviceCaps( Canvas.handle, VERTRES ) + (Height - ClientHeight )); +// BoundsRect:= rct; + + + edtNumEditor.Height:= polGrd.RowHeight+2; + dtZavoz.DateTime:= IncDay(Now,1); + + +{ + grd.RowCount:= 2; + grd.FixedRows:= 1; + + rHeight:= grd.Canvas.TextHeight('ĂĂ˝'); + grd.DefaultRowHeight:= grd.Font.Size + 18; + +// grd.RowHeights[1]:= grd.Canvas.TextHeight('Akce') + 4; + grd.Cells[0, 0]:= 'Akce'; + grd.Cells[1, 0]:= 'ÄŚĂ­slo'; + grd.Cells[2, 0]:= 'Název'; + grd.Cells[3, 0]:= 'DoporuÄŤeno'; + grd.Cells[4, 0]:= 'Ráno'; + grd.Cells[5, 0]:= 'Poledne'; +} + + branchID:= ZjistiBranchID; + cOrgDod:= -1; + + lblDodAdresa.Caption:= ''; + lblDodMisto.Caption:= ''; + lblDodICO.Caption:= ''; + lblDodDIC.Caption:= ''; + + cbxSortiment.Items.Clear; + lSQL:= 'SELECT DISTINCT(s.K1) FROM ' + tblSortim + ' s INNER JOIN ' + tblSortimE + ' e ON (e.ID=s.ID) WHERE e._Objednavky_Zobrazit=1 GROUP BY s.K1'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + SetLength(sortim, RecordCount); + i:= 0; + First; + while not(EOF) do + begin + cbxSortiment.Items.Add(helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblSortim + ' WHERE K2 IS NULL AND K1=N' + VarToStr(FieldValues(0)).QuotedString)); + + sortim[i].k1:= VarToStr(FieldValues(0)); + sortim[i].nazev:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblSortim + ' WHERE K2 IS NULL AND K1=N' + VarToStr(FieldValues(0)).QuotedString); + + sortim[i].poleDodav:= ''; + sortim[i].typSort:= 255; + + if (sortim[i].k1='001') then + begin + sortim[i].typSort:= 0; + sortim[i].poleDodav:= '_dodpek'; + end; + + if (sortim[i].k1='003') then + begin + sortim[i].typSort:= 1; + sortim[i].poleDodav:= '_dodlah'; + end; + + if (sortim[i].k1='004') then + begin + sortim[i].typSort:= 2; + sortim[i].poleDodav:= '_dodvelko'; + end; + + Inc(i); + Next; + end; + cbxSortiment.ItemIndex:= 0; + end; + + + edtCisloObj.Enabled:= (idDZ=0); + cbxSortiment.Enabled:= (idDZ=0); + cbxDodavatel.Enabled:= (idDZ=0); + + bidHDCObj:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_DokladyZbozi'''); + bidHDCObj:= 22; + + btnNactiObj.Visible:= not(Helios.BrowseID=bidHDCObj); + + if (Helios.BrowseID=bidHDCObj) then + begin + edtCisloObj.Value:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT PoradoveCislo FROM ' + tblDZ + ' WHERE ID=' + idDZ.ToString); + NactiObjednavku(idDZ); + end + else + cbxSortimentChange(Sender); + + + btnNuluj.Visible:= (Helios.LoginName='hdc') or (compName='NTB-T'); + + end; + + + + + end. diff --git a/frmPrijem1024.dfm b/frmPrijem1024.dfm new file mode 100644 index 0000000..b8eaec0 --- /dev/null +++ b/frmPrijem1024.dfm @@ -0,0 +1,677 @@ +object formPrijem1024: TformPrijem1024 + Left = 0 + Top = 0 + Align = alLeft + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = ' P'#345#237'jem objedn'#225'vky' + ClientHeight = 729 + ClientWidth = 1008 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + Position = poOwnerFormCenter + OnClose = FormClose + OnShow = FormShow + PixelsPerInch = 96 + DesignSize = ( + 1008 + 729) + TextHeight = 23 + object Label1: TLabel + Left = 42 + Top = 69 + Width = 116 + Height = 23 + Caption = 'Datum p'#345#237'jmu' + end + object Label3: TLabel + Left = 24 + Top = 18 + Width = 144 + Height = 23 + Caption = 'Druh sortimentu:' + end + object Label4: TLabel + Left = 16 + Top = 125 + Width = 145 + Height = 23 + Caption = #268#237'slo objedn'#225'vky:' + end + object Label5: TLabel + Left = 15 + Top = 180 + Width = 55 + Height = 23 + Caption = 'Z'#225'voz:' + end + object Label6: TLabel + Left = 270 + Top = 180 + Width = 78 + Height = 23 + Alignment = taRightJustify + Caption = 'Dod.fakt:' + end + object gbDodavatel: TGroupBox + Left = 528 + Top = 15 + Width = 468 + Height = 169 + Caption = ' Dodavatel ' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 5 + object Label2: TLabel + Left = 28 + Top = 72 + Width = 71 + Height = 25 + Caption = 'Adresa:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblDodAdresa: TLabel + Left = 130 + Top = 72 + Width = 445 + Height = 29 + AutoSize = False + end + object lblDodMisto: TLabel + Left = 130 + Top = 110 + Width = 405 + Height = 29 + AutoSize = False + end + object lblDodICO: TLabel + Left = 130 + Top = 142 + Width = 7 + Height = 25 + end + object lblDodDIC: TLabel + Left = 360 + Top = 142 + Width = 7 + Height = 25 + end + object cbxDodavatel: TComboBox + Left = 28 + Top = 33 + Width = 435 + Height = 33 + Style = csDropDownList + TabOrder = 0 + end + end + object gbPolozky: TGroupBox + Left = 5 + Top = 276 + Width = 788 + Height = 425 + Anchors = [akLeft, akTop, akRight, akBottom] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 6 + object polGrd: TDBGridEh + Left = 2 + Top = 27 + Width = 784 + Height = 396 + Align = alClient + DataGrouping.Active = True + DataGrouping.DefaultStateExpanded = True + DataGrouping.GroupLevels = < + item + ColumnName = 'Column_12_PoradiSortNazev' + end> + DataSource = ds + DynProps = <> + GridLineParams.VertEmptySpaceStyle = dessNonEh + IndicatorOptions = [] + EmptyDataInfo.Active = True + EmptyDataInfo.Text = #381#225'dn'#233' polo'#382'ky nenalezeny' + Options = [dgTitles, dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit] + OptionsEh = [dghFixed3D, dghData3D, dghHighlightFocus, dghClearSelection, dghRowHighlight] + SelectionDrawParams.SelectionStyle = gsdsClassicEh + STFilter.Local = True + TabOrder = 0 + TitleParams.Color = clMoneyGreen + TitleParams.FillStyle = cfstSolidEh + TitleParams.MultiTitle = True + TitleParams.SecondColor = clMoneyGreen + OnDataGroupGetRowText = polGrdDataGroupGetRowText + OnDrawColumnCell = polGrdDrawColumnCell + OnKeyUp = polGrdKeyUp + Columns = < + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'PoradiSort' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'K1' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'K2' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Sortiment' + Footers = <> + Visible = False + end + item + Alignment = taCenter + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'RegCis' + Footers = <> + ReadOnly = True + TextEditing = False + Width = 115 + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Nazev1' + Footers = <> + ReadOnly = True + TextEditing = False + Width = 397 + end + item + Alignment = taCenter + CellButtons = <> + DisplayFormat = '##0.##' + DynProps = <> + EditButtons = <> + FieldName = 'Mnozstvi' + Footers = <> + Width = 94 + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'IDZboSklad' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'Poradi' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'SkupZbo' + Footers = <> + Visible = False + WordWrap = True + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'IDPohybZboziObj' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'PoradiExt' + Footers = <> + Visible = False + end + item + CellButtons = <> + DynProps = <> + EditButtons = <> + FieldName = 'PoradiSortNazev' + Footers = <> + TextEditing = False + Visible = False + end + item + Alignment = taCenter + CellButtons = <> + DisplayFormat = '##0.##' + DynProps = <> + EditButtons = <> + FieldName = 'JCbezDaniKc' + Footers = <> + Title.Caption = 'JC bez DPH' + Width = 120 + end> + object RowDetailData: TRowDetailPanelControlEh + end + end + end + object btnOK: TButton + Left = 809 + Top = 228 + Width = 191 + Height = 69 + Anchors = [akTop, akRight] + Caption = 'Ulo'#382'it p'#345#237'jemku' + TabOrder = 0 + OnClick = btnOKClick + end + object dtZavoz: TDateTimePicker + Left = 172 + Top = 66 + Width = 149 + Height = 31 + Date = 44268.000000000000000000 + Time = 0.431178437502239800 + TabOrder = 1 + end + object cbxSortiment: TComboBox + Left = 172 + Top = 15 + Width = 306 + Height = 31 + Style = csDropDownList + TabOrder = 2 + OnChange = cbxSortimentChange + end + object edtCisloObj: TNumberBox + Left = 172 + Top = 122 + Width = 97 + Height = 31 + Alignment = taCenter + Enabled = False + TabOrder = 3 + OnExit = edtCisloObjExit + end + object btnTisk: TButton + Left = 809 + Top = 314 + Width = 188 + Height = 49 + Anchors = [akTop, akRight] + Caption = 'Vytisknout' + TabOrder = 7 + Visible = False + OnClick = btnTiskClick + end + object btnRozbalit: TButton + Left = 809 + Top = 453 + Width = 188 + Height = 46 + Anchors = [akRight, akBottom] + Caption = 'Rozbalit v'#353'e' + TabOrder = 8 + OnClick = btnRozbalitClick + end + object btnSbalit: TButton + Left = 809 + Top = 521 + Width = 188 + Height = 45 + Anchors = [akRight, akBottom] + Caption = 'Sbalit v'#353'e' + TabOrder = 9 + OnClick = btnSbalitClick + end + object btnZavrit: TButton + Left = 809 + Top = 629 + Width = 188 + Height = 69 + Anchors = [akRight, akBottom] + Caption = 'Zav'#345#237't' + TabOrder = 10 + OnClick = btnZavritClick + end + object edtNumEditor: TNxEdit6 + Left = 882 + Top = 190 + Width = 121 + Height = 41 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -27 + Font.Name = 'Tahoma' + Font.Style = [] + MaxLength = 3 + NumbersOnly = True + ParentFont = False + TabOrder = 11 + Visible = False + UserDefinedColorPalette.GeometryHoverColor = clBlack + OnClick = edtNumEditorClick + end + object Panel1: TPanel + Left = 5 + Top = 242 + Width = 518 + Height = 35 + Caption = 'Zbo'#382#237 + Color = 14471860 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBackground = False + ParentFont = False + TabOrder = 12 + end + object Panel2: TPanel + Left = 522 + Top = 242 + Width = 219 + Height = 35 + Caption = 'P'#345#237'jem' + Color = 14471860 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBackground = False + ParentFont = False + TabOrder = 13 + end + object btnNactiObj: TButton + Left = 282 + Top = 120 + Width = 117 + Height = 37 + Caption = 'Na'#269'ti data' + TabOrder = 14 + OnClick = btnNactiObjClick + end + object cbZavoz: TComboBox + Left = 84 + Top = 177 + Width = 163 + Height = 31 + Style = csDropDownList + ExtendedUI = True + ItemIndex = 0 + TabOrder = 4 + Text = ' R'#225'no' + OnChange = cbZavozChange + Items.Strings = ( + ' R'#225'no' + ' Poledne') + end + object btnNuluj: TButton + Left = 570 + Top = 205 + Width = 106 + Height = 37 + Caption = 'Vynulovat' + TabOrder = 15 + Visible = False + OnClick = btnNulujClick + end + object edtDodFak: TEdit + Left = 354 + Top = 177 + Width = 162 + Height = 31 + MaxLength = 20 + TabOrder = 16 + end + object vTab: TMemTableEh + Params = <> + Options = [mtoPersistentStructEh] + OnFilterRecord = vTabFilterRecord + Left = 3 + Top = 2 + object vTabPoradiSort: TSingleField + FieldName = 'PoradiSort' + Visible = False + end + object vTabPoradi: TSmallintField + DisplayLabel = 'Po'#345'ad'#237 + FieldName = 'Poradi' + DisplayFormat = '#0' + end + object vTabRegCis: TStringField + DisplayLabel = #268#237'slo' + FieldName = 'RegCis' + Required = True + Size = 30 + end + object vTabNazev1: TStringField + DisplayLabel = 'N'#225'zev' + FieldName = 'Nazev1' + Size = 100 + end + object vTabMnozstvi: TFloatField + DisplayLabel = 'Mno'#382'stv'#237 + FieldName = 'Mnozstvi' + OnValidate = vTabMnozstviValidate + DisplayFormat = '##0.##' + end + object vTabSkupZbo: TStringField + FieldName = 'SkupZbo' + Visible = False + Size = 3 + end + object vTabIDZboSklad: TIntegerField + FieldName = 'IDZboSklad' + Required = True + Visible = False + end + object vTabIDPohybZboziObj: TIntegerField + FieldName = 'IDPohybZboziObj' + Required = True + Visible = False + end + object vTabSortiment: TStringField + FieldName = 'Sortiment' + Size = 100 + end + object vTabK2: TStringField + FieldName = 'K2' + Size = 10 + end + object vTabK1: TStringField + FieldName = 'K1' + Size = 10 + end + object vTabTypZavozu: TStringField + FieldName = 'TypZavozu' + Visible = False + Size = 1 + end + object vTabPoradiExt: TSingleField + FieldName = 'PoradiExt' + Visible = False + end + object vTabK1K2: TStringField + FieldName = 'K1K2' + Visible = False + Size = 15 + end + object vTabPoradiSortNazev: TStringField + FieldName = 'PoradiSortNazev' + Size = 100 + end + object vTabJCbezDaniKc: TSingleField + FieldName = 'JCbezDaniKc' + end + object MemTableData: TMemTableDataEh + object DataStruct: TMTDataStructEh + object JCbezDaniKc: TMTNumericDataFieldEh + FieldName = 'JCbezDaniKc' + NumericDataType = fdtSingleEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object PoradiSortNazev: TMTStringDataFieldEh + FieldName = 'PoradiSortNazev' + StringDataType = fdtStringEh + DisplayWidth = 100 + Size = 100 + end + object PoradiExt: TMTNumericDataFieldEh + FieldName = 'PoradiExt' + NumericDataType = fdtSingleEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object PoradiSort: TMTNumericDataFieldEh + FieldName = 'PoradiSort' + NumericDataType = fdtSingleEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object Poradi: TMTNumericDataFieldEh + FieldName = 'Poradi' + NumericDataType = fdtSmallintEh + AutoIncrement = False + DisplayWidth = 20 + currency = False + Precision = 15 + end + object TypZavozu: TMTStringDataFieldEh + FieldName = 'TypZavozu' + StringDataType = fdtStringEh + DisplayWidth = 1 + Size = 1 + end + object Sortiment: TMTStringDataFieldEh + FieldName = 'Sortiment' + StringDataType = fdtStringEh + DisplayWidth = 100 + Size = 100 + end + object K2: TMTStringDataFieldEh + FieldName = 'K2' + StringDataType = fdtStringEh + DisplayWidth = 10 + Visible = False + Size = 10 + end + object K1: TMTStringDataFieldEh + FieldName = 'K1' + StringDataType = fdtStringEh + DisplayWidth = 10 + Visible = False + Size = 10 + end + object Nazev1: TMTStringDataFieldEh + FieldName = 'Nazev1' + StringDataType = fdtStringEh + DisplayWidth = 100 + Size = 100 + end + object RegCis: TMTStringDataFieldEh + FieldName = 'RegCis' + StringDataType = fdtStringEh + DisplayWidth = 30 + Required = True + Size = 30 + end + object SkupZbo: TMTStringDataFieldEh + FieldName = 'SkupZbo' + StringDataType = fdtStringEh + DisplayWidth = 3 + Visible = False + Size = 3 + end + object IDZboSklad: TMTNumericDataFieldEh + FieldName = 'IDZboSklad' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + Required = True + Visible = False + currency = False + Precision = 15 + end + object Mnozstvi: TMTNumericDataFieldEh + FieldName = 'Mnozstvi' + NumericDataType = fdtFloatEh + AutoIncrement = False + DisplayLabel = '0' + DisplayWidth = 20 + DisplayFormat = '##0.##' + currency = False + Precision = 15 + end + object K1K2: TMTStringDataFieldEh + FieldName = 'K1K2' + StringDataType = fdtStringEh + DisplayWidth = 20 + Visible = False + end + object IDPohybZboziObj: TMTNumericDataFieldEh + FieldName = 'IDPohybZboziObj' + NumericDataType = fdtIntegerEh + AutoIncrement = False + DisplayWidth = 20 + Required = True + Visible = False + currency = False + Precision = 15 + end + end + object RecordsList: TRecordsListEh + end + end + end + object ds: TDataSource + DataSet = vTab + Left = 4 + Top = 57 + end +end diff --git a/frmPrijem1024.pas b/frmPrijem1024.pas new file mode 100644 index 0000000..f7a7da5 --- /dev/null +++ b/frmPrijem1024.pas @@ -0,0 +1,1001 @@ +unit frmPrijem1024; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Types, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, System.ImageList, Vcl.ImgList, Vcl.StdCtrls, Vcl.Buttons, + Vcl.ComCtrls, ddPlugin_TLB, TBPackageU, Vcl.WinXPickers, Vcl.Mask, RxToolEdit, Vcl.NumberBox, Vcl.Grids, VirtualTrees, + NxGridView6, NxColumns6, NxControls6, NxCustomGrid6, NxVirtualGrid6, NxGrid6, NxEdit6, MemTableDataEh, Data.DB, + DBGridEhGrouping, ToolCtrlsEh, DBGridEhToolCtrls, DynVarsEh, EhLibVCL, GridsEh, EhLibMTE, DBAxisGridsEh, DBGridEh, MemTableEh, + System.MaskUtils; + +type +{ + TWideStringHelper = record helper for WideString + function QuotedString: string; overload; + end; + + TMaskedTextHelper = record helper for TMaskedText + function QuotedString: string; overload; + function Replace(oldStr, newStr: string): string; overload; + end; +} + + TSortiment = record + nazev, k1, poleDodav: string; + dodavatel: integer; + typSort: byte; + end; + + TformPrijem1024 = class(TForm) + gbDodavatel: TGroupBox; + gbPolozky: TGroupBox; + Label1: TLabel; + dtZavoz: TDateTimePicker; + btnOK: TButton; + Label2: TLabel; + lblDodAdresa: TLabel; + lblDodMisto: TLabel; + cbxSortiment: TComboBox; + Label3: TLabel; + edtCisloObj: TNumberBox; + Label4: TLabel; + btnTisk: TButton; + btnRozbalit: TButton; + btnSbalit: TButton; + btnZavrit: TButton; + Panel1: TPanel; + Panel2: TPanel; + edtNumEditor: TNxEdit6; + vTab: TMemTableEh; + ds: TDataSource; + polGrd: TDBGridEh; + cbxDodavatel: TComboBox; + lblDodICO: TLabel; + lblDodDIC: TLabel; + vTabPoradiSort: TSingleField; + vTabPoradi: TSmallintField; + vTabPoradiSortNazev: TStringField; + vTabNazev1: TStringField; + vTabRegCis: TStringField; + vTabSkupZbo: TStringField; + vTabIDZboSklad: TIntegerField; + vTabMnozstvi: TFloatField; + vTabIDPohybZboziObj: TIntegerField; + vTabSortiment: TStringField; + vTabK2: TStringField; + vTabK1: TStringField; + btnNactiObj: TButton; + vTabTypZavozu: TStringField; + cbZavoz: TComboBox; + Label5: TLabel; + vTabPoradiExt: TSingleField; + vTabK1K2: TStringField; + btnNuluj: TButton; + vTabJCbezDaniKc: TSingleField; + edtDodFak: TEdit; + Label6: TLabel; + procedure FormShow(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure cbxSortimentChange(Sender: TObject); + procedure edtNumEditorClick(Sender: TObject); + procedure btnRozbalitClick(Sender: TObject); + procedure btnSbalitClick(Sender: TObject); + procedure btnOKClick(Sender: TObject); + procedure polGrdKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure btnZavritClick(Sender: TObject); + procedure btnTiskClick(Sender: TObject); + procedure vTabRanoValidate(Sender: TField); + procedure vTabPoledneValidate(Sender: TField); + procedure edtCisloObjExit(Sender: TObject); + procedure btnNactiObjClick(Sender: TObject); + procedure vTabMnozstviValidate(Sender: TField); + procedure polGrdDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); + procedure vTabFilterRecord(DataSet: TDataSet; var Accept: Boolean); + procedure cbZavozChange(Sender: TObject); + procedure polGrdDataGroupGetRowText(Sender: TCustomDBGridEh; GroupDataTreeNode: TGroupDataTreeNodeEh; var GroupRowText: string); + procedure btnNulujClick(Sender: TObject); + private + cOrg: integer; + function ZjistiBranchID: Integer; + function MnozstviKPrijmuSum: Single; + procedure NactiObjednavku(const idObj: integer); safecall; + procedure WMGetMinMaxInfo(Var msg: TWMGetMinMaxInfo); message WM_GETMINMAXINFO; + public + Helios: IHelios; + jeTest: boolean; + idDZ: integer; + end; + +var + formPrijem1024: TformPrijem1024; + sortim: TArray; + cOrgs: TArray; + cOrgDod, idDZ: integer; + branchID: integer; + compName, tabExtOrdInfo, cisloDokl, rDokl: string; + bidHDCObj: integer; + +implementation +uses System.StrUtils, System.DateUtils, helUtils; + +{$R *.dfm} + + +{$IF CompilerVersion>=34} // Sydney a vys +{$ENDIF} + +{ + function TWideStringHelper.QuotedString: string; + begin + Result:= string(Self).QuotedString; + end; + + function TMaskedTextHelper.QuotedString: string; + var s: string; + begin + s:= Self; + Result:= s.QuotedString; + end; + + function TmaskedTextHelper.Replace(oldStr: string; newStr: string): string; + var s: string; + begin + s:= Self; + Result:= s.Replace(oldStr, newStr); + end; + } + + + + + procedure TformPrijem1024.WMGetMinMaxInfo(Var msg: TWMGetMinMaxInfo); + begin + inherited; + with msg.MinMaxInfo^.ptMaxTrackSize Do + begin + X:= GetDeviceCaps( Canvas.handle, HORZRES ) + (Width - ClientWidth); + Y:= GetDeviceCaps( Canvas.handle, VERTRES ) + (Height - ClientHeight); + end; + end; + + + + + function TformPrijem1024.MnozstviKPrijmuSum: Single; + var i: integer; + begin + result:= 0; + if (vTab.RecordCount>0) then + begin + i:= vTab.RecNo; + vTab.DisableControls; + vTab.First; + while not(vTab.Eof) do + begin + result:= result + vTab.FieldByName('Mnozstvi').AsSingle; + vTab.Next; + end; + vTab.RecNo:= i; + vTab.EnableControls; + end; + end; + + + + + function TformPrijem1024.ZjistiBranchID: Integer; + var s: string; + begin + result:= -1; + s:= Helios.Sklad; + if (LeftStr(s, 3)='005') then + result:= RightStr(s, 1).ToInteger; + end; + + + + + + procedure TformPrijem1024.btnNactiObjClick(Sender: TObject); + var lSQL, zavoz, k1, k2: string; + poradiSort, poradiSort2: Single; + begin + if (edtCisloObj.Value>0) then + begin + + if not(vTab.Active) then + vTab.Open; + + lSQL:= 'SELECT TOP(1) CisloOrg FROM ' + tblDZ + ' WHERE RadaDokladu LIKE N''9%0'' AND IDSklad=N' + Helios.Sklad.QuotedString + ' AND PoradoveCislo=' + edtCisloObj.ValueInt.ToString + ' ORDER BY DatPorizeni DESC'; + cOrgDod:= helUtils.getHeliosIntVal(Helios, 0, lSQL); + + + lSQL:= 'SELECT p.ID, p.IDZboSklad, p.Nazev1, (p.Mnozstvi-p.MnOdebrane-p.MnozstviStorno) AS Mnozstvi, p.SkupZbo, p.RegCis, p.Poradi, s.K1, s.K2, p.JCbezDaniKC'; + lSQL:= lSQL + ', s.Nazev AS NazevSortim, ISNULL(pe._typzavozu,0) AS TypZavozu, ISNULL(sore.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(sore._priorita, 999)) AS Poradi FROM ' + tblDZ + ' d INNER JOIN ' + tblPZ; + lSQL:= lSQL + ' p ON (p.IDDoklad=d.ID) INNER JOIN ' + tblSS + ' s ON (s.ID=p.IDZboSklad) INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi)' + ' LEFT JOIN ' + tblSortim; + lSQL:= lSQL + ' sor ON (sor.ID=k.IDSortiment) LEFT JOIN ' + tblSortimE + ' sore ON (sore.ID=sor.ID) LEFT JOIN ' + tblPZe + ' pe ON (pe.ID=p.ID) WHERE d.DruhPohybuZbo=6'; + lSQL:= lSQL + ' AND d.Splneno=0 AND d.PoradoveCislo=' + edtCisloObj.ValueInt.ToString; + lSQL:= lSQL + ' AND d.IDSklad=N' + Helios.Sklad.QuotedString + ' AND (p.Mnozstvi-p.MnOdebrane-p.MnozstviStorno)>0 ORDER BY'; + lSQL:= lSQL + ' p.Poradi'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + First; + while not(EOF) do + begin + + k1:= VarToStr(FieldByName('K1').Value); + k2:= VarToStr(FieldByName('K2').Value); + + lSQL:= 'SELECT ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)) FROM ' + tblSortim + ' s LEFT JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE s.K1=N' + k1.QuotedString + ' AND s.K2 IS NULL'; + poradiSort:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + + lSQL:= 'SELECT ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)) FROM ' + tblSortim + ' s LEFT JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE s.K1=N' + k1.QuotedString; + lSQL:= lSQL + ' AND s.K2=N' + k2.QuotedString + ' AND s.K3 IS NULL'; + poradiSort2:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + + vTab.Append; + + vTab.FieldByName('IDPohybZboziObj').AsInteger:= VarToStr(FieldByNameValues('ID')).ToInteger; + vTab.FieldByName('IDZboSklad').AsInteger:= VarToStr(FieldByNameValues('IDZboSklad')).ToInteger; + if (VarIsNull(FieldByNameValues('Poradi'))) then + vTab.FieldByName('Poradi').AsSingle:= 1 + else + vTab.FieldByName('Poradi').AsSingle:= VarToStr(FieldByNameValues('Poradi')).ToSingle; + vTab.FieldByName('JCbezDaniKc').AsSingle:= VarToStr(FieldByNameValues('JCbezDaniKC')).ToSingle; + vTab.FieldByName('SkupZbo').AsString:= VarToStr(FieldByNameValues('SkupZbo')); + vTab.FieldByName('RegCis').AsString:= VarToStr(FieldByNameValues('RegCis')); + vTab.FieldByName('Nazev1').AsString:= VarToStr(FieldByNameValues('Nazev1')); + vTab.FieldByName('Mnozstvi').AsExtended:= VarToStr(FieldByNameValues('Mnozstvi')).ToExtended; + vTab.FieldByName('K1').AsString:= k1; + vTab.FieldByName('K2').AsString:= k2; + vTab.FieldByName('K1K2').AsString:= k1 + k2; + vTab.FieldByName('Sortiment').AsString:= VarToStr(FieldByNameValues('NazevSortim')); + vTab.FieldByName('PoradiSortNazev').AsString:= k1 + k2 + VarToStr(FieldByNameValues('NazevSortim')); + if (VarIsNull(FieldByNameValues('PoradiObj'))) then + vTab.FieldByName('PoradiExt').AsSingle:= 1 + else + vTab.FieldByName('PoradiExt').AsSingle:= VarToStr(FieldByNameValues('PoradiObj')).ToSingle; + zavoz:= VarToStr(FieldByNameValues('TypZavozu')); + if (zavoz='1') then + vTab.FieldByName('TypZavozu').AsString:= 'R'; + if (zavoz='2') then + vTab.FieldByName('TypZavozu').AsString:= 'P'; + + vTab.Post; + Next; + end; + + vTab.SortByFields('PoradiSortNazev,PoradiExt,K1,SkupZbo,RegCis'); + + end; + + end + else + begin + Helios.Error(#1'Zadejte ÄŤĂ­slo objednávky'#1); + if (edtCisloObj.CanFocus) then + edtCisloObj.SetFocus; + end; + end; + + + + + procedure TformPrijem1024.btnNulujClick(Sender: TObject); + var i: integer; + begin + if (vTab.RecordCount>0) then + begin + i:= vTab.RecNo; + vTab.DisableControls; + vTab.First; + while not(vTab.Eof) do + begin + vTab.Edit; + vTab.FieldByName('Mnozstvi').AsInteger:= 0; + vTab.Post; + vTab.Next; + end; + vTab.RecNo:= i; + vTab.EnableControls; + end; + end; + + + + + procedure TformPrijem1024.btnOKClick(Sender: TObject); + var oldRec, idHlava, idTiskForm: integer; + lSQL: string; + begin + cisloDokl:= ''; + idTiskForm:= -25; + cOrgDod:= -1; + + if (vTab.RecordCount>0) then + begin + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabPrijemH'') IS NOT NULL' + CRLF + ' DELETE FROM dbo._temp_TabPrijemH WHERE Autor=SUSER_SNAME()' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabPrijemR'') IS NOT NULL' + CRLF + ' IF OBJECT_ID(N''dbo._temp_TabPrijemH'') IS NOT NULL' + CRLF + ' DELETE FROM dbo._temp_TabPrijemR'; + lSQL:= lSQL + ' WHERE IDHlava NOT IN (SELECT ID FROM dbo._temp_TabPrijemH)' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabPrijemH'') IS NOT NULL' + CRLF + ' IF NOT EXISTS(SELECT ID FROM dbo._temp_TabPrijemH)' + CRLF + ' DROP TABLE dbo._temp_TabPrijemH' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabPrijemR'') IS NOT NULL' + CRLF + ' IF NOT EXISTS(SELECT ID FROM dbo._temp_TabPrijemR)' + CRLF + ' DROP TABLE dbo._temp_TabPrijemR'; + Helios.ExecSQL(lSQL); + + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabPrijemH'') IS NOT NULL DROP TABLE #TabPrijemH' + CRLF; + lSQL:= lSQL + 'CREATE TABLE #TabPrijemH (ID INT IDENTITY(1,1) NOT NULL, Sklad NVARCHAR(30), CisloOrg INT NOT NULL, Datum DATETIME, DodFak NVARCHAR(20), Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME())'; + if (jeTest) then + lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabP', 'dbo._temp_TabP'); + Helios.ExecSQL(lSQL); + + lSQL:= 'INSERT #TabPrijemH (CisloOrg, Sklad, Datum, DodFak) SELECT ISNULL(TRY_PARSE(N' + cOrgDod.ToString.Replace(';', '').Replace('-','').Replace(' ', '').QuotedString; + lSQL:= lSQL + ' AS INT), 0), N' + Helios.Sklad.QuotedString + ', CONVERT(datetime, N' + FormatDateTime('d.m.yyyy', dtZavoz.Date).QuotedString + ', 104), N' + edtDodFak.Text.QuotedString; + lSQL:= lSQL + CRLF + 'SELECT SCOPE_IDENTITY()'; + if (jeTest) then + lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabP', 'dbo._temp_TabP'); + with Helios.OpenSQL(lSQL) do + idHlava:= VarToStr(FieldValues(0)).ToInteger; + + + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabPrijemR'') IS NOT NULL' + CRLF + ' DROP TABLE #TabPrijemR' + CRLF; + lSQL:= lSQL + 'CREATE TABLE #TabPrijemR (ID INT IDENTITY(1,1) NOT NULL, IDHlava INT NOT NULL, IDZboSklad INT NOT NULL, Mnozstvi NUMERIC(12,2) NOT NULL DEFAULT 0.0'; + lSQL:= lSQL + ', JCbezDaniKc NUMERIC(19,6) NOT NULL DEFAULT 0.0, IDPohybZbozi INT NOT NULL, Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME())'; + if (jeTest) then + lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabP', 'dbo._temp_TabP'); + Helios.ExecSQL(lSQL); + + oldRec:= vTab.RecNo; + vTab.DisableControls; + vTab.First; + while not(vTab.Eof) do + begin + if (vTab.FieldByName('Mnozstvi').AsSingle>0) then + begin + lSQL:= 'INSERT #TabPrijemR (IDHlava, IDZboSklad, Mnozstvi, IDPohybZbozi, JCbezDaniKc)' + CRLF + ' SELECT ' + idHlava.ToString + ', ' + vTab.FieldByName('IDZboSklad').AsString + ', '; + lSQL:= lSQL + vTab.FieldByName('Mnozstvi').AsSingle.ToString.Replace(',', '.') + ', ' + vTab.FieldByName('IDPohybZboziObj').AsSingle.ToString; + lSQL:= lSQL + ', ROUND(' + vTab.FieldByName('JCbezDaniKc').AsSingle.ToString.Replace(',', '.') + ', 3)'; + if (jeTest) then + lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabP', 'dbo._temp_TabP'); + Helios.ExecSQL(lSQL); + end; + vTab.Next; + end; + vTab.RecNo:= oldRec; + vTab.EnableControls; + + idDZ:= 0; + if not(jeTest) and (MnozstviKPrijmuSum>0) then + begin + helUtils.waitStart(nil, 'GenerovánĂ­ příjemky...', 0, 0); + lSQL:= 'DECLARE @i INT=0' + CRLF + 'IF OBJECT_ID(N''dbo.ep_HDC_App_Prijemka'', N''P'') IS NOT NULL' + CRLF + ' EXEC dbo.ep_HDC_App_Prijemka @idDZ=@i OUT, @Sklad=N' + Helios.Sklad.QuotedString; + lSQL:= lSQL + CRLF + 'SELECT @i'; + try + with Helios.OpenSQL(lSQL) do + idDZ:= VarToStr(FieldValues(0)).ToInteger; + cisloDokl:= helUtils.getHeliosStrVal(Helios, '', 'SELECT PoradoveCislo FROM ' + tblDZ + ' WHERE ID=' + idDZ.ToString); + idTiskForm:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT TiskovyForm FROM ' + tblDDZ + ' WHERE ID=' + idDZ.ToString); + except on E:Exception do + Helios.Error(#1'Chyba generovánĂ­ příjemky' + #1 + CRLF + E.Message); + end; + helUtils.waitEnd; + end; + end; + + + lSQL:= ''; + if (Sender.ToString='TButton') then + lSQL:= (Sender as TButton).Name; + + if (lSQL='btnOK') then + Close; + if (lSQL='btnTisk') and (idDZ>0) then + begin + Helios.Info(#1'Byla uloĹľena příjemka - ÄŤ. ' + cisloDokl + #1); + Helios.PrintForm2(idTiskForm, 'ID=' + idDZ.ToString); + end; + + end; + + + + + procedure TformPrijem1024.btnRozbalitClick(Sender: TObject); + begin + polGrd.DataGrouping.ActiveGroupLevels[0].ExpandNodes; + end; + + + + + procedure TformPrijem1024.btnSbalitClick(Sender: TObject); + begin + polGrd.DataGrouping.ActiveGroupLevels[0].CollapseNodes; + end; + + + + + procedure TformPrijem1024.btnTiskClick(Sender: TObject); + var lSQL: string; + i: integer; + begin + btnOKClick(Sender); + end; + + + + + procedure TformPrijem1024.btnZavritClick(Sender: TObject); + begin + if (Helios.YesNo('UkonÄŤit bez uloĹľenĂ­ příjemky ?', false)) then + Close; + end; + + + + + procedure TformPrijem1024.NactiObjednavku(const idObj: integer); + var lSQL, sort, k1, k2, cZbo, flt: string; + idSort, idx: integer; + mnR, mnP: Single; + extOrdInfo: boolean; + poradiSort, poradiSort2: Single; + begin + lSQL:= ''; + + if not(vTab.Active) then + vTab.Open; + + idx:= cbxSortiment.ItemIndex; + if (idObj>0) then + begin + k1:= sortim[idx].k1; + btnNactiObj.Enabled:= false; + + lSQL:= 'SELECT o.Nazev, o.UliceSCisly, o.PSC, o.Misto FROM ' + tblDZ + ' d INNER JOIN ' + tblCOrg + ' o ON (o.CisloOrg=d.CisloOrg) WHERE d.ID=' + idObj.ToString; + cbxDodavatel.Items.Clear; + cbxDodavatel.Items.Add(helUtils.getHeliosStrVal(Helios, '', lSQL)); + cbxDodavatel.ItemIndex:= 0; + + lSQL:= 'SELECT o.UliceSCisly, o.PSC, o.Misto, o.ICO, o.DIC, d.CisloOrg, d.Splatnost FROM ' + tblDZ + ' d INNER JOIN ' + tblCOrg + ' o ON (o.CisloOrg=d.CisloOrg) WHERE d.ID=' + idObj.ToString; + with Helios.OpenSQL(lSQL) do + begin + First; + cOrgDod:= VarToStr(FieldByNameValues('CisloOrg')).ToInteger; + lblDodAdresa.Caption:= VarToStr(FieldByNameValues('UliceSCisly')); + lblDodICO.Caption:= 'IÄŚ ' + VarToStr(FieldByNameValues('ICO')); + lblDodDIC.Caption:= 'DIÄŚ ' + VarToStr(FieldByNameValues('DIC')); + lblDodMisto.Caption:= Trim(VarToStr(FieldByNameValues('PSC')) + ' ' + VarToStr(FieldByNameValues('Misto'))); + dtZavoz.DateTime:= StrToDate(VarToStr(FieldByNameValues('Splatnost'))) + end; + + lSQL:= 'SELECT p.*, ISNULL(so.Nazev,N'''') AS NazevSort, ISNULL(so.K1, N'''') AS K1, ISNULL(so.K2, N'''') AS K2, (p.Mnozstvi-p.MnOdebrane-p.MnozstviStorno) AS MnozstviZustatek'; + lSQL:= lSQL + ', ISNULL(pe._typzavozu, 0) AS TypZavozu, p.JCbezDaniKC, ISNULL(soe.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(soe._priorita, 999)) AS PoradiSort, ISNULL(ke._poradivsortimentu, 999) AS PoradiVSort FROM ' + tblPZ + ' p LEFT JOIN ' + tblPZe + ' pe ON (pe.ID=p.ID) INNER JOIN '; + lSQL:= lSQL + tblDZ + ' d ON (d.ID=p.IDDoklad) INNER JOIN ' + tblSS + ' s ON (s.ID=p.IDZboSklad) INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi)'; + lSQL:= lSQL + ' LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID)'; + lSQL:= lSQL + ' LEFT JOIN ' + tblSortim + ' so ON (so.ID=k.IdSortiment) LEFT JOIN ' + tblSortimE + ' soe ON (soe.ID=so.ID)'; + lSQL:= lSQL + ' WHERE d.ID=' + idObj.ToString + ' AND (p.Mnozstvi-p.MnOdebrane-p.MnozstviStorno)>0 AND d.Splneno=0 AND d.DruhPohybuZbo=6'; + lSQL:= lSQL + ' AND d.RadaDokladu=N' + ('9' + branchID.ToString + '0').QuotedString; + lSQL:= lSQL + ' AND ISNULL(pe._typzavozu,0)=' + (1+cbZavoz.ItemIndex).ToString; + lSQL:= lSQL + ' ORDER BY (p.SkupZbo+p.RegCis)'; + end + else + if (edtCisloObj.ValueInt>0) then + begin + k1:= sortim[idx].k1; + + lSQL:= 'SELECT p.*, ISNULL(so.Nazev,N'''') AS NazevSort, ISNULL(so.K1, N'''') AS K1, ISNULL(so.K2, N'''') AS K2, (p.Mnozstvi-p.MnOdebrane-p.MnozstviStorno) AS MnozstviZustatek'; + lSQL:= lSQL + ', ISNULL(pe._typzavozu, 0) AS TypZavozu, p.JCbezDaniKC, ISNULL(soe.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(soe._priorita, 999)) AS PoradiSort, ISNULL(ke._poradivsortimentu, 999) AS PoradiVSort FROM ' + tblPZ + ' p LEFT JOIN ' + tblPZe + ' pe ON (pe.ID=p.ID) INNER JOIN '; + lSQL:= lSQL + tblDZ + ' d ON (d.ID=p.IDDoklad) INNER JOIN ' + tblSS + ' s ON (s.ID=p.IDZboSklad) INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi)'; + lSQL:= lSQL + ' LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID)'; + lSQL:= lSQL + ' LEFT JOIN ' + tblSortim + ' so ON (so.ID=k.IdSortiment) LEFT JOIN ' + tblSortimE + ' soe ON (soe.ID=so.ID)'; + lSQL:= lSQL + ' WHERE d.RadaDokladu=N' + ('9' + branchID.ToString + '0').QuotedString; + lSQL:= lSQL + ' AND (p.Mnozstvi-p.MnOdebrane-p.MnozstviStorno)>0 AND d.Splneno=0 AND d.DruhPohybuZbo=6 AND d.PoradoveCislo=' + edtCisloObj.ValueInt.ToString; + lSQL:= lSQL + ' AND d.IDSklad=N' + Helios.Sklad.QuotedString; + lSQL:= lSQL + ' AND ISNULL(pe._typzavozu,0)=' + (1+cbZavoz.ItemIndex).ToString; + lSQL:= lSQL + ' ORDER BY (p.SkupZbo+p.RegCis)'; + end; + + if (lSQL<>'') then + begin + vTab.EmptyTable; + vTab.DisableControls; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + First; + while not(EOF) do + begin + k1:= VarToStr(FieldByNameValues('K1')); + k2:= VarToStr(FieldByNameValues('K2')); + + lSQL:= 'SELECT ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)) FROM ' + tblSortim + ' s LEFT JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE s.K1=N' + k1.QuotedString + ' AND s.K2 IS NULL'; + poradiSort:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + + lSQL:= 'SELECT ISNULL(se.'; + case branchID of + 1: lSQL:= lSQL + '_PoradiObj_Klas1'; + 2: lSQL:= lSQL + '_PoradiObj_MozPi'; + 3: lSQL:= lSQL + '_PoradiObj_MozVod'; + else + lSQL:= lSQL + '_priorita'; + end; + lSQL:= lSQL + ', ISNULL(se._priorita, 999)) FROM ' + tblSortim + ' s LEFT JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE s.K1=N' + k1.QuotedString; + lSQL:= lSQL + ' AND s.K2=N' + k2.QuotedString + ' AND s.K3 IS NULL'; + poradiSort2:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + + vTab.Append; + vTab.FieldByName('Poradi').AsString:= VarToStr(FieldByNameValues('Poradi')); + vTab.FieldByName('PoradiSort').AsSingle:= VarToStr(FieldByNameValues('PoradiVSort')).ToSingle; + if (VarIsNull(FieldByNameValues('Poradi'))) then + vTab.FieldByName('PoradiExt').AsExtended:= 1 + else + vTab.FieldByName('PoradiExt').AsSingle:= VarToStr(FieldByNameValues('Poradi')).ToSingle; + vTab.FieldByName('IDPohybZboziObj').AsString:= VarToStr(FieldByNameValues('ID')); + vTab.FieldByName('IDZboSklad').AsString:= VarToStr(FieldByNameValues('IDZboSklad')); + vTab.FieldByName('JCbezDaniKc').AsSingle:= VarToStr(FieldByName('JCbezDaniKC').Value).ToSingle; + vTab.FieldByName('Sortiment').AsString:= VarToStr(FieldByNameValues('NazevSort')); + vTab.FieldByName('K1').AsString:= k1; + vTab.FieldByName('K2').AsString:= k2; + vTab.FieldByName('K1K2').AsString:= k1 + k2; + vTab.FieldByName('PoradiSortNazev').AsString:= ((poradiSort*1000.0)+poradiSort2).ToString.Replace(',', '.') + ' ' + VarToStr(FieldByNameValues('NazevSort')); + vTab.FieldByName('TypZavozu').AsString:= ''; + if (VarToStr(FieldByNameValues('TypZavozu'))='1') then + vTab.FieldByName('TypZavozu').AsString:= 'R'; + if (VarToStr(FieldByNameValues('TypZavozu'))='2') then + vTab.FieldByName('TypZavozu').AsString:= 'P'; + vTab.FieldByName('SkupZbo').AsString:= VarToStr(FieldByNameValues('SkupZbo')); + vTab.FieldByName('RegCis').AsString:= VarToStr(FieldByNameValues('RegCis')); + vTab.FieldByName('Nazev1').AsString:= VarToStr(FieldByNameValues('Nazev1')); + vTab.FieldByName('Mnozstvi').AsString:= VarToStr(FieldByNameValues('MnozstviZustatek')); + vTab.Post; + Next; + end; + end; + vTab.EnableControls; + end; + + helUtils.waitEnd; + + polGrd.Options:= polGrd.Options + [dgEditing]; + if not(vTab.Active) then + polGrd.Options:= polGrd.Options - [dgEditing] + else + if (vTab.RecordCount=0) then + polGrd.Options:= polGrd.Options - [dgEditing]; + + vTab.SortByFields('PoradiSortNazev,PoradiSort,SkupZbo,RegCis'); + + if (idObj=0) and (k1='001') then + vTab.Locate('K1;K2', VarArrayOf(['001','']), []) + else + vTab.First; + + end; + + + + + procedure TformPrijem1024.polGrdDataGroupGetRowText(Sender: TCustomDBGridEh; GroupDataTreeNode: TGroupDataTreeNodeEh; var GroupRowText: string); + var s, s2: string; + i: integer; + errReverse: boolean; + begin + errReverse:= false; + s2:= '(123)'; + s2:= ReverseString(s2); + if (s2.EndsWith('(')) then + errReverse:= true; + + s:= GroupRowText.Replace('PoradiSortNazev: ', ''); + if (s.IndexOf(' ')>-1) then + s:= MidStr(s, s.IndexOf(' ')+1, s.Length).Trim; + if (s.EndsWith(')')) then + begin + s:= ReverseString(s); + if (errReverse) then + i:= s.IndexOf('(') + else + i:= s.IndexOf(')'); + if (i>-1) then + s:= MidStr(s, i+2, s.Length); + s:= ReverseString(s).Trim; + end; + s2:= helUtils.getHeliosStrVal(Helios, '', 'SELECT TOP(1) KatAllTecky FROM ' + tblSortim + ' WHERE Nazev=N' + s.QuotedString); + GroupRowText:= IfThen(s2<>'', s2 + ' ', '') + s; + end; + + + + + procedure TformPrijem1024.polGrdDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); + begin +{ + if (Column.FieldName='Mnozstvi') then + if (vTab.FieldByName('TypZavozu').AsString='P') then + polGrd.Canvas.Brush.Color:= $00F7EE8A; + if (Column.FieldName='Mnozstvi') then + polGrd.DefaultDrawColumnCell(Rect, DataCol, Column, State); +} + end; + + + + + procedure TformPrijem1024.polGrdKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); + var i, i2: integer; + lSQL: string; + begin + if (Key=Ord('p')) or (Key=Ord('P')) then + begin + i:= polGrd.DataSource.DataSet.FieldByName('IDKZ').AsInteger; + if (i>0) then + begin + lSQL:= 'TabPohybyZbozi.IDZboSklad=(SELECT ID FROM ' + tblSS + ' WHERE IDKmenZbozi=' + i.ToString + ' AND IDSklad=N' + Helios.Sklad.QuotedString + ')'; + Helios.OpenBrowse(66, lSQL); + end; + end; + + if (Key=Ord('o')) or (Key=Ord('O')) then + begin + i:= polGrd.DataSource.DataSet.FieldByName('IDKZ').AsInteger; + i2:= 0; + with Helios.OpenSQL('SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_HDC_StareProdeje_Pol''') do + if (RecordCount=1) then + i2:= VarToStr(FieldValues(0)).ToInteger; + + if (i2>0) then + begin + lSQL:= 'hvw_HDC_StareProdeje_Pol.IDSklad=N' + Helios.Sklad.QuotedString + ' AND hvw_HDC_StareProdeje_Pol.SkupZbo=N'; + lSQL:= lSQL + polGrd.DataSource.DataSet.FieldByName('SkupZbo').AsString.QuotedString + ' AND hvw_HDC_StareProdeje_Pol.RegCis=N'; + lSQL:= lSQL + polGrd.DataSource.DataSet.FieldByName('RegCis').AsString.QuotedString; + lSQL:= lSQL + ' AND hvw_HDC_StareProdeje_Pol.DruhPohybuZbo IN (2,4)'; + Helios.OpenBrowse(i2, lSQL); + end; + end; + + + end; + + + + + procedure TformPrijem1024.vTabFilterRecord(DataSet: TDataSet; var Accept: Boolean); + var t: string; + begin + if (vTab.RecordCount>0) then + begin + t:= vTab.FieldByName('TypZavozu').AsString; + case cbZavoz.ItemIndex of + 0: Accept:= (t='R'); + 1: Accept:= (t='P'); + end; + end; + end; + + + + + procedure TformPrijem1024.vTabMnozstviValidate(Sender: TField); + var canCont: Boolean; + mv, mm: Single; + begin + canCont:= true; + mv:= TField(Sender).AsFloat; + if (mv<0) then + canCont:=false; + + if not(canCont) then + TField(Sender).DataSet.Cancel; + end; + + + + + procedure TformPrijem1024.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 (mv0) then + begin + SetLength(cOrgs, RecordCount); + First; + idx:= 0; + while not(EOF) do + begin + cbxDodavatel.Items.Add(VarToStr(FieldValues(1))); + cOrgs[idx]:= VarToStr(FieldValues(0)).ToInteger; + Inc(idx); + Next; + end; + end; + + cbxDodavatel.ItemIndex:= helUtils.IfThenInt(cbxDodavatel.Items.Count=1, 0, -1); + polGrd.Enabled:= (cbxDodavatel.ItemIndex>-1); + +{ + polGrd.Options:= polGrd.Options + [dgEditing]; + if not(vTab.Active) then + polGrd.Options:= polGrd.Options - [dgEditing] + else + if (vTab.RecordCount=0) then + polGrd.Options:= polGrd.Options - [dgEditing]; +} + end; + + + + + procedure TformPrijem1024.cbZavozChange(Sender: TObject); + begin + NactiObjednavku(idDZ); + end; + + + + + procedure TformPrijem1024.edtCisloObjExit(Sender: TObject); + begin + if (edtCisloObj.Value>0) then + NactiObjednavku(0); + end; + + + + + procedure TformPrijem1024.edtNumEditorClick(Sender: TObject); + begin + edtNumEditor.Visible:= true; + end; + + + + + procedure TformPrijem1024.FormClose(Sender: TObject; var Action: TCloseAction); + begin + if (vTab.Active) then + vTab.Close; + if (tabExtOrdInfo<>'') and not(jeTest) then + Helios.ExecSQL('IF OBJECT_ID(N' + tabExtOrdInfo.QuotedString + ', N''U'') IS NOT NULL DROP TABLE ' + tabExtOrdInfo); + Action:= caFree; + end; + + + + + + procedure TformPrijem1024.FormShow(Sender: TObject); + var rHeight, i: integer; + lSQL: string; + rct: TRect; + begin + compName:= GetEnvironmentVariable('COMPUTERNAME'); + UseLatestCommonDialogs:= true; + + self.SetBounds(Screen.WorkAreaRect.Left, 0, Screen.WorkAreaRect.Width, Screen.WorkAreaRect.Height); + +// rct.Create(0, 0, 0, 0); +// rct:= BoundsRect; + SetBounds( Left - ClientOrigin.X, + Top - ClientOrigin.Y, + GetDeviceCaps( Canvas.handle, HORZRES ) + (Width - ClientWidth), + GetDeviceCaps( Canvas.handle, VERTRES ) + (Height - ClientHeight )); +// BoundsRect:= rct; + + + edtNumEditor.Height:= polGrd.RowHeight+2; + dtZavoz.DateTime:= IncDay(Now,1); + +{ + grd.RowCount:= 2; + grd.FixedRows:= 1; + + rHeight:= grd.Canvas.TextHeight('ĂĂ˝'); + grd.DefaultRowHeight:= grd.Font.Size + 18; + +// grd.RowHeights[1]:= grd.Canvas.TextHeight('Akce') + 4; + grd.Cells[0, 0]:= 'Akce'; + grd.Cells[1, 0]:= 'ÄŚĂ­slo'; + grd.Cells[2, 0]:= 'Název'; + grd.Cells[3, 0]:= 'DoporuÄŤeno'; + grd.Cells[4, 0]:= 'Ráno'; + grd.Cells[5, 0]:= 'Poledne'; +} + + branchID:= ZjistiBranchID; + cOrgDod:= -1; + + lblDodAdresa.Caption:= ''; + lblDodMisto.Caption:= ''; + lblDodICO.Caption:= ''; + lblDodDIC.Caption:= ''; + + cbxSortiment.Items.Clear; + lSQL:= 'SELECT DISTINCT(s.K1) FROM ' + tblSortim + ' s INNER JOIN ' + tblSortimE + ' e ON (e.ID=s.ID) WHERE e._Objednavky_Zobrazit=1 GROUP BY s.K1'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + SetLength(sortim, RecordCount); + i:= 0; + First; + while not(EOF) do + begin + cbxSortiment.Items.Add(helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblSortim + ' WHERE K2 IS NULL AND K1=N' + VarToStr(FieldValues(0)).QuotedString)); + + sortim[i].k1:= VarToStr(FieldValues(0)); + sortim[i].nazev:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblSortim + ' WHERE K2 IS NULL AND K1=N' + VarToStr(FieldValues(0)).QuotedString); + + sortim[i].poleDodav:= ''; + sortim[i].typSort:= 255; + + if (sortim[i].k1='001') then + begin + sortim[i].typSort:= 0; + sortim[i].poleDodav:= '_dodpek'; + end; + + if (sortim[i].k1='003') then + begin + sortim[i].typSort:= 1; + sortim[i].poleDodav:= '_dodlah'; + end; + + if (sortim[i].k1='004') then + begin + sortim[i].typSort:= 2; + sortim[i].poleDodav:= '_dodvelko'; + end; + + Inc(i); + Next; + end; + cbxSortiment.ItemIndex:= 0; + end; + + edtCisloObj.Enabled:= (idDZ=0); + cbxSortiment.Enabled:= (idDZ=0); + cbxDodavatel.Enabled:= (idDZ=0); + + bidHDCObj:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_DokladyZbozi'''); + bidHDCObj:= 22; + btnNactiObj.Visible:= not(Helios.BrowseID=bidHDCObj); + if (Helios.BrowseID=bidHDCObj) then + begin + edtCisloObj.Value:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT PoradoveCislo FROM ' + tblDZ + ' WHERE ID=' + idDZ.ToString); + NactiObjednavku(idDZ); + end + else + cbxSortimentChange(Sender); + + + btnNuluj.Visible:= (Helios.LoginName='hdc') or (compName='NTB-T'); + + end; + + + + + end. diff --git a/frmZamena.dfm b/frmZamena.dfm new file mode 100644 index 0000000..251eb0e --- /dev/null +++ b/frmZamena.dfm @@ -0,0 +1,301 @@ +object formZamena: TformZamena + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = ' Operativn'#237' z'#225'm'#283'na' + ClientHeight = 390 + ClientWidth = 492 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -27 + Font.Name = 'Segoe UI' + Font.Style = [] + Position = poOwnerFormCenter + OnClose = FormClose + PixelsPerInch = 96 + DesignSize = ( + 492 + 390) + TextHeight = 37 + object Label1: TLabel + Left = 18 + Top = 27 + Width = 56 + Height = 32 + Caption = #268#237'slo:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object Label2: TLabel + Left = 18 + Top = 92 + Width = 71 + Height = 32 + Caption = 'N'#225'zev:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object lblNazev: TLabel + Left = 102 + Top = 92 + Width = 373 + Height = 32 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object Label3: TLabel + Left = 18 + Top = 140 + Width = 124 + Height = 32 + Caption = 'Stav skladu:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object Label4: TLabel + Left = 25 + Top = 204 + Width = 152 + Height = 32 + Caption = 'N'#225'kupn'#237' cena:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object Label5: TLabel + Left = 75 + Top = 254 + Width = 102 + Height = 32 + Caption = 'Mno'#382'stv'#237':' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object lblStav: TLabel + Left = 195 + Top = 140 + Width = 164 + Height = 32 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object edtKod: TEdit + Left = 80 + Top = 20 + Width = 320 + Height = 45 + Alignment = taCenter + AutoSize = False + TabOrder = 0 + OnExit = edtKodExit + end + object btnHledat: TBitBtn + Left = 415 + Top = 15 + Width = 54 + Height = 55 + Glyph.Data = { + 36100000424D3610000000000000360000002800000020000000200000000100 + 2000000000000010000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003B3B3B853B3B3B85000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003B3B3B85727272FF727272FF3B3B3B850000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003636367A727272FF727272FF727272FF3B3B3B8500000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003636367A727272FF727272FF727272FF3B3B3B85000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003636367A727272FF727272FF727272FF3B3B3B850000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000003636367A727272FF727272FF727272FF3B3B + 3B85000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003636367A727272FF727272FF7272 + 72FF3B3B3B850000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000003636367A727272FF7272 + 72FF727272FF3B3B3B8500000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000003636367A7272 + 72FF727272FF727272FF3B3B3B85000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000003636 + 367A727272FF727272FF727272FF3B3B3B850000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003636367A727272FF727272FF727272FF3B3B3B85000000002A1703328148 + 0A9ABB670FDDD57611FDD57611FDBC680FDF84490A9D2D190436000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003636367A727272FF727272FF75726FFF945B1EC5D67711FED777 + 11FFD77711FFD77711FFD77711FFD77711FFD77711FFD77711FE874B0BA00905 + 010B000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003636367A75726FFFBD762AFFD77711FFD17310F77641 + 098C2816033004020004030200042615032D723F0987CF7210F5D77711FFA65C + 0DC40905010B0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000090581DBFD77711FFBF6A0FE32615032E0000 + 0000000000000000000000000000000000000000000022130328BA670FDDD777 + 11FF874A0BA00000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000002615032DD57611FDD27411F92816032F000000000000 + 000000000000000000000000000000000000000000000000000022130328CF72 + 10F5D77711FE2E19043600000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000007B440A92D77711FF7B440A9200000000000000000000 + 000000000000000000000000000000000000000000000000000000000000723F + 0987D77711FF84490A9D00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000B3630ED5D77711FF2F1A043800000000000000000000 + 0000000000000000000000000000000000000000000000000000000000002615 + 032DD77711FFBC680FDF00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CD7110F3D77711FF0C06010E00000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000302 + 0004D77711FFD57611FD00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CC7110F2D77711FF0D07010F00000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000402 + 0004D77711FFD57611FD00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000B1620ED3D77711FF311B043A00000000000000000000 + 0000000000000000000000000000000000000000000000000000000000002816 + 0330D77711FFBA670FDD00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000007843098FD77711FF7F460A9700000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007641 + 098CD77711FF81470A9A00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000022130329D57611FCD37511FA2D190435000000000000 + 00000000000000000000000000000000000000000000000000002715032ED173 + 10F7D67711FE2A17033200000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000007742098DD77711FFC36C0FE72D1903350000 + 000000000000000000000000000000000000000000002816032FBF6A0FE3D777 + 11FF80470A980000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000503000698540CB4D77711FFD37511FB7F46 + 0A97311B043A0D07010F0C07010E2F1A04387B440A92D27411F9D77711FF9F58 + 0DBD070401080000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000050300067742098DD57611FCD777 + 11FFD77711FFD77711FFD77711FFD77711FFD77711FFD57611FD7D450A950704 + 0108000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000221303297943 + 098FB2620ED3CC7110F2CC7110F3B3630ED57C440A922615032D000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000} + TabOrder = 1 + OnClick = btnHledatClick + end + object edtNakup: TNumberBox + Left = 189 + Top = 197 + Width = 181 + Height = 45 + Alignment = taCenter + Mode = nbmFloat + TabOrder = 2 + OnExit = edtNakupExit + end + object edtMnoz: TNumberBox + Left = 189 + Top = 248 + Width = 181 + Height = 45 + Alignment = taCenter + Mode = nbmFloat + TabOrder = 3 + end + object btnOK: TButton + Left = 57 + Top = 327 + Width = 139 + Height = 49 + Caption = 'OK' + TabOrder = 4 + OnClick = btnOKClick + end + object btnStorno: TButton + Left = 324 + Top = 327 + Width = 139 + Height = 49 + Caption = 'Storno' + TabOrder = 5 + OnClick = btnStornoClick + end +end diff --git a/frmZamena.pas b/frmZamena.pas new file mode 100644 index 0000000..25be27d --- /dev/null +++ b/frmZamena.pas @@ -0,0 +1,162 @@ +unit frmZamena; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, Vcl.NumberBox, ddPlugin_TLB; + +type + TformZamena = class(TForm) + Label1: TLabel; + edtKod: TEdit; + btnHledat: TBitBtn; + Label2: TLabel; + lblNazev: TLabel; + Label3: TLabel; + Label4: TLabel; + Label5: TLabel; + edtNakup: TNumberBox; + edtMnoz: TNumberBox; + btnOK: TButton; + btnStorno: TButton; + lblStav: TLabel; + procedure btnHledatClick(Sender: TObject); + procedure edtNakupExit(Sender: TObject); + procedure btnOKClick(Sender: TObject); + procedure btnStornoClick(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure edtKodExit(Sender: TObject); + private + public + Helios: IHelios; + jeTest: boolean; + end; + +var + formZamena: TformZamena; + idKZ, idSS: integer; + mj: string; + stav: Extended; + +implementation +uses helUtils; + +{$R *.dfm} + + + + procedure TformZamena.btnHledatClick(Sender: TObject); + var lSQL: string; + begin + edtKod.Text:= edtKod.Text.Trim; + if (edtKod.Text<>'') then + begin + try + with Helios.OpenSQL('SELECT ID FROM ' + tblKZ + ' WHERE RegCis=N' + edtKod.Text.QuotedString) do + if (RecordCount=1) then + begin + idKZ:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblKZ + ' WHERE RegCis=N' + edtKod.Text.QuotedString); + lblNazev.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev1 FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString); + mj:= helUtils.getHeliosStrVal(Helios, '', 'SELECT MJEvidence FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString); + stav:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT Mnozstvi FROM ' + tblSS + ' WHERE IDSklad=N' + Helios.Sklad.QuotedString + ' AND IDKmenZbozi=' + idKZ.toString); + lblStav.Caption:= Trim(stav.ToString + ' ' + mj); + lSQL:= 'CASE Mnozstvi WHEN 0 THEN 0 ELSE StavSkladuSouvis/Mnozstvi END'; + edtNakup.Value:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT ' + lSQL + ' FROM ' + tblSS + ' WHERE IDSklad=N' + Helios.Sklad.QuotedString + ' AND IDKmenZbozi=' + idKZ.toString); + end + else + begin + stav:= 0; + lblStav.Caption:= ''; + lblNazev.Caption:= ''; + idKZ:= 0; + if (RecordCount=0) then + Helios.Error(#1'Nebyla nalezena žádná karta'#1) + else + Helios.Error(#1'ZadanĂ©mu kĂłdu odpovĂ­dá vĂ­c neĹľ 1 karta'#1); + if (edtKod.CanFocus) then + edtKod.SetFocus; + end; + except + end; + end; + end; + + + + + procedure TformZamena.btnOKClick(Sender: TObject); + var lSQL: string; + begin + if (edtMnoz.Value<(-1.0*stav)) then + begin + Helios.Error(#1'!! Nelze vydat vĂ­c neĹľ máte skladem !!'#1); + if (edtMnoz.CanFocus) then + begin + edtMnoz.SetFocus; + Exit; + end; + end; + + if (edtMnoz.Value=0) then + Helios.Error(#1'Zadejte mnoĹľstvĂ­'#1) + else + if (idKZ=0) then + Helios.Error(#1'NenĂ­ specifikována karta zboží'#1) + else + begin + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabAppZamena'') IS NOT NULL DROP TABLE #TabAppZamena' + CRLF; + lSQL:= lSQL + 'CREATE TABLE #TabAppZamena (IDKmenZbozi INT, IDSklad NVARCHAR(30) NOT NULL, Mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0.0'; + lSQL:= lSQL + ', NakupniCena NUMERIC(19,6) NOT NULL DEFAULT 0.0, UserID INT NOT NULL)' + CRLF; + lSQL:= lSQL + 'INSERT #TabAppZamena (IDKmenZbozi, IDSklad, Mnozstvi, NakupniCena, UserID) SELECT ' + idKZ.ToString + ', N' + Helios.Sklad.QuotedString; + lSQL:= lSQL + ', ' + edtMnoz.Value.ToString.Replace(',', '.') + ', ' + edtNakup.Value.ToString.Replace(',', '.') + ', ' + Helios.UserId.ToString + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo.ep_HDC_App_Zamena'') IS NOT NULL EXEC dbo.ep_HDC_App_Zamena'; + try + helUtils.waitStart(nil, 'Generuji doklad...', 0, 255); + Helios.ExecSQL(lSQL); + helUtils.waitEnd; + except on E:Exception do + Helios.Error('Chyba: ' + E.Message); + end; + Close; + end; + end; + + + + + procedure TformZamena.btnStornoClick(Sender: TObject); + begin + Close; + end; + + + + + procedure TformZamena.edtKodExit(Sender: TObject); + begin + btnHledatClick(Sender); + end; + + + + + procedure TformZamena.edtNakupExit(Sender: TObject); + begin + if (edtNakup.Value<=0) then + begin + Helios.Error(#1'!! NákupnĂ­ cena musĂ­ bĂ˝t vÄ›tší neĹľ 0 !!'#1); + if (edtNakup.CanFocus) then + edtNakup.SetFocus; + end; + end; + + + + + procedure TformZamena.FormClose(Sender: TObject; var Action: TCloseAction); + begin + Action:= caFree; + end; + +end. diff --git a/plgPolanskych.ctp b/plgPolanskych.ctp new file mode 100644 index 0000000..90c70b3 --- /dev/null +++ b/plgPolanskych.ctp @@ -0,0 +1,5 @@ +4 +AutoGen False + +GAC:mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + diff --git a/plgPolanskych.dpr b/plgPolanskych.dpr new file mode 100644 index 0000000..c8b1c5d --- /dev/null +++ b/plgPolanskych.dpr @@ -0,0 +1,55 @@ +library plgPolanskych; + +{$WEAKLINKRTTI ON} +{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} +{$IFOPT D-} + {$SetPEFlags $AE0E} + {$SetPEOptFlags $AE0E} +{$ELSE} + {$SetPEFlags $AC02} + {$SetPEOptFlags $AC02} +{$ENDIF} + +// IMAGE_FILE_RELOCS_STRIPPED = $0001 +// IMAGE_FILE_EXECUTABLE_IMAGE = $0002 * +// IMAGE_FILE_LINE_NUMS_STRIPPED = $0004 * +// IMAGE_FILE_LOCAL_SYMS_STRIPPED = $0008 * +// IMAGE_FILE_AGGRESIVE_WS_TRIM = $0010 +// IMAGE_FILE_LARGE_ADDRESS_AWARE = $0020 +// IMAGE_FILE_BYTES_REVERSED_LO = $0080 +// IMAGE_FILE_32BIT_MACHINE = $0100 +// IMAGE_FILE_DEBUG_STRIPPED = $0200 +// IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = $0400 * +// IMAGE_FILE_NET_RUN_FROM_SWAP = $0800 * +// IMAGE_FILE_SYSTEM = $1000 +// IMAGE_FILE_DLL = $2000 * +// IMAGE_FILE_UP_SYSTEM_ONLY = $4000 +// IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = $8000 * + + + +uses + System.Win.ComServ, + ComObjekt in 'ComObjekt.pas', + frmLikvidace in 'frmLikvidace.pas' {formLikvidace}, + frmLikvidace1024 in 'frmLikvidace1024.pas' {formLikvidace1024}, + frmPrijem in 'frmPrijem.pas' {formPrijem}, + frmPrijem1024 in 'frmPrijem1024.pas' {formPrijem1024}, + frmOrder in 'frmOrder.pas' {formOrder}, + frmOrder2 in 'frmOrder2.pas' {formOrder2}, + frmOrder21024 in 'frmOrder21024.pas' {formOrder21024}, + frmOrder21366 in 'frmOrder21366.pas' {formOrder21366}, + frmZamena in 'frmZamena.pas' {formZamena}, + datModObj in 'datModObj.pas' {dm: TDataModule}, + datModPrij in 'datModPrij.pas' {dm: TDataModule}; + +exports + DllGetClassObject, + DllCanUnloadNow, + DllRegisterServer, + DllUnregisterServer; + +{$R *.RES} + +begin +end. diff --git a/plgPolanskych.dproj b/plgPolanskych.dproj new file mode 100644 index 0000000..de4bd88 --- /dev/null +++ b/plgPolanskych.dproj @@ -0,0 +1,1249 @@ + + + {63175DDE-4B42-4BFF-BC6C-ED453BB5F8CB} + plgPolanskych.dpr + True + Release + 1 + Library + VCL + 19.3 + Win32 + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + false + false + false + false + false + 00400000 + true + plgPolanskych + 1029 + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName= + System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) + + + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + Debug + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName) + 1029 + VirtualTreesR;$(DCC_UsePackage) + + + VirtualTreesR;$(DCC_UsePackage) + + + RELEASE;$(DCC_Define) + 0 + false + 0 + + + true + 3 + 2022 + 210 + true + CompanyName=HD Consulting spol. s r.o. Strakonice;FileDescription=Helios Orange plugin pro Polanskych, Protivin;FileVersion=3.0.2022.210;InternalName=;LegalCopyright=tomas.buzin@hdconsulting.cz / tomas.buzin@seznam.cz;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=XE11.0;ProgramID= + (None) + D:\Data\Helios3\HeliosMain.exe + D:\Data\Helios3 + 00700000 + false + + + DEBUG;$(DCC_Define) + false + true + true + true + 00700000 + + + CompanyName=HD Consulting spol. s r.o. Strakonice;FileDescription=Helios Orange plugin pro Polanskych, Protivin;FileVersion=2.0.2022.126;InternalName=;LegalCopyright=(c) tomas.buzin@seznam.cz;LegalTrademarks=;OriginalFilename=plgPolanskych.dll;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=XE11.0;ProgramID= + true + 2 + 2022 + 126 + true + (None) + D:\Data\Helios3\HeliosMain.exe + D:\Data\Helios3 + true + + + + MainSource + + + +
formLikvidace
+
+ +
formLikvidace1024
+
+ +
formPrijem
+
+ +
formPrijem1024
+
+ +
formOrder
+
+ +
formOrder2
+
+ +
formOrder21024
+
+ +
formOrder21366
+
+ +
formZamena
+ dfm +
+ +
dm
+ dfm + TDataModule +
+ +
dm
+ dfm + TDataModule +
+ + Base + + + Cfg_1 + Base + + + Cfg_2 + Base + +
+ + Delphi.Personality.12 + + + + + plgPolanskych.dpr + + + BergSoft Next Standard 6 (Design) + BergSoft Next Standard 6 + BergSoft NextLayout 6 + BergSoft NextGrid 6 (Design) + BergSoft NextGrid 6 + BergSoft NextDBGrid 6 + BergSoft NextInspector 6 + BergSoft Next Collection 6 + BergSoft NextLayout 6 (Design) + BergSoft NextDBGrid 6 (Design) + BergSoft NextInspector 6 (Design) + BergSoft Next Collection 6 (Design) + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + + True + False + + + + + plgPolanskych.dll + true + + + + + plgPolanskych.dll + true + + + + + 1 + + + 0 + + + + + classes + 64 + + + classes + 64 + + + + + classes + 1 + + + classes + 1 + + + + + res\xml + 1 + + + res\xml + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + library\lib\armeabi + 1 + + + library\lib\armeabi + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + library\lib\mips + 1 + + + library\lib\mips + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\values-v21 + 1 + + + res\values-v21 + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-ldpi + 1 + + + res\drawable-ldpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-small + 1 + + + res\drawable-small + 1 + + + + + res\drawable-normal + 1 + + + res\drawable-normal + 1 + + + + + res\drawable-large + 1 + + + res\drawable-large + 1 + + + + + res\drawable-xlarge + 1 + + + res\drawable-xlarge + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + 1 + + + 1 + + + 0 + + + + + 1 + .framework + + + 1 + .framework + + + 1 + .framework + + + 0 + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + 0 + .dll;.bpl + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + 0 + .bpl + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + + + + + 1 + + + 1 + + + 1 + + + + + + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 0 + + + + + library\lib\armeabi-v7a + 1 + + + + + 1 + + + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + + + + + + + + + + + + 12 + + + + +
diff --git a/plgPolanskych.eof b/plgPolanskych.eof new file mode 100644 index 0000000..b47c13c --- /dev/null +++ b/plgPolanskych.eof @@ -0,0 +1,7 @@ + +[Exception Log] +EurekaLog Version=7007 +Activate=0 +DeleteMapAfterCompile=0 +Encrypt Password="" + diff --git a/plgPolanskych.res b/plgPolanskych.res new file mode 100644 index 0000000000000000000000000000000000000000..0395134b93a645b083863db826a3353e2d21a2df GIT binary patch literal 940 zcmZ{j%T5AO42J&^jF&{?Bd{>8hyvoqn5YqNiMJ>*?hM{W;s}I66Ii=4zLGEDBe-zu z8;D;!Vo>yu9(vlp?SFbYl9WNZ-9%7-tZb_1p8^xOFQ>6|50p(6QIB<`Q}%ToqHSwm zdz`n~H_&Z8r{6y$i%;oAZzG8=ExT8;ghO9?@9z;qK)#lms;Z`tY*j_NBy&wyssp@o zOio4Rw15=hP{1B(hS)VQw`!;Yz73lSr%O-2r4sixe@(IOz_-3?WH>jlN16o@BTclr zpAs$=-FRG8=br5WU+~SXge}HnoEx6iYS`Ms6Jf1;)_oAhE5w=s8NniS4t8pS%IJVS za#T#sHd(Kgb-VeE@x4b#i<;=;a7@l7RjgK0dmfHCq`+R_XIdWJ))QR|v_nitt;oC5 zpqkwvq+$z9i%hq8V$VPp|*O>DRQ)_Y%_Wj&p+@t*Y$b$Dwx7R{3@|saj^@lhyy71(-eo DSo4f$ literal 0 HcmV?d00001