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 0000000..0395134 Binary files /dev/null and b/plgPolanskych.res differ