From b1cd64bb32b2eaae2de570851efea4f0a41b66c4 Mon Sep 17 00:00:00 2001 From: TomBuz Date: Wed, 21 May 2025 21:19:51 +0200 Subject: [PATCH] Prvni verze --- .gitignore | 34 +- ComObjekt.pas | 3004 ++++++++++++++++++++++++++++++++++++++ README.md | 2 +- arrowDown.png | Bin 0 -> 7254 bytes dataMod.dfm | 5 + dataMod.pas | 23 + frmDavkyObecne.dfm | 798 +++++++++++ frmDavkyObecne.pas | 372 +++++ frmEvidOper.dfm | 3089 ++++++++++++++++++++++++++++++++++++++++ frmEvidOper.pas | 1262 ++++++++++++++++ frmGenPolos.dfm | 199 +++ frmGenPolos.pas | 294 ++++ frmGenTPV.dfm | 269 ++++ frmGenTPV.pas | 277 ++++ frmHrOdvOper.dfm | 1592 +++++++++++++++++++++ frmHrOdvOper.pas | 2052 ++++++++++++++++++++++++++ frmHrOdvOperZmetky.dfm | 53 + frmHrOdvOperZmetky.pas | 81 ++ frmInputNum.dfm | 91 ++ frmInputNum.pas | 90 ++ frmKoopObjUprava.dfm | 141 ++ frmKoopObjUprava.pas | 88 ++ frmOOPPohyb.dfm | 238 ++++ frmOOPPohyb.pas | 603 ++++++++ frmOdlitek.dfm | 1574 ++++++++++++++++++++ frmOdlitek.pas | 1816 +++++++++++++++++++++++ frmOdvLis.dfm | 884 ++++++++++++ frmOdvLis.pas | 821 +++++++++++ frmOdvLisX.dfm | 766 ++++++++++ frmOdvLisX.pas | 458 ++++++ frmOdvTavby.dfm | 1006 +++++++++++++ frmOdvTavby.pas | 2201 ++++++++++++++++++++++++++++ frmPlanLis.dfm | 16 + frmPlanLis.pas | 24 + frmSchvaleniZak.dfm | 718 ++++++++++ frmSchvaleniZak.pas | 1018 +++++++++++++ frmVstupDat.dfm | 506 +++++++ frmVstupDat.pas | 486 +++++++ ico.ico | Bin 0 -> 9198 bytes ico.png | Bin 0 -> 1604 bytes plgKdynium.dpr | 73 + plgKdynium.dproj | 240 ++++ plgKdynium.res | Bin 0 -> 1004 bytes regMe_x64_kdynium.reg | Bin 0 -> 1030 bytes regMe_x86_kdynium.reg | Bin 0 -> 922 bytes 45 files changed, 27247 insertions(+), 17 deletions(-) create mode 100644 ComObjekt.pas create mode 100644 arrowDown.png create mode 100644 dataMod.dfm create mode 100644 dataMod.pas create mode 100644 frmDavkyObecne.dfm create mode 100644 frmDavkyObecne.pas create mode 100644 frmEvidOper.dfm create mode 100644 frmEvidOper.pas create mode 100644 frmGenPolos.dfm create mode 100644 frmGenPolos.pas create mode 100644 frmGenTPV.dfm create mode 100644 frmGenTPV.pas create mode 100644 frmHrOdvOper.dfm create mode 100644 frmHrOdvOper.pas create mode 100644 frmHrOdvOperZmetky.dfm create mode 100644 frmHrOdvOperZmetky.pas create mode 100644 frmInputNum.dfm create mode 100644 frmInputNum.pas create mode 100644 frmKoopObjUprava.dfm create mode 100644 frmKoopObjUprava.pas create mode 100644 frmOOPPohyb.dfm create mode 100644 frmOOPPohyb.pas create mode 100644 frmOdlitek.dfm create mode 100644 frmOdlitek.pas create mode 100644 frmOdvLis.dfm create mode 100644 frmOdvLis.pas create mode 100644 frmOdvLisX.dfm create mode 100644 frmOdvLisX.pas create mode 100644 frmOdvTavby.dfm create mode 100644 frmOdvTavby.pas create mode 100644 frmPlanLis.dfm create mode 100644 frmPlanLis.pas create mode 100644 frmSchvaleniZak.dfm create mode 100644 frmSchvaleniZak.pas create mode 100644 frmVstupDat.dfm create mode 100644 frmVstupDat.pas create mode 100644 ico.ico create mode 100644 ico.png create mode 100644 plgKdynium.dpr create mode 100644 plgKdynium.dproj create mode 100644 plgKdynium.res create mode 100644 regMe_x64_kdynium.reg create mode 100644 regMe_x86_kdynium.reg diff --git a/.gitignore b/.gitignore index e9d123f..0ef51a4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -# ---> Delphi # Uncomment these types if you want even more clean repository. But be careful. # It can make harm to an existing project source. Read explanations below. # @@ -21,24 +20,12 @@ # Deployment Manager configuration file for your project. Added in Delphi XE2. # Uncomment this if it is not mobile development and you do not use remote debug feature. #*.deployproj -# +# # C++ object files produced when C/C++ Output file generation is configured. # Uncomment this if you are not using external objects (zlib library for example). #*.obj # -# Default Delphi compiler directories -# Content of this directories are generated with each Compile/Construct of a project. -# Most of the time, files here have not there place in a code repository. -#Win32/ -#Win64/ -#OSX64/ -#OSXARM64/ -#Android/ -#Android64/ -#iOSDevice64/ -#Linux64/ - # Delphi compiler-generated binaries (safe to delete) *.exe *.dll @@ -78,6 +65,21 @@ __recovery/ # Castalia statistics file (since XE7 Castalia is distributed with Delphi) *.stat -# Boss dependency manager vendor folder https://github.com/HashLoad/boss -modules/ +*.otares +*.cmds +*.skincfg +*.bmp +*.mp3 +*.mes +*.vtd +*.xls +*.xlsx +*.vlb +*.tmp +*.xml + +*.zip +*.7z +bak/ +bak2/ diff --git a/ComObjekt.pas b/ComObjekt.pas new file mode 100644 index 0000000..6e2d4f6 --- /dev/null +++ b/ComObjekt.pas @@ -0,0 +1,3004 @@ +unit ComObjekt; + +INTERFACE + +uses System.Win.ComObj, System.Classes, System.StrUtils, System.SysUtils, ddPlugin_TLB; + +type + + TplgKdynium = class(TComObject, IHePlugin) + private +// function DelphiCompilerVersion: Single; safecall; +// function PartnerIdentification: WideString; safecall; + procedure Run (const Helios: IHelios); safecall; + public + procedure ExportProMatrix (const Helios: IHelios); safecall; + procedure ImportKmenProMatrix (const Helios: IHelios; sklMatrix2: string); safecall; + procedure ImportKmenFormy (const Helios: IHelios); safecall; + procedure ImportKmenFormy2 (const Helios: IHelios); safecall; + procedure ImportKmenFormyVC (const Helios: IHelios); safecall; + + procedure ImportKmenMeridla (const Helios: IHelios); safecall; + procedure ImportKmenMeridlaVC (const Helios: IHelios); safecall; + + procedure ImportOperaciDoPripravyPrikazu (const Helios: IHelios); safecall; + procedure VyrPrikazyDoVyssiho (const Helios: IHelios; ids:TArray); safecall; + procedure ImportVCKmen2VyrPrikaz (const Helios: IHelios; idVPr: Integer); safecall; + + procedure ZakazkaZobrazTavby (const Helios: IHelios; ids:TArray); safecall; + procedure ZakazkaZobrazAtestyTaveb (const Helios: IHelios; ids:TArray); safecall; + + procedure ImportProcentaZtrat (const Helios: IHelios); safecall; + + procedure VytvorTempExtKomPar (const Helios: IHelios; id: integer); safecall; + + procedure RozpRezii_PseudoAutomat (const Helios: IHelios; const arrID: TArray); safecall; + + procedure ImportObedy (const Helios: IHelios); + + end; + + TKmen = record + sz, regCis, nazev1, nazev2, nazev3, skp, sortiment, mj, mena, menaRework, v_min, f_ot, f_z, barcode, technologie: string; + vyrCis, popisVC, umisteniVC, skutPopis, cOrgReworkS, cOrgReworkSuff: string; + kateg, typ, dodLhuta, lhutaNaskl, cOrgDod, cOrgVyr, cOrgRework, balMnoz, minDod, minOdb, minMnoz, maxMnoz: Integer; + hmot, jcena, jcenaRework: Extended; + obj: boolean; + datKalibrace: TDatetime; + end; + + TObed = record + cisZam: integer; + pocetObedu: integer; + end; + + TForma = record + sz, regCis, nazev1, nazev2, vc, popisVc, skutPopVc, cilSklad, vykres: string; + jcena: extended; + end; + + TMatrixSupp = record + cisOrg: string; + suffix: string; + kplCisOrg: string; + suppName: string; + ship: string; + mena: string; // koruna/euro + end; + + +const + Class_Kdynium: TGUID = '{C45BDCA2-0AAF-4B64-A649-8BAA37C3940F}'; + sklMatrix = '00100200200200'; + sklMeridla = ''; + tblPlanLis = '[dbo].[_hdc_TabPlanNasazeniLisu]'; + tblVazbyZak = '[dbo].[_hdc_TabVazbyZakazek]'; + CRLF = #13#10; + clRed = $0000FF; + + +IMPLEMENTATION + +uses System.Variants, Vcl.Controls, System.Generics.Collections, System.Generics.Defaults, System.Win.ComServ, Vcl.Forms, Winapi.ShlObj, + Vcl.Dialogs, Winapi.Windows, Vcl.StdCtrls, System.DateUtils, Vcl.Clipbrd, + nExcel, xlsxwrite, helUtils, frmGenPolos, frmOdlitek, frmGenTPV, frmOdvTavby, frmOdvLis, frmDavkyObecne, frmEvidOper, +{$IFDEF MadExcept} + madExcept, +{$ENDIF} + frmHrOdvOper, frmSchvaleniZak, frmOOPPohyb; + +var oVar1, oVar2: OleVariant; + LocalFormatSettings: TFormatSettings; + jeTest: boolean; + cestaExport, verText, skinName: string; + skinNum: byte; +{ + function TplgKdynium.DelphiCompilerVersion: Single; + begin + Result:= System.CompilerVersion; + end; + + function TplgKdynium.PartnerIdentification: WideString; + begin + Result:= 'HEIQ0100-TEST0'; //místo XXXXX doplnit vaše sériové èíslo urèené pro vývoj, pøidìlené firmou Asseco Solutions + end; +} + + + function VyberAdresar(var Foldr: string; Title: string): Boolean; + var BrowseInfo: TBrowseInfo; + ItemIDList: PItemIDList; + DisplayName: array[0..MAX_PATH] of Char; + begin + Result := False; + FillChar(BrowseInfo, SizeOf(BrowseInfo), #0); + with BrowseInfo do + begin + hwndOwner := Application.Handle; + pszDisplayName := @DisplayName[0]; + lpszTitle := PChar(Title); + ulFlags := BIF_RETURNONLYFSDIRS; + end; + ItemIDList := SHBrowseForFolder(BrowseInfo); + if Assigned(ItemIDList) then + if SHGetPathFromIDList(ItemIDList, DisplayName) then + begin + Foldr := DisplayName; + Result := True; + end; + end; + + + + + function OtevriSoubor(flt1,flt2: string; var nazev: string): Boolean; + var dlgOpenW7: TFileOpenDialog; // dialog pro Windows Vista a novejsi + titulek, filtr1, filtr2: string; + iniDir: string; + begin + result:= false; + titulek:= 'Vyberte soubor pro import'; + filtr1:= IfThen(flt1<>'',flt1,'XML soubory'); + filtr2:= IfThen(flt2<>'',flt2,'*.xml'); + nazev:= ''; + iniDir:= GetEnvironmentVariable('USERPROFILE') + '\Desktop'; + try + dlgOpenW7:= TFileOpenDialog.Create(nil); + dlgOpenW7.Title:= titulek; + dlgOpenW7.OkButtonLabel:= 'Vybrat'; + with dlgOpenW7.FileTypes.Add do + begin + DisplayName:= filtr1; + FileMask:= filtr2; + end; + dlgOpenW7.DefaultFolder:= iniDir; + if dlgOpenW7.Execute then + begin + nazev:= dlgOpenW7.FileName; + result:= true; + end; + finally + dlgOpenW7.Free; + end; + end; + + + + + function ClearForma(f: TForma): boolean; + begin + result:= true; + try + f.sz:= ''; + f.regCis:= ''; + f.nazev1:= ''; + f.nazev2:= ''; + f.vc:= ''; + f.popisVc:= ''; + f.skutPopVc:= ''; + f.cilSklad:= ''; + f.vykres:= ''; + f.jcena:= 0; + except + result:= false; + end; + end; + + + + + function ClearKmen (k: TKmen): boolean; + begin + result:= true; + try + k.sz:= ''; + k.regCis:= ''; + k.nazev1:= ''; + k.nazev2:= ''; + k.nazev3:= ''; + k.technologie:= ''; + k.hmot:= 0; + k.skp:= ''; + k.sortiment:= ''; + k.mj:= ''; + k.mena:= ''; + k.v_min:= ''; + k.f_ot:= ''; + k.f_z:= ''; + k.barcode:= ''; + k.kateg:= 0; + k.typ:= 0; + k.obj:= true; + k.cOrgDod:= 0; + k.cOrgVyr:= 0; + k.cOrgRework:= 0; + k.cOrgReworkSuff:= ''; + k.cOrgReworkS:= ''; + k.menaRework:= ''; + k.jcenaRework:= 0; + k.balMnoz:= 0; + k.minDod:= 0; + k.minOdb:= 0; + k.dodLhuta:= 0; + k.lhutaNaskl:= 0; + k.minMnoz:= 0; + k.maxMnoz:= 0; + k.jcena:= 0; + k.f_ot:= ''; + k.f_z:= ''; + + k.popisVC:= ''; + k.umisteniVC:= ''; + except + result:= false; + end; + end; + + + + + procedure TplgKdynium.ImportVCKmen2VyrPrikaz (const Helios: IHelios; idVPr: Integer); + var stav, idKZ, idVCKm, idVCPr: integer; + lSQL, vc, pop, skutPop: string; + begin + if HeliosExistsTest(Helios, tblPrikaz, 'ID=' + idVPr.ToString) then + begin + stav:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT StavPrikazu FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); + if (stav=30) then + begin + idKZ:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDTabKmen FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); + if Helios.Prenos(bidVyrCisKm, 'TabVyrCK.ID', oVar1, 'TabVyrCK.IDKmenZbozi=' + idKZ.ToString, 'Vyberte kartu Výrobního čísla', true) then + begin + vc:= ''; + pop:= ''; + skutPop:= ''; + idVCKm:= StrToInt(VarToStr(oVar1)); + lSQL:= 'SELECT k.Nazev1, k.Nazev2, ISNULL(e._SkutecnyPopis,N'''') AS Pop FROM ' + tblVyrCK + ' k LEFT JOIN ' + tblVyrCKE + ' e ON (k.ID=e.ID) WHERE k.ID=' + idVCKm.ToString; + with Helios.OpenSQL(lSQL) do + if (RecordCount=1) then + begin + vc:= VarToStr(FieldValues(0)); + pop:= VarToStr(FieldValues(1)); + skutPop:= VarToStr(FieldValues(2)); + end; + if not(HeliosExistsTest(Helios, tblPrikazVC, 'IDPrikaz=' + idVPr.ToString + ' AND VyrCislo=N' + QuotedStr(vc))) then + begin + lSQL:= 'INSERT ' + tblPrikazVC + ' (IDPrikaz, VyrCislo, Popis) SELECT ' + idVPr.ToString + ', N' +QuotedStr(vc) + ', N' + QuotedStr(pop); + lSQL:= lSQL + CRLF + ' SELECT SCOPE_IDENTITY()'; + try + with Helios.OpenSQL(lSQL) do + begin + idVCPr:= StrToInt(VarToStr(FieldValues(0))); + if (skutPop<>'') then + try + HeliosZapisExtInfo(Helios, tblPrikazVCE, '_SkutecnyPopis=N' + skutPop.QuotedString, idVCPr); +{ + lSQL:= 'IF NOT EXISTS(SELECT ID FROM ' + tblPrikazVCE + ' WHERE ID=' + idVCPr.ToString + ') INSERT ' + tblPrikazVCE + ' (ID) SELECT ' + idVCPr.ToString; + Helios.ExecSQL(lSQL); + Helios.ExecSQL('UPDATE ' + tblPrikazVCE + ' SET _SkutecnyPopis=N' + skutPop.QuotedString + ' WHERE ID=' + idVCPr.ToString); +} + except on E:Exception do + Helios.Error(#1'Chyba při kopírování ext.info VČ: '#1 + e.Message); + end; + end; + except on E:Exception do + Helios.Error(#1'Chyba při kopírování VČ: '#1 + e.Message); + end; + end; + end; + end + else + Helios.Error(#1'Výrobní příkaz není ve stavu Zadáno.'#1); + end; + end; + + + + + procedure TplgKdynium.VyrPrikazyDoVyssiho(const Helios: IHelios; ids: TArray); + var lSQL, podm: string; + idVPr: integer; + begin + if (Length(ids)>0) then // 19002112 + begin + lSQL:= helUtils.getHeliosStrVal(Helios, '', 'SELECT k.CisloZbozi FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.ID=' + ids[0].ToString); + podm:= 'TabPrikaz.StavPrikazu IN (20,30) AND TabPrikaz.IDZakazka=(SELECT IDZakazka FROM ' + tblPrikaz + ' WHERE ID=' + ids[0].ToString + ')'; + podm:= podm + ' AND TabPrikaz.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0)'; // AND SkupZbo IN (SELECT * FROM'; +// podm:= podm + ' dbo.ef_GetSkupZboZVyssichVazeb(N' + QuotedStr(lSQL) + ')))'; + if Helios.Prenos(bidVyrPrik, 'TabPrikaz.ID', oVar1, podm, 'Vyberte vyšší příkaz (ver.' + verText + ')', true) then + begin + idVPr:= StrToInt(VarToStr(oVar1)); + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabPrikazyDoVyssiho'') IS NOT NULL DELETE FROM dbo._temp_TabPrikazyDoVyssiho WHERE Autor=SUSER_SNAME()' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabPrikazyDoVyssiho'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabPrikazyDoVyssiho)'; + lSQL:= lSQL + ' DROP TABLE dbo._temp_TabPrikazyDoVyssiho' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''tempdb..#TabPrikazyDoVyssiho'') IS NOT NULL DROP TABLE #TabPrikazyDoVyssiho'; + Helios.ExecSQL(lSQL); + lSQL:= 'CREATE TABLE #TabPrikazyDoVyssiho (IDVyssi INT NOT NULL, IDNizsi INT NOT NULL, Autor NVARCHAR(80) DEFAULT SUSER_SNAME())'; + if (jeTest) then + lSQL:= StringReplace(lSQL, '#TabPri', 'dbo._temp_TabPri', [rfReplaceAll]); + Helios.ExecSQL(lSQL); + lSQL:= 'INSERT #TabPrikazyDoVyssiho (IDVyssi, IDNizsi) SELECT ' + idVPr.ToString + ', ID FROM ' + tblPrikaz + ' WHERE ID IN (' + helUtils.ArrayToString(ids, ',') + ')'; + if (jeTest) then + lSQL:= StringReplace(lSQL, '#TabPri', 'dbo._temp_TabPri', [rfReplaceAll]); + Helios.ExecSQL(lSQL); + if not(jeTest) then + Helios.ExecSQL('IF OBJECT_ID(N''dbo.ep_Vyroba_PrikazNizsiDoVyssiho'') IS NOT NULL EXEC dbo.ep_Vyroba_PrikazNizsiDoVyssiho'); + end; + end; + end; + + + + + procedure TplgKdynium.ImportProcentaZtrat(const Helios: IHelios); + var lSQL, radky, zaznam, msg, errMsg, sTemp: String; + cnt, sl, idxR, idxS, idSS, idVC, cntIns, cntAkt, overRadek, posunSl: integer; + arrRadky: TArray>; + cont: Boolean; + proc1, proc2: Double; + begin + overRadek:= 0; + posunSl:= 0; + if (Clipboard.HasFormat(CF_TEXT)) then + begin + errMsg:= ''; + cont:= true; + radky:= ''; + try + radky:= Clipboard.AsText; + sl:= PosCount(#9, LeftStr(radky, Pos(#13, radky)-1)) + 1; // pocet sloupcu + except on E:Exception do + cont:= false; + end; + if (radky<>'') and (cont) then + begin + cont:= true; + cntIns:= 0; + cntAkt:= 0; + cnt:= Length(radky)-Length(StringReplace(radky, Chr(13),'',[rfReplaceAll]))+1; + SetLength(arrRadky, cnt, 5); // index od 0, napevno 5 sloupcu, kdyby nepsali nadpis pro SZn a procentaN + if (Pos(#13, radky)>0) then + zaznam:= LeftStr(radky, Pos(#13, radky)-1) // nazvy sloupcu + else + zaznam:= radky; + if Helios.YesNo('Má importovaná oblast hlavičku ?', false) then + begin + Delete(radky,1,Pos(#13,radky)+1); // smaze hlavicku + SetLength(arrRadky,Length(arrRadky)-1); + end; + for idxR:=0 to High(arrRadky)-1 do + begin + if (Pos(#13,radky)>0) then + zaznam:= LeftStr(radky,Pos(#13,radky)-1) + else + zaznam:= radky; + zaznam:= Trim(StringReplace(zaznam, #9#9, #9' '#9,[rfReplaceAll])); + if (zaznam<>'') then + for idxS:=0 to sl-1 do + begin + if (zaznam<>'') then + begin + if (Pos(#9, zaznam)>0) then + begin + arrRadky[idxR,idxS]:= LeftStr(zaznam, Pos(#9, zaznam)-1); + Delete(zaznam,1,Pos(#9, zaznam)); + end + else + begin + arrRadky[idxR,idxS]:= zaznam; + zaznam:= ''; + end; + end; + end; + Delete(radky, 1, Pos(#13, radky)+1); + end; + + lSQL:= 'DROP TABLE IF EXISTS #TabImportProcentaZtrat' + CRLF + 'CREATE TABLE #TabImportProcentaZtrat (ID INT IDENTITY(1,1) NOT NULL, SkupZbo NVARCHAR(3) NOT NULL'; + lSQL:= lSQL + ', RegCis NVARCHAR(30) NOT NULL, Procento NUMERIC(12,2) DEFAULT 0.0 NOT NULL, SkupZboNizsi NVARCHAR(3), ProcentoNizsi NUMERIC(12,2), Autor NVARCHAR(80) DEFAULT SUSER_SNAME())'; + if (jeTest) then + lSQL:= lSQL.Replace('#TabImp', 'dbo._TabImp'); + Helios.ExecSQL(lSQL); + + waitStart(nil, 'Import procenta ztrát dílců', Length(arrRadky), clRed); + for idxR:=0 to High(arrRadky)-1 do + begin + arrRadky[idxR, 0]:= helUtils.sqlSanitize(arrRadky[idxR, 0].Trim); // sz + arrRadky[idxR, 0]:= arrRadky[idxR, 0].Replace(' ', ''); + arrRadky[idxR, 1]:= helUtils.sqlSanitize(arrRadky[idxR, 1].Trim); // rc + arrRadky[idxR, 1]:= arrRadky[idxR, 1].Replace(' ', ''); + arrRadky[idxR, 2]:= helUtils.sqlSanitize(arrRadky[idxR, 2].Trim); // procento + arrRadky[idxR, 2]:= arrRadky[idxR, 2].Replace(' ', ''); + arrRadky[idxR, 3]:= helUtils.sqlSanitize(arrRadky[idxR, 3].Trim); // podrizena sz + arrRadky[idxR, 3]:= arrRadky[idxR, 3].Replace(' ', ''); + arrRadky[idxR, 4]:= helUtils.sqlSanitize(arrRadky[idxR, 4].Trim); // procento + arrRadky[idxR, 4]:= arrRadky[idxR, 4].Replace(' ', ''); + + if (idxR mod 10=0) then + waitSetProgBar(idxR); + + if (arrRadky[idxR, 0]<>'') and (arrRadky[idxR, 1]<>'') then + begin + try + if (arrRadky[idxR, 2]='') then + proc1:= 0 + else + if not(TryStrToFloat(arrRadky[idxR, 2].Replace(' ', '').Replace('.', ','), proc1)) then + proc1:= 0; + + if (arrRadky[idxR, 4]='') then + proc2:= 0 + else + if not(TryStrToFloat(arrRadky[idxR, 4].Replace(' ', '').Replace('.', ','), proc2)) then + proc2:= 0; + + lSQL:= 'INSERT #TabImportProcentaZtrat (SkupZbo, RegCis, Procento, SkupZboNizsi, ProcentoNizsi) SELECT N' + arrRadky[idxR, 0].QuotedString; + lSQL:= lSQL + ', N' + arrRadky[idxR, 1].QuotedString + ', ' + proc1.ToString.Replace(',', '.') + ', N' + arrRadky[idxR, 3].QuotedString + ', ' + proc2.ToString.Replace(',', '.'); + if (jeTest) then + lSQL:= lSQL.Replace('#TabImp', 'dbo._TabImp'); + Helios.ExecSQL(lSQL); + except on E:Exception do + errMsg:= E.Message + CRLF + lSQL; + end; + end; + end; + waitEnd; + + if not(jeTest) then + Helios.ExecSQL('IF OBJECT_ID(N''dbo.ep_HDC_TPV_ImportProcentaZtrat'', N''P'') IS NOT NULL EXEC dbo.ep_HDC_TPV_ImportProcentaZtrat'); +// Helios.ExecSQL('DROP TABLE IF EXISTS dbo._TabImportProcentaZtrat'); + Helios.ExecSQL('DROP TABLE IF EXISTS #TabImportProcentaZtrat'); + + + Helios.Refresh(false); +// Helios.Info(#1'Nových karet forem: ' + cntIns.ToString + CRLF + 'Upravených karet forem: ' + cntAkt.ToString + #1); + end; + end; + end; + + + + + procedure TplgKdynium.ImportKmenFormy2 (const Helios: IHelios); + const arrFP: TArray = ['F00', 'F01', 'F10', 'F11', 'F20', 'F21']; + var lSQL, radky, zaznam, msg, errMsg, sTemp: String; + cnt, sl, idxR, idxS, idKZ, idSS, idVC, cntIns, cntAkt, overRadek, posunSl: integer; + arrRadky: TArray>; + forma: TForma; + cont: Boolean; + begin + overRadek:= 0; + posunSl:= 0; + + if (Clipboard.HasFormat(CF_TEXT)) then + begin + errMsg:= ''; + cont:= true; + radky:= ''; + try + radky:= Clipboard.AsText; + sl:= PosCount(#9, LeftStr(radky, Pos(#13, radky)-1)) + 1; // pocet sloupcu + except on E:Exception do + cont:= false; + end; + if (radky<>'') and (cont) then + begin + cont:= true; + cntIns:= 0; + cntAkt:= 0; + cnt:= Length(radky)-Length(StringReplace(radky, Chr(13),'',[rfReplaceAll]))+1; + SetLength(arrRadky, cnt, sl); // index od 0 + if (Pos(#13, radky)>0) then + zaznam:= LeftStr(radky, Pos(#13, radky)-1) // nazvy sloupcu + else + zaznam:= radky; + if Helios.YesNo('Má importovaná oblast hlavičku ?', false) then + begin + Delete(radky,1,Pos(#13,radky)+1); // smaze hlavicku + SetLength(arrRadky,Length(arrRadky)-1); + end; + for idxR:=0 to High(arrRadky)-1 do + begin + if (Pos(#13,radky)>0) then + zaznam:= LeftStr(radky,Pos(#13,radky)-1) + else + zaznam:= radky; + zaznam:= Trim(StringReplace(zaznam, #9#9, #9' '#9,[rfReplaceAll])); + if (zaznam<>'') then + for idxS:=0 to sl-1 do + begin + if (zaznam<>'') then + begin + if (Pos(#9, zaznam)>0) then + begin + arrRadky[idxR,idxS]:= LeftStr(zaznam, Pos(#9, zaznam)-1); + Delete(zaznam,1,Pos(#9, zaznam)); + end + else + begin + arrRadky[idxR,idxS]:= zaznam; + zaznam:= ''; + end; + end; + end; + Delete(radky,1,Pos(#13, radky)+1); + end; + + waitStart(nil, 'Import dat karet forem', Length(arrRadky), clRed); + for idxR:=0 to High(arrRadky)-1 do + begin + if (idxR mod 10=0) then + waitSetProgBar(idxR); + try + idKZ:= 0; + ClearForma(forma); + + forma.sz:= Trim(arrRadky[idxR, 0]); + posunSl:= 0; + if (MatchStr(UpperCase(forma.sz), arrFP)) then + posunSl:= 1 + else + forma.sz:= 'F00'; + +{ + if Trim(arrRadky[idxR, 0])<>Trim(arrRadky[idxR, 1]) then + kmen.sz:= Trim(arrRadky[idxR, 0]); + if (Length(kmen.sz)=2) then + kmen.sz:= '0' + kmen.sz; +} + forma.regCis:= Trim(arrRadky[idxR, 0 + posunSl]); + if (forma.regCis='') then + continue; + + forma.nazev1:= Trim(arrRadky[idxR, 1 + posunSl]); + forma.vc:= Trim(arrRadky[idxR, 2 + posunSl]); + forma.popisVc:= Trim(arrRadky[idxR, 3 + posunSl]); + forma.skutPopVc:= Trim(arrRadky[idxR, 4 + posunSl]); + forma.vykres:= Trim(arrRadky[idxR, 5 + posunSl]); + forma.cilSklad:= Trim(arrRadky[idxR, 7 + posunSl]); + forma.jcena:= 0; + + with Helios.OpenSQL('SELECT ID FROM ' + tblKZ + ' WHERE SkupZbo=N' + QuotedStr(forma.sz) + ' AND RegCis=N' + QuotedStr(forma.regCis)) do + if (RecordCount=1) then + idKZ:= StrToInt(VarToStr(FieldValues(0))); + if (idKZ=0) then + begin + lSQL:= 'DECLARE @i INT=0' + CRLF + 'EXEC @i=dbo.hp_VytvorPolozkuKmeneZbozi @Dilec=1, @Naradi=1, @SZ=N' + forma.sz.QuotedString; + lSQL:= lSQL + IfThen(forma.regCis<>'', ', @RegCis=N' + forma.regCis.QuotedString, ''); + lSQL:= lSQL + IfThen(forma.nazev1<>'', ', @Nazev1=N' + forma.nazev1.QuotedString, ''); + lSQL:= lSQL + IfThen(forma.vykres<>'', ', @Vykres=N' + forma.vykres.QuotedString, ''); + lSQL:= lSQL + CRLF + 'SELECT @i'; + +// lSQL:= 'INSERT ' + tblKZ + ' (DruhSkladu, SkupZbo, RegCis, Nazev1, Nazev2) SELECT 1, N' + QuotedStr(forma.sz) + ', N' + QuotedStr(forma.regCis); +// lSQL:= lSQL + ', N' + QuotedStr(forma.nazev1) + ', N' + QuotedStr(forma.nazev2) + CRLF; +// lSQL:= lSQL + 'SELECT SCOPE_IDENTITY()'; + try + with Helios.OpenSQL(lSQL) do + idKZ:= StrToInt(VarToStr(FieldValues(0))); + Inc(cntIns); + except on E:Exception do + begin + Helios.Error(#1'Chyba INS: ' + e.Message +#1); + idKZ:= 0; + end; + end; + end; + if (idKZ>0) then + begin + if (forma.cilSklad<>'') and (helUtils.HeliosExistsTest(Helios, tblStrom, 'Cislo=N' + forma.cilSklad.QuotedString)) then + begin + idSS:= 0; + lSQL:= 'DECLARE @idSS INT' + CRLF + 'SET @idSS=(SELECT ID FROM ' + tblSS + ' WHERE IDSklad=N' + forma.cilSklad.QuotedString + ' AND IDKmenZbozi=' + idKZ.ToString + ')'; + lSQL:= lSQL + CRLF + 'IF (@idSS IS NULL)' + CRLF + ' EXEC dbo.hp_InsertStavSkladu @IDKmen=' + idKZ.ToString + ', @IDSklad=N'; + lSQL:= lSQL + forma.cilSklad.QuotedString + ', @IDZboSklad=@idSS OUT' + CRLF + 'SELECT @idSS'; + try + with Helios.OpenSQL(lSQL) do + idSS:= StrToInt(VarToStr(FieldValues(0))); + except + idSS:= 0; + end; + if (idSS>0) and (forma.vc<>'') then + begin + idVC:= 0; + lSQL:= 'DECLARE @idVC INT, @idVCK INT' + CRLF + 'SET @idVC=(SELECT ID FROM ' + tblVyrCS + ' WHERE IDStavSkladu=' + idSS.ToString + ' AND Nazev1=N'; + lSQL:= lSQL + forma.vc.QuotedString + ')' + CRLF; + lSQL:= lSQL + 'IF (@idVC IS NULL)' + CRLF + ' EXEC dbo.hp_OZInsertVyrCS @IDVyrCS=@idVC OUT, @IDVyrCK=@idVCK OUT, @IDZboSklad=' + idSS.ToString; + lSQL:= lSQL + ', @Nazev1=N' + forma.vc.QuotedString + CRLF + 'SELECT @idVC'; + try + with Helios.OpenSQL(lSQL) do + idVC:= StrToInt(VarToStr(FieldValues(0))); + except + idVC:= 0; + end; + if (idVC>0) and (forma.skutPopVc<>'') then + begin + lSQL:= 'UPDATE ' + tblVyrCSE + ' SET _SkutecnyPopis=N' + forma.skutPopVc.QuotedString + ' WHERE ID=' + idVC.ToString + CRLF + 'IF (@@ROWCOUNT=0)' + CRLF; + lSQL:= lSQL + ' INSERT ' + tblVyrCSE + ' (ID, _SkutecnyPopis) SELECT ' + idVC.ToString + ', N' + forma.skutPopVc.QuotedString; + Helios.ExecSQL(lSQL); + end; + end; + end; + + end; + except on E:Exception do + errMsg:= E.Message + CRLF + lSQL; + end; + end; + waitEnd; + + Helios.Refresh(true); + Helios.Info(#1'Nových karet forem: ' + cntIns.ToString + CRLF + 'Upravených karet forem: ' + cntAkt.ToString + #1); + end; + end; + end; + + + + + procedure TplgKdynium.ImportKmenFormy (const Helios: IHelios); + const arrFP: TArray = ['F00', 'F01', 'F10', 'F11', 'F20', 'F21']; + var lSQL, radky, zaznam, msg, errMsg, sTemp: String; + cnt, sl, idxR, idxS, idKZ, idSS, idVC, cntIns, cntAkt, overRadek, posunSl: integer; + arrRadky: TArray>; + forma: TForma; + cont: Boolean; + begin + overRadek:= 0; + posunSl:= 0; + + if (Clipboard.HasFormat(CF_TEXT)) then + begin + errMsg:= ''; + cont:= true; + radky:= ''; + try + radky:= Clipboard.AsText; + sl:= PosCount(#9, LeftStr(radky, Pos(#13, radky)-1)) + 1; // pocet sloupcu + except on E:Exception do + cont:= false; + end; + if (radky<>'') and (cont) then + begin + cont:= true; + cntIns:= 0; + cntAkt:= 0; + cnt:= Length(radky)-Length(StringReplace(radky, Chr(13),'',[rfReplaceAll]))+1; + SetLength(arrRadky, cnt, sl); // index od 0 + if (Pos(#13, radky)>0) then + zaznam:= LeftStr(radky, Pos(#13, radky)-1) // nazvy sloupcu + else + zaznam:= radky; + if Helios.YesNo('Má importovaná oblast hlavičku ?', false) then + begin + Delete(radky,1,Pos(#13,radky)+1); // smaze hlavicku + SetLength(arrRadky,Length(arrRadky)-1); + end; + for idxR:=0 to High(arrRadky)-1 do + begin + if (Pos(#13,radky)>0) then + zaznam:= LeftStr(radky,Pos(#13,radky)-1) + else + zaznam:= radky; + zaznam:= Trim(StringReplace(zaznam, #9#9, #9' '#9,[rfReplaceAll])); + if (zaznam<>'') then + for idxS:=0 to sl-1 do + begin + if (zaznam<>'') then + begin + if (Pos(#9, zaznam)>0) then + begin + arrRadky[idxR,idxS]:= LeftStr(zaznam, Pos(#9, zaznam)-1); + Delete(zaznam,1,Pos(#9, zaznam)); + end + else + begin + arrRadky[idxR,idxS]:= zaznam; + zaznam:= ''; + end; + end; + end; + Delete(radky,1,Pos(#13, radky)+1); + end; + + waitStart(nil, 'Import dat karet forem', Length(arrRadky), clRed); + for idxR:=0 to High(arrRadky)-1 do + begin + if (idxR mod 10=0) then + waitSetProgBar(idxR); + try + idKZ:= 0; + ClearForma(forma); + + forma.sz:= Trim(arrRadky[idxR, 0]); + posunSl:= 0; + if (MatchStr(UpperCase(forma.sz), arrFP)) then + posunSl:= 1 + else + forma.sz:= 'F00'; +{ + if Trim(arrRadky[idxR, 0])<>Trim(arrRadky[idxR, 1]) then + kmen.sz:= Trim(arrRadky[idxR, 0]); + if (Length(kmen.sz)=2) then + kmen.sz:= '0' + kmen.sz; +} + forma.regCis:= Trim(arrRadky[idxR, 0 + posunSl]); + if (forma.regCis='') then + Continue; + + forma.nazev1:= Trim(arrRadky[idxR, 1 + posunSl]); +// TryStrToFloat(StringReplace(Trim(arrRadky[idxR, 19]),' ','',[rfReplaceAll]), kmen.jcena); +// TryStrToInt(Trim(arrRadky[idxR, 23]), kmen.minDod); + forma.vc:= Trim(arrRadky[idxR, 2 + posunSl]); + forma.popisVc:= Trim(arrRadky[idxR, 3 + posunSl]); + forma.skutPopVc:= Trim(arrRadky[idxR, 4 + posunSl]); + forma.vykres:= Trim(arrRadky[idxR, 5 + posunSl]); + forma.cilSklad:= Trim(arrRadky[idxR, 6 + posunSl]); + TryStrToFloat(StringReplace(Trim(arrRadky[idxR, 7 + posunSl]),' ','',[rfReplaceAll]), forma.jcena); + + with Helios.OpenSQL('SELECT ID FROM ' + tblKZ + ' WHERE SkupZbo=N' + QuotedStr(forma.sz) + ' AND RegCis=N' + QuotedStr(forma.regCis)) do + if (RecordCount=1) then + idKZ:= StrToInt(VarToStr(FieldValues(0))); + if (idKZ=0) then + begin + lSQL:= 'INSERT ' + tblKZ + ' (DruhSkladu, SkupZbo, RegCis, Nazev1, Nazev2) SELECT 1, N' + QuotedStr(forma.sz) + ', N' + QuotedStr(forma.regCis); + lSQL:= lSQL + ', N' + QuotedStr(forma.nazev1) + ', N' + QuotedStr(forma.nazev2) + CRLF; + lSQL:= lSQL + 'SELECT SCOPE_IDENTITY()'; + try + with Helios.OpenSQL(lSQL) do + idKZ:= StrToInt(VarToStr(FieldValues(0))); + Inc(cntIns); + except on E:Exception do + begin + Helios.Error(#1'Chyba INS: ' + e.Message +#1); + idKZ:= 0; + end; + end; + end + else + begin +// lSQL:= 'UPDATE ' + tblKZ + ' SET Nazev1=N' + QuotedStr(forma.nazev1) + ', Nazev2=N' + QuotedStr(forma.nazev2) + ' WHERE ID=' + idKZ.ToString; +// Helios.ExecSQL(lSQL); +// Inc(cntAkt); + end; + if (idKZ>0) then + begin +// lSQL:= 'UPDATE ' + tblKZe + ' SET _Naradi_ReworkOrg=' + IfThen(kmen.cOrgRework=0, 'NULL', kmen.cOrgRework.ToString) + ' WHERE ID=' + idKZ.ToString; +// lSQL:= 'UPDATE ' + tblKZ + ' SET Vykres=N' + IfThen(forma.vykres='', 'ULL', QuotedStr(forma.vykres)) + ' WHERE ID=' + idKZ.ToString; +// Helios.ExecSQL(lSQL); + + if (forma.cilSklad<>'') and (helUtils.HeliosExistsTest(Helios, tblStrom, 'Cislo=N' + QuotedStr(forma.cilSklad))) then + begin + idSS:= 0; + lSQL:= 'DECLARE @idSS INT' + CRLF + 'SET @idSS=(SELECT ID FROM ' + tblSS + ' WHERE IDSklad=N' + QuotedStr(forma.cilSklad) + ' AND IDKmenZbozi=' + idKZ.ToString + ')'; + lSQL:= lSQL + CRLF + 'IF (@idSS IS NULL)' + CRLF + ' BEGIN' + CRLF + ' INSERT ' + tblSS + ' (IDSklad, IDKmenZbozi) VALUES (N' + QuotedStr(forma.cilSklad)+ ', '; + lSQL:= lSQL + idKZ.ToString + ')' + CRLF + ' SET @idSS=SCOPE_IDENTITY()' + CRLF + ' END' + CRLF + 'SELECT @idSS'; + try + with Helios.OpenSQL(lSQL) do + idSS:= StrToInt(VarToStr(FieldValues(0))); + except + idSS:= 0; + end; + if (idSS>0) and (forma.vc<>'') then + begin + idVC:= 0; + lSQL:= 'DECLARE @idVC INT' + CRLF + 'SET @idVC=(SELECT ID FROM ' + tblVyrCS + ' WHERE IDStavSkladu=' + idSS.ToString + ' AND Nazev1=N' + QuotedStr(forma.vc) + ')' + CRLF; + lSQL:= lSQL + 'IF (@idVC IS NULL)' + CRLF + ' BEGIN' + ' INSERT ' + tblVyrCS + ' (IDStavSkladu, Nazev1) VALUES (' + idSS.ToString + ', N' + QuotedStr(forma.vc) + ')'; + lSQL:= lSQL + CRLF + ' SET @idVC=SCOPE_IDENTITY()' + CRLF + ' END' + CRLF + 'SELECT @idVC'; + try + with Helios.OpenSQL(lSQL) do + idVC:= StrToInt(VarToStr(FieldValues(0))); + except + idVC:= 0; + end; + if (idVC>0) then + Helios.ExecSQL('UPDATE ' + tblVyrCSE + ' SET _SkutecnyPopis=N' + IfThen(forma.skutPopVc='', 'ULL', QuotedStr(forma.skutPopVc)) + ' WHERE ID=' + idVC.ToString); + end; + end; + + end; + except on E:Exception do + errMsg:= E.Message + CRLF + lSQL; + end; + end; + waitEnd; + + Helios.Refresh(true); + Helios.Info(#1'Nových karet forem: ' + cntIns.ToString + CRLF + 'Upravených karet forem: ' + cntAkt.ToString + #1); + end; + end; + end; + + + + + procedure TplgKdynium.ImportKmenFormyVC (const Helios: IHelios); + const arrFP: TArray = ['F00', 'F01', 'F10', 'F11', 'F20', 'F21']; + var lSQL, radky, zaznam, msg, errMsg, sTemp: String; + cnt, sl, idxR, idxS, idKZ, idSS, idVC, cntIns, cntAkt, overRadek, posunSl: integer; + arrRadky: TArray>; + forma: TForma; + cont, jsemNew: Boolean; + begin + overRadek:= 0; + posunSl:= 0; + + if (Clipboard.HasFormat(CF_TEXT)) then + begin + errMsg:= ''; + cont:= true; + radky:= ''; + try + radky:= Clipboard.AsText; + sl:= PosCount(#9, LeftStr(radky, Pos(#13, radky)-1)) + 1; // pocet sloupcu + except on E:Exception do + cont:= false; + end; + if (radky<>'') and (cont) then + begin + cont:= true; + cntIns:= 0; + cntAkt:= 0; + cnt:= Length(radky)-Length(StringReplace(radky, Chr(13),'',[rfReplaceAll]))+1; + SetLength(arrRadky, cnt, sl); // index od 0 + if (Pos(#13, radky)>0) then + zaznam:= LeftStr(radky, Pos(#13, radky)-1) // nazvy sloupcu + else + zaznam:= radky; + if Helios.YesNo('Má importovaná oblast hlavičku ?', false) then + begin + Delete(radky,1,Pos(#13,radky)+1); // smaze hlavicku + SetLength(arrRadky,Length(arrRadky)-1); + end; + for idxR:=0 to High(arrRadky)-1 do + begin + if (Pos(#13,radky)>0) then + zaznam:= LeftStr(radky,Pos(#13,radky)-1) + else + zaznam:= radky; + zaznam:= Trim(StringReplace(zaznam, #9#9, #9' '#9,[rfReplaceAll])); + if (zaznam<>'') then + for idxS:=0 to sl-1 do + begin + if (zaznam<>'') then + begin + if (Pos(#9, zaznam)>0) then + begin + arrRadky[idxR,idxS]:= LeftStr(zaznam, Pos(#9, zaznam)-1); + Delete(zaznam,1,Pos(#9, zaznam)); + end + else + begin + arrRadky[idxR,idxS]:= zaznam; + zaznam:= ''; + end; + end; + end; + Delete(radky,1,Pos(#13, radky)+1); + end; + + waitStart(nil, 'Import dat karet forem', Length(arrRadky), clRed); + for idxR:=0 to High(arrRadky)-1 do + begin + if (idxR mod 10=0) then + waitSetProgBar(idxR); + try + idKZ:= 0; + jsemNew:= false; + ClearForma(forma); + + forma.sz:= Trim(arrRadky[idxR, 0]); + if (forma.sz='') then + Continue; + + posunSl:= 1; + + forma.regCis:= Trim(arrRadky[idxR, 1 + posunSl]); + if (forma.regCis='') then + Continue; + + forma.vc:= Trim(arrRadky[idxR, 2 + posunSl]); + forma.popisVc:= Trim(arrRadky[idxR, 3 + posunSl]); + forma.skutPopVc:= Trim(arrRadky[idxR, 4 + posunSl]); + forma.vykres:= Trim(arrRadky[idxR, 5 + posunSl]); + + with Helios.OpenSQL('SELECT ID FROM ' + tblKZ + ' WHERE SkupZbo=N' + forma.sz.QuotedString + ' AND RegCis=N' + forma.regCis.QuotedString) do + if (RecordCount=1) then + idKZ:= StrToInt(VarToStr(FieldValues(0))); + if (idKZ=0) then + begin + lSQL:= 'DECLARE @i INT=0' + CRLF + 'EXEC @i=dbo.hp_VytvorPolozkuKmeneZbozi @Dilec=1, @Naradi=1, @SZ=N' + forma.sz.QuotedString; + lSQL:= lSQL + IfThen(forma.regCis<>'', ', @RegCis=N' + forma.regCis.QuotedString, ''); + lSQL:= lSQL + IfThen(forma.nazev1<>'', ', @Nazev1=N' + forma.nazev1.QuotedString, ''); + lSQL:= lSQL + IfThen(forma.nazev2<>'', ', @Nazev2=N' + forma.nazev2.QuotedString, ''); + lSQL:= lSQL + IfThen(forma.vykres<>'', ', @Vykres=N' + forma.vykres.QuotedString, ''); + lSQL:= lSQL + CRLF + 'SELECT @i'; + try + with Helios.OpenSQL(lSQL) do + idKZ:= StrToInt(VarToStr(FieldValues(0))); + Inc(cntIns); + jsemNew:= true; + except on E:Exception do + begin + Helios.Error(#1'Chyba INS: ' + e.Message +#1); + idKZ:= 0; + end; + end; + end + else + begin +// lSQL:= 'UPDATE ' + tblKZ + ' SET Nazev1=N' + QuotedStr(forma.nazev1) + ', Nazev2=N' + QuotedStr(forma.nazev2) + ' WHERE ID=' + idKZ.ToString; +// Helios.ExecSQL(lSQL); +// Inc(cntAkt); + end; + if (idKZ>0) then + begin + lSQL:= ''; + if (forma.nazev1<>'') then + lSQL:= 'UPDATE ' + tblKZ + ' SET Nazev1=N' + forma.nazev1.QuotedString + ' WHERE ID=' + idKZ.ToString + ' AND Nazev1<>N' + forma.nazev1.QuotedString + CRLF; + + if (forma.nazev2<>'') then + lSQL:= lSQL + 'UPDATE ' + tblKZ + ' SET Nazev2=N' + forma.nazev2.QuotedString + ' WHERE ID=' + idKZ.ToString + ' AND Nazev2<>N' + + forma.nazev2.QuotedString + CRLF; + + if (forma.vykres<>'') then + lSQL:= lSQL + 'UPDATE ' + tblKZ + ' SET Vykres=N' + forma.vykres.QuotedString + ' WHERE ID=' + idKZ.ToString + ' AND ISNULL(Vykres,N'''')<>N' + + forma.vykres.QuotedString + CRLF; + if (lSQL<>'') then + Helios.ExecSQL(lSQL); + + if (forma.skutPopVc<>'') then + begin + lSQL:= 'DECLARE @i INT' + CRLF + 'SET @i=(SELECT id FROM ' + tblVyrCK + ' WHERE IDKmenZbozi=' + idKZ.ToString + ' AND Nazev1=N'; + lSQL:= lSQL + forma.vc.QuotedString + ')' + CRLF + 'IF (@i>0) UPDATE ' + tblVyrCK + ' SET Nazev2=N' + forma.popisVc.QuotedString + ' WHERE ID=@i' + CRLF; + lSQL:= lSQL + 'IF (@i IS NULL) EXEC dbo.hp_OZInsertVyrCK @IDVyrCK=@i OUT, @IDKmenZbozi=' + idKZ.ToString + ', @Nazev1=N'; + lSQL:= lSQL + forma.vc.QuotedString + ', @Nazev2=N' + forma.popisVc.QuotedString + CRLF; + lSQL:= lSQL + 'IF (@i>0) AND NOT EXISTS(SELECT ID FROM ' + tblVyrCKE + ' WHERE ID=@i) INSERT ' + tblVyrCKE + ' (ID) VALUES (@i)' + CRLF; + lSQL:= lSQL + 'IF (@i>0) UPDATE ' + tblVyrCKE + ' SET _SkutecnyPopis=N' + forma.skutPopVc.QuotedString + ' WHERE ID=@i'; + Helios.ExecSQL(lSQL); + if not(jsemNew) then + Inc(cntAkt); + end; + end; + except on E:Exception do + errMsg:= E.Message + CRLF + lSQL; + end; + end; + waitEnd; + + Helios.Refresh(true); + Helios.Info(#1'Import ' + cntIns.ToString + ' nových karet' + CRLF + 'Aktualizací karet: ' + cntAkt.ToString + #1); + end; + end; + end; + + + + + procedure TplgKdynium.ImportKmenProMatrix (const Helios: IHelios; sklMatrix2: string); + var lSQL, radky, zaznam, msg, errMsg, sTemp: String; + cnt, sl, posunSl, idxR, idxS, idKZ, cntIns, cntAkt, overRadek: integer; + arrRadky: TArray>; + kmen: TKmen; + cont: Boolean; + begin + posunSl:= 0; + + if (sklMatrix2='') then + sklMatrix2:= sklMatrix; + overRadek:= 0; + if (Clipboard.HasFormat(CF_TEXT)) then + begin + errMsg:= ''; + cont:= true; + radky:= ''; + try + radky:= Clipboard.AsText; + sl:= PosCount(#9, LeftStr(radky, Pos(#13, radky)-1)) + 1; // pocet sloupcu + except on E:Exception do + cont:= false; + end; + if (radky<>'') and (cont) then + begin + cont:= true; + cntIns:= 0; + cntAkt:= 0; + cnt:= Length(radky)-Length(StringReplace(radky, Chr(13),'',[rfReplaceAll]))+1; + SetLength(arrRadky, cnt, sl); // index od 0 + if (Pos(#13, radky)>0) then + zaznam:= LeftStr(radky, Pos(#13, radky)-1) // nazvy sloupcu + else + zaznam:= radky; + if Helios.YesNo('Má importovaná oblast hlavičku ?', false) then + begin + Delete(radky,1,Pos(#13,radky)+1); // smaze hlavicku + SetLength(arrRadky,Length(arrRadky)-1); + end; + for idxR:=0 to High(arrRadky)-1 do + begin + if (Pos(#13,radky)>0) then + zaznam:= LeftStr(radky,Pos(#13,radky)-1) + else + zaznam:= radky; + zaznam:= Trim(StringReplace(zaznam, #9#9, #9' '#9,[rfReplaceAll])); + if (zaznam<>'') then + for idxS:=0 to sl-1 do + begin + if (zaznam<>'') then + begin + if (Pos(#9, zaznam)>0) then + begin + arrRadky[idxR,idxS]:= LeftStr(zaznam, Pos(#9, zaznam)-1); + Delete(zaznam,1,Pos(#9, zaznam)); + end + else + begin + arrRadky[idxR,idxS]:= zaznam; + zaznam:= ''; + end; + end; + end; + Delete(radky,1,Pos(#13, radky)+1); + end; + + waitStart(nil, 'Import dat karet nářadí', Length(arrRadky), clRed); + for idxR:=0 to High(arrRadky)-1 do + begin + if (idxR mod 10=0) then + waitSetProgBar(idxR); + try + idKZ:= 0; + clearKmen(kmen); +{ + if Trim(arrRadky[idxR, 0])<>Trim(arrRadky[idxR, 1]) then + kmen.sz:= Trim(arrRadky[idxR, 0]); + if (Length(kmen.sz)=2) then + kmen.sz:= '0' + kmen.sz; +} + kmen.sz:= Trim(arrRadky[idxR, posunSl + 0]); + kmen.sz:= '054'; + kmen.regCis:= Trim(arrRadky[idxR, posunSl + 1]); + kmen.nazev1:= Trim(arrRadky[idxR, posunSl + 2]); + if (kmen.regCis='') or (kmen.nazev1='') then + continue; + kmen.technologie:= Trim(arrRadky[idxR, posunSl + 6]); + kmen.nazev3:= Trim(arrRadky[idxR, posunSl + 9]); + kmen.skp:= Trim(arrRadky[idxR, posunSl + 3]); + kmen.sortiment:= Trim(arrRadky[idxR, posunSl + 5]); + if (LowerCase(kmen.nazev3)='katalogová') then + kmen.kateg:= 1; + if (LowerCase(kmen.nazev3)='speciální') then + kmen.kateg:= 2; + kmen.nazev3:= ''; + if (LowerCase(Trim(arrRadky[idxR, posunSl + 10]))='spotřební') then + kmen.typ:= 1; + if (LowerCase(Trim(arrRadky[idxR, posunSl + 10]))='obnovitelná') then + kmen.typ:= 2; + if (LowerCase(Trim(arrRadky[idxR, posunSl + 10]))='trvalá') then + kmen.typ:= 3; + if (LeftStr(LowerCase(Trim(arrRadky[idxR, posunSl + 10])),4)='klíč') then + kmen.typ:= 5; + if (LowerCase(Trim(arrRadky[idxR, posunSl + 10]))='měřidlo') then + kmen.typ:= 6; + TryStrToInt(Trim(arrRadky[idxR, posunSl + 11]), kmen.cOrgDod); + TryStrToInt(Trim(arrRadky[idxR, posunSl + 13]), kmen.cOrgVyr); + TryStrToInt(Trim(arrRadky[idxR, posunSl + 15]), kmen.dodLhuta); + TryStrToInt(Trim(arrRadky[idxR, posunSl + 16]), kmen.lhutaNaskl); + kmen.mj:= Trim(arrRadky[idxR, posunSl + 17]); + kmen.mena:= LowerCase(Trim(arrRadky[idxR, posunSl + 18])); + TryStrToFloat(StringReplace(Trim(arrRadky[idxR, posunSl + 19]),' ','',[rfReplaceAll]), kmen.jcena); + TryStrToInt(Trim(arrRadky[idxR, posunSl + 23]), kmen.minDod); + TryStrToInt(Trim(arrRadky[idxR, posunSl + 24]), kmen.minOdb); + TryStrToInt(Trim(arrRadky[idxR, posunSl + 28]), kmen.minMnoz); + TryStrToInt(Trim(arrRadky[idxR, posunSl + 29]), kmen.maxMnoz); + kmen.v_min:= Trim(arrRadky[idxR, posunSl + 30]); + kmen.f_ot:= Trim(arrRadky[idxR, posunSl + 31]); + if (sl>31) then + kmen.f_z:= Trim(arrRadky[idxR, posunSl + 32]); + if (sl>32) then + kmen.barcode:= Trim(arrRadky[idxR, posunSl + 33]); + kmen.obj:= arrRadky[idxR, posunSl + 7].ToBoolean(); + + if (sl>33) then + begin + kmen.cOrgReworkS:= Trim(arrRadky[idxR, posunSl + 34]); + if (kmen.cOrgReworkS.Contains('/')) then + begin + TryStrToInt(LeftStr(kmen.cOrgReworkS, Pos('/', kmen.cOrgReworkS)-1), kmen.cOrgRework); + kmen.cOrgReworkSuff:= MidStr(kmen.cOrgReworkS, Pos('/', kmen.cOrgReworkS)+1, 10); + end + else + TryStrToInt(Trim(arrRadky[idxR, posunSl + 34]), kmen.cOrgRework); + end; + if (sl>35) then + kmen.menaRework:= LowerCase(Trim(arrRadky[idxR, posunSl + 36])); + if (sl>36) then + TryStrToFloat(StringReplace(Trim(arrRadky[idxR, posunSl + 37]),' ','',[rfReplaceAll]), kmen.jcenaRework); + + with Helios.OpenSQL('SELECT ID FROM ' + tblKZ + ' WHERE SkupZbo=N' + QuotedStr(kmen.sz) + ' AND RegCis=N' + QuotedStr(kmen.regCis)) do + if (RecordCount=1) then + idKZ:= StrToInt(VarToStr(FieldValues(0))); + if (idKZ=0) then + begin + lSQL:= 'DECLARE @idKZ INT; EXEC @idKZ=dbo.hp_VytvorPolozkuKmeneZbozi @SZ=N' + kmen.sz.QuotedString + ', @RegCis=N' + kmen.regCis.QuotedString; + lSQL:= lSQL + ', @Nazev1=N' + kmen.nazev1.QuotedString + IfThen(kmen.nazev2<>'', ', @Nazev2=N' + kmen.nazev2.QuotedString, ''); + lSQL:= lSQL + IfThen(kmen.nazev3<>'', ', @Nazev3=N' + kmen.nazev3.QuotedString, '') + IfThen(kmen.mj<>'', ', @MJEv=N' + kmen.mj.QuotedString, ''); + lSQL:= lSQL + IfThen(kmen.skp<>'', ', @SKP=N' + kmen.skp.QuotedString, '') + '; SELECT @idKZ'; + try + with Helios.OpenSQL(lSQL) do + idKZ:= StrToInt(VarToStr(FieldValues(0))); + Inc(cntIns); + except on E:Exception do + Helios.Error(#1'Chyba INS: ' + e.Message +#1); + end; + if (idKZ>0) then + begin + if (kmen.cOrgDod<>0) then + Helios.ExecSQL('UPDATE ' + tblKZ + ' SET Aktualni_Dodavatel=' + kmen.cOrgDod.ToString + ' WHERE ID=' + idKZ.ToString); + if (kmen.cOrgVyr<>0) then + Helios.ExecSQL('UPDATE ' + tblKZ + ' SET Vyrobce=' + kmen.cOrgVyr.ToString + ' WHERE ID=' + idKZ.ToString); + if (kmen.sortiment<>'') then + Helios.ExecSQL('UPDATE ' + tblKZ + ' SET IdSortiment=ISNULL( (SELECT ID FROM ' + tblSortim + ' WHERE KatAllTecky=N' + kmen.sortiment.QuotedString + '), NULL) WHERE ID=' + idKZ.ToString); + if (kmen.minDod<>0) then + Helios.ExecSQL('UPDATE ' + tblKZ + ' SET Minimum_Baleni_Dodavatel=' + kmen.minDod.ToString + ' WHERE ID=' + idKZ.ToString); + if (kmen.dodLhuta<>0) then + Helios.ExecSQL('UPDATE ' + tblKZ + ' SET DodaciLhuta=' + kmen.dodLhuta.ToString + ' WHERE ID=' + idKZ.ToString); + + end; + end + else + begin + lSQL:= 'UPDATE ' + tblKZ + ' SET Nazev1=N' + kmen.nazev1.QuotedString + ', Nazev2=N' + kmen.nazev2.QuotedString + ', Nazev3=N' + kmen.nazev3.QuotedString; + lSQL:= lSQL + ', SKP=N' + kmen.skp.QuotedString; + lSQL:= lSQL + IfThen(kmen.sortiment<>'', ', IdSortiment=ISNULL( (SELECT ID FROM ' + tblSortim + ' WHERE KatAllTecky=N' + kmen.sortiment.QuotedString + '), NULL)', ''); + lSQL:= lSQL + ' WHERE ID=' + idKZ.ToString; + Helios.ExecSQL(lSQL); + Inc(cntAkt); + end; + if (idKZ>0) then + begin + +// mena nakup + lSQL:= kmen.mena; + if (kmen.mena='kč') or (kmen.mena='czk') then + lSQL:= 'CZK' + else + if (kmen.mena='€') or (kmen.mena='eur') then + lSQL:= 'EUR'; + if (lSQL='') then + lSQL:= 'CZK'; + lSQL:= 'UPDATE ' + tblKZe + ' SET _Matrix_MenaNakup=N' + lSQL.QuotedString + ' WHERE ID=' + idKZ.ToString; + Helios.ExecSQL(lSQL); + + lSQL:= 'IF NOT EXISTS(SELECT id FROM ' + tblNC + ' WHERE CenovaUroven=99 AND IDKmenZbozi=' + idKZ.ToString + ') INSERT ' + tblNC + ' (CenovaUroven, IDKmenZbozi) VALUES (99, ' + idKZ.ToString + ')'; + Helios.ExecSQL(lSQL); + if (kmen.mena='kč') or (kmen.mena='czk') then + Helios.ExecSQL('UPDATE ' + tblNC + ' SET CenaKC=' + StringReplace(kmen.jcena.ToString, ',', '.',[rfReplaceAll]) + ' WHERE CenovaUroven=99 AND IDKmenZbozi=' + idKZ.ToString); + if (kmen.mena='€') or (kmen.mena='eur') then + begin + lSQL:= 'IF NOT EXISTS(SELECT id FROM ' + tblNC + ' WHERE Mena1=N''EUR'' AND CenovaUroven=99 AND IDKmenZbozi=' + idKZ.ToString + ') '; + Helios.ExecSQL(lSQL + 'UPDATE ' + tblNC + ' SET Mena1=N''EUR'' WHERE CenovaUroven=99 AND IDKmenZbozi=' + idKZ.ToString); + Helios.ExecSQL('UPDATE ' + tblNC + ' SET CenaVal1=' + StringReplace(kmen.jcena.ToString, ',', '.',[rfReplaceAll]) + ' WHERE Mena1=N''EUR'' AND CenovaUroven=99 AND IDKmenZbozi=' + idKZ.ToString); + end; + + if (kmen.barcode<>'') then + begin + lSQL:= 'IF NOT EXISTS(SELECT ID FROM ' + tblBCode + ' WHERE BarCode=N' + QuotedStr(kmen.barcode) + ') INSERT ' + tblBCode + ' (IDKmenZbo, Prednastaveno, BarCode)'; + lSQL:= lSQL + ' SELECT ' + idKZ.ToString + ', 1, N' + QuotedStr(kmen.barcode); + Helios.ExecSQL(lSQL); + end; + lSQL:= 'IF NOT EXISTS(SELECT ID FROM ' + tblKZe + ' WHERE ID=' + idKZ.ToString + ') INSERT ' + tblKZe + ' (ID) VALUES (' + idKZ.ToString + ')'; + Helios.ExecSQL(lSQL); + lSQL:= 'UPDATE ' + tblKZe + ' SET _Naradi_TypPolozky=' + IfThen(kmen.typ=0, 'NULL', kmen.typ.ToString) + ', _Naradi_Kategorie=' + kmen.kateg.ToString + ', _Naradi_Objednavat=' + kmen.obj.ToString(); + lSQL:= lSQL + ' WHERE ID=' + idKZ.ToString; + Helios.ExecSQL(lSQL); + if (kmen.typ>0) then + Helios.ExecSQL('UPDATE ' + tblKZ + ' SET Nazev3=N'''' WHERE id=' + idKZ.ToString); + + lSQL:= 'UPDATE ' + tblKZe + ' SET _Naradi_F_mn_ot=N' + IfThen(kmen.f_ot='', 'ULL', QuotedStr(kmen.f_ot)) + ', _Naradi_V_m_min=N' + IfThen(kmen.v_min='', 'ULL', QuotedStr(kmen.v_min)); + lSQL:= lSQL + ', _Naradi_F_mn_z=N' + IfThen(kmen.f_z='', 'ULL', QuotedStr(kmen.f_z)) + ' WHERE ID=' + idKZ.ToString; + Helios.ExecSQL(lSQL); + + lSQL:= 'UPDATE ' + tblKZe + ' SET _Naradi_TechnologickePouziti=N' + IfThen(kmen.technologie='', 'ULL', QuotedStr(kmen.technologie)); + lSQL:= lSQL + ' WHERE ID=' + idKZ.ToString; + Helios.ExecSQL(lSQL); + if (kmen.technologie<>'') then + Helios.ExecSQL('UPDATE ' + tblKZ + ' SET Nazev2=N'''' WHERE id=' + idKZ.ToString); + + lSQL:= 'IF NOT EXISTS(SELECT ID FROM ' + tblSS + ' WHERE IDSklad=N' + QuotedStr(sklMatrix2) + ' AND IDKmenZbozi=' + idKZ.ToString; + lSQL:= lSQL + ') INSERT ' + tblSS + ' (IDSklad, IDKmenZbozi) VALUES (N' + QuotedStr(sklMatrix2) + ', ' + idKZ.ToString + ')' + CRLF; + lSQL:= lSQL + ' UPDATE ' + tblSS + ' SET Minimum=' + kmen.minMnoz.ToString + ', Maximum=' + kmen.maxMnoz.ToString; + lSQL:= lSQL + ' WHERE IDSklad=N' + QuotedStr(sklMatrix2) + ' AND IDKmenZbozi=' + idKZ.ToString; + Helios.ExecSQL(lSQL); + + lSQL:= 'UPDATE ' + tblKZe + ' SET _Naradi_ReworkOrg=' + IfThen(kmen.cOrgRework=0, 'NULL', kmen.cOrgRework.ToString) + ' WHERE ID=' + idKZ.ToString; + Helios.ExecSQL(lSQL); + lSQL:= 'UPDATE ' + tblKZe + ' SET _Naradi_ReworkOrgSuff=N' + IfThen(kmen.cOrgReworkSuff='', 'ULL', kmen.cOrgReworkSuff.QuotedString) + ' WHERE ID=' + idKZ.ToString; + Helios.ExecSQL(lSQL); + +// rework cena + lSQL:= kmen.menaRework; + if (kmen.menaRework='kč') or (kmen.menaRework='czk') then + lSQL:= 'CZK' + else + if (kmen.menaRework='€') or (kmen.menaRework='eur') then + lSQL:= 'EUR'; + if (lSQL='') then + lSQL:= 'CZK'; + lSQL:= 'UPDATE ' + tblKZe + ' SET _Matrix_MenaRework=N' + lSQL.QuotedString + ' WHERE ID=' + idKZ.ToString; + Helios.ExecSQL(lSQL); + + lSQL:= 'IF NOT EXISTS(SELECT id FROM ' + tblNC + ' WHERE CenovaUroven=98 AND IDKmenZbozi=' + idKZ.ToString + ') INSERT ' + tblNC + ' (CenovaUroven, IDKmenZbozi) VALUES (98, ' + idKZ.ToString + ')'; + Helios.ExecSQL(lSQL); + if (kmen.menaRework='kč') or (kmen.menaRework='czk') then + Helios.ExecSQL('UPDATE ' + tblNC + ' SET CenaKC=' + StringReplace(kmen.jcenaRework.ToString, ',', '.',[rfReplaceAll]) + ' WHERE CenovaUroven=98 AND IDKmenZbozi=' + idKZ.ToString); + if (kmen.menaRework='€') or (kmen.menaRework='eur') then + begin + lSQL:= 'IF NOT EXISTS(SELECT id FROM ' + tblNC + ' WHERE Mena1=N''EUR'' AND CenovaUroven=98 AND IDKmenZbozi=' + idKZ.ToString + ') '; + Helios.ExecSQL(lSQL + 'UPDATE ' + tblNC + ' SET Mena1=N''EUR'' WHERE CenovaUroven=98 AND IDKmenZbozi=' + idKZ.ToString); + Helios.ExecSQL('UPDATE ' + tblNC + ' SET CenaVal1=' + StringReplace(kmen.jcenaRework.ToString, ',', '.',[rfReplaceAll]) + ' WHERE Mena1=N''EUR'' AND CenovaUroven=98 AND IDKmenZbozi=' + idKZ.ToString); + end; + + + end; + except on E:Exception do + errMsg:= E.Message + CRLF + lSQL; + end; + end; + waitEnd; + + Helios.Refresh(true); + Helios.Info(#1'Nových karet: ' + cntIns.ToString + CRLF + 'Upravených karet: ' + cntAkt.ToString + #1); + end; + end; + end; + + + + + + procedure TplgKdynium.ExportProMatrix (const Helios: IHelios); + var lSQL, mena, menaR, sTypPol, supp, fmaNazev: string; + xls: IXLSWorkBook; + shUsers, shSupp, shItems, shSerials: IXLSWorksheet; + i, idOrg, cOrg, idKZ, iTypPol: integer; + tmpStr, tmpStr2: string; + supps: TArray; + fndIdx: integer; + doplnNulu: boolean; + begin + xls:= TXLSWorkbook.Create; + try + shUsers:= xls.Sheets.Add; + shUsers.Name:= 'Users'; + shUsers.Cells.Item[1,1].Value:= 'USER_NAME'; + shUsers.Cells.Item[1,2].Value:= 'PASSWORD'; + shUsers.Cells.Item[1,3].Value:= 'FULL_NAME'; + shUsers.Cells.Item[1,4].Value:= 'LAST_NAME'; + shUsers.Cells.Item[1,5].Value:= 'FIRST_NAME'; + shUsers.Cells.Item[1,6].Value:= 'GROUP_NAME'; + shUsers.Cells.Item[1,7].Value:= 'EMAIL'; + shUsers.Cells.Item[1,8].Value:= 'USER_CODE'; + lSQL:= 'SELECT z.Jmeno, z.Prijmeni, z.PrijmeniJmeno, z.Cislo FROM ' + tblCZam + ' z INNER JOIN ' + tblZamMzd + ' m ON (m.ZamestnanecID=z.ID)'; + lSQL:= lSQL + ' WHERE m.IdObdobi=(SELECT IdObdobi FROM ' + tblMzdObd + ' WHERE Rok=DATEPART(year, GETDATE()) AND Mesic=DATEPART(month,GETDATE()))'; + lSQL:= lSQL + ' AND m.StavES=0 AND z.Stredisko=N' + QuotedStr('00100200200') + ' AND z.Cislo<700000 ORDER BY z.Cislo, z.Prijmeni, z.Jmeno'; + with Helios.OpenSQL(lSQL) do + begin + First; + i:= 1; + while not(EOF) do + begin + shUsers.Cells.Item[1+i,1].Value:= VarToStr(FieldValues(3)); + shUsers.Cells.Item[1+i,3].Value:= VarToStr(FieldValues(2)); + shUsers.Cells.Item[1+i,4].Value:= VarToStr(FieldValues(1)); + shUsers.Cells.Item[1+i,5].Value:= VarToStr(FieldValues(0)); + shUsers.Cells.Item[1+i,8].Value:= VarToStr(FieldValues(3)); + Inc(i); + Next; + end; + end; + + + + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabMatrixSupps'', N''U'') IS NOT NULL DROP TABLE #TabMatrixSupps' + CRLF + + 'CREATE TABLE #TabMatrixSupps (CisloOrg INT, Suffix NVARCHAR(5) DEFAULT N'''' NOT NULL, Nazev NVARCHAR(100)' + + ', Mena NVARCHAR(50), Doprava NVARCHAR(100), KplCisloOrg AS (CONVERT(nvarchar, CisloOrg) + IIF(Suffix<>N'''', N''/''+ Suffix, N'''')) )' + CRLF; + Helios.ExecSQL(lSQL); + + shSupp:= xls.Sheets.Add; + shSupp.Name:= 'Suppliers'; + shSupp.Cells.Item[1,1].Value:= 'SUPPLIER_CODE'; + shSupp.Cells.Item[1,2].Value:= 'SUPPLIER_NAME'; + shSupp.Cells.Item[1,3].Value:= 'SHIPPING_METHOD_NAME'; + shSupp.Cells.Item[1,4].Value:= 'ORDER_METHOD'; + shSupp.Cells.Item[1,5].Value:= 'PRICE_NAME'; + shSupp.Cells.Item[1,6].Value:= 'SUPPLIER_EMAIL'; + + i:= 1; + lSQL:= 'SELECT DISTINCT(ke._Naradi_ReworkOrg), ISNULL(ke._Naradi_ReworkOrgSuff, N''''), o.Nazev, o.Mena, ISNULL(o.FormaDopravy,N'''') FROM ' + tblKZ + ' k INNER JOIN ' + tblKZe + + ' ke ON (ke.ID=k.ID) INNER JOIN ' + tblCOrg + ' o ON (ke._Naradi_ReworkOrg=o.CisloOrg) WHERE ke._Naradi_ReworkOrg IS NOT NULL AND ISNULL(ke._Naradi_ReworkOrgSuff, N'''')<>N''''' + + ' AND ((k.SkupZbo=N''054'' AND LEFT(k.RegCis,1)=N''7'') OR (k.SkupZbo=N''MNA'' AND LEFT(k.RegCis,1)=N''M''))' +// + ' AND k.RegCis=N''710320''' + + ' ORDER BY ke._Naradi_ReworkOrg, ISNULL(ke._Naradi_ReworkOrgSuff, N'''')'; + with Helios.OpenSQL(lSQL) do + begin + First; + while not(EOF) do + begin + tmpStr:= VarToStr(FieldValues(0)); + cOrg:= tmpStr.ToInteger; + idOrg:= helUtils.getHeliosIntVal(Helios, -1, 'SELECT ID FROM ' + tblCOrg + ' WHERE CisloOrg=' + tmpStr); + + supp:= VarToStr(FieldValues(1)); + if (supp<>'') then + tmpStr:= tmpStr + '/' + supp; + + mena:= ''; + if not(tmpStr.Contains('/')) then + mena:= helUtils.getHeliosStrVal(Helios, '', 'SELECT _Matrix_MenaNakup FROM ' + tblCOrgE + ' WHERE ID=' + idOrg.ToString) + else + mena:= helUtils.getHeliosStrVal(Helios, '', 'SELECT _Matrix_MenaRework FROM ' + tblCOrgE + ' WHERE ID=' + idOrg.ToString); + + if (mena='') then + mena:= VarToStr(FieldValues(3)); + if (mena='CZK') or (mena='') then + mena:= 'koruna'; + if (mena='EUR') then + mena:= 'euro'; + if (mena='USD') then + mena:= 'dolar'; + + fmaNazev:= VarToStr(FieldValues(2)); + if (supp<>'') then + fmaNazev:= fmaNazev + '/' + supp; + + lSQL:= 'IF NOT EXISTS(SELECT 1 FROM #TabMatrixSupps WHERE KplCisloOrg=N' + tmpStr.QuotedString + ')' + CRLF + + ' INSERT #TabMatrixSupps (CisloOrg, Suffix, Nazev, Mena, Doprava) SELECT ' + cOrg.ToString + ', N' + IfThen(supp<>'', supp, '').QuotedString + + ', N' + fmaNazev.QuotedString + ', N' + mena.QuotedString + ', N' + VarToStr(FieldValues(4)).QuotedString; + Helios.ExecSQL(lSQL); + Next; + end; + end; + + lSQL:= 'SELECT DISTINCT(k.Aktualni_Dodavatel), o.Nazev, o.Mena, ISNULL(o.FormaDopravy,N'''') FROM ' + tblKZ + ' k INNER JOIN ' + tblCOrg + + ' o ON (k.Aktualni_Dodavatel=o.CisloOrg) WHERE k.Aktualni_Dodavatel IS NOT NULL AND ((k.SkupZbo=N''054''' + + ' AND LEFT(k.RegCis,1)=N''7'') OR (k.SkupZbo=N''MNA'' AND LEFT(k.RegCis,1)=N''M''))' +// + ' AND k.RegCis=N''710320''' + + ' ORDER BY k.Aktualni_Dodavatel'; + with Helios.OpenSQL(lSQL) do + begin + First; +// i:= 1; + while not(EOF) do + begin + tmpStr:= VarToStr(FieldValues(0)); + cOrg:= tmpStr.ToInteger; + + lSQL:= 'SELECT TOP(1) 1 FROM ' + tblKZ + ' k INNER JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) WHERE ke._Naradi_ReworkOrg IS NOT NULL AND ke._Naradi_ReworkOrg=N' + tmpStr.QuotedString +// + ' AND k.RegCis=N''710320''' + + ' AND ISNULL(ke._Naradi_ReworkOrgSuff, N'''')<>N''0'' AND ISNULL(ke._Naradi_ReworkOrgSuff, N'''')<>N''''' + + ' AND ((k.SkupZbo=N''054'' AND LEFT(k.RegCis,1)=N''7'') OR (k.SkupZbo=N''MNA'' AND LEFT(k.RegCis,1)=N''M''))'; + if (helUtils.sqlExistsTestGeneral(Helios, lSQL)) and not(ContainsStr(tmpStr, '/')) then + tmpStr:= '0' + else + tmpStr:= ''; + + mena:= VarToStr(FieldValues(2)); + if (mena='CZK') or (mena='') then + mena:= 'koruna'; + if (mena='EUR') then + mena:= 'euro'; + if (mena='USD') then + mena:= 'dolar'; + + tmpStr2:= cOrg.ToString + IfTHen(tmpStr<>'', '/' + tmpStr, tmpStr); + + lSQL:= 'DECLARE @s NVARCHAR(5)' + CRLF + 'SET @s=N' + tmpStr.QuotedString + CRLF + 'IF EXISTS(SELECT 1 FROM #TabMatrixSupps WHERE CisloOrg=' + cOrg.ToString + ')' + CRLF; + if (tmpStr='') then + lSQL:= lSQL + ' IF EXISTS(SELECT 1 FROM #TabMatrixSupps WHERE CisloOrg=' + cOrg.ToString + ' AND Suffix<>N'''')' + CRLF + ' SET @s=N''0'''; + lSQL:= lSQL + ' INSERT #TabMatrixSupps (CisloOrg, Suffix, Nazev, Mena, Doprava) SELECT ' + cOrg.ToString + ', @s, N' + VarToStr(FieldValues(1)).QuotedString + + ', N' + mena.QuotedString + ', N' + VarToStr(FieldValues(3)).QuotedString; + Helios.ExecSQL(lSQL); + Next; + end; + end; + + lSQL:= 'SELECT KplCisloOrg, Nazev, Doprava, Mena FROM #TabMatrixSupps ORDER BY KplCisloOrg'; + with Helios.OpenSQL(lSQL) do + begin + First; + i:= 1; + while not(EOF) do + begin + shSupp.Cells.Item[1+i,1].Value:= VarToStr(FieldValues(0));; // cislo s moznym suffixem za lomitkem (napr. 11351/1) + shSupp.Cells.Item[1+i,2].Value:= VarToStr(FieldValues(1)); // nazev + shSupp.Cells.Item[1+i,3].Value:= VarToStr(FieldValues(2)); // doprava + shSupp.Cells.Item[1+i,4].Value:= 'E-mail'; + shSupp.Cells.Item[1+i,5].Value:= VarToStr(FieldValues(3)); // mena + shSupp.Cells.Item[1+i,6].Value:= 'miroslav.simacek@kdynium.cz'; + Inc(i); + Next; + end; + end; + Helios.ExecSQL('DROP TABLE IF EXISTS #TabMatrixSupps'); + + + + + + shItems:= xls.Sheets.Add; + shItems.Name:= 'Items'; + shItems.Cells.Item[1,1].Value:= 'ITEM CODE'; + shItems.Cells.Item[1,2].Value:= 'DESCRIPTION'; + shItems.Cells.Item[1,3].Value:= 'ADDITIONAL_ITEM_CODE'; + shItems.Cells.Item[1,4].Value:= 'ITEM_LONG_DESCRIPTION'; + shItems.Cells.Item[1,5].Value:= 'TYPE_CODE'; + shItems.Cells.Item[1,6].Value:= 'IS_CALC_LEVEL'; + shItems.Cells.Item[1,7].Value:= 'GROUP_CODE'; + shItems.Cells.Item[1,8].Value:= ''; + shItems.Cells.Item[1,9].Value:= 'PACKET_SIZE'; + shItems.Cells.Item[1,10].Value:= 'DEFAULT_ISSUE_QTY'; + shItems.Cells.Item[1,11].Value:= 'CATEGORY_CODE'; + shItems.Cells.Item[1,12].Value:= 'UPC'; + shItems.Cells.Item[1,13].Value:= 'SUPPLIER_CODE'; + shItems.Cells.Item[1,14].Value:= 'SUPPLIER_PRICE'; + shItems.Cells.Item[1,15].Value:= 'REWORK_PRICE'; + shItems.Cells.Item[1,16].Value:= 'PACKAGE_SIZE'; + shItems.Cells.Item[1,17].Value:= 'MIN_ORDER_QTY'; + lSQL:= 'SELECT k.RegCis, k.Nazev1, k.Nazev2, k.SKP, ISNULL(bc.BarCode,N''''), ISNULL(k.Aktualni_Dodavatel,-1), ISNULL(ke._Naradi_Objednavat,0)' + + ', k.Minimum_Baleni_Dodavatel, k.ID, so.KatAllTecky, ISNULL(ke._Naradi_Kategorie,0), ISNULL(ke._Naradi_TechnologickePouziti, N''''), ISNULL(co.Mena,N''CZK'')' + + ', ISNULL(ke._Naradi_TypPolozky,1), ISNULL(ke._Naradi_ReworkOrg, -1), ISNULL(ke._Naradi_ReworkOrgSuff, N''''), ISNULL(co2.Mena,N''CZK'')' + + ', ISNULL(ke._Matrix_MenaNakup, N''''), ISNULL(ke._Matrix_MenaRework, N'''') ' + + ' FROM ' + tblKZ + ' k LEFT JOIN ' + tblBCode + ' bc ON (k.ID=bc.IdKmenZbo AND bc.Prednastaveno=1) LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) LEFT JOIN ' + + tblSS + ' s ON (s.IDKmenZbozi=k.ID AND s.IDSklad=N' + QuotedStr(sklMatrix) + ') LEFT JOIN ' + tblSortim + ' so ON (so.ID=k.IdSortiment) LEFT JOIN ' + + tblCOrg + ' co ON (co.CisloOrg=k.Aktualni_Dodavatel)' + ' LEFT JOIN ' + tblCOrg + ' co2 ON (co2.CisloOrg=ke._Naradi_ReworkOrg)' + + ' WHERE k.SkupZbo=N''054'' AND LEFT(k.RegCis,1)=N''7''' +// + ' AND k.RegCis IN (N''711467'', N''711466'')' + + ' ORDER BY k.RegCis'; + with Helios.OpenSQL(lSQL) do + begin + i:=RecordCount; + waitStart(nil, 'Export položek', i, clRed); + First; + i:= 1; + while not(EOF) do + begin + + if (i mod 10=0) then + waitSetProgBar(i); + + idKZ:= StrToInt(VarToStr(FieldValues(8))); + sTypPol:= 'E'; + iTypPol:= StrToInt(VarToStr(FieldValues(13))); + case iTypPol of + 1: sTypPol:= 'E'; + 2: sTypPol:= 'R'; + 3: sTypPol:= 'D'; + 5: sTypPol:= 'Y'; + 6: sTypPol:= 'G'; + end; + if (VarToStr(FieldValues(14))<>'-1') then + begin + shItems.Cells.Item[1+i,1].Value:= VarToStr(FieldValues(0)); + shItems.Cells.Item[1+i,2].Value:= VarToStr(FieldValues(1)); + shItems.Cells.Item[1+i,3].Value:= VarToStr(FieldValues(3)); + shItems.Cells.Item[1+i,4].Value:= VarToStr(FieldValues(11)); + shItems.Cells.Item[1+i,5].Value:= sTypPol; // typ polozky (obnovitelna, meridlo apod) + shItems.Cells.Item[1+i,6].Value:= IfThen(StrToBool(VarToStr(FieldValues(6))),'1','0'); // objednavat + shItems.Cells.Item[1+i,7].Value:= VarToStr(FieldValues(9)); // group code = sortiment + shItems.Cells.Item[1+i,9].Value:= VarToStr(FieldValues(7)); // def. issue qty + shItems.Cells.Item[1+i,10].Value:= VarToStr(FieldValues(7)); // def. issue qty + shItems.Cells.Item[1+i,11].Value:= VarToStr(FieldValues(10)); // kategorie naradi (1=katalogova/2=specialni) + shItems.Cells.Item[1+i,12].Value:= VarToStr(FieldValues(4)); // barcode / UPC + shItems.Cells.Item[1+i,16].Value:= VarToStr(FieldValues(7)); // package size + shItems.Cells.Item[1+i,17].Value:= VarToStr(FieldValues(7)); // min.mnoz + + tmpStr:= VarToStr(FieldValues(14)); // rework organizace + idOrg:= helUtils.getHeliosIntVal(Helios, -1, 'SELECT ID FROM ' + tblCOrg + ' WHERE CisloOrg=' + tmpStr); + if (VarToStr(FieldValues(15))<>'') then // suffix rework organizace + tmpStr:= tmpStr + '/' + VarToStr(FieldValues(15)); + shItems.Cells.Item[1+i,13].Value:= tmpStr; // supplier_code + + menaR:= ''; + if (tmpStr.Contains('/')) then + menaR:= helUtils.getHeliosStrVal(Helios, '', 'SELECT _Matrix_MenaRework FROM ' + tblCOrgE + ' WHERE ID=' + idOrg.ToString); + if (menaR='') then + begin + menaR:= VarToStr(FieldValues(18)); // mena rework (na karte) + if (menaR='') then + menaR:= VarToStr(FieldValues(16)); // mena rework organizace + end; + + if (menaR='CZK') then + lSQL:= 'SELECT CenaKc FROM ' + tblNC + ' WHERE CenovaUroven=98 AND IdKmenZbozi=' + idKZ.toString + else + lSQL:= 'SELECT CenaVal1 FROM ' + tblNC + ' WHERE Mena1=N''EUR'' AND CenovaUroven=98 AND IdKmenZbozi=' + idKZ.toString; + tmpStr:= helUtils.getHeliosStrVal(Helios, '', lSQL); + shItems.Cells.Item[1+i,14].Value:= IfThen(tmpStr='', '0', tmpStr); + shItems.Cells.Item[1+i,15].Value:= IfThen(tmpStr='', '0', tmpStr); + + Inc(i); + end; + + + shItems.Cells.Item[1+i,1].Value:= VarToStr(FieldValues(0)); + shItems.Cells.Item[1+i,2].Value:= VarToStr(FieldValues(1)); + shItems.Cells.Item[1+i,3].Value:= VarToStr(FieldValues(3)); + shItems.Cells.Item[1+i,4].Value:= VarToStr(FieldValues(11)); + shItems.Cells.Item[1+i,5].Value:= sTypPol; // typ polozky (obnovitelna, meridlo apod) + shItems.Cells.Item[1+i,6].Value:= IfThen(StrToBool(VarToStr(FieldValues(6))),'1','0'); // objednavat + shItems.Cells.Item[1+i,7].Value:= VarToStr(FieldValues(9)); // group code = sortiment + shItems.Cells.Item[1+i,9].Value:= VarToStr(FieldValues(7)); // def. issue qty + shItems.Cells.Item[1+i,10].Value:= VarToStr(FieldValues(7)); // def. issue qty + shItems.Cells.Item[1+i,11].Value:= VarToStr(FieldValues(10)); // kategorie naradi (1=katalogova/2=specialni) + shItems.Cells.Item[1+i,12].Value:= VarToStr(FieldValues(4)); // barcode / UPC + + tmpStr:= VarToStr(FieldValues(5)); // HEO akt. dodavatel + shItems.Cells.Item[1+i,13].Value:= tmpStr; // dodavatel + idOrg:= helUtils.getHeliosIntVal(Helios, -1, 'SELECT ID FROM ' + tblCOrg + ' WHERE CisloOrg=' + tmpStr); + + lSQL:= 'SELECT TOP(1) 1 FROM ' + tblKZ + ' k INNER JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) WHERE ke._Naradi_ReworkOrg IS NOT NULL AND ke._Naradi_ReworkOrg=N' + + IfThen(ContainsStr(tmpStr, '/'), LeftStr(tmpStr, tmpStr.IndexOf('/')), tmpStr).QuotedString + + ' AND ISNULL(ke._Naradi_ReworkOrgSuff, N'''') NOT IN (N'''', N''0'') AND ((k.SkupZbo=N''054'' AND LEFT(k.RegCis,1)=N''7'') OR (k.SkupZbo=N''MNA'' AND LEFT(k.RegCis,1)=N''M''))'; + if (helUtils.sqlExistsTestGeneral(Helios, lSQL)) then + tmpStr:= IfThen(ContainsStr(tmpStr, '/'), LeftStr(tmpStr, tmpStr.IndexOf('/')), tmpStr) + '/0'; + + shItems.Cells.Item[1+i,13].Value:= tmpStr; // dodavatel + + mena:= ''; + if not(tmpStr.Contains('/')) then + mena:= helUtils.getHeliosStrVal(Helios, '', 'SELECT _Matrix_MenaNakup FROM ' + tblCOrgE + ' WHERE ID=' + idOrg.ToString); + if (mena='') then + begin + mena:= VarToStr(FieldValues(17)); // mena dodavatel/nakup (na karte) + if (mena='') then + mena:= VarToStr(FieldValues(12)); // mena dodavatel/nakup + end; + + if (mena='CZK') then + lSQL:= 'SELECT CenaKc FROM ' + tblNC + ' WHERE CenovaUroven=99 AND IdKmenZbozi=' + idKZ.toString + else + lSQL:= 'SELECT CenaVal1 FROM ' + tblNC + ' WHERE Mena1=N''EUR'' AND CenovaUroven=99 AND IdKmenZbozi=' + idKZ.toString; + tmpStr:= helUtils.getHeliosStrVal(Helios, '', lSQL); + shItems.Cells.Item[1+i,14].Value:= IfThen(tmpStr='', '0', tmpStr); + + if (VarToStr(shItems.Cells.Item[i,15].Value)<>'') and (VarToStr(shItems.Cells.Item[i,1].Value)=VarToStr(shItems.Cells.Item[1+i,1].Value)) then + shItems.Cells.Item[1+i,15].Value:= shItems.Cells.Item[i,15].Value; + + shItems.Cells.Item[1+i,16].Value:= VarToStr(FieldValues(7)); // package size + shItems.Cells.Item[1+i,17].Value:= VarToStr(FieldValues(7)); // min.mnoz + Inc(i); + Next; + end; + + waitEnd; + end; + + + + shSerials:= xls.Sheets.Add; + shSerials.Name:= 'Serials'; + shSerials.Cells.Item[1,1].Value:= 'ITEM CODE'; + shSerials.Cells.Item[1,2].Value:= 'SERIAL_NUMBER'; + shSerials.Cells.Item[1,3].Value:= 'NEXT_CALIB_DATE'; + lSQL:= 'SELECT k.RegCis, vck.Nazev1, vcke._DatumKalibrace, vcke._SkutecnyPopis FROM ' + tblKZ + ' k INNER JOIN ' + tblVyrCK + ' vck ON (vck.IDKmenZbozi=k.ID)'; + lSQL:= lSQL + ' INNER JOIN dbo.TabVyrCK_EXT vcke ON (vcke.ID=vck.ID) WHERE k.SkupZbo=N''MNA'' ORDER BY k.RegCis'; +// lSQL:= 'SELECT k.RegCis, vcs.Nazev1, qms.ID FROM ' + tblKZ + ' k INNER JOIN ' + tblSS + ' s ON (s.IDKmenZbozi=k.ID) INNER JOIN ' + tblVyrCS; +// lSQL:= lSQL + ' vcs ON (vcs.IDStavSkladu=s.ID) INNER JOIN ' + tblKJ + ' qms ON (qms.IDKmenZbozi=k.id AND qms.Kategorie=N''975'') WHERE s.IDSklad=N' + QuotedStr(sklMatrix); +// lSQL:= lSQL + ' AND k.SkupZbo=N''MNA'' ORDER BY k.RegCis'; + with Helios.OpenSQL(lSQL) do + begin + First; + i:= 1; + while not(EOF) do + begin + shSerials.Cells.Item[1+i,1].Value:= VarToStr(FieldValues(0)); + shSerials.Cells.Item[1+i,2].Value:= VarToStr(FieldValues(1)); + shSerials.Cells.Item[1+i,3].Value:= VarToStr(FieldValues(2)); + Inc(i); + Next; + end; + end; + + finally + if (DirectoryExists(cestaExport,true)) then + xls.SaveAs(cestaExport + '\Import_KDYNIUM_HELIOS.xlsx', xlOpenXMLWorkbook); + if not FileExists(cestaExport + '\Import_KDYNIUM_HELIOS.xlsx') then + xls.SaveAs(ExtractFilePath(GetModuleName(HInstance)) + 'Import_KDYNIUM_HELIOS.xlsx', xlOpenXMLWorkbook); +// FreeAndNil(xls); + end; + end; + + + + + procedure TplgKdynium.ImportKmenMeridla (const Helios: IHelios); + var lSQL, radky, zaznam, msg, errMsg, sTemp: String; + cnt, sl, posunSl, idxR, idxS, idKZ, cntIns, cntAkt, overRadek: integer; + arrRadky: TArray>; + kmen: TKmen; + cont: Boolean; + begin + posunSl:= 2; + + overRadek:= 0; + if (Clipboard.HasFormat(CF_TEXT)) then + begin + errMsg:= ''; + cont:= true; + radky:= ''; + try + radky:= Clipboard.AsText; + sl:= PosCount(#9, LeftStr(radky, Pos(#13, radky)-1)) + 1; // pocet sloupcu + except on E:Exception do + cont:= false; + end; + if (radky<>'') and (cont) then + begin + cont:= true; + cntIns:= 0; + cntAkt:= 0; + cnt:= Length(radky)-Length(StringReplace(radky, Chr(13),'',[rfReplaceAll]))+1; + SetLength(arrRadky, cnt, sl); // index od 0 + if (Pos(#13, radky)>0) then + zaznam:= LeftStr(radky, Pos(#13, radky)-1) // nazvy sloupcu + else + zaznam:= radky; + if Helios.YesNo('Má importovaná oblast hlavičku ?', false) then + begin + Delete(radky,1,Pos(#13,radky)+1); // smaze hlavicku + SetLength(arrRadky,Length(arrRadky)-1); + end; + for idxR:=0 to High(arrRadky)-1 do + begin + if (Pos(#13,radky)>0) then + zaznam:= LeftStr(radky,Pos(#13,radky)-1) + else + zaznam:= radky; + zaznam:= Trim(StringReplace(zaznam, #9#9, #9' '#9,[rfReplaceAll])); + if (zaznam<>'') then + for idxS:=0 to sl-1 do + begin + if (zaznam<>'') then + begin + if (Pos(#9, zaznam)>0) then + begin + arrRadky[idxR,idxS]:= LeftStr(zaznam, Pos(#9, zaznam)-1); + Delete(zaznam,1,Pos(#9, zaznam)); + end + else + begin + arrRadky[idxR,idxS]:= zaznam; + zaznam:= ''; + end; + end; + end; + Delete(radky,1,Pos(#13, radky)+1); + end; + + waitStart(nil, 'Import dat karet měřidel', Length(arrRadky), clRed); + for idxR:=0 to High(arrRadky)-1 do + begin + if (idxR mod 10=0) then + waitSetProgBar(idxR); + try + idKZ:= 0; + clearKmen(kmen); +{ + if Trim(arrRadky[idxR, 0])<>Trim(arrRadky[idxR, 1]) then + kmen.sz:= Trim(arrRadky[idxR, 0]); + if (Length(kmen.sz)=2) then + kmen.sz:= '0' + kmen.sz; +} + kmen.sz:= 'MNA'; + kmen.regCis:= Trim(arrRadky[idxR, posunSl + 1]); + kmen.nazev1:= Trim(arrRadky[idxR, posunSl + 2]); + if (kmen.regCis='') or (kmen.nazev1='') then + continue; + kmen.nazev3:= Trim(arrRadky[idxR, posunSl + 9]); + kmen.skp:= Trim(arrRadky[idxR, posunSl + 3]); + kmen.sortiment:= Trim(arrRadky[idxR, posunSl + 5]); + if (kmen.nazev3.ToLower='katalogová') then + kmen.kateg:= 1; + if (kmen.nazev3.ToLower='speciální') then + kmen.kateg:= 2; + kmen.nazev3:= ''; + if (Trim(arrRadky[idxR, posunSl + 10]).ToLower='spotřební') then + kmen.typ:= 1; + if (Trim(arrRadky[idxR, posunSl + 10]).ToLower='obnovitelná') then + kmen.typ:= 2; + if (Trim(arrRadky[idxR, posunSl + 10]).ToLower='trvalá') then + kmen.typ:= 3; + if (LeftStr(Trim(arrRadky[idxR, posunSl + 10]).ToLower,4)='klíč') then + kmen.typ:= 5; + if (Trim(arrRadky[idxR, posunSl + 10]).ToLower='měřidlo') then + kmen.typ:= 6; + TryStrToInt(Trim(arrRadky[idxR, posunSl + 11]), kmen.cOrgDod); + TryStrToInt(Trim(arrRadky[idxR, posunSl + 13]), kmen.cOrgVyr); + TryStrToInt(Trim(arrRadky[idxR, posunSl + 15]), kmen.dodLhuta); + TryStrToInt(Trim(arrRadky[idxR, posunSl + 16]), kmen.lhutaNaskl); + kmen.mj:= Trim(arrRadky[idxR, posunSl + 17]); + kmen.mena:= LowerCase(Trim(arrRadky[idxR, posunSl + 18])); + TryStrToFloat(StringReplace(Trim(arrRadky[idxR, posunSl + 19]),' ','',[rfReplaceAll]), kmen.jcena); + TryStrToInt(Trim(arrRadky[idxR, posunSl + 23]), kmen.minDod); + TryStrToInt(Trim(arrRadky[idxR, posunSl + 24]), kmen.minOdb); + TryStrToInt(Trim(arrRadky[idxR, posunSl + 28]), kmen.minMnoz); + TryStrToInt(Trim(arrRadky[idxR, posunSl + 29]), kmen.maxMnoz); + kmen.barcode:= Trim(arrRadky[idxR, posunSl + 30]); + kmen.obj:= arrRadky[idxR, posunSl + 7].ToBoolean(); + + with Helios.OpenSQL('SELECT ID FROM ' + tblKZ + ' WHERE SkupZbo=N' + QuotedStr(kmen.sz) + ' AND RegCis=N' + QuotedStr(kmen.regCis)) do + if (RecordCount=1) then + idKZ:= StrToInt(VarToStr(FieldValues(0))); + if (idKZ=0) then + begin +{ + lSQL:= 'INSERT ' + tblKZ + ' (DruhSkladu, SkupZbo, RegCis, Nazev1' + IfThen(kmen.nazev2<>'', ', Nazev2', '') + IfThen(kmen.nazev3<>'', ', Nazev3', '') + IfThen(kmen.mj<>'', ', MJEvidence', ''); + lSQL:= lSQL + IfThen(kmen.skp<>'', ', SKP', '') + IfThen(kmen.sortiment<>'', ', IdSortiment', '') + IfThen(kmen.cOrgDod<>0, ', Aktualni_Dodavatel', ''); + lSQL:= lSQL + IfThen(kmen.cOrgVyr<>0, ', Vyrobce', '') + IfThen(kmen.minDod<>0, ', Minimum_Baleni_Dodavatel', '') + IfThen(kmen.dodLhuta<>0, ', DodaciLhuta', ''); + lSQL:= lSQL + ') SELECT 1, N' + QuotedStr(kmen.sz) + ', N' + QuotedStr(kmen.regCis); + lSQL:= lSQL + ', N' + QuotedStr(kmen.nazev1) + IfThen(kmen.nazev2<>'', ', N' + QuotedStr(kmen.nazev2), '') + IfThen(kmen.nazev3<>'', ', N' + QuotedStr(kmen.nazev3), '') + IfThen(kmen.mj<>'', ', N' + QuotedStr(kmen.mj), ''); + lSQL:= lSQL + IfThen(kmen.skp<>'', ', N' + QuotedStr(kmen.skp), '') + IfThen(kmen.sortiment<>'', ', ISNULL( (SELECT ID FROM ' + tblSortim + ' WHERE KatAllTecky=N' + QuotedStr(kmen.sortiment) + '), NULL)', ''); + lSQL:= lSQL + IfThen(kmen.cOrgDod<>0, ', ' + kmen.cOrgDod.ToString, '') + IfThen(kmen.cOrgVyr<>0, ', ' + kmen.cOrgVyr.ToString, '') + IfThen(kmen.minDod<>0, ', ' + kmen.minDod.ToString, ''); + lSQL:= lSQL + IfThen(kmen.dodLhuta<>0, ', ' + kmen.dodLhuta.ToString, '') + CRLF; + lSQL:= lSQL + 'SELECT SCOPE_IDENTITY()'; + try + with Helios.OpenSQL(lSQL) do + idKZ:= StrToInt(VarToStr(FieldValues(0))); + Inc(cntIns); + except on E:Exception do + begin + Helios.Error(#1'Chyba INS: ' + e.Message +#1); + idKZ:= 0; + end; + end; +} + lSQL:= 'DECLARE @idKZ INT; EXEC @idKZ=dbo.hp_VytvorPolozkuKmeneZbozi @SZ=N' + kmen.sz.QuotedString + ', @RegCis=N' + kmen.regCis.QuotedString; + lSQL:= lSQL + ', @Nazev1=N' + kmen.nazev1.QuotedString + IfThen(kmen.nazev2<>'', ', @Nazev2=N' + kmen.nazev2.QuotedString, ''); + lSQL:= lSQL + IfThen(kmen.nazev3<>'', ', @Nazev3=N' + kmen.nazev3.QuotedString, '') + IfThen(kmen.mj<>'', ', @MJEv=N' + kmen.mj.QuotedString, ''); + lSQL:= lSQL + IfThen(kmen.skp<>'', ', @SKP=N' + kmen.skp.QuotedString, '') + '; SELECT @idKZ'; + try + with Helios.OpenSQL(lSQL) do + idKZ:= StrToInt(VarToStr(FieldValues(0))); + Inc(cntIns); + except on E:Exception do + Helios.Error(#1'Chyba INS: ' + e.Message +#1); + end; + if (idKZ>0) then + begin + if (kmen.cOrgDod<>0) then + Helios.ExecSQL('UPDATE ' + tblKZ + ' SET Aktualni_Dodavatel=' + kmen.cOrgDod.ToString + ' WHERE ID=' + idKZ.ToString); + if (kmen.cOrgVyr<>0) then + Helios.ExecSQL('UPDATE ' + tblKZ + ' SET Vyrobce=' + kmen.cOrgVyr.ToString + ' WHERE ID=' + idKZ.ToString); + if (kmen.sortiment<>'') then + Helios.ExecSQL('UPDATE ' + tblKZ + ' SET IdSortiment=ISNULL( (SELECT ID FROM ' + tblSortim + ' WHERE KatAllTecky=N' + kmen.sortiment.QuotedString + '), NULL) WHERE ID=' + idKZ.ToString); + if (kmen.minDod<>0) then + Helios.ExecSQL('UPDATE ' + tblKZ + ' SET Minimum_Baleni_Dodavatel=' + kmen.minDod.ToString + ' WHERE ID=' + idKZ.ToString); + if (kmen.dodLhuta<>0) then + Helios.ExecSQL('UPDATE ' + tblKZ + ' SET DodaciLhuta=' + kmen.dodLhuta.ToString + ' WHERE ID=' + idKZ.ToString); + + end; + + + end + else + begin + lSQL:= 'UPDATE ' + tblKZ + ' SET Nazev1=N' + QuotedStr(kmen.nazev1) + ', Nazev2=N' + QuotedStr(kmen.nazev2) + ', Nazev3=N' + QuotedStr(kmen.nazev3) + ', SKP=N' + QuotedStr(kmen.skp); + lSQL:= lSQL + IfThen(kmen.sortiment<>'', ', IdSortiment=ISNULL( (SELECT ID FROM ' + tblSortim + ' WHERE KatAllTecky=N' + QuotedStr(kmen.sortiment) + '), NULL)', ''); + lSQL:= lSQL + ' WHERE ID=' + idKZ.ToString; + Helios.ExecSQL(lSQL); + Inc(cntAkt); + end; + if (idKZ>0) then + begin + lSQL:= 'IF NOT EXISTS(SELECT id FROM ' + tblNC + ' WHERE CenovaUroven=99 AND IDKmenZbozi=' + idKZ.ToString + ') INSERT ' + tblNC + ' (CenovaUroven, IDKmenZbozi) VALUES (99, ' + idKZ.ToString + ')'; + Helios.ExecSQL(lSQL); + if (kmen.mena='kč') or (kmen.mena='czk') then + Helios.ExecSQL('UPDATE ' + tblNC + ' SET CenaKC=' + StringReplace(kmen.jcena.ToString, ',', '.',[rfReplaceAll]) + ' WHERE CenovaUroven=99 AND IDKmenZbozi=' + idKZ.ToString); + if (kmen.mena='€') or (kmen.mena='eur') then + begin + lSQL:= 'IF NOT EXISTS(SELECT id FROM ' + tblNC + ' WHERE Mena1=N''EUR'' AND CenovaUroven=99 AND IDKmenZbozi=' + idKZ.ToString + ') '; + Helios.ExecSQL(lSQL + 'UPDATE ' + tblNC + ' SET Mena1=N''EUR'' WHERE CenovaUroven=99 AND IDKmenZbozi=' + idKZ.ToString); + Helios.ExecSQL('UPDATE ' + tblNC + ' SET CenaVal1=' + StringReplace(kmen.jcena.ToString, ',', '.',[rfReplaceAll]) + ' WHERE ' + + 'CenaVal1<>' + StringReplace(kmen.jcena.ToString, ',', '.',[rfReplaceAll]) + ' AND Mena1=N''EUR'' AND CenovaUroven=99 AND IDKmenZbozi=' + idKZ.ToString); + end; + + if (kmen.barcode<>'') then + begin + lSQL:= 'IF NOT EXISTS(SELECT ID FROM ' + tblBCode + ' WHERE BarCode=N' + QuotedStr(kmen.barcode) + ') INSERT ' + tblBCode + ' (IDKmenZbo, Prednastaveno, BarCode)'; + lSQL:= lSQL + ' SELECT ' + idKZ.ToString + ', 1, N' + QuotedStr(kmen.barcode); + Helios.ExecSQL(lSQL); + end; + lSQL:= 'IF NOT EXISTS(SELECT ID FROM ' + tblKZe + ' WHERE ID=' + idKZ.ToString + ') INSERT ' + tblKZe + ' (ID) VALUES (' + idKZ.ToString + ')'; + Helios.ExecSQL(lSQL); + lSQL:= 'UPDATE ' + tblKZe + ' SET _Naradi_TypPolozky=' + IfThen(kmen.typ=0, 'NULL', kmen.typ.ToString) + ', _Naradi_Kategorie=' + kmen.kateg.ToString + ', _Naradi_Objednavat=' + kmen.obj.ToString(); + lSQL:= lSQL + ' WHERE ID=' + idKZ.ToString; + Helios.ExecSQL(lSQL); + if (kmen.typ>0) then + Helios.ExecSQL('UPDATE ' + tblKZ + ' SET Nazev3=N'''' WHERE id=' + idKZ.ToString); + + end; + except on E:Exception do + errMsg:= E.Message + CRLF + lSQL; + end; + end; + waitEnd; + + Helios.Refresh(true); + Helios.Info(#1'Nových karet: ' + cntIns.ToString + CRLF + 'Upravených karet: ' + cntAkt.ToString + #1); + end; + end; + end; + + + + + + procedure TplgKdynium.ImportKmenMeridlaVC (const Helios: IHelios); + var lSQL, radky, zaznam, msg, errMsg, sTemp: String; + cnt, sl, posunSl, idxR, idxS, idKZ, idKVC, idVC, cntIns, cntAkt, overRadek: integer; + arrRadky: TArray>; + kmen: TKmen; + cont, prvniPrazdne: Boolean; + begin + + overRadek:= 0; + if (Clipboard.HasFormat(CF_TEXT)) then + begin + errMsg:= ''; + cont:= true; + prvniPrazdne:= false; + radky:= ''; + try + radky:= Clipboard.AsText; +// if (LeftStr(radky,1)=#9) then +// prvniPrazdne:= true; + sl:= PosCount(#9, LeftStr(radky, Pos(#13, radky)-1)) + 1; // pocet sloupcu + except on E:Exception do + cont:= false; + end; + if (radky<>'') and (cont) then + begin + cont:= true; + cntIns:= 0; + cntAkt:= 0; + cnt:= Length(radky)-Length(StringReplace(radky, Chr(13),'',[rfReplaceAll]))+1; + SetLength(arrRadky, cnt, sl); // index od 0 + if (Pos(#13, radky)>0) then + zaznam:= LeftStr(radky, Pos(#13, radky)-1) // nazvy sloupcu + else + zaznam:= radky; + if Helios.YesNo('Má importovaná oblast hlavičku ?', false) then + begin + Delete(radky,1,Pos(#13,radky)+1); // smaze hlavicku + SetLength(arrRadky,Length(arrRadky)-1); + end; + for idxR:=0 to High(arrRadky)-1 do + begin + if (Pos(#13,radky)>0) then + zaznam:= LeftStr(radky,Pos(#13,radky)-1) + else + zaznam:= radky; + zaznam:= Trim(StringReplace(zaznam, #9#9, #9' '#9,[rfReplaceAll])); + if (zaznam<>'') then + for idxS:=0 to sl-1 do + begin + if (zaznam<>'') then + begin + if (Pos(#9, zaznam)>0) then + begin + arrRadky[idxR,idxS]:= LeftStr(zaznam, Pos(#9, zaznam)-1); + Delete(zaznam,1,Pos(#9, zaznam)); + end + else + begin + arrRadky[idxR,idxS]:= zaznam; + zaznam:= ''; + end; + end; + end; + Delete(radky,1,Pos(#13, radky)+1); + end; + + posunSl:= 0; + if (prvniPrazdne) then + posunSl:= -1; + waitStart(nil, 'Import dat karet výrobních čísel měřidel', Length(arrRadky), clRed); + for idxR:=0 to High(arrRadky)-1 do + begin + if (idxR mod 10=0) then + waitSetProgBar(idxR); + try + idKZ:= 0; + idVC:= 0; + clearKmen (kmen); +{ + if Trim(arrRadky[idxR, 0])<>Trim(arrRadky[idxR, 1]) then + kmen.sz:= Trim(arrRadky[idxR, 0]); + if (Length(kmen.sz)=2) then + kmen.sz:= '0' + kmen.sz; +} + kmen.sz:= 'MNA'; + if (posunSl=-1) then + posunSl:= 0; + + if (Trim(arrRadky[idxR, posunSl])<>'') then + if (HeliosExistsTest(Helios, tblSZ, 'SkupZbo=N' + Trim(arrRadky[idxR, posunSl]).QuotedString)) then + kmen.sz:= Trim(arrRadky[idxR, posunSl]) + else + if (posunSl<>-1) then + posunSl:= -1; + kmen.regCis:= Trim(arrRadky[idxR, posunSl + 1]); + kmen.vyrCis:= Trim(arrRadky[idxR, posunSl + 2]); + if (kmen.regCis='') or (kmen.vyrCis='') then + continue; + + kmen.popisVC:= Trim(arrRadky[idxR, posunSl + 3]); + kmen.skutPopis:= Trim(arrRadky[idxR, posunSl + 4]); + TryStrToDate(Trim(arrRadky[idxR, posunSl + 5]), kmen.datKalibrace); + kmen.umisteniVC:= Trim(arrRadky[idxR, posunSl + 7]); + + idKZ:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblKZ + ' WHERE SkupZbo=N' + kmen.sz.QuotedString + ' AND RegCis=N' + kmen.regCis.QuotedString); + if (idKZ>0) then + begin + lSQL:= 'SELECT ID FROM ' + tblVyrCK + ' WHERE IDKmenZbozi=' + idKZ.ToString + ' AND Nazev1=N' + kmen.vyrCis.QuotedString; + idKVC:= helUtils.getHeliosIntVal(Helios, 0, lSQL); + if (idKVC=0) then + begin + lSQL:= 'DECLARE @i INT; EXEC dbo.hp_OZInsertVyrCK @IDVyrCK=@i OUT, @IDKmenZbozi=' + idKZ.ToString + ', @Selectem=0, @Nazev1=N' + kmen.vyrCis.QuotedString; + lSQL:= lSQL + ', @Nazev2=N' + kmen.popisVC.QuotedString + '; SELECT @i'; + try + with Helios.OpenSQL(lSQL) do + idKVC:= VarToStr(FieldValues(0)).ToInteger; + + if (kmen.umisteniVC<>'') then + begin + lSQL:= 'IF NOT EXISTS (SELECT 1 FROM ' + tblVyrCKE + ' WHERE ID=' + idKVC.ToString + ') INSERT ' + tblVyrCKE + ' (ID) SELECT ' + idKVC.ToString + CRLF; + lSQL:= lSQL + 'UPDATE ' + tblVyrCKE + ' SET _Umisteni=LEFT(N' + kmen.umisteniVC.QuotedString + ', 50) WHERE ID=' + idKVC.ToString; + Helios.ExecSQL(lSQL); + end; + + Inc(cntIns); + except on E:Exception do + begin + Helios.Error(#1'Chyba INS: ' + E.Message +#1); + idKZ:= 0; + idKVC:= 0; + end; + end; + end + else + Inc(cntAkt); + if (idKVC>0) then + begin + lSQL:= 'IF NOT EXISTS(SELECT ID FROM ' + tblVyrCKE + ' WHERE ID=' + idKVC.ToString + ') INSERT ' + tblVyrCKE + ' (ID) SELECT ' + idKVC.ToString + CRLF; + if (kmen.skutPopis<>'') then + lSQL:= lSQL + 'UPDATE ' + tblVyrCKE + ' SET _SkutecnyPopis=N' + QuotedStr(kmen.skutPopis) + ' WHERE ISNULL(_SkutecnyPopis,N'''')<>N' + + QuotedStr(kmen.skutPopis) + ' AND ID=' + idKVC.ToString + CRLF; + try + if (DateToStr(kmen.datKalibrace)<>'') then + lSQL:= lSQL + 'UPDATE ' + tblVyrCKE + ' SET _DatumKalibrace=CONVERT(datetime,N' + QuotedStr(DateToStr(kmen.datKalibrace)) + + ',104) WHERE (_DatumKalibrace IS NULL OR _DatumKalibrace<>' + + 'CONVERT(datetime,N' + QuotedStr(DateToStr(kmen.datKalibrace)) + ',104)) AND ID=' + idKVC.ToString; + finally + end; + Helios.ExecSQL(lSQL); + end; + + end + else + errMsg:= errMsg + 'Kmenová karta měřidla nenalezena: ' + kmen.regCis + CRLF; + except on E:Exception do + errMsg:= E.Message + CRLF + lSQL; + end; + end; + waitEnd; + + Helios.Refresh(true); + Helios.Info(#1'Nových karet VČ: ' + cntIns.ToString + CRLF + 'Upravených karet VČ: ' + cntAkt.ToString + #1); + end; + end; + end; + + + procedure TplgKdynium.ZakazkaZobrazAtestyTaveb(const Helios: IHelios; ids: TArray); + var lSQL, idsX: string; + bidRozbory, i: integer; + begin + if (Length(ids)>0) then + begin + bidRozbory:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_Rozbory'''); + if (bidRozbory>0) then + begin + +// ID taveb + idsX:= ''; + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabVybraneZaznamy'') IS NULL CREATE TABLE #TabVybraneZaznamy (ID INT NOT NULL, Hloubka TINYINT NOT NULL)'; + Helios.ExecSQL(lSQL); + for i:=Low(ids) to High(ids) do + begin + idsX:= idsX + ids[i].ToString + ', '; + Helios.ExecSQL('INSERT #TabVybraneZaznamy (ID, Hloubka) SELECT ' + ids[i].ToString + ', 1'); + end; + if (RightStr(idsX,2)=', ') then + idsX:= LeftStr(idsX, Length(idsX)-2); + + lSQL:= 'hvw_Rozbory.CisloTavby IN (SELECT CisloTavby FROM ' + tblTavby + ' WHERE ID IN (' + ArrayToString(ids, ',') + '))'; + Helios.OpenBrowse(bidRozbory, lSQL); + Helios.ExecSQL('DELETE FROM #TabVybraneZaznamy WHERE Hloubka=1'); + end; + end; + end; + + + + + procedure TplgKdynium.ZakazkaZobrazTavby(const Helios: IHelios; ids: TArray); + var lSQL, idsX: string; + bidTavby, i: integer; + begin + if (Length(ids)>0) then + begin + bidTavby:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_TavbyPosledniData'''); + if (bidTavby>0) then + begin + lSQL:= 'DROP TABLE IF EXISTS #TabVybraneZaznamy' + CRLF + 'CREATE TABLE #TabVybraneZaznamy (ID INT NOT NULL, Hloubka TINYINT NOT NULL)'; + Helios.ExecSQL(lSQL); + +// ID zakazek + idsX:= ''; + for i:=Low(ids) to High(ids) do + begin + idsX:= idsX + ids[i].ToString + ', '; + Helios.ExecSQL('INSERT #TabVybraneZaznamy (ID, Hloubka) SELECT ' + ids[i].ToString + ', 0'); + end; + if (RightStr(idsX,2)=', ') then + idsX:= LeftStr(idsX, Length(idsX)-2); + + lSQL:= 'hvw_TavbyPosledniData.CisloTavby IN (SELECT DISTINCT(x.Tavba) FROM ('; + lSQL:= lSQL + 'SELECT ee._Tavba AS Tavba FROM ' + tblMzdZmE + ' ee INNER JOIN ' + tblMzdZm + ' e ON (ee.ID=e.ID)'; + lSQL:= lSQL + ' INNER JOIN ' + tblPrikaz + ' vp ON (vp.ID=e.IDPrikaz) INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IDTabKmen)'; + lSQL:= lSQL + ' WHERE k.SkupZbo=N''P30'' AND vp.IDZakazka IN (' + helUtils.ArrayToString(ids, ',') + ')' + CRLF; + lSQL:= lSQL + 'UNION ALL' + CRLF; + lSQL:= lSQL + 'SELECT eex._Tavba AS Tavba FROM ' + tblMzdZmE + ' eex INNER JOIN ' + tblMzdZm + ' ex ON (eex.ID=ex.ID)'; + lSQL:= lSQL + ' INNER JOIN ' + tblPrikaz + ' vpx ON (vpx.ID=ex.IDPrikaz) INNER JOIN ' + tblKZ + ' kx ON (kx.ID=vpx.IDTabKmen)'; + lSQL:= lSQL + ' WHERE kx.SkupZbo=N''P30'' AND vpx.IDZakazka IN (SELECT IDZakazkaNizsi FROM ' + tblVazbyZak + ' WHERE IDZakazkaVyssi IN (' + helUtils.ArrayToString(ids, ',') + '))' + CRLF; + lSQL:= lSQL + 'UNION ALL' + CRLF; + lSQL:= lSQL + 'SELECT vcp.VyrCislo FROM ' + tblPrikazVC + ' vcp INNER JOIN ' + tblPrikaz; + lSQL:= lSQL + ' vp ON (vp.ID=vcp.IDPrikaz) INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IDTabKmen)'; + lSQL:= lSQL + ' WHERE k.SkupZbo=N''P30'' AND vp.IDZakazka IN (SELECT IDZakazkaNizsi FROM ' + tblVazbyZak + ' WHERE IDZakazkaVyssi IN (' + helUtils.ArrayToString(ids, ',') + '))' + CRLF; + lSQL:= lSQL + 'UNION ALL' + CRLF; + lSQL:= lSQL + 'SELECT vcp2.VyrCislo FROM ' + tblPrikazVC + ' vcp2 INNER JOIN ' + tblPrikaz; + lSQL:= lSQL + ' vp2 ON (vp2.ID=vcp2.IDPrikaz) INNER JOIN ' + tblKZ + ' k2 ON (k2.ID=vp2.IDTabKmen)'; + lSQL:= lSQL + ' WHERE k2.SkupZbo=N''P30'' AND vp2.IDZakazka IN (' + helUtils.ArrayToString(ids, ',') + ')) x)'; +{ + lSQL:= 'hvw_TavbyPosledniData.CisloTavby IN (SELECT ee._Tavba FROM ' + tblMzdZmE + ' ee INNER JOIN ' + tblMzdZm + ' e ON (ee.ID=e.ID)'; + lSQL:= lSQL + ' INNER JOIN ' + tblPrikaz + ' vp ON (vp.ID=e.IDPrikaz) INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IDTabKmen)'; + lSQL:= lSQL + ' WHERE k.SkupZbo=N''P30'' AND vp.IDZakazka IN (' + helUtils.ArrayToString(ids, ',') + '))'; + lSQL:= lSQL + ' OR hvw_TavbyPosledniData.CisloTavby IN (SELECT vcp.VyrCislo FROM ' + tblPrikazVC + ' vcp INNER JOIN ' + tblPrikaz; + lSQL:= lSQL + ' vp ON (vp.ID=vcp.IDPrikaz) INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IDTabKmen)'; + lSQL:= lSQL + ' WHERE k.SkupZbo=N''P30'' AND vp.IDZakazka IN (' + helUtils.ArrayToString(ids, ',') + '))'; +} + Helios.OpenBrowse(bidTavby, lSQL); + Helios.ExecSQL('DELETE FROM #TabVybraneZaznamy WHERE Hloubka=0'); + end; + end; + end; + + + + procedure TplgKdynium.ImportOperaciDoPripravyPrikazu(const Helios: IHelios); + var lSQL, IDcka: string; + mnoz: Extended; + idKZ, bidP: integer; + begin + lSQL:= 'IF OBJECT_ID(N''tempdb..#ImportOperaciDoPrikazu'') IS NOT NULL DROP TABLE #ImportOperaciDoPrikazu' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_ImportOperaciDoPrikazu'') IS NOT NULL DELETE FROM dbo._temp_ImportOperaciDoPrikazu WHERE Autor=SUSER_SNAME()' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_ImportOperaciDoPrikazu'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_ImportOperaciDoPrikazu)'; + lSQL:= lSQL + ' DROP TABLE dbo._temp_ImportOperaciDoPrikazu'; + Helios.ExecSQL(lSQL); +// oVar1:= helUtils.getHeliosStrVal(Helios, 'SELECT TOP(1) p.ID FROM ' + tblPostup + ' p INNER JOIN #TabPrPostup pp ON (pp.Operace=p.Operace AND pp.Typ=p.Typ AND pp.dilec=p.Dilec)'); + bidP:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_TPVPostupy'''); + if (bidP>0) then + begin + mnoz:= helUtils.getHeliosFloatVal(Helios, 1, 'SELECT TOP(1) Mnozstvi FROM #TabZmetkyNaOpravu'); + idKZ:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT TOP(1) IDTabKmen FROM #TabZmetkyNaOpravu'); + if (idKZ>0) then + begin + lSQL:= 'hvw_TPVPostupy.ID IN (SELECT p.ID FROM ' + tblPostup + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.dilec) WHERE LEFT(k.SkupZbo,2)=N''OO'' AND k.RegCis='; + lSQL:= lSQL + '(SELECT TOP(1) k2.RegCis FROM #TabZmetkyNaOpravu z INNER JOIN ' + tblKZ + ' k2 ON (k2.ID=z.IDTabKmen)))'; + if Helios.Prenos2(bidP, 'hvw_TPVPostupy.ID', 'hvw_TPVPostupy.ID', oVar1, oVar2, lSQL, 'Vyberte operace', false, true, false, 1) then + begin + IDcka:= VarToStr(oVar1); + if (IDcka='') then + IDcka:= '0'; + lSQL:= 'CREATE TABLE #ImportOperaciDoPrikazu (Dilec INT NOT NULL, IDOperace INT NOT NULL, Mnozstvi NUMERIC(19,6) NOT NULL, Autor NVARCHAR(80) DEFAULT SUSER_SNAME())' + CRLF; + lSQL:= lSQL + 'INSERT #ImportOperaciDoPrikazu (Dilec, IDOperace, Mnozstvi) SELECT ' + idKZ.ToString + ', ID, ' + mnoz.ToString + ' FROM ' + tblPostup + ' WHERE ID IN (' + IDcka + ')'; + if (jeTest) then + begin + lSQL:= StringReplace(lSQL, '#ImportOp', 'dbo._temp_ImportOp', [rfReplaceAll]); + lSQL:= StringReplace(lSQL, 'tempdb..', '', [rfReplaceAll]); + end; + Helios.ExecSQL(lSQL); + if not(jeTest) then + Helios.ExecSQL('IF OBJECT_ID(N''dbo.ep_VPr_Priprava_ImportOperaci'') IS NOT NULL EXEC dbo.ep_VPr_Priprava_ImportOperaci'); + Helios.Refresh(true); + end; + end; + end; + end; + + + + + + procedure TplgKdynium.ImportObedy (const Helios: IHelios); + var lSQL, defDir, fName, radek, cast1, cast2, cast3: string; + radky: TStringList; + i, i2, cisZam, pocetObedu: integer; + datOd, datDo: string; + obedy: TArray; + begin + defDir:= GetEnvironmentVariable('USERPROFILE') + PathDelim + 'Desktop'; + if (helUtils.OtevriSoubor ('Vyberte exportovaný soubor', 'Textové soubory', '*.txt', defDir, fName)) then + if (FileExists(fName)) then + begin + radky:= TStringList.Create; + radky.LoadFromFile(fName); + try + try + i:= 1; + i2:= 0; + SetLength(obedy, radky.Count*3); + for radek in radky do + begin + if (i=3) then + begin + datOd:= MidStr(radek, 35, 8); + datOd:= LeftStr(datOd, 6) + '20' + RightStr(datOd, 2); + datDo:= MidStr(radek, 46, 8); + datDo:= LeftStr(datDo, 6) + '20' + RightStr(datDo, 2); + + cast1:= MidStr(radek, 67, 5).Trim; + cast2:= MidStr(radek, 76, 22); + cast3:= MidStr(radek, 109, 2); + if (TryStrToInt(cast1, cisZam)) and (TryStrToInt(cast3, pocetObedu)) then + if (pocetObedu>0) then + begin + obedy[i2].cisZam:= cisZam; + obedy[i2].pocetObedu:= StrToInt(cast3); + Inc (i2); + end; + + cast1:= MidStr(radek, 115, 5).Trim; + cast2:= MidStr(radek, 124, 22); + cast3:= MidStr(radek, 155, 3); + if (TryStrToInt(cast1, cisZam)) and (TryStrToInt(cast3, pocetObedu)) then + if (pocetObedu>0) then + begin + obedy[i2].cisZam:= cisZam; + obedy[i2].pocetObedu:= StrToInt(cast3); + Inc (i2); + end; + end + else + if (i>3) then + begin + cast1:= MidStr(radek, 4, 5).Trim; + cast2:= MidStr(radek, 14, 22); + cast3:= MidStr(radek, 61, 2); + if (TryStrToInt(cast1, cisZam)) and (TryStrToInt(cast3, pocetObedu)) then + if (pocetObedu>0) then + begin + obedy[i2].cisZam:= cisZam; + obedy[i2].pocetObedu:= StrToInt(cast3); + Inc (i2); + end; + + cast1:= MidStr(radek, 67, 5).Trim; + cast2:= MidStr(radek, 76, 22); + cast3:= MidStr(radek, 109, 2); + if (TryStrToInt(cast1, cisZam)) and (TryStrToInt(cast3, pocetObedu)) then + if (pocetObedu>0) then + begin + obedy[i2].cisZam:= cisZam; + obedy[i2].pocetObedu:= StrToInt(cast3); + Inc (i2); + end; + + cast1:= MidStr(radek, 115, 5).Trim; + cast2:= MidStr(radek, 124, 22); + cast3:= MidStr(radek, 155, 3); + if (TryStrToInt(cast1, cisZam)) and (TryStrToInt(cast3, pocetObedu)) then + if (pocetObedu>0) then + begin + obedy[i2].cisZam:= cisZam; + obedy[i2].pocetObedu:= StrToInt(cast3); + Inc (i2); + end; + end; + + Inc(i); + end; + except + end; + finally + radky.Free; + end; + + lSQL:= 'DROP TABLE IF EXISTS #TabImpObedy' + CRLF + 'CREATE TABLE #TabImpObedy (CisloZam INT NOT NULL, PocetObedu INT NOT NULL)'; + Helios.ExecSQL (lSQL); + for i:=0 to Length(obedy)-1 do + if (obedy[i].cisZam>0) and (obedy[i].pocetObedu>0) then + Helios.ExecSQL ('INSERT #TabImpObedy (CisloZam, PocetObedu) SELECT ' + obedy[i].cisZam.ToString + ', ' + obedy[i].pocetObedu.ToString); + lSQL:= 'IF OBJECT_ID(N''dbo.hpx_HDC_Mzdy_PredzpracImportObedyJobAbacus'', N''P'') IS NOT NULL EXEC dbo.hpx_HDC_Mzdy_PredzpracImportObedyJobAbacus @datumOd=N' + datOd.QuotedString; + Helios.ExecSQL (lSQL); + end; + end; + + + + + procedure TplgKdynium.RozpRezii_PseudoAutomat(const Helios: IHelios; const arrID: TArray); + var lSQL, nazRozp, vstStr, denikIDs, utvarVst, cisStredOper: string; + idPreuct, idx, rozpNr, idRozpRez, idObd, mObd, rObd: integer; + ctiZak, ctiUtvar: Boolean; + celkemHod, zakazkaHod: extended; + arrVstStr: TArray; + begin + if (Length(arrID)>0) then + begin + idObd:= 0; + with Helios.OpenSQL('IF OBJECT_ID(N''tempdb..#TabObdobiRozpRez'') IS NOT NULL SELECT IdObd FROM #TabObdobiRozpRez ELSE SELECT 0') do + idObd:= VarToStr(FieldValues(0)).ToInteger; + if (idObd=0) then + begin + idx:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT DPBID FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_ObdobiStavu'''); + if (idx>0) then + if Helios.Prenos(idx, 'hvw_ObdobiStavu.ID', oVar, 'DATEDIFF(year, hvw_ObdobiStavu.DatumOd, GETDATE()) BETWEEN 0 AND 1', 'Vyberte období M/R', true) then + idObd:= StrToInt(VarToStr(oVar)); + end; + + cisStredOper:= ''; + if (Helios.Prenos(bidStrom, 'Cislo', oVar, 'TabStrom.TypStrediska=1', 'Vyberte Výrobní středisko', true)) then + cisStredOper:= oVar; + + + + for rozpNr:=0 to Length(arrID)-1 do + begin + idRozpRez:= arrID[rozpNr]; + if ((idRozpRez>0) and (idObd>0)) then + begin + with Helios.OpenSQL('SELECT DATEPART(month, DatumOd), DATEPART(year, DatumOd) FROM hvw_ObdobiStavu WHERE Id=' + idObd.ToString) do + begin + mObd:= VarToStr(FieldValues(0)).ToInteger; + rObd:= VarToStr(FieldValues(1)).ToInteger; + end; + +// with Helios.OpenSQL('SELECT Id FROM ' + tblPreuctRez + ' WHERE IdFIARozpousteniRezii=' + IntToStr(idRozpRez)) do +// idPreuct:= StrToInt(VarToStr(FieldValues(0))); + + ctiZak:= getHeliosBoolVal(Helios, false, 'SELECT VystupZakazky FROM ' + tblRozpRez + ' WHERE Id=' + idRozpRez.ToString); + ctiUtvar:= getHeliosBoolVal(Helios, false, 'SELECT VystupUtvary FROM ' + tblRozpRez + ' WHERE Id=' + idRozpRez.ToString); + + vstStr:= ''; +{ + if (ctiUtvar or ctiZak) then + begin + lSQL:= 'SELECT STRING_AGG( '; + lSQL:= lSQL + IfThen(ctiUtvar, 'ISNULL(Utvar, N'''')', ''); + lSQL:= lSQL + IfThen(ctiZak, IfThen(ctiUtvar, ' + IIF(Utvar IS NOT NULL, N''/'', N'''') + ', '') + 'ISNULL(CisloZakazky,N'''')',''); + lSQL:= lSQL + ', N'','') FROM ' + tblRozpRezDet + ' WHERE IdFIARozpusteniRezii=' + idRozpRez.ToString; + with Helios.OpenSQL(lSQL) do + if (RecordCount=1) then + vstStr:= VarToStr(FieldValues(0)); + end; + SetLength(arrVstStr, PosCount(',',vstStr)+1); + arrVstStr:= vstStr.Split([',']); // StringToStringArray(vstStr,','); +} + if (idObd>0) then + begin + + waitStart(nil, 'Zjišťuji podíly evidovaných hodin práce' + IfThen(cisStredOper='', '', ' pracovišť střediska ' + cisStredOper), 1, clRed); + + lSQL:= 'SELECT ISNULL(SUM(pmz.Nor_cas_H), 0) FROM ' + tblPMZ + ' pmz INNER JOIN ' + tblPrikaz + 'p ON (p.ID=pmz.IDPrikaz) INNER JOIN ' + tblZak; + lSQL:= lSQL + ' z ON (p.IDZakazka=z.ID) INNER JOIN ' + tblPrPost + ' pp ON (pp.IDPrikaz=pmz.IDPrikaz AND pp.Doklad=pmz.DokladPrPostup AND pp.Alt=pmz.AltPrPostup'; + lSQL:= lSQL + ' AND pp.IDOdchylkyDo IS NULL) INNER JOIN ' + tblCPrac + ' pr ON (pr.ID=pmz.IDPracoviste) WHERE DATEPART(month, pmz.Datum)=' + mObd.ToString; + lSQL:= lSQL + ' AND DATEPART(year, pmz.Datum)=' + rObd.ToString + ' AND pp.typ=1' + IfThen(cisStredOper='', '', ' AND pr.IDTabStrom=N' + cisStredOper.QuotedString); + celkemHod:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + + lSQL:= 'SELECT DISTINCT(z.CisloZakazky), ' + idRozpRez.ToString + ', 100*ISNULL(SUM(pmz.Nor_cas_H),0)/' + celkemHod.ToString.Replace(',','.') + ' FROM ' + tblPMZ + ' pmz INNER JOIN '; + lSQL:= lSQL + tblPrikaz + 'p ON (p.ID=pmz.IDPrikaz) INNER JOIN ' + tblZak; + lSQL:= lSQL + ' z ON (p.IDZakazka=z.ID) INNER JOIN ' + tblPrPost + ' pp ON (pp.IDPrikaz=pmz.IDPrikaz AND pp.Doklad=pmz.DokladPrPostup AND pp.Alt=pmz.AltPrPostup'; + lSQL:= lSQL + ' AND pp.IDOdchylkyDo IS NULL) INNER JOIN ' + tblCPrac + ' pr ON (pr.ID=pmz.IDPracoviste) WHERE DATEPART(month, pmz.Datum)=' + mObd.ToString; + lSQL:= lSQL + ' AND DATEPART(year, pmz.Datum)=' + rObd.ToString + ' AND pp.typ=1' + IfThen(cisStredOper='', '', ' AND pr.IDTabStrom=N' + cisStredOper.QuotedString) + ' GROUP BY z.CisloZakazky'; + + Helios.ExecSQL('DELETE FROM ' + tblRozpRezDet + ' WHERE IdFIARozpusteniRezii=' + idRozpRez.ToString); + helUtils.ReseedTable(Helios, tblRozpRezDet); + Helios.ExecSQL('INSERT ' + tblRozpRezDet + ' (CisloZakazky, IdFIARozpusteniRezii, Podil) ' + lSQL); + + waitEnd; + +{ + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + Helios.ExecSQL('DELETE FROM ' + tblRozpRezDetVst + ' WHERE IdFIARozpusteniRezii=' + idRozpRez.ToString); + end + else + Helios.Error(#1'Ve vybraném období nejsou evidovány žádné operace.'#1); +} + end; // idObd>0 + end; // idRozpRez>0 + end; // for rozpNr + end; + Helios.Refresh(true); + end; + + + + + + procedure TplgKdynium.VytvorTempExtKomPar (const Helios: IHelios; id: integer); + var lSQL: string; + begin + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabExtKomPar'', ''U'') IS NULL CREATE TABLE #TabExtKomPar (Popis NVARCHAR(10) NULL, Cislo NUMERIC(19,6) NULL)' + CRLF; + lSQL:= lSQL + 'DELETE FROM #TabExtKomPar' + CRLF + 'INSERT #TabExtKomPar (Popis, Cislo) SELECT N''STVlastID'', ' + id.ToString; + Helios.ExecSQL(lSQL); + end; + + + + + + procedure TplgKdynium.Run (const Helios: IHelios); + const MinVerzeHelios = $030020250106; + var typAkce: byte; + browID, cRec, cntID, l_loop, idDZ, dpz, cOrg, newBid: integer; + lSQL, autor, radDokl, IDcka, params, paramsBak, vlastPar, vlastPar2, contInfo, sz, podm, sTemp: string; + iTemp, iTemp2, iTemp3: integer; + nTemp, nTemp2, nTemp3, nTemp4: Extended; + arrId: TArray; + fGenPolos: TformGenPolos; + fOdlitek: TformOdlitek; + fGenTPV: TformGenTPV; + fOdvTavba: TformOdvTavby; + fOdvLis: TformOdvLis; + fDavObec: TformDavkyObecne; + fEvidOp: TformEvidOper; + fHrOdvOp: TformHrOdvOper; + fSchvalZak: TformSchvaleniZak; + fOOPPohyb: TformOOPPohyb; + term, canCont, plusJeden: boolean; + begin + +{$IFDEF MadExcept} + MESettings.BugReportFile:= GetEnvironmentVariable('USERPROFILE') + PathDelim + 'Desktop' + PathDelim + 'MadExReport.txt'; + MESettings.AutoSave:= true; + MESettings.BugReportFileSize:= 1024 * 200; + MESettings.GeneralNoBugReport:= false; +{$ENDIF} + + term:= false; + jeTest:= false; + if (Helios.HeVersion0 then + begin + typAkce:= StrToInt(LeftStr(params,Pos(';',params)-1)); + params:= MidStr(params,Pos(';',params)+1,255); + if Pos(';',params)>0 then + browID:= StrToInt(LeftStr(params,Pos(';',params)-1)) + else + browID:= StrToInt(params); + if Pos(';',params)>0 then // zadany 3 parametry (akce, browID, vlastnikID) + begin + params:= MidStr(params,Pos(';',params)+1,255); + if Pos(';', params)>0 then + begin + vlastPar:= LeftStr(params,Pos(';',params)-1); + vlastPar2:= MidStr(params,Pos(';',params)+1,255); + end + else + vlastPar:= params; + end; + end + else + raise Exception.Create('Nemám potřebný počet parametrů !'); + end; + + verText:= GetFileVersion2(GetModuleName(HInstance)); + if Length(verText)=12 then + verText:= LeftStr(verText,9) + '0' + RightStr(verText,3); + + if (RightStr(LeftStr(vlastPar,2),1)=':') or (LeftStr(vlastPar,2)='\\') then + cestaExport:= vlastPar; + + vlastPar:= Trim(vlastPar); + vlastPar2:= Trim(vlastPar2); + +{ + jeTest:= UpperCase(vlastPar)='TEST'; + if (vlastPar2<>'') then + jeTest:= UpperCase(vlastPar2)='TEST'; +} + + if AnsiContainsText(UpperCase(paramsBak), ';TEST') then + jeTest:= true; + + if (Helios.BrowseID<>browID) then + begin + typAkce:= 0; + Helios.Error('Tento plugin lze volat pouze z přehledu: '#1 + IntToStr(browID) + #1'.'); + end; + + IDcka:= ''; + cRec:= 0; + if (Helios.SelectedRecordIDs<>'') 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,262140) // 65535 * 4 (max. delka pole) + end + else + arrID[l_loop]:= StrToInt(IDcka); + end; + cRec:= arrID[0]; + end; + + case typAkce of + 0: Helios.Info(#1'PLUGIN OK'#1); + 1: begin + if (cRec>0) then + begin + if (browID=2) or (browID=11001) then + begin + with Helios.OpenSQL('SELECT id FROM ' + tblKZ + ' WHERE SkupZbo IN (N''VOD'',N''VOB'') AND Id=' + IntToStr(cRec)) do + if (RecordCount=1) then + begin + fGenPolos:= TformGenPolos.Create(nil); + try + fGenPolos.Helios:= Helios; + fGenPolos.idKZ:= cRec; + fGenPolos.genKusovnik:= (LowerCase(vlastPar)='genkus'); + fGenPolos.ShowModal; + finally + fGenPolos.Free; + end; + end + else + Helios.Error(#1'!! Akci lze spustit jen nad skupinami VOB/VOD !!'#1); + end + else + Helios.Error(#1'!! Akci lze spustit jen v přehledu Kmenové karty nebo Vyráběné dílce !!'#1); + end; + end; + + 2: begin // kopie polozek na doklad + try + idDZ:= StrToInt(VarToStr(Helios.QueryEdit.FieldByNameValues('ID'))); + dpz:= StrToInt(VarToStr(Helios.QueryEdit.FieldByNameValues('DruhPohybuZbo'))); + newBid:= 0; + if (dpz=2) or (dpz=4) then + newBid:= 16; // prijemka + if (dpz=0) then + newBid:= 18; // vydejka + if Helios.Prenos(newBid, 'ID', oVar1, '', 'Vyberte zdrojový doklad', true) then + Helios.ExecSQL('IF OBJECT(N' + QuotedStr('dbo.ep_PZ_KopieVsechPolozkyNaDoklad') + ') IS NOT NULL EXEC dbo.ep_PZ_KopieVsechPolozkyNaDoklad @idSrc=' + VarToStr(oVar1) + ', @idDst=' + IntToStr(idDZ)); + except + end; + end; + + 3: begin + Helios.ExecSQL('IF OBJECT_ID(N' + QuotedStr('dbo._TabInsertPol') + ') IS NOT NULL DROP TABLE dbo._TabInsertPol'); + try + idDZ:= StrToInt(VarToStr(Helios.QueryEdit.FieldByNameValues('ID'))); + dpz:= StrToInt(VarToStr(Helios.QueryEdit.FieldByNameValues('DruhPohybuZbo'))); + try + cOrg:= StrToInt(VarToStr(Helios.QueryEdit.FieldByNameValues('CisloOrg'))); + except on E:Exception do + cOrg:= 0; + end; + radDokl:= VarToStr(Helios.QueryEdit.FieldByNameValues('RadaDokladu')); + if not((dpz=0) and ((radDokl='165') or (radDokl='166'))) then + Helios.Error(#1'Tuto akci lze spustit jen v příjemce řady 165 / 166'#1) + else + begin + podm:= 'TabPohybyZbozi.IdDOklad IN (SELECT ID FROM ' + tblDZ + ' WHERE CisloOrg=' + IntToStr(cOrg)+ ' AND DruhPohybuZbo IN (2,4))'; + podm:= podm + ' AND TabPohybyZbozi.SkupZbo IN (N''F00'',N''F01'') AND TabPohybyZbozi.IDZboSklad IN (SELECT ID FROM ' + tblSS + ' WHERE IDKmenZbozi IN '; + podm:= podm + '(SELECT ID FROM ' + tblKZe + ' WHERE ISNULL(_CislovySkladFormyPripravky,N'''')=N' + QuotedStr(Helios.Sklad) + '))'; + if Helios.Prenos2(45, 'TabPohybyZbozi.ID', 'TabPohybyZbozi.RegCis', oVar1, oVar2, podm, 'Vyberte přijímané formy', True, True, False, 1) then + begin + IDcka:= VarToStr(oVar1); + if (IDcka<>'') then + begin + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabInsertPol'') IS NOT NULL DROP TABLE #TabInsertPol; CREATE TABLE #TabInsertPol (IdDoklad INT, IdStav INT, IdPohybOld INT)'; + if (jeTest) then + lSQL:= 'IF OBJECT_ID(N''dbo._TabInsertPol'') IS NOT NULL DROP TABLE dbo._TabInsertPol; CREATE TABLE dbo._TabInsertPol (IdDoklad INT, IdStav INT, IdPohybOld INT)'; + Helios.ExecSQL(lSQL); + arrID:= helUtils.StrToArrayInt(IDcka); + for l_loop:=0 to Length(arrId)-1 do + Helios.ExecSQL('INSERT ' + IfThen(jeTest, 'dbo._TabInsertPol', '#TabInsertPol') + ' (IdDoklad, IdPohybOld) VALUES (' + IntToStr(idDZ) + ', ' + IntToStr(arrID[l_loop]) + ')'); + lSQL:= 'MERGE ' + IfThen(jeTest, 'dbo._TabInsertPol', '#TabInsertPol') + ' AS T USING dbo.TabPohybyZbozi AS S ON (S.Id=T.IdPohybOld) WHEN MATCHED THEN UPDATE SET T.IDStav=S.IdZboSklad;'; + Helios.ExecSQL(lSQL); + + lSQL:= 'IF OBJECT_ID(N''dbo.ep_OZ_VlozPolozkyZTempTab'') IS NOT NULL EXEC dbo.ep_OZ_VlozPolozkyZTempTab @idDoklad=' + IntToStr(idDZ); + lSQL:= lSQL + ', @typInsertu=1'; + if not(jeTest) then + Helios.ExecSQL(lSQL); + end; + end; + end; + except + end; + end; + + 4: begin + exportProMatrix(Helios); + term:= true; + end; + + 5: begin + Helios.ExecSQL('IF OBJECT_ID(N''dbo.ep_Matrix_GenVydObj'') IS NOT NULL EXEC dbo.ep_Matrix_GenVydObj'); + term:= true; + end; + + 6: ImportKmenProMatrix(Helios, vlastPar); + + 7: begin + if (cRec>0) then + if ('P30'=helUtils.getHeliosStrVal(Helios, '', 'SELECT SkupZbo FROM ' + tblKZ + ' WHERE ID=' + cRec.ToString)) then + Helios.OpenBrowse2(100054, 'hvw_MaterialyPrvky.IDKmenZbozi=' + cRec.ToString, 898); + end; + + 8: begin + fOdlitek:= TformOdlitek.Create(nil); + try + sTemp:= helUtils.getHeliosStrVal(Helios, '', 'SELECT SkupZbo FROM ' + tblKZ + ' WHERE ID=' + cRec.ToString); + fOdlitek.odlitek:= helUtils.getHeliosStrVal(Helios, '', 'SELECT RegCis FROM ' + tblKZ + ' WHERE ID=' + cRec.ToString); +// with Helios.OpenSQL('SELECT ID FROM ' + tblOdlitky + ' WHERE ISNULL(MatecniOdlitek,N'''')=N' + QuotedStr(fOdlitek.odlitek)) do +// if (RecordCount>1) then +// Helios.Error(#1'Registrační číslo je číslo matečního odlitku, vyberte odpovídající kartu VOD nebo VOB'#1) +// else + if not (helUtils.HeliosExistsTest(Helios, tblOdlitky, 'Odlitek=N' + fOdlitek.odlitek.QuotedString)) then + begin + if (sTemp='VOB') or (sTemp='VOD') or (sTemp='P10') or (sTemp='P11') then + begin + Helios.ExecSQL('INSERT ' + tblOdlitky + ' (Odlitek) SELECT N' + fOdlitek.odlitek.QuotedString); + fOdlitek.odlitek:= helUtils.getHeliosStrVal(Helios, '', 'SELECT RegCis FROM ' + tblKZ + ' WHERE ID=' + cRec.ToString); + end + else + Helios.Error(#1'Tato karta nemá zavedenou kartu s paramerty odlitku/obrobku.'#1); + end; +// fOdlitek.skinName:= 'Carbon'; + fOdlitek.Helios:= Helios; + fOdlitek.jenView:= false; + fOdlitek.debug:= false; + fOdlitek.idK:= cRec; + if (vlastPar='debug') then + fOdlitek.debug:= true; +{ + lSQL:= 'IF NOT EXISTS(SELECT ID FROM ' + tblOdlitky + ' WHERE Odlitek=N' + QuotedStr(fOdlitek.odlitek) + ') INSERT '; + lSQL:= lSQL + tblOdlitky + ' (Odlitek, Nazev) SELECT RegCis, LTRIM(RTRIM(Nazev1)) FROM ' + tblKZ + ' WHERE ID=' + cRec.ToString; + Helios.ExecSQL(lSQL); +} + with Helios.OpenSQL('SELECT ID FROM ' + tblOdlitky + ' WHERE Odlitek=N' + QuotedStr(fOdlitek.odlitek) + ' AND BlokovaniEditoru IS NOT NULL') do + if (RecordCount>0) then + fOdlitek.jenView:= true; + fOdlitek.ShowModal; + finally + fOdlitek.Free; + end; + end; + + 9: begin + fGenTPV:= TformGenTPV.Create(nil); + try + fGenTPV.Helios:= Helios; + fGenTPV.idKZrodic:= cRec; + fGenTPV.jeTest:= jeTest; + fGenTPV.ShowModal; + finally + fGenTPV.Free; + end; + end; + + 10: begin + fOdvTavba:= TformOdvTavby.Create(nil); + try + fOdvTavba.rada:= ''; + fOdvTavba.jeTest:= jeTest; + fOdvTavba.Helios:= Helios; + fOdvTavba.typ:= 1; // tavba + fOdvTavba.druhDavky:= 0; + fOdvTavba.ShowModal; + finally + fOdvTavba.Free; + end; + end; + + 11: begin + fOdvTavba:= TformOdvTavby.Create(nil); + try + fOdvTavba.rada:= ''; + fOdvTavba.jeTest:= jeTest; + fOdvTavba.Helios:= Helios; + fOdvTavba.typ:= 2; // vibrovac + fOdvTavba.druhDavky:= 0; + fOdvTavba.ShowModal; + finally + fOdvTavba.Free; + end; + end; + + 12: begin + ImportOperaciDoPripravyPrikazu(Helios); + end; + + 13: begin + cRec:= StrToInt(VarToStr(Helios.HeliosVlastnik.QueryBrowse.FieldByNameValues('ID'))); + term:= helUtils.HeliosExistsTest(Helios, tblPlanLis, 'ID=' + cRec.ToString + ' AND Ukonceno=1'); + oVar1:= ''; + oVar2:= ''; + Helios.ExecSQL('IF OBJECT_ID(N''dbo._temp_TabPrPostupy'') IS NOT NULL DROP TABLE dbo._temp_TabPrPostupy'); + + podm:= 'TabPrPostup.Kusy_zive>0 AND TabPrPostup.IDPrikaz IN (SELECT ID FROM ' + tblPrikaz + ' WHERE StavPrikazu IN (30,40)'; + podm:= podm + ' AND Rada LIKE N' + QuotedStr('221-1%') + ') AND TabPrPostup.pracoviste IN (SELECT ID FROM ' + tblCPrac; + podm:= podm + ' WHERE pracoviste LIKE N''V%'' AND LOWER(nazev) LIKE N''lis%'''; +// podm:= podm + helUtils.getHeliosStrVal(Helios, 'SELECT Lis FROM ' + tblPlanLis + ' WHERE ID=' + cRec.ToString) + '%'''; + podm:= podm + ')'; + if Helios.Prenos2(bidFrontaPrace, 'TabPrPostup.ID', 'TabPrPostup.IDPrikaz', oVar1, oVar2, podm, 'Vyberte příkazy' + IfThen(term,' (!! PLÁN JE UZAVŘEN !!)',''), true, true, false, 1) then + begin + if not(term) then // je plan uzavren ? + begin + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabPrPostupy'') IS NOT NULL DROP TABLE #TabPrPostupy' + CRLF + 'CREATE TABLE #TabPrPostupy (ID INT NOT NULL, '; + lSQL:= lSQL + 'Autor NVARCHAR(80) DEFAULT SUSER_SNAME())' + CRLF; + lSQL:= lSQL + 'INSERT #TabPrPostupy (ID) SELECT ID FROM ' + tblPrPost + ' WHERE ID IN (' + oVar1 + ')' + CRLF; + if (jeTest) then + begin + lSQL:= StringReplace(lSQL, 'tempdb..', '', [rfReplaceAll]); + lSQL:= StringReplace(lSQL, '#TabPrPostupy', 'dbo._temp_TabPrPostupy', [rfReplaceAll]); + end; + Helios.ExecSQL(lSQL); + if not(jeTest) then + Helios.ExecSQL('IF OBJECT_ID(N''dbo.ep_Vosk_PlanLisu_AddPrikazy'') IS NOT NULL EXEC dbo.ep_Vosk_PlanLisu_AddPrikazy @idPlan=' + cRec.ToString); + end + else + Helios.Error(#1'Plán je již uzavřen, nelze přidávat příkazy'#1); + end; + end; + + 14: begin + fOdvTavba:= TformOdvTavby.Create(nil); + try + fOdvTavba.rada:= ''; + if (vlastPar<>'') then + fOdvTavba.rada:= vlastPar; + fOdvTavba.jeTest:= jeTest; + fOdvTavba.Helios:= Helios; + fOdvTavba.typ:= 3; // operace obecne odvod na stromky + fOdvTavba.druhDavky:= 0; + fOdvTavba.ShowModal; + finally + fOdvTavba.Free; + end; + end; + + 15: ImportKmenFormy(Helios); + + 16: begin + fOdvLis:= TformOdvLis.Create(nil); + try + fOdvLis.Helios:= Helios; + fOdvLis.jeTest:= jeTest; + fOdvLis.mVerze:= verText; + fOdvLis.ShowModal; + finally + fOdvLis.Free; + end; + end; + + 17: begin + fOdvTavba:= TformOdvTavby.Create(nil); + try + fOdvTavba.rada:= '221-12'; + fOdvTavba.jeTest:= jeTest; + fOdvTavba.Helios:= Helios; + fOdvTavba.typ:= 4; // operace udelej prevodku P12 z vosku na obalovnu + fOdvTavba.druhDavky:= 0; + fOdvTavba.ShowModal; + finally + fOdvTavba.Free; + end; + end; + + 18: begin + fOdlitek:= TformOdlitek.Create(nil); + try + fOdlitek.odlitek:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Odlitek FROM ' + tblOdlitky + ' WHERE ID=' + cRec.ToString); + fOdlitek.Helios:= Helios; + fOdlitek.jenView:= false; + fOdlitek.debug:= false; + if (vlastPar='debug') then + fOdlitek.debug:= true; + with Helios.OpenSQL('SELECT ID FROM ' + tblOdlitky + ' WHERE Odlitek=N' + QuotedStr(fOdlitek.odlitek) + ' AND BlokovaniEditoru IS NOT NULL') do + if (RecordCount>0) then + fOdlitek.jenView:= true; + fOdlitek.ShowModal; + finally + fOdlitek.Free; + end; + end; + + 19: begin + fDavObec:= TformDavkyObecne.Create(nil); + try + fDavObec.id:= 0; + if (vlastPar='edit') then + fDavObec.id:= cRec; + fDavObec.idRodic:= 0; + fDavObec.druhDavky:= 4; + fDavObec.Helios:= Helios; + fDavObec.ShowModal; + finally + fDavObec.Free; + end; + end; +{ + 19: begin + fOdvTavba:= TformOdvTavby.Create(nil); + try + fOdvTavba.rada:= '223-31'; + fOdvTavba.jeTest:= jeTest; + fOdvTavba.Helios:= Helios; + fOdvTavba.typ:= 5; // obecna davka + fOdvTavba.druhDavky:= 0; + if (IsNumeric(Trim(vlastPar))) then + fOdvTavba.druhDavky:= StrToInt(Trim(vlastPar)); // 1 = tavirna -> konecna + fOdvTavba.ShowModal; + finally + fOdvTavba.Free; + end; + end; + } + + 20: begin + fOdvTavba:= TformOdvTavby.Create(nil); + try + fOdvTavba.jeTest:= jeTest; + fOdvTavba.Helios:= Helios; + fOdvTavba.typ:= 6; // P42 + fOdvTavba.druhDavky:= 6; + fOdvTavba.ShowModal; + finally + fOdvTavba.Free; + end; + end; + + 21: begin + fEvidOp:= TformEvidOper.Create(nil); + try + fEvidOp.Helios:= Helios; + fEvidOp.jeTest:= jeTest; + fEvidOp.filtrRada:= IfThen(vlastPar<>'', vlastPar, ''); + fEvidOp.ShowModal; + finally + fEvidOp.Free; + end; + end; + + 22: begin + fHrOdvOp:= TformHrOdvOper.Create(nil); + try + fHrOdvOp.Helios:= Helios; + fHrOdvOp.idHromEvidOp:= 0; + fHrOdvOp.jeEditace:= false; + if (vlastPar='edit') then + begin + fHrOdvOp.idHromEvidOp:= cRec; + fHrOdvOp.jeEditace:= true; + end; + fHrOdvOp.jeTest:= jeTest; + fHrOdvOp.filtrRada:= IfThen(vlastPar<>'', vlastPar, ''); + fHrOdvOp.ShowModal; + finally + fHrOdvOp.Free; + end; + end; + + 23: ImportKmenFormyVC(Helios); + + 24: begin + try + if (Length(arrId)>0) then + VyrPrikazyDoVyssiho(Helios, arrID); + except on E:Exception do + Helios.Error(#1'Chyba převedení příkazu(-ů) do vyššího' + CRLF + E.Message + #1); + end; + end; + + 25: begin + if (Helios.BrowseID=11083) then + begin + try + cRec:= StrToInt(VarToStr(Helios.HeliosVlastnik.QueryBrowse.FieldByName('ID').Value)); // ID prikazu + ImportVCKmen2VyrPrikaz(Helios, cRec); + except on E:Exception do + Helios.Error(#1'Chyba při zjišťování ID příkazu'#1 + CRLF + E.Message); + end; + end; + end; + + 26: ImportKmenMeridla(Helios); + 27: ImportKmenMeridlaVC(Helios); + 28: ZakazkaZobrazTavby(Helios, arrID); + 29: ZakazkaZobrazAtestyTaveb(Helios, arrID); + + 30: begin + fSchvalZak:= TformSchvaleniZak.Create(nil); + try + fSchvalZak.Helios:= Helios; + fSchvalZak.id:= 0; + if (Length(arrId)>1) then + fSchvalZak.arrID:= arrId + else + fSchvalZak.id:= cRec; + fSchvalZak.ShowModal; + finally + fSchvalZak.Free; + end; + end; + + 31: ImportProcentaZtrat(Helios); + 32: begin + iTemp:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT DPBID FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_ObdobiStavu'''); + if (iTemp>0) then + begin + podm:= 'DATEDIFF(year, hvw_ObdobiStavu.DatumOd, GETDATE()) BETWEEN 0 AND 1'; + if (Length(arrID)=1) then + begin + iTemp2:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT o.DatumOd_Y FROM ' + tblObd + ' o INNER JOIN ' + tblRozpRez + ' r ON (r.IDObdobi=o.ID) WHERE r.ID=' + cRec.ToString); + if (iTemp2>0) then + podm:= podm + ' AND hvw_ObdobiStavu.DatumOd_Y=' + iTemp2.ToString; + end; + if Helios.Prenos(iTemp, 'hvw_ObdobiStavu.ID', oVar, podm, 'Vyberte období ' + IfThen(iTemp2>0, ' roku ' + iTemp2.ToString, ' (M/R)'), true) then + begin + Helios.ExecSQL('DROP TABLE IF EXISTS #TabObdobiRozpRez' + CRLF + 'CREATE TABLE #TabObdobiRozpRez (IdObd INT)' + CRLF + 'INSERT #TabObdobiRozpRez (IdObd) SELECT ' + VarToStr(oVar)); + RozpRezii_PseudoAutomat(Helios, arrID); + end; + end; + Helios.ExecSQL('DROP TABLE IF EXISTS #TabObdobiRozpRez'); + end; + + 33: begin // OOP zadani pohybu + fOOPPohyb:= TformOOPPohyb.Create(nil); + try + fOOPPohyb.Helios:= Helios; + fOOPPohyb.jeTest:= jeTest; + fOOPPohyb.ShowModal; + finally + fOOPPohyb.Free; + end; + end; + + 34: begin + iTemp:= StrToInt (VarToStr(Helios.HeliosVlastnik.QueryBrowse.FieldByNameValues('ID'))); // radek vydejky + iTemp2:= StrToInt (VarToStr(Helios.HeliosVlastnik.QueryBrowse.FieldByNameValues('IDZboSklad'))); // idZboSklad + nTemp:= StrToFloat (VarToStr(Helios.HeliosVlastnik.QueryBrowse.FieldByNameValues('Mnozstvi'))); // mnozstvi radku + + nTemp4:= helUtils.getHeliosFloatVal (Helios, 0, 'SELECT Mnozstvi FROM ' + tblSS + ' WHERE ID=' + iTemp2.ToString); + nTemp3:= 0; + + VytvorTempExtKomPar (Helios, iTemp); + lSQL:= 'DROP TABLE IF EXISTS #TabRadkyProVyber' + CRLF + 'CREATE TABLE #TabRadkyProVyber (IDX INT IDENTITY(1,1) NOT NULL, ID INT NOT NULL)'; + Helios.ExecSQL(lSQL); + + lSQL:= 'SELECT p.ID, p.Mnozstvi FROM ' + tblPZ + ' p INNER JOIN ' + tblDZ + ' d ON (d.ID=p.IDDoklad) WHERE p.DruhPohybuZbo=0 AND p.IDZboSklad=' + iTemp2.ToString; + lSQL:= lSQL + ' AND p.ID NOT IN (SELECT ID FROM ' + tblPZe + ' WHERE ISNULL(_Expedice_VazbaPrijemVydejNenabizet, 0)=1)'; + lSQL:= lSQL + ' AND EXISTS(SELECT 1 FROM ' + tblDDZ + ' dd INNER JOIN ' + tblDDZe + ' dde ON (dde.ID=dd.ID) WHERE dd.RadaDokladu=d.RadaDokladu AND dd.DruhPohybuZbo=d.DruhPohybuZbo'; + lSQL:= lSQL + ' AND ISNULL(dde._Expedice_VazbaPrijemVydejNabizet,0)=1)'; + lSQL:= lSQL + ' AND p.ID>=ISNULL( (SELECT ID FROM ' + tblPZe + ' WHERE ISNULL(_Expedice_VazbaPrijemVydejHranice,0)=1), 0)'; + lSQL:= lSQL + ' ORDER BY p.DatPorizeni DESC'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + canCont:= true; + plusJeden:= false; + First; + while not(EOF) and (canCont) do + begin + iTemp3:= StrToInt (VarToStr(FieldByNameValues('ID'))); + nTemp2:= StrToFloat (VarToStr(FieldByNameValues('Mnozstvi'))); + nTemp3:= nTemp3 + nTemp2; + + if (nTemp30) then + Helios.OpenBrowse(bidTabExtKom, ''); + + end; + if (term) then + Application.Terminate; + end; + +initialization +// System.ReportMemoryLeaksOnShutdown:= true; + TComObjectFactory.Create(ComServer, TplgKdynium, Class_Kdynium, 'runMe', '', ciMultiInstance, tmSingle); + +END. diff --git a/README.md b/README.md index d1a5c5a..24a418e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ # Kdynium-plgKdynium - +Helios Orange plugin pro Kdynium diff --git a/arrowDown.png b/arrowDown.png new file mode 100644 index 0000000000000000000000000000000000000000..1a1aeaaa4b85e2b61c29820088f79de89710c502 GIT binary patch literal 7254 zcmV-c9I4}pP)K0Ypeujj0$0f z0rK_TzUX;mxCLah1cl2Ys@@`|-xO?+6{^Ktq}ofq=6bWsbAy~Ktm7(_(=)8ZWox4Z zoz_C4*GgTo0_p79Wt;(q%Nc>2B&)$}v&(C_(s-NF8u9M*Y`F%g-!@#c44>FUU9JIZ zlLEx)gptuLj?XHi+b(;>6r;RSdYT)Iyc+KE?0TsMiOd|u(xt8F6{g!!xZ`fR&U3KH zVu`0Qt>_|bn*)Ky4ae(6nm@|y6IZ1=zMCl3Z>#BY>W%L<#WvCnAF|6?DX4v!yIg)3g+w7uH!_k!*_n6 zAd(J;m9ciMbP&xH#Lb($JqivZT+ zx_P4x#@V5!yms#L^{&Z)tK=4PlMJxr9hxGTbCVZ?5WugPA&{Srb8mr?oS@XUB00001bW%=J06^y0 zW&i*H0b)x>L=1tmQDXoA010qNS#tmY4#WTe4#WYKD-Ig~02ty)L_t(|+U=cxT$EM5 z$8%k~lln4B8MQDWU=(%Lt2{9h5sACasIaE2UeTPpM7YEcoAiRnnz));+@(fk6t;z7 zz!g#RVYhYK9oNdb5jR?Mvt2J1X>Q)p+`-n}w!oYB`#tA8zvg)uhJnHU*e?u>h|GIF z^EsdMJ?A;mEw}u${#m!&;tIGd(%tq+t^2ob-TDxzmr33BzlT3vwrtbqZx8+D*^fSY z2`Y)yo;`a`p4{`&v9m+p{`|S;o__hUhqi9r-}+{<#btpXh_{^qK7OBIk=KGhz4h>m z$0|E@LU~Eu2{&?I$8q%QoLHqC`Hnm3_i@~%%Ckf7-g;5-{0AHsNnM`|?QDQYJh>wy zV+W}RGq5g@LLGPPc=W;r`1(n#9S?SQ4;wb@=$SJ|jvU#({ed%Qjy}4>4DhR(^UUS9++fP)DvsH~J#giI`#jn7!**sAHLW}%m_0_9a=gys5U2TFtcx)xx zyLW)volhr+5Z2{-;=PmJ(j&a>+O=wU*ho?)!eb*^GwwJYs_6O;E~7-Lj!hh9Vo^YkV1v1yxo{Vs)Le0xky{mfQ}uT5CQE2wEfc-N zc$-NaB>3WQIdtm_SYPhj0QJVLr2dHYJ394(({#tro-nMO{M%_Rwc-X5_ zU5!S1vh()P46yfgk9s0`rfbdIYhT_c*1G%Z>XuJfj+|nxB89;3=3?am@u)2~B0X$i z!Y#6Ty!UWuVDHr(^$6p`WBc6;8}5@;9njV-7fI*MTP49R%uPqsyj-9ibtsZro;lvS zDI_-d*-yALFguY~(d6O3l%r}WJ5Pe$NOdIzcDP~lFw^t=wF`e}4+ZQeN!%+YF)RLH~3inz@FAn!2aSS_saSz8+{EAy|JLBWx;}=U`K7C&L@s~ zo!cJ@*k`X4PX|~sG(0b~eD&2Y7RYb|ffal(Y6~ys^mOiYC}96qdU8CKmA754d#dHB z`xdnHO<5{#D&R)Wr2)pTAIEJC4Qz%8`}?|kx0b93kOn|T+sw^~R++(4D zy_?GzAIV_&O$~gAV1G_w3GS^=wSczwDQw^`x_n@_-LSEahUc%m z91>V-h9{Cuv|kd~mY{49L10;HW(qAVdHvq#m$G@=w(z12uDllt*#F~pR7KJ`^7mlX z1>{X+UCvq<1?)!3DvvG(E5t0%o1YF1>`4Xe0>uQ@H`p7z*rA(4VuK$sWo;DJr|OpX z(FRmmh_07IX#<2+v(_n}Q3H0vm@$eh z@KIJ0)(3Was9<-jP{M)*>L}~-2};&LVfjITy}<^R01F|zK?@afcHzc_3k6tT8(`OU zVn~Q!FRTzf3$Y6CQ0wrs&wQYvYtI--#1Iy-*9_Y z2pd2f#!Q$nrcTNMZB$%^W92Cv8xfHju}fSq9vSlYP{Gpmvn_H1XgOv~9Z{F%zy>+3 zkFt4kWg|vy8&xRu1~q>T4eVnGOZNdI_w7SieEn59K=+OUfko5SJTTo&Lbv8 z&3lW=_s~}C?mKp)IMc7id?HLj( z*eVlK_Et5i5>@IA7bRgvtgAEB3Lu{$TkK!unTMa;uCrUDF2tItZ|m zvXD^oG^Q>5@E3)w-vnjfP{FQR9yX+}J@?mOn&bsj|MX8ztCW<=i#Mu#jToN<#~Ejm_LOsLBG}ue80oF_*BamfuX(!Gi5U*^ScHrqH{{a=_OD zH$_>5MMiv=!{(AkOO^w9j8uS)9c*Q72>ag~6^$#ov2I{tu6kr?!rDUB&-yC+7uk@) z6~V%VbX_2=418cC22oi>&b|iuwCY`&Q;Zjp)6=C8knd_l$ZGcNn3!F{iKUw7&%YdU zWz#qMR4(ZSkW_;;HDZ*EHYY}=YzSdRWz%z+s_)8d;0HG1Ccp}p-YG03stB7WO8{98 zFw4qFV~GvezCp-f(y>H?3WvWMmRmd z(3HuVnyO;W%=A&VPrHZ~cKF9)@plRc{_-(%=ZY0Po59lAz$Ye^`&91LR0Stk04t`s zFeYXWgRQY0^}bJ!A6e847PYdLUP)=4=3c6*7GZNSq0;kwFjcS-KCq~4p`@&>>Zo_B z|FcpvTo!s1RD?y|C%(TMsRo#~ zdwhJDg9i`72Y9%Hq$W*jCt9|(F&mI$P!Ik4FDFh(I(M$Kvvc#g&F9XYn?h?MzD=As zWlCk`U0nCI@xlPxreRgNTZL&$hMI}G#$-x1Ai&+6^|x>T`0%H{e*4(5%F3k8Nn&kI znvzs`>?beYwjU6a2`sX3%f&X5mh&J4@Qz|-MFN4@yc( zs;a6=v}*c^6WfoBqsJy0>^A?JrbhU(=48fT$(6Nv=6q09QZnti{zs%f!9I0P2K^0vv6pRKaUHin86V<0nUHic~# zVevz?a86Zz5StgzI#=@_Pk-{t9m_1#v->}~a~S{oYTF9MS?Hds7g$-Tb09{gtm5>w z>LfWk{bjP1bT>RiVTTUcF`k_-?jx+a1Oup)%@kRcu)MF5>OYgS*bn}p5n+E=%9UL6 z)Cd@X!9L<2R;*Y>4iHqi4K(0v;u&jUFhfmU!WaS^(9TUKs)*oF4u*Z{hC#p;)aIDQ^QynkwseF``FntUV zOFfVysS3Knn@U;XjH=wQQb9;;e;8n&y_B)?hDjQU!o82@d<^fAs=9F_65di}m}-YA zMi%xhvuO?#HWS#G=EWb(;a6foVAa>Jq*YI+69`i?czi6nr1+?#PZ(nFtKy=gss zqsJDxt1ySvBRP-I5ZRzlv3lhgL7w*Yl?JR7le+#{hQi`C%UZvWYjbr^B!Rc+RezSX|aY$#GbBDtpm; z8v6>^*%GXT+T1*1#E2-N5{y^{T$ zf~KcOry9ygBYG}bUP-JBmSJKQVA;Fib5~c_*s*a?_LS)>dHymvTwYIzA6yHt|Kok$ zwmuU7%LqR5#`^mDIlE$G@eyW|%89@?O=L~jSShaHQ>+#%!bZV6kW$u!qSvA9th(%7 zDJdzy+l3}JtzVDMG+nFWK0{dD(j`Leb?Ehb|4|6h5)(^lrL62@K>|Ry#$@`ELXAM! zD9HnWT!gN*ONFp&^m@H}=8`qFKY*IP-TNDWy{(}*D}0t-Z(#4v5hyF5=HOdT%K9(( zckqwN&zL>i7gokelr<(8i4E-F0pt`aQIBQN$HyCHrCp!A=XQYoq%-5XK3mT!T)(%O ziGdGBY>*i|EZkJWs$hW?N0z;dib^U@fFWzB63T$a-ij$a1XI%3!iE(|jkxujx< z9dnQ`hqV7}AW45O8KBvxn2~%f9n*L z*I_Iy6q=(Lc{210tMI7`cCiZ9Xe^Q&K!61gRHVc$5k^t@7fsgBEG}^=-ZoWdjZQmd zpnttLiqOhoWkq4dQjU7jqza!lFIK_Ia=@sD1rw}slh-*ryFBfu-iIf-W-!<`m#h7I z4c4%H=8*COy9!4L52iw%t$5j0YWiTZ*MG4b)h7oOsCH}&02U1EMA-83{3h>5-y(Zl zY~R4;YMjbhuRnv|fs@98DDeTcVA;pn%ptwQE?(>tuVM}um9X}))C3hUfSl;c@-(w< z?P-?)+eTn_j=rBO{wdYgU?~4n=694cP`@)jQ*MHDec7=pVT!K+&m-H6y@J4y057Y?*^OGCQruvVZ;odck3BAK`lHmykqetn|n z3m`LGjd$xfXc)6+88AE&=RlmpGL%k1;#?GjIE9G49)Cj(C;>tBbwI zj{Ch@1IBIK|zT;y9|~XR-OY((jRmE-`9ElV%3ZLW)LKk{<#&{6 znX(*M`$KsSXu`I$O!(Z(Ep@`G!C=US1WSktt`dZ84Ct_6dPP!AVTFDmUtAdA9Q#C| zmqTGLJNbp%5N@EEkkD7$1XbaDgKyQ=tOcE*Ge@UkpMVoJW&F!Y=Q zeqfVb$z*l_Cpg)DlXI_;aU{rJX!ZRfqO37cSYp^XML#fczd8r}c@}ul2|przf&ntY z33+Q2UfrmK1lipLjnRZVZER~;l~oE-ngg^S(9?cEGY0}V9MSl5FV_@i$eu;=B(VTh zD=0_^pqN8p_V2Q5`BWTO6=l-c(uc2>uM7GF3r=WX##txlr_IVHD@|}hl+oBDV3A0w zHTG4obS9{f&0FECmva7C{VTiE)i@0@;d;3N4TYId;73@a64qzz`@+(ZC3&Eyejs32 z%!IoySz+y9&}ZYqc<Ms?YHE~N!X zWJx*DQ$Nthqf%|tbh=`3)i`aOahJ0Q~Bd`T@T= z5Fji#A$ggXBl`(@C(IFv_5{3EQD86VD(JEYP(8yYI>@djEKXN1wf4^1JFF%7;?B`` zb7bv6Wq?se6}1P%YFDuehGndn17>bYYwy2Xs&^X@-%h*ajSkbt6WaVGadfR0V5O+N zs>%T!U$qATD{4w%9lkkmvHzYWzi{*7=<;krXySMSQoO2Jy& z*Bt00Ea?-HKwCY_@g;G78&#sFNUCIAGgHigXx+rt0CJ#jHeh{%&MM1Qi>zajxV-2>;r(Uohj=2wRK{vD`c=1 z3$7hF>-99z31ze|kpcEFsEAoXSGG@B&h`gF`U{>x-gynMb_l1Lknbo1Rs8|VS?AYE zIe_cf-G0{v{e-2zjk)n2Sm`*$8K@$qf;Oi;!G1_SkgBCQkZ&N@4UY$&1HssU+;+Cz z%W-!&$$olvJUXGG!oQ?YBS(&`Nc7EtK6#+;HlQ{7@lvkXsW;5Zc0ejTbKnPlVS#gG zN5{yKm;=&2;o8=|KW-4P*eBehvrf)>3t@>9dK0w+V1;=L*9BjDCkDY9l(Lp&+)uDZ zrc9f=hqWqcpX3t2lb2g=F1Ag%ZPfr0caz3wo2TB&uZ(*aJv z4P2m|KOZM3$_sZ#en>`EEfH48SA#w+TDSIKANqlQrvbef*>+EZx5=q5pB0Y7%#k>M z{zwX2R#Da=RBdhTqK=L=&irzE>H<7)_IQww7(6Uy!eQ(f-#Qgejx#xGVK%L(=)iY5 zD@Y5v3cbr0+}ho)L5C$*Nv1(pBWA+PL^AU6oslBz@Y)U`2e8-nuKhlqBN}X2a)EDJ z1N30R%)6wlqPAAxq^Jlh+V8pKjedt7YXfa-=g+64!#nT> zsKbZXy4fXp%z?`N;Gc_w?^${U3c7LgQru6NiN_dcuBq)94xqyqEm|}jt5(W^a`$8| z>2{YTcwzfv17YoOhqV~i4rEJI?^rSt5Em^%QETz@8aK^>czsqAch{f#_gMXewT!l0 zeB8=GpKwagG67!tMI%vQlvwCp4EnI9yOM5m-BeiOguh+l%&VUfGGR?e$D)xP9lkkW z=5+7%V{8qK4ZwuS-|h59hY9_kV-4C?%mKPC2#dZ$H`R5MVUuaz9==5P7~S}SyN3^l zOh6mxg|U@p=D5QyOZ&~W0f`~Y&bIGf@-8JuGQ;)p`6Lt21NlM@6mz;yE&bJXAZ$Q3 z!rH#m$(ggt>5(P9!$EpNdXC7D7G^ekm(6emKXVNzEcUn0?y;WB(i`5QnXsl~jd;5J zdQ+)x>cs(&WT0S^fwog;4ig%dnKRw-^qRagEBda6sr|RWz}bLIOV1{GcL=+7ZUlvC zB0ns;iEDVe|6^+al||ec7f(OzHD?)wMu7;MA8odtd)hTH!VVxTv^K|wdM9Uv;YHqT zvV?J7k2ZTNPY)F90NH@89iRzI;-bS&rRl=~)}8;;Xsh?_g9G;S2ND*wO}_nXsdaK# z*6OTxzyMss=Gz)w-$+>6eZ{@g#hRuiH9LOI&z_1pae;fBdH*^no@}n2u kKi&r8ZeU^mSs|+b2c*~PD9mM-p#T5?07*qoM6N<$g0(*}&j0`b literal 0 HcmV?d00001 diff --git a/dataMod.dfm b/dataMod.dfm new file mode 100644 index 0000000..4366208 --- /dev/null +++ b/dataMod.dfm @@ -0,0 +1,5 @@ +object dm: Tdm + Height = 480 + Width = 640 + PixelsPerInch = 96 +end diff --git a/dataMod.pas b/dataMod.pas new file mode 100644 index 0000000..79fa115 --- /dev/null +++ b/dataMod.pas @@ -0,0 +1,23 @@ +unit dataMod; + +interface + +uses + System.SysUtils, System.Classes; + +type + Tdm = class(TDataModule) + private + public + end; + +var + dm: Tdm; + +implementation + +{%CLASSGROUP 'Vcl.Controls.TControl'} + +{$R *.dfm} + +end. diff --git a/frmDavkyObecne.dfm b/frmDavkyObecne.dfm new file mode 100644 index 0000000..b32a420 --- /dev/null +++ b/frmDavkyObecne.dfm @@ -0,0 +1,798 @@ +object formDavkyObecne: TformDavkyObecne + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu] + Caption = ' D'#225'vka obecn'#225 + ClientHeight = 510 + ClientWidth = 1153 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + Position = poOwnerFormCenter + OnClose = FormClose + OnShow = FormShow + TextHeight = 13 + object lblDavka: TLabel + Left = 197 + Top = 21 + Width = 777 + Height = 33 + Alignment = taCenter + AutoSize = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -27 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object Label1: TLabel + Left = 117 + Top = 80 + Width = 69 + Height = 25 + Caption = 'P'#345#237'kaz :' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object Label2: TLabel + Left = 467 + Top = 80 + Width = 70 + Height = 25 + Caption = 'Tavba :' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblPrikaz: TLabel + Left = 119 + Top = 110 + Width = 343 + Height = 19 + AutoSize = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblZapisDat: TLabel + Left = 36 + Top = 463 + Width = 346 + Height = 19 + AutoSize = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clRed + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object grd: TNextDBGrid6 + Left = 8 + Top = 141 + Width = 1137 + Height = 298 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentColor = False + ParentFont = False + TabOrder = 7 + StyleOptions = [soNativeStyles, soVCLStyles] + ActiveView = grdView + ActiveViewIndex = 0 + Options = [goAutoHideScrollBars, goExitEndEditing, goResponsiveViews, goTabLeaveControl] + RightClickDeselect = False + RightClickSelect = False + RowHeight = 30 + ScrollBars = [sbVertical] + SelectFullRow = True + UserDefinedColorPalette.GeometryHoverColor = clBlack + DataSource = dSource + object grdView: TNxReportGridView6 + ColumnMoving = False + FixedRowCount = 1 + GridLines = True + HeaderHeight = 33 + OnGetCellColor = grdViewGetCellColor + end + object colVyrPrikaz: TNxDBTextColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -21 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'P'#345#237'kaz' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -21 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 0 + PlaceholderText = 'Text Text' + Position = 0 + Resizeable = False + Width = 160 + DataBinding.FieldName = 'VyrPrikaz' + end + object colRegCis: TNxDBTextColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -21 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Reg.'#269'.' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -21 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 1 + PlaceholderText = 'Text Text' + Position = 1 + Resizeable = False + Width = 160 + DataBinding.FieldName = 'RegCis' + end + object colPopis: TNxDBTextColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -21 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Popis' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -21 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 2 + PlaceholderText = 'Text Text' + Position = 2 + Resizeable = False + Width = 400 + DataBinding.FieldName = 'Nazev' + end + object colSkladem: TNxDBNumberColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Sklad' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -21 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 3 + PlaceholderText = '1742' + Position = 3 + FormatMask = '#,##0' + Increment = 1.000000000000000000 + InsertString = '0' + end + object colMnozstvi: TNxDBNumberColumn6 + Alignment = taCenter + Editing = True + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -21 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Mno'#382'.' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -21 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 4 + PlaceholderText = '1742' + Position = 4 + Resizeable = False + Width = 100 + FormatMask = '#,##0' + Precision = 0 + Increment = 1.000000000000000000 + DataBinding.FieldName = 'Mnozstvi' + InsertString = '0' + end + object colMJ: TNxDBTextColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -21 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'MJ' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -21 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 5 + PlaceholderText = 'Text Text' + Position = 5 + Resizeable = False + DataBinding.FieldName = 'MJ' + end + object colTavba: TNxDBTextColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -21 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Tavba' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -21 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 6 + Inserting = False + PlaceholderText = 'Text Text' + Position = 6 + Resizeable = False + Width = 140 + DataBinding.FieldName = 'Tavba' + end + end + object btnOK: TButton + Left = 514 + Top = 450 + Width = 124 + Height = 43 + Caption = 'Ulo'#382'it' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 8 + OnClick = btnOKClick + end + object btnGenPrevod: TButton + Left = 927 + Top = 450 + Width = 205 + Height = 43 + Caption = 'Ukon'#269'it a P'#345'ev'#233'st' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 9 + end + object edtPrikaz: TEdit + Left = 195 + Top = 77 + Width = 175 + Height = 33 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + OnExit = edtPrikazExit + end + object selPrikaz: TButtonedEdit + Left = 371 + Top = 79 + Width = 31 + Height = 31 + Images = imgs + LeftButton.ImageIndex = 2 + LeftButton.Visible = True + TabOrder = 1 + OnClick = selPrikazClick + end + object edtMnoz: TRzNumericEdit + Left = 798 + Top = 77 + Width = 76 + Height = 33 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 4 + DisplayFormat = ',0;(,0)' + end + object cbMJ: TComboBox + Left = 880 + Top = 77 + Width = 73 + Height = 33 + Style = csDropDownList + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ItemIndex = 0 + ParentFont = False + TabOrder = 5 + Text = 'ks' + Items.Strings = ( + 'ks' + 'str') + end + object edtTavba: TEdit + Left = 545 + Top = 77 + Width = 175 + Height = 33 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + ReadOnly = True + TabOrder = 2 + end + object selTavba: TButtonedEdit + Left = 721 + Top = 79 + Width = 31 + Height = 31 + Images = imgs + LeftButton.ImageIndex = 2 + LeftButton.Visible = True + TabOrder = 3 + OnClick = selTavbaClick + end + object btnAdd: TButton + Left = 974 + Top = 67 + Width = 61 + Height = 55 + ImageAlignment = iaCenter + ImageIndex = 0 + Images = imgs + TabOrder = 6 + OnClick = btnAddClick + end + object dSource: TDataSource + DataSet = tbl + Left = 12 + Top = 444 + end + object tbl: TVirtualTable + Left = 63 + Top = 447 + Data = {04000000000000000000} + object tblIDDavka: TIntegerField + FieldName = 'IDDavka' + end + object tblIDPrikaz: TIntegerField + FieldName = 'IDPrikaz' + Required = True + end + object tblVyrPrikaz: TStringField + FieldName = 'VyrPrikaz' + Size = 15 + end + object tblRegCis: TStringField + FieldName = 'RegCis' + Size = 30 + end + object tblNazev: TStringField + FieldName = 'Nazev' + Size = 50 + end + object tblMnozstvi: TFloatField + FieldName = 'Mnozstvi' + Required = True + end + object tblMJ: TStringField + FieldName = 'MJ' + Size = 10 + end + object tblTavba: TStringField + FieldName = 'Tavba' + Size = 15 + end + object tblIDRodic: TIntegerField + FieldName = 'IDRodic' + end + object tblSkladem: TFloatField + FieldName = 'Skladem' + end + end + object imgs: TImageList + Height = 24 + Width = 24 + Left = 111 + Top = 447 + Bitmap = { + 494C010103001400040018001800FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000600000001800000001002000000000000024 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8C8C800BABABA00A9A9A900A5A5 + A500A9A9A900B1B1B100BABABA00D8D8D800FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCECE + CE00000000000000000000000000010101000101010004040400101010002121 + 2100101010001010100000000000000000000000000001010100010101003D3D + 3D00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B9B9B000000 + 0000BDBDBD00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2627 + 270000000000FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF262727003D3D3D00FFFFFFFFFFFFFFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E6E6E002F2F2F00FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFF01010100FFFFFFFFFFFFFFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2E2E2005151 + 510051515100A6A6A600FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17171700A0A0A000FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFF01010100FFFFFFFFFFFFFFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2E2E200515151005151 + 51005151510051515100A7A7A700FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000C2C4C400FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2E2E20051515100515151005151 + 5100515151005151510051515100A5A5A500FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFF00000000D8D8D800FFFFFFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFE2E2E2005151510051515100515151005151 + 510051515100515151005151510051515100A5A5A500FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFF01010100BCBCBC00FFFFFFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFE2E2E200515151005151510051515100515151005151 + 51005151510051515100515151005151510051515100A4A4A400FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFF5B5B5B00C3C3C300FFFFFFFFFFFFFFFFFFFFFFFF6262 + 6200ACACAC00FFFFFFFFFFFFFFFFFFFFFFFF6B6B6B0097979700FFFFFFFFFFFF + FFFFFFFFFFFF0B0B0B00B1B1B100FFFFFFFF0000000000000000000000000000 + 000000000000A3A3A300A4A4A40000000000000000000000000000000000A3A3 + A300A4A4A40000000000000000000000000000000000A3A3A300A4A4A4000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFE2E2E20051515100515151005151510051515100515151006868 + 6800A9A9A9005151510051515100515151005151510051515100A4A4A400FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFF + FFFFFFFFFFFF000000005252520001010100FFFFFFFFFFFFFFFF000000004343 + 430000000000B6B6B600FFFFFFFF060606002E2F2F000202020083838300FFFF + FFFFFFFFFFFF15151500A7A7A700FFFFFFFF0000000000000000000000000000 + 0000A2A2A2000000000000000000A3A3A3000000000000000000A2A2A2000000 + 000000000000A3A3A3000000000000000000A2A2A2000000000000000000A3A3 + A300000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFE2E2E200515151005151510051515100515151005151510068686800FFFF + FFFFFFFFFFFFA9A9A9005151510051515100515151005151510051515100A4A4 + A400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFF + FFFFFFFFFFFF00000000FFFFFFFF15151500A0A0A000FFFFFFFF00000000FFFF + FFFF4040400071717100FFFFFFFF00000000FFFFFFFF737474003F3F3F00FFFF + FFFFFFFFFFFF1A1A1A00A1A1A100FFFFFFFF0000000000000000000000000000 + 0000A2A2A2000000000000000000A3A3A3000000000000000000A2A2A2000000 + 000000000000A3A3A3000000000000000000A2A2A2000000000000000000A3A3 + A300000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFE4E4 + E400515151005151510051515100515151005151510068686800FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFA9A9A900515151005151510051515100515151005151 + 5100A4A4A400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFF + FFFFFFFFFFFF2C2C2C000000000000000000FFFFFFFFFFFFFFFF555555000000 + 000000000000FFFFFFFFFFFFFFFF878787000000000000000000FFFFFFFFFFFF + FFFFFFFFFFFF10101000ACACAC00FFFFFFFF0000000000000000000000000000 + 000000000000A2A2A200A2A2A20000000000000000000000000000000000A2A2 + A200A2A2A20000000000000000000000000000000000A2A2A200A2A2A2000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF5151 + 51005151510051515100515151005151510068686800FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFA9A9A9005151510051515100515151005151 + 510051515100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFF05050500B6B6B600FFFFFFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF6161 + 610051515100515151005151510068686800FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9A9A90051515100515151005151 + 510051515100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01010100FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFF01010100C7C7C700FFFFFFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF585858005151510069696900FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8A8A800515151005151 + 5100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01010100D4D4D400FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFF01010100FFFFFFFFFFFFFFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06060600B3B3B300FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D3D3D007A7A7A00FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7C7C70000000000FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFBDBDBD0000000000FFFFFFFFFFFFFFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404004747 + 4700FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF00000000CDCDCD00FFFFFFFFFFFFFFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 + 0400000000007A7A7A00B3B3B300D2D2D200FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2C4C400A0A0A0002F2F2F000000 + 00009C9C9C00FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFC5C5C5003C3C3C0006060600010101000101010000000000000000000000 + 00000000000000000000000000000000000000000000161616006F6F6F00FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000060000000180000000100010000000000200100000000000000000000 + 000000000000000000000000FFFFFF00000000000000FFFFFF00000000000000 + 0000FFFFFF000000000000000000FFFFFF000000000000000000FFFFFF000000 + 000000000000FFFFFF000000000000000000FFFFFF000000000000000000FFFF + FF000000000000000000FFFFFF000000000000000000FFFFFF00000000000000 + 0000FFFFFF000000000000000000F9E79F000000000000000000F0C30F000000 + 000000000000F0C30F000000000000000000F9E79F000000000000000000FFFF + FF000000000000000000FFFFFF000000000000000000FFFFFF00000000000000 + 0000FFFFFF000000000000000000FFFFFF000000000000000000FFFFFF000000 + 000000000000FFFFFF000000000000000000FFFFFF000000000000000000FFFF + FF000000000000000000FFFFFF000000} + end +end diff --git a/frmDavkyObecne.pas b/frmDavkyObecne.pas new file mode 100644 index 0000000..4bdf546 --- /dev/null +++ b/frmDavkyObecne.pas @@ -0,0 +1,372 @@ +unit frmDavkyObecne; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, ddPlugin_TLB, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, MemDS, VirtualTable, NxTypes6, NxGridView6, NxColumns6, + NxControls6, NxCustomGrid6, NxVirtualGrid6, NxDBGrid6, NxDBColumns6, + Vcl.StdCtrls, TBPackageU, Vcl.Buttons, Vcl.Mask, RzEdit, System.ImageList, + Vcl.ImgList, Vcl.ExtCtrls; + +const + tblDavky = '[dbo].[_hdc_TabDavky]'; + +type + TformDavkyObecne = class(TForm) + grd: TNextDBGrid6; + dSource: TDataSource; + tbl: TVirtualTable; + tblIDDavka: TIntegerField; + grdView: TNxReportGridView6; + tblIDPrikaz: TIntegerField; + tblVyrPrikaz: TStringField; + tblMnozstvi: TFloatField; + tblMJ: TStringField; + colVyrPrikaz: TNxDBTextColumn6; + tblNazev: TStringField; + tblRegCis: TStringField; + colRegCis: TNxDBTextColumn6; + colPopis: TNxDBTextColumn6; + colMnozstvi: TNxDBNumberColumn6; + colMJ: TNxDBTextColumn6; + btnOK: TButton; + btnGenPrevod: TButton; + edtPrikaz: TEdit; + selPrikaz: TButtonedEdit; + lblDavka: TLabel; + tblTavba: TStringField; + colTavba: TNxDBTextColumn6; + edtMnoz: TRzNumericEdit; + cbMJ: TComboBox; + Label1: TLabel; + edtTavba: TEdit; + selTavba: TButtonedEdit; + Label2: TLabel; + btnAdd: TButton; + imgs: TImageList; + tblIDRodic: TIntegerField; + lblPrikaz: TLabel; + tblSkladem: TFloatField; + colSkladem: TNxDBNumberColumn6; + lblZapisDat: TLabel; + procedure grdViewGetCellColor (Sender: TObject; ACol, ARow: Integer; var CellColor: TColor; State: TNxCellPaintingState); + procedure FormShow (Sender: TObject); + procedure edtPrikazExit (Sender: TObject); + procedure selPrikazClick (Sender: TObject); + procedure btnAddClick (Sender: TObject); + procedure FormClose (Sender: TObject; var Action: TCloseAction); + procedure selTavbaClick (Sender: TObject); + procedure btnOKClick (Sender: TObject); + private + procedure NactiDoklad; + procedure NactiPrikaz; + public + Helios: IHelios; + druhDavky: Integer; + jeTest: Boolean; + idRodic, id: integer; + end; + +var + formDavkyObecne: TformDavkyObecne; + rc, popis, sklad, verText: string; + oVar: OleVariant; + idVPr, idTavba, idKZ, bidTavby, cisloDavky, rokDavky: integer; + mn: Extended; + +implementation + +uses System.StrUtils, System.DateUtils, helUtils; + +{$R *.dfm} + + procedure TformDavkyObecne.NactiPrikaz; + var s,r,n: string; + begin + if (idVPr>0) then + begin + lblPrikaz.Caption:= ''; + s:= ''; + r:= ''; + n:= ''; + sklad:= ''; + with Helios.OpenSQL('SELECT k.SkupZbo, k.RegCis, k.Nazev1, p.Sklad, p.IDTabKmen FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.ID=' + idVPr.ToString) do + begin + s:= VarToStr(FieldValues(0)); + r:= VarToStr(FieldValues(1)); + n:= VarToStr(FieldValues(2)); + sklad:= VarToStr(FieldValues(3)); + idKZ:= StrToInt(VarToStr(FieldValues(4))); + lblPrikaz.Caption:= r + ' / ' + n; + end; + rc:= r; + popis:= n; + end; + end; + + + + procedure TformDavkyObecne.btnAddClick(Sender: TObject); + var lSQL: string; + begin + if (idVPr>0) then + begin + if not(tbl.Active) then + tbl.Open; + tbl.Append; + tbl.FieldByName('IDDavka').AsInteger:= 0; + tbl.FieldByName('IDRodic').AsInteger:= idRodic; + tbl.FieldByName('IDPrikaz').AsInteger:= idVPr; + tbl.FieldByName('RegCis').AsString:= rc; + tbl.FieldByName('Nazev').AsString:= popis; + tbl.FieldByName('VyrPrikaz').AsString:= edtPrikaz.Text; + tbl.FieldByName('Mnozstvi').AsExtended:= edtMnoz.Value; + lSQL:= 'SELECT Mnozstvi FROM ' + tblSS + ' WHERE IDSklad=N' + QuotedStr(sklad) + ' AND IDKmenZbozi=' + idKZ.ToString; + tbl.FieldByName('Skladem').AsExtended:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + tbl.FieldByName('MJ').AsString:= cbMJ.Text; + tbl.FieldByName('Tavba').AsString:= edtTavba.Text; + tbl.Post; + idVPr:= 0; + edtPrikaz.Text:= ''; + lblPrikaz.Caption:= ''; + edtTavba.Text:= ''; + edtMnoz.Value:= 0; + cbMJ.ItemIndex:= cbMJ.Items.IndexOf('ks'); + edtPrikaz.SetFocus; + grd.DataSource.DataSet.Refresh; + end; + end; + + + + + procedure TformDavkyObecne.btnOKClick(Sender: TObject); + var lSQL, t: string; + idD, poz: integer; + begin + lblZapisDat.Visible:= true; + Self.Repaint; + btnOK.Enabled:= false; + btnGenPrevod.Enabled:= false; + lblZapisDat.Caption:= 'Zpis dat do tabulky dvek...'; + + if (tbl.RecordCount>0) then + begin + tbl.First; + while not(tbl.Eof) do + begin + idD:= tbl.FieldByName('IDDavka').AsInteger; + t:= tbl.FieldByName('Tavba').AsString; + poz:= 0; + if (idD=0) then + begin + lSQL:= 'SELECT MAX(Pozice) FROM ' + tblDavky + ' WHERE DruhDavky=' + druhDavky.ToString + ' AND Rok=' + rokDavky.ToString + ' AND Cislo=' + cisloDavky.ToString; + poz:= 1 + helUtils.getHeliosIntVal(Helios, 0, lSQL); + lSQL:= 'INSERT ' + tblDavky + ' (DruhDavky, Rok, Cislo, Pozice, Tavba) VALUES (' + druhDavky.ToString + ', ' + rokDavky.ToString + ', '; + lSQL:= lSQL + cisloDavky.ToString + ', ' + poz.ToString + ', N' + QuotedStr(t) + '); SELECT SCOPE_IDENTITY()'; + with Helios.OpenSQL(lSQL) do + idD:= StrToInt(VarToStr(FieldValues(0))); + end; + if (poz=0) then + poz:= helUtils.getHeliosIntVal(Helios, 1, 'SELECT Pozice FROM ' + tblDavky + ' WHERE ID=' + idD.ToString); + lSQL:= 'INSERT #TabDavkaObecna (IDDavka, IDRodic, Pozice, IDPrikaz, Mnozstvi, Tavba) SELECT ' + idD.ToString + ', ' + tbl.FieldByName('IDRodic').AsString; + lSQL:= lSQL + ', ' + poz.ToString; + lSQL:= lSQL + ', ' + tbl.FieldByName('IDPrikaz').AsString + ', ' + StringReplace(tbl.FieldByName('Mnozstvi').AsString, '', '', [rfReplaceAll]) + ', N'; + lSQL:= lSQL + tbl.FieldByName('Tavba').AsString; + if (jeTest) then + lSQL:= StringReplace(lSQL, '#TabDa', 'dbo._temp_TabDa', [rfReplaceAll]); + Helios.ExecSQL(lSQL); + tbl.Next; + end; + end; + if not(jeTest) then + Helios.ExecSQL('IF OBJECT_ID(''dbo.ep_Vosk_PlanLisu_Odvod'') IS NOT NULL EXEC dbo.ep_Vosk_PlanLisu_Odvod'); + + lblZapisDat.Visible:= false; + Self.Repaint; + btnOK.Enabled:= true; + btnGenPrevod.Enabled:= true; + Close; + + end; + + + + procedure TformDavkyObecne.edtPrikazExit(Sender: TObject); + begin + edtPrikaz.Text:= Trim(helUtils.StripChars(edtPrikaz.Text, ['''', '"', ';'])); + if (edtPrikaz.Text<>'') then + begin + idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblPrikaz + ' WHERE RadaPrikaz=N' + QuotedStr(edtPrikaz.Text)); + NactiPrikaz; + edtTavba.SetFocus; + end; + end; + + + + procedure TformDavkyObecne.FormClose(Sender: TObject; var Action: TCloseAction); + begin + if (tbl.Active) then + tbl.Close; + action:= caFree; + end; + + + + procedure TformDavkyObecne.FormShow(Sender: TObject); + var lSQL: string; + i: integer; + begin + DefFontData.CharSet := Helios.Charset; + DefFontData.Name := Helios.Font; + DefFontData.Height := Helios.FontHeight; + + Screen.MenuFont.CharSet := DefFontData.CharSet; + Screen.MenuFont.Name := DefFontData.Name; + Screen.MenuFont.Height := DefFontData.Height; + + Self.Icon.Handle:= Helios.MainApplicationIconHandle; + Self.Font.Name:= Helios.Font; + Self.Font.Height:= Helios.FontHeight; + + verText:= GetFileVersion2(GetModuleName(HInstance)); + if (Length(verText)=12) then + verText:= LeftStr(verText,9) + '0' + RightStr(verText,3); + + bidTavby:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_TavbyPosledniData'''); + +{ + for i:=0 to Self.ComponentCount-1 do + begin + if (Self.Components[i] is TButton) then + begin + (Self.Components[i] as TButton).Font.Name:= Helios.Font; + (Self.Components[i] as TButton).Font.Height:= Helios.FontHeight; + end; + end; +} + + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabDavkaObecna'') IS NOT NULL DELETE FROM dbo._temp_TabDavkaObecna WHERE Autor=SUSER_SNAME()' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabDavkaObecna'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabDavkaObecna) DROP TABLE dbo._temp_TabDavkaObecna' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''tempdb..#TabDavkaObecna'') IS NOT NULL DROP TABLE #TabDavkaObecna'; + Helios.ExecSQL(lSQL); + + lSQL:= 'CREATE TABLE #TabDavkaObecna (IDDavka INT, IDRodic INT, Pozice INT, IDPrikaz INT, Mnozstvi NUMERIC(19,6), Tavba NVARCHAR(15), Autor NVARCHAR(80) DEFAULT SUSER_SNAME())'; + if (jeTest) then + lSQL:= StringReplace(lSQL, '#TabD', 'dbo._temp_TabD', [rfReplaceAll]); + Helios.ExecSQL(lSQL); + + rokDavky:= YearOf(Now); + cisloDavky:= 1; + idRodic:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDRodic FROM ' + tblDavky + ' WHERE ID=' + id.ToString); + if (idRodic=0) and (id=0) then + begin + cisloDavky:= helUtils.getHeliosIntVal(Helios, 1, 'SELECT MAX(Cislo)+1 FROM ' + tblDavky + ' WHERE Rok=' + rokDavky.ToString + ' AND DruhDavky=' + druhDavky.ToString); + lSQL:= 'INSERT ' + tblDavky + ' (DruhDavky, Rok, Cislo, Pozice) VALUES (' + druhDavky.ToString + ', ' + rokDavky.ToString + ', ' + cisloDavky.ToString + ', 1); SELECT SCOPE_IDENTITY()'; + with Helios.OpenSQL(lSQL) do + idRodic:= StrToInt(VarToStr(FieldValues(0))); + end; + if (idRodic=0) and (id>0) then + idRodic:= id; + if (idRodic>0) then + NactiDoklad; + + end; + + + + procedure TformDavkyObecne.grdViewGetCellColor(Sender: TObject; ACol, ARow: Integer; var CellColor: TColor; State: TNxCellPaintingState); + begin + if (grd.RowCount>=ARow+1) then + if (ACol=colMnozstvi.Index) then + if (grd.Cells[ACol, ARow]='0') or (grd.Cell[ACol, ARow].AsFloat>grd.Cell[colSkladem.Index, ARow].AsFloat) then + begin + CellColor:= clRed; + grd.Cell[ACol, ARow].Enabled:= true; + end + else + begin +// CellColor:= clWindow; + grd.Cell[ACol, ARow].Enabled:= false; + end; + end; + + + + procedure TformDavkyObecne.NactiDoklad; + var lSQL: string; + cis: string; + fldIDDavka, fldIDPrikaz, fldVyrPrikaz, fldRegCis, fldNazev, fldMnozstvi, fldMJ, fldTavba: TField; + begin + if (idRodic>0) then + begin + if not(tbl.Active) then + tbl.Open; + tbl.Edit; + tbl.Clear; //Fields; + + fldIDDavka:= tbl.FieldByName('IDDavka'); + fldIDPrikaz:= tbl.FieldByName('IDPrikaz'); + fldVyrPrikaz:= tbl.FieldByName('VyrPrikaz'); + fldRegCis:= tbl.FieldByName('RegCis'); + fldNazev:= tbl.FieldByName('Nazev'); + fldMnozstvi:= tbl.FieldByName('Mnozstvi'); + fldMJ:= tbl.FieldByName('MJ'); + + lblDavka.Caption:= ''; + if (helUtils.HeliosExistsTest(Helios, tblDavky, 'ID=' + id.ToString + ' AND DruhDavky=4')) then + begin + cis:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Cislo FROM ' + tblDavky + ' WHERE ID=' + id.ToString); + lblDavka.Caption:= 'Dvka KONEN : ' + cis; + end; + + lSQL:= 'SELECT ID, IDPrikaz, Pozice, Mnozstvi, MJ, Tavba FROM ' + tblDavky + ' WHERE IDRodic=' + idRodic.ToString + ' ORDER BY Pozice'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + First; + while not(Eof) do + begin + tbl.Append; + fldIDDavka.AsString:= VarToStr(FieldValues(0)); + fldIDPrikaz.AsString:= VarToStr(FieldValues(1)); + fldMnozstvi.AsString:= VarToStr(FieldValues(3)); + fldMJ.AsString:= VarToStr(FieldValues(4)); + fldTavba.AsString:= VarToStr(FieldValues(5)); + tbl.Post; + Next; + end; + tbl.RecNo:= 1; + grd.Repaint; + end; + end; + end; + + procedure TformDavkyObecne.selPrikazClick(Sender: TObject); + var lSQL, podm: string; + begin + podm:= 'TabPrikaz.StavPrikazu IN (30,40,50,60)'; + if (druhDavky=4) then + podm:= podm + ' AND TabPrikaz.Rada=N''223-31'''; + if Helios.Prenos(bidVyrPrik, 'TabPrikaz.ID', oVar, podm, 'Vyberte pkaz do dvky', true) then + begin + idVPr:= VarToStr(oVar).ToInteger; + NactiPrikaz; + edtPrikaz.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT RadaPrikaz FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); + edtTavba.SetFocus; + end; + + end; + + procedure TformDavkyObecne.selTavbaClick(Sender: TObject); + begin +// oVar:= helUtils.getHeliosIntVal(Helios, 'SELECT ID FROM ' + tblTavby + ' WHERE CisloTavby=N' + QuotedStr(edtTavba.Text)); + oVar:= edtTavba.Text; + if Helios.Prenos(bidTavby, 'hvw_TavbyPosledniData.CisloTavby', oVar, '', 'Vyberte tavbu', true) then + edtTavba.Text:= VarToStr(oVar); + edtMnoz.SetFocus; + end; + +end. diff --git a/frmEvidOper.dfm b/frmEvidOper.dfm new file mode 100644 index 0000000..9d677f8 --- /dev/null +++ b/frmEvidOper.dfm @@ -0,0 +1,3089 @@ +object formEvidOper: TformEvidOper + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = ' Evidence operac'#237' z D'#225'vky ' + ClientHeight = 748 + ClientWidth = 1185 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -27 + Font.Name = 'Tahoma' + Font.Style = [] + Position = poOwnerFormCenter + OnClose = FormClose + OnShow = FormShow + TextHeight = 33 + object lblDavka: TLabel + Left = 483 + Top = 25 + Width = 625 + Height = 33 + AutoSize = False + end + object lblZamest: TLabel + Left = 451 + Top = 224 + Width = 408 + Height = 33 + AutoSize = False + end + object Label2: TLabel + Left = 49 + Top = 301 + Width = 189 + Height = 99 + Alignment = taRightJustify + Caption = 'Ks CELKEM :'#13#10'(v'#269'etn'#283' zmetk'#367#13#10'a opraviteln'#253'ch)' + Font.Charset = DEFAULT_CHARSET + Font.Color = clRed + Font.Height = -27 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblOperace: TLabel + Left = 483 + Top = 112 + Width = 687 + Height = 75 + AutoSize = False + WordWrap = True + end + object lblZapisDat: TLabel + Left = 280 + Top = 672 + Width = 227 + Height = 33 + Caption = 'Prob'#237'h'#225' z'#225'pis dat...' + Font.Charset = DEFAULT_CHARSET + Font.Color = clRed + Font.Height = -27 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblMaloOperaci: TLabel + Left = 30 + Top = 418 + Width = 335 + Height = 66 + Caption = 'Zadan'#233' kusy p'#345'evy'#353'uj'#237' po'#269'et zb'#253'vaj'#237'c'#237'ch operac'#237' na d'#225'vce' + Font.Charset = DEFAULT_CHARSET + Font.Color = clRed + Font.Height = -27 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + Visible = False + WordWrap = True + end + object lblZmetky: TLabel + Left = 33 + Top = 511 + Width = 8 + Height = 33 + end + object cbOpakTrideni: TRzCheckBox + Left = 208 + Top = 159 + Width = 254 + Height = 35 + AlignmentVertical = avCenter + Caption = ' opakovan'#233' t'#345#237'd'#283'n'#237 + State = cbUnchecked + TabOrder = 6 + Visible = False + OnClick = cbOpakTrideniClick + end + object pgCtrlZavady: TPageControl + Left = 391 + Top = 298 + Width = 769 + Height = 335 + ActivePage = shNeopravitelne + TabOrder = 8 + object shNeopravitelne: TTabSheet + Caption = ' Neopraviteln'#233' ' + object grd: TNextDBGrid6 + Left = 79 + Top = 1 + Width = 679 + Height = 284 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -35 + Font.Name = 'Tahoma' + Font.Style = [] + ParentColor = False + ParentFont = False + TabOrder = 0 + StyleOptions = [soNativeStyles, soVCLStyles] + ActiveView = view + ActiveViewIndex = 0 + Options = [goArrowEndEditing, goAutoHideScrollBars, goExitEndEditing, goTabLeaveControl] + RowHeight = 40 + ScrollBars = [sbVertical] + SelectFullRow = True + UserDefinedColorPalette.GeometryHoverColor = clBlack + OnCellClick = grdCellClick + DataSource = dsZavady + object view: TNxReportGridView6 + ColumnMoving = False + FooterHeight = 0 + GridLines = True + HeaderHeight = 40 + end + object colKod: TNxDBTextColumn6 + Alignment = taCenter + DrawingOptions = [doBackground, doContent, doCustom] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -35 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -35 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'K'#243'd' + Header.Color = clRed + Header.DrawingOptions = [doBackground, doContent, doCustom] + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -35 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 0 + MinWidth = 5 + PlaceholderText = 'Text Text' + Position = 0 + Resizeable = False + Width = 95 + OnDrawBackground = colKodDrawBackground + DataBinding.FieldName = 'KodZavady' + end + object colPopis: TNxDBTextColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -35 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -35 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'Popis' + Header.DrawingOptions = [doBackground, doContent, doCustom] + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -35 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 1 + PlaceholderText = 'Text Text' + Position = 1 + Resizeable = False + Width = 450 + DataBinding.FieldName = 'Popis' + end + object colMnozstvi: TNxDBNumberColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -35 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -35 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Mno'#382'.' + Header.DrawingOptions = [doBackground, doContent, doCustom] + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -35 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 2 + PlaceholderText = '1742.50' + Position = 2 + Resizeable = False + Width = 110 + FormatMask = '#,##0' + Increment = 1.000000000000000000 + DataBinding.FieldName = 'Mnozstvi' + InsertString = '0' + end + end + object btnAdd: TButton + Left = 0 + Top = 102 + Width = 70 + Height = 70 + ImageAlignment = iaCenter + ImageIndex = 0 + Images = imgList + TabOrder = 1 + OnClick = btnAddClick + end + end + object shInterneOpravitelne: TTabSheet + Caption = ' Intern'#283' opravit. ' + ImageIndex = 1 + object grdIO: TNextDBGrid6 + Left = 79 + Top = 1 + Width = 679 + Height = 284 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -35 + Font.Name = 'Tahoma' + Font.Style = [] + ParentColor = False + ParentFont = False + TabOrder = 0 + StyleOptions = [soNativeStyles, soVCLStyles] + ActiveView = viewIO + ActiveViewIndex = 0 + Options = [goArrowEndEditing, goAutoHideScrollBars, goExitEndEditing, goTabLeaveControl] + RowHeight = 40 + ScrollBars = [sbVertical] + SelectFullRow = True + UserDefinedColorPalette.GeometryHoverColor = clBlack + OnCellClick = grdIOCellClick + DataSource = dsZavadyIO + object viewIO: TNxReportGridView6 + ColumnMoving = False + FooterHeight = 0 + GridLines = True + HeaderHeight = 40 + end + object colKod2: TNxDBTextColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -35 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -35 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'K'#243'd' + Header.Color = clRed + Header.DrawingOptions = [doBackground, doContent, doCustom] + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -35 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 0 + MinWidth = 5 + PlaceholderText = 'Text Text' + Position = 0 + Resizeable = False + Width = 95 + DataBinding.FieldName = 'KodZavady' + end + object colPopis2: TNxDBTextColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -35 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -35 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'Popis' + Header.DrawingOptions = [doBackground, doContent, doCustom] + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -35 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 1 + PlaceholderText = 'Text Text' + Position = 1 + Resizeable = False + Width = 450 + DataBinding.FieldName = 'Popis' + end + object colMnozstvi2: TNxDBNumberColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -35 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -35 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Mno'#382'.' + Header.DrawingOptions = [doBackground, doContent, doCustom] + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -35 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 2 + PlaceholderText = '1742.50' + Position = 2 + Resizeable = False + Width = 110 + FormatMask = '#,##0' + Increment = 1.000000000000000000 + DataBinding.FieldName = 'Mnozstvi' + InsertString = '0' + end + end + object btnAddIO: TButton + Left = 0 + Top = 102 + Width = 70 + Height = 70 + ImageAlignment = iaCenter + ImageIndex = 0 + Images = imgList + TabOrder = 1 + OnClick = btnAddIOClick + end + end + object shEvid: TTabSheet + Caption = ' Evidov'#225'no' + ImageIndex = 2 + object grdEvid: TNextDBGrid6 + Left = 0 + Top = 0 + Width = 761 + Height = 287 + Align = alClient + ParentColor = False + TabOrder = 0 + ActiveView = viewEvid + ActiveViewIndex = 0 + Options = [goArrowEndEditing, goAutoHideScrollBars, goExitEndEditing, goTabLeaveControl] + ReadOnly = True + RowHeight = 40 + ScrollBars = [sbVertical] + SelectFullRow = True + UserDefinedColorPalette.GeometryHoverColor = clBlack + DataSource = dsEvid + object viewEvid: TNxReportGridView6 + ColumnMoving = False + GridLines = True + HeaderHeight = 40 + end + object colEvidDatum: TNxDBDateColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -27 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Datum' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -35 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 0 + PlaceholderText = '20.11.2019' + Position = 0 + Resizeable = False + Sorted = True + SortKind = skDescending + Width = 160 + DataBinding.FieldName = 'Datum' + InsertString = '30.12.1899' + end + object colEvidZamest: TNxDBTextColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -27 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Zam'#283'stnanec' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -35 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 1 + PlaceholderText = 'Text Text' + Position = 1 + Resizeable = False + Width = 460 + DataBinding.FieldName = 'Zamest' + end + object colEvidMnoz: TNxDBNumberColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -27 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Mno'#382'.' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -35 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 2 + PlaceholderText = '1742.50' + Position = 2 + Resizeable = False + Width = 120 + FormatMask = '#,##0' + Increment = 1.000000000000000000 + DataBinding.FieldName = 'Mnoz' + InsertString = '0' + end + end + end + end + object edtBarCode: TLabeledEdit + Left = 174 + Top = 22 + Width = 218 + Height = 41 + Alignment = taCenter + EditLabel.Width = 135 + EditLabel.Height = 41 + EditLabel.Caption = 'K'#243'd D'#225'vky:' + LabelPosition = lpLeft + TabOrder = 0 + Text = '' + OnExit = edtBarCodeExit + OnKeyPress = edtBarCodeKeyPress + end + object selBarCode: TButtonedEdit + Left = 398 + Top = 21 + Width = 40 + Height = 41 + TabOrder = 1 + Text = '...' + OnClick = selBarCodeClick + end + object edtCisZam: TLabeledEdit + Left = 265 + Top = 221 + Width = 136 + Height = 41 + Alignment = taCenter + EditLabel.Width = 167 + EditLabel.Height = 41 + EditLabel.Caption = 'Zam'#283'stnanec:' + LabelPosition = lpLeft + NumbersOnly = True + TabOrder = 4 + Text = '' + OnExit = edtCisZamExit + OnKeyPress = edtCisZamKeyPress + end + object selCisZam: TButtonedEdit + Left = 401 + Top = 221 + Width = 40 + Height = 41 + TabOrder = 5 + Text = '...' + end + object edtDobreKs: TRzNumericEdit + Left = 254 + Top = 298 + Width = 85 + Height = 41 + Alignment = taCenter + TabOrder = 7 + OnChange = edtDobreKsChange + OnEnter = edtDobreKsEnter + DisplayFormat = '0' + end + object btnOK: TButton + Left = 62 + Top = 655 + Width = 187 + Height = 70 + Caption = 'OK' + TabOrder = 9 + OnClick = btnOKClick + end + object btnZrusit: TButton + Left = 969 + Top = 655 + Width = 187 + Height = 70 + Caption = 'Zru'#353'it' + TabOrder = 10 + OnClick = btnZrusitClick + end + object edtBarCode2: TLabeledEdit + Left = 177 + Top = 112 + Width = 218 + Height = 41 + Alignment = taCenter + EditLabel.Width = 162 + EditLabel.Height = 41 + EditLabel.Caption = 'K'#243'd Operace:' + LabelPosition = lpLeft + TabOrder = 2 + Text = '' + OnExit = edtBarCode2Exit + OnKeyPress = edtBarCode2KeyPress + end + object selBarCode2: TButtonedEdit + Left = 401 + Top = 110 + Width = 40 + Height = 41 + TabOrder = 3 + Text = '...' + OnClick = selBarCode2Click + end + object pnlCalc: TPanel + Left = 751 + Top = 22 + Width = 363 + Height = 404 + Caption = 'pnlCalc' + Color = 16776176 + ParentBackground = False + TabOrder = 11 + Visible = False + object lblPnl: TLabel + Left = 11 + Top = 59 + Width = 335 + Height = 29 + Alignment = taCenter + AutoSize = False + Color = clNavy + Font.Charset = DEFAULT_CHARSET + Font.Color = 1560658 + Font.Height = -24 + Font.Name = 'Tahoma' + Font.Style = [] + ParentColor = False + ParentFont = False + end + object edtNumVal: TRzNumericEdit + Left = 38 + Top = 11 + Width = 239 + Height = 42 + TabStop = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -28 + Font.Name = 'Tahoma' + Font.Style = [] + MaxLength = 8 + ParentFont = False + TabOrder = 0 + OnKeyPress = edtNumValKeyPress + DisplayFormat = ',0 ;-,0 ' + end + object btnCalcClose: TButton + Left = 296 + Top = 13 + Width = 41 + Height = 35 + Caption = 'X' + TabOrder = 1 + OnClick = btnCalcCloseClick + end + object tKeyb: TAdvTouchKeyboard + Left = 16 + Top = 98 + Width = 335 + Height = 303 + Margins.Left = 1 + Margins.Top = 1 + Margins.Right = 1 + Margins.Bottom = 1 + ParentCustomHint = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -27 + Font.Name = 'Segoe UI' + Font.Style = [] + Color = 16776176 + KeyboardType = ktNUMERIC + KeyDistance = 1 + Keys = < + item + Caption = '7' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 80 + Width = 80 + SpecialKey = skNone + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 0 + Y = 0 + end + item + Caption = '8' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 80 + Width = 80 + SpecialKey = skNone + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 80 + Y = 0 + end + item + Caption = '9' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 80 + Width = 80 + SpecialKey = skNone + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 160 + Y = 0 + end + item + Caption = '4' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 80 + Width = 80 + SpecialKey = skNone + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 0 + Y = 80 + end + item + Caption = '5' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 80 + Width = 80 + SpecialKey = skNone + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 80 + Y = 80 + end + item + Caption = '6' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 80 + Width = 80 + SpecialKey = skNone + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 160 + Y = 80 + end + item + Caption = '1' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 80 + Width = 80 + SpecialKey = skNone + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 0 + Y = 160 + end + item + Caption = '2' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 80 + Width = 80 + SpecialKey = skNone + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 80 + Y = 160 + end + item + Caption = '3' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 80 + Width = 80 + SpecialKey = skNone + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 160 + Y = 160 + end + item + Caption = 'Sma'#382 + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 140 + Width = 80 + SpecialKey = skDelete + BorderColor = clGray + BorderColorDown = clBlack + Color = 3618815 + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 250 + Y = 0 + end + item + Caption = '0' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 60 + Width = 120 + SpecialKey = skNone + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 0 + Y = 240 + end + item + Caption = 'O K' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 130 + Width = 80 + SpecialKey = skReturn + BorderColor = clGray + BorderColorDown = clBlack + Color = clLime + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 250 + Y = 170 + end> + SmallFont.Charset = DEFAULT_CHARSET + SmallFont.Color = clWindowText + SmallFont.Height = -16 + SmallFont.Name = 'Tahoma' + SmallFont.Style = [] + Version = '2.0.2.6' + Visible = False + OnKeyClick = tKeybKeyClick + OnKeyDown = tKeybKeyDown + end + end + object tbl: TVirtualTable + AfterPost = tblAfterPost + AfterDelete = tblAfterDelete + Left = 15 + Top = 415 + Data = {04000000000000000000} + object tblKodZavady: TStringField + FieldName = 'KodZavady' + Size = 15 + end + object tblPopis: TStringField + FieldName = 'Popis' + Size = 100 + end + object tblMnozstvi: TFloatField + FieldName = 'Mnozstvi' + end + end + object dsZavady: TDataSource + DataSet = tbl + Left = 93 + Top = 412 + end + object imgList: TImageList + ColorDepth = cd32Bit + Height = 64 + Width = 64 + Left = 14 + Top = 352 + Bitmap = { + 494C010102000800040040004000FFFFFFFF2110FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000000100004000000001002000000000000000 + 0100000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C8DAB8FFADC795FF97B7 + 74FF7DA856FF729F46FF6A993BFF629332FF629432FF699A3BFF709D46FF79A4 + 52FF92B36FFFA9C48EFFC2D5B0FF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000E6E5F3FFDBDBEFFFD2D0EBFFD2D0EBFFDBDBEFFFE5E3F1FF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000DFE9D5FFA4C189FF79A552FF5F922FFF609430FF609430FF6094 + 30FF609430FF609430FF609430FF609430FF609430FF609430FF609430FF5F93 + 30FF5F9230FF5F9230FF5F9230FF5F9330FF75A14AFF9DBC7DFFD6E3C9FF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C3C3E5FF9290D0FF6F6CC2FF504E + B5FF3D39AEFF3D39AEFF3D39AEFF3D39AEFF3D39AEFF3D39AEFF3D39AEFF3D39 + ACFF504DB3FF6D6AC0FF928ECDFFC2C1E2FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000B3CA + 9DFF78A250FF609430FF609430FF609430FF609430FF609430FF609430FF6094 + 30FF609430FF609430FF609430FF609430FF609430FF609430FF609430FF6094 + 30FF5F9230FF5F9231FF5F9231FF5F9231FF5F9230FF609430FF609430FF729F + 46FFABC591FF0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000AEADDBFF6765BFFF3D39ACFF3D39AEFF3D39AEFF3D39AEFF3D39 + AEFF3C38B0FF3936B5FF3834B7FF3733BAFF3733BAFF3834B7FF3936B5FF3C38 + AFFF3D39ABFF3D39ABFF3D39ABFF3D39ABFF3D39A9FF6765BEFFAFAEDCFF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000ABC494FF68973EFF5F91 + 31FF5F9131FF5F9131FF609430FF609430FF609430FF609430FF609430FF6094 + 30FF609430FF609430FF609430FF609430FF609430FF609430FF609430FF6094 + 30FF609430FF5F9131FF5F9131FF5F9131FF5F9131FF5F9131FF609430FF6094 + 30FF609430FF649635FFA2C086FF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000D8D7E9FF817D + C4FF403CAAFF3D39AAFF3D39ADFF3C38B0FF3632BCFF2F2AC9FF2A24D4FF2520 + DDFF221CE3FF221CE3FF221CE3FF221CE3FF221CE3FF221CE3FF221CE3FF221C + E2FF2520DBFF2B26CFFF312CC3FF3733B6FF3C38ABFF3D39AAFF3D39ADFF403C + AEFF8482CAFFE0DEF0FF00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C4D7B2FF6D9C40FF609330FF5E9031FF5E90 + 31FF5E9031FF5E9031FF5E9031FF609330FF609430FF639931FF689F33FF6AA3 + 35FF6DA736FF6FAA37FF70AB37FF71AC38FF71AC38FF70AB37FF6FAA37FF6DA8 + 36FF6BA335FF689E33FF629633FF5F9131FF5E9031FF5E9031FF5E9031FF6093 + 30FF609430FF609430FF609430FF659636FFB5CC9DFF00000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000E4E2F2FF7B79C6FF3C38A7FF3D39 + A9FF3D39AAFF3532B8FF2C27CBFF231DE0FF221CE3FF221CE3FF221CE3FF221C + E3FF221CE3FF221CE3FF221CE3FF221CE3FF221CE3FF221CE3FF221CE3FF221C + E3FF221CE3FF221CE2FF231EDCFF231EDBFF241FD9FF2C27C9FF3531B8FF3D38 + AEFF3D39AEFF3C38ACFF7C79C7FFE4E2F2FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000087AE61FF609430FF609430FF609430FF609330FF5E90 + 31FF5E8F31FF5E8F31FF639633FF699F36FF70AA37FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AC38FF6DA639FF69A036FF649733FF5F9031FF5E90 + 31FF609330FF609430FF609430FF609430FF609430FF78A44FFFDFE9D5FF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000009F9DD5FF413DAEFF3D39AEFF3C38AFFF332D + BEFF2721D4FF241ED9FF241ED9FF241EDAFF221CE2FF241EE3FF2925E4FF2D29 + E5FF312DE5FF3331E6FF3432E6FF3533E7FF3533E7FF3432E6FF3331E6FF312D + E5FF2D29E5FF2925E4FF241EE2FF241EDAFF241ED9FF241ED9FF241ED9FF2621 + D5FF312DC3FF3C38B0FF3D39AEFF413DAEFF9F9DD5FF00000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000CFDDC0FF6A9A3CFF609430FF609430FF609430FF609430FF609430FF6194 + 30FF669A34FF6CA438FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6DA639FF669B + 35FF609331FF609330FF609430FF609430FF609430FF609430FF629533FFBCD0 + A7FF000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000DBDBEFFF5956B9FF3D39AEFF3C38AFFF332DC4FF241FDEFF221C + E2FF241EDAFF241ED9FF2722DAFF2E2BDBFF3534DEFF3938E6FF3938E7FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E7FF3938E7FF3433E6FF2E2ADCFF2621DAFF241ED9FF241E + D9FF241EDAFF251EDEFF332EC2FF3D39AFFF3D39AEFF5956B9FFDBDBEFFF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000AEC8 + 95FF5F922FFF609430FF609430FF609430FF609430FF619530FF68A034FF70AC + 38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA7 + 39FF6EA639FF689D35FF619430FF609430FF609430FF609430FF609430FF6094 + 30FF97B775FF0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000B3B1DDFF413DAEFF3D39AEFF3834B8FF2822D8FF221CE3FF221CE3FF221C + E3FF2723E3FF3432DDFF3939DDFF3939DDFF3939DDFF3939DEFF3938E6FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E6FF3939DEFF3432DCFF2825 + DAFF241ED9FF241EDAFF221CE2FF2823D8FF3834B8FF3D39AEFF413DAEFFB2B1 + DEFF000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000009EBD7DFF6094 + 30FF609430FF609430FF609430FF609430FF649A32FF6EA937FF71AD38FF71AD + 38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA7 + 39FF6EA739FF6EA739FF6DA538FF669C33FF609430FF609430FF609430FF6094 + 30FF609430FF8AAE63FF00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000009493 + D1FF3D39AEFF3D39AEFF322DC4FF221CE2FF221CE3FF221CE3FF2520E3FF322F + E6FF3938E7FF3938E6FF3939DEFF3939DDFF3939DDFF3939DDFF3939DEFF3938 + E6FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E6FF3939DEFF3939 + DDFF3330DCFF2723D9FF241EDAFF221CE2FF221CE2FF322DC4FF3D39AEFF3D39 + AEFF9593D1FF0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000093B570FF609430FF6094 + 30FF609430FF609430FF609430FF689F33FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA7 + 39FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA7 + 39FF6EA739FF6EA739FF6EA739FF6EA739FF6AA235FF619530FF609430FF6094 + 30FF609430FF609430FF80A857FF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000008482CAFF3D39 + AEFF3C38B0FF2B26D1FF221CE3FF221CE3FF231EE3FF302CE6FF3837E7FF3938 + E7FF3938E7FF3938E7FF3938E6FF3939DEFF3939DDFF3939DDFF3939DDFF3939 + DEFF3938E6FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E6FF3939 + DEFF3939DDFF3838DDFF312DDCFF2420DAFF221CE2FF221CE3FF2B26D1FF3C38 + B0FF3D39AEFF8482CAFF00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000009AB67BFF609330FF609430FF6094 + 30FF609430FF619530FF6BA335FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA7 + 39FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC + 38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF6DA636FF629630FF6094 + 30FF609430FF609430FF609430FF87AD61FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000837DC9FF3D39AEFF3B38 + B1FF2823D6FF221CE3FF221CE3FF2520E3FF3634E6FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E6FF3939DEFF3939DDFF3939DDFF3939 + DDFF3939DEFF3938E6FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E6FF3939DEFF3939DDFF3939DDFF3635DCFF2622DAFF221CE2FF221CE3FF2823 + D6FF3B38B1FF3D39AEFF8482CAFF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000A8C090FF5E8F31FF5E9031FF609330FF6094 + 30FF629630FF6DA836FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA7 + 39FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF6FA937FF6398 + 31FF609430FF609430FF609430FF609430FF93B570FF00000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000008E8DC8FF3D39A8FF3B37B0FF2721 + D9FF221CE3FF221CE3FF2924E4FF3837E6FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E6FF3939DEFF3939DDFF3939 + DDFF3939DDFF3939DEFF3938E6FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E6FF3939DEFF3939DDFF3939DDFF3838DCFF2A26DBFF221CE2FF221C + E3FF2721D8FF3B38B1FF3D39AEFF9593D1FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C8D5BBFF5D8D30FF5E8F31FF5E8F31FF5E9031FF6295 + 30FF6FAA37FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA7 + 39FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF70AB + 38FF639931FF609430FF609430FF609430FF609430FFB6CC9FFF000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000ABAAD4FF3D3AA8FF3C39AAFF2925CFFF221C + E2FF221CE3FF2C29E4FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E6FF3939DEFF3939 + DDFF3939DDFF3B3ADDFF3C3ADDFF3D3BE6FF3D3BE7FF3C3AE6FF3B3AE7FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E6FF3939DEFF3939DDFF3939DDFF3939DDFF2D2ADBFF221C + E2FF221CE3FF2924D6FF3C38B0FF3D39AEFFB3B1DDFF00000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000006B993EFF5E9031FF5E8F31FF5E8F31FF5F9031FF6AA2 + 37FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA7 + 39FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA7 + 39FF6FA937FF629630FF609430FF609430FF609430FF619432FFDAE6D1FF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000DADAEEFF413DA9FF3D3AA8FF2C28C9FF241ED9FF241E + DAFF2C29E4FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3B3AE7FF3E3EE6FF4241 + DDFF4443DCFF4443DCFF4443DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443 + E6FF4240E6FF3E3EE7FF3B3AE7FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E7FF3938E6FF3939DEFF3939DDFF3939DDFF3939DDFF2D2A + DBFF221CE2FF221CE3FF2B26D1FF3D39AEFF413DAEFFDBDBEFFF000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000008CB067FF609430FF609330FF5E9031FF5E8F31FF689D36FF6EA7 + 39FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC + 38FF6EA739FF78AC47FFC3D8AFFFEDF0EAFFF1F3F0FFD6E7C6FF87B954FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA7 + 39FF6EA739FF6DA636FF619530FF609430FF609430FF609430FF75A14AFF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000005956B9FF3D39ADFF322EBEFF241ED9FF241ED9FF2A26 + DAFF3939DEFF3938E6FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E7FF3938E7FF3D3BE7FF4241E6FF4443E6FF4443E6FF4443 + E5FF4443DDFF4443DCFF4443DCFF4443DCFF4443DDFF4443E5FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4241E6FF3C3CE7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E6FF3939DEFF3939DDFF3939DDFF3939 + DDFF2A26DBFF221CE2FF221CE3FF322DC4FF3D39AEFF5956B9FF000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000CADBBAFF609430FF609430FF609430FF609330FF669A34FF6EA739FF6EA7 + 39FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF79B145FFE7ECE0FFF4F4F4FFF4F4F4FFF4F4F4FFF5F5F5FFF7F9F5FF89BA + 57FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA7 + 39FF6EA739FF6EA739FF6AA235FF609430FF609430FF609430FF609430FFB0C9 + 97FF000000000000000000000000000000000000000000000000000000000000 + 0000000000009D9BD5FF3D39AEFF3834B8FF221CE1FF241EDAFF2722D9FF3838 + DCFF3939DDFF3939DEFF3938E6FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3C3BE7FF4241E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E5FF4443DDFF4443DCFF4443DCFF4443DCFF4443DDFF4443E5FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4140E6FF3C3BE7FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E6FF3939DEFF3939DDFF3939 + DDFF3838DCFF2622DAFF221CE2FF221CE2FF3834B8FF3D39AEFF9F9DD5FF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000709F46FF609430FF609430FF609430FF649A32FF71AC38FF6EA739FF6EA7 + 39FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FFC6DEAFFFFDFDFDFFF5F5F5FFF4F4F4FFF4F4F4FFF4F4F4FFF5F5F5FFDDEA + CFFF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA7 + 39FF6EA739FF6EA739FF6EA739FF679C33FF609430FF609430FF609430FF6496 + 36FFEBF0E4FF0000000000000000000000000000000000000000000000000000 + 0000E4E2F2FF413DAEFF3D39AFFF2722D8FF221CE3FF231EE2FF3635DDFF3939 + DDFF3939DDFF3939DDFF3939DEFF3938E6FF3938E7FF3938E7FF3938E7FF3A39 + E7FF3E3EE6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E5FF4443DDFF4443DCFF4443DCFF4443DCFF4443DDFF4443 + E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF3F3D + E6FF3A39E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E6FF3939DEFF3939 + DDFF3939DDFF3635DCFF2420DAFF221CE2FF2722D8FF3C38AFFF413DAEFFE3E3 + F2FF000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000B7CE + A1FF609430FF609430FF609430FF609430FF6EA836FF71AD38FF71AC38FF6EA7 + 39FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FFEDF5E6FFFFFFFFFFFDFDFDFFF5F5F5FFF4F4F4FFF4F4F4FFF4F4F4FFF4F5 + F4FF76AF40FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA7 + 39FF6EA739FF6EA739FF6EA739FF6DA538FF629530FF609430FF609430FF6094 + 30FF9DBC7DFF0000000000000000000000000000000000000000000000000000 + 00007C79C7FF3D39AEFF322EC3FF221CE3FF221CE3FF302DE6FF3938E6FF3939 + DEFF3939DDFF3939DDFF3939DDFF3939DEFF3938E6FF3938E7FF3938E7FF413F + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E5FF4443DDFF4443DCFF4443DCFF4443DCFF4443 + DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF413FE6FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E6FF3939 + DEFF3939DDFF3939DDFF312DDCFF241EDAFF221CE2FF332DC4FF3D39AEFF7C79 + C7FF000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000006E9D + 42FF609430FF609430FF609430FF689F33FF71AD38FF71AD38FF71AD38FF71AC + 38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FFF5F9F0FFFFFFFFFFFFFFFFFFFDFDFDFFF5F5F5FFF4F4F4FFF4F4F4FFF4F4 + F4FF79AD47FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC + 38FF6EA739FF6EA739FF6EA739FF6EA739FF689E36FF609330FF609430FF6094 + 30FF629332FF000000000000000000000000000000000000000000000000E0DE + F0FF3C38ACFF3C38B0FF251EDFFF221CE3FF2520E3FF3837E7FF3938E7FF3938 + E6FF3939DEFF3939DDFF3939DDFF3939DDFF3939DEFF3938E6FF4241E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E5FF4443DDFF4443DCFF4443DCFF4443 + DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4241E6FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E6FF3939DEFF3939DDFF3838DDFF2723D9FF241EDAFF241FDDFF3C38B0FF3C38 + ACFFE0DEF0FF0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000BED1A9FF6094 + 30FF609430FF609430FF619530FF70AB37FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FFF5F9F0FFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFF5F5F5FFF4F4F4FFF4F4 + F4FF78AC47FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA639FF619332FF609330FF6094 + 30FF609430FFA5C28AFF00000000000000000000000000000000000000008380 + CAFF3D39AEFF312DC5FF221CE3FF221CE3FF322FE6FF3938E7FF3938E7FF3938 + E7FF3938E6FF3939DEFF3939DDFF3939DDFF3A3ADDFF413FDDFF4443E5FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E5FF4443DDFF4443DCFF4443 + DCFF4443DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4040E6FF3A39E7FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E6FF3939DEFF3939DDFF3330DCFF241ED9FF241EDAFF322CC4FF3D39 + AEFF8482CAFF0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000081AA59FF6094 + 30FF609430FF609430FF689F33FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FFF5F9F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFF5F5F5FFF4F4 + F4FF78AC47FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF679D36FF5E9031FF6093 + 30FF609430FF6E9C3FFF0000000000000000000000000000000000000000403C + AEFF3D38AFFF251FDDFF221CE3FF2723E4FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E6FF3939DEFF3939DDFF3F3EDDFF4443DCFF4443DDFF4443 + E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E5FF4443DDFF4443 + DCFF4443DCFF4443DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF3E3EE6FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E6FF3939DEFF3939DDFF2724DAFF241ED9FF2621D5FF3D38 + AEFF403CAEFF0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000E6EEE0FF609430FF6094 + 30FF609430FF609430FF6FAA37FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA7 + 39FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FFF5F9F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFF5F5 + F5FF78AC47FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA639FF5F9031FF5E90 + 31FF609430FF609430FFCEDDBEFF000000000000000000000000B0ADDCFF3D39 + AEFF3531BDFF221CE3FF221CE3FF3231E6FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E7FF3938E6FF3B3BDEFF4443DCFF4443DCFF4443DCFF4443 + DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E5FF4443 + DDFF4443DCFF4443DCFF4443DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF3C3BE7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E7FF3938E6FF3939DEFF3432DCFF241ED9FF241ED9FF3532 + B9FF3D39ADFFAFAEDCFF00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000ADC795FF609430FF6094 + 30FF609430FF649A32FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA7 + 39FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FFF5F9F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFD + FDFF79AD47FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF659934FF5E90 + 31FF5F9131FF609430FF95B773FF0000000000000000000000006765BEFF3D39 + AEFF2B27D1FF221CE3FF2520E4FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E7FF3938E7FF4141E5FF4443DDFF4443DCFF4443DCFF4443 + DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E5FF4443DDFF4443DCFF4443DCFF4443DCFF4443DDFF4443E5FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4241E6FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E6FF3939DEFF2722DAFF241ED9FF2C27 + CAFF3D39AAFF6765BEFF00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000083A95BFF609430FF6094 + 30FF609430FF6AA335FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA7 + 39FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FFF5F9F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF7BB247FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6AA137FF5E90 + 31FF5F9131FF5F9230FF6C9C3FFF0000000000000000000000003D39ACFF3C38 + AFFF231DE1FF221CE3FF2D2AE5FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E7FF3D3BE7FF4443E6FF4443E5FF4443DDFF4443DCFF4443 + DCFF4443DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E5FF4443DDFF4443DCFF4443DCFF4443DCFF4443DDFF4443E5FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF3D3BE7FF3938E7FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E6FF2E2ADCFF241ED9FF241F + D9FF3C38ACFF3D39A9FF00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000629332FF5F9330FF6094 + 30FF609430FF6FAA37FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA7 + 39FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD + 38FFF5F9F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF7CB347FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA639FF5F91 + 31FF5F9131FF5F9231FF5F9330FFE1E9D8FF00000000C1C1E2FF3D39ACFF3631 + BAFF221CE3FF221CE3FF3433E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3938E7FF4241E6FF4443E6FF4443E6FF4443E5FF4443DDFF4443 + DCFF4443DCFF4443DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E5FF4443DDFF4443DCFF4443DCFF4443DCFF4443DDFF4443 + E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4241E6FF3938E7FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3433E6FF241EDAFF231E + DBFF3633B7FF3D39ABFFC2C1E2FF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000D2E0C5FF609330FF5F9230FF5F92 + 30FF629730FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA7 + 39FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD + 38FFF5F9F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF7CB347FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA7 + 39FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6397 + 33FF5F9131FF5F9231FF5F9230FFB6CDA1FF00000000918FCEFF3D39ACFF2F2B + C5FF221CE2FF241EE3FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3B3AE6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E5FF4443 + DDFF4443DCFF4443DCFF4443DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E5FF4443DDFF4443DCFF4443DCFF4443DCFF4443 + DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF3B3AE7FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF241EE2FF231E + DCFF302BC4FF3D39ABFF928ECDFF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000B7CEA1FF609330FF5F9230FF5F92 + 31FF659A34FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC + 38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD + 38FFF5F9F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF7CB347FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA7 + 39FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF69A0 + 34FF5F9131FF5F9231FF5F9230FF9ABB7CFF000000006C69C0FF3D39ACFF2B25 + D0FF231DDDFF2925E3FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF3F3DE7FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E5FF4443DDFF4443DCFF4443DCFF4443DCFF4443DDFF4443E5FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E5FF4443DDFF4443DCFF4443DCFF4443 + DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443E6FF3E3EE7FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF2925E4FF221C + E2FF2B25CFFF3D39ABFF6D6AC0FF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000009FBD82FF609330FF5F9230FF5F92 + 31FF679D35FF6FA838FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD + 38FFF5F9F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF7CB347FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA7 + 39FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF6CA5 + 35FF609430FF5F9230FF5F9230FF85AB5DFF00000000504CB4FF3D39ACFF2621 + D8FF231EDDFF2E2BDEFF3938E6FF3938E7FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF4241E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E5FF4443DDFF4443DCFF4443DCFF4443DCFF4443DDFF4443E5FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E5FF4443DDFF4443DCFF4443 + DCFF4443DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443E6FF4241E6FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF2D29E5FF221C + E3FF2520DCFF3D39ABFF504DB3FF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000008AAE63FF609430FF5F9330FF5F92 + 31FF6AA136FF6EA839FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF7CB347FFCBE1B6FFF8FBF5FFFFFFFFFFFFFF + FFFFFFFFFFFFFDFDFDFFF5F5F5FFF4F4F4FFF4F4F4FFF4F4F4FFF5F5F5FFFDFD + FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFF5F5F5FFF4F4 + F4FFF4F4F4FFF4F4F4FFF1F3F0FFD6E7C6FF87B954FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF6EA9 + 37FF609430FF609430FF5F9330FF6E9B42FF000000003D39AEFF3C38AEFF231D + DEFF231EDDFF312EDEFF3939DEFF3938E6FF3938E7FF3938E7FF3938E7FF3938 + E7FF3938E7FF4443E6FF4443E6FF4443E6FF4544E6FF8E8DF0FFBDBDF5FFD0D0 + F8FFD0D0F8FFCFCFF6FFC8C8EEFFC7C8EDFFC7C8EDFFC7C8EDFFC8C8EEFFCFCF + F6FFD0D0F8FFD0D0F8FFD0D0F8FFD0D0F8FFD0D0F8FFD0D0F8FFD0D0F8FFD0D0 + F8FFD0D0F8FFD0D0F8FFD0D0F8FFD0D0F8FFD0D0F8FFCFCFF6FFC8C8EEFFC7C8 + EDFFC7C7EDFFAEADE9FF7170E3FF4443E5FF4443E6FF4443E6FF4443E6FF3938 + E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF312DE5FF221C + E3FF221CE3FF3C38B0FF3D39ACFF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000007CA653FF609430FF609430FF5F92 + 30FF6BA436FF6EA839FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF7AB245FFF0F6E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFDFDFDFFF5F5F5FFF4F4F4FFF4F4F4FFF4F4F4FFF5F5 + F5FFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFF5F5 + F5FFF4F4F4FFF4F4F4FFF4F4F4FFF5F5F5FFF7F9F5FF89BA57FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF70AC + 38FF609430FF609430FF609430FF639536FFE4E4F3FF3D39AEFF3936B5FF231D + DFFF231EDDFF3533DEFF3939DDFF3939DEFF3938E6FF3938E7FF3938E7FF3938 + E7FF3A39E7FF4443E6FF4443E6FF4544E6FFC7C7F7FFFEFEFEFFFEFEFEFFFEFE + FEFFFEFEFEFFFEFEFEFFFCFCFCFFF4F4F4FFF3F3F3FFF3F3F3FFF3F3F3FFF4F4 + F4FFFCFCFCFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE + FEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFCFCFCFFF4F4 + F4FFF3F3F3FFF3F3F3FFF3F3F3FF9695E8FF4443E5FF4443E6FF4443E6FF3B39 + E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3331E6FF221C + E3FF221CE3FF3936B5FF3D39AEFFE5E3F1FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000073A048FF609430FF609430FF6094 + 30FF6CA537FF6EA839FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD + 38FF71AD38FF71AD38FFC6DEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFF5F5F5FFF4F4F4FFF4F4F4FFF4F4 + F4FFF5F5F5FFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFD + FDFFF5F5F5FFF4F4F4FFF4F4F4FFF4F4F4FFF5F5F5FFDDEACFFF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF609430FF609430FF609430FF609430FFDADAEEFF3D39AEFF3834B7FF221C + E2FF231DDDFF3838DFFF3B3ADDFF3939DDFF3939DEFF3938E6FF3938E7FF3938 + E7FF3B3BE7FF4443E6FF4443E6FF8D8CF0FFFEFEFEFFFEFEFEFFFEFEFEFFFEFE + FEFFFEFEFEFFFEFEFEFFFEFEFEFFFCFCFCFFF4F4F4FFF3F3F3FFF3F3F3FFF3F3 + F3FFF4F4F4FFFCFCFCFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE + FEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFCFC + FCFFF4F4F4FFF3F3F3FFF3F3F3FFF1F1F3FF5E5DE1FF4443E5FF4443E6FF3C3A + E6FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3A39E7FF3836E7FF221C + E3FF221CE3FF3834B7FF3D39AEFFDBDBEFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000006E9C3FFF609430FF609430FF6094 + 30FF6FA937FF6FA838FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD + 38FF71AD38FF71AD38FFEDF5E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFF5F5F5FFF4F4F4FFF4F4 + F4FFF4F4F4FFF5F5F5FFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFDFDFDFFF5F5F5FFF4F4F4FFF4F4F4FFF4F4F4FFF4F5F4FF76AF40FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF619530FF609430FF609430FF609430FFD2D0EBFF3D39AEFF3733BAFF221C + E3FF221CE2FF3B39E0FF3F3EDEFF3939DDFF3939DDFF3939DEFF3938E6FF3938 + E7FF3D3CE7FF4443E6FF4443E6FFBEBEF5FFFEFEFEFFFEFEFEFFFEFEFEFFFEFE + FEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFCFCFCFFF4F4F4FFF3F3F3FFF3F3 + F3FFF3F3F3FFF4F4F4FFFCFCFCFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE + FEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE + FEFFFCFCFCFFF4F4F4FFF3F3F3FFF3F3F3FF8B8BE6FF4443DDFF4443E5FF3D3B + E7FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF3D3BE7FF3A38E8FF221C + E3FF221CE3FF3733BAFF3D39AEFFD2D0EBFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000006E9C3FFF609430FF609430FF6094 + 30FF6FAA37FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC + 38FF71AD38FF71AD38FFEDF5E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFF5F5F5FFF4F4 + F4FFF4F4F4FFF4F4F4FFF5F5F5FFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFDFDFDFFF5F5F5FFF4F4F4FFF4F4F4FFF3F4F3FF73AA40FF71AC + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF619530FF609430FF609430FF609430FFD2D0EBFF3D39AEFF3733BAFF221C + E3FF221CE3FF3C3AE6FF4442DFFF3939DDFF3939DDFF3939DDFF3939DEFF3938 + E6FF3D3CE7FF4443E6FF4443E6FFBDBDF5FFFEFEFEFFFEFEFEFFFEFEFEFFFEFE + FEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFCFCFCFFF4F4F4FFF3F3 + F3FFF3F3F3FFF3F3F3FFF4F4F4FFFCFCFCFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE + FEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE + FEFFFEFEFEFFFCFCFCFFF4F4F4FFF3F3F3FF8C8BE6FF4443DCFF4443DDFF3D3B + E6FF3938E7FF3938E7FF3938E7FF3938E7FF3938E7FF4240E7FF3C39E8FF221C + E3FF221CE3FF3733BAFF3D39AEFFD2D0EBFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000073A048FF609430FF609430FF6094 + 30FF6EA937FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA7 + 39FF71AC38FF71AD38FFC6DEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFF5F5 + F5FFF4F4F4FFF4F4F4FFF4F4F4FFF5F5F5FFFDFDFDFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFDFDFDFFF5F5F5FFF4F4F4FFD5E1C8FF6EA739FF6EA7 + 39FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF609430FF609430FF609430FF609430FFDADAEEFF3D39AEFF3834B7FF221C + E3FF221CE3FF3A39E7FF4946E7FF3939DEFF3939DDFF3939DDFF3939DDFF3939 + DEFF3C3BE5FF4443E6FF4443E6FF8C8BEFFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE + FEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFCFCFCFFF4F4 + F4FFF3F3F3FFF3F3F3FFF3F3F3FFF4F4F4FFFCFCFCFFFEFEFEFFFEFEFEFFFEFE + FEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE + FEFFFEFEFEFFFEFEFEFFFCFCFCFFF1F1F4FF5E5DE0FF4443DCFF4443DCFF3C3B + DDFF3938E6FF3938E7FF3938E7FF3938E7FF3938E7FF4845E9FF3A38E6FF221C + E3FF221CE3FF3834B7FF3D39AEFFDBDBEFFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000007CA653FF609430FF609430FF6094 + 30FF6DA836FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA7 + 39FF6EA739FF71AC38FF7AB245FFF0F6E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFD + FDFFF5F5F5FFF4F4F4FFF4F4F4FFF4F4F4FFF5F5F5FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFEFF1EDFF86B357FF6EA739FF6EA7 + 39FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF70AC + 38FF609430FF609430FF609430FF639636FFE4E4F3FF3D39AEFF3936B5FF221C + E3FF221CE3FF3736E6FF4F4BE9FF3A39E6FF3939DEFF3939DDFF3939DDFF3939 + DDFF3B3ADEFF4443E5FF4443E6FF4544E6FFC6C6F6FFFEFEFEFFFEFEFEFFFEFE + FEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFCFC + FCFFF4F4F4FFF3F3F3FFF3F3F3FFF3F3F3FFF4F4F4FFFCFCFCFFFEFEFEFFFEFE + FEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE + FEFFFEFEFEFFFEFEFEFFFEFEFEFF9999F0FF4443DDFF4443DCFF4443DCFF3B3A + DDFF3939DEFF3938E6FF3938E7FF3938E7FF3938E7FF4E4AE9FF3835E7FF221C + E3FF221CE3FF3936B5FF3D39AEFFE6E5F3FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000008AAE63FF609430FF609430FF6094 + 30FF6CA535FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA7 + 39FF6EA739FF6EA739FF71AC38FF7DB448FFCBE1B6FFF8FBF5FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFDFDFDFFF5F5F5FFF4F4F4FFF4F4F4FFF4F4F4FFF5F5F5FFFDFDFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFBFDFAFFD7E8C7FF86B855FF6EA739FF6EA739FF6EA7 + 39FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF6EA9 + 37FF609430FF609430FF609430FF6E9C42FF000000003D39AEFF3C38B0FF221C + E3FF221CE3FF3330E6FF504CE9FF4240E7FF3938E6FF3939DEFF3939DDFF3939 + DDFF3939DDFF4443DDFF4443E5FF4443E6FF4544E6FF8C8CF0FFBEBEF5FFD0D0 + F8FFD0D0F8FFD0D0F8FFD0D0F8FFD0D0F8FFD0D0F8FFD0D0F8FFD0D0F8FFD0D0 + F8FFCFCFF6FFC8C8EEFFC7C8EDFFC7C8EDFFC7C8EDFFC8C8EEFFCFCFF6FFD0D0 + F8FFD0D0F8FFD0D0F8FFD0D0F8FFD0D0F8FFD0D0F8FFD0D0F8FFD0D0F8FFD0D0 + F8FFD0CFF8FFB3B3F4FF7272ECFF4443E6FF4443E5FF4443DDFF4443DCFF3939 + DDFF3939DDFF3939DEFF3938E6FF3938E7FF413FE8FF504CE9FF3330E5FF221C + E3FF221CE2FF3C38AFFF3D39AEFF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000009FBD82FF609430FF609430FF6094 + 30FF69A134FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA7 + 39FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FFF5F9F0FFFDFDFDFFF5F5F5FFF4F4F4FFF4F4F4FFF4F4F4FFF5F5F5FFFDFD + FDFF7CB347FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA7 + 39FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF6CA5 + 35FF609430FF609430FF609430FF86AC5FFF00000000504CB4FF3D39AEFF251F + DDFF221CE3FF2D2AE5FF4F4CE9FF4C49E9FF3938E7FF3938E6FF3939DEFF3939 + DDFF3939DDFF4241DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E5FF4443DDFF4443DCFF4443DCFF4443DCFF4443DDFF4443 + E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E5FF4240DDFF3939 + DDFF3939DDFF3939DDFF3939DEFF3938E6FF4A47E9FF4F4BE9FF2D29E5FF221C + E3FF2520DCFF3D39AEFF504EB5FF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000B7CEA1FF609430FF609430FF6094 + 30FF669D33FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA7 + 39FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FFF5F9F0FFFFFFFFFFFDFDFDFFF5F5F5FFF4F4F4FFF4F4F4FFF4F4F4FFF5F5 + F5FF7BB247FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA7 + 39FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF69A1 + 34FF609430FF609430FF609430FF9CBC7CFF000000006D6AC1FF3D39AEFF2924 + D5FF221CE3FF2925E4FF4B48E8FF504CE9FF3E3CE8FF3938E7FF3938E6FF3939 + DEFF3939DDFF3E3EDDFF4443DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E5FF4443DDFF4443DCFF4443DCFF4443DCFF4443 + DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF3E3EE6FF3939 + DEFF3939DDFF3939DDFF3939DDFF3D3CDFFF504CE8FF4C48E8FF2925E4FF221C + E3FF2A25D4FF3D39AEFF6F6CC2FF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000D2E0C5FF609430FF609430FF6094 + 30FF639731FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC + 38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FFF5F9F0FFFFFFFFFFFFFFFFFFFDFDFDFFF5F5F5FFF4F4F4FFF4F4F4FFF4F4 + F4FF79AD47FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC + 38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF659B + 32FF609430FF609430FF609430FFB7CEA1FF000000009290D0FF3D39AEFF2F2A + CAFF221CE3FF231EE3FF4744E9FF504CE9FF4845E8FF3938E7FF3938E7FF3938 + E6FF3939DEFF3B3ADDFF4443DCFF4443DCFF4443DDFF4443E5FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E5FF4443DDFF4443DCFF4443DCFF4443 + DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF3B3AE7FF3938 + E6FF3939DEFF3939DDFF3939DDFF4645DFFF4F4BE0FF4744E7FF241EE3FF221C + E3FF2F2AC9FF3D39AEFF9290D0FF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000629332FF609430FF6094 + 30FF609430FF6FAA37FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FFF5F9F0FFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFF5F5F5FFF4F4F4FFF4F4 + F4FF78AC47FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AB38FF6195 + 30FF609430FF609430FF609430FFE1E9D8FF00000000C2C1E4FF3D39AEFF3632 + BCFF221CE3FF221CE3FF3D3CE7FF504CE9FF504CE9FF3F3DE7FF3938E7FF3938 + E7FF3938E6FF3939DEFF4241DCFF4443DCFF4443DCFF4443DDFF4443E5FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E5FF4443DDFF4443DCFF4443 + DCFF4443DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4241E6FF3938E7FF3938 + E7FF3938E6FF3939DEFF3E3DDDFF4E4ADFFF4F4BDFFF3E3CDEFF221CE2FF221C + E3FF3732BBFF3D39AEFFC3C3E5FF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000084AB5BFF609430FF6094 + 30FF609430FF6AA335FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FFF5F9F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFF5F5F5FFF4F4 + F4FF78AC47FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6AA237FF6093 + 30FF609430FF609430FF6C9C3FFF0000000000000000000000003D39ACFF3C38 + B0FF231DE1FF221CE3FF302DE5FF4F4BE9FF504CE9FF4D4AE9FF3A39E7FF3938 + E7FF3938E7FF3938E6FF3D3CDEFF4443DCFF4443DCFF4443DCFF4443DDFF4443 + E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E5FF4443DDFF4443 + DCFF4443DCFF4443DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF3C3CE7FF3938E7FF3938 + E7FF3938E7FF3A39E6FF4B49E0FF4F4BDFFF4E4ADFFF312CDBFF241EDAFF231D + E0FF3C38AFFF3D39ACFF00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000ADC795FF609430FF6094 + 30FF609430FF649A32FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA7 + 39FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FFF5F9F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFF5F5 + F5FF78AC47FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF659934FF5E90 + 31FF609430FF609430FF95B773FF0000000000000000000000006765BEFF3D39 + AEFF2B26D1FF221CE3FF2520E4FF4A47E9FF504CE9FF504CE9FF4643E8FF3938 + E7FF3938E7FF3938E7FF3938E6FF4241DDFF4443DCFF4443DCFF4443DCFF4443 + DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E5FF4443 + DDFF4443DCFF4443DCFF4443DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4140E6FF3938E7FF3938E7FF3938 + E7FF3938E7FF4442E8FF504CE8FF4F4BE0FF4847DEFF2722DAFF241ED9FF2C27 + CAFF3D39ADFF6765BFFF00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000E6EEE0FF609430FF6094 + 30FF609430FF609430FF6FAA37FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA7 + 39FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FFF5F9F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFD + FDFF79AD47FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA639FF5F9031FF5E90 + 31FF5F9131FF609430FFCEDDBEFF000000000000000000000000B0ADDCFF3D39 + AEFF3531BEFF221CE3FF221CE3FF3D3AE7FF504CE9FF504CE9FF4F4BE9FF3F3D + E7FF3938E7FF3938E7FF3938E7FF3C3BE6FF4443DDFF4443DCFF4443DCFF4443 + DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E5FF4443DDFF4443DCFF4443DCFF4443DCFF4443DDFF4443E5FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF3C3BE7FF3938E7FF3938E7FF3938 + E7FF3D3CE7FF4F4BE9FF504CE9FF504CE8FF3E3BDEFF241ED9FF241ED9FF3531 + B7FF3D39AAFFAEADDBFF00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000081AA59FF6094 + 30FF609430FF609430FF689F33FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA7 + 39FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FFF5F9F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF7BB247FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF689E36FF5E8F31FF5E90 + 31FF5F9131FF6A993FFF0000000000000000000000000000000000000000403C + AEFF3D39AFFF251FDDFF221CE3FF2923E4FF4D4AE9FF504CE9FF504CE9FF4E4A + E9FF3D3BE7FF3938E7FF3938E7FF3938E7FF3E3EE5FF4443DDFF4443DCFF4443 + DCFF4443DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E5FF4443DDFF4443DCFF4443DCFF4443DCFF4443DDFF4443E5FF4443 + E6FF4443E6FF4443E6FF4443E6FF3E3EE6FF3938E7FF3938E7FF3938E7FF3C3A + E7FF4E4AE9FF504CE9FF504CE9FF4D49E9FF2824E3FF241EDAFF2721D4FF3D39 + AAFF403CAAFF0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000BBCEA7FF6094 + 30FF609430FF609430FF619530FF70AB37FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA7 + 39FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD + 38FFF5F9F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF7CB347FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF639631FF5E9031FF5E90 + 31FF5F9131FFA2BF88FF00000000000000000000000000000000000000008380 + CAFF3D39AEFF312CC6FF221CE3FF221CE3FF3D39E7FF504CE9FF504CE9FF504C + E9FF4E4AE9FF3C3AE7FF3938E7FF3938E7FF3A39E7FF413FE5FF4443DDFF4443 + DCFF4443DCFF4443DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E5FF4443DDFF4443DCFF4443DCFF4443DCFF4443DDFF4443 + E5FF4443E6FF4443E6FF413FE6FF3A39E7FF3938E7FF3938E7FF3C3AE8FF4D4A + E9FF504CE9FF504CE9FF504CE9FF3C3AE7FF221CE3FF221CE2FF322EBDFF3D39 + A9FF817DC4FF0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000006C9B + 42FF609430FF609430FF609430FF689F33FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA7 + 39FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD + 38FFF5F9F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF7CB347FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA7 + 39FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF6AA335FF609430FF609330FF5E90 + 31FF619133FFE9EDE3FF0000000000000000000000000000000000000000DADA + EBFF3C38ABFF3C37B0FF241FDFFF221CE3FF2621E3FF4C48E8FF504CE9FF504C + E9FF504CE9FF4D4AE9FF3B3AE7FF3938E7FF3938E7FF3938E7FF4241E5FF4443 + DDFF4443DCFF4443DCFF4443DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E5FF4443DDFF4443DCFF4443DCFF4443DCFF4443 + DDFF4443E5FF4241E6FF3938E7FF3938E7FF3938E7FF3A39E7FF4C48E9FF504C + E9FF504CE9FF504CE9FF4B48E8FF2722E3FF221CE3FF251EDFFF3C38AFFF3C38 + A7FFD8D7E9FF0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000B5CA + 9EFF5F9131FF609330FF609430FF619530FF6EA836FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC + 38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD + 38FFEDF5E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FEFF76B040FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA7 + 39FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF70AB37FF629630FF609430FF609430FF6093 + 30FF9AB77BFF0000000000000000000000000000000000000000000000000000 + 00007977C2FF3D39ADFF322DC4FF221CE3FF221CE3FF3835E7FF504CE9FF504C + E9FF504CE9FF504CE9FF4D4AE9FF3E3CE7FF3938E7FF3938E7FF3938E7FF413F + E5FF4443DDFF4443DCFF4443DCFF4443DCFF4443DDFF4443E5FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E5FF4443DDFF4443DCFF4443DCFF4443 + DCFF4040DDFF3938E6FF3938E7FF3938E7FF3D3BE7FF4D49E8FF504CE9FF504C + E9FF504CE9FF504CE9FF3935E7FF221CE3FF221CE3FF332EC2FF3D39AEFF7B79 + C6FF000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00006D9B46FF5E9031FF609330FF609430FF649A32FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD + 38FFC6DEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEEB + D0FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA7 + 39FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF679D33FF609430FF609430FF609430FF6496 + 36FFE9EFE2FF0000000000000000000000000000000000000000000000000000 + 0000DDDBEBFF413DA9FF3C38AEFF2822D8FF221CE3FF231EE3FF4844E8FF504C + E9FF504CE9FF504CE9FF504CE9FF4F4BE9FF4341E7FF3938E7FF3938E7FF3A39 + E7FF3F3EE6FF4443DDFF4443DCFF4443DCFF4443DCFF4443DDFF4443E5FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E5FF4443DDFF4443DCFF3E3E + DCFF3A3ADDFF3939DEFF3938E6FF4240E8FF504CE9FF504CE9FF504CE9FF504C + E9FF504CE9FF4844E8FF231EE3FF221CE3FF2823D8FF3D39AFFF413DAEFFE4E2 + F2FF000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C4D5B4FF5E9031FF5E9031FF609330FF609430FF689F33FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC + 38FF7AB245FFF0F6E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FBF7FF8ABA + 58FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA7 + 39FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF6AA335FF609430FF609430FF609430FF609430FFB0C9 + 97FF000000000000000000000000000000000000000000000000000000000000 + 0000000000009897CEFF3D39A8FF3834B7FF221CE2FF221CE3FF2822E4FF4C48 + E9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF4946E9FF3B3AE7FF3938 + E7FF3938E7FF3B3BE6FF4141DDFF4443DCFF4443DCFF4443DCFF4443DDFF4443 + E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4241E5FF3C3BDEFF3939 + DDFF3939DDFF3A3ADEFF4845DFFF504CE8FF504CE9FF504CE9FF504CE9FF504C + E9FF4C49E9FF2822E4FF221CE3FF221CE2FF3834B8FF3D39AEFF9F9DD5FF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000088AB64FF5E8F31FF5E9031FF609330FF609430FF6BA335FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA7 + 39FF71AC38FF7DB448FFCBE1B6FFF8FBF5FFFBFDFAFFD7E8C7FF87B955FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA7 + 39FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD + 38FF71AD38FF6DA736FF619530FF609430FF609430FF609430FF75A14AFF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000005855B2FF3D39A8FF322DC3FF221CE3FF221CE3FF2E2A + E5FF4E4AE9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF4E4BE9FF4542 + E8FF3B3AE7FF3938E7FF3938E6FF3D3BDEFF4241DCFF4443DCFF4443DCFF4443 + DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4443E6FF4443E6FF4443E6FF4241E6FF3D3CE7FF3938E7FF3938E6FF3A39 + DFFF4542DEFF4D4ADFFF4F4BDFFF4F4BE0FF504CE8FF504CE9FF504CE9FF4E4A + E9FF2E29E5FF221CE3FF221CE3FF312DC4FF3D39AEFF5956B9FF000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000E5E9E0FF69953FFF5E8F31FF5E9031FF609330FF619530FF6DA7 + 36FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA7 + 39FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC + 38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD + 38FF6FAA37FF629630FF609430FF609430FF609430FF619432FFDAE6D1FF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000D1D1E4FF413EA8FF3D39A8FF2B26D0FF221CE3FF221C + E3FF3532E6FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504C + E9FF4E4BE9FF4542E8FF3B3AE7FF3938E6FF3939DEFF3B3ADCFF3F3DDDFF4241 + DCFF4443DDFF4443E5FF4443E6FF4443E6FF4443E6FF4443E6FF4443E6FF4443 + E6FF4241E6FF3E3EE7FF3B3AE7FF3938E7FF3938E7FF3A39E8FF4542E8FF4E4A + E8FF4F4BE0FF4F4BDFFF4F4BDFFF4F4BDFFF4F4BE0FF504CE8FF504CE9FF3532 + E5FF221CE3FF221CE3FF2B26D1FF3D39AEFF413DAEFFDBDBEFFF000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C7D5B9FF5D8D30FF5E8F31FF5E9031FF609330FF6296 + 30FF6FAA37FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA7 + 39FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF70AC + 38FF639931FF609430FF609430FF609430FF609430FFB6CC9FFF000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000ABAAD4FF3D3AA8FF3C39AAFF2823D5FF221C + E3FF221CE3FF3935E6FF4F4BE9FF504CE9FF504CE9FF504CE9FF504CE9FF504C + E9FF504CE9FF504CE9FF4F4BE9FF4A47E9FF4341E7FF3D3BDFFF3939DDFF3939 + DDFF3939DDFF3A39DEFF3B3BE6FF3D3CE7FF3D3CE7FF3C3BE6FF3B3AE7FF3938 + E7FF3938E7FF3938E7FF3D3BE8FF4341E8FF4A47E9FF4F4BE9FF504CE9FF504C + E9FF504CE8FF4F4BE0FF4F4BDFFF4F4BDFFF4F4BDFFF4E4BE0FF3935E5FF221C + E3FF221CE3FF2823D6FF3C38B0FF3D39AEFFB3B1DDFF00000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000A8C090FF5E8F31FF5E8F31FF5E9031FF6093 + 30FF629630FF6DA836FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA7 + 39FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6CA538FF6397 + 31FF609430FF609430FF609430FF609430FF93B570FF00000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000008E8DC8FF3D3AA8FF3B38ABFF2721 + D8FF221CE3FF221CE3FF312DE5FF4E4AE9FF504CE9FF504CE9FF504CE9FF504C + E9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE8FF4C4AE0FF4744 + DFFF4442DEFF423FDEFF403FDFFF403DE7FF403DE8FF403FE8FF423FE8FF4442 + E8FF4844E9FF4D4AE9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504C + E9FF504CE9FF504CE8FF4F4BE0FF4F4BDFFF4D4ADFFF332EDBFF241EDAFF221C + E2FF2721D9FF3B37B1FF3D39AEFF9593D1FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000009AB579FF5E8F31FF5E8F31FF5E90 + 31FF609330FF619530FF6BA335FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC38FF6EA7 + 39FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6AA137FF609131FF5E90 + 31FF609330FF609430FF609430FF87AE61FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000807AC2FF3D3AA8FF3B38 + ABFF2823D6FF221CE3FF221CE3FF2A25E3FF4B48E8FF504CE9FF504CE9FF504C + E9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE8FF4F4B + E0FF4F4BDFFF4F4BDFFF4F4BDFFF4F4BE0FF504CE8FF504CE9FF504CE9FF504C + E9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504C + E9FF504CE9FF504CE9FF504CE8FF4A47DFFF2B27DAFF241ED9FF241ED9FF2A26 + CEFF3B38B0FF3D39AEFF8482CAFF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000008EAE6EFF5E8F31FF5E8F + 31FF5E9031FF609330FF609430FF689F33FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AC + 38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AC38FF689E36FF5F9031FF5E8F31FF5E8F + 31FF5E9031FF609330FF80A857FF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000807AC2FF3D3A + A8FF3C39AAFF2B25D0FF221CE3FF221CE3FF2520E3FF4340E8FF4F4BE9FF504C + E9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504C + E8FF4F4BE0FF4F4BDFFF4F4BDFFF4F4BDFFF4F4BE0FF504CE8FF504CE9FF504C + E9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504C + E9FF504CE9FF4F4BE9FF4340E8FF2520E2FF241EDAFF241ED9FF2C28C9FF3C39 + AAFF3D39A8FF8380C9FF00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000009AB579FF5E8F + 31FF5E8F31FF5E9031FF609330FF609430FF659B32FF6EA937FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF70AB37FF669D33FF609330FF5E9031FF5E8F31FF5E8F + 31FF5E8F31FF85A762FF00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008F8C + C9FF3D3AA8FF3D39A8FF312DC4FF221CE2FF221CE3FF221CE3FF2C27E4FF4744 + E9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504C + E9FF504CE8FF4F4BE0FF4F4BDFFF4F4BDFFF4F4BDFFF4F4BE0FF504CE8FF504C + E9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504C + E9FF4744E9FF2C27E4FF221CE3FF221CE3FF221CE1FF332EBDFF3D3AA8FF3D3A + A8FF8E8DC8FF0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000A8C0 + 90FF5D8D30FF5E8F31FF5E9031FF609330FF609430FF619530FF68A034FF70AC + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA739FF71AC + 38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AC38FF6AA234FF619530FF609430FF609430FF609330FF5E9031FF5E8F + 31FF92B072FF0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000ABAAD4FF413EA8FF3D39A8FF3834B7FF2722D8FF221CE3FF221CE3FF221C + E3FF312DE6FF4946E9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504C + E9FF504CE9FF504CE8FF4F4BE0FF4F4BDFFF4F4BDFFF4F4BDFFF4F4BE0FF504C + E8FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF504CE9FF4946E9FF312D + E6FF221CE3FF221CE3FF221CE3FF2722D8FF3834B8FF3D39ADFF413DA9FFABAA + D4FF000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C7D4B7FF69943CFF5E8F31FF5E9031FF609330FF609430FF609430FF6195 + 30FF689F33FF6FAA37FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AC38FF6EA739FF6EA739FF6EA739FF6EA739FF6EA7 + 39FF71AC38FF71AD38FF71AD38FF71AD38FF71AD38FF71AD38FF70AC38FF69A1 + 34FF629730FF609430FF609430FF609430FF609430FF609430FF629433FFB6C8 + A2FF000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000D2D2E4FF5855B2FF3D39A8FF3D39AEFF322EC3FF251EDFFF221C + E3FF221CE3FF221CE3FF2E29E6FF413DE7FF4E49E9FF504CE9FF504CE9FF504C + E9FF504CE9FF504CE9FF504CE8FF4F4BE0FF4F4BDFFF4F4BDFFF4F4BDFFF4F4B + E0FF504CE8FF504CE9FF504CE9FF4E49E9FF413DE7FF2E29E6FF221CE3FF221C + E3FF221CE3FF241FDEFF322DC4FF3C38AFFF3D39AEFF5956B9FFDADAEEFF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000E2E8DDFF83A95FFF5E9031FF5E9031FF609330FF609430FF6094 + 30FF609430FF609430FF659B32FF6BA435FF70AB37FF71AD38FF71AD38FF71AD + 38FF71AD38FF71AD38FF71AD38FF71AC38FF6FA838FF6EA839FF6EA839FF6EA8 + 39FF6FA838FF71AC38FF71AD38FF70AC38FF6CA635FF669C32FF619530FF6094 + 30FF609430FF609430FF609430FF609430FF609430FF78A44FFFDFE9D5FF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000009897CEFF413DA9FF3D39ADFF3C38B0FF312D + C5FF251FDDFF221CE3FF221CE3FF221CE3FF221CE3FF2B26E3FF3935E6FF423E + E7FF4844E9FF4C49E9FF4E4AE9FF4F4BE8FF4E4BE2FF4D4AE1FF4B49E1FF4844 + E1FF423EE0FF3935E5FF2B26E3FF221CE3FF221CE3FF221CE3FF221CE3FF251F + DDFF312CC6FF3C38B0FF3D39AEFF413DAEFF9D9BD5FF00000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000BFD0AFFF6B9840FF5F9131FF609430FF6094 + 30FF609430FF609430FF609430FF609430FF609430FF639931FF689F33FF6AA3 + 35FF6DA736FF6FAA37FF70AB37FF71AC38FF71AB38FF6EA838FF6DA637FF6BA4 + 36FF699F36FF669C34FF649A32FF619530FF609430FF609430FF609430FF6094 + 30FF609430FF609430FF609430FF659636FFB4CB9CFF00000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000DDDBEBFF7977C2FF3C38ABFF3D39 + AEFF3D38AFFF3531BDFF2B27D1FF231DE1FF221CE3FF221CE3FF221CE3FF221C + E3FF221CE3FF221CE3FF221CE3FF221CE3FF221CE2FF231DDDFF231EDDFF231E + DDFF231EDDFF231DDDFF221CE2FF221CE3FF231DE1FF2B26D1FF3531BEFF3D39 + AFFF3D39AEFF3C38ACFF7C79C7FFE4E2F2FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000ABC492FF69983CFF6094 + 30FF609430FF609430FF609430FF609430FF609430FF609430FF609430FF6094 + 30FF609430FF609430FF609430FF609430FF609430FF609430FF5F9230FF5F92 + 31FF5F9231FF5F9231FF5F9230FF609430FF609430FF609430FF609430FF6094 + 30FF609430FF649635FFA2BF84FF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000DCDAEBFF8380 + CAFF403CAEFF3D39AEFF3D39AEFF3C38AFFF3631BBFF2F2AC9FF2A24D4FF2520 + DDFF221CE3FF221CE3FF221CE3FF221CE3FF221CE3FF221CE2FF231DDFFF231D + DEFF2620D8FF2A25D1FF2F2BC6FF3632BBFF3C38B0FF3D39AEFF3D39AEFF403C + AEFF8380CAFFE0DEF0FF00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000B4CB + 9FFF78A44FFF609430FF609430FF609430FF609430FF609430FF609430FF6094 + 30FF609430FF609430FF609430FF609430FF609430FF609430FF609430FF5F93 + 30FF5F9230FF5F9230FF5F9230FF5F9330FF609430FF609430FF609430FF709F + 46FFABC591FF0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000B0ADDCFF6765BEFF3D39ACFF3D39AEFF3D39AEFF3D39AEFF3D39 + AEFF3C38B0FF3936B5FF3834B7FF3733BAFF3733BAFF3834B7FF3936B5FF3C38 + AEFF3D39ACFF3D39ACFF3D39ACFF3D39ACFF3D39ACFF6765BFFFB0ADDCFF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000DFE9D5FFA4C189FF79A550FF5F922FFF609430FF609430FF6094 + 30FF609430FF609430FF609430FF609430FF609430FF609430FF609430FF6094 + 30FF609330FF609330FF609330FF609330FF73A04AFF9DBC7DFFD4E2C8FF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C2C1E4FF9290D0FF6D6AC1FF504C + B4FF3D39AEFF3D39AEFF3D39AEFF3D39AEFF3D39AEFF3D39AEFF3D39AEFF3D39 + AEFF504CB4FF6C69C0FF918FCEFFC1C1E2FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C8DAB8FFADC693FF95B7 + 73FF7DA856FF709F46FF6A993BFF619432FF609331FF68993AFF6F9D43FF79A5 + 52FF92B46DFFA9C48EFFC3D6B1FF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000E4E4F3FFDADAEEFFD2D0EBFFD2D0EBFFDADAEEFFE4E4F3FF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000000010000400000000100010000000000000800000000000000000000 + 000000000000000000000000FFFFFF0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000} + end + object tblZavadyIO: TVirtualTable + AfterPost = tblZavadyIOAfterPost + AfterDelete = tblZavadyIOAfterDelete + Left = 18 + Top = 466 + Data = {04000000000000000000} + object StringField1: TStringField + FieldName = 'KodZavady' + Required = True + Size = 15 + end + object StringField2: TStringField + FieldName = 'Popis' + Size = 100 + end + object FloatField1: TFloatField + FieldName = 'Mnozstvi' + Required = True + end + object tblNeodvadet: TBooleanField + FieldName = 'Neodvadet' + Required = True + end + end + object dsZavadyIO: TDataSource + DataSet = tblZavadyIO + Left = 96 + Top = 466 + end + object tblEvid: TVirtualTable + AfterPost = tblAfterPost + AfterDelete = tblAfterDelete + Left = 12 + Top = 556 + Data = {04000000000000000000} + object tblEvidDatum: TDateField + Alignment = taCenter + FieldName = 'Datum' + end + object tblEvidZamest: TStringField + FieldName = 'Zamest' + Size = 80 + end + object tblEvidMnoz: TFloatField + FieldName = 'Mnoz' + end + end + object dsEvid: TDataSource + DataSet = tblEvid + Left = 90 + Top = 553 + end +end diff --git a/frmEvidOper.pas b/frmEvidOper.pas new file mode 100644 index 0000000..cb72ad1 --- /dev/null +++ b/frmEvidOper.pas @@ -0,0 +1,1262 @@ +unit frmEvidOper; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, + Vcl.Dialogs, ddPlugin_TLB, Vcl.StdCtrls, TBPackageU, Vcl.ExtCtrls, Data.DB, MemDS, VirtualTable, NxGridView6, NxColumns6, + NxControls6, NxCustomGrid6, NxVirtualGrid6, NxDBGrid6, NxDBColumns6, NxTypes6, Vcl.Mask, RzEdit, System.ImageList, + Vcl.ImgList, Vcl.ComCtrls, frmVstupDat, AdvTouchKeyboard, RxToolEdit, RzButton, RzRadChk; + +const + CRLF = #13#10; + tblDavky = '[dbo].[_hdc_TabDavky]'; + KLF_ACTIVATE = $00000001; + KLF_SETFORPROCESS = $00000100; + + +type + TTBVirtualTable = class helper for TVirtualTable + published + function IsFirstRecord: boolean; + function IsLastRecord: boolean; + end; + + TOperace = record + id, idPrikaz: Integer; + doklad: Integer; + alt, skupzbo, regcis, operace, nazev, idEvidence: string; + ksZadane, ksZive, ksZmetky: extended; + odvadeci: boolean; + end; + + TformEvidOper = class(TForm) + edtBarCode: TLabeledEdit; + lblDavka: TLabel; + selBarCode: TButtonedEdit; + tbl: TVirtualTable; + dsZavady: TDataSource; + tblKodZavady: TStringField; + tblPopis: TStringField; + tblMnozstvi: TFloatField; + grd: TNextDBGrid6; + view: TNxReportGridView6; + edtCisZam: TLabeledEdit; + selCisZam: TButtonedEdit; + lblZamest: TLabel; + edtDobreKs: TRzNumericEdit; + Label2: TLabel; + colKod: TNxDBTextColumn6; + colPopis: TNxDBTextColumn6; + colMnozstvi: TNxDBNumberColumn6; + btnOK: TButton; + btnZrusit: TButton; + btnAdd: TButton; + imgList: TImageList; + lblOperace: TLabel; + edtBarCode2: TLabeledEdit; + selBarCode2: TButtonedEdit; + pgCtrlZavady: TPageControl; + shNeopravitelne: TTabSheet; + shInterneOpravitelne: TTabSheet; + tblZavadyIO: TVirtualTable; + StringField1: TStringField; + StringField2: TStringField; + FloatField1: TFloatField; + tblNeodvadet: TBooleanField; + dsZavadyIO: TDataSource; + grdIO: TNextDBGrid6; + viewIO: TNxReportGridView6; + colKod2: TNxDBTextColumn6; + colPopis2: TNxDBTextColumn6; + colMnozstvi2: TNxDBNumberColumn6; + btnAddIO: TButton; + lblZapisDat: TLabel; + pnlCalc: TPanel; + tKeyb: TAdvTouchKeyboard; + edtNumVal: TRzNumericEdit; + btnCalcClose: TButton; + lblPnl: TLabel; + lblMaloOperaci: TLabel; + lblZmetky: TLabel; + cbOpakTrideni: TRzCheckBox; + shEvid: TTabSheet; + tblEvid: TVirtualTable; + dsEvid: TDataSource; + tblEvidDatum: TDateField; + tblEvidZamest: TStringField; + tblEvidMnoz: TFloatField; + grdEvid: TNextDBGrid6; + colEvidDatum: TNxDBDateColumn6; + colEvidZamest: TNxDBTextColumn6; + colEvidMnoz: TNxDBNumberColumn6; + viewEvid: TNxReportGridView6; + procedure FormShow(Sender: TObject); + procedure btnAddClick(Sender: TObject); + procedure edtBarCodeExit(Sender: TObject); + procedure selBarCodeClick(Sender: TObject); + procedure edtCisZamExit(Sender: TObject); + procedure btnOKClick(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure grdCellClick(Sender: TObject; ACol, ARow: Integer; Button: TMouseButton); + procedure btnZrusitClick(Sender: TObject); + procedure edtBarCode2Exit(Sender: TObject); + procedure selBarCode2Click(Sender: TObject); + procedure btnAddIOClick(Sender: TObject); + procedure grdIOCellClick(Sender: TObject; ACol, ARow: Integer; Button: TMouseButton); + procedure colKodDrawBackground(Sender: TObject; ACol, ARow: Integer; CellRect: TRect; State: TNxCellPaintingState); + procedure tKeybKeyClick(Sender: TObject; Index: Integer); + procedure tKeybKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure btnCalcCloseClick(Sender: TObject); + procedure edtDobreKsEnter(Sender: TObject); + procedure edtCisZamKeyPress(Sender: TObject; var Key: Char); + procedure edtNumValKeyPress(Sender: TObject; var Key: Char); + procedure edtBarCode2KeyPress(Sender: TObject; var Key: Char); + procedure edtBarCodeKeyPress(Sender: TObject; var Key: Char); + procedure edtDobreKsChange(Sender: TObject); + procedure tblAfterPost(DataSet: TDataSet); + procedure tblZavadyIOAfterPost(DataSet: TDataSet); + procedure tblAfterDelete(DataSet: TDataSet); + procedure tblZavadyIOAfterDelete(DataSet: TDataSet); + procedure cbOpakTrideniClick(Sender: TObject); + private + procedure VypocetKs; + public + Helios: IHelios; + jeTest: boolean; + filtrRada: string; + end; + +var + formEvidOper: TformEvidOper; + fVstDat: TformVstupDat; + oVar: OleVariant; + operace: TOperace; + evidID, pomText: string; + idVOp, idDavky, druhDavky: integer; + idZavadaLouh: integer; + VPrDavky: string; + kodZavady, popisZavady, podm: string; + exitKeyb: boolean; + calcAkce: byte; // 1 - edit Dobre ks / 2 - Neopravitelne / 3 - Interne Opravitelne + calcMnozEdit: boolean; + aktRowNum: integer; + davkaZbytekOp, origChciEvid, zmetky, zmetkyIO, zmetkyNeodv: Extended; + chciEvidVic: boolean; + +implementation +uses System.StrUtils, helUtils; + +{$R *.dfm} + + + function TTBVirtualTable.IsFirstRecord: Boolean; + begin + result:= False; + if (recNo=1) then + result:= true; + end; + + + function TTBVirtualTable.IsLastRecord: Boolean; + begin + result:= False; + if (recNo=RecordCount) then + result:= true; + end; + + + + + procedure TformEvidOper.btnAddClick(Sender: TObject); + var i: integer; + begin + podm:= 'TabCZavad.Blokovano=0 AND LEFT(TabCZavad.kod,1)<>N''V'''; + if (tbl.RecordCount>0) then + begin + podm:= podm + ' AND TabCZavad.Kod NOT IN ('; + i:= tbl.RecNo; + grd.DataSource.DataSet.DisableControls; + tbl.First; + while not(tbl.Eof) do + begin + podm:= podm + 'N' + QuotedStr(tbl.FieldByName('KodZavady').AsString) + ','; + tbl.Next; + end; + tbl.RecNo:= i; + grd.DataSource.DataSet.EnableControls; + SetLength(podm, Length(podm)-1); + podm:= podm + ')'; + end; +{ + if (filtrRada<>'') then + begin + podm:= podm + ' AND CONVERT(nvarchar(200), TabCZavad.Poznamka) LIKE '; + if (LeftStr(filtrRada,3)='224') then + podm:= podm + 'N''%KONEN%'''; + end; +} + kodZavady:= ''; + popisZavady:= ''; + if Helios.Prenos(11015, 'kod', oVar, podm, 'Vyberte typ ZVADY', true) then + kodZavady:= VarToStr(oVar); +{ + kodZavady:= ''; + pnlCalc.Visible:= true; + btnOK.Enabled:= false; + btnZrusit.Enabled:= false; + lblPnl.Caption:= 'Kd zvady'; + calcAkce:= 4; + calcMnozEdit:= false; + + tKeyb.Visible:= true; + tKeyb.Width:= 330; + tKeyb.Height:= 305; + edtNumVal.SetFocus; + pnlCalc.Repaint; +} + +// kod:= Trim(InputBox('Zadejte kd ZVADY', 'Kd:', '')); + if (kodZavady<>'') then + begin + if (tbl.Locate('KodZavady', VarArrayOf([kodZavady]), [loCaseInsensitive])) then + Helios.Error(#1'Tuto zvadu jste ji zadali.'#1) + else + with Helios.OpenSQL('SELECT nazev FROM ' + tblCZavad + ' WHERE kod=N' + QuotedStr(kodZavady)) do + if (RecordCount<>1) then + Helios.Error(#1'Nebyl nalezen zadan kd ZVADY'#1) + else + begin + popisZavady:= VarToStr(FieldValues(0)); + pnlCalc.Visible:= true; + btnOK.Enabled:= false; + btnZrusit.Enabled:= false; + lblPnl.Caption:= 'Mnostv zvady ' + kodZavady; + calcAkce:= 2; + calcMnozEdit:= false; + edtNumVal.Value:= 0; + edtNumVal.SelectAll; + tKeyb.Visible:= true; + tKeyb.Width:= 330; + tKeyb.Height:= 305; + edtNumVal.SetFocus; + pnlCalc.Repaint; + end; + end; + end; + + + + + procedure TformEvidOper.btnAddIOClick(Sender: TObject); + var i: integer; + begin + podm:= 'TabCZavad.Blokovano=0 AND LEFT(TabCZavad.kod,1)=N''V'''; + if (tblZavadyIO.RecordCount>0) then + begin + podm:= podm + ' AND TabCZavad.Kod NOT IN ('; + i:= tblZavadyIO.RecNo; + grd.DataSource.DataSet.DisableControls; + tblZavadyIO.First; + while not(tblZavadyIO.Eof) do + begin + podm:= podm + 'N' + QuotedStr(tblZavadyIO.FieldByName('KodZavady').AsString) + ','; + tblZavadyIO.Next; + end; + tblZavadyIO.RecNo:= i; + grd.DataSource.DataSet.EnableControls; + SetLength(podm, Length(podm)-1); + podm:= podm + ')'; + end; + +{ + if (filtrRada<>'') then + begin + podm:= podm + ' AND CONVERT(nvarchar(200), TabCZavad.Poznamka) LIKE '; + if (LeftStr(filtrRada,3)='224') then + podm:= podm + 'N''%KONEN%'''; + end; +} + kodZavady:= ''; + if Helios.Prenos(11015, 'kod', oVar, podm, 'Vyberte typ ZVADY', true) then + kodZavady:= VarToStr(oVar); +// kod:= Trim(InputBox('Zadejte kd ZVADY', 'Kd:', '')); + if (kodZavady<>'') then + begin + if (tblZavadyIO.Locate('KodZavady', VarArrayOf([kodZavady]), [loCaseInsensitive])) then + Helios.Error(#1'Tuto zvadu jste ji zadali.'#1) + else + with Helios.OpenSQL('SELECT nazev FROM ' + tblCZavad + ' WHERE kod=N' + QuotedStr(kodZavady)) do + if (RecordCount<>1) then + Helios.Error(#1'Nebyl nalezen zadan kd ZVADY'#1) + else + begin + popisZavady:= VarToStr(FieldValues(0)); + pnlCalc.Visible:= true; + btnOK.Enabled:= false; + btnZrusit.Enabled:= false; + lblPnl.Caption:= 'Mnostv zvady ' + kodZavady; + calcAkce:= 3; + calcMnozEdit:= false; + edtNumVal.Value:= 0; + edtNumVal.SelectAll; + tKeyb.Visible:= true; + tKeyb.Width:= 330; + tKeyb.Height:= 305; + edtNumVal.SetFocus; + pnlCalc.Repaint; + end; + end; + end; + + + + + procedure TformEvidOper.btnOKClick(Sender: TObject); + var lSQL, compName, zmetkyAll: string; + ksOK, koefDavkaOK: extended; + pomNum, allNum: Integer; + begin + if (edtCisZam.Text='') then + begin + Helios.Error(#1'Nen zadn zamstnanec.'#1); + edtCisZam.SelectAll; + edtCisZam.SetFocus; + Exit; + end; + if (idVOp>0) then + begin + lblZapisDat.Visible:= true; + self.Repaint; + + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabEvidPracePlg'') IS NOT NULL DELETE FROM dbo._temp_TabEvidPracePlg WHERE Stanice=HOST_NAME()' + CRLF; + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabEvidPraceZavadyPlg'') IS NOT NULL DELETE FROM dbo._temp_TabEvidPraceZavadyPlg WHERE Stanice=HOST_NAME()' + CRLF; + Helios.ExecSQL(lSQL); + + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabEvidPracePlg'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabEvidPracePlg) DROP TABLE dbo._temp_TabEvidPracePlg' + CRLF; + Helios.ExecSQL(lSQL); + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabEvidPraceZavadyPlg'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabEvidPraceZavadyPlg) DROP TABLE dbo._temp_TabEvidPraceZavadyPlg' + CRLF; + Helios.ExecSQL(lSQL); + + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabEvidPracePlg'') IS NOT NULL DROP TABLE #TabEvidPracePlg' + CRLF + 'CREATE TABLE #TabEvidPracePlg (TypOdvodu TINYINT, IDDavky INT, IDOperace INT'; + lSQL:= lSQL + ', IDPrikaz INT, kusy_dobre NUMERIC(19,6) DEFAULT 0.0 NOT NULL, kusy_zavada NUMERIC(19,6) DEFAULT 0.0 NOT NULL, OpakovanaOperace BIT DEFAULT 0, CisloZam INT NOT NULL'; + lSQL:= lSQL + ', CilovePrikazy NVARCHAR(2000) DEFAULT N'''', Autor NVARCHAR(80) DEFAULT SUSER_SNAME(), Stanice NVARCHAR(100) DEFAULT HOST_NAME())' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''tempdb..#TabEvidPraceZavadyPlg'') IS NOT NULL DROP TABLE #TabEvidPraceZavadyPlg' + CRLF + 'CREATE TABLE #TabEvidPraceZavadyPlg (KodZavady'; + lSQL:= lSQL + ' NVARCHAR(15) NOT NULL, Mnozstvi NUMERIC(19,6) DEFAULT 0.0 NOT NULL, JeInterneOprav BIT DEFAULT 0, Neodvadet BIT DEFAULT 0, Autor NVARCHAR(80) DEFAULT SUSER_SNAME()'; + lSQL:= lSQL + ', Stanice NVARCHAR(100) DEFAULT HOST_NAME())'; + if (jeTest) then + begin + lSQL:= StringReplace(lSQL, '#TabEvidPrace', 'dbo._temp_TabEvidPrace', [rfReplaceAll]); + lSQL:= StringReplace(lSQL, 'tempdb..', '', [rfReplaceAll]); + end; + Helios.ExecSQL(lSQL); + +{ + ksOK:= edtDobreKs.Value; + if (zmetky<=edtDobreKs.Value) then + ksOK:= edtDobreKs.Value - zmetky; + if (zmetky>edtDobreKs.Value) then + ksOK:= 0; + if (edtDobreKs.Value-zmetky>0) then +} + ksOK:= edtDobreKs.Value - zmetky - zmetkyNeodv; + + koefDavkaOK:= 1; + if (davkaZbytekOp0) then + begin + if (koefDavkaOK<>1) then + begin + pomNum:= Trunc(pomNum * koefDavkaOK); + if (tbl.RecNo=tbl.RecordCount) then + pomNum:= allNum + else + allNum:= allNum - pomNum; + end; + + if (pomNum>0) then + begin + lSQL:= 'INSERT #TabEvidPraceZavadyPlg (KodZavady, Mnozstvi, JeInterneOprav) SELECT N' + QuotedStr(tbl.FieldByName('KodZavady').AsString) + ', '; + lSQL:= lSQL + StringReplace(pomNum.ToString, ',', '.' ,[rfReplaceAll]) + ', 0'; + if (jeTest) then + lSQL:= StringReplace(lSQL, '#TabEvidPrace', 'dbo._temp_TabEvidPrace', [rfReplaceAll]); + Helios.ExecSQL(lSQL); + end; + end; + tbl.Next; + end; + + tblZavadyIO.First; + allNum:= Trunc(zmetkyIO); + while not(tblZavadyIO.Eof) do + begin + pomNum:= tblZavadyIO.FieldByName('Mnozstvi').AsInteger; + if (pomNum>0) then + begin + if (koefDavkaOK<>1) then + begin + pomNum:= Trunc(pomNum * koefDavkaOK); + if (tblZavadyIO.RecNo=tblZavadyIO.RecordCount) then + pomNum:= allNum + else + allNum:= allNum - pomNum; + end; + + if (pomNum>0) then + begin + lSQL:= 'INSERT #TabEvidPraceZavadyPlg (KodZavady, Mnozstvi, JeInterneOprav, Neodvadet) SELECT N' + QuotedStr(tblZavadyIO.FieldByName('KodZavady').AsString) + ', '; + lSQL:= lSQL + StringReplace(pomNum.ToString, ',', '.' ,[rfReplaceAll]) + ', 1, ' + IfThen(tblZavadyIO.FieldByName('Neodvadet').AsBoolean, '1', '0'); + if (jeTest) then + lSQL:= StringReplace(lSQL, '#TabEvidPrace', 'dbo._temp_TabEvidPrace', [rfReplaceAll]); + Helios.ExecSQL(lSQL); + end; + end; + tblZavadyIO.Next; + end; + + lSQL:= 'UPDATE #TabEvidPracePlg SET kusy_zavada=' + StringReplace(FloatToStr(zmetky + zmetkyIO + zmetkyNeodv), ',', '.', [rfReplaceAll]) + ' WHERE Stanice=HOST_NAME()'; + if (jeTest) then + lSQL:= StringReplace(lSQL, '#TabEvidPrace', 'dbo._temp_TabEvidPrace', [rfReplaceAll]); + Helios.ExecSQL(lSQL); + + if not(jeTest) then + begin + lSQL:= 'IF OBJECT_ID(N''dbo.ep_Vyroba_EvidPracePlg'') IS NOT NULL EXEC dbo.ep_Vyroba_EvidPracePlg'; + try + Helios.ExecSQL(lSQL); + except on E:Exception do + Helios.Error(#1 + E.Message + #1); + end; + end; + Close; + end + else + begin + Helios.Error(#1'Nen natena Dvka nebo Operace.'#1); + if (idVOp=0) then + edtBarCode2.SetFocus; + if (idDavky=0) then + edtBarCode.SetFocus; + end; + end; + + + + + procedure TformEvidOper.btnZrusitClick(Sender: TObject); + begin + Close; + end; + + + + + procedure TformEvidOper.cbOpakTrideniClick(Sender: TObject); + var ksLouh, ksLouhEvid: extended; + begin + if (cbOpakTrideni.Checked) and (operace.id>0) and (operace.skupzbo.ToUpper='P41') and (AnsiContainsText(operace.nazev, 'tdn')) then + begin + lSQL:= 'SELECT SUM(Mnozstvi) FROM dbo._hdc_TabZmetkyPredpoklad WHERE IDMzdy IN (' + operace.idEvidence + ') AND IDZavady=' + idZavadaLouh.ToString; + ksLouh:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + operace.ksZive:= ksLouh; + lSQL:= 'SELECT SUM(z.kusy_odv) FROM ' + tblMzdZm + ' z LEFT JOIN ' + tblMzdZmE + ' e ON (e.ID=z.ID) INNER JOIN ' + tblPrPost + ' p ON (p.Doklad=z.DokladPrPostup'; + lSQL:= lSQL + ' AND p.Alt=z.AltPrPostup AND p.IDPrikaz=z.IDPrikaz) WHERE z.IDPrikaz=' + operace.idPrikaz.ToString + ' AND p.Odvadeci=1'; + lSQL:= lSQL + ' AND e._OpakovanaKontrola=1'; + ksLouhEvid:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + davkaZbytekOp:= ksLouh - ksLouhEvid; + lblOperace.Caption:= Trim(operace.operace) + ' / ' + operace.nazev + ' *** ' + operace.skupzbo + ' ' + operace.nazev; + lblOperace.Caption:= lblOperace.Caption + ' / v dvce zbv ' + StringReplace(davkaZbytekOp.ToString, ',', '.', [rfReplaceAll]) + ' oper.'; + if (davkaZbytekOp=0) then + lblOperace.Font.Color:= clRed + else + lblOperace.Font.Color:= clWindowText; + edtCisZam.SetFocus; + end; + end; + + + + + procedure TformEvidOper.colKodDrawBackground(Sender: TObject; ACol, ARow: Integer; CellRect: TRect; State: TNxCellPaintingState); + var lSQL: string; + begin + if (ARow=0) then + lSQL:= ''; + end; + + + + + procedure TformEvidOper.edtBarCode2Exit(Sender: TObject); + var lSQL, dokl, alt: string; + ksZive: Extended; + begin + edtBarcode2.Text:= Trim(edtBarcode2.Text); + edtBarcode2.Text:= helUtils.StripChars(edtBarcode2.Text, ['''', '"', '-', ';', ' ', '=']); + if (edtBarCode2.Text='') then + Exit; + if (LeftStr(edtBarCode2.Text,1).ToLower<>'a') then + begin + Helios.Error(#1 + 'Kd Operace mus zanat psmenem A' + #1); + edtBarCode2.Text:= ''; + edtBarCode2.SetFocus; + end + else + begin + operace.id:= 0; + operace.doklad:= 0; + operace.alt:= ''; + operace.operace:= ''; + operace.nazev:= ''; + operace.ksZadane:= 0; + operace.ksZive:= 0; + operace.ksZmetky:= 0; + operace.idEvidence:= '0'; + operace.odvadeci:= false; + idVOp:= 0; + lblOperace.Caption:= ''; + idVOp:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND BarCode=N' + edtBarcode2.Text.QuotedString); + if (idVOp>0) then + begin + operace.id:= idVOp; + lSQL:= 'SELECT o.operace, o.Nazev, k.SkupZbo, k.RegCis FROM ' + tblPrPost + ' o INNER JOIN ' + tblPrikaz + ' p ON (p.ID=o.IDPrikaz) INNER JOIN '; + lSQL:= lSQL + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE o.IDOdchylkyDo IS NULL AND (o.ID=' + idVOp.ToString + ' OR o.ID1=' + idVOp.ToString + ')'; + with Helios.OpenSQL(lSQL) do + begin + operace.operace:= VarToStr(FieldValues(0)); + operace.nazev:= Trim(VarToStr(FieldValues(1))); + operace.skupzbo:= VarToStr(FieldValues(2)); + operace.regcis:= VarToStr(FieldValues(3)); + lblOperace.Caption:= Trim(operace.operace) + ' / ' + operace.nazev + ' *** ' + operace.skupzbo + ' ' + operace.nazev; + if (AnsiContainsText(operace.nazev, 'tdn')) and (operace.skupzbo.ToUpper='P41') then + cbOpakTrideni.Visible:= true; + end; + with Helios.OpenSQL('SELECT Kusy_zad, Doklad, Alt, IDPrikaz, Odvadeci FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND (ID=' + idVOp.ToString + ' OR ID1=' + idVOp.ToString + ')') do + begin + operace.ksZadane:= StrToFloat(StringReplace(VarToStr(FieldValues(0)),',','.',[rfReplaceAll])); + operace.doklad:= StrToInt(VarToStr(FieldValues(1))); + operace.alt:= VarToStr(FieldValues(2)); + operace.idPrikaz:= StrToInt(VarToStr(FieldValues(3))); + operace.odvadeci:= StrToBool(VarToStr(FieldValues(4))); + lSQL:= 'SELECT STRING_AGG(ID, '','') FROM ' + tblMzdZm + ' WHERE IDPrikaz=' + operace.idPrikaz.ToString + ' AND DokladPrPostup=' + operace.doklad.ToString; + lSQL:= lSQL + ' AND AltPrPostup=N' + QuotedStr(operace.alt); + operace.idEvidence:= helUtils.getHeliosStrVal(Helios, '0', lSQL); + end; + if (VPrDavky='') then + begin + lSQL:= 'SELECT STRING_AGG(IDPrikaz, N'','') FROM ' + tblDavky + ' WHERE ID=' + idDavky.ToString + ' OR IDRodic=' + idDavky.ToString; + VPrDavky:= helUtils.getHeliosStrVal(Helios, '', lSQL); + if (VPrDavky<>'') then + begin + podm:= 'TabPrPostup.IDPrikaz IN (SELECT IDPrikazVyssi FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi IS NOT NULL AND ID IN (' + VPrDavky + '))'; + lSQL:= 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi IS NOT NULL AND ID IN (' + VPrDavky + ')'; + VPrDavky:= helUtils.getHeliosStrVal(Helios, '', lSQL); + end; + end; + + if (druhDavky=4) and (VPrDavky<>'') then + begin + lSQL:= 'SELECT TOP(1) k.SkupZbo FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.ID IN (' + VPrDavky + ')'; + lSQL:= helUtils.getHeliosStrVal(Helios, '', lSQL); + if (lSQL='P41') and (operace.skupZbo='P42') then + VPrDavky:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE ID IN (' + VPrDavky + ')'); + if ((lSQL='P42') or (lSQL='P41')) and (operace.skupZbo='P43') then + VPrDavky:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE ID IN (' + VPrDavky + ')'); + if (lSQL='P41') and (operace.skupZbo='VOD') then + begin + VPrDavky:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE ID IN (' + VPrDavky + ')'); + lSQL:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE ID IN (' + VPrDavky + ')'); + if (lSQL<>'') then + VPrDavky:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE ID IN (' + VPrDavky + ')'); + end; + end; + + if (VPrDavky='') then + VPrDavky:= helUtils.getHeliosStrVal(Helios, '', 'SELECT IDPrikaz FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND ID=' + idVOp.ToString); + + lSQL:= 'SELECT SUM(Kusy_zive) FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND Doklad=' + operace.doklad.ToString + ' AND Alt=N' + operace.alt.QuotedString; + if (VPrDavky<>'') then + lSQL:= lSQL + ' AND IDPrikaz IN (' + VPrDavky + ')'; + davkaZbytekOp:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + operace.ksZive:= davkaZbytekOp; + + pgCtrlZavady.Pages[shEvid.PageIndex].TabVisible:= false; + pgCtrlZavady.Invalidate; + tblEvid.Clear; + lSQL:= 'SELECT e.Datum_X, z.PrijmeniJmeno, SUM(e.kusy_odv) FROM ' + tblMzdZm + ' e INNER JOIN ' + tblCZam + ' z ON (z.ID=e.Zamestnanec)'; + if (cbOpakTrideni.Checked) then + lSQL:= lSQL + ' INNER JOIN ' + tblMzdZmE + ' ee ON (ee.ID=e.ID AND ee._OpakovanaKontrola=1)'; + lSQL:= lSQL + ' WHERE e.IDPrikaz IN (' + VPrDavky + ') AND e.DokladPrPostup=' + operace.doklad.ToString + ' AND e.AltPrPostup=N' + QuotedStr(operace.alt); + lSQL:= lSQL + ' GROUP BY e.Datum_X, z.PrijmeniJmeno ORDER BY e.Datum_X DESC'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + First; + while not(EOF) do + begin + tblEvid.Append; + tblEvid.FieldByName('Datum').AsDateTime:= StrToDate(VarToStr(FieldValues(0))); + tblEvid.FieldByName('Zamest').AsString:= VarToStr(FieldValues(1)); + tblEvid.FieldByName('Mnoz').AsFloat:= StrToFloat(VarToStr(FieldValues(2))); + tblEvid.Post; + Next; + end; + grdEvid.Sort(0, skDescending); + pgCtrlZavady.Pages[shEvid.PageIndex].TabVisible:= true; + end; + + lblOperace.Caption:= lblOperace.Caption + ' / v dvce zbv ' + StringReplace(davkaZbytekOp.ToString, ',', '.', [rfReplaceAll]) + ' oper.'; + if (davkaZbytekOp=0) then + lblOperace.Font.Color:= clRed + else + lblOperace.Font.Color:= clWindowText; + + edtCisZam.SetFocus; + end + else + Helios.Error(#1'Zadan kd Operace nebyl nalezen.'#1); + end; + end; + + + + + procedure TformEvidOper.edtBarCode2KeyPress(Sender: TObject; var Key: Char); + begin + if (Ord(key)=VK_RETURN) then + edtBarCode2Exit(Sender); + end; + + + + + procedure TformEvidOper.edtBarCodeExit(Sender: TObject); + var lSQL: string; + begin + edtBarcode.Text:= Trim(edtBarcode.Text); + edtBarcode.Text:= helUtils.StripChars(edtBarcode.Text, ['''', '"', '-', ';', ' ']); + idDavky:= 0; + if (edtBarcode.Text<>'') then + begin + edtBarCode2.Text:= ''; + lblOperace.Caption:= ''; + lblZmetky.Caption:= ''; + lblMaloOperaci.Visible:= false; + cbOpakTrideni.Checked:= false; + cbOpakTrideni.Visible:= false; + tbl.Clear; + tblZavadyIO.Clear; + tblEvid.Clear; + druhDavky:= -1; + lblDavka.Caption:= ''; + idDavky:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ISNULL(IDRodic, ID) FROM ' + tblDavky + ' WHERE KodDavky2=N' + edtBarCode.Text.QuotedString); + if (idDavky=0) then + idDavky:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ISNULL(IDRodic, ID) FROM ' + tblDavky + ' WHERE KodDavky=' + edtBarcode.Text); + if (idDavky>0) then + begin + lSQL:= 'SELECT DruhDavky, Rok, Cislo FROM ' + tblDavky + ' WHERE ID=' + idDavky.ToString; + with Helios.OpenSQL(lSQL) do + begin + druhDavky:= StrToInt(VarToStr(FieldValues(0))); + lblDavka.Caption:= 'Dvka '; + case druhDavky of + 1: lblDavka.Caption:= lblDavka.Caption + 'VOSK'; + 2: lblDavka.Caption:= lblDavka.Caption + 'OBALOVNA'; + 3: lblDavka.Caption:= lblDavka.Caption + 'TAVRNA'; + 4: lblDavka.Caption:= lblDavka.Caption + 'KONEN'; + 5: lblDavka.Caption:= lblDavka.Caption + 'KONEN intern'; + 6: lblDavka.Caption:= lblDavka.Caption + 'OBROBNA'; + end; + lblDavka.Caption:= lblDavka.Caption + ' - ' + VarToStr(FieldValues(1)) + ' / ' + VarToStr(FieldValues(2)); + end; + + lSQL:= 'SELECT STRING_AGG(IDPrikaz, N'','') FROM ' + tblDavky + ' WHERE ID=' + idDavky.ToString + ' OR IDRodic=' + idDavky.ToString; + VPrDavky:= helUtils.getHeliosStrVal(Helios, '', lSQL); + if (VPrDavky<>'') then + begin + podm:= 'TabPrPostup.IDPrikaz IN (SELECT IDPrikazVyssi FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi IS NOT NULL AND ID IN (' + VPrDavky + '))'; + lSQL:= 'SELECT STRING_AGG(p.IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen)'; + lSQL:= lSQL + ' WHERE p.IDPrikazVyssi IS NOT NULL AND p.ID IN (' + VPrDavky + ')'; +// if (druhDavky=4) then +// lSQL:= lSQL + ' AND k.SkupZbo=N''P41'''; + VPrDavky:= helUtils.getHeliosStrVal(Helios, '', lSQL); + end; + +{ + if (druhDavky=4) and (VPrDavky<>'') then + begin + lSQL:= 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi IS NOT NULL AND ID IN (' + VPrDavky + ')'; + lSQL:= lSQL + ' AND EXISTS(SELECT k.ID FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.ID IN (' + VPrDavky + ')'; + lSQL:= lSQL + ' AND k.SkupZbo=N''P41'')'; + VPrDavky:= helUtils.getHeliosStrVal(Helios, '', lSQL); + end; +} + edtBarCode2.SetFocus; + end + else + Helios.Error(#1'Zadan kd Dvky nebyl nalezen.'#1); + end; + end; + + + + + procedure TformEvidOper.edtBarCodeKeyPress(Sender: TObject; var Key: Char); + begin + if (Ord(key)=VK_RETURN) then + edtBarCodeExit(Sender); + end; + + + + + procedure TformEvidOper.edtCisZamExit(Sender: TObject); + begin + lblZamest.Caption:= ''; + edtCisZam.Text:= StringReplace(Trim(edtCisZam.Text), ' ', '', [rfReplaceAll]); + edtCisZam.Text:= helUtils.StripChars(edtCisZam.Text, ['''', '"', '-', ';', ' ']); + edtCisZam.Text:= helUtils.RemoveWords(edtCisZam.Text, ['null']); + edtCisZam.Text:= helUtils.RemoveAlphas(edtCisZam.Text); + + if not(IsNumeric(edtCisZam.Text)) then + begin + Helios.Error(#1'Kd zamstnance mus bt seln'#1); + edtCisZam.Text:= ''; + edtCisZam.SetFocus; + end + else + if (edtCisZam.Text<>'') then + begin + if (helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblCZam + ' WHERE Cislo=' + edtCisZam.Text)=0) then + begin + Helios.Error(#1'Osobn slo zamstnance nebylo nalezeno.'#1 + CRLF + edtCisZam.Text); + edtCisZam.Text:= ''; + lblZamest.Caption:= ''; + edtCisZam.SetFocus; + end + else + begin + edtCisZam.Text:= StringOfChar('0', 6-Length(edtCisZam.Text)) + edtCisZam.Text; + lblZamest.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT PrijmeniJmeno FROM ' + tblCZam + ' WHERE Cislo=' + edtCisZam.Text); + edtDobreKs.SelectAll; + edtDobreKs.SetFocus; + end; + end; + end; + + + + procedure TformEvidOper.edtCisZamKeyPress(Sender: TObject; var Key: Char); + begin + if (Ord(key)=VK_RETURN) then + edtCisZamExit(Sender); + end; + + + + procedure TformEvidOper.edtDobreKsChange(Sender: TObject); + begin + origChciEvid:= edtDobreKs.Value; + if (davkaZbytekOp0) and (ACol=0) then + if Helios.YesNo('Chcete smazat zvadu ' + grd.Cell[ACol, ARow].AsString + ' ?', false) then + begin + tbl.Edit; + tbl.Delete; + grd.Refresh; + end; + if (tbl.RecordCount>0) and (ACol=colMnozstvi.Index) then + begin + calcMnozEdit:= true; + calcAkce:= 2; + aktRowNum:= tbl.RecNo; + lblPnl.Caption:= 'Mnostv zvady ' + grd.Cells[0, ARow]; + pnlCalc.Visible:= true; + edtNumVal.Value:= grd.Cell[2, ARow].AsFloat; + edtNumVal.SelectAll; + tKeyb.Visible:= True; + tKeyb.Width:= 330; + tKeyb.Height:= 305; + edtNumVal.SetFocus; + pnlCalc.Repaint; + end; + end; + + + + procedure TformEvidOper.grdIOCellClick(Sender: TObject; ACol, ARow: Integer; Button: TMouseButton); + var mn: Extended; + t: string; + i: integer; + begin + if (tblZavadyIO.RecordCount>0) and (ACol=0) then + if Helios.YesNo('Chcete smazat zvadu ' + grdIO.Cell[ACol, ARow].AsString + ' ?', false) then + begin + tblZavadyIO.Edit; + tblZavadyIO.Delete; + grdIO.Refresh; + end; + if (tblZavadyIO.RecordCount>0) and (ACol=colMnozstvi.Index) then + begin + calcMnozEdit:= true; + calcAkce:= 3; + aktRowNum:= tblZavadyIO.RecNo; + lblPnl.Caption:= 'Mnostv zvady ' + grdIO.Cells[0,ARow]; + pnlCalc.Visible:= true; + edtNumVal.Value:= grd.Cell[2, ARow].AsFloat; + edtNumVal.SelectAll; + tKeyb.Visible:= true; + tKeyb.Width:= 330; + tKeyb.Height:= 305; + edtNumVal.SetFocus; + pnlCalc.Repaint; + end; + end; + + + + procedure TformEvidOper.selBarCode2Click(Sender: TObject); + var lSQL, podm: string; + bid: integer; + begin +{ + if (filtrRada<>'') then + podm:= 'TabPrPostup.IDPrikaz IN (SELECT ID FROM ' + tblPrikaz + ' WHERE Rada LIKE N' + QuotedStr(filtrRada + '%') + ')'; +} + VPrDavky:= ''; + podm:= ''; + if (idDavky>0) then + begin + lSQL:= 'SELECT STRING_AGG(IDPrikaz, N'','') FROM ' + tblDavky + ' WHERE ID=' + idDavky.ToString + ' OR IDRodic=' + idDavky.ToString; + VPrDavky:= helUtils.getHeliosStrVal(Helios, '', lSQL); + podm:= 'TabPrPostup.IDPrikaz IN (SELECT IDPrikazVyssi FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi IS NOT NULL AND ID IN (' + VPrDavky + '))'; + lSQL:= 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi IS NOT NULL AND ID IN (' + VPrDavky + ')'; + VPrDavky:= helUtils.getHeliosStrVal(Helios, '', lSQL); + +{ + if (VPrDavky='') then + begin + lSQL:= 'SELECT STRING_AGG(IDPrikaz, N'','') FROM ' + tblDavky + ' WHERE ID=' + idDavky.ToString + ' OR IDRodic=' + idDavky.ToString; + VPrDavky:= helUtils.getHeliosStrVal(Helios, '', lSQL); + if (VPrDavky<>'') then + begin + podm:= 'TabPrPostup.IDPrikaz IN (SELECT IDPrikazVyssi FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi IS NOT NULL AND ID IN (' + VPrDavky + '))'; + lSQL:= 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi IS NOT NULL AND ID IN (' + VPrDavky + ')'; + VPrDavky:= helUtils.getHeliosStrVal(Helios, '', lSQL); + end; + end; + + if (druhDavky=4) and (VPrDavky<>'') then + begin + lSQL:= 'SELECT TOP(1) k.SkupZbo FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.ID IN (' + VPrDavky + ')'; + lSQL:= helUtils.getHeliosStrVal(Helios, '', lSQL); + if (lSQL='P41') and (operace.skupZbo='P42') then + VPrDavky:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE ID IN (' + VPrDavky + ')'); + if ((lSQL='P42') or (lSQL='P41')) and (operace.skupZbo='P43') then + VPrDavky:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE ID IN (' + VPrDavky + ')'); + if (lSQL='P41') and (operace.skupZbo='VOD') then + begin + VPrDavky:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE ID IN (' + VPrDavky + ')'); + lSQL:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE ID IN (' + VPrDavky + ')'); + if (lSQL<>'') then + VPrDavky:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE ID IN (' + VPrDavky + ')'); + end; + end; +} + end; + if Helios.Prenos(bidVyrOper, 'TabPrPostup.BarCode', oVar, podm, 'Vyberte operaci', true) then + begin + edtBarCode2.Text:= Trim(VarToStr(oVar)); + edtBarCode2Exit(Sender); + end; + end; + + + + procedure TformEvidOper.selBarCodeClick(Sender: TObject); + var podm: string; + bid: integer; + begin + podm:= ''; + bid:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_Davky'''); + if (bid>0) then + begin + if Helios.Prenos(100000+bid, 'KodDavky', oVar, '', 'Vyberte dvku', true) then + begin + edtBarCode.Text:= Trim(VarToStr(oVar)); + edtBarCodeExit(Sender); + end; + end; + end; + + + + procedure TformEvidOper.tblAfterDelete(DataSet: TDataSet); + begin + tblAfterPost(DataSet); + VypocetKs; + end; + + + + procedure TformEvidOper.tblAfterPost(DataSet: TDataSet); + var i: integer; + begin + zmetky:= 0; + if (tbl.RecordCount>0) then + begin + i:= tbl.RecNo; + grd.DataSource.DataSet.DisableControls; + tbl.First; + while not(tbl.Eof) do + begin + zmetky:= zmetky + tbl.FieldByName('Mnozstvi').AsFloat; + tbl.Next; + end; + tbl.RecNo:= i; + grd.DataSource.DataSet.EnableControls; + end; + if (zmetky+zmetkyIO+zmetkyNeodv>0) then + begin + lblZmetky.Caption:= 'Celkem opr+neopr: ' + (zmetky+zmetkyIO+zmetkyNeodv).ToString; + lblZmetky.Visible:= true; + end + else + lblZmetky.Visible:= false; + shNeopravitelne.Caption:= ' Neopraviteln ' + IfThen(zmetky>0, '(' + Trunc(zmetky).ToString +')', ''); + end; + + + + procedure TformEvidOper.tblZavadyIOAfterDelete(DataSet: TDataSet); + begin + tblZavadyIOAfterPost(Dataset); + VypocetKs; + end; + + + + procedure TformEvidOper.tblZavadyIOAfterPost(DataSet: TDataSet); + var i: integer; + begin + zmetkyIO:= 0; + zmetkyNeodv:= 0; + if (tblZavadyIO.RecordCount>0) then + begin + i:= tblZavadyIO.RecNo; + grdIO.DataSource.DataSet.DisableControls; + tblZavadyIO.First; + while not(tblZavadyIO.Eof) do + begin + if (tblZavadyIO.FieldByName('Neodvadet').AsBoolean) then + zmetkyNeodv:= zmetkyNeodv + tblZavadyIO.FieldByName('Mnozstvi').AsFloat + else + zmetkyIO:= zmetkyIO + tblZavadyIO.FieldByName('Mnozstvi').AsFloat; + tblZavadyIO.Next; + end; + tblZavadyIO.RecNo:= i; + grdIO.DataSource.DataSet.EnableControls; + end; + if (zmetky+zmetkyIO+zmetkyNeodv>0) then + begin + lblZmetky.Caption:= 'Celkem opr+neopr: ' + (zmetky+zmetkyIO+zmetkyNeodv).ToString; + lblZmetky.Visible:= true; + end + else + lblZmetky.Visible:= false; + shInterneOpravitelne.Caption:= ' Intern opravit. ' + IfThen((zmetkyIO+zmetkyNeodv)>0, '(' + Trunc(zmetkyIO+zmetkyNeodv).ToString +')', ''); + end; + + + + procedure TformEvidOper.VypocetKs; + begin +{ + if (davkaZbytekOporigChciEvid) then + edtDobreKs.Value:= origChciEvid; + end; +} +{ + if (edtDobreKs.Value+zmetky+zmetkyIO>davkaZbytekOp) then + lblMaloOperaci.Visible:= true + else + lblMaloOperaci.Visible:= false; +} + end; + + + + procedure TformEvidOper.tKeybKeyClick(Sender: TObject; Index: Integer); + var i: integer; + lSQL, sql1, sql2: string; + begin + if (Index=9) and (calcAkce=1) and (calcMnozEdit) then + begin + edtDobreKs.Value:= 0; + exitKeyb:= false; + end; + + if (tKeyb.Visible) and not(exitKeyb) then + begin + exitKeyb:= false; + tKeyb.SetFocus; + i:= -1; + case Index of + 0: i:= 7; + 1: i:= 8; + 2: i:= 9; + 3: i:= 4; + 4: i:= 5; + 5: i:= 6; + 6: i:= 1; + 7: i:= 2; + 8: i:= 3; + 9: edtNumVal.Value:= 0; + 10: i:= 0; + 11: begin + if (calcMnozEdit) then + case calcAkce of + 2: begin + tbl.Edit; + tbl.FieldByName('Mnozstvi').AsFloat:= edtNumVal.Value; + tbl.Post; + VypocetKs; + end; + 3: begin + tblZavadyIO.Edit; + tblZavadyIO.FieldByName('Mnozstvi').AsFloat:= edtNumVal.Value; + tblZavadyIO.Post; + VypocetKs; + end; + end + else + case calcAkce of + 1: begin + edtDobreKs.Value:= edtNumVal.Value; + if (edtDobreKs.Value>operace.ksZive) then + edtDobreKs.Value:= operace.ksZive; +// btnOK.SetFocus; + end; + 2: begin + if (edtNumVal.Value>0) then + begin + tbl.Append; + tbl.FieldByName('KodZavady').AsString:= kodZavady; + tbl.FieldByName('Popis').AsString:= popisZavady; + tbl.FieldByName('Mnozstvi').AsFloat:= edtNumVal.Value; + tbl.Post; + VypocetKs; + btnAdd.SetFocus; + end; + end; + 3: begin + if (edtNumVal.Value>0) then + begin + tblZavadyIO.Append; + tblZavadyIO.FieldByName('KodZavady').AsString:= kodZavady; + tblZavadyIO.FieldByName('Popis').AsString:= popisZavady; + tblZavadyIO.FieldByName('Mnozstvi').AsFloat:= edtNumVal.Value; + lSQL:= 'SELECT ISNULL(e._Neodvadet, 0) FROM ' + tblCZavad + ' z LEFT JOIN ' + tblCZavadE + ' e ON (e.ID=z.ID) WHERE z.Kod=N' + QuotedStr(kodZavady); + tblZavadyIO.FieldByName('Neodvadet').AsBoolean:= getHeliosBoolVal(Helios, false, lSQL); + tblZavadyIO.Post; + VypocetKs; + btnAddIO.SetFocus; + end; + end; + end; + + grd.Refresh; + grdIO.Refresh; + calcMnozEdit:= false; + btnOK.Enabled:= true; + btnZrusit.Enabled:= true; + pnlCalc.Visible:= false; + tKeyb.Visible:= false; + exitKeyb:= true; + end; + end; + if (i>=0) then + begin + if (edtNumVal.Value=0) then + edtNumVal.Value:= i + else + edtNumVal.Value:= StrToInt(Trim(StringReplace(StringReplace(edtNumVal.Text,#160,'',[rfReplaceAll]),' ','',[rfReplaceAll])) + IntToStr(i)); + end + else + end; + end; + + + procedure TformEvidOper.tKeybKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + var i: integer; + begin + i:= -1; + case Key of + 13: i:= 11; + 46: i:= 9; + 48: i:= 10; // 0 + 49: i:= 6; + 50: i:= 7; + 51: i:= 8; + 52: i:= 3; + 53: i:= 4; + 54: i:= 5; + 55: i:= 0; + 56: i:= 1; + 57: i:= 9; + end; + tKeybKeyClick(Sender, i); + end; + + + procedure TformEvidOper.btnCalcCloseClick(Sender: TObject); + begin + numPadVal:= 0; + pnlCalc.Visible:= false; + tKeyb.Visible:= false; + btnOK.Enabled:= true; + btnZrusit.Enabled:= true; + if (calcAkce=1) and (edtDobreKs.Value>0) then + btnOK.SetFocus; + end; + +end. diff --git a/frmGenPolos.dfm b/frmGenPolos.dfm new file mode 100644 index 0000000..e06d8b3 --- /dev/null +++ b/frmGenPolos.dfm @@ -0,0 +1,199 @@ +object formGenPolos: TformGenPolos + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = ' Generov'#225'n'#237' polosestav' + ClientHeight = 582 + ClientWidth = 559 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poMainFormCenter + OnClose = FormClose + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 23 + object Label1: TLabel + Left = 482 + Top = 13 + Width = 32 + Height = 23 + Caption = 'VPC' + end + object Label2: TLabel + Left = 161 + Top = 122 + Width = 170 + Height = 23 + Caption = '(reg.'#269'. pro P43-P11)' + end + object sGrid: TrStringGridEd + Left = 0 + Top = 168 + Width = 541 + Height = 357 + ColCount = 4 + DefaultColWidth = 90 + DefaultRowHeight = 26 + DefaultDrawing = False + FixedColor = clGradientActiveCaption + FixedCols = 0 + RowCount = 10 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goEditing] + ParentFont = False + ScrollBars = ssVertical + TabOrder = 4 + OptionsEx = [dgAlwaysShowSelection, dgShowTitleBold] + Columns = < + item + ButtonStyle = sgbCheckbox + DataType = sgdInteger + MaxValue = 1.000000000000000000 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TitleCaption = 'Gen ?' + TitleAlignment = taCenter + end + item + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -17 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + ReadOnly = True + TitleCaption = 'SZ' + TitleAlignment = taCenter + end + item + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -17 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + ReadOnly = True + TitleCaption = 'Skupina zbo'#382#237 + TitleAlignment = taCenter + end + item + DataType = sgdNumber + MinValue = 100000.000000000000000000 + Alignment = taCenter + TitleCaption = 'VPC' + TitleAlignment = taCenter + end> + TitleRowHeight = 25 + ColWidths = ( + 68 + 59 + 326 + 75) + RowHeights = ( + 25 + 26 + 26 + 26 + 26 + 26 + 26 + 26 + 26 + 26) + end + object edtRegCis: TLabeledEdit + Left = 9 + Top = 38 + Width = 121 + Height = 31 + Color = clGradientInactiveCaption + EditLabel.Width = 67 + EditLabel.Height = 23 + EditLabel.Caption = 'V'#253'robek' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + ReadOnly = True + TabOrder = 0 + end + object edtNazev: TEdit + Left = 136 + Top = 38 + Width = 306 + Height = 31 + Color = clGradientInactiveCaption + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + ReadOnly = True + TabOrder = 1 + end + object btnGen: TButton + Left = 105 + Top = 538 + Width = 194 + Height = 33 + Caption = 'Generuj /Aktualizuj' + TabOrder = 3 + OnClick = btnGenClick + end + object btnStorno: TButton + Left = 356 + Top = 538 + Width = 97 + Height = 33 + Caption = 'Storno' + TabOrder = 2 + OnClick = btnStornoClick + end + object edtVPC: TrEditNum + Left = 456 + Top = 38 + Width = 79 + Height = 31 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 5 + Style = enFloat + MaxValue = 100000.000000000000000000 + end + object edtOdlitek: TLabeledEdit + Left = 8 + Top = 119 + Width = 147 + Height = 31 + EditLabel.Width = 267 + EditLabel.Height = 23 + EditLabel.Caption = #268#237'slo odlitku (v p'#345#237'pad'#283' pot'#345'eby)' + MaxLength = 12 + TabOrder = 6 + OnExit = edtOdlitekExit + end +end diff --git a/frmGenPolos.pas b/frmGenPolos.pas new file mode 100644 index 0000000..3f02008 --- /dev/null +++ b/frmGenPolos.pas @@ -0,0 +1,294 @@ +unit frmGenPolos; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, Vcl.ExtCtrls, Vcl.Grids, rStringGridEd, + rImprovedComps, ddPlugin_TLB; + +const + CRLF = #13#10; + +type + TformGenPolos = class(TForm) + sGrid: TrStringGridEd; + edtRegCis: TLabeledEdit; + edtNazev: TEdit; + btnGen: TButton; + btnStorno: TButton; + edtVPC: TrEditNum; + Label1: TLabel; + edtOdlitek: TLabeledEdit; + Label2: TLabel; + procedure btnGenClick(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure FormShow(Sender: TObject); + procedure btnStornoClick(Sender: TObject); + procedure edtOdlitekExit(Sender: TObject); + private + function MamVOD: Boolean; + public + Helios: IHelios; + idKZ: integer; + genKusovnik: boolean; + end; + +var + formGenPolos: TformGenPolos; + +implementation + +uses + System.StrUtils, helUtils; + +{$R *.dfm} + + + function TformGenPolos.MamVOD; + var i: Integer; + begin + result:= false; + for i:=0 to sGrid.RowCount-1 do + begin + if (sGrid.IntCells[0, i]=1) then + if sGrid.StringCells[1,i]='VOD' then + result:= true; + end; + end; + + + + procedure TformGenPolos.btnGenClick(Sender: TObject); + var i, i2, iOld, idKZn, idKZold, idKZx, idSS: integer; + lSQL, skl, sz, rc, uKod: string; + szOdlit: Boolean; + begin + idKZold:= 0; + iOld:= 0; + ReseedTable(Helios, tblKZ); + ReseedTable(Helios, tblKVaz); + ReseedTable(Helios, tblNC); + edtOdlitek.Text:= Trim(edtOdlitek.Text); + + lSQL:= 'MERGE ' + tblParKZ + ' AS T USING ' + tblKZ + ' AS S ON (T.IDKmenZbozi=S.ID)'; + lSQL:= lSQL + ' WHEN MATCHED AND S.ID=' + idKZ.ToString + ' AND LEFT(S.SkupZbo,1)=N''V'' THEN UPDATE SET T.TypDilce=0' + CRLF; + lSQL:= lSQL + ' WHEN NOT MATCHED BY TARGET THEN INSERT (IdKmenZbozi, TypDilce) VALUES (S.ID, 0);'; + Helios.ExecSQL(lSQL); + + for i:=0 to sGrid.RowCount-1 do + begin + if (sGrid.IntCells[0, i]=1) then + begin + sz:= sGrid.StringCells[1,i]; + if (((sz='P43') or (sz='P51')) and (MamVOD)) then + Continue; + + szOdlit:= false; + if (sz='P41') or (LeftStr(sz,2)='P3') or (LeftStr(sz,2)='P2') or (LeftStr(sz,2)='P1') then + szOdlit:= true; + + rc:= Trim(edtRegCis.Text); + if (szOdlit) and (edtOdlitek.Text<>'') then + rc:= Trim(edtOdlitek.Text); + + lSQL:= 'DECLARE @i INT=0' + CRLF + 'IF NOT EXISTS(SELECT id FROM ' + tblKZ + ' WHERE SkupZbo=N' + QuotedStr(sz) + ' AND RegCis=N' + QuotedStr(rc) + ')' + CRLF; + lSQL:= lSQL + ' BEGIN' + CRLF + ' INSERT ' + tblKZ + ' (SkupZbo, RegCis, Nazev1, DruhSkladu, Dilec, MJEvidence) SELECT N'; + lSQL:= lSQL + QuotedStr(sz) + ', N' + QuotedStr(rc) + ', N' + QuotedStr(edtNazev.Text) + ', 1, 1, N' + QuotedStr('ks') + CRLF; + lSQL:= lSQL + ' SET @i=SCOPE_IDENTITY()' + CRLF + ' END' + CRLF + 'SELECT @i'; + with Helios.OpenSQL(lSQL) do + if (RecordCount=1) and (StrToInt(VarToStr(FieldValues(0)))>0) then + begin + idKZn:= StrToInt(VarToStr(FieldValues(0))); + lSQL:= 'IF NOT EXISTS(SELECT IdKmenZbozi FROM ' + tblParKZ + ' WHERE IDKmenZbozi=' + idKZn.ToString + ') INSERT ' + tblParKZ + ' (IDKmenZbozi, TypDilce)'; + lSQL:= lSQL + ' SELECT ' + idKZn.ToString + ', 1'; + Helios.ExecSQL(lSQL); + + lSQL:= 'SELECT sze._Sklad_1 FROM ' + tblSZ + ' sz INNER JOIN ' + tblSZe + ' sze ON (sze.Id=sz.Id) WHERE sz.SkupZbo=N' + QuotedStr(sGrid.StringCells[1,i]); + with Helios.OpenSQL(lSQL) do + if (RecordCount=1) then + begin + uKod:= ''; + skl:= VarToStr(FieldValues(0)); + if (skl<>'') then + begin + lSQL:= 'SELECT se._UKod FROM ' + tblStrom + ' s INNER JOIN ' + tblStromE + ' se ON (se.Id=s.Id) WHERE s.Cislo=N' + QuotedStr(skl); + with Helios.OpenSQL(lSQL) do + if (RecordCount=1) then + uKod:= VarToStr(FieldValues(0)); + idSS:= 0; + with Helios.OpenSQL('SELECT id FROM ' + tblSS + ' WHERE IDSklad=N' + QuotedStr(skl) + ' AND IDKmenZbozi=' + IntToStr(idKZn)) do + if (RecordCount=1) then + idSS:= StrToInt(VarToStr(FieldValues(0))); + if (idSS=0) then + with Helios.OpenSQL('INSERT ' + tblSS + ' (IDSklad, IDKmenZbozi) SELECT N' + QuotedStr(skl) + ', ' + IntToStr(idKZn) + CRLF + 'SELECT SCOPE_IDENTITY()') do + if (RecordCount=1) then + idSS:= StrToInt(VarToStr(FieldValues(0))); + if (idSS>0) and (uKod<>'') then + Helios.ExecSQL('UPDATE ' + tblSS + ' SET UKod=' + uKod + ' WHERE Id=' + IntToStr(idSS)); + end; + end; + + lSQL:= 'SELECT sze._Sklad_2 FROM ' + tblSZ + ' sz INNER JOIN ' + tblSZe + ' sze ON (sze.Id=sz.Id) WHERE sz.SkupZbo=N' + QuotedStr(sz); + with Helios.OpenSQL(lSQL) do + if (RecordCount=1) then + begin + uKod:= ''; + skl:= VarToStr(FieldValues(0)); + if (skl<>'') then + begin + lSQL:= 'SELECT se._UKod FROM ' + tblStrom + ' s INNER JOIN ' + tblStromE + ' se ON (se.Id=s.Id) WHERE s.Cislo=N' + QuotedStr(skl); + with Helios.OpenSQL(lSQL) do + if (RecordCount=1) then + uKod:= VarToStr(FieldValues(0)); + idSS:= 0; + with Helios.OpenSQL('SELECT id FROM ' + tblSS + ' WHERE IDSklad=N' + QuotedStr(skl) + ' AND IDKmenZbozi=' + IntToStr(idKZn)) do + if (RecordCount=1) then + idSS:= StrToInt(VarToStr(FieldValues(0))); + if (idSS=0) then + with Helios.OpenSQL('INSERT ' + tblSS + ' (IDSklad, IDKmenZbozi) SELECT N' + QuotedStr(skl) + ', ' + IntToStr(idKZn) + CRLF + 'SELECT SCOPE_IDENTITY()') do + if (RecordCount=1) then + idSS:= StrToInt(VarToStr(FieldValues(0))); + if (idSS>0) and (uKod<>'') then + Helios.ExecSQL('UPDATE ' + tblSS + ' SET UKod=' + uKod + ' WHERE Id=' + IntToStr(idSS)); + end; + end; + + if (genKusovnik) then + begin + if (idKZold>0) and (iOld=i-1) then + begin + lSQL:= 'IF NOT EXISTS(SELECT id FROM ' + tblKVaz + ' WHERE IDVarianta IS NULL AND vyssi=' + IntToStr(idKZn) + ' AND nizsi=' + IntToStr(idKZold) + ') '; + lSQL:= lSQL + 'INSERT ' + tblKVaz + ' (ZmenaOd, vyssi, nizsi, mnozstvi, mnozstviSeZtratou, Prirez) SELECT TOP(1) ID, ' + IntToStr(idKZn); + lSQL:= lSQL + ', ' + IntToStr(idKZold) + ', 1, 1, 1 FROM ' + tblCZmen + ' WHERE Platnost=1 ORDER BY datum DESC'; + Helios.ExecSQL(lSQL); + end; + end; + idKZold:= idKZn; + end; + + idKZx:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT id FROM ' + tblKZ + ' WHERE SkupZbo=N' + QuotedStr(sz) + ' AND RegCis=N' + QuotedStr(rc)); + if (idKZx>0) then + begin + lSQL:= 'UPDATE ' + tblNC + ' SET CenaKC=' + StringReplace(FloatToStr(sGrid.NumCells[3, i]),',','.',[rfReplaceAll]); + lSQL:= lSQL + ' WHERE CenovaUroven=1000 AND IdKmenZbozi=' + IntToStr(idKZx) + '; IF (@@ROWCOUNT=0) INSERT ' + tblNC; + lSQL:= lSQL + ' (CenovaUroven, IDKmenZbozi, CenaKC, BezDPH) SELECT 1000, ' + IntToStr(idKZx) + ', '; + lSQL:= lSQL + StringReplace(FloatToStr(sGrid.NumCells[3, i]),',','.',[rfReplaceAll]) + ', N' + QuotedStr('A'); + Helios.ExecSQL(lSQL); + end; + + iOld:= i; + end; + end; + + lSQL:= 'UPDATE ' + tblNC + ' SET CenaKC=' + StringReplace(edtVPC.Value.ToString, ',', '.', [rfReplaceAll]); + lSQL:= lSQL + ' WHERE CenovaUroven=1000 AND IdKmenZbozi=' + IntToStr(idKZ) + '; IF (@@ROWCOUNT=0) INSERT ' + tblNC; + lSQL:= lSQL + ' (CenovaUroven, IDKmenZbozi, CenaKC, BezDPH) SELECT 1000, ' + IntToStr(idKZ) + ', '; + lSQL:= lSQL + StringReplace(FloatToStr(edtVPC.Value),',','.',[rfReplaceAll]) + ', N' + QuotedStr('A'); + Helios.ExecSQL(lSQL); + + if (genKusovnik) then + begin + if (idKZold>0) and (iOld=sGrid.RowCount-1) then + with Helios.OpenSQL('SELECT id FROM ' + tblKVaz + ' WHERE IDVarianta IS NULL AND vyssi=' + IntToStr(idKZ) + ' AND nizsi=' + IntToStr(idKZold)) do + if (RecordCount=0) then + begin + lSQL:= 'INSERT ' + tblKVaz + ' (ZmenaOd, vyssi, nizsi, mnozstvi, mnozstviSeZtratou, Prirez) SELECT TOP(1) ID, ' + IntToStr(idKZ); + lSQL:= lSQL + ', ' + IntToStr(idKZold) + ', 1, 1, 1 FROM ' + tblCZmen + ' WHERE Platnost=1 ORDER BY datum DESC'; + Helios.ExecSQL(lSQL); + end; + end; + + Close; + end; + + + procedure TformGenPolos.btnStornoClick(Sender: TObject); + begin + Close; + end; + + + procedure TformGenPolos.edtOdlitekExit(Sender: TObject); + var i: integer; + lSQL: string; + begin + if (edtOdlitek.Text<>'') then + begin + edtOdlitek.Text:= StringReplace(edtOdlitek.Text, ';', '', [rfReplaceAll]); + edtOdlitek.Text:= StringReplace(edtOdlitek.Text, '''', '', [rfReplaceAll]); + for i:=0 to sGrid.RowCount-1 do + begin + lSQL:= 'SELECT c.CenaKc FROM ' + tblNC + ' c INNER JOIN ' + tblKZ + ' k ON (k.ID=c.IDKmenZbozi) WHERE c.CenovaUroven=1000 AND k.SkupZbo=N'; + lSQL:= lSQL + sGrid.StringCells[1, i].QuotedString + ' AND RegCis=N' + IfThen(edtOdlitek.Text<>'', edtOdlitek.Text, edtRegCis.Text).QuotedString; + lSQL:= lSQL + ' AND c.BezDPH=N''A'''; + with Helios.OpenSQL(lSQL) do + if (RecordCount=1) then + sGrid.NumCells[3, i]:= StrToFloat(VarToStr(FieldValues(0))); + end; + end; + end; + + + + procedure TformGenPolos.FormClose(Sender: TObject; var Action: TCloseAction); + begin + Action:= caFree; + end; + + + + procedure TformGenPolos.FormShow(Sender: TObject); + var lSQL: string; + i: integer; + begin + edtVPC.Value:= 0; + edtNazev.Text:= ''; + edtRegCis.Text:= ''; + sGrid.RowCount:= 1; + sGrid.Canvas.Font.Size:= 14; + if (idKZ>0) then + begin + edtVPC.Value:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT CenaKC FROM ' + tblNC + ' WHERE CenovaUroven=1000 AND IdKmenZbozi=' + idKZ.ToString); + with Helios.OpenSQL('SELECT RegCis, Nazev1, SkupZbo FROM ' + tblKZ + ' WHERE Id=' + IntToStr(idKZ) + ' AND SkupZbo IN (N''VOB'',N''VOD'')') do + if (RecordCount=1) then + begin + edtRegCis.Text:= VarToStr(FieldValues(0)); + edtRegCis.Text:= StringReplace(edtRegCis.Text, ';', '', [rfReplaceAll]); + edtRegCis.Text:= StringReplace(edtRegCis.Text, '''', '', [rfReplaceAll]); + edtNazev.Text:= VarToStr(FieldValues(1)); + if (VarToStr(FieldValues(2))='VOD') then + edtRegCis.EditLabel.Caption:= 'Odlitek'; + if (VarToStr(FieldValues(2))='VOB') then + edtRegCis.EditLabel.Caption:= 'Obrobek'; + i:= 0; + lSQL:= 'SELECT SkupZbo, Nazev FROM ' + tblSZ + ' WHERE LEFT(SkupZbo,1)=N' + QuotedStr('P') + ' AND SkupZbo NOT IN (N''P10'',N''P20'', N''P30'', N''P42'''; + lSQL:= lSQL + ', N''PNA'', N''PDZ'', N''POD'') ORDER BY SkupZbo'; + with Helios.OpenSQL(lSQL) do + begin + sGrid.RowCount:= RecordCount; + while not(EOF) do + begin + sGrid.StringCells[1, i]:= VarToStr(FieldValues(0)); + sGrid.StringCells[2, i]:= VarToStr(FieldValues(1)); + with Helios.OpenSQL('SELECT id FROM ' + tblKZ + ' WHERE RegCis=N' + QuotedStr(edtRegCis.Text) + ' AND SkupZbo=N' + QuotedStr(sGrid.StringCells[1, i])) do + if (RecordCount=0) then + sGrid.IntCells[0, i]:= 1 + else + sGrid.IntCells[0, i]:= 0; + + lSQL:= 'SELECT c.CenaKc FROM ' + tblNC + ' c INNER JOIN ' + tblKZ + ' k ON (k.ID=c.IDKmenZbozi) WHERE c.CenovaUroven=1000 AND k.SkupZbo=N'; + lSQL:= lSQL + sGrid.StringCells[1, i].QuotedString + ' AND RegCis=N' + IfThen(edtOdlitek.Text<>'', edtOdlitek.Text, edtRegCis.Text).QuotedString; + lSQL:= lSQL + ' AND c.BezDPH=N''A'''; + with Helios.OpenSQL(lSQL) do + if (RecordCount=1) then + sGrid.NumCells[3, i]:= StrToFloat(VarToStr(FieldValues(0))); + Inc(i); + Next; + end; + end; + end; + end; + end; + +end. diff --git a/frmGenTPV.dfm b/frmGenTPV.dfm new file mode 100644 index 0000000..b8982d2 --- /dev/null +++ b/frmGenTPV.dfm @@ -0,0 +1,269 @@ +object formGenTPV: TformGenTPV + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = ' Generuj karty + TPV' + ClientHeight = 397 + ClientWidth = 644 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Position = poOwnerFormCenter + OnClose = FormClose + OnShow = FormShow + TextHeight = 19 + object Label1: TLabel + Left = 127 + Top = 58 + Width = 44 + Height = 19 + Caption = #268'.org.' + end + object Label2: TLabel + Left = 23 + Top = 181 + Width = 96 + Height = 19 + Caption = 'N'#225'zev / popis' + end + object Label3: TLabel + Left = 204 + Top = 58 + Width = 44 + Height = 19 + Caption = 'Pozice' + end + object Label4: TLabel + Left = 271 + Top = 58 + Width = 55 + Height = 19 + Caption = 'Materi'#225'l' + end + object Label6: TLabel + Left = 23 + Top = 293 + Width = 155 + Height = 19 + Caption = 'Vzor pro operace TPV' + end + object lblVzorTPV: TLabel + Left = 218 + Top = 316 + Width = 396 + Height = 19 + AutoSize = False + end + object Label7: TLabel + Left = 359 + Top = 58 + Width = 86 + Height = 19 + Caption = 'Technologie' + end + object Label16: TLabel + Left = 472 + Top = 58 + Width = 49 + Height = 19 + Caption = '1. obal' + end + object Label5: TLabel + Left = 23 + Top = 58 + Width = 56 + Height = 19 + Caption = 'Skupina' + end + object Label8: TLabel + Left = 59 + Top = 114 + Width = 63 + Height = 19 + Caption = 'P51/VOx' + end + object Label9: TLabel + Left = 59 + Top = 146 + Width = 60 + Height = 19 + Caption = 'P11-P43' + end + object edtNazev: TEdit + Left = 23 + Top = 203 + Width = 591 + Height = 27 + MaxLength = 100 + TabOrder = 8 + end + object edtCisOrg: TComboEdit + Left = 127 + Top = 79 + Width = 71 + Height = 27 + Alignment = taCenter + ClickKey = 16397 + GlyphKind = gkEllipsis + MaxLength = 4 + NumGlyphs = 1 + ParentShowHint = False + ShowHint = True + TabOrder = 1 + Text = '' + OnButtonClick = edtCisOrgButtonClick + OnExit = edtCisOrgExit + end + object edtPozice: TEdit + Left = 204 + Top = 79 + Width = 59 + Height = 27 + Alignment = taCenter + MaxLength = 3 + TabOrder = 2 + OnExit = edtPoziceExit + end + object edtMat: TComboEdit + Left = 271 + Top = 79 + Width = 59 + Height = 27 + Alignment = taCenter + ClickKey = 16397 + GlyphKind = gkEllipsis + MaxLength = 2 + NumGlyphs = 1 + ParentShowHint = False + ShowHint = True + TabOrder = 3 + Text = '' + OnButtonClick = edtMatButtonClick + OnExit = edtMatExit + end + object edtVzorTPV: TComboEdit + Left = 23 + Top = 313 + Width = 179 + Height = 27 + ClickKey = 16397 + GlyphKind = gkEllipsis + MaxLength = 15 + NumGlyphs = 1 + ParentShowHint = False + ShowHint = True + TabOrder = 10 + Text = '' + OnButtonClick = edtVzorTPVButtonClick + end + object btnOK: TButton + Left = 397 + Top = 356 + Width = 97 + Height = 31 + Caption = 'Generuj' + TabOrder = 11 + OnClick = btnOKClick + end + object btnStorno: TButton + Left = 517 + Top = 356 + Width = 97 + Height = 31 + Caption = 'Storno' + TabOrder = 12 + OnClick = btnStornoClick + end + object edtTech: TEdit + Left = 359 + Top = 79 + Width = 37 + Height = 27 + Alignment = taCenter + MaxLength = 1 + TabOrder = 4 + OnExit = edtTechExit + end + object cboxPrvniObal: TComboBox + Left = 472 + Top = 78 + Width = 115 + Height = 27 + Style = csDropDownList + TabOrder = 5 + Items.Strings = ( + '' + 'K'#345'emen' + 'Zirkon') + end + object cboxVOD: TComboBox + Left = 23 + Top = 79 + Width = 65 + Height = 27 + Style = csDropDownList + TabOrder = 0 + Items.Strings = ( + 'VOD' + 'VOB' + 'F01' + 'F10' + 'F11' + 'F20' + 'F21' + 'PNA' + 'POD' + 'VKO' + 'VS1' + 'VS2') + end + object cbGenSpodek: TCheckBox + Left = 23 + Top = 248 + Width = 187 + Height = 22 + Caption = ' generovat podsestavy' + Checked = True + State = cbChecked + TabOrder = 9 + end + object edtRegC: TEdit + Left = 128 + Top = 111 + Width = 198 + Height = 27 + TabOrder = 6 + end + object cbRCdleFin: TCheckBox + Left = 251 + Top = 248 + Width = 187 + Height = 22 + Caption = ' reg.'#269'. P11-P43 dle fin'#225'lu' + Checked = True + State = cbChecked + TabOrder = 13 + end + object edtRegCN: TEdit + Left = 128 + Top = 143 + Width = 198 + Height = 27 + TabOrder = 7 + OnChange = edtRegCNChange + end + object cbNabidka: TCheckBox + Left = 23 + Top = 20 + Width = 110 + Height = 22 + Caption = ' NAB'#205'DKA' + Checked = True + State = cbChecked + TabOrder = 14 + end +end diff --git a/frmGenTPV.pas b/frmGenTPV.pas new file mode 100644 index 0000000..b8f0649 --- /dev/null +++ b/frmGenTPV.pas @@ -0,0 +1,277 @@ +unit frmGenTPV; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, RzEdit, TBPackageU, ddPlugin_TLB, + RxToolEdit, RzBtnEdt; + +const + tblOdlitky = '[dbo].[_hdc_TabOdlitky]'; + +type + TformGenTPV = class(TForm) + edtNazev: TEdit; + edtCisOrg: TComboEdit; + Label1: TLabel; + Label2: TLabel; + edtPozice: TEdit; + Label3: TLabel; + edtMat: TComboEdit; + Label4: TLabel; + Label6: TLabel; + edtVzorTPV: TComboEdit; + lblVzorTPV: TLabel; + btnOK: TButton; + btnStorno: TButton; + edtTech: TEdit; + Label7: TLabel; + Label16: TLabel; + cboxPrvniObal: TComboBox; + cboxVOD: TComboBox; + Label5: TLabel; + cbGenSpodek: TCheckBox; + edtRegC: TEdit; + cbRCdleFin: TCheckBox; + Label8: TLabel; + Label9: TLabel; + edtRegCN: TEdit; + cbNabidka: TCheckBox; + procedure FormShow(Sender: TObject); + procedure btnOKClick(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure btnStornoClick(Sender: TObject); + procedure edtPoziceExit(Sender: TObject); + procedure edtCisOrgExit(Sender: TObject); + procedure edtMatExit(Sender: TObject); + procedure edtCisOrgButtonClick(Sender: TObject); + procedure edtMatButtonClick(Sender: TObject); + procedure edtVzorTPVButtonClick(Sender: TObject); + procedure edtTechExit(Sender: TObject); + procedure edtRegCNChange(Sender: TObject); + private + function Testy: string; safecall; + public + Helios: IHelios; + idKZrodic: integer; + jeTest: boolean; + end; + +var + formGenTPV: TformGenTPV; + oVar: OleVariant; + skl, tech: string; + + + +implementation +uses System.StrUtils, helUtils; + +{$R *.dfm} + + function TformGenTPV.Testy; + begin + result:= ''; + edtRegC.Text:= Trim(edtRegC.Text); + edtMat.Text:= Trim(edtMat.Text); + edtNazev.Text:= Trim(edtNazev.Text); + edtPozice.Text:= Trim(edtPozice.Text); + if (edtPozice.Text='') then + result:= 'Nen vyplnna pozice.'; + if (edtRegC.Text='') and (result='') then + result:= 'Nen vyplnno nov Registran slo'; + if (cBoxVOD.Text='') and (result='') then + result:= 'Nen vybrna finln Skupina karet'; + end; + + + + procedure TformGenTPV.btnOKClick(Sender: TObject); + var lSQL, nSZ, nRC, x, xx: string; + idKZ, idKZsub: integer; + genVob, genVod: Boolean; + i: integer; + begin + lSQL:= Testy; + if (lSQL='') then + begin + waitStart(self, 'Generovn karet...', 1, $0000FF ); + x:= ''; + + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabGenKartySTPV'') IS NOT NULL DELETE FROM dbo._temp_TabGenKartySTPV WHERE Autor=SUSER_SNAME()' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabGenKartySTPV'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabGenKartySTPV)'; + lSQL:= lSQL + ' DROP TABLE dbo._temp_TabGenKartySTPV' + CRLF + 'DROP TABLE IF EXISTS #TabGenKartySTPV'; + Helios.ExecSQL(lSQL); + + lSQL:= 'CREATE TABLE #TabGenKartySTPV (RegCis NVARCHAR(30) NOT NULL, RegCisNizsi NVARCHAR(30), Nazev NVARCHAR(100) DEFAULT N'''', Technologie NCHAR(5) NOT NULL'; + lSQL:= lSQL + ', PrvniObal TINYINT NOT NULL, VzorCisloKarty NVARCHAR(33) NOT NULL, Sklad NVARCHAR(30), SkupZbo NVARCHAR(3) NOT NULL DEFAULT N'''', GenPxx BIT DEFAULT 1'; + lSQL:= lSQL + ', RCPxxFin BIT DEFAULT 1, KodMat NVARCHAR(5) DEFAULT N'''', Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME())' + CRLF; + lSQL:= lSQL + 'INSERT #TabGenKartySTPV (RegCis, RegCisNizsi, Nazev, Technologie, PrvniObal, VzorCisloKarty, SkupZbo, GenPxx, RCPxxFin, Sklad, KodMat) SELECT N'; + lSQL:= lSQL + edtRegC.Text.QuotedString + ', N' + edtRegCN.Text.QuotedString + ', N' + edtNazev.Text.QuotedString + ', N' + edtTech.Text.QuotedString + ', '; + lSQL:= lSQL + cboxPrvniObal.ItemIndex.ToString + ', N' + edtVzorTPV.Text.QuotedString + ', N' + cboxVOD.Text.QuotedString + ', ' + IfThen(cbGenSpodek.Checked, '1', '0'); + lSQL:= lSQL + ', ' + IfThen(cbRCdleFin.Checked, '1', '0'); + for i:=0 to Helios.QueryBrowse.FieldCount-1 do + begin + xx:= Helios.QueryBrowse.Fields(i).FieldName; + if (xx='IDSklad') then + x:= VarToStr(Helios.QueryBrowse.FieldByNameValues('IDSklad')); + end; + lSQL:= lSQL + ', ' + IfThen(x='', 'NULL', 'N' + x.QuotedString); + lSQL:= lSQL + ', N' + IfThen(edtMat.Text='', 'ULL', edtMat.Text.QuotedString); + try + if (jeTest) then + lSQL:= StringReplace(lSQL, '#TabGenKar', 'dbo._temp_TabGenKar', [rfReplaceAll]); + Helios.ExecSQL(lSQL); + if not(jeTest) then + Helios.ExecSQL('IF OBJECT_ID(N''dbo.ep_TPV_GenKarty'') IS NOT NULL EXEC dbo.ep_TPV_GenKarty'); + Close; + except on E:Exception do + begin + waitEnd; + Helios.Error(#1 + 'CHYBA: ' + #1 + E.Message); + end; + end; + waitEnd; + end + else + Helios.Error(#1 + 'CHYBA: ' + #1 + lSQL); + end; + + + + procedure TformGenTPV.btnStornoClick(Sender: TObject); + begin + Close; + end; + + + + procedure TformGenTPV.edtCisOrgButtonClick(Sender: TObject); + begin + edtCisOrg.Text:= Trim(edtCisOrg.Text); + oVar:= edtCisOrg.Text; + if Helios.Prenos(bidCisOrg, 'TabCisOrg.CisloOrg', oVar, 'TabCisOrg.CisloOrg>0', 'Vyberte zkaznka', true) then + edtCisOrg.Text:= Trim(VarToStr(oVar)); + end; + + procedure TformGenTPV.edtCisOrgExit(Sender: TObject); + begin + edtRegC.Text:= edtCisOrg.Text + edtPozice.Text + edtMat.Text; + end; + + + + procedure TformGenTPV.edtMatButtonClick(Sender: TObject); + begin + edtMat.Text:= Trim(edtMat.Text); + oVar:= edtMat.Text; + if Helios.Prenos(100052, 'hvw_Material.Kod', oVar, '', 'Vyberte materil', true) then + edtMat.Text:= Trim(VarToStr(oVar)); + edtRegC.Text:= edtCisOrg.Text + edtPozice.Text + edtMat.Text; + end; + + + + procedure TformGenTPV.edtMatExit(Sender: TObject); + begin + edtMat.Text:= Trim(edtMat.Text); + edtRegC.Text:= edtCisOrg.Text + edtPozice.Text + edtMat.Text; + end; + + + + procedure TformGenTPV.edtPoziceExit(Sender: TObject); + begin + edtPozice.Text:= Trim(StringReplace(edtPozice.Text, ' ', '', [rfReplaceAll])); + edtPozice.Text:= StringOfChar('0', 3-Length(edtPozice.Text)) + edtPozice.Text; + edtRegC.Text:= edtCisOrg.Text + edtPozice.Text + edtMat.Text; + end; + + + + procedure TformGenTPV.edtRegCNChange(Sender: TObject); + begin + if (edtRegCN.Text<>'') and (cbRCdleFin.Enabled) then + begin + cbRCdleFin.Enabled:= false; + cbRCdleFin.Checked:= false; + end; + if (edtRegCN.Text='') and (cbRCdleFin.Enabled=false) then + cbRCdleFin.Enabled:= true; + end; + + + + procedure TformGenTPV.edtTechExit (Sender: TObject); + begin + if (edtTech.Text<>tech) then + Helios.Error(#1'Zadan technologie nen stejn jako m vzorov karta.' + CRLF + '(vzor m ' + tech + ')'); + end; + + + + procedure TformGenTPV.edtVzorTPVButtonClick (Sender: TObject); + var podm, rc, tech: string; + begin + podm:= 'TabKmenZbozi.dilec=1 AND TabKmenZbozi.SkupZbo=N' + QuotedStr(cboxVOD.Text); + if (idKZrodic>0) then + oVar:= helUtils.getHeliosStrVal(Helios, '', 'SELECT CisloZbozi FROM ' + tblKZ + ' WHERE ID=' + idKZrodic.ToString); + if Helios.Prenos(bidDilce, 'TabKmenZbozi.CisloZbozi', oVar, podm, 'Vzorov karta', true) then + begin + edtVzorTPV.Text:= VarToStr(oVar); + rc:= MidStr(edtVzorTPV.Text, 4, 50); + tech:= helUtils.getHeliosStrVal(Helios, '', 'SELECT DruhTechnologie FROM ' + tblOdlitky + ' WHERE Odlitek=N' + QuotedStr(rc)); + if (edtTech.Text<>'0') then + if (edtTech.Text<>tech) then + if not Helios.YesNo(#1'Vybran vzor nem stejnou technologii jako nov vytven karta.' + CRLF + 'Pesto pokraovat ?'#1, false) then + edtVzorTPV.Text:= ''; + lblVzorTPV.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev1 FROM ' + tblKZ + ' WHERE CisloZbozi=N' + QuotedStr(edtVzorTPV.Text)); + end; + end; + + + + procedure TformGenTPV.FormClose(Sender: TObject; var Action: TCloseAction); + begin + action:= caFree; + end; + + + + procedure TformGenTPV.FormShow(Sender: TObject); + var lSQL, rc: string; + i: integer; + begin + self.Icon.Handle:= Helios.MainApplicationIconHandle; +// self.ParentWindow:= Helios.MainApplicationHandle; + for i:=0 to Self.ComponentCount-1 do + begin + if (Self.Components[i] is TButton) then + begin + (Self.Components[i] as TButton).Font.Name:= Helios.Font; + (Self.Components[i] as TButton).Font.Height:= Helios.FontHeight; + end; + end; + cboxPrvniObal.ItemIndex:= 0; + if (idKZrodic>0) then + begin + edtVzorTPV.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT CisloZbozi FROM ' + tblKZ + ' WHERE ID=' + idKZRodic.ToString); + rc:= MidStr(edtVzorTPV.Text, 4, 50); + cboxVOD.ItemIndex:= cboxVOD.Items.IndexOf(LeftStr(edtVzorTPV.Text,3)); + tech:= helUtils.getHeliosStrVal(Helios, '', 'SELECT DruhTechnologie FROM ' + tblOdlitky + ' WHERE Odlitek=N' + QuotedStr(rc)); + if (helUtils.HeliosExistsTest(Helios, tblOdlitky, 'ISNULL(MatecniOdlitek,N'''')<>N''''')) then + begin + lSQL:= 'SELECT ISNULL(o1.DruhTechnologie, o.DruhTechnologie) FROM ' + tblOdlitky + ' o INNER JOIN ' + tblOdlitky; + lSQL:= lSQL + ' o1 ON (o1.Odlitek=o.MatecniOdlitek) WHERE o.Odlitek=N' + rc.QuotedString; + if (helUtils.getHeliosStrVal(Helios, '', lSQL)<>'') then + tech:= helUtils.getHeliosStrVal(Helios, '', lSQL); + end; + + + lblVzorTPV.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev1 FROM ' + tblKZ + ' WHERE CisloZbozi=N' + QuotedStr(edtVzorTPV.Text)); + edtCisOrg.SetFocus; + end; + end; + +end. diff --git a/frmHrOdvOper.dfm b/frmHrOdvOper.dfm new file mode 100644 index 0000000..d9c39fe --- /dev/null +++ b/frmHrOdvOper.dfm @@ -0,0 +1,1592 @@ +object formHrOdvOper: TformHrOdvOper + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu] + Caption = ' Hromadn'#225' evidence operac'#237 + ClientHeight = 796 + ClientWidth = 1586 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + KeyPreview = True + Position = poOwnerFormCenter + OnActivate = FormActivate + OnMouseUp = FormMouseUp + OnResize = FormResize + OnShow = FormShow + TextHeight = 19 + object lbl18: TLabel + Left = 76 + Top = 278 + Width = 263 + Height = 19 + Caption = 'Operace odv'#225'd'#283'n'#233': ('#269'as dle normy:' + end + object lbl19: TLabel + Left = 873 + Top = 278 + Width = 245 + Height = 19 + Caption = 'Operace dle TPV: ('#269'as dle normy:' + end + object lblCasNormVP: TLabel + Left = 1122 + Top = 278 + Width = 61 + Height = 19 + Caption = '0.0 min)' + end + object lblCasNormEvid: TLabel + Left = 362 + Top = 278 + Width = 61 + Height = 19 + Caption = '0.0 min)' + end + object Label3: TLabel + Left = 31 + Top = 575 + Width = 132 + Height = 19 + Caption = 'Evidovan'#233' celkem:' + end + object lblPlneni: TLabel + Left = 37 + Top = 428 + Width = 16 + Height = 19 + Alignment = taRightJustify + BiDiMode = bdLeftToRight + Caption = '%' + Font.Charset = DEFAULT_CHARSET + Font.Color = clRed + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBiDiMode = False + ParentFont = False + end + object lblNormaKs: TLabel + Left = 1525 + Top = 278 + Width = 5 + Height = 19 + Alignment = taRightJustify + end + object grpZam: TGroupBox + Left = 188 + Top = 147 + Width = 434 + Height = 105 + Caption = ' Zam'#283'stnanec ' + TabOrder = 2 + object lbl1: TLabel + Left = 14 + Top = 27 + Width = 55 + Height = 19 + Caption = 'Os.'#269#237'slo' + end + object lbl2: TLabel + Left = 137 + Top = 27 + Width = 47 + Height = 19 + Caption = 'Jm'#233'no' + end + object lbl3: TLabel + Left = 225 + Top = 12 + Width = 100 + Height = 19 + Alignment = taRightJustify + Caption = #218'vazek (hod):' + end + object lblUvazek: TLabel + Left = 351 + Top = 12 + Width = 32 + Height = 19 + Alignment = taRightJustify + Caption = '8,00' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lbl14: TLabel + Left = 225 + Top = 34 + Width = 95 + Height = 19 + Alignment = taRightJustify + Caption = 'Zb'#253'vaj'#237'c'#237' '#269'as:' + end + object lblZbyvCas: TLabel + Left = 346 + Top = 34 + Width = 55 + Height = 19 + Caption = '0h 00m' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object edtOsCislo: TComboEdit + Left = 14 + Top = 58 + Width = 101 + Height = 33 + Alignment = taCenter + ClickKey = 16397 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + GlyphKind = gkEllipsis + ButtonWidth = 17 + NumGlyphs = 1 + ParentFont = False + ParentShowHint = False + ShowHint = True + TabOrder = 0 + Text = '' + OnButtonClick = edtOsCisloButtonClick + OnExit = edtOsCisloExit + OnKeyPress = edtOsCisloKeyPress + end + object edtJmeno: TComboEdit + Left = 137 + Top = 58 + Width = 262 + Height = 33 + TabStop = False + ClickKey = 16397 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + GlyphKind = gkEllipsis + NumGlyphs = 1 + ParentFont = False + ParentShowHint = False + ShowHint = True + TabOrder = 1 + Text = '' + OnButtonClick = edtJmenoButtonClick + end + end + object grpPrikaz: TGroupBox + Left = 532 + Top = 12 + Width = 515 + Height = 121 + Caption = ' V'#253'robn'#237' p'#345#237'kaz ' + TabOrder = 1 + object Label2: TLabel + Left = 203 + Top = 19 + Width = 110 + Height = 19 + Caption = 'Kmenov'#233' st'#345'ed.' + end + object lblKmenStred: TLabel + Left = 207 + Top = 44 + Width = 7 + Height = 25 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblZbytekKs: TLabel + Left = 396 + Top = 44 + Width = 7 + Height = 25 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblZbyvaKs: TLabel + Left = 392 + Top = 19 + Width = 74 + Height = 19 + Caption = 'Zb'#253'v'#225' (ks)' + end + object edtPrikaz: TComboEdit + Left = 14 + Top = 41 + Width = 177 + Height = 33 + Alignment = taCenter + ClickKey = 16397 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + GlyphKind = gkEllipsis + NumGlyphs = 1 + OEMConvert = True + ParentFont = False + ParentShowHint = False + ShowHint = True + TabOrder = 0 + Text = '' + OnButtonClick = edtPrikazButtonClick + OnExit = edtPrikazExit + OnKeyUp = edtPrikazKeyUp + end + object edtNazevZbozi: TEdit + Left = 14 + Top = 77 + Width = 383 + Height = 33 + TabStop = False + Enabled = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + ReadOnly = True + TabOrder = 1 + end + end + object grpSmena: TGroupBox + Left = 640 + Top = 148 + Width = 430 + Height = 104 + Caption = ' Den / sm'#283'na ' + TabOrder = 3 + object lbl12: TLabel + Left = 169 + Top = 20 + Width = 78 + Height = 19 + Caption = 'K'#243'd sm'#283'ny' + end + object Label1: TLabel + Left = 21 + Top = 78 + Width = 79 + Height = 19 + Alignment = taRightJustify + Caption = 'Evidov'#225'no:' + end + object lblEvid: TLabel + Left = 106 + Top = 78 + Width = 55 + Height = 19 + Caption = '0h 00m' + end + object Label6: TLabel + Left = 272 + Top = 16 + Width = 76 + Height = 19 + Caption = 'Obalovna' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object Label7: TLabel + Left = 359 + Top = 16 + Width = 51 + Height = 19 + Caption = 'D'#225'vka' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object edtSmena: TComboEdit + Left = 173 + Top = 40 + Width = 68 + Height = 33 + TabStop = False + Alignment = taCenter + ClickKey = 16397 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + GlyphKind = gkEllipsis + NumGlyphs = 1 + ParentFont = False + ParentShowHint = False + ShowHint = True + TabOrder = 1 + Text = '' + OnButtonClick = edtSmenaButtonClick + end + object dtDatum: TRzDateTimeEdit + Left = 21 + Top = 40 + Width = 131 + Height = 33 + TabStop = False + CalendarElements = [ceYear, ceMonth, ceArrows, ceDaysOfWeek, ceFillDays, ceTodayButton] + CaptionTodayBtn = 'Dnes' + CaptionSet = 'Vyberte datum' + Date = 43765.000000000000000000 + MinDate = 41275.000000000000000000 + ShowHowToUseHint = False + EditType = etDate + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + ParentShowHint = False + ShowHint = False + TabOrder = 0 + OnChange = dtDatumChange + end + object edtObalovna: TEdit + Left = 281 + Top = 41 + Width = 55 + Height = 33 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + MaxLength = 2 + NumbersOnly = True + ParentFont = False + TabOrder = 2 + end + object edtObalovnaDavka: TEdit + Left = 359 + Top = 40 + Width = 55 + Height = 33 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + MaxLength = 2 + NumbersOnly = True + ParentFont = False + TabOrder = 3 + end + end + object btnOpAdd1: TButton + Left = 757 + Top = 329 + Width = 40 + Height = 40 + Caption = '<' + TabOrder = 6 + OnClick = btnOpAdd1Click + end + object btnOpAddVse: TButton + Left = 757 + Top = 386 + Width = 40 + Height = 40 + Caption = '<<' + TabOrder = 5 + OnClick = btnOpAddVseClick + end + object btnOpDel1: TButton + Left = 757 + Top = 446 + Width = 40 + Height = 40 + Caption = '>' + TabOrder = 7 + OnClick = btnOpDel1Click + end + object btnOpDelVse: TButton + Left = 757 + Top = 504 + Width = 40 + Height = 40 + Caption = '>>' + TabOrder = 8 + OnClick = btnOpDelVseClick + end + object btnOK: TBitBtn + Left = 1145 + Top = 654 + Width = 169 + Height = 67 + Caption = ' OK + Konec' + Default = True + Glyph.Data = { + DE010000424DDE01000000000000760000002800000024000000120000000100 + 0400000000006801000000000000000000001000000000000000000000000000 + 80000080000000808000800000008000800080800000C0C0C000808080000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333 + 3333333333333333333333330000333333333333333333333333F33333333333 + 00003333344333333333333333388F3333333333000033334224333333333333 + 338338F3333333330000333422224333333333333833338F3333333300003342 + 222224333333333383333338F3333333000034222A22224333333338F338F333 + 8F33333300003222A3A2224333333338F3838F338F33333300003A2A333A2224 + 33333338F83338F338F33333000033A33333A222433333338333338F338F3333 + 0000333333333A222433333333333338F338F33300003333333333A222433333 + 333333338F338F33000033333333333A222433333333333338F338F300003333 + 33333333A222433333333333338F338F00003333333333333A22433333333333 + 3338F38F000033333333333333A223333333333333338F830000333333333333 + 333A333333333333333338330000333333333333333333333333333333333333 + 0000} + NumGlyphs = 2 + TabOrder = 11 + OnClick = btnOKClick + end + object btnQuit: TBitBtn + Left = 1367 + Top = 654 + Width = 148 + Height = 67 + Caption = ' Storno' + Kind = bkCancel + NumGlyphs = 2 + TabOrder = 12 + OnClick = btnQuitClick + end + object btnDalsiPrikaz: TBitBtn + Left = 857 + Top = 703 + Width = 229 + Height = 72 + Caption = ' OK + Dal'#353#237' d'#225'vka/p'#345#237'kaz' + Glyph.Data = { + DE010000424DDE01000000000000760000002800000024000000120000000100 + 0400000000006801000000000000000000001000000000000000000000000000 + 80000080000000808000800000008000800080800000C0C0C000808080000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333444444 + 33333333333F8888883F33330000324334222222443333388F3833333388F333 + 000032244222222222433338F8833FFFFF338F3300003222222AAAAA22243338 + F333F88888F338F30000322222A33333A2224338F33F8333338F338F00003222 + 223333333A224338F33833333338F38F00003222222333333A444338FFFF8F33 + 3338888300003AAAAAAA33333333333888888833333333330000333333333333 + 333333333333333333FFFFFF000033333333333344444433FFFF333333888888 + 00003A444333333A22222438888F333338F3333800003A2243333333A2222438 + F38F333333833338000033A224333334422224338338FFFFF8833338000033A2 + 22444442222224338F3388888333FF380000333A2222222222AA243338FF3333 + 33FF88F800003333AA222222AA33A3333388FFFFFF8833830000333333AAAAAA + 3333333333338888883333330000333333333333333333333333333333333333 + 0000} + NumGlyphs = 2 + TabOrder = 10 + OnClick = btnDalsiPrikazClick + end + object gridOperEvid: TNextGrid6 + Left = 57 + Top = 306 + Width = 681 + Height = 262 + ParentColor = False + TabOrder = 13 + TabStop = True + Touch.InteractiveGestures = [igPan, igPressAndTap] + Touch.InteractiveGestureOptions = [igoPanSingleFingerHorizontal, igoPanSingleFingerVertical, igoPanInertia, igoPanGutter, igoParentPassthrough] + OnDragDrop = gridOperEvidDragDrop + OnDragOver = gridOperEvidDragOver + OnMouseDown = gridOperEvidMouseDown + ActiveView = view2 + ActiveViewIndex = 0 + RowHeight = 30 + ScrollBars = [sbVertical] + SelectFullRow = True + Style = stUserDefined + UserDefinedColorPalette.GeometryHoverColor = clBlack + OnCellClick = gridOperEvidCellClick + OnCellDblClick = gridOperEvidCellDblClick + OnResize = gridOperEvidResize + OnSelect = gridOperEvidSelect + OnCellChange = gridOperEvidCellChange + object view2: TNxReportGridView6 + ColumnMoving = False + GridLines = True + HeaderHeight = 40 + end + object colOpEvidCislo: TNxNumberColumn6 + Tag = 1 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -16 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = #268'.op.' + Header.Color = clInfoBk + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 0 + ParentFont = False + PlaceholderText = '1742.50' + Position = 0 + FormatMask = '#,##0' + Precision = 0 + Increment = 1.000000000000000000 + InsertString = '0' + end + object colOpEvidPopis: TNxTextColumn6 + Tag = 2 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -16 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'Popis' + Header.Color = clInfoBk + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 1 + ParentFont = False + PlaceholderText = 'Text Text' + Position = 1 + Width = 310 + end + object colOpEvidMnoz: TNxNumberColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Ks dobr'#233 + Header.Color = clInfoBk + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 2 + PlaceholderText = '1742' + Position = 2 + Width = 85 + FormatMask = '#,##0' + NumericEditOptions = [] + Precision = 0 + Increment = 1.000000000000000000 + InsertString = '0' + end + object colOpEvidZmetky: TNxNumberColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Zmetky' + Header.Color = clInfoBk + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 3 + PlaceholderText = '1742' + Position = 3 + Width = 95 + FormatMask = '#,##0' + NumericEditOptions = [] + Precision = 0 + Increment = 1.000000000000000000 + InsertString = '0' + end + object colOpEvidCasM: TNxNumberColumn6 + Tag = 3 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -16 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = #268'as (min)' + Header.Color = clInfoBk + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 4 + ParentFont = False + PlaceholderText = '1742.50' + Position = 4 + Width = 90 + FormatMask = '#,##0.###' + Precision = 0 + Increment = 1.000000000000000000 + InsertString = '0' + end + object colOpEvidCasS: TNxNumberColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -16 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = #268'as (sec)' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 5 + ParentFont = False + PlaceholderText = '1742.50' + Position = 5 + Visible = False + Width = 10 + FormatMask = '#,##0.###' + Precision = 0 + Increment = 1.000000000000000000 + InsertString = '0' + end + object colOpEvidIdPostup: TNxNumberColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -16 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'IDPostup' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 6 + ParentFont = False + PlaceholderText = '1742.50' + Position = 6 + Visible = False + Width = 8 + FormatMask = '#,##0.00' + Precision = 0 + Increment = 1.000000000000000000 + InsertString = '0' + end + object colOpEvidSkutCasS: TNxDateColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -16 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'Skut.'#269'as (sec)' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 7 + ParentFont = False + PlaceholderText = '03.06.2016' + Position = 7 + SortType = stAlphabetic + Visible = False + FormatMask = '#,##0.###' + InsertString = '30.12.1899' + end + object colOpEvidIdEvidOp: TNxNumberColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -16 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'IdEvidOperPol' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 8 + ParentFont = False + PlaceholderText = '1742.50' + Position = 8 + Visible = False + FormatMask = '#,##0.00' + Precision = 0 + Increment = 1.000000000000000000 + InsertString = '0' + end + object colOpEvidZive: TNxNumberColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'MnozZive' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 9 + PlaceholderText = '1742' + Position = 9 + Visible = False + FormatMask = '#,##0.00' + NumericEditOptions = [] + Precision = 0 + Increment = 1.000000000000000000 + InsertString = '0' + end + object colOpEvidMnozOrig: TNxNumberColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'MnozOrig' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 10 + PlaceholderText = '1742.50' + Position = 10 + Visible = False + FormatMask = '#,##0.00' + Increment = 1.000000000000000000 + InsertString = '0' + end + object colOpEvidNormaMin: TNxNumberColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'Norma (min)' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 11 + PlaceholderText = '1742.50' + Position = 11 + Visible = False + FormatMask = '#,##0.00' + Increment = 1.000000000000000000 + InsertString = '0' + end + object colOpEvidKodZavady: TNxNumberColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'K'#243'd z'#225'vady' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 12 + PlaceholderText = '1742.50' + Position = 12 + Resizeable = False + Selectable = False + Visible = False + Width = 8 + FormatMask = '#,##0.00' + Precision = 0 + Increment = 1.000000000000000000 + InsertString = '0' + end + end + object gridOperPrikaz: TNextGrid6 + Left = 815 + Top = 306 + Width = 765 + Height = 262 + ParentColor = False + TabOrder = 14 + TabStop = True + Touch.InteractiveGestures = [igPan, igPressAndTap] + Touch.InteractiveGestureOptions = [igoPanSingleFingerHorizontal, igoPanSingleFingerVertical, igoPanInertia, igoPanGutter, igoParentPassthrough] + OnDragDrop = gridOperPrikazDragDrop + OnDragOver = gridOperPrikazDragOver + OnMouseDown = gridOperPrikazMouseDown + ActiveView = view1 + ActiveViewIndex = 0 + RowHeight = 30 + ScrollBars = [sbVertical] + SelectFullRow = True + Style = stUserDefined + UserDefinedColorPalette.GeometryHoverColor = clBlack + OnCellDblClick = gridOperPrikazCellDblClick + OnResize = gridOperPrikazResize + OnSelect = gridOperPrikazSelect + OnCellChange = gridOperPrikazCellChange + object view1: TNxReportGridView6 + ColumnMoving = False + GridLines = True + HeaderHeight = 40 + end + object colOpCislo: TNxNumberColumn6 + Tag = 1 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -16 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = #268'.op.' + Header.Color = clGradientActiveCaption + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 0 + ParentFont = False + PlaceholderText = '1742.50' + Position = 0 + FormatMask = '#,##0' + Precision = 0 + Increment = 1.000000000000000000 + InsertString = '0' + end + object colOpPopis: TNxTextColumn6 + Tag = 2 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -16 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'Popis' + Header.Color = clGradientActiveCaption + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 1 + ParentFont = False + PlaceholderText = 'Text Text' + Position = 1 + Width = 405 + end + object colOpMnozZive: TNxNumberColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Mno'#382'. '#382'iv'#233 + Header.Color = clGradientActiveCaption + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 2 + PlaceholderText = '1742.50' + Position = 2 + FormatMask = '#,##0' + Increment = 1.000000000000000000 + InsertString = '0' + end + object colOpMnoz: TNxNumberColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Mno'#382'. odv.' + Header.Color = clGradientActiveCaption + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 3 + PlaceholderText = '1742.50' + Position = 3 + Width = 85 + FormatMask = '#,##0' + Increment = 1.000000000000000000 + InsertString = '0' + end + object colOpCasM: TNxNumberColumn6 + Tag = 3 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -16 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = #268'as (min)' + Header.Color = clGradientActiveCaption + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 4 + ParentFont = False + PlaceholderText = '1742.50' + Position = 4 + Width = 90 + FormatMask = '#,##0.###' + Precision = 3 + Increment = 1.000000000000000000 + InsertString = '0' + end + object colOpCasS: TNxNumberColumn6 + Alignment = taLeftJustify + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -16 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = #268'as (sec)' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 5 + ParentFont = False + PlaceholderText = '1742.50' + Position = 5 + Visible = False + Width = 8 + FormatMask = '#,##0.##' + Precision = 0 + Increment = 1.000000000000000000 + InsertString = '0' + end + object colOpIdPostup: TNxNumberColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -16 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'IdPostup' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 6 + ParentFont = False + PlaceholderText = '1742.50' + Position = 6 + Visible = False + Width = 8 + FormatMask = '#,##0.00' + Precision = 0 + Increment = 1.000000000000000000 + InsertString = '0' + end + object colOpSkutCasS: TNxDateColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -16 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'Skut.'#269'as (sek)' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 7 + ParentFont = False + PlaceholderText = '03.06.2016' + Position = 7 + SortType = stAlphabetic + Visible = False + InsertString = '30.12.1899' + end + object colOpIdEvidOp: TNxNumberColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -16 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'IdEvidOperPol' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 8 + ParentFont = False + PlaceholderText = '1742.50' + Position = 8 + Visible = False + FormatMask = '#,##0.00' + Precision = 0 + Increment = 1.000000000000000000 + InsertString = '0' + end + object colOpNormaMin: TNxNumberColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'NormaMinKs' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 9 + PlaceholderText = '1742.50' + Position = 9 + Visible = False + FormatMask = '#,##0.00' + Increment = 1.000000000000000000 + InsertString = '0' + end + end + object gridAllEvid: TNextGrid6 + Left = 31 + Top = 598 + Width = 713 + Height = 190 + ParentColor = False + TabOrder = 15 + TabStop = True + Touch.InteractiveGestures = [igPan, igPressAndTap] + Touch.InteractiveGestureOptions = [igoPanSingleFingerHorizontal, igoPanSingleFingerVertical, igoPanInertia, igoPanGutter, igoParentPassthrough] + ActiveView = view3 + ActiveViewIndex = 0 + RowHeight = 30 + ScrollBars = [sbVertical] + SelectFullRow = True + Style = stUserDefined + UserDefinedColorPalette.GeometryHoverColor = clBlack + object view3: TNxReportGridView6 + ColumnMoving = False + GridLines = True + HeaderHeight = 30 + end + object colEvidOdlitek: TNxTextColumn6 + Tag = 1 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -16 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Odlitek' + Header.Color = clMoneyGreen + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 0 + ParentFont = False + PlaceholderText = 'Text Text' + Position = 0 + Width = 130 + end + object colEvidPopis: TNxTextColumn6 + Tag = 2 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -16 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'Popis' + Header.Color = clMoneyGreen + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 1 + ParentFont = False + PlaceholderText = 'Text Text' + Position = 1 + Width = 290 + end + object colEvidKs: TNxNumberColumn6 + Tag = 3 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -16 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'KS evid.' + Header.Color = clMoneyGreen + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 2 + ParentFont = False + PlaceholderText = '1742.50' + Position = 2 + FormatMask = '#,##0.00' + Precision = 0 + Increment = 1.000000000000000000 + InsertString = '0' + end + object colEvidCasM: TNxNumberColumn6 + Tag = 4 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -16 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = #268'as (min)' + Header.Color = clMoneyGreen + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 3 + ParentFont = False + PlaceholderText = '1742.50' + Position = 3 + Width = 85 + FormatMask = '#,##0.00' + Precision = 0 + Increment = 1.000000000000000000 + InsertString = '0' + end + object colEvidPlneni: TNxNumberColumn6 + Tag = 5 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -16 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Pln'#283'n'#237' %' + Header.Color = clMoneyGreen + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -16 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 4 + ParentFont = False + PlaceholderText = '1742.50' + Position = 4 + FormatMask = '#,##0.00' + Precision = 0 + Increment = 1.000000000000000000 + InsertString = '0' + end + end + object btnClearVP: TBitBtn + Left = 238 + Top = 45 + Width = 49 + Height = 46 + Cancel = True + Glyph.Data = { + DE010000424DDE01000000000000760000002800000024000000120000000100 + 0400000000006801000000000000000000001000000000000000000000000000 + 80000080000000808000800000008000800080800000C0C0C000808080000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333 + 333333333333333333333333000033338833333333333333333F333333333333 + 0000333911833333983333333388F333333F3333000033391118333911833333 + 38F38F333F88F33300003339111183911118333338F338F3F8338F3300003333 + 911118111118333338F3338F833338F3000033333911111111833333338F3338 + 3333F8330000333333911111183333333338F333333F83330000333333311111 + 8333333333338F3333383333000033333339111183333333333338F333833333 + 00003333339111118333333333333833338F3333000033333911181118333333 + 33338333338F333300003333911183911183333333383338F338F33300003333 + 9118333911183333338F33838F338F33000033333913333391113333338FF833 + 38F338F300003333333333333919333333388333338FFF830000333333333333 + 3333333333333333333888330000333333333333333333333333333333333333 + 0000} + NumGlyphs = 2 + TabOrder = 16 + OnClick = btnClearVPClick + end + object btnDalsiClovek: TBitBtn + Left = 857 + Top = 592 + Width = 229 + Height = 72 + Caption = ' OK + Dal'#353#237' zam'#283'stnanec' + Glyph.Data = { + DE010000424DDE01000000000000760000002800000024000000120000000100 + 0400000000006801000000000000000000001000000000000000000000000000 + 80000080000000808000800000008000800080800000C0C0C000808080000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333444444 + 33333333333F8888883F33330000324334222222443333388F3833333388F333 + 000032244222222222433338F8833FFFFF338F3300003222222AAAAA22243338 + F333F88888F338F30000322222A33333A2224338F33F8333338F338F00003222 + 223333333A224338F33833333338F38F00003222222333333A444338FFFF8F33 + 3338888300003AAAAAAA33333333333888888833333333330000333333333333 + 333333333333333333FFFFFF000033333333333344444433FFFF333333888888 + 00003A444333333A22222438888F333338F3333800003A2243333333A2222438 + F38F333333833338000033A224333334422224338338FFFFF8833338000033A2 + 22444442222224338F3388888333FF380000333A2222222222AA243338FF3333 + 33FF88F800003333AA222222AA33A3333388FFFFFF8833830000333333AAAAAA + 3333333333338888883333330000333333333333333333333333333333333333 + 0000} + NumGlyphs = 2 + TabOrder = 9 + OnClick = btnDalsiClovekClick + end + object grpDavka: TGroupBox + Left = 298 + Top = 12 + Width = 222 + Height = 105 + Caption = ' P'#345#237'jemka P12 / D'#225'vka VOSK' + TabOrder = 0 + object edtDavka: TComboEdit + Left = 12 + Top = 41 + Width = 193 + Height = 33 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + GlyphKind = gkEllipsis + NumGlyphs = 1 + ParentFont = False + TabOrder = 0 + Text = '' + OnButtonClick = edtDavkaButtonClick + OnExit = edtDavkaExit + end + end + object grpMnozCas: TGroupBox + Left = 1091 + Top = 147 + Width = 349 + Height = 108 + Caption = ' Mno'#382'stv'#237' / '#269'as ' + TabOrder = 4 + object lblVyrobeneKs: TLabel + Left = 11 + Top = 26 + Width = 218 + Height = 19 + Alignment = taCenter + Caption = 'Vyroben'#233' kusy v'#269'. zmetk'#367':' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object Label4: TLabel + Left = 301 + Top = 73 + Width = 27 + Height = 19 + Caption = 'min' + end + object Label5: TLabel + Left = 202 + Top = 75 + Width = 27 + Height = 19 + Caption = 'hod' + end + object lbl15: TLabel + Left = 22 + Top = 74 + Width = 112 + Height = 19 + Caption = #268'as skute'#269'n'#253':' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object edtCasHod: TRzNumericEdit + Left = 140 + Top = 67 + Width = 56 + Height = 33 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + MaxLength = 2 + ParentFont = False + TabOrder = 1 + OnExit = edtCasHodExit + Max = 99.000000000000000000 + DisplayFormat = ',0;-,0' + end + object edtCasMin: TRzNumericEdit + Left = 239 + Top = 65 + Width = 56 + Height = 33 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + MaxLength = 3 + ParentFont = False + TabOrder = 2 + OnExit = edtCasMinExit + Max = 999.000000000000000000 + DisplayFormat = ',0;(,0)' + end + object edtKusy: TRzNumericEdit + Left = 239 + Top = 21 + Width = 83 + Height = 33 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + MaxLength = 8 + ParentFont = False + TabOrder = 0 + OnChange = edtKusyChange + OnExit = edtKusyExit + IntegersOnly = False + DisplayFormat = ',0;(,0)' + end + end +end diff --git a/frmHrOdvOper.pas b/frmHrOdvOper.pas new file mode 100644 index 0000000..5daae26 --- /dev/null +++ b/frmHrOdvOper.pas @@ -0,0 +1,2052 @@ +unit frmHrOdvOper; + +{ + 28.11.2023 - lze skenovat poradove cislo dokladu prijemky, davka se bude postupne rusit kvuli zmene odvadeni P12 z vosku primo na sklad obalovny +} + + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, + Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls, Mask, + ddPlugin_TLB, +// KControls, KGrids, + Buttons, RzEdit, RzBtnEdt, RxToolEdit, NxCustomGrid6, NxGrid6, NxColumns6, NxTypes6, NxGridView6, + NxControls6, NxVirtualGrid6; + +const + errPlg = 'plgKdynium'; + tblEvidOper = '[dbo].[_hdc_TabHromEvidOper]'; + tblEvidOpPolozky = '[dbo].[_hdc_TabHromEvidOperPol]'; + tblDavky = '[dbo].[_hdc_TabDavky]'; + +type + TOper = record + Operace: shortString; + Koef: extended; + IdPostup: integer; + NormCas: Extended; + SkutCas: Extended; + zmetky: integer; + end; + + TformHrOdvOper = class(TForm) + grpZam: TGroupBox; + edtOsCislo: TComboEdit; + edtJmeno: TComboEdit; + lbl1: TLabel; + lbl2: TLabel; + lbl3: TLabel; + lblUvazek: TLabel; + grpPrikaz: TGroupBox; + edtPrikaz: TComboEdit; + edtNazevZbozi: TEdit; + grpSmena: TGroupBox; + edtSmena: TComboEdit; + lbl12: TLabel; + lblVyrobeneKs: TLabel; + edtKusy: TRzNumericEdit; + lbl14: TLabel; + lbl15: TLabel; + lblZbyvCas: TLabel; + lbl18: TLabel; + lbl19: TLabel; + btnOpAdd1: TButton; + btnOpAddVse: TButton; + btnOpDel1: TButton; + btnOpDelVse: TButton; + lblCasNormVP: TLabel; + lblCasNormEvid: TLabel; + dtDatum: TRzDateTimeEdit; + btnOK: TBitBtn; + btnQuit: TBitBtn; + Label1: TLabel; + lblEvid: TLabel; + Label2: TLabel; + lblKmenStred: TLabel; + edtCasHod: TRzNumericEdit; + edtCasMin: TRzNumericEdit; + Label5: TLabel; + Label4: TLabel; + btnDalsiPrikaz: TBitBtn; + Label3: TLabel; + gridOperEvid: TNextGrid6; + colOpEvidCislo: TNxNumberColumn6; + colOpEvidPopis: TNxTextColumn6; + colOpEvidCasM: TNxNumberColumn6; + gridOperPrikaz: TNextGrid6; + gridAllEvid: TNextGrid6; + colEvidOdlitek: TNxTextColumn6; + colEvidPopis: TNxTextColumn6; + colEvidKs: TNxNumberColumn6; + colEvidCasM: TNxNumberColumn6; + colEvidPlneni: TNxNumberColumn6; + colOpCasS: TNxNumberColumn6; + colOpCasM: TNxNumberColumn6; + colOpEvidCasS: TNxNumberColumn6; + colOpIdPostup: TNxNumberColumn6; + colOpEvidIdPostup: TNxNumberColumn6; + lblPlneni: TLabel; + colOpSkutCasS: TNxDateColumn6; + colOpEvidSkutCasS: TNxDateColumn6; + colOpEvidIdEvidOp: TNxNumberColumn6; + colOpIdEvidOp: TNxNumberColumn6; + view1: TNxReportGridView6; + view2: TNxReportGridView6; + view3: TNxReportGridView6; + colOpEvidZmetky: TNxNumberColumn6; + colOpPopis: TNxTextColumn6; + colOpCislo: TNxNumberColumn6; + btnClearVP: TBitBtn; + lblZbytekKs: TLabel; + lblZbyvaKs: TLabel; + colOpMnoz: TNxNumberColumn6; + colOpEvidMnoz: TNxNumberColumn6; + colOpEvidZive: TNxNumberColumn6; + colOpEvidMnozOrig: TNxNumberColumn6; + lblNormaKs: TLabel; + colOpNormaMin: TNxNumberColumn6; + colOpEvidNormaMin: TNxNumberColumn6; + btnDalsiClovek: TBitBtn; + colOpEvidKodZavady: TNxNumberColumn6; + grpDavka: TGroupBox; + edtDavka: TComboEdit; + grpMnozCas: TGroupBox; + edtObalovna: TEdit; + Label6: TLabel; + edtObalovnaDavka: TEdit; + Label7: TLabel; + colOpMnozZive: TNxNumberColumn6; + procedure btnQuitClick (Sender: TObject); + procedure FormShow (Sender: TObject); + procedure edtOsCisloButtonClick (Sender: TObject); + procedure edtSmenaButtonClick (Sender: TObject); + procedure btnOpAdd1Click (Sender: TObject); + procedure btnOpAddVseClick (Sender: TObject); + procedure gridOperPrikazMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + procedure gridOperPrikazDragOver (Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); + procedure gridOperPrikazDragDrop (Sender, Source: TObject; X, Y: Integer); + procedure gridOperPrikazChanged (Sender: TObject; ACol, ARow: Integer); + procedure gridOperEvidDragOver (Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); + procedure gridOperEvidDragDrop (Sender, Source: TObject; X, Y: Integer); + procedure gridOperEvidMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + procedure gridOperEvidResize (Sender: TObject); + procedure btnOpDel1Click (Sender: TObject); + procedure btnUkazOperClick (Sender: TObject); + procedure btnOpDelVseClick (Sender: TObject); + procedure edtKusyExit (Sender: TObject); + procedure edtPrikazButtonClick (Sender: TObject); + procedure edtVyrobekClick (Sender: TObject); + procedure edtPrikazExit (Sender: TObject); + procedure edtPrikazKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState); + procedure edtOsCisloExit (Sender: TObject); + procedure dtDatumChange (Sender: TObject); + procedure btnOKClick (Sender: TObject); + procedure edtOsCisloKeyPress (Sender: TObject; var Key: Char); + procedure btnDalsiPrikazClick (Sender: TObject); + procedure FormMouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + procedure FormActivate (Sender: TObject); + procedure gridOperPrikazResize (Sender: TObject); + procedure FormResize(Sender: TObject); + procedure gridOperPrikazCellDblClick(Sender: TObject; ACol, ARow: Integer); + procedure gridOperEvidCellDblClick(Sender: TObject; ACol, ARow: Integer); + procedure edtCasHodExit(Sender: TObject); + procedure edtCasMinExit(Sender: TObject); + procedure edtJmenoButtonClick(Sender: TObject); + procedure gridOperPrikazSelect(Sender: TObject; ACol, ARow: Integer); + procedure gridOperEvidSelect(Sender: TObject; ACol, ARow: Integer); + procedure btnClearVPClick(Sender: TObject); + procedure gridOperEvidCellChange(Sender: TObject; ACol, ARow: Integer); + procedure gridOperEvidCellClick(Sender: TObject; ACol, ARow: Integer; Button: TMouseButton); + procedure gridOperPrikazCellChange(Sender: TObject; ACol, ARow: Integer); + procedure edtKusyChange(Sender: TObject); + procedure btnDalsiClovekClick(Sender: TObject); + procedure edtDavkaExit(Sender: TObject); + procedure edtDavkaButtonClick(Sender: TObject); + private + procedure OnMsg (var Msg: TMsg; var Handled: Boolean); + function CasDleTPV (var casS,casM,casH: Extended): boolean; + function NactiOperace: boolean; + procedure FixGridCols (const grid: TNextGrid6); + procedure VyplnDataDleKZ; + procedure VyplnDataDleVPr; + procedure PrepoctiCasVP; + procedure PrepoctiCasEvid; + procedure NastavGridy; + procedure UdajeZamest (cZam,idZamest: integer; zbytekUvaz: boolean); + procedure NactiJizEvidOperace; + procedure NactiEvidenci; + public + Helios: IHelios; + filtrRada: string; + jeTest: Boolean; + jeEditace: boolean; + idHromEvidOp: integer; // ID z tabulky _TabEvidOperaci (pro editaci) + end; + +var + verText, evidMJ: ShortString; + formHrOdvOper: TformHrOdvOper; + oVar1, oVar2: OleVariant; + bidDavky, bidHDCLog: integer; + evidDavka: boolean; + + radaPrikP12Vosk, sklP12Obal, radaOdvP12Vosk: string; + + idZam, idVPr, idVPrOld, idKZ, idMObd, idDavka, idDokladOZ: integer; + vicPrikazu, davkaObal, dataUlozena: boolean; + sumCas_S, sumCas_M, sumCas_H, odvKs, zmetKs, zbytekKs, ksDavka: Extended; + casSk_S, casSk_M, casSk_H: extended; + opVPsel,opEvidsel: integer; // cislo vybraneho radku + novyVyr, novyClovek, hromAkce: Boolean; + + idOperaci: TArray; + + dragRow,dragCol: integer; + +implementation + uses System.StrUtils, System.DateUtils, System.RegularExpressions, frmInputNum, frmHrOdvOperZmetky, myUtils, helUtils; + +{$R *.dfm} + + procedure TformHrOdvOper.OnMsg (var Msg: tagMSG; var Handled: Boolean); + begin + if (Msg.hwnd=edtJmeno.Handle) and (Msg.message=WM_KEYDOWN) then + case Msg.wParam of + VK_TAB: begin + edtJmeno.Text:= Trim(edtJmeno.Text); + edtJmenoButtonClick(nil); + end; + end; + + end; + + + + procedure TformHrOdvOper.NactiEvidenci; + var lSQL, idOps: string; + i,idx,cnt: integer; + begin + idKZ:= 0; + lSQL:= 'SELECT IdKmenZbozi, CisloZamest, Mnozstvi, Datum, CasHod, CasMin, ISNULL(IDDavka,0) FROM ' + tblEvidOper + ' WHERE ID=' + IntToStR(idHromEvidOp); + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + edtDavka.Text:= ''; + idDavka:= StrToInt(VarToStr(FieldValues(6))); + if (idDavka>0) then + edtDavka.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT KodDavky FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString); + edtOsCislo.Text:= VarToStr(FieldValues(1)); + idKZ:= StrToInt(VarToStr(FieldValues(0))); + with Helios.OpenSQL('SELECT ID FROM ' + tblCZam + ' WHERE Cislo=' + edtOsCislo.Text) do + if not(VarIsNull(FieldValues(0))) then + idZam:= StrToInt(VarToStr(FieldValues(0))); + edtOsCisloExit(nil); + edtKusy.Value:= StrToFloat(VarToStr(FieldValues(2))); + dtDatum.Date:= StrToDateTime(VarToStr(FieldValues(3))); + edtCasHod.Value:= StrToFloat(VarToStr(FieldValues(4))); + edtCasMin.Value:= StrToFloat(VarToStr(FieldValues(5))); + VyplnDataDleKZ; + + cnt:= 0; + SetLength(idOperaci,0); + idOps:= ''; + with Helios.OpenSQL('SELECT ID FROM ' + tblEvidOpPolozky + ' WHERE IdEvidOper=' + IntToStr(idHromEvidOp)) do + if (RecordCount>0) then + begin + SetLength(idOperaci, RecordCount); + cnt:= 1; + First; + while not(EOF) do + begin + idOperaci[cnt-1]:= StrToInt(VarToStr(FieldValues(0))); + Inc(i); + Next; + end; + idOps:= ArrayIntToStr(idOperaci); + end; + if (cnt>0) then + begin + idx:= 0; + gridOperEvid.ClearRows; + gridOperEvid.RowCount:= cnt; + while (idx0) then + begin + for idx:=0 to gridOperEvid.RowCount-1 do + begin + for i:=0 to gridOperPrikaz.RowCount-1 do + if (gridOperEvid.Cell[4,idx]=gridOperPrikaz.Cell[4,i]) then + begin + gridOperPrikaz.DeleteRow(i); + Break; + end; + end; + PrepoctiCasVP; + end; + PrepoctiCasEvid; + end; + end; + end; + + + + procedure TformHrOdvOper.FixGridCols(const grid: TNextGrid6); + var i : integer; + TotWidth : integer; + VarWidth : integer; + ResizableColumnCount : integer; + AColumn : TNxColumn6; + begin + //total width of all columns before resize + TotWidth := 0; + //how to divide any extra space in the grid + VarWidth := 0; + //how many columns need to be auto-resized + ResizableColumnCount:= 0; + for i:=0 to -1 + grid.Columns.Count do + begin + TotWidth := TotWidth + grid.Columns[i].Width; + if grid.Columns[i].Tag <> 0 then + Inc(ResizableColumnCount); + end; + + //add 1px for the column separator line +// if dgColLines in grid.Options then + TotWidth:= TotWidth + grid.Columns.Count; + + //add indicator column width +// if dgIndicator in grid.Options then +// TotWidth:= TotWidth + IndicatorWidth; + + //width vale "left" + VarWidth:= grid.ClientWidth - TotWidth; + + //Equally distribute VarWidth + //to all auto-resizable columns + if (ResizableColumnCount>0) then + VarWidth:= varWidth div ResizableColumnCount; + + for i:=0 to -1 + grid.Columns.Count do + begin + AColumn := grid.Columns[i]; + if (AColumn.Tag<>0) then + begin + AColumn.Width:= AColumn.Width + VarWidth; + if (AColumn.Width'') then + begin + gridAllEvid.ClearRows; + sql:= 'SELECT kz.RegCis, kz.Nazev1, e.Mnozstvi, (e.CasHod*60)+e.CasMin, ROUND(ep.Plneni,1) FROM ' + tblEvidOper; + sql:= sql + ' e INNER JOIN ' + tblKZ + ' kz ON (e.IdKmenZbozi=kz.id) INNER JOIN '; + sql:= sql + '(SELECT IdEvidOper, AVG(Plneni) As [Plneni] FROM ' + tblEvidOpPolozky; + sql:= sql + ' GROUP BY IdEvidOper) ep ON (e.id=ep.IdEvidOper) WHERE e.CisloZamest=' + edtOsCislo.Text; + sql:= sql + ' AND CONVERT(DATETIME,CONVERT(INT,CONVERT(FLOAT,e.Datum)))=CONVERT(datetime,N'; + sql:= sql + QuotedStr(DateTimeToStr(dtDatum.Date)) + ',104) ORDER BY e.DatPorizeni DESC'; + with Helios.OpenSQL(sql) do + if RecordCount>0 then + begin + gridAllEvid.RowCount:= RecordCount; + idx:= 0; + First; + while not(EOF) do + begin + gridAllEvid.Cell[colEvidOdlitek.Index, idx].AsString:= VarHodnota(FieldValues(0),''); // odlitek + gridAllEvid.Cell[colEvidPopis.Index, idx].AsString:= VarHodnota(FieldValues(1),''); // nazev odlitku + gridAllEvid.Cell[colEvidKs.Index, idx].AsFloat:= VarHodnota(FieldValues(2),0.0); // ks + gridAllEvid.Cell[colEvidCasM.Index, idx].AsInteger:= VarHodnota(FieldValues(3),0); // cas min + gridAllEvid.Cell[colEvidPlneni.Index, idx].AsFloat:= VarHodnota(FieldValues(4),0.0); // plneni + Inc(idx); + Next; + end; + end; + end; + end; + + + + procedure TformHrOdvOper.btnClearVPClick(Sender: TObject); + begin + idKZ:= 0; + idVPr:= 0; + lblKmenStred.Caption:= ''; + edtKusy.Value:= 0; + lblZbytekKs.Caption:= ''; + edtCasHod.Value:= 0; + edtCasMin.Value:= 0; + edtPrikaz.Text:= ''; + edtNazevZbozi.Text:= ''; + gridOperPrikaz.ClearRows; + gridOperEvid.ClearRows; + lblCasNormVP.Caption:= '0.0 min)'; + lblCasNormEvid.Caption:= '0.0 min)'; + lblNormaKs.Caption:= ''; + edtPrikaz.SetFocus; + end; + + + + procedure TformHrOdvOper.btnDalsiClovekClick(Sender: TObject); + begin + novyClovek:= true; + btnDalsiPrikazClick(Sender); + end; + + + + procedure TformHrOdvOper.btnDalsiPrikazClick (Sender: TObject); + var i: integer; + begin + idHromEvidOp:= 0; + novyVyr:= true; + if (novyClovek) then + novyVyr:= false; + btnOKClick(Sender); + if not(dataUlozena) then + Exit; + + if (novyVyr) then + begin + edtPrikaz.Text:= ''; + edtNazevZbozi.Text:= ''; + lblKmenStred.Caption:= ''; + edtObalovna.Text:= ''; + edtObalovnaDavka.Text:= ''; + edtDavka.Text:= ''; + edtDavka.SetFocus; + end + else + begin + edtPrikazExit(Sender); + edtOsCislo.SetFocus; + end; + + novyVyr:= false; + novyClovek:= false; + + gridOperPrikaz.ClearRows; + gridOperEvid.ClearRows; + gridAllEvid.ClearRows; + NastavGridy; + + NactiOperace; + + lblCasNormVP.Caption:= '0.0 min)'; + lblNormaKs.Caption:= ''; + lblCasNormEvid.Caption:= '0.0 min)'; + i:= 0; + while (i<=Self.ComponentCount-1) do + begin + if (Self.Components[i] is TRzNumericEdit) then + (Self.Components[i] as TRzNumericEdit).Text:= '0'; + Inc(i); + end; + end; + + + + procedure TformHrOdvOper.btnOKClick (Sender: TObject); + var pIdx, oIdx, idx, ppIdx, idx2, idPMZ, iDokl: integer; + lSQL, msg: string; + Vpr: IHeQuery; + dt, doklad: string; + zbytek, opZbytek, OpCas, AllCas, CCas, EvidCas, odvOp, koefKS, ks, ksOdv, AllKsOdv: Extended; + mn, mnZ: Extended; + chyba, jeNovaEvid: boolean; + Operace: TArray; + idEvidOperPol: string; + begin + edtPrikaz.Text:= Trim(edtPrikaz.Text); + + if (idZam=0) then + begin + Helios.Error(#1'Chybn zadn zamstnanec.'#1); + edtOsCislo.SetFocus; + Exit; + end; + + with Helios.OpenSQL('SELECT Cislo FROM ' + tblCZam + ' WHERE Cislo=' + edtOsCislo.Text) do + if (RecordCount=0) then + begin + Helios.Error(#1'Chybn zadn zamstnanec.'#1); + edtOsCislo.SetFocus; + Exit; + end; + + if (edtOsCislo.Text='') then + begin + Helios.Error(#1'Pro evidenci nen zadn zamstnanec.'#1); + edtOsCislo.SetFocus; + Exit; + end; + + if (edtPrikaz.Text='') then + begin + Helios.Error(#1'Pro evidenci nen zadn Vrobn pkaz.'#1); + edtPrikaz.SetFocus; + Exit; + end; +{ + if (edtCasHod.Value=0) and (edtCasMin.Value=0) then + begin + Helios.Error(#1'Nen zadn as evidovanch operac.'#1); + edtCasHod.SetFocus; + Exit; + end; +} + if (gridOperEvid.RowCount=0) then + begin + Helios.Error(#1'K evidenci nejsou vybrny dn operace.'#1); + Exit; + end; + + +// if (gridOperEvid.RowCount=0) and not(novyVyr) then +// btnQuitClick(Sender); + + if (idVPr>0) or (idDavka>0) then + begin + ReseedTable(Helios,tblEvidOper); + ReseedTable(Helios,tblEvidOpPolozky); + + jeNovaEvid:= (idHromEvidOp=0); + + if (idHromEvidOp=0) then + begin + lSQL:= 'INSERT ' + tblEvidOper + ' (IdKmenZbozi, IdPrikaz, Mnozstvi, CisloZamest, Datum, CasHod, CasMin, Poznamka, ' + IfThen(evidDavka, 'IdDavka', 'IDDokladOZ') + ') SELECT '; + if (idKZ>0) and (idDavka=0) then + lSQL:= lSQL + IntToStr(idKZ) + else + lSQL:= lSQL + 'null'; + lSQL:= lSQL + ', ' + IfThen(idVPr>0, idVPr.ToString, 'NULL'); + lSQL:= lSQL + ', ' + StringReplace(FloatToStr(edtKusy.Value),',','.',[rfReplaceAll]) + ','; + if (idZam>0) then + lSQL:= lSQL + edtOsCislo.Text + else + lSQL:= lSQL + 'null'; + lSQL:= lSQL + ',CONVERT(datetime,N' + QuotedStr(DateToStr(dtDatum.Date) + ' ' + TimeToStr(Now)) + ',104)'; + lSQL:= lSQL + ', ' + StringReplace(FloatToStr(edtCasHod.Value),',','.',[rfReplaceAll]); + lSQL:= lSQL + ', ' + StringReplace(FloatToStr(edtCasMin.Value),',','.',[rfReplaceAll]); + lSQL:= lSQL + ', N'+ QuotedStr(verText) + ', ' + IfThen(idDavka>0, idDavka.ToString, idDokladOZ.ToString); + lSQL:= lSQL + CRLF + 'SELECT SCOPE_IDENTITY()'; + try + with Helios.OpenSQL(lSQL) do + if not TryStrToInt(VarToStr(FieldValues(0)),idHromEvidOp) then + idHromEvidOp:= 0; + + if (idHromEvidOp>0) then + begin + if (davkaObal) then + begin + edtObalovna.Text:= TRegEx.Replace(Trim(edtObalovna.Text), '\D', ''); + edtObalovnaDavka.Text:= TRegEx.Replace(Trim(edtObalovnaDavka.Text), '\D', ''); + Helios.ExecSQL('UPDATE ' + tblEvidOper + ' SET Obalovna=N' + QuotedStr(edtObalovna.Text) + ' WHERE ID='+ idHromEvidOp.ToString); + Helios.ExecSQL('UPDATE ' + tblEvidOper + ' SET ObalovnaDavka=' + edtObalovnaDavka.Text + ' WHERE ID='+ idHromEvidOp.ToString); + end; + end; + + except on E:Exception do + begin + Helios.Error(#1'Nelze uloit hlaviku Hromadn evidence operac.'#1 + CRLF + E.Message); + Exit; + end; + end; + if (idHromEvidOp=0) then + begin + Helios.Error(#1'Nelze uloit hlaviku Hromadn evidence operac.'#1); + Exit; + end; + end + else + begin + if (jeEditace) then + begin +// zkus nejdriv pred updatem smazat neplatne evidovane operace (ty co jsem pri oprave zrusil) + idEvidOperPol:= ''; + for pIdx:=0 to gridOperEvid.RowCount-1 do + if (gridOperEvid.Cell[colOpEvidIdEvidOp.Index, pIdx].AsInteger<>0) then + idEvidOperPol:= idEvidOperPol + gridOperEvid.Cell[colOpEvidIdEvidOp.Index, pIdx].AsString + ','; + + if (RightStr(idEvidOperPol,1)=',') then + idEvidOperPol:= LeftStr(idEvidOperPol, Length(idEvidOperPol)-1); + + lSQL:= 'DELETE FROM ' + tblEvidOpPolozky + ' WHERE IdEvidOper=' + IntToStr(idHromEvidOp) + ' AND id NOT IN (' + idEvidOperPol + ')'; + try + Helios.ExecSQL(lSQL); + except on E:Exception do + begin + Helios.Error(#1'Chyba pi mazn neplatnch polokek Hromadn evidence operac.'#1 + CRLF + E.Message); + Exit; + end; + end; + end; + + lSQL:= 'UPDATE ' + tblEvidOper + ' SET Mnozstvi=' + StringReplace(FloatToStr(edtKusy.Value),',','.',[rfReplaceAll]); + if (idZam>0) then + lSQL:= lSQL + ', CisloZamest=' + edtOsCislo.Text; + lSQL:= lSQL + ', Datum=CONVERT(datetime, N' + QuotedStr(DateToStr(dtDatum.Date) + ' ' + TimeToStr(Now)) + ', 104)'; + lSQL:= lSQL + ', CasHod=' + StringReplace(FloatToStr(edtCasHod.Value),',','.',[rfReplaceAll]); + lSQL:= lSQL + ', CasMin=' + StringReplace(FloatToStr(edtCasMin.Value),',','.',[rfReplaceAll]); + lSQL:= lSQL + ', Poznamka=N' + QuotedStr(verText); + lSQL:= lSQL + ' WHERE ID=' + idHromEvidOp.ToString; + try + Helios.ExecSQL(lSQL); + except on E:Exception do + begin + Helios.Error(#1'Nelze zmnit hlaviku Hromadn evidence operac.'#1 + CRLF + E.Message); + Exit; + end; + end; + end; + + SetLength(Operace, gridOperEvid.RowCount); + CCas:= 0; + for pIdx:=0 to gridOperEvid.RowCount-1 do + CCas:= CCas + gridOperEvid.Cell[colOpEvidCasS.Index, pIdx].AsFloat; // cas operace v sekundach za 1 ks/str + + AllCas:= edtCasHod.Value * 3600 + edtCasMin.Value * 60; + + for pIdx:=0 to gridOperEvid.RowCount-1 do + begin + mn:= gridOperEvid.Cell[colOpEvidMnoz.Index, pIdx].AsFloat; + mnZ:= gridOperEvid.Cell[colOpEvidZmetky.Index, pIdx].AsFloat; + + Operace[pIdx].NormCas:= gridOperEvid.Cell[colOpEvidNormaMin.Index, pIdx].asFloat; // norma v min na 1 ks/str + Operace[pIdx].IdPostup:= gridOperEvid.Cell[colOpEvidIdPostup.Index, pIdx].AsInteger; + Operace[pIdx].Operace:= Trim(gridOperEvid.Cell[colOpEvidCislo.Index, pIdx].AsString); + if (CCas>0) then + Operace[pIdx].Koef:= RoundToEx((Operace[pIdx].NormCas*60)/CCas,-4) + else + Operace[pIdx].Koef:= 0; + + lSQL:= ''; + if (jeNovaEvid) then + begin + lSQL:= 'INSERT ' + tblEvidOpPolozky + ' (Mnozstvi, MnozstviZmetku, KodZmetku, IdPostup, Operace, Popis, NormCas_S, SkutCas_S, IdEvidOper) SELECT '; + lSQL:= lSQL + mn.ToString.Replace(',', '.') + ', '; + lSQL:= lSQL + mnZ.ToString.Replace(',', '.') + ', N'; + lSQL:= lSQL + QuotedStr(gridOperEvid.Cell[colOpEvidKodZavady.Index, pIdx].AsString) + ', '; + lSQL:= lSQL + gridOperEvid.Cell[colOpEvidIdPostup.Index, pIdx].AsString + ', N' + QuotedStr(gridOperEvid.Cell[colOpEvidCislo.Index, pIdx].AsString) + ',N'; + lSQL:= lSQL + QuotedStr(gridOperEvid.Cell[colOpEvidPopis.Index, pIdx].AsString) + ', '; + lSQL:= lSQL + StringReplace(FloatToStr(edtKusy.Value * Operace[pIdx].NormCas),',','.',[rfReplaceAll]) + ', '; + lSQL:= lSQL + StringReplace(FloatToStr(AllCas * Operace[pIdx].Koef),',','.',[rfReplaceAll]) + ', '; + lSQL:= lSQL + IntToStr(idHromEvidOp); + end + else + begin + lSQL:= 'UPDATE ' + tblEvidOpPolozky + ' SET Mnozstvi=' + gridOperEvid.Cell[colOpEvidMnoz.Index, pIdx].AsFloat.ToString.Replace(',', '.'); + lSQL:= lSQL + ', MnozstviZmetku=' + gridOperEvid.Cell[colOpEvidZmetky.Index, pIdx].AsFloat.ToString.Replace(',', '.'); + lSQL:= lSQL + ', KodZmetku=N' + QuotedStr(gridOperEvid.Cell[colOpEvidKodZavady.Index, pIdx].AsString); + lSQL:= lSQL + ', NormCas_S=' + StringReplace(FloatToStr((mn+mnZ) * Operace[pIdx].NormCas),',','.',[rfReplaceAll]); + lSQL:= lSQL + ', SkutCas_S=' + StringReplace(FloatToStr(AllCas * Operace[pIdx].Koef),',','.',[rfReplaceAll]); + lSQL:= lSQL + ' WHERE IdEvidOper=' + IntToStr(idHromEvidOp) + ' AND ID=' + gridOperEvid.Cell[colOpEvidIdEvidOp.Index ,pIdx].AsString; + end; + try + if (lSQL<>'') then + Helios.ExecSQL(lSQL); + except on E:Exception do + Helios.Error(#1'Chyba pi ukldn poloky Hromadn evidence operac.'#1 + CRLF + E.Message); + end; + end; + + dataUlozena:= false; + if not(jeTest) then + begin + lSQL:= 'IF OBJECT_ID(N''dbo.ep_HDC_EvidOper_Hromadna'') IS NOT NULL EXEC dbo.ep_HDC_EvidOper_Hromadna @IdEvidOper=' + IntToStr(idHromEvidOp); + try + Helios.ExecSQL(lSQL); + dataUlozena:= true; + except on E:Exception do + Helios.Error(#1'Chyba pi evidenci operace Hromadn evidence.'#1 + CRLF + E.Message); + end; + end; + end; + + with Helios.OpenSQL('SELECT * FROM dbo._hdc_TabLog WHERE Typ=10 AND IDPomoc=' + idHromEvidOp.ToString) do + if (RecordCount>0) and (bidHDCLog>0) then + Helios.OpenBrowse(bidHDCLog, 'hvw_HDCLog.Typ=10 AND hvw_HDCLog.IDPomoc='+ idHromEvidOp.ToString); + + if (dataUlozena) then + begin + if not(novyVyr or novyClovek) then + btnQuitClick(Sender) + else + begin + idHromEvidOp:= 0; + if (novyVyr) then + begin + edtPrikaz.Text:= ''; + idVPr:= 0; + lblKmenStred.Caption:= ''; + lblZbytekKs.Caption:= ''; + edtKusy.Value:= 0; + edtCasHod.Value:= 0; + edtCasMin.Value:= 0; + novyClovek:= true; + gridOperEvid.ClearRows; + gridOperPrikaz.ClearRows; + gridAllEvid.ClearRows; + end; + if (novyClovek) then + begin + edtOsCislo.Text:= ''; + edtJmeno.Text:= ''; + lblUvazek.Caption:= '0,00'; + lblZbyvCas.Caption:= '0h 00m'; + lblCasNormVP.Caption:= '0.0 min)'; + idZam:= 0; + end; + if (novyVyr) then + edtPrikaz.SetFocus + else + if (novyClovek) then + begin + edtPrikazExit(Sender); + edtOsCislo.SetFocus; + end; + end; + end; + end; + + + + procedure TformHrOdvOper.btnOpAdd1Click(Sender: TObject); + var i: Integer; + begin + if (opVPsel>=0) then + begin + if (gridOperPrikaz.Cells[colOpCislo.Index, opVPsel]<>'') then + begin + hromAkce:= true; + gridOperEvid.RowCount:= gridOperEvid.RowCount + 1; + i:= gridOperEvid.RowCount -1; + gridOperEvid.Cell[colOpEvidCislo.Index, i].AsInteger:= gridOperPrikaz.Cell[colOpCislo.Index, opVPsel].AsInteger; + gridOperEvid.Cell[colOpEvidPopis.Index, i].AsString:= gridOperPrikaz.Cell[colOpPopis.Index, opVPsel].AsString; + gridOperEvid.Cell[colOpEvidIdPostup.Index, i].AsInteger:= gridOperPrikaz.Cell[colOpIdPostup.Index, opVPsel].AsInteger; + gridOperEvid.Cell[colOpEvidCasM.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpCasM.Index, opVPsel].AsFloat; + gridOperEvid.Cell[colOpEvidCasS.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpCasS.Index, opVPsel].AsFloat; + gridOperEvid.Cell[colOpEvidIdEvidOp.Index, i].AsInteger:= gridOperPrikaz.Cell[colOpIdEvidOp.Index, opVPsel].AsInteger; + gridOperEvid.Cell[colOpEvidSkutCasS.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpSkutCasS.Index, opVPsel].AsFloat; + gridOperEvid.Cell[colOpEvidMnoz.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnoz.Index, opVPsel].AsFloat; + gridOperEvid.Cell[colOpEvidZive.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnoz.Index, opVPsel].AsFloat; + gridOperEvid.Cell[colOpEvidMnozOrig.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnoz.Index, opVPsel].AsFloat; + gridOperEvid.Cell[colOpEvidNormaMin.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpNormaMin.Index, opVPsel].AsFloat; // norma v min + + gridOperEvid.Cell[colOpEvidZmetky.Index, i].AsFloat:= 0; + gridOperEvid.Cell[colOpEvidKodZavady.Index, i].AsString:= ''; + + gridOperPrikaz.DeleteRow(opVPsel); + gridOperEvid.Sort(colOpEvidCislo.Index, skAscending); + hromAkce:= false; + opVPsel:= -1; + end; + end; + PrepoctiCasVP; + PrepoctiCasEvid; + end; + + + + procedure TformHrOdvOper.btnOpDel1Click(Sender: TObject); + var lSQL: string; + i: Integer; + ksZad, ksEvid: Extended; + begin + if (opEvidSel>=0) then + begin + if (gridOperEvid.Cell[colOpEvidCislo.Index,opEvidSel].AsString<>'') then + begin + gridOperPrikaz.RowCount:= gridOperPrikaz.RowCount + 1; + i:= gridOperPrikaz.RowCount-1; + + gridOperPrikaz.Cell[colOpMnoz.Index, i].AsFloat:= edtKusy.Value; + gridOperPrikaz.Cell[colOpNormaMin.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidNormaMin.Index, opEvidSel].AsFloat; // norma v min + + gridOperPrikaz.Cell[colOpCislo.Index, i].AsInteger:= gridOperEvid.Cell[colOpEvidCislo.Index, opEvidSel].AsInteger; + gridOperPrikaz.Cell[colOpPopis.Index, i].AsString:= gridOperEvid.Cell[colOpEvidPopis.Index, opEvidSel].AsString; + gridOperPrikaz.Cell[colOpIdPostup.Index, i].AsInteger:= gridOperEvid.Cell[colOpEvidIdPostup.Index, opEvidSel].AsInteger; + gridOperPrikaz.Cell[colOpCasM.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidCasM.Index, opEvidSel].AsFloat; + gridOperPrikaz.Cell[colOpCasS.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidCasS.Index, opEvidSel].AsFloat; + gridOperPrikaz.Cell[colOpIdEvidOp.Index, i].AsInteger:= gridOperEvid.Cell[colOpEvidIdEvidOp.Index, opEvidSel].AsInteger; + gridOperPrikaz.Cell[colOpSkutCasS.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidSkutCasS.Index, opEvidSel].AsFloat; + + ksZad:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT kusy_zad FROM ' + tblPrPost + ' WHERE ID=' + gridOperPrikaz.Cell[colOpIdPostup.Index, i].AsString); + lSQL:= 'SELECT SUM(pmz.kusy_odv+pmz.kusy_zmet_neopr) FROM ' + tblPMZ + ' pmz INNER JOIN ' + tblPrPost + ' pp ON (pp.Alt=pmz.AltPrPostup'; + lSQL:= lSQL + ' AND pp.Doklad=pmz.DokladPrPostup AND pp.IDPrikaz=pmz.IDPrikaz) WHERE pp.ID=' + gridOperPrikaz.Cell[colOpIdPostup.Index, i].AsString; + ksEvid:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + gridOperPrikaz.Cell[colOpMnozZive.Index, i].AsFloat:= ksZad - ksEvid; + + if (gridOperPrikaz.Cell[colOpMnozZive.Index, i].AsFloat < gridOperPrikaz.Cell[colOpMnoz.Index, i].AsFloat) then + gridOperPrikaz.Cell[colOpMnoz.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnozZive.Index, i].AsFloat; + + gridOperEvid.DeleteRow(opEvidSel); + gridOperPrikaz.Sort(colOpCislo.Index, skAscending); + opEvidSel:= -1; + end; + end; + PrepoctiCasVP; + PrepoctiCasEvid; + end; + + + + procedure TformHrOdvOper.btnOpDelVseClick(Sender: TObject); + var i, vpRadek, evRadek: integer; + lSQL: string; + ksZad, ksEvid: Extended; + begin + edtKusy.Enabled:= true; + for evRadek:=0 to gridOperEvid.RowCount-1 do + begin + gridOperPrikaz.RowCount:= gridOperPrikaz.RowCount + 1; + i:= gridOperPrikaz.RowCount-1; + + gridOperPrikaz.Cell[colOpMnoz.Index, i].AsFloat:= edtKusy.Value; + gridOperPrikaz.Cell[colOpNormaMin.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidNormaMin.Index, evRadek].AsFloat; // norma v min + + gridOperPrikaz.Cell[colOpCislo.Index, i].AsInteger:= gridOperEvid.Cell[colOpEvidCislo.Index, evRadek].AsInteger; + gridOperPrikaz.Cell[colOpPopis.Index, i].AsString:= gridOperEvid.Cell[colOpEvidPopis.Index, evRadek].AsString; + gridOperPrikaz.Cell[colOpIdPostup.Index, i].AsInteger:= gridOperEvid.Cell[colOpEvidIdPostup.Index, evRadek].AsInteger; + gridOperPrikaz.Cell[colOpCasM.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidCasM.Index, evRadek].AsFloat; + gridOperPrikaz.Cell[colOpCasS.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidCasS.Index, evRadek].AsFloat; + gridOperPrikaz.Cell[colOpIdEvidOp.Index, i].AsInteger:= gridOperEvid.Cell[colOpEvidIdEvidOp.Index, evRadek].AsInteger; + gridOperPrikaz.Cell[colOpSkutCasS.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidSkutCasS.Index, evRadek].AsFloat; + + ksZad:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT kusy_zad FROM ' + tblPrPost + ' WHERE ID=' + gridOperPrikaz.Cell[colOpIdPostup.Index, i].AsString); + lSQL:= 'SELECT SUM(pmz.kusy_odv+pmz.kusy_zmet_neopr) FROM ' + tblPMZ + ' pmz INNER JOIN ' + tblPrPost + ' pp ON (pp.Alt=pmz.AltPrPostup'; + lSQL:= lSQL + ' AND pp.Doklad=pmz.DokladPrPostup AND pp.IDPrikaz=pmz.IDPrikaz) WHERE pp.ID=' + gridOperPrikaz.Cell[colOpIdPostup.Index, i].AsString; + ksEvid:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + gridOperPrikaz.Cell[colOpMnozZive.Index, i].AsFloat:= ksZad - ksEvid; + + if (gridOperPrikaz.Cell[colOpMnozZive.Index, i].AsFloat < gridOperPrikaz.Cell[colOpMnoz.Index, i].AsFloat) then + gridOperPrikaz.Cell[colOpMnoz.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnozZive.Index, i].AsFloat; + + end; + gridOperEvid.ClearRows; + NastavGridy; + gridOperPrikaz.Sort(colOpCislo.Index, skAscending); + PrepoctiCasVP; + PrepoctiCasEvid; + opEvidSel:= -1; + end; + + + + procedure TformHrOdvOper.btnOpAddVseClick(Sender: TObject); + var i, vpRadek, evRadek: integer; + begin + hromAkce:= true; + edtKusy.Enabled:= false; + for vpRadek:=0 to gridOperPrikaz.RowCount-1 do + begin + gridOperEvid.RowCount:= gridOperEvid.RowCount + 1; + i:= gridOperEvid.RowCount-1; + gridOperEvid.Cell[colOpEvidCislo.Index, i].AsInteger:= gridOperPrikaz.Cell[colOpCislo.Index, vpRadek].AsInteger; + gridOperEvid.Cell[colOpEvidPopis.Index, i].AsString:= gridOperPrikaz.Cell[colOpPopis.Index, vpRadek].AsString; + gridOperEvid.Cell[colOpEvidIdPostup.Index, i].AsInteger:= gridOperPrikaz.Cell[colOpIdPostup.Index, vpRadek].AsInteger; + gridOperEvid.Cell[colOpEvidCasM.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpCasM.Index, vpRadek].AsFloat; + gridOperEvid.Cell[colOpEvidNormaMin.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpNormaMin.Index, vpRadek].AsFloat; + gridOperEvid.Cell[colOpEvidCasS.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpCasS.Index, vpRadek].AsFloat; + gridOperEvid.Cell[colOpEvidIdEvidOp.Index, i].AsInteger:= gridOperPrikaz.Cell[colOpIdEvidOp.Index, vpRadek].AsInteger; + gridOperEvid.Cell[colOpEvidSkutCasS.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpSkutCasS.Index, vpRadek].AsFloat; + gridOperEvid.Cell[colOpEvidMnoz.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnoz.Index, vpRadek].AsFloat; +// gridOperEvid.Cell[colOpEvidZive.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnoz.Index, vpRadek].AsFloat; + gridOperEvid.Cell[colOpEvidMnozOrig.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnoz.Index, vpRadek].AsFloat; + gridOperEvid.Cell[colOpEvidZmetky.Index, i].AsFloat:= 0; + gridOperEvid.Cell[colOpEvidKodZavady.Index, i].AsString:= ''; + end; + gridOperPrikaz.ClearRows; + NastavGridy; + gridOperEvid.Sort(colOpEvidCislo.Index, skAscending); + PrepoctiCasVP; + PrepoctiCasEvid; + opVPsel:= -1; + hromAkce:= false; + end; + + + + procedure TformHrOdvOper.btnQuitClick(Sender: TObject); + begin + Close; + end; + + + + procedure TformHrOdvOper.btnUkazOperClick(Sender: TObject); + begin + if (idZam>0) then + Helios.OpenBrowse(bidEvidOp,'Datum=CONVERT(datetime,N' + QuotedStr(DateToStr(dtDatum.Date)) + ',104) AND Zamestnanec=' + IntToStr(idZam)); + end; + + + + procedure TformHrOdvOper.edtCasHodExit(Sender: TObject); + begin + PrepoctiCasVP; +// PrepoctiCasEvid; + end; + + + + procedure TformHrOdvOper.edtCasMinExit(Sender: TObject); + begin + PrepoctiCasVP; +// PrepoctiCasEvid; + end; + + + + procedure TformHrOdvOper.edtDavkaButtonClick(Sender: TObject); + var podm, lSQL, oldSkl: string; + begin + idDokladOZ:= 0; + if (Helios.YesNo('Vybrte doklad PEVODKY (P) ?', true)) then + begin + oVar1:= edtDavka.Text; + + oldSkl:= Helios.Sklad; + Helios.SetSklad(sklP12Obal); + podm:= 'TabDokladyZbozi.DruhPohybuZbo=0 AND TabDokladyZbozi.RadaDokladu=N' + radaOdvP12Vosk.QuotedString + ' AND TabDokladyZbozi.IDSklad=N' + sklP12Obal.QuotedString; + podm:= podm + ' AND DATEDIFF(day, TabDokladyZbozi.DatPorizeni, GETDATE())<8 AND TabDokladyZbozi.Realizovano=1 AND TabDokladyZbozi.Uctovano=0'; + if Helios.Prenos2(bidDZPrij, 'TabDokladyZbozi.ID', 'TabDokladyZbozi.DatPorizeni', oVar1, oVar2, podm, 'Vyberte pjemku P12', true, false, false, 1) then + begin + evidDavka:= false; + idDokladOZ:= VarToStr(oVar1).ToInteger; + edtDavka.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT PoradoveCislo FROM ' + tblDZ + ' WHERE ID=' + idDokladOZ.ToString); + edtDavkaExit(Sender); + end; + Helios.SetSklad(oldSkl); + end + else + begin + oVar2:= edtDavka.Text; + if Helios.Prenos2(bidDavky, 'hvw_Davky.ID', 'hvw_Davky.KodDavky', oVar1, oVar2, '', 'Vyberte vrobn Dvku', true, false, false, 1) then + begin + evidDavka:= true; + edtDavka.Text:= VarToStr(oVar2); + edtDavkaExit(Sender); + end; + end; + end; + + + + procedure TformHrOdvOper.edtDavkaExit (Sender: TObject); + var idDavkaRodic, i: integer; + lSQL: string; + begin + idDavka:= 0; + idVPr:= 0; + idVPrOld:= 0; + davkaObal:= false; + edtDavka.Text:= Trim(edtDavka.Text); + edtDavka.Text:= TRegEx.Replace(edtDavka.Text, '\D', ''); + if (edtDavka.Text<>'') then + begin + if (edtDavka.Text.Length=6) or (idDokladOZ>0) then + begin + i:= 0; + vicPrikazu:= false; + if not(TryStrToInt(edtDavka.Text, i)) then + i:= 0; + if (i>0) then + begin + if (idDokladOZ=0) then + begin + lSQL:= 'SELECT ID FROM ' + tblDZ + ' WHERE IDSklad=N' + sklP12Obal.QuotedString + ' AND RadaDokladu=N' + radaOdvP12Vosk.QuotedString + ' AND PoradoveCislo=' + i.ToString; + idDokladOZ:= helUtils.getHeliosIntVal(Helios, 0, lSQL); + end; + + if (idDokladOZ>0) then + lSQL:= 'SELECT IDPrikaz FROM ' + tblDZ + ' WHERE ID=' + idDokladOZ.ToString + else + begin + lSQL:= 'SELECT d.IDPrikaz FROM ' + tblDZ + ' d INNER JOIN ' + tblVPr + ' vpr ON (vpr.ID=d.IDPrikaz) INNER JOIN ' + tblPrikazRada + ' rvpr ON (rvpr.Rada=vpr.Rada)'; + lSQL:= lSQL + ' WHERE rvpr.RadaDokl_OdvedeniPrikazu=d.RadaDokladu AND rvpr.PrijemVyrDil_SkladProGenHlavDZ=d.IDSklad AND rvpr.Rada=N' + radaPrikP12Vosk.QuotedString; + lSQL:= lSQL + ' AND d.PoradoveCislo=' + i.ToString; + end; + idVPrOld:= helUtils.getHeliosIntVal (Helios, 0, lSQL); + idVPr:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDPrikazVyssi FROM ' + tblVPr + ' WHERE ID=' + idVPrOld.ToString); + end; + end + else + begin + idVPr:= 0; + vicPrikazu:= false; + idDavkaRodic:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDRodic FROM ' + tblDavky + ' WHERE KodDavky=' + edtDavka.Text); + if (idDavkaRodic=0) then + idDavka:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT ID FROM ' + tblDavky + ' WHERE KodDavky=' + edtDavka.Text); + if (LeftStr(edtDavka.Text,3)='120') then + begin + davkaObal:= true; + with Helios.OpenSQL('SELECT ID FROM ' + tblDavky + ' WHERE IDRodic=' + idDavka.ToString) do + if (RecordCount=0) then + idVPr:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDPrikazVyssi FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString) + else + begin + vicPrikazu:= true; + idVPr:= 0; + idVPrOld:= 0; + end; + end; + end; + + if not(vicPrikazu) and (idVPr>0) then + begin + edtPrikaz.Text:= helUtils.getHeliosStrVal (Helios, '', 'SELECT RadaPrikaz FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); + edtPrikazExit (Sender); + end + else + if (edtPrikaz.CanFocus) then + edtPrikaz.SetFocus; + end + else + begin + edtPrikaz.Text:= ''; + edtNazevZbozi.Text:= ''; + lblKmenStred.Caption:= ''; + lblZbytekKs.Caption:= ''; + idVPr:= 0; + idVPrOld:= 0; + end; + end; + + + + procedure TformHrOdvOper.edtJmenoButtonClick (Sender: TObject); + var z: integer; + podm: ShortString; + begin + podm:= ''; + if (edtJmeno.Text<>'') and (edtOsCislo.Text='') then + podm:= 'TabCisZam.Prijmeni LIKE N' + QuotedStr(Trim(edtJmeno.Text) + '%'); + if Helios.Prenos(bidCisZam, 'Cislo', oVar1, podm, 'Vyberte zamstnance', true) then + begin + z:= VarToStr(oVar1).ToInteger; + edtOsCislo.Text:= StringOfChar('0',6-Length(IntToStr(z))) + IntToStr(z); + idZam:= 0; + with Helios.OpenSQL('SELECT id FROM TabCisZam WHERE Cislo=' + edtOsCislo.Text) do + if (RecordCount>0) then + idZam:= StrToInt(VarToStr(FieldValues(0))); + if (idZam>0) then + begin + UdajeZamest(0,idZam,true); + if (edtKusy.CanFocus) then + edtKusy.SetFocus; + end; + end + else + begin + edtOsCislo.Text:= ''; + edtJmeno.Text:= ''; + idZam:= 0; + Helios.Error('Nebyl vybrn dn zamstnanec.'); + end; + end; + + + + procedure TformHrOdvOper.edtKusyChange(Sender: TObject); + var zb: extended; + begin + if (lblZbytekKs.Caption<>'') then + begin + if not(TryStrToFloat(lblZbytekKs.Caption, zb)) then + zb:= 0; + if (edtKusy.Value>zb) or (edtKusy.Value<0) then + begin + Helios.Error(#1'Chybn zadan odvdn mnostv.'#1); + edtKusy.SetFocus; + edtKusy.SelectAll; + end; + end; + end; + + + + procedure TformHrOdvOper.edtKusyExit(Sender: TObject); + var i: integer; + begin + if (edtKusy.Modified) then + begin + if (gridOperEvid.RowCount=0) and (gridOperPrikaz.RowCount>0) then + begin + for i:=0 to gridOperPrikaz.RowCount-1 do + begin + gridOperPrikaz.Cell[colOpMnoz.Index, i].AsFloat:= edtKusy.Value; + if (gridOperPrikaz.Cell[colOpMnoz.Index, i].AsFloat > gridOperPrikaz.Cell[colOpMnozZive.Index, i].AsFloat) then + gridOperPrikaz.Cell[colOpMnoz.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnozZive.Index, i].AsFloat; + end; + end; + if (gridOperEvid.RowCount>0) then + Helios.Error(#1'Zmna mnostv nen mon pokud mte vybrny evidovan operace'#1); + PrepoctiCasVP; + end; + end; + + + + function ZiskejCasMin(txt: ShortString): Extended; + var h,m: ShortString; + begin + h:= LeftStr(txt,Pos('h',txt)-1); + m:= MidStr(txt,Pos(' ',txt)+1,255); + m:= LeftStr(m,Pos('m',m)-1); + result:= (StrToInt(h)*60) + StrToInt(m); + end; + + + + procedure TformHrOdvOper.UdajeZamest(cZam, idZamest: integer; zbytekUvaz: boolean); + var prjm: string; + lSQL: string; + cas: Extended; + casH: integer; + begin + prjm:= ''; + if (cZam>0) then + with Helios.OpenSQL('SELECT PrijmeniJmeno,id FROM ' + tblCZam + ' WHERE Cislo=' + IntToStr(cZam)) do + if (RecordCount=1) then + begin + if (idZamest=0) then + begin + idZamest:= StrToInt(VarToStr(FieldValues(1))); + idZam:= idZamest; + end; + prjm:= VarToStr(FieldValues(0)); + end; + + if (idZamest>0) then + begin + with Helios.OpenSQL('SELECT ISNULL(DenniUvazek,0) FROM ' + tblZamMzd + ' WHERE IdObdobi=' + IntToStr(idMObd) + ' AND ZamestnanecID=' + IntToStr(idZamest)) do + if (RecordCount=1) then + lblUvazek.Caption:= FormatFloat('#0.00',StrToFloat(VarToStr(FieldValues(0)))); + + with Helios.OpenSQL('SELECT PrijmeniJmeno FROM ' + tblCZam + ' WHERE id=' + IntToStr(idZamest)) do + if (RecordCount=1) then + prjm:= VarToStr(FieldValues(0)); + end; + if (idZamest>0) or (cZam>0) then + edtJmeno.Text:= prjm; + + if (zbytekUvaz) and (idZam>0) and (dtDatum.Text<>'') and (edtOsCislo.Text<>'') then + begin + lblEvid.Caption:= '0h 00m'; + lSQL:= 'SELECT ISNULL(SUM(CasHod*60+CasMin),0) FROM ' + tblEvidOper + ' WHERE CisloZamest=' + edtOsCislo.Text; + lSQL:= lSQL + ' AND CONVERT(DATETIME,CONVERT(INT,CONVERT(FLOAT,Datum)))=CONVERT(datetime,N'; + lSQL:= lSQL + QuotedStr(DateTimeToStr(dtDatum.Date)) + ',104)'; + with Helios.OpenSQL(lSQL) do + if RecordCount>0 then + if not VarIsNull(FieldValues(0)) then + begin + cas:= StrToFloat(VarToStr(FieldValues(0))); + casH:= Trunc(cas/60); + lblEvid.Caption:= IntToStr(casH) + 'h ' + IntToStr(Trunc(cas-casH*60)) + 'm'; + cas:= StrToFloat(lblUvazek.Caption)*60 - ZiskejCasMin(lblEvid.Caption); + casH:= Trunc(cas/60); + lblZbyvCas.Caption:= IntToStr(casH) + 'h ' + IntToStr(Trunc(cas-casH*60)) + 'm'; + end; + end; + NactiJizEvidOperace; + end; + + + + procedure TformHrOdvOper.edtOsCisloButtonClick(Sender: TObject); + var z: integer; + begin + if Helios.Prenos(bidCisZam, 'Cislo', oVar1, '', 'Vyberte zamstnance', True) then + begin + z:= VarToStr(oVar1).ToInteger; + edtOsCislo.Text:= StringOfChar('0', 6-Length(IntToStr(z))) + IntToStr(z); + idZam:= 0; + with Helios.OpenSQL('SELECT id FROM TabCisZam WHERE Cislo=' + edtOsCislo.Text) do + if (RecordCount>0) then + idZam:= StrToInt(VarToStr(FieldValues(0))); + if (idZam>0) then + UdajeZamest(0,idZam,true); + end + else + Helios.Error('Nebyl vybrn dn zamstnanec.'); + end; + + + + procedure TformHrOdvOper.edtOsCisloExit(Sender: TObject); + var z: integer; + begin + edtOsCislo.Text:= Trim(edtOsCislo.Text); + if (edtOsCislo.Text<>'') then + begin + try + z:= StrToInt(edtOsCislo.Text); + edtOsCislo.Text:= StringOfChar('0', 6-Length(IntToStr(z))) + IntToStr(z); + if (edtOsCislo.Text<>'') then + UdajeZamest(StrToInt(edtOsCislo.Text), 0, true); + except + end; + end + else + begin + idZam:= 0; + end; + end; + + + + procedure TformHrOdvOper.edtOsCisloKeyPress(Sender: TObject; var Key: Char); + begin + if not(Key in ['0'..'9',Chr(VK_BACK),Chr(VK_PRIOR),Chr(VK_NEXT)]) then + Key:= #0; + end; + + + + procedure TformHrOdvOper.edtSmenaButtonClick(Sender: TObject); + begin + if Helios.Prenos(bidCSmen, 'kod', oVar1, '', 'Vyberte Smnu', True) then + begin + edtSmena.Text:= VarToStr(oVar1); + end; + end; + + + + function TformHrOdvOper.CasDleTPV(var casS,casM,casH: Extended): boolean; + var lSQL: WideString; + begin + Result:= false; + lSQL:= 'ISNULL(SUM(p.TAC_P_S+p.TBC_P_S+p.TEC_P_S),0), ISNULL(SUM(p.TAC_P_N+p.TBC_P_N+p.TEC_P_N),0), '; + lSQL:= lSQL + 'ISNULL(SUM(p.TAC_P_H+p.TBC_P_H+p.TEC_P_H),0)'; + lSQL:= 'SELECT ' + lSQL + ' FROM ' + tblPrikaz + ' p WHERE '; + if (idKZ>0) then + begin + lSQL:= lSQL + 'p.IDTabKmen=' + IntToStr(idKZ); + lSQL:= lSQL + ' AND p.StavPrikazu IN (30,40) AND p.kusy_zive>0'; + end + else + lSQL:= ''; + if (lSQL<>'') then + with Helios.OpenSQL(lSQL) do + begin + casS:= StrToFloat(VarToStr(FieldValues(0))); + casM:= StrToFloat(VarToStr(FieldValues(1))); + casH:= StrToFloat(VarToStr(FieldValues(2))); + result:= true; + end; + end; + + procedure TformHrOdvOper.dtDatumChange(Sender: TObject); + var sql: WideString; + begin + sql:= 'SELECT IdObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + IntToStr(YearOf(dtDatum.Date)); + sql:= sql + ' AND Mesic=' + IntToStr(MonthOf(dtDatum.Date)); + with Helios.OpenSQL(sql) do + if RecordCount=1 then + idMObd:= StrToInt(VarToStr(FieldValues(0))); + if (idZam>0) then + UdajeZamest(0,idZam,true); + end; + + + + procedure TformHrOdvOper.PrepoctiCasVP; + var c: Extended; + i: integer; + begin + c:= 0; + if (gridOperPrikaz.RowCount>0) and (gridOperPrikaz.Columns.Count>0) then + for i:=0 to gridOperPrikaz.RowCount-1 do + c:= c + gridOperPrikaz.Cell[colOpNormaMin.Index, i].AsFloat; + lblCasNormVP.Caption:= FormatFloat('##,##0.##',c * edtKusy.Value) + ' min = ' + FormatFloat('##,##0.##', helUtils.RoundToEX(((c * edtKusy.Value)/60),-2)) + ' hod)'; + end; + + + + procedure TformHrOdvOper.PrepoctiCasEvid; + var c, norma, normaEvid: extended; + i, ksRadek: integer; + begin + c:= 0; + norma:= 0; + normaEvid:= 0; + if (gridOperEvid.RowCount>0) and (gridOperEvid.Columns.Count>0) then + for i:=0 to gridOperEvid.RowCount-1 do + begin + c:= c + gridOperEvid.Cell[colOpEvidNormaMin.Index, i].AsFloat; // norma v min + norma:= norma + gridOperEvid.Cell[colOpEvidCasS.Index, i].AsFloat; // norma v sek + ksRadek:= gridOperEvid.Cell[colOpEvidMnoz.Index, i].AsInteger + gridOperEvid.Cell[colOpEvidZmetky.Index, i].AsInteger; + normaEvid:= normaEvid + (gridOperEvid.Cell[colOpEvidNormaMin.Index, i].AsFloat * ksRadek); + end; + norma:= norma * edtKusy.Value; + lblCasNormEvid.Caption:= FormatFloat('##,##0.##', normaEvid) + ' min = ' + FormatFloat('##,##0.##', helUtils.RoundToEX(((normaEvid)/60),-2)) + ' hod)'; + if (edtCasHod.Value<>0) or (edtCasMin.Value<>0) then + lblPlneni.Caption:= FloatToStr(RoundToEx((normaEvid/((edtCasHod.Value*3600) + (edtCasMin.Value)*60))*100,0)) + ' %'; + end; + + + + function TformHrOdvOper.NactiOperace; + var lSQL: string; + tStr: string; + idx, vpOper, idPrP: integer; + casMJMin, prumSazba, mzdaNorm, n, ksEvid, operMin, ksZiv, ksZad: Extended; + begin + result:= false; + if (idVPr=0) then + Exit; + + lblCasNormVP.Caption:= '0.0 min = 0.0 hod)'; +{ + if CasDleTPV(sumCas_S,sumCas_M,sumCas_H) then + begin + if (sumCas_H<=0.1) then + begin + if (sumCas_M<=0.1) then + begin + edtCasCelkemMJ.Value:= RoundToEX(sumCas_S, -2); + lbl8.Caption:= 'sek'; + end + else + begin + edtCasCelkemMJ.Value:= RoundToEX(sumCas_M, -2); + lbl8.Caption:= 'min'; + end + end + else + begin + edtCasCelkemMJ.Value:= RoundToEX(sumCas_H, -2); + lbl8.Caption:= 'hod'; + end; + end; +} + mzdaNorm:= 0; + n:= 0; + lSQL:= 'SELECT LTRIM(RTRIM(pp.Operace)), pp.Nazev, pp.TAC_N, pp.TAC_Obsluhy_S, pp.ID, pp.kusy_zive, pp.kusy_zad FROM ' + tblPrPost + ' pp INNER JOIN ' + tblPostup; + lSQL:= lSQL + ' p ON (p.Operace=pp.Operace AND pp.typ=p.typ AND pp.Nazev=p.Nazev AND pp.dilec=p.dilec AND p.ZmenaDo IS NULL)'; + lSQL:= lSQL + ' WHERE pp.IDOdchylkyDo IS NULL AND pp.dilec=' + idKZ.ToString + ' AND pp.IDPrikaz=' + idVPr.ToString; + lSQL:= lSQL + ' AND pp.kusy_zad>ISNULL( (SELECT SUM(pmz.kusy_odv+pmz.kusy_zmet_neopr) FROM ' + tblPMZ + ' pmz WHERE pmz.IDPrikaz=' + idVPr.ToString; + lSQL:= lSQL + ' AND pmz.DokladPrPostup=pp.Doklad AND pmz.AltPrPostup=pp.Alt), 0)'; + lSQL:= lSQL + ' ORDER BY TRY_PARSE(LTRIM(RTRIM(pp.Operace)) AS INT)'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + gridOperPrikaz.ClearRows; + gridOperPrikaz.RowCount:= RecordCount; + First; + vpOper:= 0; + while not(EOF) do + begin + idPrP:= VarHodnota(FieldValues(4), 0); + ksZiv:= VarHodnota(FieldValues(5), 0.0); + ksZad:= VarHodnota(FieldValues(6), 0.0); + operMin:= VarHodnota(FieldValues(2), 0.0); + if (idDavka>0) then + begin + if (ksZiv>ksDavka) then + ksZiv:= ksDavka; + if (ksZad>ksDavka) then + ksZad:= ksDavka; + end; + gridOperPrikaz.Cell[colOpMnoz.Index, vpOper].AsFloat:= ksZiv; // ks zive na operaci + gridOperPrikaz.Cell[colOpCislo.Index, vpOper].AsString:= VarHodnota(FieldValues(0), ''); // cislo operace + gridOperPrikaz.Cell[colOpPopis.Index, vpOper].AsString:= VarHodnota(FieldValues(1), ''); // nazev + gridOperPrikaz.Cell[colOpCasM.Index, vpOper].AsFloat:= operMin; // cas za operaci v min + gridOperPrikaz.Cell[colOpNormaMin.Index, vpOper].AsFloat:= operMin; // cas za operaci v min + n:= n + gridOperPrikaz.Cell[colOpCasM.Index, vpOper].AsFloat; + gridOperPrikaz.Cell[colOpCasS.Index, vpOper].AsFloat:= VarHodnota(FieldValues(3), 0.0); // cas za operaci v sec + gridOperPrikaz.Cell[colOpIdPostup.Index, vpOper].AsInteger:= idPrP; // idPostup v TPV + gridOperPrikaz.Cell[colOpIdEvidOp.Index, vpOper].AsInteger:= 0; // idEvidOperPol=0 pri importu operaci z TPV + + lSQL:= 'SELECT SUM(pmz.kusy_odv+pmz.kusy_zmet_neopr) FROM ' + tblPMZ + ' pmz INNER JOIN ' + tblPrPost + ' pp ON (pp.Alt=pmz.AltPrPostup'; + lSQL:= lSQL + ' AND pp.Doklad=pmz.DokladPrPostup AND pp.IDPrikaz=pmz.IDPrikaz) WHERE pp.ID=' + gridOperPrikaz.Cell[colOpIdPostup.Index, vpOper].AsString; + if (idDavka>0) then + lSQL:= lSQL + ' AND pmz.ID IN (SELECT ID FROM ' + tblPMZE + ' WHERE _Davka=N' + QuotedStr(edtDavka.Text) + ')'; + ksEvid:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + gridOperPrikaz.Cell[colOpMnozZive.Index, vpOper].AsFloat:= ksZad - ksEvid; + + if (gridOperPrikaz.Cell[colOpMnozZive.Index, vpOper].AsFloat < gridOperPrikaz.Cell[colOpMnoz.Index, vpOper].AsFloat) then + gridOperPrikaz.Cell[colOpMnoz.Index, vpOper].AsFloat:= gridOperPrikaz.Cell[colOpMnozZive.Index, vpOper].AsFloat; + + if (gridOperPrikaz.Cell[colOpMnozZive.Index, vpOper].AsFloat>0) then + Inc(vpOper); + Next; + end; + gridOperPrikaz.RowCount:= vpOper-1; + result:= true; + gridOperPrikaz.Visible:= true; + lblNormaKs.Caption:= '(norma ' + FormatFloat('##,##0.###', n) + ' min / ' + helUtils.getHeliosStrVal(Helios, '', 'SELECT MJevidence FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString) + ')'; + end; + +// edtKusy.SelStart:= 0; +// edtKusy.SelLength:= Length(edtKusy.Text); +// edtKusy.SetFocus; + end; + + + + procedure TformHrOdvOper.edtPrikazButtonClick(Sender: TObject); + var podm: string; + begin + idKZ:= 0; + podm:= 'TabPrikaz.StavPrikazu=30'; + if (filtrRada<>'') then + podm:= podm + ' AND TabPrikaz.Rada=N' + filtrRada.QuotedString; + + if (idDavka>0) and (davkaObal) then + begin + podm:= podm + ' AND TabPrikaz.ID'; + if not(vicPrikazu) then + podm:= podm + '=' + idVPr.ToString + else + podm:= podm + ' IN (SELECT IDPrikazVyssi FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString + ' OR IDRodic=' + idDavka.ToString + ')'; + end; + idVPr:= 0; + + if Helios.Prenos(bidVyrPrik,'ID', oVar1, podm, 'Vyberte Vrobn pkaz',True) then + begin + idVPr:= VarToStr(oVar1).ToInteger; + edtPrikaz.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT RadaPrikaz FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); + idKZ:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDTabKmen FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); + VyplnDataDleKZ; + end; + if (edtOsCislo.CanFocus) then + edtOsCislo.SetFocus; + end; + + + + procedure TformHrOdvOper.edtVyrobekClick(Sender: TObject); + begin + edtPrikazButtonClick(Sender); + end; + + + + procedure TformHrOdvOper.VyplnDataDleKZ; + var lSQL,msg: string; + tStr: ShortString; + idx,idx2,i: integer; + begin + msg:= ''; + if (idKZ>0) then + begin + gridOperPrikaz.ClearRows; + gridOperEvid.ClearRows; + NastavGridy; + lSQL:= 'SELECT SkupZbo, RegCis, Nazev1, ISNULL(KmenoveStredisko,' + QuotedStr('') + ') FROM ' + tblKZ; + lSQL:= lSQL + ' WHERE id=' + IntToStr(idKZ); + with Helios.OpenSQL(lSQL) do + begin + edtNazevZbozi.Text:= VarToStr(FieldValues(0)) + ' ' + VarToStr(FieldValues(1)) + ' ' + VarToStr(FieldValues(2)); + lblKmenStred.Caption:= VarToStr(FieldValues(3)); + end; + NactiOperace; + end; + end; + + + + procedure TformHrOdvOper.VyplnDataDleVPr; + var lSQL,msg: string; + tStr: ShortString; + idx,idx2,i: integer; + begin + msg:= ''; + if (idVPr>0) then + begin + idKZ:= helUtils.getHeliosIntVal(Helios, 0 ,'SELECT IDTabKmen FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); + gridOperPrikaz.ClearRows; + gridOperEvid.ClearRows; + NastavGridy; + lSQL:= 'SELECT RegCis, Nazev1, ISNULL(KmenoveStredisko, N'''') FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString; + with Helios.OpenSQL(lSQL) do + begin + edtNazevZbozi.Text:= VarToStr(FieldValues(0)) + ' / ' + VarToStr(FieldValues(1)); + lblKmenStred.Caption:= VarToStr(FieldValues(2)); + end; + NactiOperace; + end; + end; + + + + procedure TformHrOdvOper.edtPrikazExit (Sender: TObject); + var sql: string; + begin + idVPr:= 0; + edtPrikaz.Text:= Trim(edtPrikaz.Text); + edtPrikaz.Text:= UpperCase(edtPrikaz.Text); + if (edtPrikaz.Text<>'') then + begin + if (IsNumeric(edtPrikaz.Text)) then + idVPr:= StrToInt(edtPrikaz.Text); + if (Pos('-',edtPrikaz.Text)>0) and (idVPr=0) then + idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblPrikaz + ' WHERE RadaPrikaz=N' + QuotedStr(edtPrikaz.Text)); + if (LeftStr(edtPrikaz.Text,1).ToUpper='P') and (filtrRada<>'') then + if (IsNumeric(MidStr(edtPrikaz.Text,2,25))) then + idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblPrikaz + ' WHERE ID=' + MidStr(edtPrikaz.Text,2,25) + ' AND Rada=N' + filtrRada.QuotedString); + + if (idVPr>0) and (helUtils.HeliosExistsTest(Helios, tblPrikaz, 'ID=' + idVPr.ToString + IfThen(filtrRada<>'', ' AND Rada=N' + filtrRada.QuotedString, ''))) then + begin + if (idVPr<>idVPrOld) then + edtKusy.Value:=0; + idVPrOld:= idVPr; + + edtPrikaz.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT RadaPrikaz FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); + zbytekKs:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT kusy_zive FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); + + ksDavka:= 0; + if (idDavka>0) then + ksDavka:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT Mnozstvi FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString); + + if (idDokladOZ>0) and (radaOdvP12Vosk<>'') then + begin + idVPrOld:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDPrikaz FROM ' + tblDZ + ' WHERE ID=' + idDokladOZ.ToString); + idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDPrikazVyssi FROM ' + tblVPr + ' WHERE ID=' + idVPrOld.ToString); + + sql:= 'SELECT ISNULL(SUM(p.Mnozstvi),0) FROM ' + tblPZ + ' p INNER JOIN ' + tblDZ + ' d ON (d.ID=p.IDDoklad) WHERE d.DruhPohybuZbo=0 AND p.IDPrikaz=' + idVPrOld.ToString; + sql:= sql + ' AND d.IDSklad=N' + sklP12Obal.QuotedString + ' AND d.RadaDokladu=N' + radaOdvP12Vosk.QuotedString + ' AND d.Realizovano=1 AND p.TypVyrobnihoDokladu=0'; + + sql:= 'SELECT ISNULL(SUM(Mnozstvi),0) FROM ' + tblEvidOper + ' WHERE IDPrikaz=' + idVPr.ToString; + + ksDavka:= helUtils.getHeliosFloatVal(Helios, 0, sql); + end; + if (zbytekKs>ksDavka) and (ksDavka>0) then + zbytekKs:= ksDavka; + + lblZbytekKs.Caption:= FormatFloat('##,##0.#', zbytekKs); + gridOperPrikaz.ClearRows; + gridOperEvid.ClearRows; + NastavGridy; + PrepoctiCasEvid; + idKZ:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDTabKmen FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); + edtNazevZbozi.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev1 FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString); + evidMJ:= helUtils.getHeliosStrVal(Helios, '', 'SELECT MJevidence FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString); + lblZbyvaKs.Caption:= 'Zbv (' + evidMJ + ')'; + lblVyrobeneKs.Caption:= 'Vyroben ' + evidMJ + ' v. zmetk:'; + colOpEvidMnoz.Header.Caption:= evidMJ + ' Dobr'; + VyplnDataDleVPr; + end; + if (edtOsCislo.CanFocus) then + edtOsCislo.SetFocus; +// SendMessage(Handle, WM_NEXTDLGCTL, WPARAM(edtOsCislo.Handle), MakeLParam(Ord(True), 0)); + end; + end; + + + + procedure TformHrOdvOper.edtPrikazKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); + begin + if Key=VK_RETURN then + edtPrikazExit(Sender); + end; + + + + procedure TformHrOdvOper.NastavGridy; + var i:integer; + begin +{ + gridOperPrikaz.Font.Name:= Helios.Font; + gridOperPrikaz.Font.Size:= lbl1.Font.Size; + for i:=0 to gridOperPrikaz.Columns.Count-1 do + begin + gridOperPrikaz.Columns[i].Font.Name:= Helios.Font; + gridOperPrikaz.Columns[i].Font.Size:= lbl1.Font.Size; + end; + + gridOperEvid.Font.Name:= Helios.Font; + gridOperEvid.Font.Size:= lbl1.Font.Size; + for i:=0 to gridOperEvid.Columns.Count-1 do + begin + gridOperEvid.Columns[i].Font.Name:= Helios.Font; + gridOperEvid.Columns[i].Font.Size:= lbl1.Font.Size; + end; + + gridAllEvid.Font.Name:= Helios.Font; + gridAllEvid.Font.Size:= lbl1.Font.Size; + for i:=0 to gridAllEvid.Columns.Count-1 do + begin + gridAllEvid.Columns[i].Font.Name:= Helios.Font; + gridAllEvid.Columns[i].Font.Size:= lbl1.Font.Size; + end; +} + end; + + + + procedure TformHrOdvOper.FormActivate(Sender: TObject); + var i:integer; + begin +// Self.Width:= Round(Self.Width*1.12); + + if (idHromEvidOp>0) then + begin + edtPrikaz.Enabled:= false; + Self.Caption:= Self.Caption + ' (EDITACE)'; + end; + + dtDatum.Date:= Now; + verText:= GetFileVersion2(GetModuleName(HInstance)); + if Length(verText)=12 then + verText:= LeftStr(verText,9) + '0' + RightStr(verText,3); + + if (edtDavka.CanFocus) then + edtDavka.SetFocus; + edtJmeno.Text:= ''; + Self.Caption:= Self.Caption + ' (verze ' + verText + ')'; + + i:= 0; + while (i0) then + idMObd:= StrToInt(VarToStr(FieldValues(0))) + else + begin + raise Exception.Create('Nelze zjistit aktuln mzdov obdob.'); + Exit; + end; + + for i:=0 to gridOperPrikaz.Columns.Count-1 do + gridOperPrikaz.Columns[i].Tag:= gridOperPrikaz.Columns[i].Width; + for i:=0 to gridOperEvid.Columns.Count-1 do + gridOperEvid.Columns[i].Tag:= gridOperEvid.Columns[i].Width; + for i:=0 to gridAllEvid.Columns.Count-1 do + gridAllEvid.Columns[i].Tag:= gridAllEvid.Columns[i].Width; + + idDokladOZ:= 0; + radaOdvP12Vosk:= ''; + + bidDavky:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT DPBID FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_Davky'''); + bidHDCLog:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT DPBID FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_HDCLog'''); + + NastavGridy; + edtJmeno.Text:= ''; + + opVPsel:= 0; + opEvidsel:= 0; + novyVyr:= false; + novyClovek:= false; + + + radaPrikP12Vosk:= '221-12'; + radaOdvP12Vosk:= '712'; + sklP12Obal:= '00100100222200'; + lSQL:= 'SELECT RadaDokl_OdvedeniPrikazu, PrijemVyrDil_SkladProGenHlavDZ FROM ' + tblPrikazRada + ' WHERE Rada=N' + radaPrikP12Vosk.QuotedString; + with Helios.OpenSQL(lSQL) do + if (RecordCount=1) then + begin + radaOdvP12Vosk:= VarTOStr(FieldByNameValues('RadaDokl_OdvedeniPrikazu')); + sklP12Obal:= VarTOStr(FieldByNameValues('PrijemVyrDil_SkladProGenHlavDZ')); + end; + + + + +// SQL2012 with Helios.OpenSQL('SELECT FORMAT(GETDATE(),''d.M.yyyy'',''cs-CZ'')') do + try +// with Helios.OpenSQL('SELECT (CONVERT(DATETIME,CONVERT(INT,CONVERT(FLOAT,dbo.ef_GetPreviousWeekDay(GETDATE())))))') do + lSQL:= 'DECLARE @dt DATETIME' + CRLF; + lSQL:= lSQL + 'SET @dt=CONVERT(DATETIME,CONVERT(INT,CONVERT(FLOAT,dbo.ef_GetPreviousWeekDay(GETDATE()))))' + CRLF; + lSQL:= lSQL + 'IF EXISTS(SELECT IsWorkDay FROM dbo._hdc_TabKalendar WHERE isWorkDay=1 AND Datum=@dt) SELECT @dt ELSE '; + lSQL:= lSQL + 'SELECT TOP(1) CONVERT(DATETIME,CONVERT(INT,CONVERT(FLOAT,CONVERT(datetime,Datum,104)))) FROM'; + lSQL:= lSQL + ' dbo._hdc_TabKalendar WHERE IsWorkDay=1 AND Datum<@dt ORDER BY Datum DESC'; + with Helios.OpenSQL(lSQL) do + dtDatum.Date:= StrToDate(VarToStr(FieldValues(0))) + except on E:Exception do + begin +// Helios.Error(#1'Chyba pi zskvn datumu ze serveru...'#1 + CRLF + E.ClassName + CRLF + E.Message); + raise Exception.Create('Chyba pi zskvn data ze serveru...' + CRLF + E.ClassName + CRLF + E.Message); + Close; + end; + end; + + with Helios.OpenSQL('SELECT kod FROM ' + tblCSmen + ' WHERE Blokovano=0') do + if (RecordCount>0) then + begin + First; + edtSmena.Text:= VarToStr(FieldValues(0)); + end; + + if (idHromEvidOp>0) then + NactiEvidenci; + + end; + + + + procedure TformHrOdvOper.gridOperEvidCellChange(Sender: TObject; ACol, ARow: Integer); + var i: integer; + m: Extended; + begin + if (ACol=colOpEvidMnoz.Index) and not(hromAkce) then + begin + m:= gridOperEvid.Cell[colOpEvidMnoz.Index, ARow].AsFloat; + if (gridOperEvid.RowCount>=ARow+1) and (gridOperEvid.Cell[colOpEvidZive.Index, ARow].AsFloat>=m) then + for i:=ARow+1 to gridOperEvid.RowCount-1 do + gridOperEvid.Cell[colOpEvidMnoz.Index, i].AsFloat:= m; + PrepoctiCasEvid; + end; + end; + + + + procedure TformHrOdvOper.gridOperEvidCellClick(Sender: TObject; ACol, ARow: Integer; Button: TMouseButton); + var x, y: Extended; + f: TformInputNum; + i,kodZav: integer; + zmenaMnoz: boolean; + begin + zmenaMnoz:= false; + + if (ACol=colOpEvidMnoz.Index) then + begin + f:= TformInputNum.Create(nil); + try + f.titulek:= 'Evidence operace'; + f.edtPopis:= 'Dobrch stromk:'; + f.edtNum2.Enabled:=false; + f.ShowModal; + x:= f.value; + if (x>=0) then + begin + hromAkce:= true; + y:= gridOperEvid.Cell[colOpEvidMnoz.Index, ARow].AsFloat; + gridOperEvid.Cell[colOpEvidMnoz.Index, ARow].AsFloat:= x; +// gridOperEvid.Cell[colOpEvidZmetky.Index, ARow].AsFloat:= y-x; + if (gridOperEvid.RowCount>=ARow+1) and (gridOperEvid.Cell[colOpEvidMnozOrig.Index, ARow].AsFloat>=x) then + for i:=ARow+1 to gridOperEvid.RowCount-1 do + gridOperEvid.Cell[colOpEvidMnoz.Index, i].AsFloat:= x; + hromAkce:= false; + zmenaMnoz:= true; + end; + finally + f.Free; + end; + end; + + if (ACol=colOpEvidZmetky.Index) then + begin + f:= TformInputNum.Create(nil); + try + f.titulek:= 'Evidence operace'; + f.edtPopis:= 'Poet zmetk:'; + f.edtNum.Alignment:= TAlignment.taCenter; + f.edtPopis2:= 'Kd zvady:'; + f.edtNum2.Alignment:= TAlignment.taCenter; + f.ShowModal; + x:= f.value; + if (x>=0) then + begin + hromAkce:= true; + kodZav:= f.value2.ToString.ToInteger; + + gridOperEvid.Cell[colOpEvidZmetky.Index, ARow].AsFloat:= x; + gridOperEvid.Cell[colOpEvidMnoz.Index, ARow].AsFloat:= gridOperEvid.Cell[colOpEvidMnozOrig.Index, ARow].AsFloat - x; + gridOperEvid.Cell[colOpEvidKodZavady.Index, ARow].AsInteger:= kodZav; + + if (gridOperEvid.RowCount>=ARow+1) then + for i:=ARow+1 to gridOperEvid.RowCount-1 do + if (i<=gridOperEvid.RowCount) then + if (gridOperEvid.Cell[colOpEvidMnozOrig.Index, i].AsFloat>=x) then + gridOperEvid.Cell[colOpEvidMnoz.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidMnozOrig.Index, i].AsFloat - x; + +// if (gridOperEvid.Cell[colOpEvidMnoz.Index, ARow].AsFloat-x>=0) then +// gridOperEvid.Cell[colOpEvidMnoz.Index, ARow].AsFloat:= gridOperEvid.Cell[colOpEvidMnoz.Index, ARow].AsFloat - x; +// if (gridOperEvid.Cell[colOpEvidZive.Index, ARow].AsFloat>=x) then +// gridOperEvid.Cell[colOpEvidZive.Index, ARow].AsFloat:= gridOperEvid.Cell[colOpEvidZive.Index, ARow].AsFloat - x; + +// if (gridOperEvid.RowCount>=ARow+1) and (gridOperEvid.Cell[colOpEvidMnoz.Index, ARow].AsFloat>=x) then +// for i:=ARow+1 to gridOperEvid.RowCount-1 do +// if (gridOperEvid.Cell[colOpEvidMnoz.Index, i].AsFloat-x>=0) then +// gridOperEvid.Cell[colOpEvidMnoz.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidMnoz.Index, i].AsFloat - x; + + hromAkce:= false; + zmenaMnoz:= true; + end; + finally + f.Free; + end; + end; + + if (zmenaMnoz) then + PrepoctiCasEvid; + end; + + + + procedure TformHrOdvOper.gridOperEvidCellDblClick(Sender: TObject; ACol, ARow: Integer); + begin + btnOpDel1Click(Sender); + end; + + + + procedure TformHrOdvOper.gridOperPrikazCellChange(Sender: TObject; ACol, ARow: Integer); + begin + if (ACol=colOpMnoz.Index) then + gridOperPrikaz.Cell[colOpCasM.Index, ARow].AsFloat:= gridOperPrikaz.Cell[colOpNormaMin.Index, ARow].AsFloat * gridOperPrikaz.Cell[colOpMnoz.Index, ARow].AsFloat; + end; + + + + procedure TformHrOdvOper.gridOperPrikazCellDblClick(Sender: TObject; ACol, ARow: Integer); + begin + btnOpAdd1Click(Sender); + end; + + + + procedure TformHrOdvOper.gridOperPrikazChanged(Sender: TObject; ACol, ARow: Integer); + var i: integer; + c: extended; + begin + c:= 0; + if (ARow>0) and (ACol>0) then + for i:=0 to gridOperEvid.RowCount-1 do + c:= c + gridOperEvid.Cell[3,i].AsFloat; + lblCasNormEvid.Caption:= FloatToStr(c) + '0.0 min)'; + end; + + + + procedure TformHrOdvOper.gridOperEvidDragDrop(Sender, Source: TObject; X, Y: Integer); + var i, maxRad, r, c: integer; + p: TPoint; + begin + Exit; + p:= TPoint.Create(x,y); + r:= gridOperEvid.SelectedCell.RowIndex; // .GetRowAtPos(x,y); + c:= gridOperEvid.SelectedCell.ColIndex; // .GetColumnAtPos(p).Index; + if (gridOperPrikaz.Cells[1,r]='') or (r=0) then + Exit; +{ + maxRad:= 0; + while not (gridOperEvid.Cells[0,maxRad]='') do + Inc(maxRad); + if maxRad=gridOperEvid.RowCount then +} + gridOperEvid.RowCount:= gridOperEvid.RowCount + 1; + i:= gridOperEvid.RowCount-1; + gridOperEvid.Cell[colOpEvidCislo.Index, i].AsInteger:= gridOperPrikaz.Cell[colOpCislo.Index, r].AsInteger; + gridOperEvid.Cell[colOpEvidPopis.Index, i].AsString:= gridOperPrikaz.Cell[colOpPopis.Index, r].AsString; + gridOperEvid.Cell[colOpEvidIdPostup.Index, i].AsInteger:= gridOperPrikaz.Cell[colOpIdPostup.Index, r].AsInteger; + gridOperEvid.Cell[colOpEvidCasM.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpCasM.Index, r].AsFloat; + gridOperEvid.Cell[colOpEvidCasS.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpCasS.Index, r].AsFloat; + gridOperEvid.Cell[colOpEvidIdEvidOp.Index, i].AsInteger:= gridOperPrikaz.Cell[colOpIdEvidOp.Index, r].AsInteger; + gridOperEvid.Cell[colOpEvidSkutCasS.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpSkutCasS.Index, r].AsFloat; + gridOperEvid.Cell[colOpEvidMnoz.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnoz.Index, r].AsFloat; + gridOperEvid.Cell[colOpEvidZive.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnoz.Index, r].AsFloat; + gridOperEvid.Cell[colOpEvidZmetky.Index, i].AsFloat:= 0; + gridOperEvid.Cell[colOpEvidKodZavady.Index, i].AsString:= ''; + + gridOperPrikaz.DeleteRow(r); + gridOperEvid.Sort(colOpEvidCislo.Index, skAscending); + PrepoctiCasEvid; + PrepoctiCasVP; + end; + + + + procedure TformHrOdvOper.gridOperPrikazDragDrop(Sender, Source: TObject; X, Y: Integer); + var i, maxRad, r, c: integer; + p: TPoint; + begin + Exit; + p:= TPoint.Create(x,y); + r:= gridOperPrikaz.SelectedCell.RowIndex; // GetRowAtPos(x,y); + c:= gridOperPrikaz.SelectedCell.ColIndex; // GetColumnAtPos(p).Index; + if (gridOperEvid.Cells[1,r]='') or (r=0) then + Exit; +{ + maxRad:= 0; + while not (gridOperPrikaz.Cells[0,maxRad]='') do + Inc(maxRad); + if maxRad=gridOperPrikaz.RowCount then +} + gridOperPrikaz.RowCount:= gridOperPrikaz.RowCount + 1; + i:= gridOperPrikaz.RowCount-1; + gridOperPrikaz.Cell[colOpCislo.Index, i].AsInteger:= gridOperEvid.Cell[colOpEvidCislo.Index, r].AsInteger; + gridOperPrikaz.Cell[colOpPopis.Index, i].AsString:= gridOperEvid.Cell[colOpEvidPopis.Index, r].AsString; + gridOperPrikaz.Cell[colOpIdPostup.Index, i].AsInteger:= gridOperEvid.Cell[colOpEvidIdPostup.Index, r].AsInteger; + gridOperPrikaz.Cell[colOpCasM.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidCasM.Index, r].AsFloat; + gridOperPrikaz.Cell[colOpCasS.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidCasS.Index, r].AsFloat; + gridOperPrikaz.Cell[colOpIdEvidOp.Index, i].AsInteger:= gridOperEvid.Cell[colOpEvidIdEvidOp.Index, r].AsInteger; + gridOperPrikaz.Cell[colOpSkutCasS.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidSkutCasS.Index, r].AsFloat; + gridOperPrikaz.Cell[colOpMnoz.Index, i].AsFloat:= edtKusy.Value; + + gridOperEvid.DeleteRow(r); + gridOperPrikaz.Sort(colOpCislo.Index, skAscending); + PrepoctiCasVP; + PrepoctiCasEvid; + end; + + + + procedure TformHrOdvOper.gridOperEvidDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); + begin + Accept:= Source is TNextGrid6; + Accept:= false; + end; + + + + procedure TformHrOdvOper.gridOperPrikazDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); + begin + Accept:= Source is TNextGrid6; + Accept:= false; + end; + + + + procedure TformHrOdvOper.gridOperEvidMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + var p: TPoint; + begin +{ + p:= TPoint.Create(x,y); + dragRow:= gridOperEvid.SelectedRow; // GetRowAtPos(x,y); + dragCol:= gridOperEvid.SelectedCol; // GetColumnAtPos(p).Index; + if (dragCol>0) and (dragRow>0) then + gridOperEvid.BeginDrag(False,3); +} + end; + + + + procedure TformHrOdvOper.gridOperEvidResize(Sender: TObject); + begin +// gridOperEvid.Font.Size:= lbl1.Font.Size; + end; + + + + procedure TformHrOdvOper.gridOperPrikazMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + var c,r: integer; + p: TPoint; + begin +{ + p:= TPoint.Create(x,y); + dragRow:= gridOperPrikaz.SelectedRow; // GetRowAtPos(x,y); + dragCol:= gridOperPrikaz.SelectedCol; // GetColumnAtPos(p).Index; + if (dragCol>0) and (dragRow>0) then + gridOperPrikaz.BeginDrag(False,3); +} + end; + + + + procedure TformHrOdvOper.gridOperPrikazResize(Sender: TObject); + begin +// gridOperPrikaz.Font.Size:= lbl1.Font.Size; + end; + + + + procedure TformHrOdvOper.gridOperPrikazSelect(Sender: TObject; ACol, ARow: Integer); + begin + opVPsel:= ARow; + end; + + + + procedure TformHrOdvOper.gridOperEvidSelect(Sender: TObject; ACol, ARow: Integer); + begin + opEvidsel:= ARow; + end; + + +end. diff --git a/frmHrOdvOperZmetky.dfm b/frmHrOdvOperZmetky.dfm new file mode 100644 index 0000000..7a289e0 --- /dev/null +++ b/frmHrOdvOperZmetky.dfm @@ -0,0 +1,53 @@ +object formHrOdvOperZmetky: TformHrOdvOperZmetky + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = ' ZMETKY' + ClientHeight = 198 + ClientWidth = 596 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -27 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poOwnerFormCenter + OnClose = FormClose + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 33 + object Label1: TLabel + Left = 24 + Top = 33 + Width = 148 + Height = 33 + Caption = 'Typ zmetku:' + end + object cbTypZmetku: TComboBox + Left = 186 + Top = 30 + Width = 370 + Height = 41 + TabOrder = 0 + end + object btnOK: TButton + Left = 186 + Top = 117 + Width = 145 + Height = 47 + Caption = 'OK' + TabOrder = 1 + OnClick = btnOKClick + end + object btnZrus: TButton + Left = 411 + Top = 117 + Width = 145 + Height = 47 + Caption = 'Storno' + TabOrder = 2 + OnClick = btnZrusClick + end +end diff --git a/frmHrOdvOperZmetky.pas b/frmHrOdvOperZmetky.pas new file mode 100644 index 0000000..01a378d --- /dev/null +++ b/frmHrOdvOperZmetky.pas @@ -0,0 +1,81 @@ +unit frmHrOdvOperZmetky; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, ddPlugin_TLB; + +type + TformHrOdvOperZmetky = class(TForm) + Label1: TLabel; + cbTypZmetku: TComboBox; + btnOK: TButton; + btnZrus: TButton; + procedure FormShow(Sender: TObject); + procedure btnZrusClick(Sender: TObject); + procedure btnOKClick(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + private + public + Helios: IHelios; + idZavady: integer; + end; + +var + formHrOdvOperZmetky: TformHrOdvOperZmetky; + arrIdZavad: TArray; + +implementation +uses helUtils; +{$R *.dfm} + + procedure TformHrOdvOperZmetky.btnOKClick(Sender: TObject); + begin + idZavady:= arrIdZavad[cbTypZmetku.ItemIndex]; + Close; + end; + + + + procedure TformHrOdvOperZmetky.btnZrusClick(Sender: TObject); + begin + idZavady:= -1; + Close; + end; + + + + procedure TformHrOdvOperZmetky.FormClose(Sender: TObject; var Action: TCloseAction); + begin + Action:= caFree; + end; + + + + procedure TformHrOdvOperZmetky.FormShow(Sender: TObject); + var lSQL: string; + i: integer; + begin + cbTypZmetku.Clear; + + lSQL:= 'SELECT TOP(3) cz.Kod, cz.Nazev, cz.ID FROM ' + tblPMZZavady + ' z INNER JOIN ' + tblCZavad + ' cz ON (cz.ID=z.IDZavady) WHERE '; + lSQL:= lSQL + 'cz.Poznamka LIKE N''%OBALOVNA%'' GROUP BY cz.Kod, cz.Nazev, cz.ID ORDER BY SUM(z.kusy_zmet_neopr) DESC'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + i:= 0; + First; + SetLength(arrIdZavad, RecordCount); + while not(EOF) do + begin + cbTypZmetku.Items.Add(VarToStr(FieldValues(0)) + ' - ' + VarToStr(FieldValues(1))); + arrIdZavad[i]:= StrToInt(VarToStr(FieldValues(2))); + Inc(i); + Next; + end; + end; + cbTypZmetku.ItemIndex:= 0; + end; + +end. diff --git a/frmInputNum.dfm b/frmInputNum.dfm new file mode 100644 index 0000000..94f60a3 --- /dev/null +++ b/frmInputNum.dfm @@ -0,0 +1,91 @@ +object formInputNum: TformInputNum + Left = 0 + Top = 0 + BorderStyle = bsDialog + Caption = 'formInputNum' + ClientHeight = 294 + ClientWidth = 414 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poOwnerFormCenter + OnClose = FormClose + OnShow = FormShow + DesignSize = ( + 414 + 294) + PixelsPerInch = 96 + TextHeight = 25 + object lblPopis2: TLabel + Left = 68 + Top = 112 + Width = 82 + Height = 25 + Caption = 'lblPopis2' + end + object lblPopis1: TLabel + Left = 68 + Top = 21 + Width = 82 + Height = 25 + Caption = 'lblPopis1' + end + object edtNum: TEdit + Left = 68 + Top = 48 + Width = 277 + Height = 41 + Anchors = [akLeft, akTop, akRight] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -27 + Font.Name = 'Tahoma' + Font.Style = [] + NumbersOnly = True + ParentFont = False + TabOrder = 0 + OnKeyPress = edtNumKeyPress + end + object edtNum2: TEdit + Left = 68 + Top = 141 + Width = 277 + Height = 41 + Anchors = [akLeft, akTop, akRight] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -27 + Font.Name = 'Tahoma' + Font.Style = [] + NumbersOnly = True + ParentFont = False + TabOrder = 1 + OnKeyPress = edtNum2KeyPress + end + object btnOK: TButton + Left = 27 + Top = 222 + Width = 142 + Height = 49 + Anchors = [akLeft, akBottom] + Caption = 'OK' + ModalResult = 1 + TabOrder = 2 + OnClick = btnOKClick + end + object btnZrusit: TButton + Left = 244 + Top = 222 + Width = 142 + Height = 49 + Anchors = [akRight, akBottom] + Caption = 'Zru'#353'it' + ModalResult = 2 + TabOrder = 3 + OnClick = btnZrusitClick + end +end diff --git a/frmInputNum.pas b/frmInputNum.pas new file mode 100644 index 0000000..892105b --- /dev/null +++ b/frmInputNum.pas @@ -0,0 +1,90 @@ +unit frmInputNum; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls; + +type + TformInputNum = class(TForm) + edtNum: TEdit; + edtNum2: TEdit; + btnOK: TButton; + btnZrusit: TButton; + lblPopis2: TLabel; + lblPopis1: TLabel; + procedure FormShow(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure edtNumKeyPress(Sender: TObject; var Key: Char); + procedure btnOKClick(Sender: TObject); + procedure btnZrusitClick(Sender: TObject); + procedure edtNum2KeyPress(Sender: TObject; var Key: Char); + private + { Private declarations } + public + value, value2: Extended; + edtPopis, edtPopis2, titulek: string; + end; + +var + formInputNum: TformInputNum; + +implementation + +{$R *.dfm} + + procedure TformInputNum.btnOKClick(Sender: TObject); + begin + Close; + end; + + + procedure TformInputNum.btnZrusitClick(Sender: TObject); + begin + Close; + end; + + + + procedure TformInputNum.edtNum2KeyPress(Sender: TObject; var Key: Char); + begin + if (Key=#13) then + btnOKClick(Sender); + end; + + + + procedure TformInputNum.edtNumKeyPress(Sender: TObject; var Key: Char); + begin + if (Key=#13) then + if (edtNum2.CanFocus) then + edtNum2.SetFocus; + end; + + + + procedure TformInputNum.FormClose(Sender: TObject; var Action: TCloseAction); + begin + edtNum.Text:= Trim(edtNum.Text); + edtNum2.Text:= Trim(edtNum2.Text); + if not(TryStrToFloat(edtNum.Text, value)) then + value:= -1; + if not(TryStrToFloat(edtNum2.Text, value2)) then + value2:= -1; + Action:= caFree; + end; + + + + procedure TformInputNum.FormShow(Sender: TObject); + begin + Self.Caption:= titulek; + lblPopis1.Caption:= edtPopis; + edtNum.Text:= ''; + lblPopis2.Caption:= edtPopis2; + edtNum2.Text:= ''; + edtNum.SetFocus; + end; + +end. diff --git a/frmKoopObjUprava.dfm b/frmKoopObjUprava.dfm new file mode 100644 index 0000000..f403770 --- /dev/null +++ b/frmKoopObjUprava.dfm @@ -0,0 +1,141 @@ +object formKoopObjUprava: TformKoopObjUprava + Left = 0 + Top = 0 + Caption = ' KOOPRA'#268'N'#205' OBJEDN'#193'VKA - oprava' + ClientHeight = 605 + ClientWidth = 767 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + OnCreate = FormCreate + OnShow = FormShow + PixelsPerInch = 96 + DesignSize = ( + 767 + 605) + TextHeight = 21 + object GroupBox1: TGroupBox + Left = 15 + Top = 21 + Width = 538 + Height = 89 + Caption = ' Kooperant ' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [fsBold] + ParentFont = False + TabOrder = 0 + object Label1: TLabel + Left = 16 + Top = 25 + Width = 99 + Height = 17 + Caption = #268#237'slo organizace:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object selCisOrg: TButtonedEdit + Left = 16 + Top = 45 + Width = 99 + Height = 25 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Segoe UI' + Font.Style = [] + MaxLength = 6 + NumbersOnly = True + ParentFont = False + TabOrder = 0 + end + object selNazevOrg: TButtonedEdit + Left = 150 + Top = 45 + Width = 352 + Height = 25 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Segoe UI' + Font.Style = [] + MaxLength = 100 + ParentFont = False + TabOrder = 1 + end + end + object GroupBox2: TGroupBox + Left = 15 + Top = 132 + Width = 742 + Height = 395 + Anchors = [akLeft, akTop, akRight, akBottom] + Caption = ' D'#225'vky ' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [fsBold] + ParentFont = False + TabOrder = 1 + ExplicitWidth = 943 + DesignSize = ( + 742 + 395) + object strGrid: TStringGrid + Left = 4 + Top = 36 + Width = 733 + Height = 354 + Anchors = [akLeft, akTop, akRight, akBottom] + DefaultRowHeight = 28 + FixedCols = 0 + RowCount = 15 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + ScrollBars = ssVertical + TabOrder = 0 + ExplicitWidth = 1028 + ExplicitHeight = 339 + ColWidths = ( + 99 + 51 + 113 + 360 + 82) + end + end + object btnStorno: TButton + Left = 631 + Top = 546 + Width = 121 + Height = 46 + Anchors = [akRight, akBottom] + Caption = 'Storno' + TabOrder = 2 + ExplicitLeft = 832 + end + object btnOK: TButton + Left = 454 + Top = 546 + Width = 121 + Height = 46 + Anchors = [akRight, akBottom] + Caption = 'OK' + TabOrder = 3 + ExplicitLeft = 655 + end +end diff --git a/frmKoopObjUprava.pas b/frmKoopObjUprava.pas new file mode 100644 index 0000000..a9381ea --- /dev/null +++ b/frmKoopObjUprava.pas @@ -0,0 +1,88 @@ +unit frmKoopObjUprava; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, ddPlugin_TLB, Vcl.StdCtrls, Vcl.ExtCtrls, + Data.DB, Vcl.Grids, Vcl.DBGrids; + +const + tblKoopH = '[dbo].[_hdc_TabKooperaceH]'; + tblKoopD = '[dbo].[_hdc_TabKooperaceD]'; + tblKoopR = '[dbo].[_hdc_TabKooperaceR]'; + +type + TformKoopObjUprava = class(TForm) + selCisOrg: TButtonedEdit; + Label1: TLabel; + GroupBox1: TGroupBox; + selNazevOrg: TButtonedEdit; + GroupBox2: TGroupBox; + strGrid: TStringGrid; + btnStorno: TButton; + btnOK: TButton; + procedure FormShow(Sender: TObject); + procedure FormCreate(Sender: TObject); + private + procedure NactiData(idKoopH: integer); safecall; + public + Helios: IHelios; + idKoopH: integer; + end; + +var + formKoopObjUprava: TformKoopObjUprava; + +implementation +uses helUtils; + +{$R *.dfm} + + procedure TformKoopObjUprava.NactiData(idKoopH: Integer); + var lSQL: string; + begin + if (idKoopH>0) then + begin + lSQL:= 'SELECT o.CisloOrg, o.Nazev FROM ' + tblKoopH + ' h INNER JOIN ' + tblCOrg + ' o ON (o.CisloOrg=h.CisloOrg) WHERE h.ID=' + idKoopH.ToString; + with Helios.OpenSQL(lSQL) do + begin + + First; + while not(EOF) do + begin + + end; + end; + end; + end; + + + + + procedure TformKoopObjUprava.FormCreate(Sender: TObject); + begin + strGrid.Cells[0, 0]:= 'Dávka'; + strGrid.ColAlignments[0]:= taCenter; + strGrid.ColWidths[0]:= 50; + + strGrid.Cells[1, 0]:= 'SK'; + strGrid.ColAlignments[1]:= taCenter; + + strGrid.Cells[2, 0]:= 'Reg.č.'; + strGrid.ColAlignments[2]:= taCenter; + + end; + + + + + procedure TformKoopObjUprava.FormShow(Sender: TObject); + begin + + if (idKoopH>0) then + NactiData(idKoopH); + + end; + +end. diff --git a/frmOOPPohyb.dfm b/frmOOPPohyb.dfm new file mode 100644 index 0000000..870ca94 --- /dev/null +++ b/frmOOPPohyb.dfm @@ -0,0 +1,238 @@ +object formOOPPohyb: TformOOPPohyb + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = ' Pohyb OOP' + ClientHeight = 562 + ClientWidth = 637 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + Position = poOwnerFormCenter + OnShow = FormShow + TextHeight = 21 + object Label5: TLabel + Left = 246 + Top = 325 + Width = 50 + Height = 21 + Caption = 'Datum:' + end + object Label6: TLabel + Left = 8 + Top = 248 + Width = 56 + Height = 21 + Caption = 'Polo'#382'ka:' + end + object Label7: TLabel + Left = 8 + Top = 323 + Width = 66 + Height = 21 + Caption = 'Mno'#382'stv'#237':' + end + object Label8: TLabel + Left = 8 + Top = 374 + Width = 74 + Height = 21 + Caption = 'Pozn'#225'mka:' + end + object GroupBox1: TGroupBox + Left = 8 + Top = 8 + Width = 619 + Height = 219 + Caption = ' Zam'#283'stnanec ' + TabOrder = 0 + object Label1: TLabel + Left = 18 + Top = 44 + Width = 56 + Height = 21 + Caption = 'Os.'#269#237'slo:' + end + object Label2: TLabel + Left = 140 + Top = 44 + Width = 111 + Height = 21 + Caption = 'P'#345#237'jmen'#237'/jm'#233'no:' + end + object Label3: TLabel + Left = 18 + Top = 154 + Width = 55 + Height = 21 + Caption = 'Profese:' + end + object Label4: TLabel + Left = 18 + Top = 98 + Width = 67 + Height = 21 + Caption = 'St'#345'edisko:' + end + object edtOsCislo: TRzButtonEdit + Left = 18 + Top = 65 + Width = 109 + Height = 29 + Text = '' + Alignment = taCenter + MaxLength = 6 + TabOrder = 0 + OnExit = edtOsCisloExit + OnKeyUp = edtOsCisloKeyUp + AltBtnNumGlyphs = 1 + ButtonNumGlyphs = 1 + OnButtonClick = edtOsCisloButtonClick + end + object edtPrijmJm: TRzButtonEdit + Left = 140 + Top = 65 + Width = 469 + Height = 29 + Text = '' + MaxLength = 100 + TabOrder = 1 + OnKeyUp = edtPrijmJmKeyUp + AltBtnNumGlyphs = 1 + ButtonNumGlyphs = 1 + OnButtonClick = edtPrijmJmButtonClick + end + object edtProfese: TRzButtonEdit + Left = 18 + Top = 175 + Width = 359 + Height = 29 + Text = '' + MaxLength = 100 + TabOrder = 5 + AltBtnNumGlyphs = 1 + ButtonNumGlyphs = 1 + OnButtonClick = edtProfeseButtonClick + end + object edtStredisko: TRzButtonEdit + Left = 18 + Top = 119 + Width = 179 + Height = 29 + Text = '' + Alignment = taCenter + Color = 15790320 + MaxLength = 30 + ReadOnly = True + ReadOnlyColor = 15790320 + TabOrder = 2 + AltBtnNumGlyphs = 1 + ButtonNumGlyphs = 1 + OnButtonClick = edtStrediskoButtonClick + end + object edtStrediskoText: TRzButtonEdit + Left = 206 + Top = 119 + Width = 341 + Height = 29 + Text = '' + Color = 15790320 + MaxLength = 100 + ReadOnly = True + ReadOnlyColor = 15790320 + TabOrder = 3 + AltBtnNumGlyphs = 1 + ButtonNumGlyphs = 1 + end + object edtStrediskoOld: TEdit + Left = 553 + Top = 119 + Width = 55 + Height = 29 + Alignment = taCenter + Color = 15790320 + ReadOnly = True + TabOrder = 4 + end + end + object edtDatum: TRzDateTimePicker + Left = 306 + Top = 321 + Width = 117 + Height = 29 + Date = 45131.000000000000000000 + Format = '' + Time = 45131.000000000000000000 + MinDate = 44927.000000000000000000 + TabOrder = 4 + end + object edtPolozka: TRzButtonEdit + Left = 8 + Top = 271 + Width = 109 + Height = 29 + Text = '' + Alignment = taCenter + MaxLength = 6 + TabOrder = 1 + OnEnter = edtPolozkaEnter + OnExit = edtPolozkaExit + OnKeyUp = edtPolozkaKeyUp + AltBtnNumGlyphs = 1 + ButtonNumGlyphs = 1 + OnButtonClick = edtPolozkaButtonClick + end + object edtPolozkaText: TRzButtonEdit + Left = 130 + Top = 271 + Width = 497 + Height = 29 + Text = '' + Color = 15790320 + MaxLength = 100 + ReadOnly = True + ReadOnlyColor = 15790320 + TabOrder = 2 + AltBtnNumGlyphs = 1 + ButtonNumGlyphs = 1 + end + object btnOK: TButton + Left = 121 + Top = 502 + Width = 141 + Height = 47 + Caption = 'OK' + TabOrder = 6 + OnClick = btnOKClick + end + object btnStorno: TButton + Left = 374 + Top = 502 + Width = 141 + Height = 47 + Caption = 'Storno' + TabOrder = 7 + OnClick = btnStornoClick + end + object edtMnoz: TNumberBox + Left = 84 + Top = 321 + Width = 69 + Height = 29 + Alignment = taCenter + TabOrder = 3 + Value = 1.000000000000000000 + end + object memoPozn: TMemo + Left = 88 + Top = 371 + Width = 528 + Height = 86 + MaxLength = 255 + TabOrder = 5 + end +end diff --git a/frmOOPPohyb.pas b/frmOOPPohyb.pas new file mode 100644 index 0000000..6539102 --- /dev/null +++ b/frmOOPPohyb.pas @@ -0,0 +1,603 @@ +unit frmOOPPohyb; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, ddPlugin_TLB, + Vcl.Mask, RzEdit, RzBtnEdt, Vcl.ComCtrls, RzDTP, Vcl.NumberBox; + +const + tblOOPProfese = '[dbo].[_hdc_TabOOP_Profese]'; + tblOOPPolozky = '[dbo].[_hdc_TabOOP_Polozky]'; + tblOOPPotrebnost = '[dbo].[_hdc_TabOOP_Potrebnost]'; + tblOOPPohyby = '[dbo].[_hdc_TabOOP_Pohyby]'; + tblOOPDuvod = '[dbo].[_hdc_TabOOP_Duvod]'; + +type + TformOOPPohyb = class(TForm) + edtOsCislo: TRzButtonEdit; + GroupBox1: TGroupBox; + Label1: TLabel; + edtPrijmJm: TRzButtonEdit; + Label2: TLabel; + Label3: TLabel; + edtProfese: TRzButtonEdit; + Label4: TLabel; + edtStredisko: TRzButtonEdit; + edtStrediskoText: TRzButtonEdit; + edtStrediskoOld: TEdit; + edtDatum: TRzDateTimePicker; + Label5: TLabel; + Label6: TLabel; + edtPolozka: TRzButtonEdit; + edtPolozkaText: TRzButtonEdit; + btnOK: TButton; + btnStorno: TButton; + edtMnoz: TNumberBox; + Label7: TLabel; + memoPozn: TMemo; + Label8: TLabel; + procedure edtOsCisloButtonClick(Sender: TObject); + procedure edtPrijmJmButtonClick(Sender: TObject); + procedure edtStrediskoButtonClick(Sender: TObject); + procedure edtProfeseButtonClick(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure edtOsCisloExit(Sender: TObject); + procedure btnStornoClick(Sender: TObject); + procedure edtPolozkaButtonClick(Sender: TObject); + procedure edtPolozkaExit(Sender: TObject); + procedure edtPolozkaEnter(Sender: TObject); + procedure btnOKClick(Sender: TObject); + procedure edtOsCisloKeyUp(Sender: TObject; var Key: Word; + Shift: TShiftState); + procedure edtPolozkaKeyUp(Sender: TObject; var Key: Word; + Shift: TShiftState); + procedure edtPrijmJmKeyUp(Sender: TObject; var Key: Word; + Shift: TShiftState); + private + function NactiUdajeZamestnance(cisZam: integer): boolean; + function MamNarokNaPolozku(var outMsg: string): boolean; + procedure DotazNaUkonceni; + public + Helios: IHelios; + jeTest: boolean; + end; + +var + formOOPPohyb: TformOOPPohyb; + bidOOPProfese, bidOOPPolozky: integer; + outMsg: string; + cisZam, idZam, idZamUser: integer; + stredisko, strediskoUser, profese, polozka, polozkaNum, stredOld: string; + idProf, idPolozka: integer; + oVar1, oVar2: OleVariant; + infoUkazano, superUserOOP: boolean; + + +implementation +uses System.StrUtils, System.DateUtils, System.UITypes, + helUtils; +{$R *.dfm} + + + + procedure TaskDlgOK(titulek, nadpis, textX: string; ikona: byte); + begin + with TTaskDialog.Create(nil) do + begin + try + Caption:= titulek; + Title:= nadpis; + Text:= textX; + MainIcon:= ikona; + DefaultButton:= tcbOK; + CommonButtons:= [tcbOk]; + Execute; + finally + Free; + end; + end; + end; + + + + function TaskDlgYesNo(titulek, nadpis, textX: string; ikona: byte; defBtn: TTaskDialogCommonButton): System.UITypes.TModalResult; + begin + with TTaskDialog.Create(nil) do + begin + try + Caption:= titulek; + Title:= nadpis; + Text:= textX; + MainIcon:= ikona; + DefaultButton:= defBtn; + CommonButtons:= [tcbYes, tcbNo]; + Execute; + result:= ModalResult; + finally + Free; + end; + end; + end; + + + + + + procedure TformOOPPohyb.DotazNaUkonceni; + begin + if ((TaskDlgYesNo('', 'Chcete ukončit zadávání ?', '(data nebudou uložena)', tdiInformation, tcbNo))=mrYes) then + Close; + end; + + + + + function TformOOPPohyb.NactiUdajeZamestnance(cisZam: Integer): Boolean; + begin + result:= false; + if (cisZam>0) then + begin + if (helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM ' + tblCisZam + ' WHERE Cislo=' + cisZam.ToString)) then + begin + idZam:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblCisZam + ' WHERE Cislo=' + cisZam.ToString); + + if (idZam>0) and (helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM (VALUES(1)) t1(col1) WHERE COL_LENGTH(N' + tblCisZamE.QuotedString + ', N''_OOP_Profese'') IS NOT NULL')) then + begin + idProf:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ISNULL(_OOP_Profese, 0) FROM ' + tblCisZamE + ' WHERE ID=' + idZam.ToString); + if (idProf>0) then + begin + edtProfese.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Profese FROM ' + tblOOPProfese + ' WHERE ID=' + idProf.ToString); + if (edtDatum.CanFocus) then + edtDatum.SetFocus; + end + else + edtProfese.Text:= ''; + end; + edtPrijmJm.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT PrijmeniJmeno FROM ' + tblCisZam + ' WHERE Cislo=' + cisZam.ToString); + edtStredisko.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Stredisko FROM ' + tblCisZam + ' WHERE Cislo=' + cisZam.ToString); + edtStrediskoText.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblStrom + ' WHERE Cislo=N' + edtStredisko.Text.QuotedString); + stredOld:= helUtils.getHeliosStrVal(Helios, '', 'SELECT TOP(1) StrediskoOld FROM ' + tblOOPProfese + ' WHERE Stredisko=N' + edtStredisko.Text.QuotedString); + edtStrediskoOld.Text:= stredOld; + result:= true; + end + end + else + begin + TaskDlgOK('POZOR', 'CHYBA', 'Uvedený zaměstnanec nebyl nalezen nebo nemáte právo jej vybrat.', tdiError); + edtOsCislo.Text:= ''; + edtPrijmJm.Text:= ''; + cisZam:= 0; + idZam:= 0; + end; + end; + + + + procedure TformOOPPohyb.btnOKClick(Sender: TObject); + var lSQL: string; + begin + if (cisZam>0) and (idPolozka>0) then + begin + lSQL:= 'INSERT ' + tblOOPPohyby + ' (IDPolozky, Datum, CisloZam, Mnozstvi, Poznamka, IDProfese) SELECT ' + idPolozka.ToString + ', CONVERT(date, N' + + edtDatum.DateTime.Format('').QuotedString + ', 104), ' + cisZam.ToString + ', ' + edtMnoz.Value.ToString + ', N' + IfThen(memoPozn.Text='', 'ULL', memoPozn.Text.QuotedString) + + ', ' + IfThen(idProf=0, 'NULL', idProf.ToString); + Helios.ExecSQL(lSQL); + Close; + end + else + begin + TaskDlgOK('POZOR', 'CHYBA', 'Nebyly zadány všechny potřebné informace.', tdiWarning); + if (idPolozka=0) and (edtPolozka.CanFocus) then + edtPolozka.SetFocus; + if (cisZam=0) and (edtOsCislo.CanFocus) then + edtOsCislo.SetFocus; + end; + end; + + + + procedure TformOOPPohyb.btnStornoClick(Sender: TObject); + begin + Close; + end; + + + + procedure TformOOPPohyb.edtOsCisloButtonClick(Sender: TObject); + var c: integer; + podm: string; + begin + podm:= IfThen(superUserOOP, '', 'TabCisZam.Stredisko LIKE N' + (strediskoUser + '%').QuotedString); + podm:= podm + IfThen(podm<>'', ' AND ', '') + 'TabCisZam.ID IN (SELECT ZamestnanecID FROM ' + tblZamMzd + ' WHERE StavES=0 AND IdObdobi=(SELECT ID FROM ' + tblMzdObd + ' WHERE Rok=' + + YearOf(Now).ToString + ' AND Mesic=' + MonthOf(Now).ToString + ') AND ISNULL(DatumUkonceniPP, N''20991231'')>GETDATE() )'; + if (Helios.Prenos(bidCisZam, 'TabCisZam.Cislo', oVar1, podm, 'Zaměstnanec', true)) then + begin + cisZam:= oVar1; + edtOsCislo.Text:= cisZam.ToString; + if (edtOsCislo.Text<>'') then + begin + if not(TryStrToInt(edtOsCislo.Text, c)) then + c:= 0; + cisZam:= c; + if (NactiUdajeZamestnance(cisZam)) then + if (edtProfese.CanFocus) then + edtProfese.SetFocus; + end + else + cisZam:= 0; + end; + + if (edtOsCislo.Modified) then + begin + idPolozka:= 0; + edtPolozka.Text:= ''; + edtPolozkaText.Text:= ''; + end; + end; + + + + procedure TformOOPPohyb.edtOsCisloExit(Sender: TObject); + var lSQL: string; + c: integer; + nulujZam: boolean; + begin + nulujZam:= true; + edtOsCislo.Text:= edtOsCislo.Text.Trim; + if (edtOsCislo.Text<>'') then + begin + nulujZam:= false; + if not(TryStrToInt(edtOsCislo.Text, c)) then + c:= 0; + cisZam:= c; + idZam:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblCisZam + ' WHERE Cislo=' + cisZam.ToString); + + if not(superUserOOP) then + if not(helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM ' + tblCisZam + ' WHERE Cislo=' + cisZam.ToString + ' AND Stredisko LIKE N' + (strediskoUser + '%').QuotedString)) then + nulujZam:= true; + + lSQL:= 'SELECT 1 FROM ' + tblZamMzd + ' WHERE ZamestnanecId=' + idZam.ToString + ' AND IdObdobi=(SELECT ID FROM ' + tblMzdObd + ' WHERE Rok=' + YearOf(Now).ToString + + ' AND Mesic=' + MonthOf(Now).ToString + ') AND StavES=0 AND ISNULL(DatumUkonceniPP, N''20991231'')>GETDATE()'; + if not(helUtils.sqlExistsTestGeneral(Helios, lSQL)) then + nulujZam:= true; + + if (nulujZam) then + begin + cisZam:= 0; + idZam:= 0; + edtOsCislo.Text:= ''; + edtPrijmJm.Text:= ''; + end; + + if (NactiUdajeZamestnance(cisZam)) then + if (edtProfese.CanFocus) then + edtProfese.SetFocus; + end; + + if (edtOsCislo.Modified) then + begin + idPolozka:= 0; + edtPolozka.Text:= ''; + edtPolozkaText.Text:= ''; + end; + + if (nulujZam) then + begin + cisZam:= 0; + idZam:= 0; + edtOsCislo.Text:= ''; + edtPrijmJm.Text:= ''; + end; + end; + + + + + + procedure TformOOPPohyb.edtPrijmJmKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); + begin + if (Key=VK_ESCAPE) then + DotazNaUkonceni; + end; + + + procedure TformOOPPohyb.edtPolozkaKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); + begin + if (Key=VK_ESCAPE) then + DotazNaUkonceni; + end; + + + procedure TformOOPPohyb.edtOsCisloKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); + begin + if (Key=VK_ESCAPE) then + DotazNaUkonceni; + end; + + + + + function TformOOPPohyb.MamNarokNaPolozku(var outMsg: string): Boolean; + var lSQL, msg: string; + poslVyd: TDateTime; + duvod, zivotnostTxt: string; + b: boolean; + rozdilDnu, zivotnostDnu: integer; + begin + result:= false; + outMsg:= ''; + + stredisko:= edtStredisko.Text; + stredOld:= edtStrediskoOld.Text; + + + if (idPolozka=0) then + outMsg:= 'Nelze identifikovat ID položky' + else + if (cisZam=0) then + outMsg:= 'Není identifikován zaměstnanec' + else + begin + lSQL:= 'SELECT TOP(1) Datum FROM ' + tblOOPPohyby + ' WHERE IDPolozky=' + idPolozka.ToString + ' AND CisloZam=' + cisZam.ToString + ' ORDER BY Datum DESC'; + poslVyd:= helUtils.getHeliosDateTimeVal(Helios, 0, lSQL); // default 31.12.1899 = 0 + + lSQL:= 'SELECT 1 FROM ' + tblOOPPotrebnost + ' WHERE IDPolozky=' + idPolozka.ToString + ' AND IDProfese=' + idProf.ToString + ' AND Stredisko=N' + stredisko.QuotedString; + if (helUtils.sqlExistsTestGeneral(Helios, lSQL)) then + begin + lSQL:= 'SELECT d.Kod FROM ' + tblOOPPotrebnost + ' p INNER JOIN ' + tblOOPDuvod + ' d ON (d.ID=p.IDDuvod) WHERE p.IDPolozky=' + idPolozka.ToString + + ' AND p.IDProfese=' + idProf.ToString + ' AND p.Stredisko=N' + stredisko.QuotedString; + duvod:= helUtils.getHeliosStrVal(Helios, '', lSQL); + if (duvod='1') then + begin + outMsg:= 'Důvod výměny - IHNED'; + result:= true; + end + else + if (duvod='Z') and (1=0) then + begin + outMsg:= 'Důvod výměny - SEZÓNNÍ POLOŽKA'; + result:= true; + end + else + if (duvod='2') or (duvod='Z') then + begin + outMsg:= ''; + + b:= false; + lSQL:= 'SELECT (ISNULL(ZivotnostMin, 0) * CONVERT(int, CASE ISNULL(ZivotnostMinDruh, N'''') WHEN N''D'' THEN 1 WHEN N''M'' THEN 31 WHEN N''R'' THEN 365 ELSE 0 END))' + + ' AS PocetDnu FROM ' + tblOOPPotrebnost + ' WHERE IDProfese=' + idProf.ToString + ' AND IDPolozky=' + idPolozka.ToString + ' AND Stredisko=N' + stredisko.QuotedString; + zivotnostDnu:= helUtils.getHeliosIntVal(Helios, 0, lSQL); + if (poslVyd>0) then + begin + rozdilDnu:= DaysBetween(poslVyd, edtDatum.DateTime); + if (rozdilDnu'', ' (' + zivotnostTxt + ')', '') + + CRLF + 'Chcete ji přesto vydat ?', tdiWarning, tcbNo)=mrYes) then + begin + result:= true; + btnOK.Enabled:= true; + end + else + btnOK.Enabled:= false; +{ + with TTaskDialog.Create(nil) do + begin + try + lSQL:= 'SELECT CASE WHEN ISNULL(ZivotnostMin,0)>0 THEN CONVERT(nvarchar, ZivotnostMin) + N'' '' + ISNULL(ZivotnostMinDruh, N'''') ELSE N'''' END AS ZivotnostTxt FROM ' + + tblOOPPotrebnost + ' WHERE IDProfese=' + idProf.ToString + ' AND IDPolozky=' + idPolozka.ToString + ' AND Stredisko=N' + stredisko.QuotedString; + zivotnostTxt:= helUtils.getHeliosStrVal(Helios, '', lSQL); + Caption:= 'POZOR'; + Title:= 'NEDODRŽENA ŽIVOTNOST'; + Text:= 'Dříve vydaná položka ještě nedosáhla své životnosti' + IfThen(zivotnostTxt<>'', ' (' + zivotnostTxt + ')', '') + CRLF + 'Chcete ji přesto vydat ?'; + MainIcon:= tdiWarning; + DefaultButton:= tcbNo; + CommonButtons:= [tcbYes, tcbNo]; + if (Execute) then + if (ModalResult=mrYes) then + begin + result:= true; + btnOK.Enabled:= true; + end + else + btnOK.Enabled:= false; + finally + Free; + end; + end; +} + end; + end + else + begin + outMsg:= 'Položka má nastavenu minimální životnost ale nebyl dohledán předešlý výdej.'; + result:= true; + btnOK.Enabled:= true; + end; + end + else + begin + outMsg:= 'V tabulce Potřebnosti nebyl dohledán důvod výdeje položky'; + end; + end + else + begin + outMsg:= 'Na položku nemá zaměstnanec právo, není zadána Potřebnost'; + idPolozka:= 0; + polozka:= ''; + polozkaNum:= ''; + edtPolozka.Text:= ''; + edtPolozkaText.Text:= ''; + if (edtPolozka.CanFocus) then + edtPolozka.SetFocus; + end; + end; + end; + + + + procedure TformOOPPohyb.edtPolozkaButtonClick(Sender: TObject); + var podm: string; + begin + podm:= 'hvw_TabOOP_Polozky.ID IN (SELECT IDPolozky FROM ' + tblOOPPotrebnost + ' WHERE (StrediskoOld=N' + edtStrediskoOld.Text.QuotedString + ' OR Stredisko=N' + edtStredisko.Text.QuotedString + + ') AND IDProfese=' + idProf.ToString + ')'; + if (bidOOPPolozky>0) then + if Helios.Prenos2(bidOOPPolozky, 'hvw_TabOOP_Polozky.ID', 'hvw_TabOOP_Polozky.Cislo', oVar1, oVar2, podm, 'Položka', false, true, false, 1) then + begin + idPolozka:= oVar1; + polozkaNum:= VarToStr(oVar2); + edtPolozka.Text:= polozkaNum; + if (LeftStr(polozkaNum,2)='N''') and (RightStr(polozkaNum,1)='''') then + begin + polozkaNum:= polozkaNum.Substring(2, 255); + polozkaNum:= polozkaNum.Substring(0, Length(polozkaNum)-1); + end; + edtPolozkaExit(Sender); + end; + end; + + + + + procedure TformOOPPohyb.edtPolozkaEnter(Sender: TObject); + begin + infoUkazano:= false; + end; + + + + procedure TformOOPPohyb.edtPolozkaExit(Sender: TObject); + begin + edtPolozka.Text:= edtPolozka.Text.Trim; + if (edtPolozka.Text<>'') then + begin + if not(TryStrToInt(edtPolozka.Text, idPolozka)) then + idPolozka:= 0; + edtPolozkaText.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblOOPPolozky + ' WHERE ID=' + idPolozka.ToString); + polozkaNum:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Cislo FROM ' + tblOOPPolozky + ' WHERE ID=' + idPolozka.ToString); + polozka:= edtPolozkaText.Text; + if not(MamNarokNaPolozku(outMsg)) then + begin + btnOK.Enabled:= false; + edtPolozka.Text:= ''; + edtPolozkaText.Text:= ''; + idPolozka:= 0; + polozka:= ''; + if (outMsg<>'') and not(infoUkazano) then + begin + TaskDlgOK('POZOR', 'CHYBA', outMsg, tdiWarning); + infoUkazano:= true; + outMsg:= ''; + end; + end + else + begin + btnOK.Enabled:= true; + if (outMsg<>'') and not(infoUkazano) then + begin + TaskDlgOK('POZOR', 'INFORMACE', outMsg, tdiWarning); + infoUkazano:= true; + outMsg:= ''; + end; + end; + end; + end; + + + + + procedure TformOOPPohyb.edtPrijmJmButtonClick(Sender: TObject); + var c: integer; + begin + if Helios.Prenos2(bidCisZam, 'TabCisZam.Cislo', 'TabCisZam.PrijmeniJmeno', oVar1, oVar2, '', 'Zaměstnanec', false, true, false, 1) then + begin + cisZam:= oVar1; + edtOsCislo.Text:= cisZam.ToString; + if not(TryStrToInt(edtOsCislo.Text, c)) then + c:= 0; + cisZam:= c; + if (NactiUdajeZamestnance(cisZam)) then + if (edtProfese.CanFocus) then + edtProfese.SetFocus; + end; + end; + + + + procedure TformOOPPohyb.edtProfeseButtonClick(Sender: TObject); + var lSQL, podm: string; + c: integer; + begin + podm:= 'hvw_TabOOP_Profese.StrediskoOld=N' + stredOld.QuotedString; + if (bidOOPProfese>0) then + if Helios.Prenos2(bidOOPProfese, 'hvw_TabOOP_Profese.ID', 'hvw_TabOOP_Profese.Profese', oVar1, oVar2, podm, 'Profese', false, true, false, 1) then + begin + if not(TryStrToInt(VarToStr(oVar1), c)) then + c:= 0; + idProf:= c; + +// pokud existuje ext.sloupec, profesi uloz + if (idZam>0) and (helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM (VALUES(1)) t1(col1) WHERE COL_LENGTH(N' + tblCisZamE.QuotedString + ', N''_OOP_Profese'') IS NOT NULL')) then + begin + lSQL:= 'UPDATE ' + tblCisZamE + ' SET _OOP_Profese=' + IfThen(idProf=0, 'NULL', idProf.ToString) + ' WHERE ID=' + idZam.ToString + CRLF; + if (idProf>0) then + lSQL:= lSQL + 'IF (@@ROWCOUNT=0) INSERT ' + tblCisZamE + ' (ID, _OOP_Profese) SELECT ' + idZam.ToString + ', ' + idProf.ToString; + Helios.ExecSQL(lSQL); + end; + + profese:= VarToStr(oVar2); + if (LeftStr(profese,2)='N''') and (RightStr(profese,1)='''') then + begin + profese:= profese.Substring(2, 255); + profese:= profese.Substring(0, Length(profese)-1); + end; + edtProfese.Text:= profese; + if (edtDatum.CanFocus) then + edtDatum.SetFocus; + end; + end; + + + + procedure TformOOPPohyb.edtStrediskoButtonClick(Sender: TObject); + begin + if (Helios.Prenos(bidCisZam, 'TabCisZam.Cislo', oVar1, '', 'Zaměstnanec', true)) then + begin + stredisko:= VarToStr(oVar1); + edtStredisko.Text:= stredisko; + edtStrediskoText.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblStrom + ' WHERE Cislo=N' + edtStredisko.Text.QuotedString); + stredOld:= helUtils.getHeliosStrVal(Helios, '', 'SELECT TOP(1) StrediskoOld FROM ' + tblOOPProfese + ' WHERE Stredisko=N' + edtStredisko.Text.QuotedString); + edtStrediskoOld.Text:= stredOld; + end; + end; + + + + procedure TformOOPPohyb.FormShow(Sender: TObject); + begin + bidOOPProfese:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT DPBID FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_TabOOP_Profese'''); + bidOOPPolozky:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT DPBID FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_TabOOP_Polozky'''); + + edtDatum.DateTime:= Now; + + + strediskoUser:= helUtils.getHeliosStrVal(Helios, '', 'SELECT z.Stredisko FROM ' + tblCisZam + ' z INNER JOIN ' + tblUserCfg + ' u ON (u.LoginName=z.LoginId) WHERE u.LoginName=SUSER_SNAME()'); + idZamUser:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblCisZam + ' WHERE LoginId=SUSER_SNAME()'); + superUserOOP:= false; + if (idZamUser>0) and (helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM (VALUES(1)) t1(col1) WHERE COL_LENGTH(N' + tblCisZamE.QuotedString + ', N''_OOP_SuperUser'') IS NOT NULL')) then + superUserOOP:= helUtils.getHeliosBoolVal(Helios, false, 'SELECT CONVERT(bit, ISNULL(_OOP_SuperUser, 0)) FROM ' + tblCisZamE + ' WHERE ID=' + idZamUser.ToString); + if (jeTest) then + superUserOOP:= jeTest; + + end; + +end. diff --git a/frmOdlitek.dfm b/frmOdlitek.dfm new file mode 100644 index 0000000..ecccd05 --- /dev/null +++ b/frmOdlitek.dfm @@ -0,0 +1,1574 @@ +object formOdlitek: TformOdlitek + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = ' Odlitek' + ClientHeight = 774 + ClientWidth = 1032 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + Position = poOwnerFormCenter + OnClose = FormClose + OnShow = FormShow + TextHeight = 13 + object pgCtrl: TPageControl + Left = 3 + Top = 5 + Width = 1019 + Height = 709 + ActivePage = shObecne + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + object shObecne: TTabSheet + Caption = ' Obecn'#233' ' + ImageIndex = 4 + object Label41: TLabel + Left = 9 + Top = 597 + Width = 78 + Height = 19 + Caption = 'Pozn'#225'mka:' + end + object Panel1: TPanel + Left = 13 + Top = 3 + Width = 995 + Height = 588 + Color = 16767411 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBackground = False + ParentFont = False + TabOrder = 0 + object Label5: TLabel + Left = 11 + Top = 10 + Width = 105 + Height = 19 + Caption = 'Technologie:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object Label10: TLabel + Left = 606 + Top = 133 + Width = 132 + Height = 19 + Caption = 'V'#283'tvi'#269'ek na strom:' + end + object Label3: TLabel + Left = 606 + Top = 235 + Width = 124 + Height = 19 + Caption = 'Strom'#367' na tavbu:' + end + object Label12: TLabel + Left = 750 + Top = 133 + Width = 74 + Height = 19 + Caption = 'KS v et'#225#382'i:' + end + object Label1: TLabel + Left = 303 + Top = 134 + Width = 92 + Height = 19 + Caption = 'KS ve form'#283':' + end + object Label2: TLabel + Left = 303 + Top = 185 + Width = 138 + Height = 19 + Caption = 'KS ve form'#283' (ALT):' + end + object Label11: TLabel + Left = 448 + Top = 185 + Width = 151 + Height = 19 + Caption = 'Po'#269'et v'#283'tvi'#269'ek (ALT):' + end + object Label9: TLabel + Left = 448 + Top = 138 + Width = 105 + Height = 19 + Caption = 'Po'#269'et v'#283'tvi'#269'ek:' + end + object Label8: TLabel + Left = 170 + Top = 435 + Width = 101 + Height = 19 + Caption = 'KS dopl. d'#237'l 3:' + end + object Label7: TLabel + Left = 170 + Top = 378 + Width = 101 + Height = 19 + Caption = 'KS dopl. d'#237'l 2:' + end + object Label6: TLabel + Left = 170 + Top = 318 + Width = 101 + Height = 19 + Caption = 'KS dopl. d'#237'l 1:' + end + object Label4: TLabel + Left = 606 + Top = 185 + Width = 123 + Height = 19 + Caption = 'KS na strome'#269'ek:' + end + object Label16: TLabel + Left = 786 + Top = 340 + Width = 55 + Height = 19 + Caption = '1. obal:' + end + object Label15: TLabel + Left = 583 + Top = 373 + Width = 182 + Height = 19 + Caption = 'Hmotnost sko'#345'epiny (kg):' + end + object Label14: TLabel + Left = 583 + Top = 316 + Width = 187 + Height = 19 + Caption = 'Hmotnost strome'#269'ku (kg):' + end + object Label17: TLabel + Left = 373 + Top = 314 + Width = 166 + Height = 19 + Caption = 'Hmotnost NETTO (kg):' + end + object Label18: TLabel + Left = 373 + Top = 373 + Width = 176 + Height = 19 + Caption = 'Hmotnost BRUTTO (kg):' + end + object Label19: TLabel + Left = 439 + Top = 10 + Width = 53 + Height = 19 + Caption = 'V'#253'kres:' + end + object Label20: TLabel + Left = 698 + Top = 10 + Width = 77 + Height = 19 + Caption = 'Incoterms:' + end + object Label21: TLabel + Left = 857 + Top = 10 + Width = 72 + Height = 19 + Caption = #268#237'slo PKZ:' + end + object Label22: TLabel + Left = 373 + Top = 488 + Width = 183 + Height = 19 + Caption = 'Hmotnost vosk.d'#237'lce (kg):' + end + object Label23: TLabel + Left = 576 + Top = 520 + Width = 175 + Height = 19 + Caption = 'Hmotnost odl.kovu (kg):' + end + object Label24: TLabel + Left = 576 + Top = 548 + Width = 86 + Height = 19 + Caption = 'Vyu'#382'it'#237' (%):' + end + object lblVyuziti: TLabel + Left = 668 + Top = 548 + Width = 5 + Height = 19 + end + object lblHmOdlKovu: TLabel + Left = 759 + Top = 520 + Width = 5 + Height = 19 + end + object Label25: TLabel + Left = 797 + Top = 399 + Width = 48 + Height = 19 + Caption = 'Od'#345'ez:' + end + object Label26: TLabel + Left = 582 + Top = 433 + Width = 102 + Height = 19 + Caption = 'Pr'#367#345'ez vto'#269'ku:' + end + object Label27: TLabel + Left = 335 + Top = 10 + Width = 53 + Height = 19 + Caption = 'Garant:' + end + object Label28: TLabel + Left = 12 + Top = 70 + Width = 136 + Height = 19 + Caption = 'Specifikace v'#253'roby:' + end + object Label29: TLabel + Left = 12 + Top = 93 + Width = 56 + Height = 19 + Caption = 'Odlitek:' + end + object Label30: TLabel + Left = 196 + Top = 93 + Width = 67 + Height = 19 + Caption = 'Obrobek:' + end + object Label31: TLabel + Left = 848 + Top = 133 + Width = 120 + Height = 19 + Caption = 'Lisovac'#237' skupina:' + Visible = False + end + object Label32: TLabel + Left = 750 + Top = 185 + Width = 85 + Height = 19 + Caption = 'KS na plat'#283':' + end + object Label37: TLabel + Left = 15 + Top = 509 + Width = 91 + Height = 19 + Caption = 'Teplota min:' + end + object Label38: TLabel + Left = 15 + Top = 541 + Width = 94 + Height = 19 + Caption = 'Teplota max:' + end + object Label39: TLabel + Left = 374 + Top = 433 + Width = 173 + Height = 19 + Caption = 'Hmotnost obrobku (kg):' + end + object Label40: TLabel + Left = 857 + Top = 89 + Width = 44 + Height = 19 + Caption = #352'ar'#382'e:' + end + object Label42: TLabel + Left = 848 + Top = 185 + Width = 138 + Height = 19 + Caption = 'Lisovac'#237' '#269'as (skp9):' + Visible = False + end + object Label43: TLabel + Left = 159 + Top = 185 + Width = 139 + Height = 19 + Caption = 'Pozic ve frm (ALT):' + end + object Label44: TLabel + Left = 159 + Top = 134 + Width = 110 + Height = 19 + Caption = 'Pozic ve form'#283':' + end + object Label45: TLabel + Left = 165 + Top = 261 + Width = 133 + Height = 19 + Caption = 'Legovac'#237' p'#345#237'platek:' + end + object Label46: TLabel + Left = 316 + Top = 261 + Width = 104 + Height = 19 + Caption = 'Skupina firem:' + end + object Label47: TLabel + Left = 208 + Top = 510 + Width = 61 + Height = 19 + Caption = 'Materi'#225'l:' + end + object Label48: TLabel + Left = 852 + Top = 433 + Width = 120 + Height = 19 + Caption = 'Lisovac'#237' skupina:' + end + object Label49: TLabel + Left = 851 + Top = 483 + Width = 88 + Height = 19 + Caption = 'Lisovac'#237' '#269'as:' + end + object Label50: TLabel + Left = 848 + Top = 235 + Width = 107 + Height = 19 + Caption = #268'as vst'#345'iku (s):' + Visible = False + end + object Label51: TLabel + Left = 851 + Top = 535 + Width = 107 + Height = 19 + Caption = #268'as vst'#345'iku (s):' + end + object edtMatOdlit: TLabeledEdit + Left = 131 + Top = 31 + Width = 153 + Height = 27 + EditLabel.Width = 189 + EditLabel.Height = 19 + EditLabel.Caption = 'Mate'#269'n'#237' odlitek u obrobku:' + TabOrder = 1 + Text = '' + OnKeyDown = edtMatOdlitKeyDown + OnKeyPress = edtMatOdlitKeyPress + OnKeyUp = edtMatOdlitKeyUp + end + object selMatOdlit: TComboEdit + Left = 282 + Top = 30 + Width = 26 + Height = 27 + GlyphKind = gkEllipsis + NumGlyphs = 1 + TabOrder = 2 + Text = '' + OnButtonClick = selMatOdlitClick + end + object edtCisOrg: TLabeledEdit + Left = 400 + Top = 87 + Width = 65 + Height = 27 + EditLabel.Width = 61 + EditLabel.Height = 19 + EditLabel.Caption = 'Vlastn'#237'k:' + TabOrder = 9 + Text = '' + OnExit = edtCisOrgExit + end + object selCisOrg: TComboEdit + Left = 465 + Top = 87 + Width = 25 + Height = 27 + GlyphKind = gkEllipsis + NumGlyphs = 1 + TabOrder = 10 + Text = '' + OnButtonClick = selCisOrgClick + end + object edtOrg: TEdit + Left = 505 + Top = 87 + Width = 301 + Height = 27 + TabOrder = 11 + OnExit = edtOrgExit + end + object selOrg: TComboEdit + Left = 806 + Top = 87 + Width = 25 + Height = 27 + GlyphKind = gkEllipsis + ButtonWidth = 17 + NumGlyphs = 1 + TabOrder = 12 + Text = '' + OnButtonClick = selOrgClick + end + object edtDruhTech: TEdit + Left = 21 + Top = 30 + Width = 76 + Height = 27 + Alignment = taCenter + MaxLength = 5 + TabOrder = 0 + end + object edtVetvNaStrom: TNumberBox + Left = 606 + Top = 156 + Width = 65 + Height = 27 + Alignment = taCenter + TabOrder = 19 + end + object edtStrNaTavbu: TNumberBox + Left = 606 + Top = 254 + Width = 65 + Height = 27 + Alignment = taCenter + TabOrder = 30 + OnExit = edtStrNaTavbuExit + end + object edtKsEtaz: TNumberBox + Left = 750 + Top = 156 + Width = 65 + Height = 27 + Alignment = taCenter + TabOrder = 20 + end + object edtDruhFor: TLabeledEdit + Left = 11 + Top = 155 + Width = 102 + Height = 27 + EditLabel.Width = 88 + EditLabel.Height = 19 + EditLabel.Caption = 'Druh formy:' + TabOrder = 14 + Text = '' + end + object selDruhFor: TComboEdit + Left = 113 + Top = 155 + Width = 25 + Height = 27 + GlyphKind = gkEllipsis + NumGlyphs = 1 + TabOrder = 15 + Text = '' + OnButtonClick = selDruhForClick + OnClick = selDruhForClick + end + object edtKsFor: TNumberBox + Left = 303 + Top = 155 + Width = 65 + Height = 27 + Alignment = taCenter + TabOrder = 17 + end + object edtDruhForA: TLabeledEdit + Left = 11 + Top = 208 + Width = 102 + Height = 27 + EditLabel.Width = 134 + EditLabel.Height = 19 + EditLabel.Caption = 'Druh formy (ALT):' + TabOrder = 22 + Text = '' + end + object selDruhForA: TComboEdit + Left = 113 + Top = 207 + Width = 25 + Height = 27 + GlyphKind = gkEllipsis + NumGlyphs = 1 + TabOrder = 23 + Text = '' + OnButtonClick = selDruhForAClick + OnClick = selDruhForAClick + end + object edtKsForA: TNumberBox + Left = 301 + Top = 207 + Width = 65 + Height = 27 + Alignment = taCenter + TabOrder = 25 + end + object edtPocetVetviA: TNumberBox + Left = 448 + Top = 207 + Width = 65 + Height = 27 + Alignment = taCenter + TabOrder = 26 + end + object edtPocetVetvi: TNumberBox + Left = 448 + Top = 159 + Width = 65 + Height = 27 + Alignment = taCenter + TabOrder = 18 + end + object selDoplDil1: TComboEdit + Left = 114 + Top = 341 + Width = 25 + Height = 27 + GlyphKind = gkEllipsis + NumGlyphs = 1 + TabOrder = 34 + Text = '' + OnButtonClick = selDoplDil1Click + OnClick = selDoplDil1Click + end + object edtDoplDil1: TLabeledEdit + Left = 12 + Top = 341 + Width = 102 + Height = 27 + EditLabel.Width = 100 + EditLabel.Height = 19 + EditLabel.Caption = 'Dopln'#283'k d'#237'l 1:' + TabOrder = 33 + Text = '' + end + object selDruhVtoku: TComboEdit + Left = 113 + Top = 285 + Width = 25 + Height = 27 + GlyphKind = gkEllipsis + NumGlyphs = 1 + TabOrder = 32 + Text = '' + OnButtonClick = selDruhVtokuClick + OnClick = selDruhVtokuClick + end + object edtDruhVtoku: TLabeledEdit + Left = 12 + Top = 285 + Width = 102 + Height = 27 + EditLabel.Width = 123 + EditLabel.Height = 19 + EditLabel.Caption = 'Druh vtoku (k'#367'l):' + TabOrder = 31 + Text = '' + end + object edtKsDopl3: TNumberBox + Left = 170 + Top = 458 + Width = 65 + Height = 27 + Alignment = taCenter + TabOrder = 41 + end + object edtKsDopl2: TNumberBox + Left = 170 + Top = 401 + Width = 65 + Height = 27 + Alignment = taCenter + TabOrder = 38 + end + object edtKsDopl1: TNumberBox + Left = 170 + Top = 341 + Width = 65 + Height = 27 + Alignment = taCenter + TabOrder = 35 + end + object edtKSNaStrom: TNumberBox + Left = 606 + Top = 207 + Width = 65 + Height = 27 + Alignment = taCenter + TabOrder = 27 + OnExit = edtKSNaStromExit + end + object selDoplDil3: TComboEdit + Left = 114 + Top = 458 + Width = 25 + Height = 27 + GlyphKind = gkEllipsis + NumGlyphs = 1 + TabOrder = 40 + Text = '' + OnButtonClick = selDoplDil3Click + OnClick = selDoplDil3Click + end + object edtDoplDil3: TLabeledEdit + Left = 12 + Top = 458 + Width = 102 + Height = 27 + EditLabel.Width = 100 + EditLabel.Height = 19 + EditLabel.Caption = 'Dopln'#283'k d'#237'l 3:' + TabOrder = 39 + Text = '' + end + object selDoplDil2: TComboEdit + Left = 114 + Top = 401 + Width = 25 + Height = 27 + GlyphKind = gkEllipsis + NumGlyphs = 1 + TabOrder = 37 + Text = '' + OnButtonClick = selDoplDil2Click + OnClick = selDoplDil2Click + end + object edtDoplDil2: TLabeledEdit + Left = 12 + Top = 401 + Width = 102 + Height = 27 + EditLabel.Width = 100 + EditLabel.Height = 19 + EditLabel.Caption = 'Dopln'#283'k d'#237'l 2:' + TabOrder = 36 + Text = '' + end + object cbPrvniObal: TComboBox + Left = 853 + Top = 337 + Width = 115 + Height = 27 + Style = csDropDownList + TabOrder = 52 + Items.Strings = ( + '' + 'K'#345'emen' + 'Zirkon') + end + object edtHmotSkor: TNumberBox + Left = 583 + Top = 395 + Width = 65 + Height = 27 + Alignment = taCenter + Decimal = 3 + Mode = nbmFloat + TabOrder = 49 + end + object edtHmotStr: TNumberBox + Left = 583 + Top = 338 + Width = 65 + Height = 27 + Alignment = taCenter + Decimal = 3 + Mode = nbmFloat + TabOrder = 48 + OnExit = edtHmotStrExit + end + object edtHmotNetto: TNumberBox + Left = 373 + Top = 336 + Width = 65 + Height = 27 + Alignment = taCenter + Decimal = 4 + Mode = nbmFloat + TabOrder = 44 + OnExit = edtHmotNettoExit + end + object edtHmotBrutto: TNumberBox + Left = 373 + Top = 395 + Width = 65 + Height = 27 + Alignment = taCenter + Decimal = 4 + Mode = nbmFloat + TabOrder = 45 + end + object edtVykres: TEdit + Left = 439 + Top = 30 + Width = 234 + Height = 27 + MaxLength = 25 + TabOrder = 4 + OnExit = edtOrgExit + end + object edtIncoterms: TEdit + Left = 698 + Top = 30 + Width = 143 + Height = 27 + MaxLength = 15 + TabOrder = 5 + OnExit = edtOrgExit + end + object edtPKZ: TEdit + Left = 857 + Top = 30 + Width = 102 + Height = 27 + MaxLength = 8 + TabOrder = 6 + OnExit = edtOrgExit + end + object edtHmVoskD: TNumberBox + Left = 373 + Top = 513 + Width = 80 + Height = 27 + Alignment = taCenter + Decimal = 4 + Mode = nbmFloat + TabOrder = 47 + end + object cbOdrez: TComboBox + Left = 853 + Top = 396 + Width = 87 + Height = 27 + Style = csDropDownList + TabOrder = 53 + Items.Strings = ( + '' + 'Ano' + 'Ne') + end + object edtPrurezVtk1: TEdit + Left = 583 + Top = 455 + Width = 79 + Height = 27 + MaxLength = 12 + TabOrder = 50 + OnExit = edtOrgExit + end + object edtPrurezVtk2: TEdit + Left = 672 + Top = 455 + Width = 79 + Height = 27 + MaxLength = 12 + TabOrder = 51 + OnExit = edtOrgExit + end + object edtGarant: TEdit + Left = 330 + Top = 30 + Width = 45 + Height = 27 + Color = clMenuBar + MaxLength = 1 + ReadOnly = True + TabOrder = 3 + OnExit = edtOrgExit + end + object cbSpecVyrOdlitek: TComboBox + Left = 74 + Top = 90 + Width = 106 + Height = 27 + Style = csDropDownList + TabOrder = 7 + Items.Strings = ( + '' + 'S'#233'rie' + 'P'#345'eds'#233'rie') + end + object cbSpecVyrObrobek: TComboBox + Left = 269 + Top = 90 + Width = 106 + Height = 27 + Style = csDropDownList + TabOrder = 8 + Items.Strings = ( + '' + 'S'#233'rie' + 'P'#345'eds'#233'rie') + end + object edtLisSkup: TEdit + Left = 848 + Top = 155 + Width = 43 + Height = 27 + Alignment = taCenter + MaxLength = 1 + NumbersOnly = True + TabOrder = 21 + Visible = False + end + object edtKsNaPlate: TNumberBox + Left = 750 + Top = 207 + Width = 65 + Height = 27 + Alignment = taCenter + TabOrder = 28 + OnExit = edtKSNaStromExit + end + object edtTeplotaMin: TNumberBox + Left = 126 + Top = 506 + Width = 65 + Height = 27 + Alignment = taCenter + MaxLength = 4 + TabOrder = 42 + end + object edtTeplotaMax: TNumberBox + Left = 126 + Top = 539 + Width = 65 + Height = 27 + Alignment = taCenter + MaxLength = 4 + TabOrder = 43 + end + object edtHmotObr: TNumberBox + Left = 374 + Top = 455 + Width = 80 + Height = 27 + Alignment = taCenter + Decimal = 4 + Mode = nbmFloat + TabOrder = 46 + end + object cbSarze: TComboBox + Left = 911 + Top = 86 + Width = 76 + Height = 27 + Style = csDropDownList + TabOrder = 13 + Items.Strings = ( + '' + 'Ano' + 'Ne') + end + object edtLisCas: TNumberBox + Left = 848 + Top = 207 + Width = 65 + Height = 27 + Alignment = taCenter + MaxLength = 3 + TabOrder = 29 + Visible = False + OnExit = edtKSNaStromExit + end + object edtPozForA: TNumberBox + Left = 159 + Top = 207 + Width = 65 + Height = 27 + Alignment = taCenter + TabOrder = 24 + end + object edtPozFor: TNumberBox + Left = 159 + Top = 155 + Width = 65 + Height = 27 + Alignment = taCenter + TabOrder = 16 + end + object cbLegPripl: TComboBox + Left = 165 + Top = 285 + Width = 76 + Height = 27 + Style = csDropDownList + TabOrder = 54 + Items.Strings = ( + '' + 'Ano' + 'Ne') + end + object cbSkupFirem: TComboBox + Left = 316 + Top = 285 + Width = 355 + Height = 27 + Style = csDropDownList + TabOrder = 55 + Items.Strings = ( + '' + 'V'#353'echny pr'#367'myslov'#233' obory - do sestav' + 'V'#352'EOBECN'#201' STROJ'#205'RENSTV'#205 + 'TEXTILN'#205' STROJ'#205'RENSTV'#205 + 'STAVEBN'#205' PR'#366'MYSL' + 'ZEM'#282'D'#282'LSK'#193' TECHNIKA' + 'POTRAVIN'#193#344'SK'#193' ZA'#344#205'ZEN'#205 + 'HUDEBN'#205' N'#193'STROJE' + 'N'#193#344'AD'#205 + 'ARMATURY' + 'ELEKTROTECHNICK'#221' PR'#366'MYSL' + 'ZDRAVOTNICK'#201' POT'#344'EBY A ZA'#344#205'ZEN'#205 + 'OVL'#193'DAC'#205' A M'#282#344#205'C'#205' TECHNIKA' + 'DOPRAVN'#205' A SKLADOV'#193' TECHNIKA' + 'LETECK'#201' MOTORY, TURB'#205'NY A ZBRAN'#282 + 'AUTOMOBILOV'#221' PR'#366'MYSL' + 'STOMATOLOGIE' + 'SPORTOVN'#205' A PROPAGA'#268'N'#205' POT'#344'EBY' + 'BALIC'#237' TECHNIKA') + end + object cbMaterial: TComboBox + Left = 208 + Top = 539 + Width = 131 + Height = 27 + Style = csDropDownList + TabOrder = 56 + Items.Strings = ( + '') + end + object edtLisSkup2: TEdit + Left = 852 + Top = 456 + Width = 43 + Height = 27 + Alignment = taCenter + MaxLength = 1 + NumbersOnly = True + TabOrder = 57 + end + object edtLisCas2: TNumberBox + Left = 851 + Top = 505 + Width = 65 + Height = 27 + Alignment = taCenter + MaxLength = 3 + TabOrder = 58 + OnExit = edtKSNaStromExit + end + object edtVstrikCas: TNumberBox + Left = 848 + Top = 254 + Width = 65 + Height = 27 + Alignment = taCenter + MaxLength = 3 + TabOrder = 59 + Visible = False + OnExit = edtKSNaStromExit + end + object edtVstrikCas2: TNumberBox + Left = 851 + Top = 557 + Width = 65 + Height = 27 + Alignment = taCenter + MaxLength = 3 + TabOrder = 60 + OnExit = edtKSNaStromExit + end + object selGarant: TComboEdit + Left = 375 + Top = 30 + Width = 25 + Height = 27 + GlyphKind = gkEllipsis + NumGlyphs = 1 + TabOrder = 61 + Text = '' + OnButtonClick = selGarantButtonClick + end + end + object mPozn: TMemo + Left = 93 + Top = 595 + Width = 911 + Height = 77 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + MaxLength = 2000 + ParentFont = False + ScrollBars = ssVertical + TabOrder = 1 + end + end + object shKoop: TTabSheet + Caption = ' Atesty/kooperace ' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + ImageIndex = 5 + ParentFont = False + object Label13: TLabel + Left = 41 + Top = 23 + Width = 91 + Height = 19 + Caption = 'Jazyk atestu:' + end + object Label33: TLabel + Left = 628 + Top = 61 + Width = 78 + Height = 19 + Caption = 'Pozn'#225'mka:' + end + object Label34: TLabel + Left = 195 + Top = 63 + Width = 60 + Height = 19 + Caption = 'Ano/Ne:' + end + object Label35: TLabel + Left = 406 + Top = 61 + Width = 74 + Height = 19 + Caption = 'Vystavuje:' + end + object Label36: TLabel + Left = 509 + Top = 61 + Width = 70 + Height = 19 + Caption = 'Po'#382'aduje:' + end + object cbAtestTepel: TCheckBox + Left = 41 + Top = 87 + Width = 187 + Height = 23 + Alignment = taLeftJustify + Caption = 'Tepeln'#233' zpracov'#225'n'#237 + TabOrder = 1 + OnClick = cbAtestTepelClick + end + object mPoznTepel: TMemo + Left = 628 + Top = 83 + Width = 368 + Height = 84 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + ScrollBars = ssVertical + TabOrder = 6 + end + object mPoznObr: TMemo + Left = 628 + Top = 181 + Width = 368 + Height = 84 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + ScrollBars = ssVertical + TabOrder = 12 + end + object cbAtestObr: TCheckBox + Left = 112 + Top = 189 + Width = 116 + Height = 17 + Alignment = taLeftJustify + Caption = 'Obr'#225'b'#283'n'#237 + TabOrder = 7 + OnClick = cbAtestObrClick + end + object cbAtestPovrch: TCheckBox + Left = 52 + Top = 288 + Width = 176 + Height = 20 + Alignment = taLeftJustify + Caption = 'Povrchov'#225' '#250'prava' + TabOrder = 13 + OnClick = cbAtestPovrchClick + end + object mPoznPovrch: TMemo + Left = 628 + Top = 278 + Width = 368 + Height = 84 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + ScrollBars = ssVertical + TabOrder = 18 + end + object cbAtestDefekt: TCheckBox + Left = 81 + Top = 384 + Width = 147 + Height = 20 + Alignment = taLeftJustify + Caption = 'Defektoskopie' + TabOrder = 19 + OnClick = cbAtestDefektClick + end + object mPoznDefekt: TMemo + Left = 628 + Top = 378 + Width = 368 + Height = 84 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + ScrollBars = ssVertical + TabOrder = 24 + end + object cbAtestJine: TCheckBox + Left = 156 + Top = 492 + Width = 72 + Height = 17 + Alignment = taLeftJustify + Caption = 'Jin'#233 + TabOrder = 25 + OnClick = cbAtestJineClick + end + object mPoznJine: TMemo + Left = 628 + Top = 481 + Width = 368 + Height = 84 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + ScrollBars = ssVertical + TabOrder = 30 + end + object cbJazyk: TComboBox + Left = 139 + Top = 20 + Width = 145 + Height = 27 + Style = csDropDownList + TabOrder = 0 + end + object edtDruhTepel: TLabeledEdit + Left = 281 + Top = 84 + Width = 62 + Height = 27 + EditLabel.Width = 41 + EditLabel.Height = 19 + EditLabel.Caption = 'Druh:' + MaxLength = 3 + NumbersOnly = True + TabOrder = 2 + Text = '' + end + object selDruhTZ: TComboEdit + Left = 342 + Top = 84 + Width = 25 + Height = 27 + GlyphKind = gkEllipsis + NumGlyphs = 1 + TabOrder = 3 + Text = '' + OnButtonClick = selDruhTZClick + OnClick = selDruhTZClick + end + object selDruhObr: TComboEdit + Left = 342 + Top = 184 + Width = 25 + Height = 27 + GlyphKind = gkEllipsis + NumGlyphs = 1 + TabOrder = 9 + Text = '' + OnButtonClick = selDruhObrClick + OnClick = selDruhObrClick + end + object edtDruhObr: TEdit + Left = 281 + Top = 183 + Width = 62 + Height = 27 + MaxLength = 3 + NumbersOnly = True + TabOrder = 8 + end + object edtDruhPovrch: TEdit + Left = 281 + Top = 280 + Width = 62 + Height = 27 + MaxLength = 3 + NumbersOnly = True + TabOrder = 14 + end + object selDruhPovrch: TComboEdit + Left = 342 + Top = 279 + Width = 25 + Height = 27 + GlyphKind = gkEllipsis + NumGlyphs = 1 + TabOrder = 15 + Text = '' + OnButtonClick = selDruhPovrchClick + OnClick = selDruhPovrchClick + end + object edtDruhDefekt: TEdit + Left = 281 + Top = 384 + Width = 62 + Height = 27 + MaxLength = 3 + NumbersOnly = True + TabOrder = 20 + end + object selDruhDefekt: TComboEdit + Left = 342 + Top = 383 + Width = 25 + Height = 27 + GlyphKind = gkEllipsis + NumGlyphs = 1 + TabOrder = 21 + Text = '' + OnButtonClick = selDruhDefektClick + OnClick = selDruhDefektClick + end + object edtDruhJine: TEdit + Left = 281 + Top = 487 + Width = 62 + Height = 27 + MaxLength = 3 + NumbersOnly = True + TabOrder = 26 + end + object selDruhJine: TComboEdit + Left = 342 + Top = 486 + Width = 25 + Height = 27 + GlyphKind = gkEllipsis + NumGlyphs = 1 + TabOrder = 27 + Text = '' + OnButtonClick = selDruhJineClick + OnClick = selDruhJineClick + end + object cbVystTepel: TComboBox + Left = 406 + Top = 85 + Width = 74 + Height = 27 + Style = csDropDownList + TabOrder = 4 + end + object cbPozadTepel: TComboBox + Left = 509 + Top = 83 + Width = 74 + Height = 27 + Style = csDropDownList + TabOrder = 5 + end + object cbVystObr: TComboBox + Left = 406 + Top = 183 + Width = 74 + Height = 27 + Style = csDropDownList + TabOrder = 10 + end + object cbPozadObr: TComboBox + Left = 509 + Top = 183 + Width = 74 + Height = 27 + Style = csDropDownList + TabOrder = 11 + end + object cbVystPU: TComboBox + Left = 406 + Top = 278 + Width = 74 + Height = 27 + Style = csDropDownList + TabOrder = 16 + end + object cbPozadPU: TComboBox + Left = 509 + Top = 278 + Width = 74 + Height = 27 + Style = csDropDownList + TabOrder = 17 + end + object cbVystDefekt: TComboBox + Left = 406 + Top = 382 + Width = 74 + Height = 27 + Style = csDropDownList + TabOrder = 22 + end + object cbPozadDefekt: TComboBox + Left = 509 + Top = 382 + Width = 74 + Height = 27 + Style = csDropDownList + TabOrder = 23 + end + object cbVystJine: TComboBox + Left = 406 + Top = 485 + Width = 74 + Height = 27 + Style = csDropDownList + TabOrder = 28 + end + object cbPozadJine: TComboBox + Left = 509 + Top = 485 + Width = 74 + Height = 27 + Style = csDropDownList + TabOrder = 29 + end + object cbAtestMat: TCheckBox + Left = 125 + Top = 616 + Width = 103 + Height = 23 + Alignment = taLeftJustify + Caption = 'Materi'#225'l' + TabOrder = 31 + end + object cbVystMat: TComboBox + Left = 406 + Top = 614 + Width = 74 + Height = 27 + Style = csDropDownList + TabOrder = 34 + end + object cbPozadMat: TComboBox + Left = 509 + Top = 612 + Width = 74 + Height = 27 + Style = csDropDownList + TabOrder = 35 + end + object edtDruhMat: TEdit + Left = 281 + Top = 612 + Width = 62 + Height = 27 + MaxLength = 3 + NumbersOnly = True + TabOrder = 32 + end + object selDruhMat: TComboEdit + Left = 342 + Top = 611 + Width = 25 + Height = 27 + GlyphKind = gkEllipsis + NumGlyphs = 1 + TabOrder = 33 + Text = '' + OnButtonClick = selDruhMatClick + end + end + object shOstatni: TTabSheet + Caption = ' Ostatn'#237' ' + ImageIndex = 2 + object pnlVosk: TPanel + Left = 36 + Top = 30 + Width = 211 + Height = 235 + Color = clGradientActiveCaption + ParentBackground = False + ShowCaption = False + TabOrder = 0 + object GroupBox1: TGroupBox + Left = 1 + Top = 1 + Width = 209 + Height = 233 + Align = alClient + Caption = ' Vosk ' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + object Shape1: TShape + Left = 7 + Top = 187 + Width = 197 + Height = 1 + Brush.Color = clBackground + end + object cbVoskJadra: TCheckBox + Left = 31 + Top = 36 + Width = 97 + Height = 21 + Caption = ' J'#225'dra' + TabOrder = 0 + end + object cbVoskCepy: TCheckBox + Left = 31 + Top = 113 + Width = 97 + Height = 22 + Caption = ' '#268'epy' + TabOrder = 2 + end + object cbVoskChladitka: TCheckBox + Left = 31 + Top = 151 + Width = 117 + Height = 22 + Caption = ' Chlad'#237'tka' + TabOrder = 3 + end + object cbVoskJadraMocovina: TCheckBox + Left = 31 + Top = 73 + Width = 162 + Height = 22 + Caption = ' Mo'#269'ovinov'#225' j'#225'dra' + TabOrder = 1 + end + object cbVoskRizikovaPoz: TCheckBox + Left = 31 + Top = 200 + Width = 156 + Height = 22 + Caption = ' Rizikov'#225' polo'#382'ka' + TabOrder = 4 + end + end + end + end + end + object btnOK: TButton + Left = 764 + Top = 729 + Width = 96 + Height = 34 + Caption = 'OK' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + OnClick = btnOKClick + end + object btnStorno: TButton + Left = 919 + Top = 729 + Width = 96 + Height = 34 + Caption = 'Storno' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 2 + OnClick = btnStornoClick + OnMouseUp = btnStornoMouseUp + end +end diff --git a/frmOdlitek.pas b/frmOdlitek.pas new file mode 100644 index 0000000..7e1aa8b --- /dev/null +++ b/frmOdlitek.pas @@ -0,0 +1,1816 @@ +unit frmOdlitek; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, + Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, ddPlugin_TLB, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Mask, RzEdit, + Vcl.Themes, RxToolEdit, Vcl.NumberBox; + +const + tblOdlitky = '[dbo].[_hdc_TabOdlitky]'; + tblOdlitkyPrava = '[dbo].[_hdc_TabOdlitkyPrava]'; + tblAtestVyst = '[dbo].[_hdc_TabAtestyVystavPozad]'; + tblAtestDruhy = '[dbo].[_hdc_TabAtestyDruhy]'; + tblMaterial = '[dbo].[_hdc_TabMaterial]'; + +type + TLazyIfThen=record + class function IfThen(aCondition:Boolean;aIfTrue, aIfFalse:TFunc):T; static; + end; + + TOdlitek = record + id, idKmenZbozi: integer; + odlitek, nazev, matecniOdlitek, material, lis, cisloPKZ, poznamka: string; + forma, frmZnac, frmZnacOld, frmDruh, frmDruhAlt, oznac, vykres, incoterms: string; + vlastnik, zivotnost, zivotKov, zivotVosk, nalisKs, celkemKs, lisSkup, lisCas, casVstrik, lisSkup2, lisCas2, casVstrik2, pozicVeFrm, pozicVeFrmAlt, teplMin, teplMax: integer; + ksNaPlate, ksVeForme, ksVeFormeAlt, pocetVetv, pocetVetvAlt, ksVEtazi, strNaTavbu, ksNaTavbu, ksNaStrom, vetviNaStrom, vetviNaForm, vetviNaFormAlt: integer; + druhVtoku, doplDil1, ksDoplDil1, doplDil2, ksDoplDil2, doplDil3, ksDoplDil3, prvniObal, druhObalu, kalkVyrDavka, kalkPocetUpn: integer; + druhTech, druhVtokuTxt, doplDil1Txt, doplDil2Txt, doplDil3Txt, prurezVt, prurezVt2: string; + hmot, hmotObrob, hmotVoskD, hmotSkor, hmotStrom, hmotBrt: Extended; + garant, odrez, specifOdl, specifObr, sarze, legPripl: string; + tepZprac, voskJadra, voskJadraMoc, voskCepy, voskChlad, voskRiziko: boolean; + tstMat, tstTZ, tstObrab, tstPovrch, tstDefekt, tstJine: Boolean; + tstMatPop, tstTZPop, tstObrabPop, tstPovrchPop, tstDefektPop, tstJinePop: string; + tstMatDruh, tstTZDruh, tstObrabDruh, tstPovrchDruh, tstDefektDruh, tstJineDruh: integer; + tstMatVyst, tstMatPozad, tstTZVyst, tstTZPozad, tstObrabVyst, tstObrabPozad, tstPovrchVyst, tstPovrchPozad: string[2]; + tstJazyk, tstDefektVyst, tstDefektPozad, tstJineVyst, tstJinePozad: string[2]; + koopTpl, koopDefekt, koopBarva, koopJine, koopObrab, koopPovrch: boolean; + koopTplPop, koopDefektPop, koopBarvaPop, koopJinePop, koopObrabPop: string; + end; + + TformOdlitek = class(TForm) + pgCtrl: TPageControl; + selDruhFor: TComboEdit; + edtDruhFor: TLabeledEdit; + edtDruhForA: TLabeledEdit; + selDruhForA: TComboEdit; + Label1: TLabel; + edtKsFor: TNumberBox; + Label2: TLabel; + edtKsForA: TNumberBox; + btnOK: TButton; + btnStorno: TButton; + edtDoplDil1: TLabeledEdit; + selDoplDil1: TComboEdit; + edtDoplDil2: TLabeledEdit; + selDoplDil2: TComboEdit; + edtDoplDil3: TLabeledEdit; + selDoplDil3: TComboEdit; + edtDruhVtoku: TLabeledEdit; + selDruhVtoku: TComboEdit; + edtKSNaStrom: TNumberBox; + Label4: TLabel; + shObecne: TTabSheet; + edtDruhTech: TEdit; + Label5: TLabel; + Label6: TLabel; + edtKsDopl1: TNumberBox; + edtKsDopl2: TNumberBox; + Label7: TLabel; + Label8: TLabel; + edtKsDopl3: TNumberBox; + Label10: TLabel; + edtVetvNaStrom: TNumberBox; + edtMatOdlit: TLabeledEdit; + selMatOdlit: TComboEdit; + edtStrNaTavbu: TNumberBox; + Label3: TLabel; + Label9: TLabel; + edtPocetVetvi: TNumberBox; + Label11: TLabel; + edtPocetVetviA: TNumberBox; + Label12: TLabel; + edtKsEtaz: TNumberBox; + shKoop: TTabSheet; + cbAtestTepel: TCheckBox; + mPoznTepel: TMemo; + cbAtestObr: TCheckBox; + mPoznObr: TMemo; + cbAtestPovrch: TCheckBox; + mPoznPovrch: TMemo; + cbAtestDefekt: TCheckBox; + mPoznDefekt: TMemo; + cbAtestJine: TCheckBox; + mPoznJine: TMemo; + Label14: TLabel; + edtHmotStr: TNumberBox; + Label15: TLabel; + edtHmotSkor: TNumberBox; + Label16: TLabel; + cbPrvniObal: TComboBox; + edtCisOrg: TLabeledEdit; + selCisOrg: TComboEdit; + edtOrg: TEdit; + selOrg: TComboEdit; + Panel1: TPanel; + edtHmotNetto: TNumberBox; + Label17: TLabel; + Label18: TLabel; + edtHmotBrutto: TNumberBox; + edtVykres: TEdit; + Label19: TLabel; + Label20: TLabel; + edtIncoterms: TEdit; + edtPKZ: TEdit; + Label21: TLabel; + Label22: TLabel; + edtHmVoskD: TNumberBox; + Label23: TLabel; + Label24: TLabel; + lblVyuziti: TLabel; + lblHmOdlKovu: TLabel; + Label25: TLabel; + cbOdrez: TComboBox; + Label26: TLabel; + edtPrurezVtk1: TEdit; + edtPrurezVtk2: TEdit; + edtGarant: TEdit; + Label27: TLabel; + Label28: TLabel; + Label29: TLabel; + cbSpecVyrOdlitek: TComboBox; + Label30: TLabel; + cbSpecVyrObrobek: TComboBox; + Label31: TLabel; + Label13: TLabel; + cbJazyk: TComboBox; + Label32: TLabel; + edtKsNaPlate: TNumberBox; + edtDruhTepel: TLabeledEdit; + selDruhTZ: TComboEdit; + Label33: TLabel; + Label34: TLabel; + selDruhObr: TComboEdit; + edtDruhObr: TEdit; + edtDruhPovrch: TEdit; + selDruhPovrch: TComboEdit; + edtDruhDefekt: TEdit; + selDruhDefekt: TComboEdit; + edtDruhJine: TEdit; + selDruhJine: TComboEdit; + Label35: TLabel; + Label36: TLabel; + cbVystTepel: TComboBox; + cbPozadTepel: TComboBox; + cbVystObr: TComboBox; + cbPozadObr: TComboBox; + cbVystPU: TComboBox; + cbPozadPU: TComboBox; + cbVystDefekt: TComboBox; + cbPozadDefekt: TComboBox; + cbVystJine: TComboBox; + cbPozadJine: TComboBox; + cbAtestMat: TCheckBox; + cbVystMat: TComboBox; + cbPozadMat: TComboBox; + edtDruhMat: TEdit; + selDruhMat: TComboEdit; + Label37: TLabel; + edtTeplotaMin: TNumberBox; + Label38: TLabel; + edtTeplotaMax: TNumberBox; + Label39: TLabel; + edtHmotObr: TNumberBox; + Label40: TLabel; + cbSarze: TComboBox; + mPozn: TMemo; + Label41: TLabel; + Label42: TLabel; + edtPozForA: TNumberBox; + Label43: TLabel; + edtPozFor: TNumberBox; + Label44: TLabel; + shOstatni: TTabSheet; + GroupBox1: TGroupBox; + pnlVosk: TPanel; + cbVoskJadra: TCheckBox; + cbVoskCepy: TCheckBox; + cbVoskChladitka: TCheckBox; + cbVoskJadraMocovina: TCheckBox; + Label45: TLabel; + cbLegPripl: TComboBox; + Label46: TLabel; + cbSkupFirem: TComboBox; + cbVoskRizikovaPoz: TCheckBox; + Shape1: TShape; + Label47: TLabel; + cbMaterial: TComboBox; + Label48: TLabel; + edtLisSkup: TEdit; + edtLisCas: TNumberBox; + edtLisSkup2: TEdit; + edtLisCas2: TNumberBox; + Label49: TLabel; + Label50: TLabel; + edtVstrikCas: TNumberBox; + Label51: TLabel; + edtVstrikCas2: TNumberBox; + selGarant: TComboEdit; + procedure FormShow(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure selDruhForClick(Sender: TObject); + procedure btnStornoClick(Sender: TObject); + procedure btnOKClick(Sender: TObject); + procedure selDruhForAClick(Sender: TObject); + procedure selDruhVtokuClick(Sender: TObject); + procedure selDoplDil1Click(Sender: TObject); + procedure selDoplDil2Click(Sender: TObject); + procedure selDoplDil3Click(Sender: TObject); + procedure cbAtestTepelClick(Sender: TObject); + procedure selOrgClick(Sender: TObject); + procedure selCisOrgClick(Sender: TObject); + procedure edtCisOrgExit(Sender: TObject); + procedure edtOrgExit(Sender: TObject); + procedure edtHmotStrExit(Sender: TObject); + procedure edtStrNaTavbuExit (Sender: TObject); + procedure edtKSNaStromExit (Sender: TObject); + procedure edtHmotNettoExit (Sender: TObject); + procedure cbAtestPovrchClick (Sender: TObject); + procedure cbAtestDefektClick (Sender: TObject); + procedure cbAtestJineClick (Sender: TObject); + procedure cbAtestObrClick (Sender: TObject); + procedure selMatOdlitClick (Sender: TObject); + procedure selDruhTZClick (Sender: TObject); + procedure selDruhObrClick (Sender: TObject); + procedure selDruhPovrchClick (Sender: TObject); + procedure selDruhDefektClick (Sender: TObject); + procedure selDruhJineClick (Sender: TObject); + procedure selDruhMatClick (Sender: TObject); + procedure selGarantButtonClick (Sender: TObject); + procedure edtMatOdlitKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState); + procedure edtMatOdlitKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); + procedure edtMatOdlitKeyPress (Sender: TObject; var Key: Char); + procedure btnStornoMouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + private + function NactiParametryKarty (id: integer; var karta: TOdlitek): boolean; safecall; + procedure NactiParametry; safecall; + procedure ZmenaVypoctu; safecall; + public + Helios: IHelios; + jenView: boolean; + idK: integer; + odlitek, skinName: string; + debug: boolean; + end; + + +var + formOdlitek: TformOdlitek; + idOdl, idOdlRodic, idKZ, idKZRodic: integer; + idProUpd: integer; + mamMatOdlitek: Boolean; + podm, tempTab: string; + oVar1, oVar2: OleVariant; + bidAtestyDruhy, bidGarant, bidMaterial: integer; + kOdlitek, kRodic: TOdlitek; + + +implementation +uses System.StrUtils, System.Math, {Vcl.Styles.ColorTabs,} helUtils; + +{$R *.dfm} + + + class function TLazyIfThen.IfThen(aCondition:Boolean;aIfTrue, aIfFalse:TFunc):T; + begin + if aCondition then + result:= aIfTrue + else + result:= aIfFalse + end; + + + function NQuotedStr (inStr: string=''; trimMe: boolean=false): string; + begin + if (trimMe) then + inStr:= inStr.Trim; + result:= 'N' + inStr.QuotedString; + end; + + + function NullOrNumNoZero (inVal: Extended): string; + begin + if (inVal=0) then + result:= 'NULL' + else + result:= inVal.ToString.Replace(',', '.'); + end; + + + function NullOrNQuotedStr (inStr: string=''; trimMe: boolean=false): string; + begin + if (trimMe) then + inStr:= inStr.Trim; + if (inStr='') then + result:= 'NULL' + else + result:= 'N' + inStr.QuotedString; + end; + + + function IfThenBool(const podm, valTrue, valFalse: Boolean): boolean; + begin + result:= valFalse; + if (podm) then + result:= valTrue; + end; + + + function RodicNeboPotomekS(const rVal, pVal: string; const vratJenSHodnotou:boolean): string; + begin + result:= rVal; + if (vratJenSHodnotou) then + begin + if (pVal.Trim<>'') then + result:= pVal.Trim; + end + else + if (pVal<>rVal) and (rVal<>'') then + result:= rVal.Trim; + end; + + + function RodicNeboPotomekE(const rVal, pVal: Extended): Extended; + begin + result:= rVal; + if (pVal<>rVal) then + result:= pVal; + end; + + function RodicNeboPotomekI(const rVal, pVal: integer): integer; + begin + result:= rVal; + if (pVal<>rVal) then + result:= pVal; + end; + + + + function EmptyToZero(inStr: string): string; + begin + inStr:= StringReplace(inStr, ',', '.', [rfReplaceAll]); + result:= inStr; + if (Trim(inStr)='') then + result:= '0'; + end; + + +{ + procedure TNumberBoxPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); + var nb: TNumberBox; + rf: TRectF; + tx: string; + begin + nb := Sender as TNumberBox; + + if nb.Value = 0 then + tx := 'zero' + else + tx := format('%.0n',[nb.Value]); + + rf := ARect; + Canvas.ClearRect(ARect, TAlphaColors.Lightpink); + rf.inflate(-4, -2); + Canvas.Fill.Color := TAlphaColors.Black; + + Canvas.FillText(rf, tx, False, 1, [], TTextAlign.Leading, TTextAlign.Center); + end; +} + + + + + procedure TformOdlitek.ZmenaVypoctu; + begin + lblVyuziti.Caption:= FormatFloat('##0.##', ((edtHmotNetto.Value*edtKsNaStrom.Value)/edtHmotStr.Value)*100); + lblHmOdlKovu.Caption:= FormatFloat('#,###0', edtStrNaTavbu.Value*edtHmotStr.Value); + end; + + + + + function TformOdlitek.NactiParametryKarty (id: integer; var karta: TOdlitek): boolean; + var lSQL, matOdl, lng, sTemp: string; + iTemp: integer; + begin + result:= false; + lSQL:= 'SELECT ISNULL(Vlastnik,-1) AS Vlastnik, ISNULL(Odrez, N'''') AS Odrez, ISNULL(LisovaciSkup,0) AS LisovaciSkup, ISNULL(Sarzovat, N'''') AS Sarzovat'; + lSQL:= lSQL + ', ISNULL(LisovaciSkup2,0) AS LisovaciSkup2, * FROM ' + tblOdlitky + ' WHERE ID=' + id.ToString; + with Helios.OpenSQL(lSQL) do + if (RecordCount=1) then + begin + karta.id:= id; + karta.odlitek:= VarToStr(FieldByNameValues('Odlitek')); + karta.material:= VarToStr(FieldByNameValues('Material')); + lSQL:= 'SELECT TOP(1) k.Nazev1 FROM ' + tblOdlitky + ' o INNER JOIN ' + tblKZ + ' k ON (k.RegCis=o.Odlitek) WHERE o.ID=' + id.ToString; + lSQL:= lSQL + ' AND k.SkupZbo IN (N''VOB'', N''VOD'', N''P51'', ''P41'') ORDER BY k.SkupZbo DESC'; + karta.nazev:= helUtils.getHeliosStrVal(Helios, '', lSQL); + karta.frmDruh:= VarToStr(FieldByNameValues('FormaDruh')); + karta.ksVeForme:= StrToInt(EmptyToZero(VarToStr(FieldByNameValues('KSveForme')))); + karta.ksVeFormeAlt:= StrToInt(EmptyToZero(VarToStr(FieldByNameValues('KSveFormeAlt')))); + karta.frmDruhAlt:= VarToStr(FieldByNameValues('FormaDruhAlt')); + karta.strNaTavbu:= StrToInt(EmptyToZero(VarToStr(FieldByNameValues('StromuNaTavbu')))); + karta.druhVtokuTxt:= VarToStr(FieldByNameValues('DruhVtokuTxt')); + karta.doplDil1Txt:= VarToStr(FieldByNameValues('DoplDil1Txt')); + karta.doplDil2Txt:= VarToStr(FieldByNameValues('DoplDil2Txt')); + karta.doplDil3Txt:= VarToStr(FieldByNameValues('DoplDil3Txt')); + karta.ksNaStrom:= StrToInt(EmptyToZero(VarToStr(FieldByNameValues('KSnaStrom')))); + karta.druhTech:= VarToStr(FieldByNameValues('DruhTechnologie')).Trim; + karta.ksDoplDil1:= StrToInt(EmptyToZero(VarToStr(FieldByNameValues('KsDoplDil1')))); + karta.ksDoplDil2:= StrToInt(EmptyToZero(VarToStr(FieldByNameValues('KsDoplDil2')))); + karta.ksDoplDil3:= StrToInt(EmptyToZero(VarToStr(FieldByNameValues('KsDoplDil3')))); + karta.pocetVetv:= StrToInt(EmptyToZero(VarToStr(FieldByNameValues('PocetVetvicek')))); + karta.pocetVetvAlt:= StrToInt(EmptyToZero(VarToStr(FieldByNameValues('PocetVetvicekAlt')))); + karta.ksVEtazi:= StrToInt(EmptyToZero(VarToStr(FieldByNameValues('KSvEtazi')))); + + karta.lisCas:= StrToInt(EmptyToZero(VarToStr(FieldByNameValues('LisovaciCas')))); + karta.casVstrik:= StrToInt(EmptyToZero(VarToStr(FieldByNameValues('VstrikCas')))); + karta.lisCas2:= StrToInt(EmptyToZero(VarToStr(FieldByNameValues('LisovaciCas2')))); + karta.casVstrik2:= StrToInt(EmptyToZero(VarToStr(FieldByNameValues('VstrikCas2')))); + + karta.pozicVeFrm:= StrToInt(EmptyToZero(VarToStr(FieldByNameValues('PozicVeForme')))); + karta.pozicVeFrmAlt:= StrToInt(EmptyToZero(VarToStr(FieldByNameValues('PozicVeFormeAlt')))); + karta.teplMin:= StrToInt(EmptyToZero(VarToStr(FieldByNameValues('TeplotaMin')))); + karta.teplMax:= StrToInt(EmptyToZero(VarToStr(FieldByNameValues('TeplotaMax')))); + karta.ksNaPlate:= StrToInt(EmptyToZero(VarToStr(FieldByNameValues('KSNaPlate')))); + karta.matecniOdlitek:= Trim(VarToStr(FieldByNameValues('MatecniOdlitek'))); + + karta.koopTpl:= VarToBool(FieldByNameValues('Koop_TepelneZprac')); + karta.koopTplPop:= VarToStr(FieldByNameValues('Koop_TepelneZprac_Popis')); + if not(TryStrToInt(VarToStr(FieldByNameValues('Atest_TepelneZprac_Druh')), karta.tstTZDruh)) then + karta.tstTZDruh:= 0; + karta.tstTZVyst:= VarToStr(FieldByNameValues('Atest_TepelneZprac_Vystavuje')); + karta.tstTZPozad:= VarToStr(FieldByNameValues('Atest_TepelneZprac_Pozaduje')); + + karta.voskJadra:= VarToBool(FieldByNameValues('VoskJadra')); + karta.voskJadraMoc:= VarToBool(FieldByNameValues('VoskJadraMocovina')); + karta.voskCepy:= VarToBool(FieldByNameValues('VoskCepy')); + karta.voskChlad:= VarToBool(FieldByNameValues('VoskChladitka')); + karta.voskRiziko:= VarToBool(FieldByNameValues('VoskRiziko')); + + karta.koopObrab:= VarToBool(FieldByNameValues('Koop_Obrabeni')); + karta.koopObrabPop:= VarToStr(FieldByNameValues('Koop_Obrabeni_Popis')); + if not(TryStrToInt(VarToStr(FieldByNameValues('Atest_Obrabeni_Druh')), karta.tstObrabDruh)) then + karta.tstObrabDruh:= 0; + karta.tstObrabVyst:= VarToStr(FieldByNameValues('Atest_Obrabeni_Vystavuje')); + karta.tstObrabPozad:= VarToStr(FieldByNameValues('Atest_Obrabeni_Pozaduje')); + + karta.tstPovrch:= VarToBool(FieldByNameValues('Atest_PovrchUprava')); + karta.tstPovrchPop:= VarToStr(FieldByNameValues('Atest_PovrchUprava_Popis')); + if not(TryStrToInt(VarToStr(FieldByNameValues('Atest_PovrchUprava_Druh')), karta.tstPovrchDruh)) then + karta.tstPovrchDruh:= 0; + karta.tstPovrchVyst:= VarToStr(FieldByNameValues('Atest_PovrchUprava_Vystavuje')); + karta.tstPovrchPozad:= VarToStr(FieldByNameValues('Atest_PovrchUprava_Pozaduje')); + + karta.koopDefekt:= VarToBool(FieldByNameValues('Koop_Defekt')); + karta.koopDefektPop:= VarToStr(FieldByNameValues('Koop_Defekt_Popis')); + if not(TryStrToInt(VarToStr(FieldByNameValues('Atest_Defekt_Druh')), karta.tstDefektDruh)) then + karta.tstDefektDruh:= 0; + karta.tstDefektVyst:= VarToStr(FieldByNameValues('Atest_Defekt_Vystavuje')); + karta.tstDefektPozad:= VarToStr(FieldByNameValues('Atest_Defekt_Pozaduje')); + + karta.koopJine:= VarToBool(FieldByNameValues('Koop_Jine')); + karta.koopJinePop:= VarToStr(FieldByNameValues('Koop_Jine_Popis')); + if not(TryStrToInt(VarToStr(FieldByNameValues('Atest_Jine_Druh')), karta.tstJineDruh)) then + karta.tstJineDruh:= 0; + karta.tstJineVyst:= VarToStr(FieldByNameValues('Atest_Jine_Vystavuje')); + karta.tstJinePozad:= VarToStr(FieldByNameValues('Atest_Jine_Pozaduje')); + + karta.tstMat:= VarToBool(FieldByNameValues('Atest_Material')); + karta.tstMatPop:= VarToStr(FieldByNameValues('Atest_Material_Popis')); + if not(TryStrToInt(VarToStr(FieldByNameValues('Atest_Material_Druh')), karta.tstMatDruh)) then + karta.tstMatDruh:= 0; + karta.tstMatVyst:= VarToStr(FieldByNameValues('Atest_Material_Vystavuje')); + karta.tstMatPozad:= VarToStr(FieldByNameValues('Atest_Material_Pozaduje')); + + karta.tstJazyk:= VarToStr(FieldByNameValues('Atest_Jazyk')); + + if not TryStrToFloat(VarToStr(FieldByNameValues('HmotnostStrom')), karta.hmotStrom) then + karta.hmotStrom:= 0; + + if not TryStrToFloat(VarToStr(FieldByNameValues('HmotnostSkorepiny')), karta.hmotSkor) then + karta.hmotSkor:= 0; + + if not TryStrToInt(VarToStr(FieldByNameValues('PrvniObal')), karta.prvniObal) then + karta.prvniObal:= 0; + + karta.vlastnik:= StrToInt(VarToStr(FieldByNameValues('Vlastnik'))); + + if not TryStrToFloat(VarToStr(FieldByNameValues('Hmotnost')), karta.hmot) then + karta.hmot:= 0; + + if not TryStrToFloat(VarToStr(FieldByNameValues('HmotnostBrutto')), karta.hmotBrt) then + karta.hmotBrt:= 0; + if not TryStrToFloat(VarToStr(FieldByNameValues('HmotVoskDilce')), karta.hmotVoskD) then + karta.hmotVoskD:= 0; + +{ + karta.odlitek = 'SELECT ' +} + + karta.incoterms:= VarToStr(FieldByNameValues('Incoterms')); + kOdlitek.cisloPKZ:= VarToStr(FieldByNameValues('CisloPKZ')); + + karta.odrez:= Trim(VarToStr(FieldByNameValues('Odrez'))); + if (karta.odrez.Length>1) then + karta.odrez:= IfThen(karta.odrez.ToLower='false','N','A'); + karta.sarze:= Trim(VarToStr(FieldByNameValues('Sarzovat'))); + if (karta.sarze.Length>1) then + karta.sarze:= IfThen(karta.sarze.ToLower='false','N','A'); + karta.legPripl:= Trim(VarToStr(FieldByNameValues('LegovaciPriplatek'))); + if (karta.legPripl.Length>1) then + karta.legPripl:= IfThen(karta.legPripl.ToLower='false','N','A'); + + + karta.prurezVt:= VarToStr(FieldByNameValues('PrurezVtocku')); + karta.prurezVt2:= VarToStr(FieldByNameValues('PrurezVtocku2')); + + karta.garant:= Trim(VarToStr(FieldByNameValues('Garant'))); + + karta.specifOdl:= Trim(VarToStr(FieldByNameValues('SpecifikaceOdl'))); + karta.specifObr:= Trim(VarToStr(FieldByNameValues('SpecifikaceObr'))); + karta.lisSkup:= StrToInt(VarToStr(FieldValues(2))); + karta.lisSkup2:= StrToInt(VarToStr(FieldValues(4))); + karta.poznamka:= VarToStr(FieldByNameValues('Poznamka')); + result:= true; + end; + + end; + + + procedure TformOdlitek.NactiParametry; + var lSQL, matOdl, lng: string; + ex: Extended; + i: integer; + begin + matOdl:= helUtils.getHeliosStrVal(Helios, '', ' SELECT MatecniOdlitek FROM ' + tblOdlitky + ' WHERE ID=' + idOdl.ToString); + if (matOdl<>'') then + begin + idOdl:= helUtils.getHeliosIntVal(Helios, 0, ' SELECT ID FROM ' + tblOdlitky + ' WHERE Odlitek=N' + matOdl.QuotedString); + if (idOdl=0) then + with Helios.OpenSQL('INSERT ' + tblOdlitky + ' (Odlitek, JeNovaVetaEditor) VALUES (N' + matOdl.QuotedString + ', 1); SELECT SCOPE_IDENTITY()') do + if (RecordCount=1) then + idOdl:= StrToInt(VarToStr(FieldValues(0))); + mamMatOdlitek:= true; + end; + + NactiParametryKarty (idOdl, kOdlitek); + NactiParametryKarty (idOdlRodic, kRodic); + + idProUpd:= IfThen(idOdlRodic=0, idOdl, idOdlRodic); + + edtDruhFor.Text:= RodicNeboPotomekS(kRodic.frmDruh, kOdlitek.frmDruh, false); + if (edtDruhFor.Text='') and (kRodic.frmDruh<>'') then + edtDruhFor.Text:= kRodic.frmDruh; + edtKsFor.Value:= RodicNeboPotomekI(kRodic.ksVeForme, kOdlitek.ksVeForme); + if (edtKsFor.Value=0) and (kRodic.ksVeForme>0) then + edtKsFor.Value:= kRodic.ksVeForme; + edtDruhForA.Text:= RodicNeboPotomekS(kRodic.frmDruhAlt, kOdlitek.frmDruhAlt, false); + if (edtDruhForA.Text='') and (kRodic.frmDruhAlt<>'') then + edtDruhForA.Text:= kRodic.frmDruhAlt; + edtKsForA.Value:= RodicNeboPotomekI(kRodic.ksVeFormeAlt, kOdlitek.ksVeFormeAlt); + if (edtKsForA.Value=0) and (kRodic.ksVeFormeAlt>0) then + edtKsForA.Value:= kRodic.ksVeFormeAlt; + edtStrNaTavbu.Value:= RodicNeboPotomekI(kRodic.strNaTavbu, kOdlitek.strNaTavbu); + if (edtStrNaTavbu.Value=0) and (kRodic.strNaTavbu>0) then + edtStrNaTavbu.Value:= kRodic.strNaTavbu; + edtDruhVtoku.Text:= RodicNeboPotomekS(kRodic.druhVtokuTxt, kOdlitek.druhVtokuTxt, false); + if (edtDruhVtoku.Text='') and (kRodic.druhVtokuTxt<>'') then + edtDruhVtoku.Text:= kRodic.druhVtokuTxt; + edtDoplDil1.Text:= RodicNeboPotomekS(kRodic.doplDil1Txt, kOdlitek.doplDil1Txt, false); + if (edtDoplDil1.Text='') and (kRodic.doplDil1Txt<>'') then + edtDoplDil1.Text:= kRodic.doplDil1Txt; + edtDoplDil2.Text:= RodicNeboPotomekS(kRodic.doplDil2Txt, kOdlitek.doplDil2Txt, false); + if (edtDoplDil2.Text='') and (kRodic.doplDil2Txt<>'') then + edtDoplDil2.Text:= kRodic.doplDil2Txt; + edtDoplDil3.Text:= RodicNeboPotomekS(kRodic.doplDil3Txt, kOdlitek.doplDil3Txt, false); + if (edtDoplDil3.Text='') and (kRodic.doplDil3Txt<>'') then + edtDoplDil3.Text:= kRodic.doplDil3Txt; + + if (kRodic.matecniOdlitek<>kRodic.odlitek) then + edtMatOdlit.Text:= kRodic.matecniOdlitek + else + edtMatOdlit.Text:= ''; + + edtKSNaStrom.Value:= RodicNeboPotomekI(kRodic.ksNaStrom, kOdlitek.ksNaStrom); + if (edtKSNaStrom.Value=0) and (kRodic.ksNaStrom>0) then + edtKSNaStrom.Value:= kRodic.ksNaStrom; + edtDruhTech.Text:= RodicNeboPotomekS(kRodic.druhTech, kOdlitek.druhTech, false); + if (edtDruhTech.Text='') and (kRodic.druhTech<>'') then + edtDruhTech.Text:= kRodic.druhTech; + edtKsDopl1.Value:= RodicNeboPotomekI(kRodic.ksDoplDil1, kOdlitek.ksDoplDil1); + if (edtKsDopl1.Value=0) and (kRodic.ksDoplDil1>0) then + edtKsDopl1.Value:= kRodic.ksDoplDil1; + edtKsDopl2.Value:= RodicNeboPotomekI(kRodic.ksDoplDil2, kOdlitek.ksDoplDil2); + if (edtKsDopl2.Value=0) and (kRodic.ksDoplDil2>0) then + edtKsDopl2.Value:= kRodic.ksDoplDil2; + edtKsDopl3.Value:= RodicNeboPotomekI(kRodic.ksDoplDil3, kOdlitek.ksDoplDil3); + if (edtKsDopl3.Value=0) and (kRodic.ksDoplDil3>0) then + edtKsDopl3.Value:= kRodic.ksDoplDil3; + edtPocetVetvi.Value:= RodicNeboPotomekI(kRodic.pocetVetv, kOdlitek.pocetVetv); + if (edtPocetVetvi.Value=0) and (kRodic.pocetVetv>0) then + edtPocetVetvi.Value:= kRodic.pocetVetv; + edtPocetVetviA.Value:= RodicNeboPotomekI(kRodic.pocetVetvAlt, kOdlitek.pocetVetvAlt); + if (edtPocetVetviA.Value=0) and (kRodic.pocetVetvAlt>0) then + edtPocetVetviA.Value:= kRodic.pocetVetvAlt; + edtKsEtaz.Value:= RodicNeboPotomekI(kRodic.ksVEtazi, kOdlitek.ksVEtazi); + if (edtKsEtaz.Value=0) and (kRodic.ksVEtazi>0) then + edtKsEtaz.Value:= kRodic.ksVEtazi; + edtLisCas.Value:= RodicNeboPotomekI(kRodic.lisCas, kOdlitek.lisCas); + if (edtLisCas.Value=0) and (kRodic.lisCas>0) then + edtLisCas.Value:= kRodic.lisCas; + edtLisCas2.Value:= RodicNeboPotomekI(kRodic.lisCas2, kOdlitek.lisCas2); + if (edtLisCas2.Value=0) and (kRodic.lisCas2>0) then + edtLisCas2.Value:= kRodic.lisCas2; + edtPozFor.Value:= RodicNeboPotomekI(kRodic.pozicVeFrm, kOdlitek.pozicVeFrm); + if (edtPozFor.Value=0) and (kRodic.pozicVeFrm>0) then + edtPozFor.Value:= kRodic.pozicVeFrm; + edtPozForA.Value:= RodicNeboPotomekI(kRodic.pozicVeFrmAlt, kOdlitek.pozicVeFrmAlt); + if (edtPozForA.Value=0) and (kRodic.pozicVeFrmAlt>0) then + edtPozForA.Value:= kRodic.pozicVeFrmAlt; + + edtTeplotaMin.Value:= RodicNeboPotomekI(kRodic.teplMin, kOdlitek.teplMin); + if (edtTeplotaMin.Value=0) and (kRodic.teplMin>0) then + edtTeplotaMin.Value:= kRodic.teplMin; + edtTeplotaMax.Value:= RodicNeboPotomekI(kRodic.teplMax, kOdlitek.teplMax); + if (edtTeplotaMax.Value=0) and (kRodic.teplMax>0) then + edtTeplotaMax.Value:= kRodic.teplMax; + + edtKsNaPlate.Value:= RodicNeboPotomekI(kRodic.ksNaPlate, kOdlitek.ksNaPlate); + if (edtKsNaPlate.Value=0) and (kRodic.ksNaPlate>0) then + edtKsNaPlate.Value:= kRodic.ksNaPlate; + + + edtVstrikCas.Value:= RodicNeboPotomekI(kRodic.casVstrik, kOdlitek.casVstrik); + if (edtVstrikCas.Value=0) and (kRodic.casVstrik>0) then + edtVstrikCas.Value:= kRodic.casVstrik; + + edtVstrikCas2.Value:= RodicNeboPotomekI(kRodic.casVstrik2, kOdlitek.casVstrik2); + if (edtVstrikCas2.Value=0) and (kRodic.casVstrik2>0) then + edtVstrikCas2.Value:= kRodic.casVstrik2; + + cbAtestTepel.Checked:= kRodic.koopTpl; + if not(cbAtestTepel.Checked) then + mPoznTepel.Enabled:= false; + mPoznTepel.Lines.Text:= kRodic.koopTplPop; + edtDruhTepel.Text:= kRodic.tstTZDruh.ToString; + if (edtDruhTepel.Text='0') then + edtDruhTepel.Text:= ''; + cbVystTepel.ItemIndex:= cbVystTepel.Items.IndexOf(kRodic.tstTZVyst); + cbPozadTepel.ItemIndex:= cbPozadTepel.Items.IndexOf(kRodic.tstTZPozad); + + cbVoskJadra.Checked:= kRodic.voskJadra; + cbVoskJadraMocovina.Checked:= kRodic.voskJadraMoc; + cbVoskCepy.Checked:= kRodic.voskCepy; + cbVoskChladitka.Checked:= kRodic.voskChlad; + cbVoskRizikovaPoz.Checked:= kRodic.voskRiziko; + + cbAtestObr.Checked:= kRodic.koopObrab; + if not(cbAtestObr.Checked) then + mPoznObr.Enabled:= false; + mPoznObr.Lines.Text:= kRodic.koopObrabPop; + edtDruhObr.Text:= kRodic.tstObrabDruh.ToString; + if (edtDruhObr.Text='0') then + edtDruhObr.Text:= ''; + cbVystObr.ItemIndex:= cbVystObr.Items.IndexOf(kRodic.tstObrabVyst); + cbPozadObr.ItemIndex:= cbPozadObr.Items.IndexOf(kRodic.tstObrabPozad); + + cbAtestPovrch.Checked:= kRodic.tstPovrch; + if not(cbAtestPovrch.Checked) then + mPoznPovrch.Enabled:= false; + mPoznPovrch.Lines.Text:= kRodic.tstPovrchPop; + edtDruhPovrch.Text:= kRodic.tstPovrchDruh.ToString; + if (edtDruhPovrch.Text='0') then + edtDruhPovrch.Text:= ''; + cbVystPU.ItemIndex:= cbVystPU.Items.IndexOf(kRodic.tstPovrchVyst); + cbPozadPU.ItemIndex:= cbPozadPU.Items.IndexOf(kRodic.tstPovrchPozad); + + cbAtestDefekt.Checked:= kRodic.koopDefekt; + if not(cbAtestDefekt.Checked) then + mPoznDefekt.Enabled:= false; + mPoznDefekt.Lines.Text:= kRodic.koopDefektPop; + edtDruhDefekt.Text:= kRodic.tstDefektDruh.ToString; + if (edtDruhDefekt.Text='0') then + edtDruhDefekt.Text:= ''; + cbVystDefekt.ItemIndex:= cbVystDefekt.Items.IndexOf(kRodic.tstDefektVyst); + cbPozadDefekt.ItemIndex:= cbPozadDefekt.Items.IndexOf(kRodic.tstDefektPozad); + + cbAtestJine.Checked:= kRodic.koopJine; + if not(cbAtestJine.Checked) then + mPoznJine.Enabled:= false; + mPoznJine.Lines.Text:= kRodic.koopJinePop; + edtDruhJine.Text:= kRodic.tstJineDruh.ToString; + if (edtDruhJine.Text='0') then + edtDruhJine.Text:= ''; + cbVystJine.ItemIndex:= cbVystJine.Items.IndexOf(kRodic.tstJineVyst); + cbPozadJine.ItemIndex:= cbPozadJine.Items.IndexOf(kRodic.tstJinePozad); + + cbAtestMat.Checked:= kRodic.tstMat; + edtDruhMat.Text:= kRodic.tstMatDruh.ToString; + if (edtDruhMat.Text='0') then + edtDruhMat.Text:= ''; + cbVystMat.ItemIndex:= cbVystMat.Items.IndexOf(kRodic.tstMatVyst); + cbPozadMat.ItemIndex:= cbPozadMat.Items.IndexOf(kRodic.tstMatPozad); + + lng:= kRodic.material; + if (lng='') then + cbMaterial.ItemIndex:= -1 + else + begin + lng:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Kod FROM ' + tblMaterial + ' WHERE Znacka=N' + lng.QuotedString) + ' : ' + lng; + cbMaterial.ItemIndex:= cbMaterial.Items.IndexOf(lng); + end; + + + lng:= kRodic.tstJazyk; + cbJazyk.ItemIndex:= 0; + if (lng='DE') then + cbJazyk.ItemIndex:= 1; + if (lng='EN') then + cbJazyk.ItemIndex:= 2; + + + i:= helUtils.getHeliosIntVal(Helios, -1, 'SELECT SkupinaFirem FROM ' + tblOdlitky + ' WHERE ID=' + idOdlRodic.ToString); + cbSkupFirem.ItemIndex:= i + 1; + + cbPrvniObal.ItemIndex:= RodicNeboPotomekI(kRodic.prvniObal, kOdlitek.prvniObal); + + edtCisOrg.Text:= RodicNeboPotomekS(kRodic.vlastnik.ToString, kOdlitek.vlastnik.ToString, false); + if (edtCisOrg.Text='-1') then + edtCisOrg.Text:= ''; + if (edtCisOrg.Text<>'') then + edtOrg.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblCOrg + ' WHERE CisloOrg=' + edtCisOrg.Text); + + edtHmotNetto.Value:= RodicNeboPotomekE(kRodic.hmot, kOdlitek.hmot); + if (edtHmotNetto.Value=0) and (kRodic.hmot>0) then + edtHmotNetto.Value:= kRodic.hmot; + edtHmotBrutto.Value:= RodicNeboPotomekE(kRodic.hmotBrt, kOdlitek.hmotBrt); + if (edtHmotBrutto.Value=0) and (kRodic.hmotBrt>0) then + edtHmotBrutto.Value:= kRodic.hmotBrt; + edtHmVoskD.Value:= RodicNeboPotomekE(kRodic.hmotVoskD, kOdlitek.hmotVoskD); + if (edtHmVoskD.Value=0) and (kRodic.hmotVoskD>0) then + edtHmVoskD.Value:= kRodic.hmotVoskD; + edtHmotStr.Value:= RodicNeboPotomekE(kRodic.hmotStrom, kOdlitek.hmotStrom); + if (edtHmotStr.Value=0) and (kRodic.hmotStrom>0) then + edtHmotStr.Value:= kRodic.hmotStrom; + edtHmotSkor.Value:= RodicNeboPotomekE(kRodic.hmotSkor, kOdlitek.hmotSkor); + if (edtHmotSkor.Value=0) and (kRodic.hmotSkor>0) then + edtHmotSkor.Value:= kRodic.hmotSkor; + + ZmenaVypoctu; + + edtIncoterms.Text:= RodicNeboPotomekS(kRodic.incoterms, kOdlitek.incoterms, false); + if (edtIncoterms.Text='') and (kRodic.incoterms<>'') then + edtIncoterms.Text:= kRodic.incoterms; + + cbOdrez.ItemIndex:= 0; + lng:= RodicNeboPotomekS(kRodic.odrez, kOdlitek.odrez, false); + if (lng='A') then + cbOdrez.ItemIndex:= 1; + if (lng='N') then + cbOdrez.ItemIndex:= 2; + + cbSarze.ItemIndex:= 0; + lng:= RodicNeboPotomekS(kRodic.sarze, kOdlitek.sarze, false); + if (lng='A') then + cbSarze.ItemIndex:= 1; + if (lng='N') then + cbSarze.ItemIndex:= 2; + + cbLegPripl.ItemIndex:= 0; + lng:= RodicNeboPotomekS(kRodic.legPripl, kOdlitek.legPripl, false); + if (lng='A') then + cbLegPripl.ItemIndex:= 1; + if (lng='N') then + cbLegPripl.ItemIndex:= 2; + + edtPrurezVtk1.Text:= RodicNeboPotomekS(kRodic.prurezVt, kOdlitek.prurezVt, false); + if (edtPrurezVtk1.Text='') and (kRodic.prurezVt<>'') then + edtPrurezVtk1.Text:= kRodic.prurezVt; + edtPrurezVtk2.Text:= RodicNeboPotomekS(kRodic.prurezVt2, kOdlitek.prurezVt2, false); + if (edtPrurezVtk2.Text='') and (kRodic.prurezVt2<>'') then + edtPrurezVtk2.Text:= kRodic.prurezVt2; + + edtGarant.Text:= RodicNeboPotomekS(kRodic.garant, kOdlitek.garant, false); + if (edtGarant.Text='') and (kRodic.garant<>'') then + edtGarant.Text:= kRodic.garant; + + cbSpecVyrOdlitek.ItemIndex:= 0; + lng:= RodicNeboPotomekS (kRodic.specifOdl, kOdlitek.specifOdl, false); + if (lng='S') then + cbSpecVyrOdlitek.ItemIndex:= 1; + if (lng='P') then + cbSpecVyrOdlitek.ItemIndex:= 2; + + cbSpecVyrObrobek.ItemIndex:= 0; + lng:= RodicNeboPotomekS (kRodic.specifObr, kOdlitek.specifObr, false); + if (lng='S') then + cbSpecVyrObrobek.ItemIndex:= 1; + if (lng='P') then + cbSpecVyrObrobek.ItemIndex:= 2; + + edtLisSkup.Text:= RodicNeboPotomekS (kRodic.lisSkup.ToString, kOdlitek.lisSkup.ToString, false); + if (edtLisSkup.Text='0') and (kRodic.lisSkup.ToString<>'0') then + edtLisSkup.Text:= kRodic.lisSkup.ToString; + if (edtLisSkup.Text='0') then + edtLisSkup.Text:= ''; + + edtLisSkup2.Text:= RodicNeboPotomekS (kRodic.lisSkup2.ToString, kOdlitek.lisSkup2.ToString, false); + if (edtLisSkup2.Text='0') and (kRodic.lisSkup2.ToString<>'0') then + edtLisSkup2.Text:= kRodic.lisSkup2.ToString; + if (edtLisSkup2.Text='0') then + edtLisSkup2.Text:= ''; + +// parametry rozdilne u obrobku (rodice) a odlitku + kOdlitek.vykres:= helUtils.getHeliosStrVal (Helios, '', 'SELECT Vykres FROM ' + tblOdlitky + ' WHERE ID=' + idOdlRodic.ToString); + edtVykres.Text:= kOdlitek.vykres; + if (edtVykres.Text='') and (kRodic.vykres<>'') then + edtVykres.Text:= kRodic.vykres; + + kOdlitek.poznamka:= helUtils.getHeliosStrVal (Helios, '', 'SELECT Poznamka FROM ' + tblOdlitky + ' WHERE ID=' + idOdlRodic.ToString); + mPozn.Text:= kOdlitek.poznamka; + if (mPozn.Text='') and (kRodic.poznamka<>'') then + mPozn.Text:= kRodic.poznamka; + + kOdlitek.hmotObrob:= helUtils.getHeliosFloatVal (Helios, 0, 'SELECT HmotnostObrobku FROM ' + tblOdlitky + ' WHERE ID=' + idOdlRodic.ToString); + edtHmotObr.Value:= kOdlitek.hmotObrob; + if (edtHmotObr.Value=0) and (kRodic.hmotObrob>0) then + edtHmotObr.Value:= kRodic.hmotObrob; + + kOdlitek.cisloPKZ:= helUtils.getHeliosStrVal (Helios, '', 'SELECT CisloPKZ FROM ' + tblOdlitky + ' WHERE ID=' + idOdlRodic.ToString); + edtPKZ.Text:= kOdlitek.cisloPKZ; + if (edtPKZ.Text='') and (kRodic.cisloPKZ<>'') then + edtPKZ.Text:= kRodic.cisloPKZ; + + end; + + + + procedure TformOdlitek.btnOKClick (Sender: TObject); + var lSQL, lng, matTxt: string; + i,idMatOdl: integer; + begin + if not(jenView) then + begin + i:= 0; + while (i' + NQuotedStr (edtDruhTech.Text) + CRLF; + if (idK>0) then + lSQL:= lSQL + 'UPDATE ' + tblKZe + ' SET _DruhTechnologie=' + NullOrNQuotedStr (edtDruhTech.Text) + ' WHERE ID=' + idK.ToString + CRLF; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET FormaDruh=' + NullOrNQuotedStr (edtDruhFor.Text) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(FormaDruh,N'''')<>' + NQuotedStr (edtDruhFor.Text) + CRLF; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET KSveForme=' + edtKsFor.ValueInt.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(KSveForme,0)<>' + edtKsFor.ValueInt.ToString + CRLF; + if (idK>0) then + lSQL:= lSQL + 'UPDATE ' + tblKZe + ' SET _KsVeForme=' + IfThen(edtKsFor.Value=0, 'NULL', edtKsFor.ValueInt.ToString) + ' WHERE ID=' + idK.ToString + CRLF; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET FormaDruhAlt=' + NullOrNQuotedStr (edtDruhForA.Text) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(FormaDruhAlt,N'''')<>' + NQuotedStr (edtDruhForA.Text) + CRLF; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET KSveFormeAlt=' + edtKsForA.Value.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(KSveFormeAlt,0)<>' + edtKsForA.Value.ToString + CRLF; + + matTxt:= ''; + if (cbMaterial.ItemIndex>-1) then + if (Pos(' : ', cbMaterial.Text)>0) then + matTxt:= MidStr(cbMaterial.Text, Pos(' : ', cbMaterial.Text)+3, 255); + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Material=' + NullOrNQuotedStr (matTxt) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(Material,N'''')<>' + NQuotedStr (matTxt) + CRLF; + if (idOdlRodic>0) and (idOdl<>idOdlRodic) then + begin + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Material=' + NullOrNQuotedStr (matTxt) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idOdlRodic.ToString; + lSQL:= lSQL + ' AND ISNULL(Material,N'''')<>' + NQuotedStr (matTxt) + CRLF; + end; + + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET TeplotaMin=' + edtTeplotaMin.Value.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(TeplotaMin,0)<>' + edtTeplotaMin.Value.ToString + CRLF; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET TeplotaMax=' + edtTeplotaMax.Value.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(TeplotaMax,0)<>' + edtTeplotaMax.Value.ToString + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET PozicVeForme=' + edtPozFor.Value.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(PozicVeForme,0)<>' + edtPozFor.Value.ToString + CRLF; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET PozicVeFormeAlt=' + edtPozForA.Value.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(PozicVeFormeAlt,0)<>' + edtPozForA.Value.ToString + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET StromuNaTavbu=' + edtStrNaTavbu.Value.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(StromuNaTavbu,0)<>' + edtStrNaTavbu.Value.ToString + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET LisovaciCas=' + edtLisCas.Value.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(LisovaciCas,0)<>' + edtLisCas.Value.ToString + CRLF; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET LisovaciCas2=' + edtLisCas2.Value.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(LisovaciCas2,0)<>' + edtLisCas2.Value.ToString + CRLF; + + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET VstrikCas=' + edtVstrikCas.Value.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(VstrikCas,0)<>' + edtVstrikCas.Value.ToString + CRLF; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET VstrikCas2=' + edtVstrikCas2.Value.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(VstrikCas2,0)<>' + edtVstrikCas2.Value.ToString + CRLF; + + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET VoskJadra=' + IfThen(cbVoskJadra.Checked,'1','0') + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(VoskJadra,0)<>' + IfThen(cbVoskJadra.Checked,'1','0') + CRLF; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET VoskJadraMocovina=' + IfThen(cbVoskJadraMocovina.Checked,'1','0') + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(VoskJadraMocovina,0)<>' + IfThen(cbVoskJadraMocovina.Checked,'1','0') + CRLF; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET VoskCepy=' + IfThen(cbVoskCepy.Checked,'1','0') + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(VoskCepy,0)<>' + IfThen(cbVoskCepy.Checked,'1','0') + CRLF; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET VoskChladitka=' + IfThen(cbVoskChladitka.Checked,'1','0') + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(VoskChladitka,0)<>' + IfThen(cbVoskChladitka.Checked,'1','0') + CRLF; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET VoskRiziko=' + IfThen(cbVoskRizikovaPoz.Checked,'1','0') + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(VoskRiziko,0)<>' + IfThen(cbVoskRizikovaPoz.Checked,'1','0') + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET DoplDil1Txt=' + NullOrNQuotedStr (edtDoplDil1.Text) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(DoplDil1Txt,N'''')<>' + NQuotedStr (edtDoplDil1.Text) + CRLF; + + + lSQL:= lSQL + 'MERGE dbo._hdc_TabOdlitky AS T USING (SELECT ID, SKP, RegCis FROM dbo.TabKmenZbozi WHERE SKP<>N'''' AND SkupZbo=N''P10'''; + lSQL:= lSQL + ' AND LEFT(RIGHT(REPLACE(dbo.ef_RemoveAlpha(RegCis),N''-'',N''''),4),1)=N''1'') AS S ON (S.RegCis=T.Odlitek)'; + lSQL:= lSQL + ' WHEN MATCHED AND T.DoplDil1Txt=S.SKP AND S.RegCis LIKE N''%-''+CASE WHEN T.DruhTechnologie IN (N''1'', N''5'') THEN N''M'' ELSE N''S'''; + lSQL:= lSQL + ' END THEN UPDATE SET T.DoplDil1=S.ID, T.Zmenil=SUSER_SNAME(), T.DatZmeny=GETDATE();' + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET DoplDil2Txt=' + NullOrNQuotedStr (edtDoplDil2.Text) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(DoplDil2Txt,N'''')<>' + NQuotedStr (edtDoplDil2.Text) + CRLF; + lSQL:= lSQL + 'MERGE dbo._hdc_TabOdlitky AS T USING (SELECT ID, SKP, RegCis FROM dbo.TabKmenZbozi WHERE SKP<>N'''' AND SkupZbo=N''P10'''; + lSQL:= lSQL + ' AND LEFT(RIGHT(REPLACE(dbo.ef_RemoveAlpha(RegCis),N''-'',N''''),4),1)=N''1'') AS S ON (S.RegCis=T.Odlitek)'; + lSQL:= lSQL + ' WHEN MATCHED AND T.DoplDil2Txt=S.SKP AND S.RegCis LIKE N''%-''+CASE WHEN T.DruhTechnologie IN (N''1'',N''5'') THEN N''M'' ELSE N''S'''; + lSQL:= lSQL + ' END THEN UPDATE SET T.DoplDil2=S.ID, T.Zmenil=SUSER_SNAME(), T.DatZmeny=GETDATE();' + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET DoplDil3Txt=' + NullOrNQuotedStr (edtDoplDil3.Text) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(DoplDil3Txt,N'''')<>' + NQuotedStr (edtDoplDil3.Text) + CRLF; + lSQL:= lSQL + 'MERGE dbo._hdc_TabOdlitky AS T USING (SELECT ID, SKP, RegCis FROM dbo.TabKmenZbozi WHERE SKP<>N'''' AND SkupZbo=N''P10'''; + lSQL:= lSQL + ' AND LEFT(RIGHT(REPLACE(dbo.ef_RemoveAlpha(RegCis),N''-'',N''''),4),1)=N''1'') AS S ON (S.RegCis=T.Odlitek)'; + lSQL:= lSQL + ' WHEN MATCHED AND T.DoplDil3Txt=S.SKP AND S.RegCis LIKE N''%-''+CASE WHEN T.DruhTechnologie IN (N''1'',N''5'') THEN N''M'' ELSE N''S'''; + lSQL:= lSQL + ' END THEN UPDATE SET T.DoplDil3=S.ID, T.Zmenil=SUSER_SNAME(), T.DatZmeny=GETDATE();' + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET DruhVtokuTxt=' + NullOrNQuotedStr (edtDruhVtoku.Text) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(DruhVtokuTxt,N'''')<>' + NQuotedStr (edtDruhVtoku.Text) + CRLF; + lSQL:= lSQL + 'MERGE dbo._hdc_TabOdlitky AS T USING (SELECT ID, SKP, RegCis FROM dbo.TabKmenZbozi WHERE SKP<>N'''' AND SkupZbo=N''P10'''; + lSQL:= lSQL + ' AND LEFT(RIGHT(REPLACE(dbo.ef_RemoveAlpha(RegCis),N''-'',N''''),4),1)=N''2'') AS S ON (S.RegCis=T.Odlitek)'; + lSQL:= lSQL + ' WHEN MATCHED AND T.DruhVtokuTxt=S.SKP AND S.RegCis LIKE N''%-''+CASE WHEN T.DruhTechnologie IN (N''1'',N''5'') THEN N''M'' ELSE N''S'''; + lSQL:= lSQL + ' END THEN UPDATE SET T.DruhVtoku=S.ID, T.Zmenil=SUSER_SNAME(), T.DatZmeny=GETDATE();' + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET DruhVtoku=' + kOdlitek.druhVtoku.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(DruhVtoku,-1)<>' + kOdlitek.druhVtoku.ToString; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET MatecniOdlitek=' + NullOrNQuotedStr (edtMatOdlit.Text, true) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(MatecniOdlitek,N'''')<>Odlitek AND ISNULL(MatecniOdlitek,N'''')<>' + NQuotedStr(edtMatOdlit.Text) + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET MatecniOdlitek=N'''' WHERE ID=' + idOdl.ToString + ' AND MatecniOdlitek=Odlitek' + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Vlastnik=' + IfThen(edtCisOrg.Text='', 'NULL', edtCisOrg.Text); + lSQL:= lSQL + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString + ' AND ISNULL(Vlastnik,-1)<>' + IfThen(edtCisOrg.Text='', '-1', edtCisOrg.Text) + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET KSnaStrom=' + edtKSNaStrom.ValueInt.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(KSnaStrom,0)<>' + edtKSNaStrom.ValueInt.ToString + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET KsDoplDil1=' + edtKsDopl1.ValueInt.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(KsDoplDil1,0)<>' + edtKsDopl1.ValueInt.ToString + CRLF; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET KsDoplDil2=' + edtKsDopl2.ValueInt.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(KsDoplDil2,0)<>' + edtKsDopl2.ValueInt.ToString + CRLF; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET KsDoplDil3=' + edtKsDopl3.ValueInt.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(KsDoplDil3,0)<>' + edtKsDopl3.ValueInt.ToString + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET PocetVetvicek=' + edtPocetVetvi.ValueInt.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(PocetVetvicek,0)<>' + edtPocetVetvi.ValueInt.ToString + CRLF; + if (idK>0) then + lSQL:= lSQL + 'UPDATE ' + tblKZe + ' SET _VetvicekNaStrom=' + IfThen(edtPocetVetvi.ValueInt=0, 'NULL', edtPocetVetvi.ValueInt.ToString) + ' WHERE ID=' + idK.ToString + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET PocetVetvicekAlt=' + edtPocetVetviA.Value.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(PocetVetvicekAlt,0)<>' + edtPocetVetviA.Value.ToString + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET KSvEtazi=' + NullOrNumNoZero (edtKsEtaz.Value) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(KSvEtazi,0)<>' + edtKsEtaz.ValueInt.ToString + CRLF; + if (idK>0) then + lSQL:= lSQL + 'UPDATE ' + tblKZe + ' SET _VetvicekNaEtaz=' + NullOrNumNoZero (edtKsEtaz.Value) + ' WHERE ID=' + idK.ToString + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET HmotnostStrom=' + NullOrNumNoZero (edtHmotStr.Value) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(HmotnostStrom,0)<>' + StringReplace(edtHmotStr.Value.ToString, ',', '.', [rfReplaceAll]) + CRLF; + if (idK>0) then + lSQL:= lSQL + 'UPDATE ' + tblKZe + ' SET _HmotnostStrom=' + NullOrNumNoZero (edtHmotStr.Value) + ' WHERE ID=' + idK.ToString + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET HmotnostSkorepiny=' + NullOrNumNoZero (edtHmotSkor.Value) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(HmotnostSkorepiny,0)<>' + StringReplace(edtHmotSkor.Value.ToString, ',', '.', [rfReplaceAll]) + CRLF; + if (idK>0) then + lSQL:= lSQL + 'UPDATE ' + tblKZe + ' SET _HmotnostSkorepiny=' + NullOrNumNoZero (edtHmotSkor.Value) + ' WHERE ID=' + idK.ToString + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Hmotnost=' + StringReplace(edtHmotNetto.Value.ToString, ',', '.', [rfReplaceAll]); + lSQL:= lSQL + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + IfThen(idOdlRodic=0, idOdl, idOdlRodic).ToString; + lSQL:= lSQL + ' AND ISNULL(Hmotnost,0)<>' + StringReplace(edtHmotNetto.Value.ToString, ',', '.', [rfReplaceAll]) + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET HmotnostBrutto=' + StringReplace(edtHmotBrutto.Value.ToString, ',', '.', [rfReplaceAll]); + lSQL:= lSQL + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(HmotnostBrutto,0)<>' + StringReplace(edtHmotBrutto.Value.ToString, ',', '.', [rfReplaceAll]) + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET HmotVoskDilce=' + NullOrNumNoZero (edtHmVoskD.Value) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(HmotVoskDilce,0)<>' + StringReplace(edtHmVoskD.Value.ToString, ',', '.', [rfReplaceAll]) + CRLF; + if (idK>0) then + lSQL:= lSQL + 'UPDATE ' + tblKZe + ' SET _HmotnostVD=' + NullOrNumNoZero (edtHmVoskD.Value) + ' WHERE ID=' + idK.ToString + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET IncoTerms=' + NullOrNQuotedStr (edtIncoterms.Text) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND IncoTerms<>' + NQuotedStr (edtIncoterms.Text) + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET PrurezVtocku=' + NullOrNQuotedStr (edtPrurezVtk1.Text) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(PrurezVtocku,N'''')<>' + NQuotedStr (edtPrurezVtk1.Text) + CRLF; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET PrurezVtocku2=' + NullOrNQuotedStr (edtPrurezVtk2.Text) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(PrurezVtocku2,N'''')<>' + NQuotedStr (edtPrurezVtk2.Text) + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Garant=' + NullOrNQuotedStr (edtGarant.Text, true) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(Garant,N'''')<>' + NQuotedStr (edtGarant.Text) + CRLF; + + lng:= ''; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET SpecifikaceOdl='; + case cbSpecVyrOdlitek.ItemIndex of + 0: lng:= 'NULL'; + 1: lng:= 'S'; + 2: lng:= 'P'; + end; + if (lng.Length>1) then + lSQL:= lSQL + 'NULL, Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString + ' AND SpecifikaceOdl IS NOT NULL' + CRLF + else + lSQL:= lSQL + NQuotedStr(lng) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString + ' AND SpecifikaceOdl<>' + NQuotedStr (lng) + CRLF; + + lng:= ''; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Sarzovat='; + case cbSarze.ItemIndex of + 0: lng:= 'NULL'; + 1: lng:= 'A'; + 2: lng:= 'N'; + end; + if (lng.Length>1) then + lSQL:= lSQL + 'NULL, Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString + ' AND Sarzovat IS NOT NULL' + CRLF + else + lSQL:= lSQL + NQuotedStr (lng) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString + ' AND ISNULL(Sarzovat,N'''')<>' + NQuotedStr (lng) + CRLF; + + lng:= ''; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET SkupinaFirem='; + if (cbSkupFirem.ItemIndex<=0) then + lSQL:= lSQL + 'NULL' + else + lSQL:= lSQL + IntToStr(cbSkupFirem.ItemIndex-1); + lSQL:= lSQL + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString + ' AND (SkupinaFirem IS NULL OR SkupinaFirem<>'; + lSQL:= lSQL + IntToStr(cbSkupFirem.ItemIndex-1) + ')' + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET PrvniObal=' + cbPrvniObal.ItemIndex.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(PrvniObal,0)<>' + cbPrvniObal.ItemIndex.ToString + CRLF; + + lng:= ''; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET SpecifikaceObr='; + case cbSpecVyrObrobek.ItemIndex of + 0: lng:= 'NULL'; + 1: lng:= 'S'; + 2: lng:= 'P'; + end; + if (lng.Length>1) then + lSQL:= lSQL + 'NULL, Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString + ' AND SpecifikaceObr IS NOT NULL' + CRLF + else + lSQL:= lSQL + 'N' + lng.QuotedString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString + ' AND ISNULL(SpecifikaceObr,N'''')<>N' + QuotedStr(lng) + CRLF; + + lng:= ''; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET LegovaciPriplatek='; + case cbLegPripl.ItemIndex of + 0: lng:= 'NULL'; + 1: lng:= '1'; + 2: lng:= '0'; + end; + if (lng.Length>1) then + lSQL:= lSQL + 'NULL, Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString + ' AND LegovaciPriplatek IS NOT NULL' + CRLF + else + lSQL:= lSQL + lng + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString + ' AND ISNULL(LegovaciPriplatek,-1)<>' + lng + CRLF; + if (idOdlRodic>0) and (idProUpd<>idOdlRodic) then + begin + lng:= ''; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET LegovaciPriplatek='; + case cbLegPripl.ItemIndex of + 0: lng:= 'NULL'; + 1: lng:= '1'; + 2: lng:= '0'; + end; + if (lng.Length>1) then + lSQL:= lSQL + 'NULL, Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idOdlRodic.ToString + ' AND LegovaciPriplatek IS NOT NULL' + CRLF + else + lSQL:= lSQL + lng + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idOdlRodic.ToString + ' AND ISNULL(LegovaciPriplatek,-1)<>' + lng + CRLF; + end; + + + + lng:= ''; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Odrez='; + case cbOdrez.ItemIndex of + 0: lng:= 'NULL'; + 1: lng:= 'A'; + 2: lng:= 'N'; + end; + if (lng.Length>1) then + lSQL:= lSQL + 'NULL, Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString + ' AND Odrez IS NOT NULL' + CRLF + else + lSQL:= lSQL + 'N' + lng.QuotedString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString + ' AND ISNULL(Odrez,N'''')<>N' + lng.QuotedString + CRLF; + + lng:= ''; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Sarzovat='; + case cbSarze.ItemIndex of + 0: lng:= 'NULL'; + 1: lng:= 'A'; + 2: lng:= 'N'; + end; + if (lng.Length>1) then + lSQL:= lSQL + 'NULL, Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString + ' AND Sarzovat IS NOT NULL' + CRLF + else + lSQL:= lSQL + 'N' + lng.QuotedString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString + ' AND ISNULL(Sarzovat,N'''')<>N' + lng.QuotedString + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET LisovaciSkup=' + IfThen(edtLisSkup.Text='', 'NULL', edtLisSkup.Text) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(LisovaciSkup,0)<>' + IfThen(edtLisSkup.Text='', '0', edtLisSkup.Text); + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET LisovaciSkup2=' + IfThen(edtLisSkup2.Text='', 'NULL', edtLisSkup2.Text) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(LisovaciSkup2,0)<>' + IfThen(edtLisSkup2.Text='', '0', edtLisSkup2.Text); + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET KSNaPlate=' + edtKsNaPlate.Value.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(KSNaPlate,0)<>' + edtKsNaPlate.Value.ToString; + + Helios.ExecSQL(lSQL); + + + + edtDruhTepel.Text:= Trim(edtDruhTepel.Text); + lSQL:= 'UPDATE ' + tblOdlitky + ' SET Koop_TepelneZprac=' + cbAtestTepel.Checked.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Koop_TepelneZprac<>' + cbAtestTepel.Checked.ToString +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_TepelneZprac_Druh=' + IfThen(edtDruhTepel.Text='', '0', edtDruhTepel.Text) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID='; + lSQL:= lSQL + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_TepelneZprac_Druh<>' + IfThen(edtDruhTepel.Text='', '0', edtDruhTepel.Text) +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_TepelneZprac_Vystavuje=N' + cbVystTepel.Text.QuotedString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_TepelneZprac_Vystavuje<>N' + QuotedStr(cbVystTepel.Text) +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_TepelneZprac_Pozaduje=N' + cbPozadTepel.Text.QuotedString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_TepelneZprac_Pozaduje<>N' + QuotedStr(cbPozadTepel.Text) +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Koop_TepelneZprac_Popis=N' + mPoznTepel.Lines.Text.Trim.QuotedString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; +// lSQL:= lSQL + IfThen(idOdlRodic=0, idOdl.ToString, idOdlRodic.ToString); + lSQL:= lSQL + {' AND Koop_TepelneZprac_Popis<>N' + QuotedStr(mPoznTepel.Lines.Text.Trim) +} CRLF; + + edtDruhObr.Text:= Trim(edtDruhObr.Text); + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Koop_Obrabeni=' + cbAtestObr.Checked.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Koop_Obrabeni<>' + cbAtestObr.Checked.ToString +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_Obrabeni_Druh=' + IfThen(edtDruhObr.Text='', '0', edtDruhObr.Text) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_Obrabeni_Druh<>' + IfThen(edtDruhObr.Text='', '0', edtDruhObr.Text) +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_Obrabeni_Vystavuje=' + NullOrNQuotedStr (cbVystObr.Text, true) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_Obrabeni_Vystavuje<>N' + QuotedStr(cbVystObr.Text) +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_Obrabeni_Pozaduje=' + NullOrNQuotedStr (cbPozadObr.Text, true) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_Obrabeni_Pozaduje<>N' + QuotedStr(cbPozadObr.Text) +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Koop_Obrabeni_Popis=' + NullOrNQuotedStr (mPoznObr.Lines.Text, true) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Koop_Obrabeni_Popis<>N' + QuotedStr(mPoznObr.Lines.Text.Trim) +} CRLF; + + + edtDruhPovrch.Text:= Trim(edtDruhPovrch.Text); + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_PovrchUprava=' + cbAtestPovrch.Checked.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_PovrchUprava<>' + cbAtestPovrch.Checked.ToString +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_PovrchUprava_Druh=' + IfThen(edtDruhPovrch.Text='', '0', edtDruhPovrch.Text) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID='; + lSQL:= lSQL + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_PovrchUprava_Druh<>' + IfThen(edtDruhPovrch.Text='', '0', edtDruhPovrch.Text) +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_PovrchUprava_Vystavuje=' + NullOrNQuotedStr (cbVystPU.Text, true) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_PovrchUprava_Vystavuje<>N' + QuotedStr(cbVystPU.Text) +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_PovrchUprava_Pozaduje=' + NullOrNQuotedStr (cbPozadPU.Text, true) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_PovrchUprava_Pozaduje<>N' + QuotedStr(cbPozadPU.Text) +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_PovrchUprava_Popis=' + NullOrNQuotedStr (mPoznPovrch.Lines.Text, true) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_PovrchUprava_Popis<>N' + QuotedStr(mPoznPovrch.Lines.Text.Trim) +} CRLF; + + + edtDruhDefekt.Text:= Trim(edtDruhDefekt.Text); + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Koop_Defekt=' + cbAtestDefekt.Checked.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Koop_Defekt<>' + cbAtestDefekt.Checked.ToString +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_Defekt_Druh=' + IfThen(edtDruhDefekt.Text='', '0', edtDruhDefekt.Text) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_Defekt_Druh<>' + IfThen(edtDruhDefekt.Text='', '0', edtDruhDefekt.Text) +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_Defekt_Vystavuje=' + NullOrNQuotedStr (cbVystDefekt.Text, true) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_Defekt_Vystavuje<>N' + QuotedStr(cbVystDefekt.Text) +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_Defekt_Pozaduje=' + NullOrNQuotedStr (cbPozadDefekt.Text, true) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_Defekt_Pozaduje<>N' + QuotedStr(cbPozadDefekt.Text) +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Koop_Defekt_Popis=' + NullOrNQuotedStr (mPoznDefekt.Lines.Text, true) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Koop_Defekt_Popis<>N' + QuotedStr(mPoznDefekt.Lines.Text.Trim) +} CRLF; + + + edtDruhJine.Text:= Trim(edtDruhJine.Text); + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Koop_Jine=' + cbAtestJine.Checked.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; +// lSQL:= lSQL + IfThen(idOdlRodic=0, idOdl.ToString, idOdlRodic.ToString); + lSQL:= lSQL + {' AND Koop_Jine<>' + cbAtestJine.Checked.ToString +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_Jine_Druh=' + IfThen(edtDruhJine.Text='', '0', edtDruhJine.Text) + ' WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_Jine_Druh<>' + IfThen(edtDruhJine.Text='', '0', edtDruhJine.Text) +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_Jine_Vystavuje=N' + cbVystJine.Text.QuotedString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_Jine_Vystavuje<>N' + QuotedStr(cbVystJine.Text) +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_Jine_Pozaduje=N' + cbPozadJine.Text.QuotedString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_Jine_Pozaduje<>N' + QuotedStr(cbPozadJine.Text) +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Koop_Jine_Popis=N' + mPoznJine.Lines.Text.Trim.QuotedString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Koop_Jine_Popis<>N' + QuotedStr(mPoznJine.Lines.Text.Trim) +} CRLF; + + + edtDruhMat.Text:= Trim(edtDruhMat.Text); + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_Material=' + cbAtestMat.Checked.ToString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_Material<>' + cbAtestMat.Checked.ToString +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_Material_Druh=' + IfThen(edtDruhMat.Text='', '0', edtDruhMat.Text) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_Material_Druh<>' + IfThen(edtDruhMat.Text='', '0', edtDruhMat.Text) +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_Material_Vystavuje=N' + QuotedStr(cbVystMat.Text) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_Material_Vystavuje<>N' + QuotedStr(cbVystMat.Text) +} CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_Material_Pozaduje=N' + QuotedStr(cbPozadMat.Text) + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + {' AND Atest_Material_Pozaduje<>N' + QuotedStr(cbPozadMat.Text) +} CRLF; + + + lng:= 'CZ'; + case cbJazyk.ItemIndex of + 1: lng:= 'DE'; + 2: lng:= 'EN'; + end; + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Atest_Jazyk=N' + lng.QuotedString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND Atest_Jazyk<>N' + lng.QuotedString + CRLF; + + +// rodic + if (idOdlRodic>0) then + begin + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Vykres=N' + edtVykres.Text.QuotedString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(Vykres,N'''')<>N' + edtVykres.Text.QuotedString + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET CisloPKZ=N' + edtPKZ.Text.QuotedString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(CisloPKZ,N'''')<>N' + edtPKZ.Text.QuotedString + CRLF; + + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Poznamka=N' + Trim(mPozn.Lines.Text.Trim).QuotedString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(Poznamka,N'''')<>N' + Trim(mPozn.Lines.Text.Trim).QuotedString + CRLF; + +{ + if (kOdlitek.vykres='') and (kRodic.vykres<>'') then + begin + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET Vykres=N' + kRodic.vykres.QuotedString + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idOdl.ToString; + lSQL:= lSQL + ' AND Vykres<>N' + kRodic.vykres.QuotedString + CRLF; + end; +} + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET HmotnostObrobku=' + StringReplace(edtHmotObr.Value.ToString, ',', '.', [rfReplaceAll]); + lSQL:= lSQL + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idProUpd.ToString; + lSQL:= lSQL + ' AND ISNULL(HmotnostObrobku,0)<>' + StringReplace(edtHmotObr.Value.ToString, ',', '.', [rfReplaceAll]); + end; + +{ + if (kOdlitek.hmotObrob=0) and (kRodic.hmotObrob>0) then + begin + lSQL:= lSQL + 'UPDATE ' + tblOdlitky + ' SET HmotnostObrobku=' + StringReplace(kRodic.hmotObrob.ToString, ',', '.', [rfReplaceAll]); + lSQL:= lSQL + ', Zmenil=SUSER_SNAME(), DatZmeny=GETDATE() WHERE ID=' + idOdl.ToString; + lSQL:= lSQL + ' AND ISNULL(HmotnostObrobku,0)<>' + StringReplace(kRodic.hmotObrob.ToString, ',', '.', [rfReplaceAll]); + end; +} + Helios.ExecSQL(lSQL); + + end; + Close; + end; + + + procedure TformOdlitek.btnStornoClick (Sender: TObject); + begin + Close; + end; + + + + procedure TformOdlitek.btnStornoMouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + begin + if (jenView) then + if (Shift * [ssCtrl, ssAlt, ssShift] = [ssCtrl, ssShift]) and (Button=TMouseButton.mbRight) then + begin + Helios.ExecSQL ('UPDATE ' + tblOdlitky + ' SET BlokovaniEditoru=NULL WHERE ID=' + idProUpd.ToString); + btnStornoClick (Sender); + end; + end; + + + + procedure TformOdlitek.cbAtestObrClick (Sender: TObject); + begin + mPoznObr.Enabled:= cbAtestObr.Checked; + end; + + + + procedure TformOdlitek.cbAtestTepelClick (Sender: TObject); + begin + mPoznTepel.Enabled:= cbAtestTepel.Checked; + end; + + + + procedure TformOdlitek.cbAtestDefektClick (Sender: TObject); + begin + mPoznDefekt.Enabled:= cbAtestDefekt.Checked; + end; + + + + procedure TformOdlitek.cbAtestJineClick(Sender: TObject); + begin + mPoznJine.Enabled:= cbAtestJine.Checked; + end; + + + + procedure TformOdlitek.cbAtestPovrchClick (Sender: TObject); + begin + mPoznPovrch.Enabled:= cbAtestPovrch.Checked; + end; + + + + + procedure TformOdlitek.edtCisOrgExit(Sender: TObject); + begin + edtCisOrg.Text:= Trim(edtCisOrg.Text); + if (edtCisOrg.Text='') then + edtOrg.Text:= ''; + end; + + + + procedure TformOdlitek.edtHmotNettoExit (Sender: TObject); + begin + ZmenaVypoctu; + end; + + + + procedure TformOdlitek.edtHmotStrExit (Sender: TObject); + begin + ZmenaVypoctu; + end; + + + + procedure TformOdlitek.edtKSNaStromExit(Sender: TObject); + begin + ZmenaVypoctu; + end; + + + + procedure TformOdlitek.edtMatOdlitKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); + begin + if (Key=VK_BACK) then + edtMatOdlit.Text:= ''; + Key:=0; + end; + + + + procedure TformOdlitek.edtMatOdlitKeyPress(Sender: TObject; var Key: Char); + begin + Key:= #0; + end; + + + + procedure TformOdlitek.edtMatOdlitKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState); + begin + if (Key=VK_BACK) then + edtMatOdlit.Text:= ''; + Key:=0; + end; + + + + procedure TformOdlitek.edtOrgExit(Sender: TObject); + begin + edtOrg.Text:= Trim(edtOrg.Text); + if (edtOrg.Text='') then + edtCisOrg.Text:= ''; + end; + + + + procedure TformOdlitek.edtStrNaTavbuExit(Sender: TObject); + begin + ZmenaVypoctu; + end; + + + + procedure TformOdlitek.FormClose(Sender: TObject; var Action: TCloseAction); + begin + if not(jenView) then + Helios.ExecSQL('UPDATE ' + tblOdlitky + ' SET BlokovaniEditoru=NULL, JeNovaVetaEditor=0 WHERE ID=' + idOdl.ToString); + Action:= caFree; + + Helios.ExecSQL('UPDATE ' + tblOdlitky + ' SET MatecniOdlitek=N'''' WHERE ID=' + idOdl.ToString + ' AND ISNULL(MatecniOdlitek,N'''')=Odlitek'); + Helios.Refresh(true); + + if (tempTab<>'') then + Helios.ExecSQL('DROP TABLE IF EXISTS ' + tempTab); + + end; + + + + procedure TformOdlitek.FormShow(Sender: TObject); + var lSQL, sTemp: string; + i: integer; + begin + + self.ParentWindow:= Helios.MainApplicationHandle; + self.Icon.Handle:= Helios.MainApplicationIconHandle; + + if (skinName<>'') then + TStyleManager.SetStyle(skinName); + + self.Font.Name:= Helios.Font; + self.Font.Height:= Helios.FontHeight; + pgCtrl.Font.Name:= Helios.Font; + pgCtrl.Font.Size:= Helios.FontHeight; + + for i:=0 to Self.ComponentCount-1 do + begin + if (Self.Components[i] is TButton) then + begin + (Self.Components[i] as TButton).Font.Name:= Helios.Font; + (Self.Components[i] as TButton).Font.Height:= Helios.FontHeight; + end; + if (Self.Components[i] is TComboEdit) then + begin + (Self.Components[i] as TComboEdit).Width:= 26; + (Self.Components[i] as TComboEdit).Height:= 26; + end; + + if (Self.Components[i] is TNumberBox) then + (Self.Components[i] as TNumberBox).DisplayFormat:= '#,##0.####'; + end; + + + + bidAtestyDruhy:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT DPBID FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_AtestyDruhy'''); + bidGarant:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT DPBID FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_OdlitkyParam_Garant'''); + bidMaterial:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT DPBID FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_Material'''); + + cbJazyk.Items.Clear; + cbJazyk.Items.Add('Čeština'); + cbJazyk.Items.Add('Němčina'); + cbJazyk.Items.Add('Angličtina'); + cbJazyk.ItemIndex:= 0; + + cbVystTepel.Items.Clear; + cbVystTepel.Items.Add(''); + with Helios.OpenSQL('SELECT Kod FROM ' + tblAtestVyst + ' ORDER BY Kod') do + if (RecordCount>0) then + begin + First; + while not(EOF) do + begin + cbVystTepel.Items.Add(VarToStr(FieldValues(0))); + Next; + end; + end; + cbVystTepel.ItemIndex:= 0; + + cbPozadTepel.Items.Clear; + cbPozadTepel.Items.Add(''); + cbPozadTepel.Items.AddStrings(cbVystTepel.Items); + cbPozadTepel.ItemIndex:= 0; + + cbMaterial.Items.Clear; + cbMaterial.Items.Add(''); + with Helios.OpenSQL('SELECT Kod + N'' : '' + Znacka FROM ' + tblMaterial + ' ORDER BY Kod') do + if (RecordCount>0) then + begin + First; + while not(EOF) do + begin + cbMaterial.Items.Add(VarToStr(FieldValues(0))); + Next; + end; + end; + cbMaterial.ItemIndex:= 0; + + cbVystObr.Items.Clear; + cbVystObr.Items.Add(''); + cbVystObr.Items.AddStrings(cbVystTepel.Items); + cbVystObr.ItemIndex:= 0; + cbPozadObr.Items.Clear; + cbPozadObr.Items.Add(''); + cbPozadObr.Items.AddStrings(cbVystTepel.Items); + cbPozadObr.ItemIndex:= 0; + + cbVystPU.Items.Clear; + cbVystPU.Items.Add(''); + cbVystPU.Items.AddStrings(cbVystTepel.Items); + cbVystPU.ItemIndex:= 0; + cbPozadPU.Items.Clear; + cbPozadPU.Items.Add(''); + cbPozadPU.Items.AddStrings(cbVystTepel.Items); + cbPozadPU.ItemIndex:= 0; + + cbVystDefekt.Items.Clear; + cbVystDefekt.Items.Add(''); + cbVystDefekt.Items.AddStrings(cbVystTepel.Items); + cbVystDefekt.ItemIndex:= 0; + cbPozadDefekt.Items.Clear; + cbPozadDefekt.Items.Add(''); + cbPozadDefekt.Items.AddStrings(cbVystTepel.Items); + cbPozadDefekt.ItemIndex:= 0; + + cbVystJine.Items.Clear; + cbVystJine.Items.Add(''); + cbVystJine.Items.AddStrings(cbVystTepel.Items); + cbVystJine.ItemIndex:= 0; + cbPozadJine.Items.Clear; + cbPozadJine.Items.Add(''); + cbPozadJine.Items.AddStrings(cbVystTepel.Items); + cbPozadJine.ItemIndex:= 0; + + cbVystMat.Items.Clear; + cbVystMat.Items.Add(''); + cbVystMat.Items.AddStrings(cbVystTepel.Items); + cbVystMat.ItemIndex:= 0; + cbPozadMat.Items.Clear; + cbPozadMat.Items.Add(''); + cbPozadMat.Items.AddStrings(cbVystTepel.Items); + cbPozadMat.ItemIndex:= 0; + + + if not(jenView) then + begin + if (helUtils.HeliosExistsTest(Helios, tblOdlitkyPrava, 'IDRole=(SELECT IDRole FROM '+ tblUziv + ' WHERE LoginName=SUSER_SNAME())')) then + jenView:= helUtils.getHeliosBoolVal(Helios, true, 'SELECT ReadOnly FROM ' + tblOdlitkyPrava + ' WHERE IDRole=(SELECT IDRole FROM '+ tblUziv + ' WHERE LoginName=SUSER_SNAME())'); + if (helUtils.HeliosExistsTest(Helios, tblOdlitkyPrava, 'LoginName=SUSER_SNAME()')) then + jenView:= helUtils.getHeliosBoolVal(Helios, true, 'SELECT ReadOnly FROM ' + tblOdlitkyPrava + ' WHERE LoginName=SUSER_SNAME()'); + + with Helios.OpenSQL('SELECT * FROM ' + tblOdlitkyPrava) do + if (RecordCount=0) then + jenView:= false; + end; + + + idOdl:= 0; + idOdlRodic:= 0; + mamMatOdlitek:= false; + + odlitek:= Trim(odlitek); + if (odlitek<>'') then + begin + idOdl:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblOdlitky + ' WHERE Odlitek=N' + odlitek.QuotedString); + idOdlRodic:= idOdl; + + Self.Caption:= ' Odlitek: '; + with Helios.OpenSQL('SELECT ID FROM ' + tblOdlitky + ' WHERE ID=' + idOdl.ToString + ' AND MamMatecniOdlitek=1') do + if (RecordCount=1) then + begin + Self.Caption:= ' Obrobek: '; + mamMatOdlitek:= true; + end; + lSQL:= 'SELECT TOP(1) k.Nazev1 FROM ' + tblOdlitky + ' o INNER JOIN ' + tblKZ + ' k ON (k.RegCis=o.Odlitek) WHERE o.ID=' + idOdl.ToString; + lSQL:= lSQL + ' AND k.SkupZbo IN (N''VOB'', N''VOD'', N''P51'', ''P41'') ORDER BY k.SkupZbo DESC'; + Self.Caption:= Self.Caption + odlitek + ' ' + helUtils.getHeliosStrVal(Helios, '', lSQL); + NactiParametry; + if not(jenView) then + Helios.ExecSQL('UPDATE ' + tblOdlitky + ' SET BlokovaniEditoru=' + Helios.UserId.ToString + ' WHERE ID=' + idOdl.ToString); + end; + + if (jenView) then + Self.Caption:= Self.Caption + ' (jen pro čtení)'; + + if (jenView) then + btnOK.Enabled:= false + else + btnOK.Enabled:= true; + + + tempTab:= '_temp_TabOdlitek' + FormatDateTime('yyyymmddhhnnsszzz', Now); + lSQL:= 'IF OBJECT_ID(''dbo.ep_HDC_VytvorKopiiTabulky'') IS NOT NULL EXEC dbo.ep_HDC_VytvorKopiiTabulky @zdroj=N''_hdc_TabOdlitky'', @cil=N' + tempTab.QuotedString + CRLF; + sTemp:= 'Odlitek=N' + odlitek.QuotedString; + lSQL:= lSQL + 'IF OBJECT_ID(''dbo.ep_HDC_InsertKopieTabulky'', ''P'') IS NOT NULL EXEC dbo.ep_HDC_InsertKopieTabulky'; + lSQL:= lSQL + ' @zdroj=N''_hdc_TabOdlitky'', @cil=N' + tempTab.QuotedString + ', @skipSloupce=N''ID'', @where=N' + sTemp.QuotedString; + Helios.ExecSQL(lSQL); + + pgCtrl.ActivePageIndex:= 0; + edtDruhTech.SetFocus; + end; + + + + procedure TformOdlitek.selCisOrgClick(Sender: TObject); + begin + try + if Helios.Prenos(bidCisOrg, 'TabCisOrg.CisloOrg', oVar1, '', 'Vyberte Organizaci', True) then + begin + edtCisOrg.Text:= VarToStr(oVar1); + edtOrg.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblCOrg + ' WHERE CisloOrg=' + edtCisOrg.Text); + end; + except on E:Exception do + Helios.Error(E.Message); + end; + end; + + + + procedure TformOdlitek.selDoplDil1Click(Sender: TObject); + begin + podm:= tblKZ + '.SkupZbo=N''P10'' AND LEFT(RIGHT(REPLACE(dbo.ef_RemoveAlpha(RegCis),N''-'',N''''),4),1)=N''1'''; + if Helios.Prenos(bidKZ, 'ID', oVar1, podm, 'Vyberte Doplňkový díl 1', true) then + edtDoplDil1.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT RegCis FROM ' + tblKZ + ' WHERE ID=' + VarToStr(oVar1)); + end; + + + + procedure TformOdlitek.selDoplDil2Click(Sender: TObject); + begin + podm:= tblKZ + '.SkupZbo=N''P10'' AND LEFT(RIGHT(REPLACE(dbo.ef_RemoveAlpha(RegCis),N''-'',N''''),4),1)=N''1'''; + if Helios.Prenos(bidKZ, 'ID', oVar1, podm, 'Vyberte Doplňkový díl 2', true) then + edtDoplDil2.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT RegCis FROM ' + tblKZ + ' WHERE ID=' + VarToStr(oVar1)); + end; + + + procedure TformOdlitek.selDoplDil3Click(Sender: TObject); + begin + podm:= tblKZ + '.SkupZbo=N''P10'' AND LEFT(RIGHT(REPLACE(dbo.ef_RemoveAlpha(RegCis),N''-'',N''''),4),1)=N''1'''; + if Helios.Prenos(bidKZ, 'ID', oVar1, podm, 'Vyberte Doplňkový díl 3', true) then + edtDoplDil3.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT RegCis FROM ' + tblKZ + ' WHERE ID=' + VarToStr(oVar1)); + end; + + + + procedure TformOdlitek.selDruhDefektClick(Sender: TObject); + begin + oVar1:= edtDruhDefekt.Text; + if (bidAtestyDruhy=0) then + Helios.Error('Nelze dohledat přehled k zobrazení (hvw_AtestyDruhy)') + else + if Helios.Prenos(bidAtestyDruhy, 'Kod', oVar1, '', 'Vyberte Druh atestu/zkoušky', true) then + edtDruhDefekt.Text:= VarToStr(oVar1); + end; + + + + procedure TformOdlitek.selDruhForAClick(Sender: TObject); + begin + if Helios.Prenos(100057, 'DruhFormy', oVar1, '', 'Vyberte formu/přípravek', true) then + edtDruhForA.Text:= VarToStr(oVar1); + end; + + + + procedure TformOdlitek.selDruhForClick(Sender: TObject); + begin + if Helios.Prenos(100057, 'DruhFormy', oVar1, '', 'Vyberte formu/přípravek', true) then + edtDruhFor.Text:= VarToStr(oVar1); + end; + + + + procedure TformOdlitek.selDruhJineClick(Sender: TObject); + begin + oVar1:= edtDruhJine.Text; + if Helios.Prenos(bidAtestyDruhy, 'Kod', oVar1, '', 'Vyberte Druh atestu/zkoušky', true) then + edtDruhJine.Text:= VarToStr(oVar1); + end; + + + + procedure TformOdlitek.selDruhMatClick(Sender: TObject); + begin + oVar1:= edtDruhMat.Text; + if (bidAtestyDruhy=0) then + Helios.Error('Nelze dohledat přehled k zobrazení (hvw_AtestyDruhy)') + else + if Helios.Prenos(bidAtestyDruhy, 'Kod', oVar1, '', 'Vyberte Druh atestu/zkoušky', true) then + edtDruhMat.Text:= VarToStr(oVar1); + end; + + + + procedure TformOdlitek.selDruhObrClick(Sender: TObject); + begin + oVar1:= edtDruhObr.Text; + if (bidAtestyDruhy=0) then + Helios.Error('Nelze dohledat přehled k zobrazení (hvw_AtestyDruhy)') + else + if Helios.Prenos(bidAtestyDruhy, 'Kod', oVar1, '', 'Vyberte Druh atestu/zkoušky', true) then + edtDruhObr.Text:= VarToStr(oVar1); + end; + + + + procedure TformOdlitek.selDruhPovrchClick(Sender: TObject); + begin + oVar1:= edtDruhPovrch.Text; + if (bidAtestyDruhy=0) then + Helios.Error('Nelze dohledat přehled k zobrazení (hvw_AtestyDruhy)') + else + if Helios.Prenos(bidAtestyDruhy, 'Kod', oVar1, '', 'Vyberte Druh atestu/zkoušky', true) then + edtDruhPovrch.Text:= VarToStr(oVar1); + end; + + + + + procedure TformOdlitek.selDruhTZClick(Sender: TObject); + begin + oVar1:= edtDruhTepel.Text; + if (bidAtestyDruhy=0) then + Helios.Error('Nelze dohledat přehled k zobrazení (hvw_AtestyDruhy)') + else + if Helios.Prenos(bidAtestyDruhy, 'Kod', oVar1, '', 'Vyberte Druh atestu/zkoušky', true) then + edtDruhTepel.Text:= VarToStr(oVar1); + end; + + + + + procedure TformOdlitek.selDruhVtokuClick(Sender: TObject); + begin + podm:= tblKZ + '.SkupZbo=N''P10'' AND LEFT(RIGHT(REPLACE(dbo.ef_RemoveAlpha(RegCis),N''-'',N''''),4),1)=N''2'''; + if Helios.Prenos(bidKZ, 'ID', oVar1, podm, 'Vyberte Druh vtoku', true) then + edtDruhVtoku.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT RegCis FROM ' + tblKZ + ' WHERE ID=' + VarToStr(oVar1)); + end; + + + + + procedure TformOdlitek.selGarantButtonClick(Sender: TObject); + begin + oVar1:= edtGarant.Text; + if (bidGarant=0) then + Helios.Error('Nelze dohledat přehled k zobrazení (hvw_OdlitkyParam_Garant)') + else + if Helios.Prenos(bidGarant, 'Zkratka', oVar1, '', 'Vyberte Garanta', true) then + edtGarant.Text:= VarToStr(oVar1); + end; + + + + + procedure TformOdlitek.selMatOdlitClick(Sender: TObject); + var lSQL: string; + begin + podm:= 'SkupZbo IN (SELECT s.SkupZbo FROM ' + tblSZ + ' s INNER JOIN ' + tblSZe + ' se ON (se.ID=s.ID) WHERE se._MuzeBytMatecniOdlitek=1) AND RegCis<>N' + odlitek.QuotedString; + if Helios.Prenos(bidKZ, 'ID', oVar1, podm, 'Vyberte Mateční odlitek', true) then + begin + idKZ:= StrToInt(VarToStr(oVar1)); + edtMatOdlit.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT RegCis FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString); + lSQL:= 'SELECT ID FROM ' + tblOdlitky + ' WHERE Odlitek=N' + QuotedStr(edtMatOdlit.Text) + CRLF + 'IF NOT EXISTS(SELECT ID FROM ' + tblOdlitky; + lSQL:= lSQL + ' WHERE Odlitek=N' + QuotedStr(edtMatOdlit.Text) + ') INSERT ' + tblOdlitky; + lSQL:= lSQL + ' (Odlitek, JeNovaVetaEditor) VALUES (N' + QuotedStr(edtMatOdlit.Text) + ', 1)' + CRLF + 'SELECT SCOPE_IDENTITY()'; + with Helios.OpenSQL(lSQL) do + if (RecordCount=1) then + idOdl:= StrToInt(VarToStr(FieldValues(0))) + else + idOdl:= 0; + end; + end; + + + + procedure TformOdlitek.selOrgClick(Sender: TObject); + begin + try + oVar1:= Variant(edtOrg.Text); + if Helios.Prenos2(bidCisOrg, 'TabCisOrg.Nazev', 'TabCisOrg.CisloOrg', oVar1, oVar2, '', 'Vyberte Organizaci', True, False, False, 1) then + begin + edtCisOrg.Text:= VarToStr(oVar2); + edtOrg.Text:= VarToStr(oVar1); + end; + except on E:Exception do + Helios.Error(E.Message); + end; + end; + +end. diff --git a/frmOdvLis.dfm b/frmOdvLis.dfm new file mode 100644 index 0000000..1324aaf --- /dev/null +++ b/frmOdvLis.dfm @@ -0,0 +1,884 @@ +object formOdvLis: TformOdvLis + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = ' Odv'#225'd'#283'ni vst'#345'ik'#367' na lisu' + ClientHeight = 613 + ClientWidth = 1627 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Position = poOwnerFormCenter + OnClose = FormClose + OnShow = FormShow + DesignSize = ( + 1627 + 613) + TextHeight = 25 + object lblZapisDat: TLabel + Left = 638 + Top = 570 + Width = 354 + Height = 25 + Alignment = taCenter + AutoSize = False + Caption = 'Prob'#237'h'#225' z'#225'pis dat...' + Font.Charset = DEFAULT_CHARSET + Font.Color = clRed + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + Visible = False + end + object Label1: TLabel + Left = 689 + Top = 123 + Width = 126 + Height = 25 + Caption = 'Po'#269'et vst'#345'ik'#367':' + end + object lblPrijmeni: TLabel + Left = 878 + Top = 78 + Width = 6 + Height = 23 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblPlan: TLabel + Left = 604 + Top = 78 + Width = 6 + Height = 23 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object Label2: TLabel + Left = 1323 + Top = 156 + Width = 267 + Height = 23 + Caption = '. . . . pro evidenci Zmetk'#367' . . . .' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [fsItalic] + ParentFont = False + Visible = False + end + object lblVerze: TLabel + Left = 8 + Top = 591 + Width = 4 + Height = 14 + Anchors = [akLeft, akBottom] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object btnOK: TButton + Left = 622 + Top = 520 + Width = 116 + Height = 39 + Caption = 'OK' + TabOrder = 6 + OnClick = btnOKClick + end + object btnStorno: TButton + Left = 891 + Top = 520 + Width = 113 + Height = 39 + Caption = 'Storno' + TabOrder = 7 + OnClick = btnStornoClick + end + object edtBarcode: TLabeledEdit + Left = 604 + Top = 39 + Width = 143 + Height = 33 + Alignment = taCenter + EditLabel.Width = 125 + EditLabel.Height = 25 + EditLabel.Caption = #268'. k'#243'd pl'#225'nu:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + TabOrder = 0 + Text = '' + OnExit = edtBarcodeExit + end + object selBarcode: TButtonedEdit + Left = 746 + Top = 40 + Width = 31 + Height = 33 + TabOrder = 1 + OnClick = selBarcodeClick + end + object edtCisZam: TLabeledEdit + Left = 878 + Top = 39 + Width = 94 + Height = 33 + Alignment = taCenter + EditLabel.Width = 131 + EditLabel.Height = 25 + EditLabel.Caption = 'Os.'#269'. zam'#283'st.:' + NumbersOnly = True + TabOrder = 2 + Text = '' + OnExit = edtCisZamExit + end + object selCisZam: TButtonedEdit + Left = 971 + Top = 42 + Width = 31 + Height = 33 + TabOrder = 3 + OnClick = selCisZamClick + OnExit = selCisZamExit + end + object edtVstriku: TRzNumericEdit + Left = 821 + Top = 120 + Width = 65 + Height = 33 + Alignment = taCenter + TabOrder = 4 + OnExit = edtVstrikuExit + DisplayFormat = ',0;(,0)' + end + object grd: TNextDBGrid6 + Left = 3 + Top = 179 + Width = 1616 + Height = 316 + ParentColor = False + TabOrder = 5 + StyleOptions = [soNativeStyles, soVCLStyles] + ActiveView = view + ActiveViewIndex = 0 + Options = [goAutoHideScrollBars, goExitEndEditing, goResponsiveViews, goTabLeaveControl] + RowHeight = 30 + ScrollBars = [sbVertical] + SelectFullRow = True + Style = stModern + UserDefinedColorPalette.GeometryHoverColor = clBlack + OnCellClick = grdCellClick + DataSource = ds + object view: TNxReportGridView6 + ColumnMoving = False + GridLines = True + HeaderHeight = 33 + OnGetCellColor = viewGetCellColor + end + object colFormaPouzita: TNxDBCheckBoxColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'Pou'#382'ito' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -19 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 0 + PlaceholderText = 'True' + Position = 0 + Width = 70 + CheckedImageIndex = -1 + DefaultValue = True + UncheckedImageIndex = -1 + OnCheckedChanged = colFormaPouzitaCheckedChanged + DataBinding.FieldName = 'FormaPouzita' + InsertString = 'False' + end + object colRegCis: TNxDBTextColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Reg.'#269'.' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -21 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Header.Clickable = False + Index = 1 + Inserting = False + PlaceholderText = 'Text Text' + Position = 1 + Resizeable = False + Width = 140 + DataBinding.FieldName = 'RegCis' + end + object colZakazka: TNxDBTextColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Zak'#225'zka' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -21 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 2 + PlaceholderText = 'Text Text' + Position = 2 + Resizeable = False + Width = 140 + DataBinding.FieldName = 'Zakazka' + end + object colNazev: TNxDBTextColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Popis' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -21 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Header.Clickable = False + Index = 3 + Inserting = False + PlaceholderText = 'Text Text' + Position = 3 + Selectable = False + Width = 220 + DataBinding.FieldName = 'Nazev' + end + object colForma: TNxDBTextColumn6 + Alignment = taCenter + DrawingOptions = [doBackground, doContent, doCustom] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Forma' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -21 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 4 + PlaceholderText = 'Text Text' + Position = 4 + Resizeable = False + Width = 230 + DataBinding.FieldName = 'Forma' + end + object colFormaSN: TNxDBTextColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'V'#253'r.'#269#237'slo' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -21 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 5 + PlaceholderText = 'Text Text' + Position = 5 + Width = 230 + DataBinding.FieldName = 'FormaSN' + end + object colPocetVstriku: TNxDBNumberColumn6 + Alignment = taCenter + Editing = True + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'Vst'#345'ik'#367 + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -21 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 6 + PlaceholderText = '1742.50' + Position = 6 + FormatMask = '#,##0' + NumericEditOptions = [] + Precision = 0 + Increment = 1.000000000000000000 + SpinButtons = False + DataBinding.FieldName = 'PocetVstriku' + InsertString = '0' + end + object colKsVeForme: TNxDBNumberColumn6 + Alignment = taCenter + DrawingOptions = [doBackground, doContent, doCustom] + Editing = True + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Ks/forma' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -19 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 7 + Inserting = False + ParentColor = False + PlaceholderText = '1742' + Position = 7 + Resizeable = False + Width = 90 + FormatMask = '#,##0' + NumericEditOptions = [] + Precision = 0 + Increment = 1.000000000000000000 + SpinButtons = False + DataBinding.FieldName = 'KsVeForme' + InsertString = '0' + end + object colKsDobre: TNxDBNumberColumn6 + Alignment = taCenter + Color = 9894289 + Editing = True + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '0' + Header.Alignment = taCenter + Header.Caption = 'Dobr'#233' ks' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -21 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Header.Clickable = False + Index = 8 + Inserting = False + ParentColor = False + PlaceholderText = '1742' + Position = 8 + Resizeable = False + Width = 100 + EditOptions = [edTyping] + FormatMask = '#,##0' + NumericEditOptions = [] + Precision = 0 + Increment = 1.000000000000000000 + SpinButtons = False + DataBinding.FieldName = 'KsDobre' + InsertString = '0' + end + object colZmetky1: TNxDBNumberColumn6 + Alignment = taCenter + Editing = True + Enabled = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Z' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -19 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 9 + Inserting = False + ParentColor = False + PlaceholderText = '1742' + Position = 9 + Resizeable = False + Width = 110 + FormatMask = '#,##0' + NumericEditOptions = [] + Precision = 0 + Increment = 1.000000000000000000 + SpinButtons = False + DataBinding.FieldName = 'KsZmetky1' + InsertString = '0' + end + object colZmetky2: TNxDBNumberColumn6 + Alignment = taCenter + Editing = True + Enabled = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Z' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -19 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 10 + Inserting = False + ParentColor = False + PlaceholderText = '1742' + Position = 10 + Resizeable = False + Width = 110 + FormatMask = '#,##0' + NumericEditOptions = [] + Precision = 0 + Increment = 1.000000000000000000 + SpinButtons = False + DataBinding.FieldName = 'KsZmetky2' + InsertString = '0' + end + object colZmetky3: TNxDBNumberColumn6 + Alignment = taCenter + Editing = True + Enabled = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Z' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -19 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 11 + Inserting = False + ParentColor = False + PlaceholderText = '1742' + Position = 11 + Resizeable = False + Width = 110 + FormatMask = '#,##0' + NumericEditOptions = [] + Precision = 0 + Increment = 1.000000000000000000 + SpinButtons = False + DataBinding.FieldName = 'KsZmetky3' + InsertString = '0' + end + object colIdPostup: TNxDBNumberColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'idPrPostup' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 12 + PlaceholderText = '1742.50' + Position = 12 + Visible = False + FormatMask = '#,##0.00' + Increment = 1.000000000000000000 + DataBinding.FieldName = 'IDPostup' + InsertString = '0' + end + object colIdNaradi: TNxDBNumberColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'idNaradi' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 13 + PlaceholderText = '1742.50' + Position = 13 + Visible = False + FormatMask = '#,##0.00' + Increment = 1.000000000000000000 + DataBinding.FieldName = 'IDnaradi' + InsertString = '0' + end + object colIdVyrCis: TNxDBNumberColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'idVyrCis' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 14 + PlaceholderText = '1742.50' + Position = 14 + Visible = False + FormatMask = '#,##0.00' + Increment = 1.000000000000000000 + DataBinding.FieldName = 'IDVyrCS' + InsertString = '0' + end + end + object comboForma: TNxComboBox6 + Left = 75 + Top = 18 + Width = 154 + Height = 33 + Cursor = crArrow + Alignment = taCenter + TabOrder = 8 + Visible = False + UserDefinedColorPalette.GeometryHoverColor = clBlack + OnChange = comboFormaChange + OnExit = comboFormaExit + ButtonWidth = 16 + Style = dsDropDownList + DropDownCount = 4 + ItemHeight = 26 + end + object comboSN: TNxComboBox6 + Left = 75 + Top = 53 + Width = 154 + Height = 33 + Cursor = crArrow + TabOrder = 9 + Visible = False + UserDefinedColorPalette.GeometryHoverColor = clBlack + OnChange = comboSNChange + OnExit = comboSNExit + ButtonWidth = 16 + Style = dsDropDownList + DropDownCount = 4 + ItemHeight = 25 + end + object tbl: TVirtualTable + Active = True + FieldDefs = < + item + Name = 'IDPostup' + DataType = ftInteger + end + item + Name = 'RegCis' + DataType = ftString + Size = 20 + end + item + Name = 'Nazev' + DataType = ftString + Size = 100 + end + item + Name = 'KsDobre' + DataType = ftSmallint + end + item + Name = 'IDVyrCS' + DataType = ftInteger + end + item + Name = 'FormaSN' + DataType = ftString + Size = 30 + end + item + Name = 'IDradek' + DataType = ftInteger + end + item + Name = 'IDnaradi' + DataType = ftInteger + end + item + Name = 'KsZmetky1' + DataType = ftInteger + end + item + Name = 'KsZmetky2' + DataType = ftInteger + end + item + Name = 'KsZmetky3' + DataType = ftInteger + end + item + Name = 'KsVeForme' + DataType = ftInteger + end + item + Name = 'Forma' + DataType = ftString + Size = 30 + end + item + Name = 'Zakazka' + DataType = ftString + Size = 15 + end + item + Name = 'ID' + DataType = ftInteger + end + item + Name = 'FormaPouzita' + DataType = ftBoolean + end + item + Name = 'PocetVstriku' + DataType = ftInteger + end + item + Name = 'IDVyrCK' + DataType = ftInteger + end + item + Name = 'ParovaForma' + DataType = ftSmallint + end> + AfterPost = tblAfterPost + Left = 124 + Top = 107 + Data = { + 0400130008004944506F73747570030000000000000006005265674369730100 + 14000000000005004E617A6576010064000000000007004B73446F6272650200 + 00000000000007004944567972435303000000000000000700466F726D61534E + 01001E000000000007004944726164656B0300000000000000080049446E6172 + 616469030000000000000009004B735A6D65746B793103000000000000000900 + 4B735A6D65746B7932030000000000000009004B735A6D65746B793303000000 + 0000000009004B735665466F726D6503000000000000000500466F726D610100 + 1E000000000007005A616B617A6B6101000F0000000000020049440300000000 + 0000000C00466F726D61506F757A69746105000000000000000C00506F636574 + 56737472696B75030000000000000007004944567972434B0300000000000000 + 0B005061726F7661466F726D610200000000000000000000000000} + object tblIDPrPostup: TIntegerField + FieldName = 'IDPostup' + Visible = False + end + object tblRegCis: TStringField + FieldName = 'RegCis' + end + object tblNazev: TStringField + FieldName = 'Nazev' + Size = 100 + end + object tblKsDobre: TSmallintField + FieldName = 'KsDobre' + end + object tblIDVyrCS: TIntegerField + FieldName = 'IDVyrCS' + Visible = False + end + object tblFormaSN: TStringField + FieldName = 'FormaSN' + Size = 30 + end + object tblIDradek: TIntegerField + FieldName = 'IDradek' + Visible = False + end + object tblIDnaradi: TIntegerField + FieldName = 'IDnaradi' + Visible = False + end + object tblKsZmetky1: TIntegerField + FieldName = 'KsZmetky1' + end + object tblKsZmetky2: TIntegerField + FieldName = 'KsZmetky2' + end + object tblKsZmetky3: TIntegerField + FieldName = 'KsZmetky3' + end + object tblKsNaPlate: TIntegerField + FieldName = 'KsVeForme' + end + object tblForma: TStringField + FieldName = 'Forma' + LookupKeyFields = 'RegCis' + LookupResultField = 'Forma' + Size = 30 + end + object tblcolZakazka: TStringField + FieldName = 'Zakazka' + Size = 15 + end + object tblID: TIntegerField + FieldName = 'ID' + end + object tblFormaPouzita: TBooleanField + FieldName = 'FormaPouzita' + end + object tblPocetVstriku: TIntegerField + FieldName = 'PocetVstriku' + end + object tblIDVyrCK: TIntegerField + FieldName = 'IDVyrCK' + end + object tblParovaForma: TSmallintField + DefaultExpression = '0' + FieldName = 'ParovaForma' + end + end + object ds: TDataSource + DataSet = tbl + Left = 73 + Top = 107 + end +end diff --git a/frmOdvLis.pas b/frmOdvLis.pas new file mode 100644 index 0000000..b28bb11 --- /dev/null +++ b/frmOdvLis.pas @@ -0,0 +1,821 @@ +unit frmOdvLis; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, System.StrUtils, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, RzEdit, TBPackageU, ddPlugin_TLB, Vcl.ExtCtrls, + Vcl.ComCtrls, Data.DB, Vcl.Grids, Vcl.DBGrids, VirtualDataSet, MemDS, VirtualTable, NxGridView6, NxColumns6, + NxControls6, NxCustomGrid6, NxTypes6, NxVirtualGrid6, NxDBCells6, NxDBGrid6, NxDBColumns6, NxIntf6, NxEdit6, + Vcl.Menus; + +const + tblPlan = '[dbo].[_hdc_TabPlanNasazeniLisu]'; + tblPlanR = '[dbo].[_hdc_TabPlanNasazeniLisuR]'; + tblOdlitky = '[dbo].[_hdc_TabOdlitky]'; + +type + TZavady = record + poz: integer; + kod: string; + popis: string; + end; + + TformOdvLis = class(TForm) + btnOK: TButton; + btnStorno: TButton; + lblZapisDat: TLabel; + edtBarcode: TLabeledEdit; + selBarcode: TButtonedEdit; + edtCisZam: TLabeledEdit; + selCisZam: TButtonedEdit; + edtVstriku: TRzNumericEdit; + Label1: TLabel; + tbl: TVirtualTable; + ds: TDataSource; + grd: TNextDBGrid6; + view: TNxReportGridView6; + colRegCis: TNxDBTextColumn6; + colNazev: TNxDBTextColumn6; + colKsDobre: TNxDBNumberColumn6; + tblIDPrPostup: TIntegerField; + tblRegCis: TStringField; + tblNazev: TStringField; + tblKsDobre: TSmallintField; + lblPrijmeni: TLabel; + lblPlan: TLabel; + tblIDVyrCS: TIntegerField; + tblFormaSN: TStringField; + tblIDradek: TIntegerField; + tblIDnaradi: TIntegerField; + tblKsZmetky1: TIntegerField; + tblKsZmetky2: TIntegerField; + tblKsZmetky3: TIntegerField; + tblKsNaPlate: TIntegerField; + colFormaSN: TNxDBTextColumn6; + colZmetky1: TNxDBNumberColumn6; + colZmetky2: TNxDBNumberColumn6; + colZmetky3: TNxDBNumberColumn6; + colKsVeForme: TNxDBNumberColumn6; + Label2: TLabel; + tblForma: TStringField; + tblcolZakazka: TStringField; + colZakazka: TNxDBTextColumn6; + comboForma: TNxComboBox6; + comboSN: TNxComboBox6; + colForma: TNxDBTextColumn6; + colIdPostup: TNxDBNumberColumn6; + tblID: TIntegerField; + colIdNaradi: TNxDBNumberColumn6; + colIdVyrCis: TNxDBNumberColumn6; + tblFormaPouzita: TBooleanField; + tblPocetVstriku: TIntegerField; + colFormaPouzita: TNxDBCheckBoxColumn6; + colPocetVstriku: TNxDBNumberColumn6; + lblVerze: TLabel; + tblIDVyrCK: TIntegerField; + tblParovaForma: TSmallintField; + procedure FormShow(Sender: TObject); + procedure btnStornoClick(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure btnOKClick(Sender: TObject); + procedure edtBarcodeExit(Sender: TObject); + procedure selBarcodeClick(Sender: TObject); + procedure selCisZamClick(Sender: TObject); + procedure selCisZamExit(Sender: TObject); + procedure edtCisZamExit(Sender: TObject); + procedure viewGetCellColor(Sender: TObject; ACol, ARow: Integer; var CellColor: TColor; State: TNxCellPaintingState); + procedure edtVstrikuExit(Sender: TObject); + procedure grdCellClick(Sender: TObject; ACol, ARow: Integer; Button: TMouseButton); + procedure comboFormaChange(Sender: TObject); + procedure comboFormaExit(Sender: TObject); + procedure comboSNChange(Sender: TObject); + procedure comboSNExit(Sender: TObject); + procedure tblAfterPost(DataSet: TDataSet); + procedure colFormaPouzitaCheckedChanged(Sender: TObject; ACol, ARow: Integer); + private + function najdiVyrCis(ARow: integer): integer; + procedure zapisIDNaradi(ARow: integer); + procedure zapisVyrCis(ARow: integer); + public + Helios: IHelios; + jeTest: Boolean; + mVerze: string; + end; + +var + formOdvLis: TformOdvLis; + idPlan, bidPlan: integer; + oVar: OleVariant; + zavady: TArray; + +implementation +uses System.DateUtils, helUtils; +{$R *.dfm} + + + + procedure TformOdvLis.btnOKClick(Sender: TObject); + var lSQL, idcko, idckoR: string; + begin + lblZapisDat.Visible:= true; + Self.Repaint; + btnOK.Enabled:= false; + btnStorno.Enabled:= false; + + if (tbl.RecordCount>0) then + begin +{ + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabOdvodLis'') IS NULL CREATE TABLE #TabOdvodLis (ID INT IDENTITY(1,1) NOT NULL, IDPlan INT NOT NULL, CisZam INT NOT NULL,'; + lSQL:= lSQL +' PocetVstriku SMALLINT NOT NULL DEFAULT 0, DeviceID NVARCHAR(40) DEFAULT HOST_NAME(), Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME(),'; + lSQL:= lSQL + ' DatPorizeni DATETIME NOT NULL DEFAULT GETDATE())' + CRLF; +} + lSQL:= 'INSERT #TabOdvodLis (IDPlan, CisZam, PocetVstriku) VALUES (' + idPlan.ToString + ', ' + edtCisZam.Text + ', '; + lSQL:= lSQL + StringReplace(FloatToStr(edtVstriku.Value), ',', '.', [rfReplaceAll]) + ')' + CRLF + 'SELECT SCOPE_IDENTITY()'; + if (jeTest) then + lSQL:= lSQL.Replace('#TabOdv', 'dbo._temp_TabOdv').Replace('tempdb..', ''); + + with Helios.OpenSQL(lSQL) do + idcko:= VarToStr(FieldValues(0)); +{ + lSQL:= lSQL + 'IF OBJECT_ID(N''tempdb..#TabOdvodLisR'') IS NULL CREATE TABLE #TabOdvodLisR (ID INT IDENTITY(1,1) NOT NULL, IDHlava INT NOT NULL, IDRadek INT,'; + lSQL:= lSQL + ' IDVyrCis INT, KsDobre NUMERIC(15,3) NOT NULL DEFAULT 0.0, KsVeForme SMALLINT DEFAULT 1, IDPrPostup INT, IDNaradi INT,'; + lSQL:= lSQL + ' FormaPouzita BIT DEFAULT 1, PocetVstriku SMALLINT DEFAULT 0)' + CRLF; +} + tbl.First; + while not(tbl.Eof) do + begin + lSQL:= 'INSERT #TabOdvodLisR (IDHlava, IDRadek, IDVyrCis, IDVyrCK, KsDobre, KsVeForme, IDPrPostup, IDNaradi, FormaPouzita, PocetVstriku, ParovaForma) SELECT ' + idcko + ', '; + lSQL:= lSQL + tbl.FieldByName('IDradek').AsString; + lSQL:= lSQL + ', ' + IfThen(tbl.FieldByName('IDVyrCS').AsInteger>0, tbl.FieldByName('IDVyrCS').AsString, 'NULL'); + lSQL:= lSQL + ', ' + IfThen(tbl.FieldByName('IDVyrCK').AsInteger>0, tbl.FieldByName('IDVyrCK').AsString, 'NULL'); + lSQL:= lSQL + ', ' + tbl.FieldByName('KsDobre').AsExtended.ToString.Replace(',', '.'); + lSQL:= lSQL + ', ' + tbl.FieldByName('KsVeForme').AsExtended.ToString.Replace(',', '.'); + lSQL:= lSQL + ', ' + tbl.FieldByName('IDPostup').AsString; + lSQL:= lSQL + ', ' + IfThen(tbl.FieldByName('IDnaradi').AsInteger>0, tbl.FieldByName('IDnaradi').AsString, 'NULL'); + lSQL:= lSQL + ', ' + IfThen(tbl.FieldByName('FormaPouzita').AsBoolean, '1', '0'); + lSQL:= lSQL + ', ' + tbl.FieldByName('PocetVstriku').AsExtended.ToString.Replace(',', '.'); + lSQL:= lSQL + ', ' + IfThen(tbl.FieldByName('ParovaForma').AsBoolean, '1', '0') + CRLF; + lSQL:= lSQL + 'SELECT SCOPE_IDENTITY()'; +{ + lSQL:= lSQL + 'IF OBJECT_ID(N''tempdb..#TabOdvodLisZavady'') IS NULL CREATE TABLE #TabOdvodLisZavady (ID INT IDENTITY(1,1) NOT NULL, IDHlava INT NOT NULL,'; + lSQL:= lSQL + ' IDPrPostup INT NOT NULL, IDZavady INT NOT NULL, Mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0.0, Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME())'; +} + if (jeTest) then + lSQL:= lSQL.Replace('#TabOdv', 'dbo._temp_TabOdv').Replace('tempdb..', '', [rfReplaceAll]); + + with Helios.OpenSQL(lSQL) do + idckoR:= VarToStr(FieldValues(0)); + + + lSQL:= ''; + if (tbl.FieldByName('KsZmetky1').AsFloat>0) and (Length(zavady)>0) then + begin + lSQL:= 'INSERT #TabOdvodLisZavady (IDRadek, IDPrPostup, IDZavady, Mnozstvi, IDHlava) SELECT ' + idckoR + ', ' + tbl.FieldByName('IDPostup').AsString + ', ID, '; + lSQL:= lSQL + tbl.FieldByName('KsZmetky1').AsString.Replace(',', '.') + ', ' + idcko + ' FROM ' + tblCZavad + ' WHERE kod=N' + zavady[0].kod.QuotedString + CRLF; + end; + + if (tbl.FieldByName('KsZmetky2').AsFloat>0) and (Length(zavady)>1) then + begin + lSQL:= lSQL + 'INSERT #TabOdvodLisZavady (IDRadek, IDPrPostup, IDZavady, Mnozstvi, IDHlava) SELECT ' + tbl.FieldByName('IDPostup').AsString + ', ID, '; + lSQL:= lSQL + tbl.FieldByName('KsZmetky2').AsString.Replace(',', '.') + ', ' + idcko + ' FROM ' + tblCZavad + ' WHERE kod=N' + zavady[1].kod.QuotedString + CRLF; + end; + + if (tbl.FieldByName('KsZmetky3').AsFloat>0) and (Length(zavady)>2) then + begin + lSQL:= lSQL + 'INSERT #TabOdvodLisZavady (IDRadek, IDPrPostup, IDZavady, Mnozstvi, IDHlava) SELECT ' + tbl.FieldByName('IDPostup').AsString + ', ID, '; + lSQL:= lSQL + tbl.FieldByName('KsZmetky3').AsString.Replace(',', '.') + ', ' + idcko + ' FROM ' + tblCZavad + ' WHERE kod=N' + zavady[2].kod.QuotedString + CRLF; + end; + if (jeTest) then + lSQL:= lSQL.Replace('#TabOdv', 'dbo._temp_TabOdv').Replace('tempdb..', '', [rfReplaceAll]); + + if (lSQL<>'') then + Helios.ExecSQL(lSQL); + + + tbl.Next; + end; + end; + + if not(jeTest) then + Helios.ExecSQL('IF OBJECT_ID(''dbo.ep_HDCSD_PlanLisu_Odvod'') IS NOT NULL EXEC dbo.ep_HDCSD_PlanLisu_Odvod'); +// Helios.ExecSQL('IF OBJECT_ID(''dbo.ep_Vosk_PlanLisu_Odvod'') IS NOT NULL EXEC dbo.ep_Vosk_PlanLisu_Odvod'); + + lblZapisDat.Visible:= false; + Self.Repaint; + btnOK.Enabled:= true; + btnStorno.Enabled:= true; + Close; + end; + + + + + procedure TformOdvLis.btnStornoClick(Sender: TObject); + begin + Close; + end; + + + + + function TformOdvLis.najdiVyrCis(ARow: Integer): integer; + begin + result:= 0 + end; + + + + procedure TformOdvLis.zapisIDNaradi(ARow: Integer); + var lSQL, rc: string; + idPrP: integer; + i, i2, idVPr, dokl: integer; + begin + if (ARow>=0) then + begin + i:= 0; + i2:= 0; + rc:= grd.Cells[colForma.Index, ARow]; + if (rc<>'') then + begin + idPrP:= grd.Cell[colRegCis.Index, grd.SelectedRow].AsInteger; + i:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblKZ + ' WHERE naradi=1 AND RegCis=N' + QuotedStr(rc)); + if (i=0) then + i:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT TOP(1) ID FROM ' + tblKZ + ' WHERE SkupZbo LIKE N''F[12]%'' AND RegCis=N' + QuotedStr(rc)); + end; + + tbl.Edit; + lSQL:= 'SELECT TOP(1) ID FROM ' + tblVyrCK + ' WHERE IDKmenZbozi=' + i.ToString + ' AND Nazev1=N' + QuotedStr(grd.Cells[colFormaSN.Index, ARow]); + i2:= helUtils.getHeliosIntVal(Helios, 0, lSQL); + tbl.FieldByName('IDVyrCK').AsInteger:= i2; + + lSQL:= 'SELECT TOP(1) ID FROM ' + tblVyrCS + ' WHERE IDVyrCK=' + i2.ToString + ' AND Mnozstvi>0'; + i2:= helUtils.getHeliosIntVal(Helios, 0, lSQL); + tbl.FieldByName('IDVyrCS').AsInteger:= i2; + + tbl.FieldByName('IDnaradi').AsInteger:= i; + tbl.Post; + + grd.DataSource.DataSet.Refresh; + grd.Cell[colIdVyrCis.Index, ARow].AsInteger:= i2; + end; + end; + + + + + procedure TformOdvLis.zapisVyrCis(ARow: Integer); + var lSQL, rc, vyrcis: string; + i, i2, idPrP: integer; + begin + if (ARow>=0) then + begin + i:= 0; + rc:= grd.Cells[colForma.Index, ARow]; + if (rc<>'') then + begin + idPrP:= grd.Cell[colRegCis.Index, grd.SelectedRow].AsInteger; + i:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblKZ + ' WHERE naradi=1 AND RegCis=N' + QuotedStr(rc)); + if (i=0) then + i:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT TOP(1) ID FROM ' + tblKZ + ' WHERE SkupZbo LIKE N''F[12]%'' AND RegCis=N' + QuotedStr(rc)); + end; + + i2:= 0; + vyrcis:= grd.Cells[colFormaSN.Index, ARow]; + if (vyrcis<>'') then + begin + idPrP:= grd.Cell[colRegCis.Index, grd.SelectedRow].AsInteger; + lSQL:= 'SELECT ID FROM ' + tblVyrCS + ' WHERE Nazev1=N' + vyrcis.QuotedString + ' AND IDKmenZbozi' + i.ToString; + i2:= helUtils.getHeliosIntVal(Helios, 0, lSQL); + end; + grd.Cell[colIdVyrCis.Index, ARow].AsInteger:= i2; + tbl.Edit; + tbl.FieldByName('IDVyrCS').AsInteger:= i2; + tbl.FieldByName('IDVyrCK').AsInteger:= i2; + tbl.Post; + end; + end; + + + + + + procedure TformOdvLis.comboFormaChange(Sender: TObject); + var ARow: integer; + begin + ARow:= grd.SelectedRow; + if (comboForma.ItemIndex>=0) then + grd.SelectedCell.AsString:= comboForma.Items[comboForma.ItemIndex] + else + grd.SelectedCell.AsString:= ''; + grd.Cells[colFormaSN.Index, ARow]:= ''; + grd.SetFocus; + end; + + + + + procedure TformOdvLis.comboFormaExit(Sender: TObject); + var ARow: integer; + begin + ARow:= grd.SelectedRow; + if (comboForma.ItemIndex>=0) then + grd.SelectedCell.AsString:= comboForma.Items[comboForma.ItemIndex] + else + grd.SelectedCell.AsString:= ''; + comboForma.Visible:= False; + zapisIDNaradi(ARow); + grd.SetFocus; + end; + + + + + procedure TformOdvLis.comboSNChange(Sender: TObject); + var ARow: integer; + begin + ARow:= grd.SelectedRow; + if (comboSN.ItemIndex>=0) then + grd.SelectedCell.AsString:= comboSN.Items[comboSN.ItemIndex] + else + grd.SelectedCell.AsString:= ''; + grd.SetFocus; + end; + + + + + procedure TformOdvLis.comboSNExit(Sender: TObject); + var ARow: integer; + begin + ARow:= grd.SelectedRow; + if (comboSN.ItemIndex>=0) then + grd.SelectedCell.AsString:= comboSN.Items[comboSN.ItemIndex] + else + grd.SelectedCell.AsString:= ''; + comboSN.Visible:= False; + zapisVyrCis(ARow); + grd.SetFocus; + end; + + + + + procedure TformOdvLis.edtBarcodeExit(Sender: TObject); + var lSQL, formy, sncka, nDokl, sVPr: string; + idVPr, idVOp, dokl, cnt: integer; + idPrikaz: integer; + begin + edtBarcode.Text:= Trim(edtBarcode.Text); + edtBarcode.Text:= helUtils.StripChars(edtBarcode.Text, ['''', '"', '-', ';', ' ']); + if (edtBarcode.Text<>'') then + begin + lblPlan.Caption:= ''; + idPlan:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblPlan + ' WHERE BarCode=N' + QuotedStr(edtBarcode.Text)); + if (idPlan>0) then + begin + + lSQL:= 'SELECT Lis + N'' / '' + CONVERT(nvarchar, DATEPART(day,Datum)) + N''.'' + CONVERT(nvarchar, DATEPART(month,Datum)) + N''.'''; + lSQL:= lSQL + ' + CONVERT(nvarchar, DATEPART(year,Datum)) + N'' / '' + Smena FROM ' + tblPlan + ' WHERE ID=' + idPlan.ToString; + lblPlan.Caption:= helUtils.getHeliosStrVal(Helios, '', lSQL); + if not(tbl.Active) then + tbl.Open; + tbl.Edit; + tbl.Clear; //Fields; + lSQL:= 'SELECT r.IDPrPostup, k.RegCis, k.Nazev1, r.IDVyrCis, vc.Nazev1, r.ID, nv.Naradi, ISNULL(nvke._KsVeForme, ISNULL(ISNULL(o1.KsVeForme, o.KsVeForme),0)), nvk.RegCis' + + ', nv.Doklad, vp.ID, z.CisloZakazky, r.IDVyrCK FROM ' + tblPlanR + ' r INNER JOIN ' + tblPrPost + ' p ON ((p.ID1=r.IDPrPostup OR p.ID=r.IDPrPostup) AND p.IDOdchylkyDo IS NULL)' + + ' INNER JOIN ' + tblPrikaz + ' vp ON (p.IDPrikaz=vp.ID) INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IdTabKmen) LEFT JOIN ' + tblOdlitky + ' o ON (o.Odlitek=k.RegCis) LEFT JOIN ' + + tblOdlitky + ' o1 ON (o1.Odlitek=o.MatecniOdlitek) LEFT JOIN ' + tblPrNVazby + ' nv ON (p.IDPrikaz=nv.IDPrikaz AND p.Doklad=nv.Doklad) LEFT JOIN dbo.TabVyrCS vc ON (vc.ID=r.IDvyrcis)' + + ' LEFT JOIN ' + tblKZ + ' nvk ON (nv.Naradi=nvk.Id) LEFT JOIN ' + tblZak + ' z ON (z.ID=vp.IDZakazka) LEFT JOIN ' + tblKZe + ' nvke ON (nvke.ID=nvk.ID) WHERE r.IDHlava=' + + idPlan.ToString + ' ORDER BY r.Poradi, r.ID'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + First; + while not(Eof) do + begin + tbl.Append; + tbl.FieldByName('ID').AsInteger:= tbl.RecordCount + 1; + tbl.FieldByName('IDPostup').AsString:= VarToStr(FieldValues(0)); + tbl.FieldByName('RegCis').AsString:= VarToStr(FieldValues(1)); + tbl.FieldByName('Nazev').AsString:= VarToStr(FieldValues(2)); + tbl.FieldByName('KsDobre').AsExtended:= 0; + tbl.FieldByName('IDVyrCS').AsInteger:= StrToInt(IfThen(VarToStr(FieldValues(3))='', '-1', VarToStr(FieldValues(3)))); + tbl.FieldByName('IDVyrCK').AsInteger:= StrToInt(IfThen(VarToStr(FieldValues(12))='', '-1', VarToStr(FieldValues(12)))); + tbl.FieldByName('IDradek').AsInteger:= StrToInt(VarToStr(FieldValues(5))); + tbl.FieldByName('IDnaradi').AsInteger:= StrToInt(IfThen(VarToStr(FieldValues(6))='', '-1', VarToStr(FieldValues(6)))); + tbl.FieldByName('Forma').AsString:= ''; + tbl.FieldByName('FormaSN').AsString:= ''; + if (LeftStr(VarToStr(FieldValues(1)),3).ToLower='ucp') then + tbl.FieldByName('FormaPouzita').AsBoolean:= false + else + tbl.FieldByName('FormaPouzita').AsBoolean:= true; + + idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDPrikaz FROM ' + tblPrPost + ' WHERE ID=' + tbl.FieldByName('IDPostup').AsString); + dokl:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT Doklad FROM ' + tblPrPost + ' WHERE ID=' + tbl.FieldByName('IDPostup').AsString); + + if (idVPr>0) and (dokl>0) then + begin + + if (tbl.FieldByName('IDVyrCK').AsInteger<=0) then + begin + lSQL:= 'SELECT COUNT(ID) FROM ' + tblVyrCK + ' WHERE IDKmenZbozi=' + tbl.FieldByName('IDnaradi').AsString; + cnt:= helUtils.getHeliosIntVal(Helios, 0, lSQL); + if (cnt=1) then + tbl.FieldByName('IDVyrCK').AsInteger:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT TOP(1) ID FROM ' + tblVyrCK + ' WHERE IDKmenZbozi=' + tbl.FieldByName('IDnaradi').AsString); + end; + + + lSQL:= 'SELECT k.RegCis, n.Naradi FROM ' + tblPrNVazby + ' n INNER JOIN ' + tblKZ + ' k ON (k.ID=n.Naradi) WHERE n.IDPrikaz='; + lSQL:= lSQL + idVPr.ToString + ' AND n.Doklad=' + dokl.ToString + ' AND k.ID IN (SELECT IDKmenZbozi FROM ' + tblSS + ' WHERE Mnozstvi>0) ORDER BY k.RegCis'; + with Helios.OpenSQL(lSQL) do + if (RecordCount=1) then + begin + tbl.FieldByName('Forma').AsString:= Trim(VarToStr(FieldValues(0))); + tbl.FieldByName('IDnaradi').AsString:= Trim(VarToStr(FieldValues(1))); + + if (tbl.FieldByName('IDVyrCS').AsInteger<=0) then + begin + lSQL:= 'SELECT ID, Nazev1 FROM ' + tblVyrCS + ' WHERE IDStavSkladu IN (SELECT ID FROM ' + tblSS + ' WHERE Mnozstvi>0 AND IDKmenZbozi='; + lSQL:= lSQL + tbl.FieldByName('IDnaradi').AsString + ')'; + with Helios.OpenSQL(lSQL) do + if (RecordCount=1) then + begin + tbl.FieldByName('IDVyrCS').AsString:= VarToStr(FieldValues(0)); + tbl.FieldByName('FormaSN').AsString:= VarToStr(FieldValues(1)); + tbl.FieldByName('IDVyrCK').AsInteger:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDVyrCK FROM ' + tblVyrCS + ' WHERE ID=' + tbl.FieldByName('IDVyrCS').AsString); + end; + end + else + tbl.FieldByName('FormaSN').AsString:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev1 FROM ' + tblVyrCS + ' WHERE ID=' + tbl.FieldByName('IDVyrCS').AsString); + end; + end; + + tbl.FieldByName('KsZmetky1').AsExtended:= 0; + tbl.FieldByName('KsZmetky2').AsExtended:= 0; + tbl.FieldByName('KsZmetky3').AsExtended:= 0; + tbl.FieldByName('KsVeForme').AsInteger:= StrToInt(VarToStr(FieldValues(7))); + + tbl.FieldByName('Zakazka').AsString:= VarToStr(FieldValues(11)); + tbl.Post; + Next; + end; + tbl.RecNo:= 1; + grd.Repaint; + end; + end; + edtCisZam.SetFocus; + end; + end; + + + + + procedure TformOdvLis.edtCisZamExit(Sender: TObject); + var c: integer; + begin + lblPrijmeni.Caption:= ''; + edtCisZam.Text:= StringReplace(Trim(edtCisZam.Text), ' ', '', [rfReplaceAll]); + edtCisZam.Text:= helUtils.StripChars(edtCisZam.Text, ['''', '"', '-', ';', ' ']); + if (edtCisZam.Text<>'') then + if TryStrToInt(edtCisZam.Text, c) then + begin + if (helUtils.HeliosExistsTest(Helios, tblCZam, 'Cislo=' + c.ToString)) then + begin + lblPrijmeni.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Prijmeni FROM ' + tblCZam + ' WHERE Cislo=' + c.ToString); + edtCisZam.Text:= StringOfChar('0', 6-Length(edtCisZam.Text)) + edtCisZam.Text; + edtVstriku.SetFocus; + end + else + begin + Helios.Error(#1'Zadan osobn slo nebylo nalezeno !'#1); + edtCisZam.SetFocus; + edtCisZam.SelectAll; + end; + end + else + begin + Helios.Error(#1'Zadan znaky nejsou slo'#1); + edtCisZam.SetFocus; + edtCisZam.SelectAll; + end; + end; + + + + + procedure TformOdvLis.edtVstrikuExit(Sender: TObject); + var cell: TGridCoord; + i: integer; + begin + if (grd.RowCount>0) then + begin + i:= tbl.RecNo; + grd.DataSource.DataSet.DisableControls; + tbl.First; + while not(tbl.Eof) do + begin + tbl.Edit; + tbl.FieldByName('PocetVstriku').AsInteger:= edtVstriku.IntValue; + tbl.Post; + tbl.Next; + end; + tbl.RecNo:= i; + grd.DataSource.DataSet.EnableControls; + grd.Refresh; + end; + end; + + + + + procedure TformOdvLis.FormClose(Sender: TObject; var Action: TCloseAction); + begin + if (tbl.Active) then + tbl.Close; + Action:= caFree; + end; + + + + + procedure TformOdvLis.FormShow(Sender: TObject); + var lSQL: string; + i, i2: integer; + begin + self.ParentWindow:= Helios.MainApplicationHandle; + self.Icon.Handle:= Helios.MainApplicationIconHandle; +{ + for i:=0 to Self.ComponentCount-1 do + begin + if (Self.Components[i] is TButton) then + begin + (Self.Components[i] as TButton).Font.Name:= Helios.Font; + (Self.Components[i] as TButton).Font.Height:= Helios.FontHeight; + end; + if (Self.Components[i] is TTB_3Button) then + begin +// (Self.Components[i] as TTB_3Button).Width:= 30; +// (Self.Components[i] as TTB_3Button).Height:= 30; + end; + end; +} + + lblVerze.Caption:= mVerze; +{ + Helios.ExecSQL('IF OBJECT_ID(N''dbo._temp_TabOdvodLis'') IS NOT NULL DELETE FROM dbo._temp_TabOdvodLis WHERE Autor=SUSER_SNAME()'); + Helios.ExecSQL('IF OBJECT_ID(N''dbo._temp_TabOdvodLisR'') IS NOT NULL DELETE FROM dbo._temp_TabOdvodLisR WHERE IDHlava NOT IN (SELECT ID FROM dbo._temp_TabOdvodLis)'); + Helios.ExecSQL('IF OBJECT_ID(N''dbo._temp_TabOdvodLis'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabOdvodLis) DROP TABLE dbo._temp_TabOdvodLis'); + Helios.ExecSQL('IF OBJECT_ID(N''dbo._temp_TabOdvodLisR'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabOdvodLisR) DROP TABLE dbo._temp_TabOdvodLisR'); +} + Helios.ExecSQL('IF OBJECT_ID(N''tempdb..#TabOdvodLis'') IS NOT NULL DROP TABLE #TabOdvodLis'); + Helios.ExecSQL('IF OBJECT_ID(N''tempdb..#TabOdvodLisR'') IS NOT NULL DROP TABLE #TabOdvodLisR'); + Helios.ExecSQL('IF OBJECT_ID(N''tempdb..#TabOdvodLisZavady'') IS NOT NULL DROP TABLE #TabOdvodLisZavady'); + + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabOdvodLis'') IS NULL CREATE TABLE #TabOdvodLis (ID INT IDENTITY(1,1) NOT NULL, IDPlan INT NOT NULL, CisZam INT NOT NULL,'; + lSQL:= lSQL +' PocetVstriku SMALLINT NOT NULL DEFAULT 0, DeviceID NVARCHAR(40) DEFAULT HOST_NAME(), Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME(),'; + lSQL:= lSQL + ' DatPorizeni DATETIME NOT NULL DEFAULT GETDATE())' + CRLF; + + lSQL:= lSQL + 'IF OBJECT_ID(N''tempdb..#TabOdvodLisR'') IS NULL CREATE TABLE #TabOdvodLisR (ID INT IDENTITY(1,1) NOT NULL, IDHlava INT NOT NULL, IDRadek INT,'; + lSQL:= lSQL + ' IDVyrCis INT, IDVyrCK INT, KsDobre NUMERIC(15,3) NOT NULL DEFAULT 0.0, KsVeForme SMALLINT DEFAULT 1, IDPrPostup INT, IDNaradi INT,'; + lSQL:= lSQL + ' FormaPouzita BIT DEFAULT 1, PocetVstriku SMALLINT DEFAULT 0, DeviceID NVARCHAR(40) DEFAULT HOST_NAME())' + CRLF; + + lSQL:= lSQL + 'IF OBJECT_ID(N''tempdb..#TabOdvodLisZavady'') IS NULL CREATE TABLE #TabOdvodLisZavady (ID INT IDENTITY(1,1) NOT NULL, IDHlava INT NOT NULL,'; + lSQL:= lSQL + ' IDRadek INT, IDPrPostup INT NOT NULL, IDZavady INT NOT NULL, Mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0.0, Autor NVARCHAR(80) DEFAULT SUSER_SNAME(),'; + lSQL:= lSQL + ' DeviceID NVARCHAR(40) DEFAULT HOST_NAME())'; + + if (jeTest) then + lSQL:= lSQL.Replace('#TabOdv', 'dbo._temp_TabOdv').Replace('tempdb..', ''); + + Helios.ExecSQL(lSQL); + + SetLength(zavady, 0); + lSQL:= 'SELECT TOP(3) z.kod, e._PopisEvidence, e._PoziceEvidence FROM ' + tblCZavadE + ' e INNER JOIN ' + tblCZavad + ' z ON (z.ID=e.ID)'; + lSQL:= lSQL + ' WHERE CHARINDEX(N''- VOSK'', CONVERT(nvarchar,Poznamka))>0 AND e._PoziceEvidence IS NOT NULL ORDER BY e._PoziceEvidence'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + SetLength(zavady, RecordCount); + i:= 0; + First; + while not(EOF) do + begin + zavady[i].kod:= VarToStr(FieldValues(0)); + zavady[i].popis:= VarToStr(FieldValues(1)); + zavady[i].poz:= StrToInt(VarToStr(FieldValues(2))); + Inc(i); + Next; + end; + end; + + if (Length(zavady)>0) then + begin + for i:=0 to Length(zavady)-1 do + begin + i2:= grd.Columns.ItemBy['colZmetky' + (i+1).ToString].Index; + grd.Columns.Item[i2].Header.Caption:= 'Z ' + zavady[i].popis; + grd.Columns.Item[i2].Enabled:= true; + end; + end; + grd.Repaint; + + end; + + + + procedure TformOdvLis.grdCellClick(Sender: TObject; ACol, ARow: Integer; Button: TMouseButton); + var lSQL, naradiIDcka: string; + idVPr, dokl: integer; + R: TRect; + begin + if (ACol=colForma.Index) then + begin + R:= view.GetCellRect(ACol, ARow); + R.Left:= R.Left + grd.Left; + R.Right:= R.Right + grd.Left; + R.Top:= R.Top + grd.Top; + R.Bottom:= R.Bottom + grd.Top; + with comboForma do + begin + Left:= R.Left + 1; + Top:= R.Top + 1; + Width:= (R.Right + 1) - R.Left; + Height:= (R.Bottom + 1) - R.Top + 3; + Visible:= true; + + if (grd.Cells[colIdPostup.Index, ARow]<>'') then + begin + idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDPrikaz FROM ' + tblPrPost + ' WHERE ID=' + grd.Cells[colIdPostup.Index, ARow]); + dokl:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT Doklad FROM ' + tblPrPost + ' WHERE ID=' + grd.Cells[colIdPostup.Index, ARow]); + if (idVPr>0) and (dokl>0) then + begin + lSQL:= 'SELECT k.RegCis, n.Naradi FROM ' + tblPrNVazby + ' n INNER JOIN ' + tblKZ + ' k ON (k.ID=n.Naradi) WHERE n.IDPrikaz='; + lSQL:= lSQL + idVPr.ToString + ' AND n.Doklad=' + dokl.ToString + ' ORDER BY k.RegCis'; + with Helios.OpenSQL(lSQL) do + begin + Items.Clear; + First; + while not(EOF) do + begin + lSQL:= Trim(VarToStr(FieldValues(0))); + if (lSQL<>'') then + Items.Add(lSQL); + Next; + end; + if (Items.Count=1) then + ItemIndex:= 0; + end; + end; + end; + SetFocus; + end; + end; + + if (ACol=colFormaSN.Index) and (grd.Cell[colIdNaradi.Index, ARow].AsInteger>0) then + begin + R:= view.GetCellRect(ACol, ARow); + R.Left:= R.Left + grd.Left; + R.Right:= R.Right + grd.Left; + R.Top:= R.Top + grd.Top; + R.Bottom:= R.Bottom + grd.Top; + with comboSN do + begin + Left:= R.Left + 1; + Top:= R.Top + 1; + Width:= (R.Right + 1) - R.Left; + Height:= (R.Bottom + 1) - R.Top + 3; + Visible:= True; + + lSQL:= 'SELECT Nazev1 FROM ' + tblVyrCK + ' WHERE IDKmenZbozi=' + grd.Cells[colIdNaradi.Index, ARow]; + with Helios.OpenSQL(lSQL) do + begin + Items.Clear; + First; + while not(EOF) do + begin + lSQL:= Trim(VarToStr(FieldValues(0))); + if (lSQL<>'') then + Items.Add(lSQL); + Next; + end; + if (Items.Count=1) then + ItemIndex:= 0; + end; + SetFocus; + end; + end; + + end; + + + + + procedure TformOdvLis.selBarcodeClick(Sender: TObject); + begin + edtBarcode.Text:= Trim(edtBarcode.Text); + oVar:= edtBarcode.Text; + bidPlan:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_PlanNasazeniLisu'''); + if (bidPlan>0) then + if Helios.Prenos(bidPlan, 'hvw_PlanNasazeniLisu.Barcode', oVar, 'hvw_PlanNasazeniLisu.Ukonceno=0', 'Vyberte pln', true) then + begin + edtBarcode.Text:= VarToStr(oVar); + edtBarcodeExit(Sender); + end; + edtCisZam.SetFocus; + end; + + + + + procedure TformOdvLis.selCisZamClick(Sender: TObject); + begin + if Helios.Prenos(bidCisZam, 'TabCisZam.Cislo', oVar, '', 'Vyberte zamstnance', true) then + begin + edtCisZam.Text:= VarToStr(oVar); + selCisZamExit(Sender); + end; + end; + + + + + procedure TformOdvLis.selCisZamExit(Sender: TObject); + begin + edtCisZam.Text:= helUtils.StripChars(edtCisZam.Text, ['''', '"', '-', ';', ' ']); + edtCisZamExit(Sender); + edtVstriku.SetFocus; + end; + + + + procedure TformOdvLis.tblAfterPost(DataSet: TDataSet); + var x: TField; + begin + if (Dataset.RecordCount=0) then + Exit; +{ + x:= Dataset.FieldByName('IDVyrCS'); + if (x.AsInteger>0) then + grd.Cells[colFormaSN.Index, tbl.RecNo-1]:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev1 FROM ' + tblVyrCS + ' WHERE ID=' + x.AsString); +} + end; + + + + + procedure TformOdvLis.colFormaPouzitaCheckedChanged(Sender: TObject; ACol, ARow: Integer); + var i: integer; + begin + if (grd.RowCount>=ARow+1) then + begin + if (grd.Cell[colFormaPouzita.Index, ARow].AsBoolean=false) then + begin + tbl.Edit; + tbl.FieldByName('PocetVstriku').AsInteger:= 0; + tbl.Post; + for i:=0 to grd.ColCount-1 do + begin + grd.Cell[i, ARow].Font.Style:= grd.Cell[i, ARow].Font.Style + [fsItalic]; + grd.Cell[i, ARow].Font.Color:= clRed; + end; + end + else + begin + tbl.Edit; + tbl.FieldByName('PocetVstriku').AsInteger:= edtVstriku.IntValue; + tbl.Post; + for i:=0 to grd.ColCount-1 do + begin + grd.Cell[i, ARow].Font.Style:= grd.Cell[i, ARow].Font.Style - [fsItalic]; + grd.Cell[i, ARow].Font.Color:= clBlack; + end; + end; + end; + grd.Refresh; + end; + + + + + procedure TformOdvLis.viewGetCellColor(Sender: TObject; ACol, ARow: Integer; var CellColor: TColor; State: TNxCellPaintingState); + begin + if (grd.RowCount>=ARow+1) then + begin + + if (ACol=colKsVeForme.Index) then + if (grd.Cells[ACol, ARow]='0') then + begin + CellColor:= clRed; + grd.Cell[ACol, ARow].Enabled:= true; + end + else + begin + // CellColor:= clWindow; + grd.Cell[ACol, ARow].Enabled:= false; + end; + + end; + + end; + +end. diff --git a/frmOdvLisX.dfm b/frmOdvLisX.dfm new file mode 100644 index 0000000..6e147d6 --- /dev/null +++ b/frmOdvLisX.dfm @@ -0,0 +1,766 @@ +object formOdvLisX: TformOdvLisX + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = ' Odv'#225'd'#283'ni vst'#345'ik'#367' na lisu' + ClientHeight = 613 + ClientWidth = 1487 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poOwnerFormCenter + OnClose = FormClose + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 25 + object lblZapisDat: TLabel + Left = 539 + Top = 570 + Width = 354 + Height = 25 + Alignment = taCenter + AutoSize = False + Caption = 'Prob'#237'h'#225' z'#225'pis dat...' + Font.Charset = DEFAULT_CHARSET + Font.Color = clRed + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + Visible = False + end + object Label1: TLabel + Left = 596 + Top = 123 + Width = 126 + Height = 25 + Caption = 'Po'#269'et vst'#345'ik'#367':' + end + object lblPrijmeni: TLabel + Left = 781 + Top = 79 + Width = 5 + Height = 19 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblPlan: TLabel + Left = 510 + Top = 79 + Width = 5 + Height = 19 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object Label2: TLabel + Left = 1182 + Top = 156 + Width = 267 + Height = 23 + Caption = '. . . . pro evidenci Zmetk'#367' . . . .' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [fsItalic] + ParentFont = False + Visible = False + end + object btnOK: TButton + Left = 523 + Top = 520 + Width = 116 + Height = 39 + Caption = 'OK' + TabOrder = 6 + OnClick = btnOKClick + end + object btnStorno: TButton + Left = 792 + Top = 520 + Width = 113 + Height = 39 + Caption = 'Storno' + TabOrder = 7 + OnClick = btnStornoClick + end + object edtBarcode: TLabeledEdit + Left = 510 + Top = 40 + Width = 143 + Height = 33 + Alignment = taCenter + EditLabel.Width = 125 + EditLabel.Height = 25 + EditLabel.Caption = #268'. k'#243'd pl'#225'nu:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + TabOrder = 0 + OnExit = edtBarcodeExit + end + object selBarcode: TButtonedEdit + Left = 652 + Top = 41 + Width = 31 + Height = 31 + Caption = '...' + TabOrder = 1 + OnClick = selBarcodeClick + end + object edtCisZam: TLabeledEdit + Left = 780 + Top = 40 + Width = 94 + Height = 33 + Alignment = taCenter + EditLabel.Width = 131 + EditLabel.Height = 25 + EditLabel.Caption = 'Os.'#269'. zam'#283'st.:' + NumbersOnly = True + TabOrder = 2 + OnExit = edtCisZamExit + end + object selCisZam: TButtonedEdit + Left = 873 + Top = 42 + Width = 31 + Height = 31 + Caption = '...' + TabOrder = 3 + OnClick = selCisZamClick + OnExit = selCisZamExit + end + object edtVstriku: TRzNumericEdit + Left = 728 + Top = 120 + Width = 65 + Height = 33 + Alignment = taCenter + TabOrder = 4 + OnExit = edtVstrikuExit + DisplayFormat = ',0;(,0)' + end + object grd: TNextDBGrid6 + Left = 3 + Top = 179 + Width = 1476 + Height = 316 + ParentColor = False + TabOrder = 5 + StyleOptions = [soNativeStyles, soVCLStyles] + ActiveView = view + ActiveViewIndex = 0 + Options = [goAutoHideScrollBars, goExitEndEditing, goResponsiveViews, goTabLeaveControl] + RowHeight = 30 + ScrollBars = [sbVertical] + SelectFullRow = True + Style = stModern + OnCellClick = grdCellClick + DataSource = ds + object view: TNxReportGridView6 + ColumnMoving = False + GridLines = True + HeaderHeight = 33 + OnGetCellColor = viewGetCellColor + end + object colRegCis: TNxDBTextColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Reg.'#269'.' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -21 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Header.Clickable = False + Index = 0 + Inserting = False + PlaceholderText = 'Text Text' + Position = 0 + Resizeable = False + Width = 140 + DataBinding.FieldName = 'RegCis' + end + object colZakazka: TNxDBTextColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Zak'#225'zka' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -21 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 1 + PlaceholderText = 'Text Text' + Position = 1 + Resizeable = False + Width = 140 + DataBinding.FieldName = 'Zakazka' + end + object colNazev: TNxDBTextColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Popis' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -21 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Header.Clickable = False + Index = 2 + Inserting = False + PlaceholderText = 'Text Text' + Position = 2 + Selectable = False + Width = 220 + DataBinding.FieldName = 'Nazev' + end + object colForma: TNxDBComboBoxColumn6 + Alignment = taCenter + Editing = True + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Forma' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -21 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 3 + PlaceholderText = 'Text Text' + Position = 3 + Resizeable = False + Width = 230 + AutoDropDown = True + ItemHeight = 25 + ItemsAlignment = taCenter + end + object colFormaSN: TNxDBTextColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'V'#253'r.'#269#237'slo' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -21 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 4 + PlaceholderText = 'Text Text' + Position = 4 + Width = 230 + DataBinding.FieldName = 'FormaSN' + end + object colKsVeForme: TNxDBNumberColumn6 + Alignment = taCenter + DrawingOptions = [doBackground, doContent, doCustom] + Editing = True + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Ks/forma' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -19 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 5 + Inserting = False + ParentColor = False + PlaceholderText = '1742' + Position = 5 + Resizeable = False + FormatMask = '#,##0' + NumericEditOptions = [] + Precision = 0 + Increment = 1.000000000000000000 + SpinButtons = False + DataBinding.FieldName = 'KsVeForme' + InsertString = '0' + end + object colKsDobre: TNxDBNumberColumn6 + Alignment = taCenter + Color = 9894289 + Editing = True + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '0' + Header.Alignment = taCenter + Header.Caption = 'Dobr'#233' ks' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -21 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Header.Clickable = False + Index = 6 + Inserting = False + ParentColor = False + PlaceholderText = '1742' + Position = 6 + Resizeable = False + Width = 100 + FormatMask = '#,##0' + NumericEditOptions = [] + Precision = 0 + Increment = 1.000000000000000000 + SpinButtons = False + DataBinding.FieldName = 'KsDobre' + InsertString = '0' + end + object colZmetky1: TNxDBNumberColumn6 + Alignment = taCenter + Editing = True + Enabled = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Z' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -19 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 7 + Inserting = False + ParentColor = False + PlaceholderText = '1742' + Position = 7 + Resizeable = False + Width = 110 + FormatMask = '#,##0' + NumericEditOptions = [] + Precision = 0 + Increment = 1.000000000000000000 + SpinButtons = False + DataBinding.FieldName = 'KsZmetky1' + InsertString = '0' + end + object colZmetky2: TNxDBNumberColumn6 + Alignment = taCenter + Editing = True + Enabled = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Z' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -19 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 8 + Inserting = False + ParentColor = False + PlaceholderText = '1742' + Position = 8 + Resizeable = False + Width = 110 + FormatMask = '#,##0' + NumericEditOptions = [] + Precision = 0 + Increment = 1.000000000000000000 + SpinButtons = False + DataBinding.FieldName = 'KsZmetky2' + InsertString = '0' + end + object colZmetky3: TNxDBNumberColumn6 + Alignment = taCenter + Editing = True + Enabled = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Z' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -19 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 9 + Inserting = False + ParentColor = False + PlaceholderText = '1742' + Position = 9 + Resizeable = False + Width = 110 + FormatMask = '#,##0' + NumericEditOptions = [] + Precision = 0 + Increment = 1.000000000000000000 + SpinButtons = False + DataBinding.FieldName = 'KsZmetky3' + InsertString = '0' + end + end + object grdX: TXDBGrid + Left = 3 + Top = 439 + Width = 1476 + Height = 120 + DataSource = ds + Enabled = False + GridStyle.VisualStyle = vsStandard + HeaderColor = clTeal + Options = [dgTitles, dgColumnResize, dgColLines, dgRowLines, dgRowSelect, dgConfirmDelete, dgCancelOnExit, dgExtendedSelect, dgInternalSelect, dgRowScroll, dgHotButtons, dgTitleButtons, dgTitleHeaders, dgTitleWidthOff, dgMarkerAutoAlign, dgMarkerAutoToggle] + TabOrder = 8 + Columns = < + item + Alignment = taCenter + Expanded = False + FieldName = 'RegCis' + Title.Alignment = taCenter + Title.Caption = 'Reg.'#269'.' + TotalFields.Visible = False + Visible = True + Width = 166 + end + item + Alignment = taCenter + Expanded = False + FieldName = 'Zakazka' + Title.Alignment = taCenter + Title.Caption = 'Zak'#225'zka' + TotalFields.Visible = False + Visible = True + Width = 123 + end + item + Expanded = False + FieldName = 'Nazev' + Title.Alignment = taCenter + Title.Caption = 'Popis' + TotalFields.Visible = False + Visible = True + Width = 227 + end + item + Alignment = taCenter + Expanded = False + FieldName = 'Forma' + LookupDataSet = tblFormaX + LookupKeyField = 'RegCis' + LookupListFields = 'Forma' + TotalFields.Visible = False + Visible = True + Width = 155 + end + item + Alignment = taCenter + Expanded = False + FieldName = 'FormaSN' + Title.Caption = 'V'#253'r.'#269#237'slo' + TotalFields.Visible = False + Visible = True + Width = 158 + end + item + Alignment = taCenter + Expanded = False + FieldName = 'KsVeForme' + Title.Caption = 'Ks/forma' + TotalFields.Visible = False + Visible = True + Width = 89 + end + item + Alignment = taCenter + Expanded = False + FieldName = 'KsDobre' + Title.Caption = 'Dobr'#233' ks' + Visible = True + Width = 100 + end + item + Alignment = taCenter + Expanded = False + FieldName = 'KsZmetky1' + Title.Caption = 'Z' + Visible = True + Width = 115 + end + item + Alignment = taCenter + Expanded = False + FieldName = 'KsZmetky2' + Title.Caption = 'Z' + Visible = True + end + item + Alignment = taCenter + Expanded = False + FieldName = 'KsZmetky3' + Title.Caption = 'Z' + Visible = True + Width = 103 + end> + end + object tbl: TVirtualTable + FieldDefs = < + item + Name = 'IDPostup' + DataType = ftInteger + end + item + Name = 'RegCis' + DataType = ftString + Size = 20 + end + item + Name = 'Nazev' + DataType = ftString + Size = 100 + end + item + Name = 'KsDobre' + DataType = ftSmallint + end + item + Name = 'IDVyrCS' + DataType = ftInteger + end + item + Name = 'FormaSN' + DataType = ftString + Size = 30 + end + item + Name = 'IDradek' + DataType = ftInteger + end + item + Name = 'IDnaradi' + DataType = ftInteger + end + item + Name = 'KsZmetky1' + DataType = ftInteger + end + item + Name = 'KsZmetky2' + DataType = ftInteger + end + item + Name = 'KsZmetky3' + DataType = ftInteger + end + item + Name = 'KsVeForme' + DataType = ftInteger + end + item + Name = 'Forma' + DataType = ftString + Size = 30 + end> + Left = 124 + Top = 107 + Data = { + 04000D0008004944506F73747570030000000000000006005265674369730100 + 14000000000005004E617A6576010064000000000007004B73446F6272650200 + 00000000000007004944567972435303000000000000000700466F726D61534E + 01001E000000000007004944726164656B0300000000000000080049446E6172 + 616469030000000000000009004B735A6D65746B793103000000000000000900 + 4B735A6D65746B7932030000000000000009004B735A6D65746B793303000000 + 0000000009004B735665466F726D6503000000000000000500466F726D610100 + 1E0000000000000000000000} + object tblIDPrPostup: TIntegerField + FieldName = 'IDPostup' + Visible = False + end + object tblRegCis: TStringField + FieldName = 'RegCis' + end + object tblNazev: TStringField + FieldName = 'Nazev' + Size = 100 + end + object tblKsDobre: TSmallintField + FieldName = 'KsDobre' + end + object tblIDVyrCS: TIntegerField + FieldName = 'IDVyrCS' + Visible = False + end + object tblFormaSN: TStringField + FieldName = 'FormaSN' + Size = 30 + end + object tblIDradek: TIntegerField + FieldName = 'IDradek' + Visible = False + end + object tblIDnaradi: TIntegerField + FieldName = 'IDnaradi' + Visible = False + end + object tblKsZmetky1: TIntegerField + FieldName = 'KsZmetky1' + end + object tblKsZmetky2: TIntegerField + FieldName = 'KsZmetky2' + end + object tblKsZmetky3: TIntegerField + FieldName = 'KsZmetky3' + end + object tblKsNaPlate: TIntegerField + FieldName = 'KsVeForme' + end + object tblForma: TStringField + FieldName = 'Forma' + LookupKeyFields = 'RegCis' + LookupResultField = 'Forma' + Size = 30 + end + object tblcolZakazka: TStringField + FieldName = 'Zakazka' + Size = 15 + end + end + object ds: TDataSource + DataSet = tbl + Left = 73 + Top = 107 + end + object dsForma: TDataSource + DataSet = tblFormaX + Left = 196 + Top = 110 + end + object tblFormaX: TVirtualTable + Left = 252 + Top = 111 + Data = {04000000000000000000} + object tblFormaXRegCis: TStringField + FieldName = 'RegCis' + Size = 30 + end + object tblFormaXForma: TStringField + FieldName = 'Forma' + Size = 30 + end + end +end diff --git a/frmOdvLisX.pas b/frmOdvLisX.pas new file mode 100644 index 0000000..fbc0e55 --- /dev/null +++ b/frmOdvLisX.pas @@ -0,0 +1,458 @@ +unit frmOdvLisX; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, System.StrUtils, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, RzEdit, TBPackageU, ddPlugin_TLB, Vcl.ExtCtrls, + Vcl.ComCtrls, Data.DB, Vcl.Grids, Vcl.DBGrids, VirtualDataSet, MemDS, VirtualTable, NxGridView6, NxColumns6, + NxControls6, NxCustomGrid6, NxTypes6, NxVirtualGrid6, NxDBCells6, NxDBGrid6, NxDBColumns6, NxIntf6, NxEdit6, + Vcl.Menus, XDBGrids; + +const + tblPlan = '[dbo].[_hdc_TabPlanNasazeniLisu]'; + tblPlanR = '[dbo].[_hdc_TabPlanNasazeniLisuR]'; + tblOdlitky = '[dbo].[_hdc_TabOdlitky]'; + +type + TZavady = record + poz: integer; + kod: string; + popis: string; + end; + + TformOdvLisX = class(TForm) + btnOK: TButton; + btnStorno: TButton; + lblZapisDat: TLabel; + edtBarcode: TLabeledEdit; + selBarcode: TButtonedEdit; + edtCisZam: TLabeledEdit; + selCisZam: TButtonedEdit; + edtVstriku: TRzNumericEdit; + Label1: TLabel; + tbl: TVirtualTable; + ds: TDataSource; + grd: TNextDBGrid6; + view: TNxReportGridView6; + colRegCis: TNxDBTextColumn6; + colNazev: TNxDBTextColumn6; + colKsDobre: TNxDBNumberColumn6; + tblIDPrPostup: TIntegerField; + tblRegCis: TStringField; + tblNazev: TStringField; + tblKsDobre: TSmallintField; + lblPrijmeni: TLabel; + lblPlan: TLabel; + tblIDVyrCS: TIntegerField; + tblFormaSN: TStringField; + tblIDradek: TIntegerField; + tblIDnaradi: TIntegerField; + tblKsZmetky1: TIntegerField; + tblKsZmetky2: TIntegerField; + tblKsZmetky3: TIntegerField; + tblKsNaPlate: TIntegerField; + colFormaSN: TNxDBTextColumn6; + colZmetky1: TNxDBNumberColumn6; + colZmetky2: TNxDBNumberColumn6; + colZmetky3: TNxDBNumberColumn6; + colKsVeForme: TNxDBNumberColumn6; + Label2: TLabel; + tblForma: TStringField; + tblcolZakazka: TStringField; + colZakazka: TNxDBTextColumn6; + dsForma: TDataSource; + tblFormaX: TVirtualTable; + tblFormaXRegCis: TStringField; + tblFormaXForma: TStringField; + colForma: TNxDBComboBoxColumn6; + grdX: TXDBGrid; + procedure FormShow(Sender: TObject); + procedure btnStornoClick(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure btnOKClick(Sender: TObject); + procedure edtBarcodeExit(Sender: TObject); + procedure selBarcodeClick(Sender: TObject); + procedure selCisZamClick(Sender: TObject); + procedure selCisZamExit(Sender: TObject); + procedure edtCisZamExit(Sender: TObject); + procedure viewGetCellColor(Sender: TObject; ACol, ARow: Integer; + var CellColor: TColor; State: TNxCellPaintingState); + procedure edtVstrikuExit(Sender: TObject); + procedure colFormaSetCell(Sender: TObject; ACol, ARow: Integer; + Cell: INxBaseCell); + procedure grdCellClick(Sender: TObject; ACol, ARow: Integer; + Button: TMouseButton); + private + public + Helios: IHelios; + jeTest: Boolean; + end; + +var + formOdvLis: TformOdvLisX; + idPlan, bidPlan: integer; + oVar: OleVariant; + zavady: TArray; + +implementation +uses System.DateUtils, helUtils; +{$R *.dfm} + + + procedure TformOdvLisX.btnOKClick(Sender: TObject); + var lSQL, idcko: string; + begin + lblZapisDat.Visible:= true; + Self.Repaint; + btnOK.Enabled:= false; + btnStorno.Enabled:= false; + + if (tbl.RecordCount>0) then + begin + lSQL:= 'INSERT #TabOdvodLis (IDPlan, CisZam, PocetVstriku) VALUES (' + idPlan.ToString + ', ' + edtCisZam.Text + ', '; + lSQL:= lSQL + StringReplace(FloatToStr(edtVstriku.Value), ',', '.', [rfReplaceAll]) + ')' + CRLF + 'SELECT SCOPE_IDENTITY()'; + if (jeTest) then + begin + lSQL:= StringReplace(lSQL, '#TabOdv', 'dbo._temp_TabOdv', [rfReplaceAll]); +// lSQL:= StringReplace(lSQL, 'tempdb..', '', [rfReplaceAll]); + end; + + with Helios.OpenSQL(lSQL) do + idcko:= VarToStr(FieldValues(0)); + + tbl.First; + while not(tbl.Eof) do + begin + lSQL:= 'INSERT #TabOdvodLisR (IDHlava, IDRadek, IDVyrCis, KsDobre, KsZmetky1, KodZav1, KsZmetky2, KodZav2, KsZmetky3, KodZav3, KsVeForme, IDPrPostup) VALUES ('; + lSQL:= lSQL + idcko + ', ' + tbl.FieldByName('IDradek').AsString; + lSQL:= lSQL + ', NULL'; // IDVyrCis + lSQL:= lSQL + ', ' + StringReplace(tbl.FieldByName('KsDobre').AsString, '', '', [rfReplaceAll]); + lSQL:= lSQL + ', ' + StringReplace(tbl.FieldByName('KsZmetky1').AsString, '', '', [rfReplaceAll]) + ', N' + QuotedStr(IfThen(Length(zavady)>0, zavady[0].kod, '')); + lSQL:= lSQL + ', ' + StringReplace(tbl.FieldByName('KsZmetky2').AsString, '', '', [rfReplaceAll]) + ', N' + QuotedStr(IfThen(Length(zavady)>1, zavady[1].kod, '')); + lSQL:= lSQL + ', ' + StringReplace(tbl.FieldByName('KsZmetky3').AsString, '', '', [rfReplaceAll]) + ', N' + QuotedStr(IfThen(Length(zavady)>2, zavady[2].kod, '')); + lSQL:= lSQL + ', ' + StringReplace(tbl.FieldByName('KsVeForme').AsString, '', '', [rfReplaceAll]) + ', ' + tbl.FieldByName('IDPostup').AsString + ')'; + if (jeTest) then + begin + lSQL:= StringReplace(lSQL, '#TabOdv', 'dbo._temp_TabOdv', [rfReplaceAll]); +// lSQL:= StringReplace(lSQL, 'tempdb..', '', [rfReplaceAll]); + end; + Helios.ExecSQL(lSQL); + tbl.Next; + end; + end; + + if not(jeTest) then + Helios.ExecSQL('IF OBJECT_ID(''dbo.ep_Vosk_PlanLisu_Odvod'') IS NOT NULL EXEC dbo.ep_Vosk_PlanLisu_Odvod'); + + lblZapisDat.Visible:= false; + Self.Repaint; + btnOK.Enabled:= true; + btnStorno.Enabled:= true; + Close; + end; + + + + + procedure TformOdvLisX.btnStornoClick(Sender: TObject); + begin + Close; + end; + + + + + procedure TformOdvLisX.colFormaSetCell(Sender: TObject; ACol, ARow: Integer; Cell: INxBaseCell); + var lSQL: string; + begin + end; + + + + + procedure TformOdvLisX.edtBarcodeExit(Sender: TObject); + var lSQL, formy, sncka, nDokl, sVPr: string; + idPrikaz: integer; + begin + edtBarcode.Text:= Trim(edtBarcode.Text); + edtBarcode.Text:= helUtils.StripChars(edtBarcode.Text, ['''', '"', '-', ';', ' ']); + if (edtBarcode.Text<>'') then + begin + lblPlan.Caption:= ''; + idPlan:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblPlan + ' WHERE BarCode=N' + QuotedStr(edtBarcode.Text)); + if (idPlan>0) then + begin + if not(tblFormaX.Active) then + tblFormaX.Open; + tblFormaX.Clear; + + lSQL:= 'SELECT Lis + N'' / '' + CONVERT(nvarchar, DATEPART(day,Datum)) + N''.'' + CONVERT(nvarchar, DATEPART(month,Datum)) + N''.'''; + lSQL:= lSQL + ' + CONVERT(nvarchar, DATEPART(year,Datum)) + N'' / '' + Smena FROM ' + tblPlan + ' WHERE ID=' + idPlan.ToString; + lblPlan.Caption:= helUtils.getHeliosStrVal(Helios, '', lSQL); + lSQL:= 'SELECT r.IDPrPostup, k.RegCis, k.Nazev1, r.IDvyrcis, vc.Nazev1, r.ID, nv.Naradi, ISNULL(o.KsVeForme,0), nvk.RegCis, nv.Doklad, vp.ID, z.CisloZakazky FROM ' + tblPlanR; + lSQL:= lSQL + ' r INNER JOIN ' + tblPrPost + ' p ON (p.ID=r.IDPrPostup) INNER JOIN ' + tblPrikaz + ' vp ON (p.IDPrikaz=vp.ID) INNER JOIN ' + tblKZ; + lSQL:= lSQL + ' k ON (k.ID=vp.IdTabKmen) LEFT JOIN ' + tblOdlitky + ' o ON (o.Odlitek=k.RegCis) LEFT JOIN ' + tblPrNVazby; + lSQL:= lSQL + ' nv ON (p.IDPrikaz=nv.IDPrikaz AND p.Doklad=nv.Doklad) LEFT JOIN dbo.TabVyrCS vc ON (vc.ID=r.IDvyrcis) LEFT JOIN ' + tblKZ; + lSQL:= lSQL + ' nvk ON (nv.Naradi=nvk.Id) LEFT JOIN ' + tblZak + ' z ON (z.ID=vp.IDZakazka) WHERE r.IDHlava=' + idPlan.ToString + ' ORDER BY r.ID'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + if not(tbl.Active) then + tbl.Open; + tbl.Edit; + tbl.Clear; //Fields; + First; + while not(Eof) do + begin + tbl.Append; + tbl.FieldByName('IDPostup').AsString:= VarToStr(FieldValues(0)); + tbl.FieldByName('RegCis').AsString:= VarToStr(FieldValues(1)); + tbl.FieldByName('Nazev').AsString:= VarToStr(FieldValues(2)); + tbl.FieldByName('KsDobre').AsExtended:= 0; + tbl.FieldByName('IDVyrCS').AsInteger:= StrToInt(IfThen(VarToStr(FieldValues(3))='', '-1', VarToStr(FieldValues(3)))); + tbl.FieldByName('IDradek').AsInteger:= StrToInt(VarToStr(FieldValues(5))); + tbl.FieldByName('IDnaradi').AsInteger:= StrToInt(IfThen(VarToStr(FieldValues(6))='', '-1', VarToStr(FieldValues(6)))); + + + tbl.FieldByName('Forma').AsString:= tbl.FieldByName('RegCis').AsString; //VarToStr(FieldValues(8)); + tblFormaX.Append; + tblFormaX.FieldByName('RegCis').AsString:= tbl.FieldByName('RegCis').AsString; + tblFormaX.FieldByName('Forma').AsString:= 'Forma1'; + tblFormaX.Post; + + tblFormaX.Append; + tblFormaX.FieldByName('RegCis').AsString:= tbl.FieldByName('RegCis').AsString; + tblFormaX.FieldByName('Forma').AsString:= 'Forma2'; + tblFormaX.Post; + + sncka:= ''; + nDokl:= VarToStr(FieldValues(9)); + sVPr:= VarToStr(FieldValues(10)); + if (nDokl<>'') then + begin + lSQL:= 'SELECT STRING_AGG(ne._VyrobniCislo, N'','') FROM ' + tblPrNVazby + ' n INNER JOIN ' + tblPrNVazbyE + ' ne ON (ne.ID=n.ID) WHERE n.Doklad='; + lSQL:= lSQL + nDokl + ' AND n.IDPrikaz=' + sVPr; + sncka:= helUtils.getHeliosStrVal(Helios, '', lSQL); + end; + + tbl.FieldByName('FormaSN').AsString:= VarToStr(FieldValues(4)); + if (tbl.FieldByName('FormaSN').AsString='') and (tbl.FieldByName('IDnaradi').AsInteger>0) then + tbl.FieldByName('FormaSN').AsString:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev1 FROM ' + tblKZ + ' WHERE ID=' + tbl.FieldByName('IDnaradi').AsInteger.ToString); + tbl.FieldByName('KsZmetky1').AsExtended:= 0; + tbl.FieldByName('KsZmetky2').AsExtended:= 0; + tbl.FieldByName('KsZmetky3').AsExtended:= 0; + tbl.FieldByName('KsVeForme').AsInteger:= StrToInt(VarToStr(FieldValues(7))); + + tbl.FieldByName('Zakazka').AsString:= VarToStr(FieldValues(11)); + tbl.Post; + Next; + end; + tbl.RecNo:= 1; + grd.Repaint; + end; + end; + edtCisZam.SetFocus; + end; + end; + + + + + procedure TformOdvLisX.edtCisZamExit(Sender: TObject); + var c: integer; + begin + lblPrijmeni.Caption:= ''; + edtCisZam.Text:= Trim(edtCisZam.Text); + edtCisZam.Text:= helUtils.StripChars(edtCisZam.Text, ['''', '"', '-', ';', ' ']); + if (edtCisZam.Text<>'') then + if TryStrToInt(edtCisZam.Text, c) then + begin + if (helUtils.HeliosExistsTest(Helios, tblCZam, 'Cislo=' + c.ToString)) then + begin + lblPrijmeni.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Prijmeni FROM ' + tblCZam + ' WHERE Cislo=' + c.ToString); + edtCisZam.Text:= StringOfChar('0', 6-Length(edtCisZam.Text)) + edtCisZam.Text; + edtVstriku.SetFocus; + end + else + begin + Helios.Error(#1'Zadan osobn slo nebylo nalezeno !'#1); + edtCisZam.SetFocus; + edtCisZam.SelectAll; + end; + end + else + begin + Helios.Error(#1'Zadan znaky nejsou slo'#1); + edtCisZam.SetFocus; + edtCisZam.SelectAll; + end; + end; + + + + + procedure TformOdvLisX.edtVstrikuExit(Sender: TObject); + var cell: TGridCoord; + begin + if (grd.RowCount>0) then + begin + end; + end; + + + + + procedure TformOdvLisX.FormClose(Sender: TObject; var Action: TCloseAction); + begin + if (tbl.Active) then + tbl.Close; + Action:= caFree; + end; + + + + + procedure TformOdvLisX.FormShow(Sender: TObject); + var lSQL: string; + i, i2: integer; + begin + self.ParentWindow:= Helios.MainApplicationHandle; + self.Icon.Handle:= Helios.MainApplicationIconHandle; + for i:=0 to Self.ComponentCount-1 do + begin + if (Self.Components[i] is TButton) then + begin + (Self.Components[i] as TButton).Font.Name:= Helios.Font; + (Self.Components[i] as TButton).Font.Height:= Helios.FontHeight; + end; + if (Self.Components[i] is TButtonedEdit) then + begin +// (Self.Components[i] as TTB_3Button).Width:= 30; +// (Self.Components[i] as TTB_3Button).Height:= 30; + end; + end; + + Helios.ExecSQL('IF OBJECT_ID(N''dbo._temp_TabOdvodLis'') IS NOT NULL DELETE FROM dbo._temp_TabOdvodLis WHERE Autor=SUSER_SNAME()'); + Helios.ExecSQL('IF OBJECT_ID(N''dbo._temp_TabOdvodLisR'') IS NOT NULL DELETE FROM dbo._temp_TabOdvodLisR WHERE IDHlava NOT IN (SELECT ID FROM dbo._temp_TabOdvodLis)'); + Helios.ExecSQL('IF OBJECT_ID(N''dbo._temp_TabOdvodLis'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabOdvodLis) DROP TABLE dbo._temp_TabOdvodLis'); + Helios.ExecSQL('IF OBJECT_ID(N''dbo._temp_TabOdvodLisR'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabOdvodLisR) DROP TABLE dbo._temp_TabOdvodLisR'); + + Helios.ExecSQL('IF OBJECT_ID(N''tempdb..#TabOdvodLis'') IS NOT NULL DROP TABLE #TabOdvodLis'); + Helios.ExecSQL('IF OBJECT_ID(N''tempdb..#TabOdvodLisR'') IS NOT NULL DROP TABLE #TabOdvodLisR'); + + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabOdvodLis'') IS NULL CREATE TABLE #TabOdvodLis (ID INT IDENTITY(1,1) NOT NULL, IDPlan INT NOT NULL, CisZam INT NOT NULL,'; + lSQL:= lSQL +' PocetVstriku SMALLINT NOT NULL DEFAULT 0, Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME())' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''tempdb..#TabOdvodLisR'') IS NULL CREATE TABLE #TabOdvodLisR (IDHlava INT NOT NULL, IDRadek INT, KsDobre SMALLINT NOT NULL DEFAULT 0,'; + lSQL:= lSQL + ' IDVyrCis INT, IDNaradi INT, IDPrPostup INT, KsZmetky1 INT NOT NULL DEFAULT 0, KodZav1 NVARCHAR(15) DEFAULT N'''', KsZmetky2 INT NOT NULL DEFAULT 0,'; + lSQL:= lSQL + ' KodZav2 NVARCHAR(15) DEFAULT N'''', KsZmetky3 INT NOT NULL DEFAULT 0, KodZav3 NVARCHAR(15) DEFAULT N'''', KsVeForme SMALLINT DEFAULT 1,'; + lSQL:= lSQL + ' FormaSN NVARCHAR(100) DEFAULT N'''')'; + if (jeTest) then + begin + lSQL:= StringReplace(lSQL, '#TabOdv', 'dbo._temp_TabOdv', [rfReplaceAll]); + lSQL:= StringReplace(lSQL, 'tempdb..', '', [rfReplaceAll]); + end; + + Helios.ExecSQL(lSQL); + + SetLength(zavady, 0); + lSQL:= 'SELECT TOP(3) z.kod, e._PopisEvidence, e._PoziceEvidence FROM ' + tblCZavadE + ' e INNER JOIN ' + tblCZavad + ' z ON (z.ID=e.ID)'; + lSQL:= lSQL + ' WHERE CHARINDEX(N''- VOSK'', CONVERT(nvarchar,Poznamka))>0 AND e._PoziceEvidence IS NOT NULL ORDER BY e._PoziceEvidence'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + SetLength(zavady, RecordCount); + i:= 0; + First; + while not(EOF) do + begin + zavady[i].kod:= VarToStr(FieldValues(0)); + zavady[i].popis:= VarToStr(FieldValues(1)); + zavady[i].poz:= StrToInt(VarToStr(FieldValues(2))); + Inc(i); + Next; + end; + end; + + if (Length(zavady)>0) then + begin + for i:=0 to Length(zavady)-1 do + begin + i2:= grd.Columns.ItemBy['colZmetky' + (i+1).ToString].Index; + grd.Columns.Item[i2].Header.Caption:= 'Z ' + zavady[i].popis; + grd.Columns.Item[i2].Enabled:= true; + end; + end; + grd.Repaint; + + end; + + + + procedure TformOdvLisX.grdCellClick(Sender: TObject; ACol, ARow: Integer; Button: TMouseButton); + var lSQL: string; + begin + if (ACol=colForma.Index) then + begin + + end; + end; + + + + + procedure TformOdvLisX.selBarcodeClick(Sender: TObject); + begin + edtBarcode.Text:= Trim(edtBarcode.Text); + oVar:= edtBarcode.Text; + bidPlan:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_PlanNasazeniLisu'''); + if (bidPlan>0) then + if Helios.Prenos(bidPlan, 'hvw_PlanNasazeniLisu.Barcode', oVar, 'hvw_PlanNasazeniLisu.Ukonceno=0', 'Vyberte pln', true) then + begin + edtBarcode.Text:= VarToStr(oVar); + edtBarcodeExit(Sender); + end; + edtCisZam.SetFocus; + end; + + + + + procedure TformOdvLisX.selCisZamClick(Sender: TObject); + begin + if Helios.Prenos(bidCisZam, 'TabCisZam.Cislo', oVar, '', 'Vyberte zamstnance', true) then + begin + edtCisZam.Text:= VarToStr(oVar); + selCisZamExit(Sender); + end; + end; + + + + + procedure TformOdvLisX.selCisZamExit(Sender: TObject); + begin + edtCisZam.Text:= helUtils.StripChars(edtCisZam.Text, ['''', '"', '-', ';', ' ']); + edtCisZamExit(Sender); + edtVstriku.SetFocus; + end; + + + + procedure TformOdvLisX.viewGetCellColor(Sender: TObject; ACol, ARow: Integer; var CellColor: TColor; State: TNxCellPaintingState); + begin + if (grd.RowCount>=ARow+1) then + if (ACol=colKsVeForme.Index) then + if (grd.Cells[ACol, ARow]='0') then + begin + CellColor:= clRed; + grd.Cell[ACol, ARow].Enabled:= true; + end + else + begin +// CellColor:= clWindow; + grd.Cell[ACol, ARow].Enabled:= false; + end; + end; + +end. diff --git a/frmOdvTavby.dfm b/frmOdvTavby.dfm new file mode 100644 index 0000000..a5fad39 --- /dev/null +++ b/frmOdvTavby.dfm @@ -0,0 +1,1006 @@ +object formOdvTavby: TformOdvTavby + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = ' Odv'#225'd'#283'ni strome'#269'k'#367' / tavby' + ClientHeight = 732 + ClientWidth = 504 + 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 + DesignSize = ( + 504 + 732) + TextHeight = 25 + object lblPopis: TLabel + Left = 11 + Top = 12 + Width = 476 + Height = 25 + Alignment = taCenter + AutoSize = False + end + object lblPrikaz: TLabel + Left = 11 + Top = 47 + Width = 476 + Height = 25 + Alignment = taCenter + AutoSize = False + end + object lblZapisDat: TLabel + Left = 8 + Top = 699 + Width = 480 + Height = 25 + Alignment = taCenter + Anchors = [akLeft, akRight, akBottom] + AutoSize = False + Caption = 'Prob'#237'h'#225' z'#225'pis dat...' + Font.Charset = DEFAULT_CHARSET + Font.Color = clRed + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + Visible = False + ExplicitTop = 579 + end + object btnOK: TButton + Left = 198 + Top = 637 + Width = 116 + Height = 39 + Anchors = [] + Caption = 'OK' + TabOrder = 1 + OnClick = btnOKClick + end + object btnStorno: TButton + Left = 374 + Top = 637 + Width = 113 + Height = 39 + Anchors = [akRight] + Caption = 'Storno' + TabOrder = 2 + OnClick = btnStornoClick + end + object pgCtrl: TPageControl + Left = 20 + Top = 87 + Width = 467 + Height = 540 + ActivePage = shOdvStr + Anchors = [akLeft, akTop, akRight] + TabOrder = 3 + object shTavba: TTabSheet + Caption = ' Tavba ' + object Label1: TLabel + Left = 119 + Top = 277 + Width = 168 + Height = 25 + Caption = 'Po'#269'et strome'#269'k'#367' :' + end + object lblPocetStr: TLabel + Left = 322 + Top = 306 + Width = 7 + Height = 25 + end + object lblVyrOp: TLabel + Left = 322 + Top = 252 + Width = 7 + Height = 25 + end + object lblKsStrom: TLabel + Left = 207 + Top = 307 + Width = 7 + Height = 25 + end + object lblFormir: TLabel + Left = 119 + Top = 254 + Width = 4 + Height = 16 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblLidiZTavby: TLabel + Left = 119 + Top = 169 + Width = 4 + Height = 16 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object edtPocetStr: TRzNumericEdit + Left = 119 + Top = 306 + Width = 52 + Height = 33 + Alignment = taCenter + MaxLength = 3 + TabOrder = 6 + OnChange = edtPocetStrChange + OnExit = edtPocetStrExit + DisplayFormat = ',0;(,0)' + end + object edtTavba: TLabeledEdit + Left = 119 + Top = 133 + Width = 139 + Height = 33 + Alignment = taCenter + EditLabel.Width = 70 + EditLabel.Height = 25 + EditLabel.Caption = 'Tavba :' + ReadOnly = True + TabOrder = 2 + Text = '' + OnExit = edtTavbaExit + end + object edtOpTavba: TLabeledEdit + Left = 119 + Top = 68 + Width = 139 + Height = 33 + Alignment = taCenter + EditLabel.Width = 198 + EditLabel.Height = 25 + EditLabel.Caption = 'Operace ODL'#201'V'#193'N'#205' :' + TabOrder = 0 + Text = '' + OnExit = edtOpTavbaExit + end + object selTavba: TButtonedEdit + Left = 258 + Top = 133 + Width = 34 + Height = 33 + TabOrder = 3 + OnClick = selTavbaClick + end + object selOpTavba: TButtonedEdit + Left = 258 + Top = 68 + Width = 34 + Height = 33 + TabOrder = 1 + OnClick = selOpTavbaClick + end + object edtFormir: TLabeledEdit + Left = 119 + Top = 217 + Width = 139 + Height = 33 + Alignment = taCenter + EditLabel.Width = 133 + EditLabel.Height = 25 + EditLabel.Caption = 'Form'#237#345' (os.'#269'.):' + TabOrder = 4 + Text = '' + OnExit = edtFormirExit + end + object selFormir: TButtonedEdit + Left = 258 + Top = 217 + Width = 34 + Height = 33 + TabOrder = 5 + OnClick = selFormirClick + end + end + object shVibrovani: TTabSheet + Caption = ' Vibrov'#225'n'#237' ' + ImageIndex = 1 + object Label3: TLabel + Left = 51 + Top = 212 + Width = 105 + Height = 25 + Caption = 'Sko'#345'epiny :' + end + object Label4: TLabel + Left = 151 + Top = 291 + Width = 151 + Height = 25 + Caption = 'zmetky (rozbit'#233')' + end + object Label2: TLabel + Left = 104 + Top = 243 + Width = 65 + Height = 25 + Caption = 'celkem' + end + object lblVibrator: TLabel + Left = 280 + Top = 182 + Width = 4 + Height = 16 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblLidiZTavby2: TLabel + Left = 280 + Top = 113 + Width = 4 + Height = 16 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object Label7: TLabel + Left = 94 + Top = 456 + Width = 63 + Height = 25 + Caption = 'D'#225'vka:' + end + object Label19: TLabel + Left = 151 + Top = 357 + Width = 152 + Height = 25 + Caption = 'zmetky (vytekl'#233')' + end + object Label20: TLabel + Left = 151 + Top = 406 + Width = 207 + Height = 25 + Caption = 'zmetky (chem.slo'#382'en'#237')' + end + object edtOpVibr: TLabeledEdit + Left = 94 + Top = 41 + Width = 139 + Height = 33 + Alignment = taCenter + EditLabel.Width = 257 + EditLabel.Height = 25 + EditLabel.Caption = 'V'#253'robn'#237' operace vibrov'#225'n'#237' :' + TabOrder = 0 + Text = '' + OnExit = edtOpVibrExit + end + object selOpVibr: TButtonedEdit + Left = 233 + Top = 41 + Width = 34 + Height = 33 + TabOrder = 1 + OnClick = selOpVibrClick + end + object edtTavbaV: TLabeledEdit + Left = 94 + Top = 104 + Width = 139 + Height = 33 + Alignment = taCenter + EditLabel.Width = 70 + EditLabel.Height = 25 + EditLabel.Caption = 'Tavba :' + TabOrder = 2 + Text = '' + OnExit = edtTavbaVExit + end + object selTavbaV: TButtonedEdit + Left = 233 + Top = 104 + Width = 34 + Height = 33 + TabOrder = 3 + OnClick = selTavbaVClick + end + object edtVibrator: TLabeledEdit + Left = 94 + Top = 173 + Width = 139 + Height = 33 + Alignment = taCenter + EditLabel.Width = 159 + EditLabel.Height = 25 + EditLabel.Caption = 'Vibrova'#269' (os.'#269'.) :' + TabOrder = 4 + Text = '' + OnExit = edtVibratorExit + end + object selVibrator: TButtonedEdit + Left = 233 + Top = 173 + Width = 34 + Height = 33 + TabOrder = 5 + OnClick = selVibratorClick + end + object edtStrCelk: TRzNumericEdit + Left = 51 + Top = 240 + Width = 47 + Height = 33 + Alignment = taCenter + MaxLength = 3 + TabOrder = 6 + DisplayFormat = ',0;(,0)' + end + object edtStrZmetky: TRzNumericEdit + Left = 101 + Top = 289 + Width = 44 + Height = 33 + Alignment = taCenter + MaxLength = 3 + TabOrder = 7 + DisplayFormat = ',0;(,0)' + end + object edtDavka: TEdit + Left = 171 + Top = 454 + Width = 100 + Height = 33 + Alignment = taCenter + MaxLength = 8 + ReadOnly = True + TabOrder = 8 + OnExit = edtDavkaExit + end + object selDavka: TButtonedEdit + Left = 271 + Top = 453 + Width = 34 + Height = 33 + TabOrder = 9 + OnClick = selDavkaClick + end + object edtStrZmetky2: TRzNumericEdit + Left = 101 + Top = 352 + Width = 44 + Height = 33 + Alignment = taCenter + MaxLength = 3 + TabOrder = 10 + DisplayFormat = ',0;(,0)' + end + object cbZmetky: TCheckBox + Left = 314 + Top = 284 + Width = 61 + Height = 17 + Caption = 'OBL' + TabOrder = 11 + end + object cbStrNenalite: TCheckBox + Left = 314 + Top = 316 + Width = 98 + Height = 24 + Caption = 'nenalit'#233 + TabOrder = 12 + end + object cbZmetky2: TCheckBox + Left = 314 + Top = 364 + Width = 61 + Height = 17 + Caption = 'OBL' + TabOrder = 13 + end + object edtStrZmetky3: TRzNumericEdit + Left = 101 + Top = 403 + Width = 44 + Height = 33 + Alignment = taCenter + MaxLength = 3 + TabOrder = 14 + DisplayFormat = ',0;(,0)' + end + end + object shOdvStr: TTabSheet + Caption = ' Odveden'#237' STR' + ImageIndex = 2 + object Label5: TLabel + Left = 141 + Top = 205 + Width = 105 + Height = 25 + Caption = 'Sko'#345'epiny :' + end + object Label6: TLabel + Left = 194 + Top = 236 + Width = 42 + Height = 25 + Caption = 'celk.' + Visible = False + end + object lblZamest: TLabel + Left = 129 + Top = 184 + Width = 4 + Height = 16 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblStromKs: TLabel + Left = 260 + Top = 236 + Width = 7 + Height = 25 + end + object Label8: TLabel + Left = 91 + Top = 305 + Width = 63 + Height = 25 + Caption = 'D'#225'vka:' + end + object lblOperace: TLabel + Left = 115 + Top = 79 + Width = 4 + Height = 16 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblStrDavka: TLabel + Left = 144 + Top = 341 + Width = 142 + Height = 19 + Alignment = taRightJustify + AutoSize = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object edtOpStr: TLabeledEdit + Left = 129 + Top = 40 + Width = 139 + Height = 33 + Alignment = taCenter + EditLabel.Width = 166 + EditLabel.Height = 25 + EditLabel.Caption = 'V'#253'robn'#237' operace :' + TabOrder = 0 + Text = '' + OnExit = edtOpStrExit + end + object selOpStr: TButtonedEdit + Left = 268 + Top = 40 + Width = 34 + Height = 33 + TabOrder = 1 + OnClick = selOpStrClick + end + object edtZamStr: TLabeledEdit + Left = 129 + Top = 146 + Width = 139 + Height = 33 + Alignment = taCenter + EditLabel.Width = 203 + EditLabel.Height = 25 + EditLabel.Caption = 'Zam'#283'stnanec (os.'#269'.) :' + TabOrder = 2 + Text = '' + OnExit = edtZamStrExit + end + object selZamStr: TButtonedEdit + Left = 268 + Top = 146 + Width = 34 + Height = 33 + TabOrder = 3 + OnClick = selZamStrClick + end + object edtStrStr: TRzNumericEdit + Left = 141 + Top = 233 + Width = 47 + Height = 33 + Alignment = taCenter + MaxLength = 3 + TabOrder = 4 + DisplayFormat = ',0;(,0)' + end + object edtDavkaStr: TEdit + Left = 168 + Top = 303 + Width = 100 + Height = 33 + Alignment = taCenter + MaxLength = 8 + ReadOnly = True + TabOrder = 5 + OnExit = edtDavkaStrExit + end + object selDavkaStr: TButtonedEdit + Left = 268 + Top = 303 + Width = 34 + Height = 33 + TabOrder = 6 + OnClick = selDavkaStrClick + end + end + object shPrevodVosk: TTabSheet + Caption = ' Vosk->Obal ' + ImageIndex = 3 + object Label10: TLabel + Left = 91 + Top = 62 + Width = 62 + Height = 25 + Caption = 'P'#345#237'kaz:' + end + object Label11: TLabel + Left = 124 + Top = 205 + Width = 111 + Height = 25 + Caption = 'Strome'#269'ky :' + end + object Label9: TLabel + Left = 108 + Top = 269 + Width = 75 + Height = 25 + Caption = 'K datu :' + end + object lblVoskDavka: TLabel + Left = 81 + Top = 161 + Width = 307 + Height = 25 + Alignment = taCenter + AutoSize = False + end + object lblVoskZbyva: TLabel + Left = 73 + Top = 106 + Width = 323 + Height = 25 + Alignment = taCenter + AutoSize = False + end + object edtVoskPrikaz: TEdit + Left = 161 + Top = 60 + Width = 166 + Height = 33 + Alignment = taCenter + MaxLength = 15 + TabOrder = 0 + OnExit = edtVoskPrikazExit + end + object selVoskPrikaz: TButtonedEdit + Left = 327 + Top = 60 + Width = 34 + Height = 33 + TabOrder = 1 + OnClick = selVoskPrikazClick + end + object edtVoskStr: TRzNumericEdit + Left = 244 + Top = 202 + Width = 62 + Height = 33 + Alignment = taCenter + MaxLength = 3 + TabOrder = 2 + OnExit = edtVoskStrExit + DisplayFormat = ',0;(,0)' + end + object datVoskDatum: TRzDateTimePicker + Left = 189 + Top = 269 + Width = 142 + Height = 33 + Date = 43649.000000000000000000 + Format = '' + Time = 0.393833148147678000 + TabOrder = 3 + end + end + object shDavkaObec: TTabSheet + Caption = ' D'#225'vka obecn'#225' ' + ImageIndex = 4 + object Label12: TLabel + Left = 94 + Top = 65 + Width = 62 + Height = 25 + Caption = 'P'#345#237'kaz:' + end + object Label14: TLabel + Left = 111 + Top = 272 + Width = 75 + Height = 25 + Caption = 'K datu :' + end + object Label15: TLabel + Left = 154 + Top = 160 + Width = 63 + Height = 25 + Caption = 'D'#225'vka:' + end + object lblObecZbyva: TLabel + Left = 76 + Top = 109 + Width = 323 + Height = 25 + Alignment = taCenter + AutoSize = False + end + object edtPrikazObec: TEdit + Left = 164 + Top = 63 + Width = 166 + Height = 33 + Alignment = taCenter + MaxLength = 15 + TabOrder = 0 + OnExit = edtPrikazObecExit + end + object selPrikazObec: TButtonedEdit + Left = 330 + Top = 63 + Width = 34 + Height = 33 + TabOrder = 1 + OnClick = selPrikazObecClick + end + object edtStrObec: TRzNumericEdit + Left = 196 + Top = 212 + Width = 62 + Height = 33 + Alignment = taCenter + MaxLength = 3 + TabOrder = 4 + DisplayFormat = ',0;(,0)' + end + object datDavkaObec: TRzDateTimePicker + Left = 192 + Top = 272 + Width = 142 + Height = 33 + Date = 43649.000000000000000000 + Format = '' + Time = 0.393833148147678000 + TabOrder = 6 + end + object edtDavkaObec: TEdit + Left = 231 + Top = 158 + Width = 100 + Height = 33 + Alignment = taCenter + MaxLength = 8 + ReadOnly = True + TabOrder = 2 + end + object selDavkaObec: TButtonedEdit + Left = 331 + Top = 158 + Width = 34 + Height = 33 + TabOrder = 3 + OnClick = selDavkaObecClick + end + object cbMJObec: TComboBox + Left = 264 + Top = 212 + Width = 66 + Height = 33 + ItemIndex = 0 + TabOrder = 5 + Text = 'ks' + Items.Strings = ( + 'ks' + 'STR') + end + end + object shP42: TTabSheet + Caption = ' P'#345'evod P42/P43->OBROBNA' + ImageIndex = 5 + object Label13: TLabel + Left = 45 + Top = 60 + Width = 85 + Height = 25 + Caption = 'Operace:' + end + object Label16: TLabel + Left = 136 + Top = 135 + Width = 35 + Height = 25 + Caption = 'Ks :' + end + object Label17: TLabel + Left = 94 + Top = 299 + Width = 63 + Height = 25 + Caption = 'D'#225'vka:' + end + object lblOperaceP42: TLabel + Left = 3 + Top = 98 + Width = 445 + Height = 19 + Alignment = taCenter + AutoSize = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblDavkaObr: TLabel + Left = 3 + Top = 335 + Width = 448 + Height = 19 + Alignment = taCenter + AutoSize = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object Label18: TLabel + Left = 31 + Top = 205 + Width = 153 + Height = 25 + Alignment = taRightJustify + Caption = 'Zam'#283'st. (os.'#269'.) :' + end + object lblZamP42: TLabel + Left = 9 + Top = 244 + Width = 436 + Height = 19 + Alignment = taCenter + AutoSize = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object edtOperP42: TEdit + Left = 141 + Top = 58 + Width = 166 + Height = 33 + Alignment = taCenter + MaxLength = 15 + TabOrder = 0 + OnExit = edtOperP42Exit + end + object selOperP42: TButtonedEdit + Left = 307 + Top = 57 + Width = 34 + Height = 33 + TabOrder = 1 + OnClick = selOperP42Click + end + object edtKsP42: TRzNumericEdit + Left = 193 + Top = 132 + Width = 99 + Height = 33 + Alignment = taCenter + MaxLength = 5 + TabOrder = 2 + DisplayFormat = ',0;(,0)' + end + object edtDavkaObr: TEdit + Left = 171 + Top = 297 + Width = 100 + Height = 33 + Alignment = taCenter + MaxLength = 8 + ReadOnly = True + TabOrder = 5 + end + object selDavkaObr: TButtonedEdit + Left = 271 + Top = 297 + Width = 34 + Height = 33 + TabOrder = 6 + OnClick = selDavkaObrClick + end + object selZamP42: TButtonedEdit + Left = 289 + Top = 202 + Width = 34 + Height = 33 + TabOrder = 4 + OnClick = selZamP42Click + OnExit = selZamP42Exit + end + object edtZamP42: TRzNumericEdit + Left = 190 + Top = 202 + Width = 99 + Height = 33 + Alignment = taCenter + MaxLength = 5 + TabOrder = 3 + OnExit = edtZamP42Exit + DisplayFormat = ',0;(,0)' + end + end + end + object btnOKNew: TButton + Left = 20 + Top = 637 + Width = 116 + Height = 39 + Anchors = [akLeft] + Caption = 'OK+nov'#253 + TabOrder = 0 + OnClick = btnOKNewClick + end + object gbEvidPrace: TGroupBox + Left = 8 + Top = 685 + Width = 479 + Height = 178 + Caption = ' Ji'#382' evidov'#225'no' + TabOrder = 4 + object grdEvidPrace: TRzDBGrid + Left = 4 + Top = 27 + Width = 471 + Height = 142 + DataSource = vDs + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + Options = [dgTitles, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgRowSelect, dgConfirmDelete, dgCancelOnExit, dgTitleClick, dgTitleHotTrack] + ParentFont = False + ReadOnly = True + TabOrder = 0 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -19 + TitleFont.Name = 'Tahoma' + TitleFont.Style = [] + Columns = < + item + Alignment = taCenter + Expanded = False + FieldName = 'colDatum' + Title.Alignment = taCenter + Title.Caption = 'Datum' + Width = 165 + Visible = True + end + item + Alignment = taCenter + Expanded = False + FieldName = 'colAutor' + Title.Alignment = taCenter + Title.Caption = 'Autor' + Width = 153 + Visible = True + end + item + Alignment = taCenter + Expanded = False + FieldName = 'colMnoz' + Title.Alignment = taCenter + Title.Caption = 'Mno'#382'.' + Width = 81 + Visible = True + end + item + Alignment = taCenter + Expanded = False + FieldName = 'colMJ' + Title.Alignment = taCenter + Title.Caption = 'MJ' + Width = 50 + Visible = True + end> + end + end + object vTab: TVirtualTable + FieldDefs = < + item + Name = 'colDatum' + DataType = ftString + Size = 20 + end + item + Name = 'colAutor' + DataType = ftString + Size = 80 + end> + Left = 315 + Top = 612 + Data = { + 040002000800636F6C446174756D01001400000000000800636F6C4175746F72 + 0100500000000000000000000000} + object vTabcolDatum: TStringField + FieldName = 'colDatum' + end + object vTabcolAutor: TStringField + FieldName = 'colAutor' + Size = 80 + end + object vTabcolMnoz: TFloatField + FieldName = 'colMnoz' + end + object vTabcolMJ: TStringField + FieldName = 'colMJ' + Size = 10 + end + end + object vDs: TDataSource + DataSet = vTab + Left = 360 + Top = 615 + end +end diff --git a/frmOdvTavby.pas b/frmOdvTavby.pas new file mode 100644 index 0000000..eb5a882 --- /dev/null +++ b/frmOdvTavby.pas @@ -0,0 +1,2201 @@ +unit frmOdvTavby; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, System.StrUtils, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, RzEdit, TBPackageU, ddPlugin_TLB, Vcl.ExtCtrls, + Vcl.ComCtrls, RzDTP, Data.DB, MemDS, VirtualTable, Vcl.Grids, Vcl.DBGrids, + RzDBGrid; + +const + tblTavby = '[dbo].[_hdc_TabTavby]'; + tblOdlitky = '[dbo].[_hdc_TabOdlitky]'; + tblDavky = '[dbo].[_hdc_TabDavky]'; + tblDavkyDU = '[dbo].[_hdc_TabDavkyDruhUziv]'; + +type + TcfgVosk = record + sklVosk, sklObal, radaVPrVosk: string; + end; + + TOperace = record + id, idPrikaz, idPrac: integer; + bc: string; + ksZive, ksPozad, ksReal, ksOdv, ksZmetIO, ksZmetOpr, ksZmetIOKdy, ksZmetNeopr: Extended; +{$IF CompilerVersion>=34} // Sydney a vys + class operator Initialize(out Dest: TOperace); +{$ENDIF} + end; + + TPrikaz = record + id, idKZ, stav: integer; + sz, regC, sklad: string; + ksZive: Extended; + mamP30: boolean; +{$IF CompilerVersion>=34} // Sydney a vys + class operator Initialize(out Dest: TPrikaz); +{$ENDIF} + end; + + TformOdvTavby = class(TForm) + btnOK: TButton; + btnStorno: TButton; + edtOpTavba: TLabeledEdit; + selOpTavba: TButtonedEdit; + edtTavba: TLabeledEdit; + selTavba: TButtonedEdit; + edtPocetStr: TRzNumericEdit; + Label1: TLabel; + lblVyrOp: TLabel; + lblPocetStr: TLabel; + pgCtrl: TPageControl; + shTavba: TTabSheet; + shVibrovani: TTabSheet; + edtFormir: TLabeledEdit; + selFormir: TButtonedEdit; + edtOpVibr: TLabeledEdit; + selOpVibr: TButtonedEdit; + edtTavbaV: TLabeledEdit; + selTavbaV: TButtonedEdit; + edtVibrator: TLabeledEdit; + selVibrator: TButtonedEdit; + lblPopis: TLabel; + lblPrikaz: TLabel; + Label3: TLabel; + edtStrCelk: TRzNumericEdit; + lblKsStrom: TLabel; + edtStrZmetky: TRzNumericEdit; + Label4: TLabel; + Label2: TLabel; + lblZapisDat: TLabel; + lblVibrator: TLabel; + lblFormir: TLabel; + lblLidiZTavby: TLabel; + lblLidiZTavby2: TLabel; + shOdvStr: TTabSheet; + edtOpStr: TLabeledEdit; + selOpStr: TButtonedEdit; + edtZamStr: TLabeledEdit; + selZamStr: TButtonedEdit; + edtStrStr: TRzNumericEdit; + Label5: TLabel; + Label6: TLabel; + lblZamest: TLabel; + lblStromKs: TLabel; + Label7: TLabel; + edtDavka: TEdit; + selDavka: TButtonedEdit; + Label8: TLabel; + edtDavkaStr: TEdit; + selDavkaStr: TButtonedEdit; + lblOperace: TLabel; + shPrevodVosk: TTabSheet; + edtVoskPrikaz: TEdit; + selVoskPrikaz: TButtonedEdit; + Label10: TLabel; + Label11: TLabel; + edtVoskStr: TRzNumericEdit; + datVoskDatum: TRzDateTimePicker; + Label9: TLabel; + lblVoskDavka: TLabel; + lblVoskZbyva: TLabel; + btnOKNew: TButton; + shDavkaObec: TTabSheet; + Label12: TLabel; + edtPrikazObec: TEdit; + selPrikazObec: TButtonedEdit; + edtStrObec: TRzNumericEdit; + Label14: TLabel; + datDavkaObec: TRzDateTimePicker; + Label15: TLabel; + edtDavkaObec: TEdit; + selDavkaObec: TButtonedEdit; + lblObecZbyva: TLabel; + cbMJObec: TComboBox; + lblStrDavka: TLabel; + gbEvidPrace: TGroupBox; + grdEvidPrace: TRzDBGrid; + vTab: TVirtualTable; + vDs: TDataSource; + vTabcolDatum: TStringField; + vTabcolAutor: TStringField; + vTabcolMnoz: TFloatField; + vTabcolMJ: TStringField; + shP42: TTabSheet; + Label13: TLabel; + edtOperP42: TEdit; + selOperP42: TButtonedEdit; + Label16: TLabel; + edtKsP42: TRzNumericEdit; + Label17: TLabel; + edtDavkaObr: TEdit; + selDavkaObr: TButtonedEdit; + lblOperaceP42: TLabel; + lblDavkaObr: TLabel; + selZamP42: TButtonedEdit; + Label18: TLabel; + edtZamP42: TRzNumericEdit; + lblZamP42: TLabel; + Label19: TLabel; + edtStrZmetky2: TRzNumericEdit; + cbZmetky: TCheckBox; + cbStrNenalite: TCheckBox; + cbZmetky2: TCheckBox; + edtStrZmetky3: TRzNumericEdit; + Label20: TLabel; + procedure FormShow(Sender: TObject); + procedure selTavbaClick(Sender: TObject); + procedure selOpTavbaClick(Sender: TObject); + procedure selFormirClick(Sender: TObject); + procedure edtFormirExit(Sender: TObject); + procedure edtVibratorExit(Sender: TObject); + procedure selVibratorClick(Sender: TObject); + procedure btnStornoClick(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure btnOKClick(Sender: TObject); + procedure edtTavbaVExit(Sender: TObject); + procedure edtTavbaExit(Sender: TObject); + procedure selOpVibrClick(Sender: TObject); + procedure selTavbaVClick(Sender: TObject); + procedure edtOpTavbaExit(Sender: TObject); + procedure edtOpVibrExit(Sender: TObject); + procedure edtPocetStrExit(Sender: TObject); + procedure edtPocetStrChange(Sender: TObject); + procedure edtZamStrExit(Sender: TObject); + procedure edtOpStrExit(Sender: TObject); + procedure selOpStrClick(Sender: TObject); + procedure selDavkaClick(Sender: TObject); + procedure edtDavkaExit(Sender: TObject); + procedure selDavkaStrClick(Sender: TObject); + procedure edtDavkaStrExit(Sender: TObject); + procedure selZamStrClick(Sender: TObject); + procedure selVoskPrikazClick(Sender: TObject); + procedure edtVoskPrikazExit(Sender: TObject); + procedure edtVoskStrExit(Sender: TObject); + procedure btnOKNewClick(Sender: TObject); + procedure selPrikazObecClick(Sender: TObject); + procedure edtPrikazObecExit(Sender: TObject); + procedure selDavkaObecClick(Sender: TObject); + procedure edtOperP42Exit(Sender: TObject); + procedure selDavkaObrClick(Sender: TObject); + procedure selOperP42Click(Sender: TObject); + procedure selZamP42Click(Sender: TObject); + procedure edtZamP42Exit(Sender: TObject); + procedure selZamP42Exit(Sender: TObject); + procedure FormResize(Sender: TObject); + private + function TestMamNaPrevod(const sklFrom: string): boolean; + function VyrPrikazMaOperaciPracoviste(const idVPr: Integer; prac: string): boolean; + function getTextDruhDavky(const idD: integer): string; + procedure NactiPrikaz; safecall; + procedure NactiTavbu(const idTavby: integer); safecall; + procedure ZjistiVOp(bc: string; const nactiVP: boolean); safecall; + function getParamOperace(const idVOp: integer; const param: string; const defVal: string=''): string; overload; + function getParamOperace(const idVOp: integer; const param: string; const defVal: Integer=-999999): integer; overload; + function getParamOperace(const idVOp: integer; const param: string; const defVal: Extended=-999999): Extended; overload; + public + Helios: IHelios; + typ: integer; + druhDavky: integer; + jeTest: Boolean; + rada: string; + end; + +var + formOdvTavby: TformOdvTavby; + idVPr, idVPrV, idVOp, idDavka, idDavkaRodic, cDavky: integer; + oVar, oVar2: OleVariant; + bidTavby, bidDavky: integer; + stred, rc, davkaMJ, sklFrom, sklTo, pozn, prac: string; + btnNew, tavbaCalamari, opakovanaTavba: boolean; + ksStr, ksZive: Extended; + prik: TPrikaz; + oper: TOperace; + mnP31max: Extended; + + +implementation +uses System.DateUtils, System.AnsiStrings, helUtils; +{$R *.dfm} + + +{$IF CompilerVersion>=34} // Sydney a vys + class operator TOperace.Initialize (out Dest: TOperace); + begin + Dest.id:= 0; + Dest.idPrikaz:= 0; + Dest.idPrac:= 0; + Dest.bc:= ''; + Dest.ksZive:= 0; + Dest.ksPozad:= 0; + Dest.ksReal:= 0; + Dest.ksOdv:= 0; + Dest.ksZmetIO:= 0; + Dest.ksZmetOpr:= 0; + Dest.ksZmetIOKdy:= 0; + Dest.ksZmetNeopr:= 0; + end; + + class operator TPrikaz.Initialize (out Dest: TPrikaz); + begin + Dest.id:= 0; + Dest.idKZ:= 0; + Dest.stav:= 10; + Dest.sz:= ''; + Dest.regC:= ''; + Dest.sklad:= ''; + Dest.ksZive:= 0; + Dest.mamP30:= false; + end; + +{$ENDIF} + + + + + function TformOdvTavby.getParamOperace (const idVOp: integer; const param: string; const defVal: string=''): string; + var lSQL: string; + begin + result:= defVal; + if (idVOp>0) and (param<>'') then + begin + lSQL:= 'SELECT TOP(1) FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND (ID=' + idVOp.ToString + ' OR ID1=' + idVOp.ToString + ')'; + lSQL:= lSQL.Replace('', param); + result:= helUtils.getHeliosStrVal(Helios, defVal, lSQL); + end; + end; + + + + + function TformOdvTavby.getParamOperace (const idVOp: integer; const param: string; const defVal: integer=-999999): integer; + var lSQL: string; + begin + result:= defVal; + if (idVOp>0) and (param<>'') then + begin + lSQL:= 'SELECT TOP(1) FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND (ID=' + idVOp.ToString + ' OR ID1=' + idVOp.ToString + ')'; + lSQL:= lSQL.Replace('', param); + result:= helUtils.getHeliosIntVal(Helios, defVal, lSQL); + end; + end; + + + + + function TformOdvTavby.getParamOperace (const idVOp: integer; const param: string; const defVal: Extended=-999999): Extended; + var lSQL: string; + begin + result:= defVal; + if (idVOp>0) and (param<>'') then + begin + lSQL:= 'SELECT TOP(1) FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND (ID=' + idVOp.ToString + ' OR ID1=' + idVOp.ToString + ')'; +{ + if (param='kusy_pozadovane') then + lSQL:= lSQL.Replace('', 'CONVERT(numeric(19,6), CASE WHEN Kusy_nepotrebne>kusy_zad THEN 0.0 ELSE kusy_zad-kusy_nepotrebne END)') + else +} + lSQL:= lSQL.Replace('', param); + result:= helUtils.getHeliosFloatVal(Helios, defVal, lSQL); + end; + end; + + + + + function TformOdvTavby.getTextDruhDavky (const idD: Integer): string; + var x: integer; + begin + result:= ''; + if (idD>0) then + begin + x:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT DruhDavky FROM ' + tblDavky + ' WHERE ID=' + idD.ToString); + case x of + 1: result:= 'VOSK'; + 2: result:= 'OBALOVNA'; + 3: result:= 'TAVÍRNA'; + 4: result:= 'KONEČNÁ'; + 5: result:= 'OBECNÁ'; + 6: result:= 'OBROBNA'; + end; + end; + end; + + + + + + function TformOdvTavby.VyrPrikazMaOperaciPracoviste (const idVPr: Integer; prac: string): boolean; + var lSQL: string; + begin + result:= false; + prac:= Trim(prac); + if (idVPr>0) and (prac<>'') then + begin + lSQL:= 'SELECT p.ID FROM ' + tblPrPost + ' p INNER JOIN ' + tblCPrac + ' pr ON (pr.ID=p.pracoviste) WHERE p.IDPrikaz=' + idVPr.ToString; + lSQL:= lSQL + ' AND pr.Blokovano=0 AND pr.Pracoviste=N' + QuotedStr(prac); + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + result:= true; + end; + end; + + + + + function TformOdvTavby.TestMamNaPrevod(const sklFrom: string): boolean; + var lSQL: string; + ksSkl: Extended; + begin + result:= false; + if (idVPr>0) and (sklFrom<>'') then + begin + rc:= helUtils.getHeliosStrVal(Helios, '', 'SELECT k.RegCis FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.Id=p.IdTabKmen) WHERE p.ID=' + idVPr.ToString); + ksStr:= 0; + ksSkl:= 0; + try + lSQL:= 'SELECT CASE WHEN ISNULL(o.MamMatecniOdlitek,0)=1 THEN ISNULL(o1.KSnaStrom,0) ELSE ISNULL(o.KSnaStrom,0) END FROM ' + tblOdlitky; + lSQL:= lSQL + ' o LEFT JOIN ' + tblOdlitky + ' o1 ON (o1.Odlitek=o.MatecniOdlitek) WHERE o.Odlitek=N' + QuotedStr(rc); + ksStr:= helUtils.getHeliosIntVal(Helios, 0, lSQL); + lSQL:= 'SELECT s.Mnozstvi FROM ' + tblSS + ' s INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) WHERE k.SkupZbo=N''P12'' AND s.IDSklad=N' + QuotedStr(sklFrom); + lSQL:= lSQL + ' AND k.RegCis=N' + QuotedStr(rc); + ksSkl:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + except + end; + if (ksSkl>=edtVoskStr.Value) then + result:= true + else + Helios.Error(#1'Na skladě Vosk/modely nemáte dost kusů P12 pro převod.'#1); + end; + end; + + + + + procedure TformOdvTavby.btnOKClick (Sender: TObject); + var lSQL, radaVPr: string; + canCont: boolean; + begin + canCont:= true; + davkaMJ:= ''; + edtFormir.Text:= Trim(edtFormir.Text); + edtVibrator.Text:= Trim(edtVibrator.Text); + edtTavba.Text:= Trim(edtTavba.Text); + edtTavbaV.Text:= Trim(edtTavbaV.Text); + edtDavka.Text:= Trim(edtDavka.Text); + edtDavkaStr.Text:= Trim(edtDavkaStr.Text); + + lblZapisDat.Visible:= true; + Self.Repaint; + btnOK.Enabled:= false; + btnStorno.Enabled:= false; + + if (idVPr>0) then + begin + radaVPr:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Rada FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); + if (rada='') then + davkaMJ:= ''; + end; + +// TAVBA + if (pgCtrl.ActivePageIndex=shTavba.PageIndex) and (idVPr>0) then + begin + canCont:= true; + if (LeftStr(edtTavba.Text,1).ToUpper<>'T') then + begin + canCont:= false; + Helios.Error('Označení tavby nezačíná písmenem T, vyberte tavbu z číselníku.'); + end; + + if (canCont) then + begin + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabEvidenceTavby'') IS NOT NULL DELETE FROM dbo._temp_TabEvidenceTavby WHERE Autor=SUSER_SNAME()' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabEvidenceTavby'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabEvidenceTavby) DROP TABLE '; + lSQL:= lSQL + 'dbo._temp_TabEvidenceTavby'; + Helios.ExecSQL(lSQL); + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabEvidenceTavby'') IS NOT NULL DROP TABLE #TabEvidenceTavby' + CRLF + 'CREATE TABLE #TabEvidenceTavby (BarCodeOperace NVARCHAR(15) NOT NULL'; + lSQL:= lSQL + ', CisloTavby NVARCHAR(11) NOT NULL, Opakovana BIT DEFAULT 0, Formir INT NULL, PocetStromu SMALLINT NOT NULL, JeCalamari BIT DEFAULT 0, Autor NVARCHAR(80) DEFAULT SUSER_SNAME())' + CRLF; + lSQL:= lSQL + 'INSERT #TabEvidenceTavby (BarCodeOperace, CisloTavby, Formir, PocetStromu, JeCalamari, Opakovana) SELECT N' + QuotedStr(edtOpTavba.Text) + ', N' + QuotedStr(edtTavba.Text); + lSQL:= lSQL + ', ' + IfThen(edtFormir.Text='', 'NULL', edtFormir.Text) + ', ' + StringReplace(edtPocetStr.Value.ToString, ',', '.', [rfReplaceAll]); + lSQL:= lSQL + ', ' + IfThen(tavbaCalamari, '1', '0') + ', ' + IfThen(opakovanaTavba, '1', '0') + CRLF; + if (jeTest) then + begin + lSQL:= StringReplace(lSQL, '#TabEvi', 'dbo._temp_TabEvi', [rfReplaceAll]); + lSQL:= StringReplace(lSQL, 'tempdb..', '', [rfReplaceAll]); + end; + Helios.ExecSQL(lSQL); + if not(jeTest) then + begin + lSQL:= 'IF OBJECT_ID(N''dbo.ep_Tavirna_EvidenceTavby'') IS NOT NULL EXEC dbo.ep_Tavirna_EvidenceTavby'; + try + Helios.ExecSQL(lSQL); + except on E:Exception do + Helios.Error(#1 + E.Message + #1); + end; + end; + if (btnNew) then + begin + NactiPrikaz; + lblLidiZTavby.Caption:= ''; + edtPocetStr.Value:= 0; + lblPocetStr.Caption:= ''; + lblVyrOp.Caption:= ''; + lblKsStrom.Caption:= ''; + edtTavba.Text:= ''; + edtTavba.SetFocus; + end; + end; + + end; + +// VIBROVANI + if (pgCtrl.ActivePageIndex=shVibrovani.PageIndex) and (idVPr>0) and (edtTavbaV.Text<>'') then + begin + canCont:= true; + if (LeftStr(edtTavbaV.Text,1).ToUpper<>'T') then + begin + canCont:= false; + Helios.Error('Označení tavby nezačíná písmenem T, vyberte tabvu z číselníku.'); + if (edtTavbaV.CanFocus) then + edtTavbaV.SetFocus; + end; + + if (canCont) then + if (edtVibrator.Text.Trim='') then + begin + canCont:= false; + Helios.Error('Musíte vybrat zaměstnance, který práci provedl.'); + if (edtVibrator.CanFocus) then + edtVibrator.SetFocus; + end; + + if (canCont) then + if (edtDavka.Text.Trim='') then + begin + canCont:= false; + Helios.Error('Musíte vybrat/založit výrobní Dávku.'); + if (edtDavka.CanFocus) then + edtDavka.SetFocus; + end; + + + if (canCont) then + begin + if (cbZmetky.Checked or cbStrNenalite.Checked) and (edtStrZmetky.Value=0) then + begin + canCont:= false; + Helios.Error('Pokud evidujete zmetky, musíte uvést jejich počet.'); + if (edtStrZmetky.CanFocus) then + edtStrZmetky.SetFocus; + end; + if (canCont) and (cbZmetky.Checked) and (edtStrZmetky2.Value=0) then + begin + canCont:= false; + Helios.Error('Pokud evidujete zmetky, musíte uvést jejich počet.'); + if (edtStrZmetky2.CanFocus) then + edtStrZmetky2.SetFocus; + end; + end; + + + if (canCont) then + begin + davkaMJ:= 'STR'; + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabEvidenceVibrovani'') IS NOT NULL DELETE FROM dbo._temp_TabEvidenceVibrovani WHERE Autor=SUSER_SNAME()' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabEvidenceVibrovani'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabEvidenceVibrovani) DROP TABLE '; + lSQL:= lSQL + 'dbo._temp_TabEvidenceVibrovani'; + Helios.ExecSQL(lSQL); + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabEvidenceVibrovani'') IS NOT NULL DROP TABLE #TabEvidenceVibrovani' + CRLF + 'CREATE TABLE #TabEvidenceVibrovani (BarCodeOperace NVARCHAR(15) NOT NULL'; + lSQL:= lSQL + ', CisloTavby NVARCHAR(11) NOT NULL, Vibrovac INT, PocetStromuOK SMALLINT DEFAULT 0, PocetStromuZmetky SMALLINT DEFAULT 0, cbObalovna BIT DEFAULT 0, IDDavka INT'; + lSQL:= lSQL + ', cbStrNenalite BIT DEFAULT 0, PocetStromuZmetky2 SMALLINT DEFAULT 0, cbObalovna2 BIT DEFAULT 0, PocetStromuZmetky3 SMALLINT DEFAULT 0, cbObalovna3 BIT DEFAULT 0'; + lSQL:= lSQL + ', Autor NVARCHAR(80) DEFAULT SUSER_SNAME(), IDPrikaz INT)' + CRLF; + lSQL:= lSQL + 'INSERT #TabEvidenceVibrovani (BarCodeOperace, CisloTavby, Vibrovac, PocetStromuOK, PocetStromuZmetky, cbObalovna, cbStrNenalite, PocetStromuZmetky2'; + lSQL:= lSQL + ', cbObalovna2, PocetStromuZmetky3, IDPrikaz)'; + lSQL:= lSQL + ' SELECT N' + edtOpVibr.Text.QuotedString + ', N' + edtTavbaV.Text.QuotedString + ', ' + IfThen(edtVibrator.Text='', 'NULL', edtVibrator.Text); + lSQL:= lSQL + ', ' + FloatToStr(edtStrCelk.Value-edtStrZmetky.Value-edtStrZmetky2.Value).Replace(',', '.'); + lSQL:= lSQL + ', ' + edtStrZmetky.Value.ToString.Replace(',', '.') + ', ' + IfThen(cbZmetky.Checked, '1', '0') + ', ' + IfThen(cbStrNenalite.Checked, '1', '0'); + lSQL:= lSQL + ', ' + edtStrZmetky2.Value.ToString.Replace(',', '.') + ', ' + IfThen(cbZmetky2.Checked, '1', '0'); + lSQL:= lSQL + ', ' + edtStrZmetky3.Value.ToString.Replace(',', '.') + ', ' + idVPr.ToString + CRLF; + if (jeTest) then + begin + lSQL:= lSQL.Replace('#TabEvi', 'dbo._temp_TabEvi', [rfReplaceAll]); + lSQL:= lSQL.Replace('tempdb..', '', [rfReplaceAll]); + end; + Helios.ExecSQL(lSQL); + if (idDavka>0) then + begin + lSQL:= 'UPDATE #TabEvidenceVibrovani SET IDDavka=' + idDavka.ToString + ' WHERE Autor=SUSER_SNAME()'; + if (jeTest) then + lSQL:= lSQL.Replace('#TabEvi', 'dbo._temp_TabEvi', [rfReplaceAll]); + Helios.ExecSQL(lSQL); + + lSQL:= 'UPDATE ' + tblDavky + ' SET IDPrikaz=' + idVPr.ToString + ', MJ=N' + QuotedStr(davkaMJ) + ', Tavba=N' + QuotedStr(edtTavbaV.Text) + ', Mnozstvi='; + lSQL:= lSQL + StringReplace(FloatToStr((edtStrCelk.Value-edtStrZmetky.Value-edtStrZmetky2.Value){*ksStr}), ',', '.', [rfReplaceAll]) + ' WHERE Uzavreno=0 AND ID=' + idDavka.ToString; + Helios.ExecSQL(lSQL); + end; + if not(jeTest) then + begin + lSQL:= 'DECLARE @retVal INT=1; IF OBJECT_ID(N''dbo.ep_Tavirna_EvidenceVibrovani'') IS NOT NULL EXEC @retVal=dbo.ep_Tavirna_EvidenceVibrovani' + CRLF; + lSQL:= lSQL + 'SELECT @retVal'; +// lSQL:= lSQL + 'IF OBJECT_ID(N''tempdb..#TabExtKom'') IS NOT NULL SELECT CASE WHEN EXISTS(SELECT * FROM #TabExtKom) THEN 1 ELSE 0 END ELSE SELECT 0'; + try + with Helios.OpenSQL(lSQL) do + if (RecordCount=1) then + begin + lSQL:= 'Typ=7 AND IDPomoc=' + edtOpVibr.Text.Replace('A', '').Replace('B', ''); + if (VarToStr(FieldValues(0))='1') then + if (helUtils.HeliosExistsTest(Helios, '_hdc_TabLog', lSQL)) then + Helios.OpenBrowse(helUtils.getHeliosIntVal(Helios, 0, 'SELECT DPBID FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_HDCLog'''), lSQL) + else + Helios.Error(#1'Nespecifikovaná chyba při evidenci Vibrování, operaci zaevidujte ručně.'#1); + end; + except on E:Exception do + Helios.Error(#1 + E.Message + #1); + end; + end; + if (btnNew) then + begin + NactiPrikaz; + lblLidiZTavby2.Caption:= ''; + edtStrCelk.Value:= 0; + edtStrZmetky.Value:= 0; + edtStrZmetky2.Value:= 0; + cbZmetky.Checked:= false; + cbZmetky2.Checked:= false; + edtTavbaV.Text:= ''; + edtTavbaV.SetFocus; + end; + end; + end; + + + +// TAVBA + if (pgCtrl.ActivePageIndex=shOdvStr.PageIndex) and (idVPr>0) and (edtStrStr.Value>0) then + begin + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabEvidenceOperStromky'') IS NOT NULL DELETE FROM dbo._temp_TabEvidenceOperStromky WHERE Autor=SUSER_SNAME()' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabEvidenceOperStromky'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabEvidenceOperStromky) DROP TABLE '; + lSQL:= lSQL + 'dbo._temp_TabEvidenceOperStromky'; + Helios.ExecSQL(lSQL); + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabEvidenceOperStromky'') IS NOT NULL DROP TABLE #TabEvidenceOperStromky' + CRLF + 'CREATE TABLE #TabEvidenceOperStromky (BarCodeOperace NVARCHAR(15) NOT NULL'; + lSQL:= lSQL + ', Zamestnanec INT, PocetStromuOK SMALLINT DEFAULT 0, PocetStromuZmetky SMALLINT DEFAULT 0, IDDavka INT, Autor NVARCHAR(80) DEFAULT SUSER_SNAME(),'; + lSQL:= lSQL + ' Poznamka NVARCHAR(max) DEFAULT N'''')' + CRLF; + lSQL:= lSQL + 'INSERT #TabEvidenceOperStromky (BarCodeOperace, Zamestnanec, PocetStromuOK, PocetStromuZmetky, Poznamka) SELECT N' + QuotedStr(edtOpStr.Text); + lSQL:= lSQL + ', ' + IfThen(edtZamStr.Text='', 'NULL', edtZamStr.Text) + ', ' + StringReplace(FloatToStr(edtStrStr.Value), ',', '.', [rfReplaceAll]) + ', 0'; + lSQL:= lSQL + ', N' + QuotedStr(pozn); + if (jeTest) then + begin + lSQL:= StringReplace(lSQL, '#TabEvi', 'dbo._temp_TabEvi', [rfReplaceAll]); + lSQL:= StringReplace(lSQL, 'tempdb..', '', [rfReplaceAll]); + end; + Helios.ExecSQL(lSQL); + if (idDavka>0) then + begin + davkaMj:= 'STR'; + lSQL:= 'UPDATE #TabEvidenceOperStromky SET IDDavka=' + idDavka.ToString + ' WHERE Autor=SUSER_SNAME()'; + if (jeTest) then + lSQL:= StringReplace(lSQL, '#TabEvi', 'dbo._temp_TabEvi', [rfReplaceAll]); + Helios.ExecSQL(lSQL); + + lSQL:= 'UPDATE ' + tblDavky + ' SET IDPrikaz=' + idVPr.ToString + ', MJ=N' + QuotedStr(davkaMJ) + ', Mnozstvi='; + lSQL:= lSQL + StringReplace(FloatToStr(edtStrStr.Value{*ksStr}),',','.',[rfReplaceAll]) + ' WHERE Uzavreno=0 AND ID=' + idDavka.ToString; + Helios.ExecSQL(lSQL); + end; + if not(jeTest) then + begin + lSQL:= 'IF OBJECT_ID(N''dbo.ep_Tavirna_EvidenceOperStromky'') IS NOT NULL EXEC dbo.ep_Tavirna_EvidenceOperStromky'; + try + Helios.ExecSQL(lSQL); + except on E:Exception do + Helios.Error(#1 + E.Message + #1); + end; + end; + if (btnNew) then + begin + NactiPrikaz; + edtStrStr.Value:= 0; + edtStrStr.SetFocus; + end; + edtDavkaStr.Text:= ''; + idDavka:= 0; + end; + + + + +// VOSK NA OBALOVNU + if (pgCtrl.ActivePageIndex=shPrevodVosk.PageIndex) and (idVPr>0) and (edtVoskStr.Value>0) and (1=0) then + begin + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabPrevodVosk2Obal'') IS NOT NULL DELETE FROM dbo._temp_TabPrevodVosk2Obal WHERE Autor=SUSER_SNAME()' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabPrevodVosk2Obal'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabPrevodVosk2Obal) DROP TABLE '; + lSQL:= lSQL + 'dbo._temp_TabPrevodVosk2Obal'; + Helios.ExecSQL(lSQL); + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabPrevodVosk2Obal'') IS NOT NULL DROP TABLE #TabPrevodVosk2Obal' + CRLF + 'CREATE TABLE #TabPrevodVosk2Obal (IDPrikaz INT NOT NULL'; + lSQL:= lSQL + ', Pozice TINYINT DEFAULT 1, PocetStromu SMALLINT DEFAULT 0, DatPrevodu DATETIME, Autor NVARCHAR(80) DEFAULT SUSER_SNAME())' + CRLF; + lSQL:= lSQL + 'INSERT #TabPrevodVosk2Obal (IDPrikaz, PocetStromu, DatPrevodu, Pozice) SELECT ' + idVPr.ToString + ', ' + StringReplace(FloatToStr(edtVoskStr.Value), ',', '.', [rfReplaceAll]); + lSQL:= lSQL + ', CONVERT(datetime, N' + QuotedStr(FormatDateTime('dd.mm.yyyy hh:nn:ss', datVoskDatum.DateTime)) + ', 104), '; + if (lblVoskDavka.Caption<>'') then + lSQL:= lSQL + StringReplace(lblVoskDavka.Caption, 'Dávka č. ', '', [rfReplaceAll]) + else + lSQL:= lSQL + 'NULL'; + if (jeTest) then + begin + lSQL:= StringReplace(lSQL, '#TabPrevodV', 'dbo._temp_TabPrevodV', [rfReplaceAll]); + lSQL:= StringReplace(lSQL, 'tempdb..', '', [rfReplaceAll]); + end; + Helios.ExecSQL(lSQL); + if not(jeTest) then + begin + lSQL:= 'IF OBJECT_ID(N''dbo.ep_Vosk_GenerujOdvodStromecku'') IS NOT NULL EXEC dbo.ep_Vosk_GenerujOdvodStromecku'; + try + Helios.ExecSQL(lSQL); + +{ // + lSQL:= 'IF OBJECT_ID(N''dbo.ep_Vosk_PrevodNaObalovnu'') IS NOT NULL EXEC dbo.ep_Vosk_PrevodNaObalovnu'; + try + Helios.ExecSQL(lSQL); + idVPrV:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDPrikazVyssi FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); + if (idVPrV>0) then + begin + lblZapisDat.Caption:= 'Tisk dokladů...'; +// } +{ + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TiskPomoc'') IS NULL CREATE TABLE dbo._temp_TiskPomoc (ID INT IDENTITY(1,1) NOT NULL, IDPrikazNizsi INT, Pozice INT, '; + lSQL:= lSQL + 'Mnozstvi NUMERIC(19,6), Autor NVARCHAR(80) DEFAULT SUSER_SNAME())'; + Helios.ExecSQL(lSQL); + lSQL:= 'INSERT dbo._temp_TiskPomoc (Mnozstvi, IDPrikazNizsi, Pozice) VALUES (' + StringReplace(FloatToStr(edtVoskStr.Value), ',', '.', [rfReplaceAll]) + ', '; + lSQL:= lSQL + idVPr.ToString + ', ' + IfThen(lblVoskDavka.Caption='', '0', lblVoskDavka.Caption) + ')'; + Helios.ExecSQL(lSQL); +} +{ // + Sleep(1000); + Helios.PrintForm3(100097, 84, 'hvw_Davky.Pozice=' + cDavky.ToString + ' AND hvw_Davky.Rok=DATEPART(year,GETDATE()) AND hvw_Davky.IDPrikaz=' + idVPr.ToString); +// } + +// Helios.ExecSQL('IF OBJECT_ID(N''dbo._temp_TiskPomoc'') IS NOT NULL DELETE FROM dbo._temp_TiskPomoc WHERE Autor=SUSER_SNAME()'); +// Helios.ExecSQL('IF OBJECT_ID(N''dbo._temp_TiskPomoc'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TiskPomoc) DROP TABLE dbo._temp_TiskPomoc'); +//// end; + except on E:Exception do + Helios.Error(#1 + E.Message + #1); + end; + end; + end; + + + + +// DAVKA OBECNA + if (pgCtrl.ActivePageIndex=shDavkaObec.PageIndex) and (idVPr>0) AND (edtStrObec.Value>0) then + begin + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabDavkaObecna'') IS NOT NULL DELETE FROM dbo._temp_TabDavkaObecna WHERE Autor=SUSER_SNAME()' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabDavkaObecna'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabDavkaObecna) DROP TABLE '; + lSQL:= lSQL + 'dbo._temp_TabDavkaObecna'; + Helios.ExecSQL(lSQL); + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabDavkaObecna'') IS NOT NULL DROP TABLE #TabDavkaObecna' + CRLF + 'CREATE TABLE #TabDavkaObecna (IDPrikaz INT NOT NULL'; + lSQL:= lSQL + ', IDDavka INT, MJ NVARCHAR(10), Pozice TINYINT DEFAULT 1, PocetStromu SMALLINT DEFAULT 0, DatPrevodu DATETIME, Autor NVARCHAR(80) DEFAULT SUSER_SNAME())' + CRLF; + + lSQL:= lSQL + 'INSERT #TabDavkaObecna (IDPrikaz, PocetStromu, DatPrevodu, IDDavka, MJ) SELECT ' + idVPr.ToString + ', ' + StringReplace(FloatToStr(edtStrObec.Value), ',', '.', [rfReplaceAll]); + lSQL:= lSQL + ', CONVERT(datetime, N' + QuotedStr(FormatDateTime('dd.mm.yyyy hh:nn:ss', datVoskDatum.DateTime)) + ', 104), ' + idDavka.ToString + ', N'; + lSQL:= lSQL + IfThen(cbMJObec.ItemIndex=-1,'ks', cbMJObec.Text); + if (jeTest) then + begin + lSQL:= StringReplace(lSQL, '#TabDavkaObe', 'dbo._temp_TabDavkaObe', [rfReplaceAll]); + lSQL:= StringReplace(lSQL, 'tempdb..', '', [rfReplaceAll]); + end; + Helios.ExecSQL(lSQL); + + if (idDavka>0) then + begin + lSQL:= 'UPDATE #TabDavkaObecna SET IDDavka=' + idDavka.ToString + ' WHERE Autor=SUSER_SNAME()'; + if (jeTest) then + lSQL:= StringReplace(lSQL, '#TabDav', 'dbo._temp_TabDav', [rfReplaceAll]); + Helios.ExecSQL(lSQL); + end; + + if not(jeTest) then + begin + lSQL:= 'IF OBJECT_ID(N''dbo.ep_Davky_ObecnyPrevod'') IS NOT NULL EXEC dbo.ep_Davky_ObecnyPrevod'; + try + Helios.ExecSQL(lSQL); + except on E:Exception do + Helios.Error(#1 + E.Message + #1); + end; + end; + idDavka:= 0; + edtDavkaObec.Text:= ''; + end; + + + + + +// PREVOD P42/P43 -> OBROBNA + if (pgCtrl.ActivePageIndex=shP42.PageIndex) and (idVOp>0) AND (edtKsP42.Value>0) then + begin + lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabPrevodKon2Obr'') IS NOT NULL DELETE FROM dbo._temp_TabPrevodKon2Obr WHERE Autor=SUSER_SNAME()' + CRLF; + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabPrevodKon2Obr'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabPrevodKon2Obr) DROP TABLE '; + lSQL:= lSQL + 'dbo._temp_TabPrevodKon2Obr'; + Helios.ExecSQL(lSQL); + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabPrevodKon2Obr'') IS NOT NULL DROP TABLE #TabPrevodKon2Obr' + CRLF + 'CREATE TABLE #TabPrevodKon2Obr (IDPrPostup INT NOT NULL'; + lSQL:= lSQL + ', IDDavka INT NULL, MJ NVARCHAR(10) DEFAULT N''ks'', Pozice TINYINT DEFAULT 1, Mnozstvi SMALLINT DEFAULT 0, DatPrevodu DATETIME DEFAULT GETDATE()'; + lSQL:= lSQL + ', CisZam INT, Autor NVARCHAR(80) DEFAULT SUSER_SNAME())' + CRLF; + + lSQL:= lSQL + 'INSERT #TabPrevodKon2Obr (IDPrPostup, Mnozstvi, CisZam) SELECT ' + idVOp.ToString + ', ' + StringReplace(FloatToStr(edtKsP42.Value), ',', '.', [rfReplaceAll]); + lSQL:= lSQL + ', ' + edtZamP42.IntValue.ToString; + + if (jeTest) then + begin + lSQL:= StringReplace(lSQL, '#TabPrevodKon2Obr', 'dbo._temp_TabPrevodKon2Obr', [rfReplaceAll]); + lSQL:= StringReplace(lSQL, 'tempdb..', '', [rfReplaceAll]); + end; + Helios.ExecSQL(lSQL); + + if (idDavka>0) then + begin + lSQL:= 'UPDATE #TabPrevodKon2Obr SET IDDavka=' + idDavka.ToString + ', MJ=N''ks'' WHERE Autor=SUSER_SNAME()'; + if (jeTest) then + lSQL:= StringReplace(lSQL, '#TabPrev', 'dbo._temp_TabPrev', [rfReplaceAll]); + Helios.ExecSQL(lSQL); + end; + + if not(jeTest) then + begin + lSQL:= 'IF OBJECT_ID(N''dbo.ep_Konecna_PrevodNaObrobnu'') IS NOT NULL EXEC dbo.ep_Konecna_PrevodNaObrobnu'; + try + Helios.ExecSQL(lSQL); + except on E:Exception do + Helios.Error(#1 + E.Message + #1); + end; + end; + idDavka:= 0; + edtDavkaObr.Text:= ''; + end; + + + + + lblZapisDat.Visible:= false; + Self.Repaint; + btnOK.Enabled:= true; + btnStorno.Enabled:= true; + if not(btnNew) and (canCont) then + Close; + btnNew:= false; + end; + + + + procedure TformOdvTavby.btnOKNewClick(Sender: TObject); + begin + btnNew:= true; + btnOKClick(Sender); + end; + + + + procedure TformOdvTavby.btnStornoClick(Sender: TObject); + begin + Close; + end; + + + + procedure TformOdvTavby.edtDavkaExit(Sender: TObject); + var lSQL: string; + begin + lSQL:= ''; + end; + + + + + procedure TformOdvTavby.edtDavkaStrExit (Sender: TObject); + var lSQL, rD, cD: string; + begin + if (idVPr>0) and (idDavka>0) then + begin + rD:= YearOf(Now).ToString; + cD:= '1'; + with Helios.OpenSQL('SELECT Rok, Cislo FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString) do + begin + rD:= VarToStr(FieldValues(0)); + cD:= VarToStr(FieldValues(1)); + end; + lSQL:= 'SELECT COUNT(*) FROM ' + tblDavky + ' WHERE DruhDavky=4 AND Rok=' + rD + ' AND Cislo=' + cD + ' GROUP BY RegCis'; + with Helios.OpenSQL(lSQL) do + if (VarToStr(FieldValues(0))='1') then + begin + lSQL:= 'TabVyrCisPrikaz.IDPrikaz IN (SELECT ID FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi=' + idVPr.ToString + ')'; + if Helios.Prenos2(bidVyrPrikVC, 'VyrCislo', '', oVar, oVar2, lSQL, 'Vyberte Tavby', True, True, False, 1) then + pozn:= StringReplace(StringReplace(StringReplace(VarToStr(oVar), ',', '*', [rfReplaceAll]), 'N''', '', [rfReplaceAll]), '''', '', [rfReplaceAll]); + + lblStrDavka.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Rok FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString) + ' KONEČNÁ'; + btnOK.SetFocus; + end + else + begin + Helios.Error(#1'Do jedné dávky KONEČNÁ nesmíte míchat víc druhů odlitků'#1); + lblStrDavka.Caption:= ''; + edtDavkaStr.Text:= ''; + selDavkaStr.SetFocus; + idDavka:= 0; + end; + end; + end; + + + + + procedure TformOdvTavby.edtFormirExit (Sender: TObject); + begin + edtFormir.Text:= StringReplace(Trim(edtFormir.Text), ' ', '', [rfReplaceAll]); + edtFormir.Text:= helUtils.StripChars(edtFormir.Text, ['''', '"', '-', ';', ' ']); + edtFormir.Text:= helUtils.RemoveWords(edtFormir.Text, ['null']); + edtFormir.Text:= helUtils.RemoveAlphas(edtFormir.Text); + if (edtFormir.Text<>'') then + begin + if (helUtils.getHeliosIntVal(Helios, -1, 'SELECT ID FROM ' + tblCZam + ' WHERE Cislo=' + edtFormir.Text)<0) then + begin + Helios.Error(#1'Osobní číslo zaměstnance nebylo nalezeno.'#1 + CRLF + edtFormir.Text); + edtFormir.Text:= ''; + lblFormir.Caption:= ''; + edtFormir.SetFocus; + end + else + begin + edtFormir.Text:= StringOfChar('0', 6-Length(edtFormir.Text)) + edtFormir.Text; + lblFormir.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT PrijmeniJmeno FROM ' + tblCZam + ' WHERE Cislo=' + edtFormir.Text); + end; + end; + end; + + + + + procedure TformOdvTavby.edtOperP42Exit (Sender: TObject); + var lSQL, rVPr, sz, rc: string; + ksZive, ksStrom: Extended; + mon: TMonitor; + jeP43: Boolean; + begin + btnOKNew.Enabled:= true; + btnOK.Enabled:= true; + + self.Height:= 645; + if not(vTab.Active) then + vTab.Open; + vTab.Clear; + + edtOperP42.Text:= StringReplace(Trim(edtOperP42.Text), ' ', '', [rfReplaceAll]); + edtOperP42.Text:= helUtils.StripChars(edtOperP42.Text, ['''', '"', '-', ';', ' ']); + ZjistiVOp(edtOperP42.Text, True); + + sz:= ''; + rc:= ''; + idVPr:= 0; + pozn:= ''; + + lSQL:= 'SELECT k.SkupZbo, k.RegCis, vp.ID FROM ' + tblPrikaz + ' vp INNER JOIN ' + tblPrPost + ' p ON (p.IDPrikaz=vp.ID) INNER JOIN ' + tblKZ; + lSQL:= lSQL + ' k ON (k.ID=vp.IDTabKmen) WHERE p.BarCode=N' + QuotedStr(edtOperP42.Text); + with Helios.OpenSQL(lSQL) do + if (RecordCount=1) then + begin + sz:= VarToStr(FieldValues(0)); + rc:= VarToStr(FieldValues(1)); + idVPr:= StrToInt(VarToStr(FieldValues(2))); + pozn:= ''; // helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(VyrCislo, N''*'') FROM ' + tblPrikazVC + ' WHERE IDPrikaz=' + idVPr.ToString); + end; + + lSQL:= 'SELECT CASE WHEN ISNULL(o.MamMatecniOdlitek,0)=1 THEN ISNULL(o1.KSnaStrom,0) ELSE ISNULL(o.KSnaStrom,0) END FROM ' + tblOdlitky; + lSQL:= lSQL + ' o LEFT JOIN ' + tblOdlitky + ' o1 ON (o1.Odlitek=o.MatecniOdlitek) WHERE o.Odlitek=N' + QuotedStr(rc); + ksStrom:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + + jeP43:= false; + if (sz='P43') then + jeP43:= true; + +// btnOK.Top:= 535; +// btnOKNew.Top:= 535; +// btnStorno.Top:= 535; + + if (idVOp>0) then + begin +// idVOp:= helUtils.getHeliosIntVal(Helios, 'SELECT ID FROM ' + tblPrPost + ' WHERE Barcode=N' + QuotedStr(edtOpVibr.Text)); + ksZive:= getParamOperace(idVOp, 'Kusy_zive', -999999); + +// A17209B + lSQL:= 'SELECT mz.ID, mz.DatPorizeni, mz.Autor, mz.kusy_odv' + IfThen(ksStrom>0, '/' + ksStrom.ToString, '') + ', kz.MJEvidence FROM ' + tblPrPost; + lSQL:= lSQL + ' pp INNER JOIN ' + tblMzdZm + ' mz ON (mz.DokladPrPostup=pp.Doklad AND mz.AltPrPostup=pp.Alt'; + lSQL:= lSQL + ' AND mz.IDPrikaz=pp.IDPrikaz) INNER JOIN ' + tblPrikaz + ' p ON (p.ID=pp.IDPrikaz) INNER JOIN ' + tblKZ; + lSQL:= lSQL + ' kz ON (kz.ID=p.IdTabKmen) WHERE pp.ID=' + idVOp.ToString + ' ORDER BY mz.DatPorizeni'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + self.Height:= 845; +// btnOK.Top:= 600; +// btnOKNew.Top:= 600; +// btnStorno.Top:= 600; + mon:= Screen.MonitorFromPoint(Mouse.CursorPos); + self.Left:= mon.Left + ((mon.Width - self.Width) div 2); + self.Top:= mon.Top + ((mon.Height - self.Height) div 2); + First; + while not(EOF) do + begin + vTab.Append; + vTab.FieldByName('colDatum').AsString:= FormatDateTime('d.m.yyyy h:nn', StrToDateTime(VarToStr(FieldValues(1)))); + vTab.FieldByName('colAutor').AsString:= VarToStr(FieldValues(2)); + vTab.FieldByName('colMnoz').AsFloat:= StrToFloat(VarToStr(FieldValues(3))); + vTab.FieldByName('colMJ').AsString:= 'ks'; // VarToStr(FieldValues(4)); + vTab.Post; + Next; + end; + end; + + if (ksZive=0) then + begin + btnOKNew.Enabled:= false; + btnOK.Enabled:= false; + Helios.Error(#1'Na operaci nezbývají žádné kusy k odvedení !!'#1); + edtOperP42.SelectAll; + edtOperP42.SetFocus; + end + else + begin + lblOperaceP42.Caption:= lblOperace.Caption + ' (živé ks ' + ksZive.ToString + ')'; + +// idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDPrikaz FROM ' + tblPrPost + ' WHERE Barcode=N' + QuotedStr(edtOpStr.Text)); + NactiPrikaz; + rVPr:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Rada FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); + lSQL:= 'ID=' + idVOp.ToString + ' AND Doklad=(SELECT MAX(Doklad) FROM ' + tblPrPost + ' WHERE IDPrikaz=' + idVPr.ToString + ')'; + if (helUtils.HeliosExistsTest(Helios, tblPrPost, lSQL)) AND ((rVPr='223-42') OR (rVPr='223-43')) then + begin + edtDavkaObr.Enabled:= true; + selDavkaObr.Enabled:= true; + end; + end; + end; + end; + + + + + procedure TformOdvTavby.edtOpStrExit (Sender: TObject); + var lSQL, rVPr, sz, rc: string; + ksZive, ksStrom: Extended; + mon: TMonitor; + jeP31: Boolean; + begin + + edtOpStr.Text:= StringReplace(Trim(edtOpStr.Text), ' ', '', [rfReplaceAll]); + edtOpStr.Text:= helUtils.StripChars(edtOpStr.Text, ['''', '"', '-', ';', ' ']); + if (edtOpStr.Text='') then + Exit; + + btnOKNew.Enabled:= true; + btnOK.Enabled:= true; + + self.Height:= 645; + if not(vTab.Active) then + vTab.Open; + vTab.Clear; + + ZjistiVOp(edtOpStr.Text, True); + if (prik.stav=0) or (prik.stav>30) then + Helios.Error(#1'Výrobní příkaz operace je již uzavřen.'#1); + + sz:= ''; + rc:= ''; + idVPr:= 0; + pozn:= ''; + + lSQL:= 'SELECT k.SkupZbo, k.RegCis, vp.ID FROM ' + tblPrikaz + ' vp INNER JOIN ' + tblPrPost + ' p ON (p.IDPrikaz=vp.ID) INNER JOIN ' + tblKZ; + lSQL:= lSQL + ' k ON (k.ID=vp.IDTabKmen) WHERE p.IDOdchylkyDo IS NULL AND p.BarCode=N' + QuotedStr(edtOpStr.Text); + with Helios.OpenSQL(lSQL) do + if (RecordCount=1) then + begin + sz:= VarToStr(FieldValues(0)); + rc:= VarToStr(FieldValues(1)); + idVPr:= StrToInt(VarToStr(FieldValues(2))); + pozn:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(VyrCislo, N''*'') FROM ' + tblPrikazVC + ' WHERE IDPrikaz=' + idVPr.ToString); + end; + + lSQL:= 'SELECT CASE WHEN ISNULL(o.MamMatecniOdlitek,0)=1 THEN ISNULL(o1.KSnaStrom,0) ELSE ISNULL(o.KSnaStrom,0) END FROM ' + tblOdlitky; + lSQL:= lSQL + ' o LEFT JOIN ' + tblOdlitky + ' o1 ON (o1.Odlitek=o.MatecniOdlitek) WHERE o.Odlitek=N' + QuotedStr(rc); + ksStrom:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + + jeP31:= false; + if (sz='P31') then + jeP31:= true; + +// btnOK.Top:= 535; +// btnOKNew.Top:= 535; +// btnStorno.Top:= 535; + + if (idVOp>0) then + begin +// idVOp:= helUtils.getHeliosIntVal(Helios, 'SELECT ID FROM ' + tblPrPost + ' WHERE Barcode=N' + QuotedStr(edtOpVibr.Text)); + ksZive:= getParamOperace(idVOp, 'Kusy_zive', -999999); + +// A17209B + lSQL:= 'SELECT mz.ID, mz.DatPorizeni, mz.Autor, mz.kusy_odv' + IfThen(ksStrom>0, '/' + ksStrom.ToString, '') + ', kz.MJEvidence FROM ' + tblPrPost; + lSQL:= lSQL + ' pp INNER JOIN ' + tblMzdZm + ' mz ON (mz.DokladPrPostup=pp.Doklad AND mz.AltPrPostup=pp.Alt'; + lSQL:= lSQL + ' AND mz.IDPrikaz=pp.IDPrikaz) INNER JOIN ' + tblPrikaz + ' p ON (p.ID=pp.IDPrikaz) INNER JOIN ' + tblKZ; + lSQL:= lSQL + ' kz ON (kz.ID=p.IdTabKmen) WHERE pp.IDOdchylkyDo IS NULL AND pp.ID1=' + idVOp.ToString + ' ORDER BY mz.DatPorizeni'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + self.Height:= 845; + mon:= Screen.MonitorFromPoint(Mouse.CursorPos); + self.Left:= mon.Left + ((mon.Width - self.Width) div 2); + self.Top:= mon.Top + ((mon.Height - self.Height) div 2); + First; + while not(EOF) do + begin + vTab.Append; + vTab.FieldByName('colDatum').AsString:= FormatDateTime('d.m.yyyy h:nn', StrToDateTime(VarToStr(FieldValues(1)))); + vTab.FieldByName('colAutor').AsString:= VarToStr(FieldValues(2)); + vTab.FieldByName('colMnoz').AsFloat:= StrToFloat(VarToStr(FieldValues(3))); + vTab.FieldByName('colMJ').AsString:= 'STR'; // VarToStr(FieldValues(4)); + vTab.Post; + Next; + end; +// btnOK.Top:= 600; +// btnOKNew.Top:= 600; +// btnStorno.Top:= 600; + end; + + if (ksZive=0) then + begin + btnOKNew.Enabled:= false; + btnOK.Enabled:= false; + Helios.Error(#1'Na operaci nezbývají žádné kusy k odvedení !!'#1); + edtOpStr.SelectAll; + end + else + begin + if (ksStrom=0) then + ksStrom:= 1; + lblOperace.Caption:= lblOperace.Caption + ' (živé ks ' + ksZive.ToString + ' = ' + helUtils.RoundToEx(ksZive/ksStrom,-2).ToString + ' str)'; + +// idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDPrikaz FROM ' + tblPrPost + ' WHERE Barcode=N' + QuotedStr(edtOpStr.Text)); + NactiPrikaz; + rVPr:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Rada FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); + lSQL:= 'ID1=' + idVOp.ToString + ' AND IDOdchylkyDo IS NULL AND ' + SQLTryConvertNumNullDefVal('int', 'operace', -1) + '=(SELECT MAX('; + lSQL:= lSQL + SQLTryConvertNumNullDefVal('int', 'operace', -1) + ') FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString + ')'; + if (helUtils.HeliosExistsTest(Helios, tblPrPost, lSQL)) AND (rVPr='223-31') then + begin + edtDavkaStr.Enabled:= true; + selDavkaStr.Enabled:= true; + end; + edtZamStr.SetFocus; + end; + end; + end; + + + + + procedure TformOdvTavby.ZjistiVOp (bc: string; const nactiVP: boolean); + var lSQL: string; + begin + bc:= StringReplace(Trim(bc), ' ', '', [rfReplaceAll]); + bc:= helUtils.StripChars(Trim(bc), ['''', '"', '-', ';', ' ']); + if (bc<>'') then + begin + // idVOp:= helUtils.getHeliosIntVal(Helios, 'SELECT ID FROM ' + tblPrPost + ' WHERE Barcode=N' + QuotedStr(edtOpVibr.Text)); + idVOp:= StrToInt(StringReplace(StringReplace(bc, 'A', '', [rfReplaceAll]), 'B', '', [rfReplaceAll])); + lSQL:= 'SELECT cp.Pracoviste FROM ' + tblPrPost + ' p INNER JOIN ' + tblCPrac + ' cp ON (cp.ID=p.pracoviste) WHERE p.IDOdchylkyDo IS NULL AND p.ID1=' + idVOp.ToString; + prac:= UpperCase(helUtils.getHeliosStrVal(Helios, '', lSQL)); + if (prac.ToLower='t09') then + tavbaCalamari:= true; + lblOperace.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT nazev FROM ' + tblPrPost + ' WHERE IdOdchylkyDo IS NULL AND ID1=' + idVOp.ToString); + ksZive:= getParamOperace(idVOp, 'Kusy_zive', -999999); + idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDPrikaz FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND ID1=' + idVOp.ToString); + + oper.id:= idVOp; + oper.idPrikaz:= idVPr; + oper.bc:= bc; + oper.ksZive:= ksZive; + oper.ksPozad:= getParamOperace(idVOp, 'kusy_pozadovane', -999999); + oper.idPrac:= getParamOperace(idVOp, 'pracoviste', 0); + + end + else + begin + idVOp:= 0; + prac:= ''; + idVPr:= 0; + ksZive:= 0; + + oper.id:= 0; + oper.idPrikaz:= 0; + oper.ksZive:= 0; + oper.ksPozad:= 0; + oper.ksReal:= 0; + oper.ksOdv:= 0; + oper.ksZmetIO:= 0; + oper.ksZmetOpr:= 0; + oper.ksZmetIOKdy:= 0; + oper.ksZmetNeopr:= 0; + + end; + + if (nactiVP) then + NactiPrikaz; + end; + + + + + procedure TformOdvTavby.edtOpTavbaExit (Sender: TObject); + begin + tavbaCalamari:= false; + edtOpTavba.Text:= Trim(edtOpTavba.Text); + edtOpTavba.Text:= helUtils.StripChars(edtOpTavba.Text, ['''', '"', '-', ';', ' ']); + if (edtOpTavba.Text<>'') then + begin + ZjistiVOp(edtOpTavba.Text, true); + if (prik.stav=0) or (prik.stav>30) then + Helios.Error(#1'Výrobní příkaz operace je již uzavřen.'#1); + + if not(prik.mamP30) then + Helios.Error(#1'Na výrobním příkazu není tavenina, nutno doplnit.'#1); + + end; + if not(tavbaCalamari) then + edtFormir.EditLabel.Caption:= 'Formíř (os.č.):' + else + edtFormir.EditLabel.Caption:= 'Tavič/odlévač (os.č.):' + end; + + + + + procedure TformOdvTavby.edtOpVibrExit (Sender: TObject); + var lSQL, doklad, operace, alt: string; + begin + btnOKNew.Enabled:= true; + btnOK.Enabled:= true; + + edtOpVibr.Text:= StringReplace(Trim(edtOpVibr.Text), ' ', '', [rfReplaceAll]); + edtOpVibr.Text:= helUtils.StripChars(edtOpVibr.Text, ['''', '"', '-', ';', ' ']); +// edtOpVibr.Text:= helUtils.RemoveWords(edtVibrator.Text, ['null']); + if (edtOpVibr.Text<>'') then + begin + ZjistiVOp(edtOpVibr.Text, true); + + if (prik.stav>30) or (prik.stav=0) or (prik.stav=10) then + Helios.Error(#1'Výrobní příkaz je ve stavu Pořízení nebo je již uzavřen'#1) + else + begin + if (prac='T23') and (VyrPrikazMaOperaciPracoviste(idVPr, 'T12') or VyrPrikazMaOperaciPracoviste(idVPr, 'T13')) then + Helios.Info(#1'Snímáte operaci Chlazení ale příkaz má i operaci Vibrování'#1); + + if (ksZive=0) then + begin + btnOKNew.Enabled:= false; + btnOK.Enabled:= false; + Helios.Error(#1'Na operaci nezbývají žádné kusy k odvedení !!'#1); + with Helios.OpenSQL('SELECT Doklad, Alt FROM ' + tblPrPost + ' WHERE IdOdchylkyDo IS NULL AND ID1=' + idVOp.ToString) do + begin + doklad:= VarToStr(FieldValues(0)); + alt:= VarToStr(FieldValues(1)); + Helios.OpenBrowse(bidEvidOp, 'IDPrikaz=' + idVPr.ToString + ' AND DokladPrPostup=' + doklad + ' AND AltPrPostup=N' + QuotedStr(alt)); + end; + edtOpVibr.SelectAll; + edtOpVibr.SetFocus; + end + else + begin + idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDPrikaz FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND ID1=' + idVOp.ToString); + NactiPrikaz; + edtTavbaV.SetFocus; + end; + end; + end; + end; + + + + procedure TformOdvTavby.edtPocetStrChange (Sender: TObject); + begin + edtPocetStrExit(Sender); + end; + + + + procedure TformOdvTavby.edtPocetStrExit (Sender: TObject); + begin + lblKsStrom.Caption:= ksStr.ToString + ' ks/str -> ' + (ksStr*edtPocetStr.Value).ToString + ' ks'; + end; + + + + procedure TformOdvTavby.edtPrikazObecExit (Sender: TObject); + var idRodicDavka: integer; + ksPrikaz, ksDavky: extended; + begin + edtPrikazObec.Text:= Trim(edtPrikazObec.Text); + edtPrikazObec.Text:= helUtils.StripChars(edtPrikazObec.Text, ['''', '"', ';']); + if (edtPrikazObec.Text<>'') then + begin + if (helUtils.PosCount('-',edtPrikazObec.Text)=0) then + begin + case druhDavky of + 1: edtPrikazObec.Text:= '223-31 - ' + edtPrikazObec.Text; + end; + end; + idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblPrikaz + ' WHERE RadaPrikaz=N' + QuotedStr(edtPrikazObec.Text)); + if (idVPr>0) then + begin + NactiPrikaz; + ksPrikaz:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT kusy_zad FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); + ksDavky:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT SUM(Mnozstvi) FROM ' + tblDavky + ' WHERE DruhDavky=4 AND IDPrikaz=' + idVPr.ToString); + lblObecZbyva.Caption:= 'Zbývá předat: ' + (ksPrikaz-ksDavky).ToString; + edtVoskStr.SetFocus; + end + else + begin + lblObecZbyva.Caption:= ''; + Helios.Error(#1'Výrobní příkaz nebyl dohledán.'#1); + edtPrikazObec.SelectAll; + end; + end; + end; + + + + + procedure TformOdvTavby.edtTavbaExit(Sender: TObject); + var lSQL: string; + idVPrN: integer; + begin + opakovanaTavba:= false; + btnOKNew.Enabled:= true; + btnOK.Enabled:= true; + edtTavba.Text:= Trim(edtTavba.Text); + edtTavba.Text:= helUtils.StripChars(edtTavba.Text, ['''', '"', '-', ';', ' ']); + if (edtTavba.Text<>'') then + if (LeftStr(edtTavba.Text,1).ToUpper<>'T') then + Helios.Error('Označení tavby nezačíná písmenem T, vyberte tabvu z číselníku.') + else + begin + // if (edtTavba.Text<>'') then + if (edtTavba.Text<>'') and (idVPr>0) then + begin + lSQL:= 'DECLARE @p1 NVARCHAR(100), @p2 NVARCHAR(100)' + CRLF + 'SELECT @p1=Prijmeni FROM ' + tblCZam + ' WHERE Cislo=(SELECT TOP(1) CisZamTavic FROM ' + tblTavby; + lSQL:= lSQL + ' WHERE CisloTavby=N' + edtTavba.Text.QuotedString + ' ORDER BY Datum DESC)' + CRLF; + lSQL:= lSQL + 'SELECT @p2=Prijmeni FROM ' + tblCZam + ' WHERE Cislo=(SELECT TOP(1) CisZamOdlevac FROM ' + tblTavby; + lSQL:= lSQL + ' WHERE CisloTavby=N' + edtTavba.Text.QuotedString + ' ORDER BY Datum DESC)' + CRLF + 'SELECT @p1 + N'' / '' + @p2' + CRLF; + lblLidiZTavby.Caption:= helUtils.getHeliosStrVal(Helios, '', lSQL); + + lSQL:= 'SELECT p.ID FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IdTabKmen) WHERE p.IDPrikazVyssi=' + idVPr.ToString + ' AND k.SkupZbo=N''P30'''; + idVPrN:= helUtils.getHeliosIntVal(Helios, 0, lSQL); + + mnP31max:= 0; + if (idVOp>0) then + mnP31max:= getParamOperace(idVOp, 'kusy_pozadovane', -999999); + + // A333662B + + + lSQL:= 'SELECT pz.ID FROM ' + tblVyrCP + ' pvc INNER JOIN ' + tblPZ + ' pz ON (pvc.IDPolozkaDokladu=pz.ID) INNER JOIN ' + tblVyrCS + ' vc ON (vc.ID=IDVyrCis)'; + lSQL:= lSQL + ' WHERE ISNULL(pz.IDPrikaz,0)=' + idVPrN.ToString + ' AND pz.SkupZbo=N''P30'' AND pz.DruhPohybuZbo=0 AND pz.TypVyrobnihoDokladu=0 AND vc.Nazev1=N'; + lSQL:= lSQL + edtTavba.Text.QuotedString; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + if not(Helios.YesNo(#1'Pozor, tato tavba již byla na podřízený příkaz P30 použita.' + CRLF + 'Chcete ji použít znovu ?' + #1, false)) then + begin + btnOKNew.Enabled:= false; + btnOK.Enabled:= false; + edtTavba.Text:= ''; + edtTavba.SetFocus; + end + else + opakovanaTavba:= true; + + end; + end + else + lblLidiZTavby.Caption:= ''; + end; + end; + + + + + procedure TformOdvTavby.edtTavbaVExit(Sender: TObject); + var lSQL: string; + begin + edtTavbaV.Text:= Trim(edtTavbaV.Text); + edtTavbaV.Text:= helUtils.StripChars(edtTavbaV.Text, ['''', '"', '-', ';', ' ']); + if (edtTavbaV.Text<>'') then + if (LeftStr(edtTavbaV.Text,1).ToUpper<>'T') then + Helios.Error('Označení tavby nezačíná písmenem T, vyberte tabvu z číselníku.') + else + begin + if (edtTavbaV.Text<>'') then + begin + lSQL:= 'DECLARE @p1 NVARCHAR(100), @p2 NVARCHAR(100)' + CRLF + 'SELECT @p1=Prijmeni FROM ' + tblCZam + ' WHERE Cislo=(SELECT TOP(1) CisZamTavic FROM ' + tblTavby; + lSQL:= lSQL + ' WHERE CisloTavby=N' + QuotedStr(edtTavbaV.Text) + ' ORDER BY Datum DESC)' + CRLF; + lSQL:= lSQL + 'SELECT @p2=Prijmeni FROM ' + tblCZam + ' WHERE Cislo=(SELECT TOP(1) CisZamOdlevac FROM ' + tblTavby; + lSQL:= lSQL + ' WHERE CisloTavby=N' + QuotedStr(edtTavbaV.Text) + ' ORDER BY Datum DESC)' + CRLF + 'SELECT @p1 + N'' / '' + @p2' + CRLF; + lblLidiZTavby2.Caption:= helUtils.getHeliosStrVal(Helios, '', lSQL); + + if (helUtils.HeliosObjectExists(Helios, 'dbo._hdc_konfig')) then + if (helUtils.getHeliosStrVal(Helios, '0', 'SELECT TOP(1) Hodnota FROM dbo._hdc_konfig WHERE Parametr=N''TavirnaKontrola''')='1') then + if not(helUtils.HeliosExistsTest(Helios, 'dbo._hdc_TabTavby', 'KontrolaStav=1 AND CisloTavby=N' + edtTavbaV.Text.QuotedString)) then + Helios.Error(#1'POZOR - tato TAVBA NEBYLA ZATÍM UVOLNĚNA !'#1 + CRLF + '(odlitky z ní nepůjou převést na další sklad)'); +{ + lSQL:= 'SELECT ID FROM ' + tblTavby + ' WHERE CisloTavby=N' + edtTavbaV.Text.QuotedString + ' AND KontrolaStav<>1'; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + Helios.Error(#1'!! Pozor, tavba ' + edtTavbaV.Text + ' NENÍ zatím UVOLNĚNA !!' + #1); +} + end + else + lblLidiZTavby2.Caption:= ''; + end; + end; + + + + procedure TformOdvTavby.edtVibratorExit(Sender: TObject); + begin + edtVibrator.Text:= StringReplace(Trim(edtVibrator.Text), ' ', '', [rfReplaceAll]); + edtVibrator.Text:= helUtils.StripChars(edtVibrator.Text, ['''', '"', '-', ';', ' ']); + edtVibrator.Text:= helUtils.RemoveWords(edtVibrator.Text, ['null']); + edtVibrator.Text:= helUtils.RemoveAlphas(edtVibrator.Text); + if (edtVibrator.Text<>'') then + begin + if (helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblCZam + ' WHERE Cislo=' + edtVibrator.Text)=0) then + begin + Helios.Error(#1'Osobní číslo zaměstnance nebylo nalezeno.'#1 + CRLF + edtVibrator.Text); + edtVibrator.Text:= ''; + lblVibrator.Caption:= ''; + edtVibrator.SetFocus; + end + else + begin + edtVibrator.Text:= StringOfChar('0', 6-Length(edtVibrator.Text)) + edtVibrator.Text; + lblVibrator.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT PrijmeniJmeno FROM ' + tblCZam + ' WHERE Cislo=' + edtVibrator.Text); + edtStrCelk.SelectAll; + edtStrCelk.SetFocus; + end; + end; + end; + + + + procedure TformOdvTavby.edtVoskPrikazExit(Sender: TObject); + var lSQL: string; + cnt: integer; + ksPrikaz, ksDavky: integer; + begin + edtVoskPrikaz.Text:= Trim(edtVoskPrikaz.Text); + edtVoskPrikaz.Text:= helUtils.StripChars(edtVoskPrikaz.Text, ['''', '"', ';']); + if (edtVoskPrikaz.Text<>'') then + begin + if (helUtils.PosCount('-',edtVoskPrikaz.Text)=0) then + edtVoskPrikaz.Text:= '221-12 - ' + edtVoskPrikaz.Text; + idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblPrikaz + ' WHERE RadaPrikaz=N' + QuotedStr(edtVoskPrikaz.Text)); + if (idVPr>0) then + begin + NactiPrikaz; + cnt:= 1 + helUtils.getHeliosIntVal(Helios, 0, 'SELECT MAX(Pozice) FROM ' + tblDavky + ' WHERE DruhDavky=1 AND IDPrikaz=' + idVPr.ToString); + cDavky:= cnt; + lblVoskDavka.Caption:= 'Dávka č. ' + cnt.ToString; + ksPrikaz:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT kusy_zad FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); + ksDavky:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT SUM(Mnozstvi) FROM ' + tblDavky + ' WHERE DruhDavky=1 AND IDPrikaz=' + idVPr.ToString); + lblVoskZbyva.Caption:= 'Zbývá předat: ' + (ksPrikaz-ksDavky).ToString; + edtVoskStr.SetFocus; + end + else + begin + lblVoskDavka.Caption:= ''; + Helios.Error(#1'Výrobní příkaz nebyl dohledán.'#1); + edtVoskPrikaz.SelectAll; + end; + end; + end; + + + + procedure TformOdvTavby.edtVoskStrExit(Sender: TObject); + begin + if not(TestMamNaPrevod('00100100221400')) then + edtVoskStr.Value:= 0; + end; + + + + procedure TformOdvTavby.edtZamP42Exit(Sender: TObject); + begin + edtZamP42.Text:= StringReplace(Trim(edtZamP42.Text), ' ', '', [rfReplaceAll]); + edtZamP42.Text:= helUtils.StripChars(edtZamP42.Text, ['''', '"', '-', ';', ' ']); + edtZamP42.Text:= helUtils.RemoveWords(edtZamP42.Text, ['null']); + edtZamP42.Text:= helUtils.RemoveAlphas(edtZamP42.Text); + if (edtZamP42.Text<>'0') then + begin + if (helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblCZam + ' WHERE Cislo=' + edtZamP42.Text)=0) then + begin + Helios.Error(#1'Osobní číslo zaměstnance nebylo nalezeno.'#1 + CRLF + edtZamP42.Text); + edtZamP42.Text:= ''; + edtZamP42.SetFocus; + lblZamP42.Caption:= ''; + end + else + begin + edtZamP42.Text:= StringOfChar('0', 6-Length(edtZamP42.Text)) + edtZamP42.Text; + lblZamP42.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT PrijmeniJmeno FROM ' + tblCZam + ' WHERE Cislo=' + edtZamP42.Text); + edtDavkaObr.SelectAll; + end; + end; + end; + + + + + procedure TformOdvTavby.edtZamStrExit(Sender: TObject); + begin + edtZamStr.Text:= Trim(edtZamStr.Text); + edtZamStr.Text:= StringReplace(edtZamStr.Text, ' ', '', [rfReplaceAll]); + edtZamStr.Text:= helUtils.StripChars(edtZamStr.Text, ['''', '"', '-', ';', ' ']); + edtZamStr.Text:= helUtils.RemoveWords(edtZamStr.Text, ['null']); + edtZamStr.Text:= helUtils.RemoveAlphas(edtZamStr.Text); + if (edtZamStr.Text<>'') then + begin + if (helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblCZam + ' WHERE Cislo=' + edtZamStr.Text)=0) then + begin + Helios.Error(#1'Osobní číslo zaměstnance nebylo nalezeno.'#1 + CRLF + edtZamStr.Text); + edtZamStr.Text:= ''; + lblZamest.Caption:= ''; + edtZamStr.SetFocus; + end + else + begin + edtZamStr.Text:= StringOfChar('0', 6-Length(edtZamStr.Text)) + edtZamStr.Text; + lblZamest.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT PrijmeniJmeno FROM ' + tblCZam + ' WHERE Cislo=' + edtZamStr.Text); + edtStrStr.SelectAll; + edtStrStr.SetFocus; + end; + end; + end; + + + + + procedure TformOdvTavby.FormClose(Sender: TObject; var Action: TCloseAction); + begin + if (vTab.Active) then + vTab.Close; + Action:= caFree; + end; + + + + procedure TformOdvTavby.FormResize(Sender: TObject); + begin + btnOK.Top:= pgCtrl.Top + pgCtrl.Height + 15; + btnOKNew.Top:= btnOK.Top; + btnStorno.Top:= btnOK.Top; + end; + + + + procedure TformOdvTavby.FormShow(Sender: TObject); + var lSQL: string; + i: integer; + begin + self.ParentWindow:= Helios.MainApplicationHandle; + self.Height:= 645; + self.Icon.Handle:= Helios.MainApplicationIconHandle; + + pgCtrl.Height:= 435; + gbEvidPrace.Top:= 627; + + if (jeTest) then + self.Caption:= self.Caption + ' TEST '; + +{ + for i:=0 to Self.ComponentCount-1 do + begin + if (Self.Components[i] is TButton) then + begin + (Self.Components[i] as TButton).Font.Name:= Helios.Font; + (Self.Components[i] as TButton).Font.Height:= Helios.FontHeight; + end; + if (Self.Components[i] is TTB_3Button) then + begin +// (Self.Components[i] as TTB_3Button).Width:= 30; +// (Self.Components[i] as TTB_3Button).Height:= 30; + end; + end; +} + idVPr:= 0; + idVOp:= 0; + edtStrStr.Value:= 0; + edtTavba.Text:= ''; + tavbaCalamari:= false; + edtTavbaV.Text:= ''; + edtOperP42.Text:= ''; + + pgCtrl.Height:= 435; + + btnNew:= false; + + bidTavby:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_TavbyPosledniData'''); + bidDavky:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_Davky'''); + + case typ of + 1: begin + Self.Caption:= 'Evidence práce Tavení'; + pgCtrl.ActivePageIndex:= shTavba.PageIndex; + edtOpTavba.SetFocus; + pgCtrl.Pages[shVibrovani.PageIndex].TabVisible:= false; + pgCtrl.Pages[shOdvStr.PageIndex].TabVisible:= false; + pgCtrl.Pages[shPrevodVosk.PageIndex].TabVisible:= false; + pgCtrl.Pages[shDavkaObec.PageIndex].TabVisible:= false; + pgCtrl.Pages[shP42.PageIndex].TabVisible:= false; + end; + 2: begin + Self.Caption:= 'Evidence práce Vibrování'; + self.Height:= 760; + pgCtrl.Height:= 540; + gbEvidPrace.Top:= 735; + pgCtrl.ActivePageIndex:= shVibrovani.PageIndex; + edtOpVibr.SetFocus; + pgCtrl.Pages[shTavba.PageIndex].TabVisible:= false; + pgCtrl.Pages[shOdvStr.PageIndex].TabVisible:= false; + pgCtrl.Pages[shPrevodVosk.PageIndex].TabVisible:= false; + pgCtrl.Pages[shDavkaObec.PageIndex].TabVisible:= false; + pgCtrl.Pages[shP42.PageIndex].TabVisible:= false; + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabDruhDavky'') IS NOT NULL DROP TABLE #TabDruhDavky' + CRLF + 'CREATE TABLE #TabDruhDavky (DruhDavky TINYINT NOT NULL)'; + lSQL:= lSQL + 'INSERT #TabDruhDavky (DruhDavky) VALUES (3)'; + Helios.ExecSQL(lSQL); + end; + 3: begin + Self.Caption:= 'Evidence práce STR'; + pgCtrl.ActivePageIndex:= shOdvStr.PageIndex; + edtOpStr.SetFocus; + pgCtrl.Pages[shTavba.PageIndex].TabVisible:= false; + pgCtrl.Pages[shVibrovani.PageIndex].TabVisible:= false; + pgCtrl.Pages[shPrevodVosk.PageIndex].TabVisible:= false; + pgCtrl.Pages[shDavkaObec.PageIndex].TabVisible:= false; + pgCtrl.Pages[shP42.PageIndex].TabVisible:= false; + edtDavkaStr.Enabled:= false; + selDavkaStr.Enabled:= false; + Label8.Enabled:= false; + end; + 4: begin + Self.Caption:= 'Dávka VOSK->OBALOVNA'; + pgCtrl.ActivePageIndex:= shPrevodVosk.PageIndex; + edtVoskPrikaz.SetFocus; + pgCtrl.Pages[shTavba.PageIndex].TabVisible:= false; + pgCtrl.Pages[shVibrovani.PageIndex].TabVisible:= false; + pgCtrl.Pages[shOdvStr.PageIndex].TabVisible:= false; + pgCtrl.Pages[shDavkaObec.PageIndex].TabVisible:= false; + pgCtrl.Pages[shP42.PageIndex].TabVisible:= false; + datVoskDatum.DateTime:= Now; + end; + 5: begin + Self.Caption:= 'Dávka obecná'; + case druhDavky of + 1: begin + Self.Caption:= 'Dávka KONEČNÁ'; + cbMJObec.ItemIndex:= cbMJObec.Items.IndexOf('ks'); + end; + end; + pgCtrl.ActivePageIndex:= shDavkaObec.PageIndex; + edtPrikazObec.SetFocus; + pgCtrl.Pages[shTavba.PageIndex].TabVisible:= false; + pgCtrl.Pages[shVibrovani.PageIndex].TabVisible:= false; + pgCtrl.Pages[shOdvStr.PageIndex].TabVisible:= false; + pgCtrl.Pages[shPrevodVosk.PageIndex].TabVisible:= false; + pgCtrl.Pages[shP42.PageIndex].TabVisible:= false; + datDavkaObec.DateTime:= Now; + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabDruhDavky'') IS NOT NULL DROP TABLE #TabDruhDavky' + CRLF + 'CREATE TABLE #TabDruhDavky (DruhDavky TINYINT NOT NULL)'; + lSQL:= lSQL + 'INSERT #TabDruhDavky (DruhDavky) VALUES (4)'; + Helios.ExecSQL(lSQL); + end; + 6: begin + Self.Caption:= 'Dávka KONEČNÁ->OBRÁBĚNÍ'; + pgCtrl.ActivePageIndex:= shP42.PageIndex; + edtOperP42.SetFocus; + pgCtrl.Pages[shTavba.PageIndex].TabVisible:= false; + pgCtrl.Pages[shVibrovani.PageIndex].TabVisible:= false; + pgCtrl.Pages[shOdvStr.PageIndex].TabVisible:= false; + pgCtrl.Pages[shPrevodVosk.PageIndex].TabVisible:= false; + pgCtrl.Pages[shDavkaObec.PageIndex].TabVisible:= false; + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabDruhDavky'') IS NOT NULL DROP TABLE #TabDruhDavky' + CRLF + 'CREATE TABLE #TabDruhDavky (DruhDavky TINYINT NOT NULL)' + CRLF; + lSQL:= lSQL + 'INSERT #TabDruhDavky (DruhDavky) VALUES (6)'; + Helios.ExecSQL(lSQL); + end; + + end; + pgCtrl.Repaint; + end; + + + + + procedure TformOdvTavby.NactiTavbu(const idTavby: Integer); + var lSQL: string; + begin + if (idTavby>0) then + begin + lSQL:= ''; + end; + end; + + + + + procedure TformOdvTavby.selTavbaClick(Sender: TObject); + var podm: string; + begin +// oVar:= helUtils.getHeliosIntVal(Helios, 'SELECT ID FROM ' + tblTavby + ' WHERE CisloTavby=N' + QuotedStr(edtTavba.Text)); + oVar:= Trim(edtTavba.Text); + podm:= 'DATEDIFF(month,hvw_TavbyPosledniData.Datum,GETDATE())<3'; + if (tavbaCalamari) then + podm:= podm + ' AND hvw_TavbyPosledniData.CisloPece IN (21,22)'; +// if Helios.Prenos(bidTavby, 'hvw_TavbyPosledniData.ID', oVar, '', 'Vyberte tavbu', true) then + if Helios.Prenos(bidTavby, 'hvw_TavbyPosledniData.CisloTavby', oVar, podm, 'Vyberte tavbu', true) then + begin +// edtTavba.Text:= helUtils.getHeliosStrVal(Helios, 'SELECT CisloTavby FROM ' + tblTavby + ' WHERE ID=' + VarToStr(oVar)); + edtTavba.Text:= VarToStr(oVar); + edtTavbaExit(Sender); + end; + if (btnOK.Enabled) then + edtFormir.SetFocus; + end; + + + + procedure TformOdvTavby.selTavbaVClick(Sender: TObject); + var podm: string; + begin +// oVar:= helUtils.getHeliosIntVal(Helios, 'SELECT ID FROM ' + tblTavby + ' WHERE CisloTavby=N' + QuotedStr(edtTavba.Text)); + podm:= 'DATEDIFF(month,hvw_TavbyPosledniData.Datum,GETDATE())<3'; + if (tavbaCalamari) then + podm:= podm + ' AND hvw_TavbyPosledniData.CisloPece IN (21,22)'; + oVar:= edtTavbaV.Text; + if Helios.Prenos(bidTavby, 'hvw_TavbyPosledniData.CisloTavby', oVar, podm, 'Vyberte tavbu', true) then + begin + edtTavbaV.Text:= VarToStr(oVar); + edtTavbaVExit(Sender); + end; + edtVibrator.SetFocus; + end; + + + + procedure TformOdvTavby.selVibratorClick(Sender: TObject); + var podm, selMes: string; + cM, cR: integer; + begin +// ziskej ID mzdObd za tento a predchozi mesic + cM:= MonthOf(Now); + cR:= YearOf(Now); + selMes:= helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + cR.ToString + ' AND Mesic=' + cM.ToString); + if (cM=1) then + selMes:= selMes + IfThen(selMes<>'', ', ', '') + helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + (cR-1).ToString + ' AND Mesic=12') + else + selMes:= selMes + IfThen(selMes<>'', ', ', '') + helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + cR.ToString + ' AND Mesic=' + (cM-1).ToString); + + podm:= 'TabCisZam.ID IN (SELECT z.ZamestnanecID FROM ' + tblZamDopl + ' z INNER JOIN ' + tblProfes + ' p ON (p.Cislo=z.Profese) INNER JOIN ' + tblZamMzd; + podm:= podm + ' m ON (m.ZamestnanecID=z.ZamestnanecID AND z.IDObdobi=m.IDObdobi) WHERE m.StavES=0 AND m.Stredisko=N''00100100223'''; + podm:= podm + ' AND z.IDObdobi IN (' + selMes + '))'; + + oVar:= edtVibrator.Text; + if Helios.Prenos(bidCisZam, 'TabCisZam.Cislo', oVar, podm, 'Vyberte Vibrovače', true) then + edtVibrator.Text:= StringOfChar('0', 6-Length(VarToStr(oVar))) + VarToStr(oVar); + edtStrCelk.SetFocus; + end; + + + + procedure TformOdvTavby.selVoskPrikazClick(Sender: TObject); + var lSQL, podm, id: string; + begin + podm:= 'TabPrikaz.StavPrikazu IN (30,50,60) AND TabPrikaz.Rada=N''221-12'''; + if Helios.Prenos(bidVyrPrik, 'TabPrikaz.ID', oVar, podm, 'Vyberte příkaz', true) then + begin + id:= VarToStr(oVar); + edtVoskPrikaz.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT RadaPrikaz FROM ' + tblPrikaz + ' WHERE ID=' + id); + edtVoskPrikazExit(Sender); + end; + end; + + + + + procedure TformOdvTavby.selZamP42Click(Sender: TObject); + var podm, selMes: string; + cM, cR: integer; + begin +// ziskej ID mzdObd za tento a predchozi mesic + cM:= MonthOf(Now); + cR:= YearOf(Now); + selMes:= helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + cR.ToString + ' AND Mesic=' + cM.ToString); + if (cM=1) then + selMes:= selMes + IfThen(selMes<>'', ', ', '') + helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + (cR-1).ToString + ' AND Mesic=12') + else + selMes:= selMes + IfThen(selMes<>'', ', ', '') + helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + cR.ToString + ' AND Mesic=' + (cM-1).ToString); + + podm:= 'TabCisZam.ID IN (SELECT z.ZamestnanecID FROM ' + tblZamDopl + ' z INNER JOIN ' + tblProfes + ' p ON (p.Cislo=z.Profese) INNER JOIN ' + tblZamMzd; + podm:= podm + ' m ON (m.ZamestnanecID=z.ZamestnanecID AND z.IDObdobi=m.IDObdobi) WHERE m.StavES=0 AND m.Stredisko=N''00100100224'''; + podm:= podm + ' AND z.IDObdobi IN (' + selMes + '))'; + + oVar:= edtZamP42.Text; + if Helios.Prenos(bidCisZam, 'TabCisZam.Cislo', oVar, podm, 'Vyberte zaměstnance', true) then + edtZamP42.Text:= StringOfChar('0', 6-Length(VarToStr(oVar))) + VarToStr(oVar); + edtZamP42Exit(Sender); + end; + + + + + procedure TformOdvTavby.selZamP42Exit(Sender: TObject); + begin + if (edtZamP42.Value>0) then + edtDavkaObr.SetFocus; + end; + + + + procedure TformOdvTavby.selZamStrClick(Sender: TObject); + var podm, selMes: string; + cM, cR: integer; + begin +// ziskej ID mzdObd za tento a predchozi mesic + cM:= MonthOf(Now); + cR:= YearOf(Now); + selMes:= helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + cR.ToString + ' AND Mesic=' + cM.ToString); + if (cM=1) then + selMes:= selMes + IfThen(selMes<>'', ', ', '') + helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + (cR-1).ToString + ' AND Mesic=12') + else + selMes:= selMes + IfThen(selMes<>'', ', ', '') + helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + cR.ToString + ' AND Mesic=' + (cM-1).ToString); + + podm:= 'TabCisZam.ID IN (SELECT z.ZamestnanecID FROM ' + tblZamDopl + ' z INNER JOIN ' + tblProfes + ' p ON (p.Cislo=z.Profese) INNER JOIN ' + tblZamMzd; + podm:= podm + ' m ON (m.ZamestnanecID=z.ZamestnanecID AND z.IDObdobi=m.IDObdobi) WHERE m.StavES=0 /* AND m.Stredisko=N''00100100223'' */'; + podm:= podm + ' AND z.IDObdobi IN (' + selMes + '))'; + + oVar:= edtZamStr.Text; + if Helios.Prenos(bidCisZam, 'TabCisZam.Cislo', oVar, podm, 'Vyberte zaměstnance', true) then + edtZamStr.Text:= StringOfChar('0', 6-Length(VarToStr(oVar))) + VarToStr(oVar); + edtZamStrExit(Sender); + end; + + + + + procedure TformOdvTavby.NactiPrikaz; + var lSQL, skl, eMsg, prac, rc: string; + z, k: Extended; + idKZ: integer; + canCont, pracOK: boolean; + begin + prik.id:= 0; + prik.regC:= ''; + prik.sz:= ''; + prik.idKZ:= 0; + prik.sklad:= ''; + prik.stav:= 0; + prik.mamP30:= false; + + if (idVPr>0) then + begin + skl:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Sklad FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); + + lSQL:= 'SELECT k.RegCis, k.Nazev1, p.RadaPrikaz, CASE WHEN ISNULL(o.MamMatecniOdlitek,0)=1 THEN ISNULL(o1.KSnaStrom,0) ELSE ISNULL(o.KSnaStrom,0) END'; + lSQL:= lSQL + ', k.ID, p.StavPrikazu, k.SkupZbo FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen)'; + lSQL:= lSQL + ' LEFT JOIN ' + tblOdlitky + ' o ON (k.RegCis=o.Odlitek) LEFT JOIN ' + tblOdlitky + ' o1 ON (o1.Odlitek=o.MatecniOdlitek)'; + lSQL:= lSQL + ' WHERE p.ID=' + idVPr.ToString; + with Helios.OpenSQL(lSQL) do + if (RecordCount=1) then + begin + rc:= VarToStr(FieldByNameValues('RegCis')); + idKZ:= StrToInt(VarToStr(FieldByNameValues('ID'))); + lblPopis.Caption:= rc + ' ' + VarToStr(FieldByNameValues('Nazev1')); + + prik.id:= idVPr; + prik.regC:= rc; + prik.sz:= VarToStr(FieldByNameValues('SkupZbo')); + prik.idKZ:= idKZ; + prik.sklad:= skl; + prik.mamP30:= false; + + if (idVOp>0) and (pgCtrl.ActivePageIndex=shTavba.PageIndex) or (pgCtrl.ActivePageIndex=shVibrovani.PageIndex) or (pgCtrl.ActivePageIndex=shOdvStr.PageIndex) then + begin + canCont:= (lblOperace.Caption<>''); + lSQL:= 'SELECT p.Pracoviste FROM ' + tblPrPost + ' o INNER JOIN ' + tblCPrac + ' p ON (o.pracoviste=p.ID) WHERE o.ID=' + idVOp.ToString; + prac:= helUtils.getHeliosStrVal(Helios, '', lSQL); + +// T09/T11 - tavba + pracOK:= (prac='T11') or (prac='T09'); + if (pgCtrl.ActivePageIndex=shTavba.PageIndex) and not(pracOK) then + begin + canCont:= false; + if (tavbaCalamari) then + Helios.Error(#1 + rc + ': Naskenovaná operace ' + idVOp.ToString + ' není TAVENÍ a ODLÉVÁNÍ.'#1) + else + Helios.Error(#1 + rc + ': Naskenovaná operace ' + idVOp.ToString + ' není ODLÉVÁNÍ.'#1); + edtOpTavba.Text:= ''; + end; +// T12 - vibrace nebo T15 - rucni + pracOK:= (prac='T12') or (prac='T13') or (prac='T15'); + if (pgCtrl.ActivePageIndex=shVibrovani.PageIndex) and not(pracOK) then + begin + canCont:= false; + Helios.Error(#1 + rc + ': Naskenovaná operace č.' + idVOp.ToString + ' není VIBROVÁNÍ (prac.T12/13/15).'#1); + edtOpVibr.Text:= ''; + end; + + if (prik.sz='P31') then + begin + lSQL:= 'SELECT 1 FROM ' + tblPrVaz + ' v INNER JOIN ' + tblKZ + ' k ON (k.ID=v.nizsi) WHERE v.IDOdchylkyDo IS NULL AND v.IDPrikaz=' + prik.id.ToString + ' AND k.SkupZbo=N''P30'''; + if (helUtils.sqlExistsTestGeneral(Helios, lSQL)) then + prik.mamP30:= true; + end; + + if (canCont) then + begin + if not TryStrToFloat(VarToStr(FieldValues(3)), k) then + k:= 0; + lblKsStrom.Caption:= k.ToString + ' ks/str'; + ksStr:= k; + z:= 0; + if (idVOp>0) then + begin + z:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT kusy_zad FROM ' + tblPrPost + ' WHERE ID=' + idVOp.ToString); + lSQL:= 'SELECT ISNULL(SUM(m.kusy_odv + m.kusy_zmet_neopr),0) FROM ' + tblMzdZm + ' m INNER JOIN ' + tblPrPost + ' p ON (p.IDPrikaz=m.IDPrikaz AND '; + lSQL:= lSQL + 'm.DokladPrPostup=p.Doklad AND ISNULL(m.AltPrPostup,N''Q'')=ISNULL(p.Alt,N''Q'')) WHERE p.ID=' + idVOp.ToString; + z:= z-helUtils.getHeliosFloatVal(Helios, 0, lSQL); + end; + if (z<0) then + z:= 0; + if (k>0) then + z:= z/k; + lblPrikaz.Caption:= 'VPř ' + VarToStr(FieldValues(2)) + ' / dodělat ' + IfThen(k=0, z.ToString, helUtils.RoundToEX(z,-2).ToString) + ' STR' + end + else + begin + lblPrikaz.Caption:= ''; + lblOperace.Caption:= ''; + idVPr:= 0; + idVOp:= 0; + end; + end; + if (idKZ>0) and ((pgCtrl.ActivePageIndex=shPrevodVosk.PageIndex) or (pgCtrl.ActivePageIndex=shDavkaObec.PageIndex) or (pgCtrl.ActivePageIndex=shP42.PageIndex)) then + begin // prevod vosk -> obalovna + lblPrikaz.Caption:= 'VPř ' + VarToStr(FieldValues(2)) + ' / dodělat '; + lblPrikaz.Caption:= lblPrikaz.Caption + helUtils.getHeliosStrVal(Helios, '', 'SELECT kusy_zive FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); + lSQL:= 'SELECT Mnozstvi FROM ' + tblSS + ' WHERE IDSklad=N' + QuotedStr(skl) + ' AND IDKmenZbozi=' + idKZ.ToString; + k:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + lblPrikaz.Caption:= lblPrikaz.Caption + ' / skl ' + FloatToStr(k); + end; + prik.stav:= StrToInt(VarToStr(FieldValues(5))); + eMsg:= ''; + case prik.stav of + 10: eMsg:= 'POZOR, příkaz je jen Pořízen'; + 20: eMsg:= 'POZOR, příkaz je jen Předzpracován'; + 50: eMsg:= 'POZOR, příkaz Ukončen'; + 60: eMsg:= 'POZOR, příkaz Uzavřen'; + end; + if (eMsg<>'') then + Helios.Error(#1 + '!!! ' + eMsg + ' - ' + rc + ' - operace ' + idVOp.ToString + ' NEBUDE EVIDOVÁNA !!!' + #1); + end; + end + else + begin + lblPopis.Caption:= ''; + lblPrikaz.Caption:= ''; + end; + end; + + + + procedure TformOdvTavby.selDavkaClick(Sender: TObject); + var lSQL, podm, kodDavky, r: string; + begin +// u:= helUtils.getHeliosStrVal(Helios, 'SELECT SUSER_SNAME()'); +// druhDavky:= helUtils.getHeliosIntVal(Helios, 'SELECT DruhDavky FROM ' + tblDavkyDU + ' WHERE LoginName=SUSER_SNAME()'); + idDavka:= 0; + bidDavky:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_Davky'''); + r:= '2020'; + if (idVPr>0) then + r:= helUtils.getHeliosStrVal (Helios, r, 'SELECT DATEPART(year, zadani) FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); + podm:= 'hvw_Davky.Uzavreno=0 AND DATEDIFF(month, hvw_Davky.DatPorizeni,GETDATE())<3 AND hvw_Davky.DruhDavky=3'; // AND hvw_Davky.Rok=' + r; + if (bidDavky>0) then + if Helios.Prenos2(bidDavky, 'hvw_Davky.CisloPozice', 'hvw_Davky.KodDavky', oVar, oVar2, podm, 'Dávky', false, true, false, 1) then + begin + edtDavka.Text:= VarToStr(oVar); + kodDavky:= VarToStr(oVar2); + edtDavka.Text:= helUtils.StripChars(edtDavka.Text, ['''', 'N']); + podm:= 'SELECT ID FROM ' + tblDavky + ' WHERE Uzavreno=0 AND KodDavky=N' + kodDavky.QuotedString + ' AND DruhDavky=3'; + idDavka:= helUtils.getHeliosIntVal (Helios, 0, podm); +{ + lSQL:= 'SELECT TOP(1) k.RegCis FROM ' + tblDavky + ' d INNER JOIN ' + tblPrikaz + ' vp ON (vp.ID=d.IDPrikaz) INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IDTabKmen)'; + lSQL:= lSQL + ' WHERE d.DruhDavky=3 AND d.Rok=' + r + ' AND d.Cislo=(SELECT Cislo FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString + ')'; + lSQL:= lSQL + ' AND d.CisloPozice<>N' + QuotedStr(edtDavka.Text); + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + r:= VarToStr(FieldValues(0)); + if (r<>prik.regC) then + begin + Helios.Error(#1'!! CHYBA - na dávku nelze přidávat rozdílné odlitky !!'#1); + idDavka:= 0; + edtDavka.Text:= ''; + selDavka.SetFocus; + end + else + btnOK.SetFocus; + end + else +} + btnOK.SetFocus; + end + else + begin + edtDavka.Text:= ''; + selDavka.SetFocus; + idDavka:= 0; + end; + end; + + + + procedure TformOdvTavby.selDavkaObecClick (Sender: TObject); + var lSQL, podm: string; + begin + idDavka:= 0; + podm:= 'hvw_Davky.Uzavreno=0 AND DATEDIFF(month, hvw_Davky.DatPorizeni,GETDATE())<3'; + if (typ=5) and (druhDavky=1) then + podm:= podm + ' AND hvw_Davky.DruhDavky=4'; + + if (bidDavky>0) then + if Helios.Prenos(bidDavky, 'hvw_Davky.CisloPozice', oVar, podm, 'Vyberte dávku', true) then + begin + edtDavkaObec.Text:= VarToStr(oVar); + podm:= 'SELECT ID FROM ' + tblDavky + ' WHERE Uzavreno=0 AND CisloPozice=N' + QuotedStr(edtDavkaObec.Text); + if (typ=5) and (druhDavky=1) then + podm:= podm + ' AND DruhDavky=4'; + idDavka:= helUtils.getHeliosIntVal(Helios, 0, podm); + idDavkaRodic:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDRodic FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString); + edtStrObec.SelectAll; + edtStrObec.SetFocus; + end + else + begin + edtDavkaObec.Text:= ''; + selDavkaObec.SetFocus; + end; + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabDruhDavky'') IS NOT NULL DROP TABLE #TabDruhDavky'; + Helios.ExecSQL(lSQL); + end; + + + + + procedure TformOdvTavby.selDavkaObrClick (Sender: TObject); + var lSQL, podm, rD: string; + begin +// u:= helUtils.getHeliosStrVal(Helios, 'SELECT SUSER_SNAME()'); +// druhDavky:= helUtils.getHeliosIntVal(Helios, 'SELECT DruhDavky FROM ' + tblDavkyDU + ' WHERE LoginName=SUSER_SNAME()'); + idDavka:= 0; + edtDavkaObr.Text:= ''; + selDavkaObr.SetFocus; + podm:= 'hvw_Davky.Uzavreno=0 AND hvw_Davky.DruhDavky=6'; + if Helios.Prenos2(bidDavky, 'hvw_Davky.CisloPozice', 'hvw_Davky.ID', oVar, oVar2, podm, 'Vyberte dávku', false, true, false, 1) then + begin + edtDavkaObr.Text:= VarToStr(oVar); + edtDavkaObr.Text:= helUtils.StripChars(edtDavkaObr.Text, ['''', 'N']); + idDavka:= StrToInt(VarToStr(oVar2)); + lblDavkaObr.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Rok FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString); + lblDavkaObr.Caption:= Trim(lblDavkaObr.Caption + ' / ' + getTextDruhDavky(idDavka)); + btnOK.SetFocus; + end; + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabDruhDavky'') IS NOT NULL DROP TABLE #TabDruhDavky'; + Helios.ExecSQL(lSQL); + end; + + + + + procedure TformOdvTavby.selDavkaStrClick (Sender: TObject); + var lSQL, podm, rD, cD: string; + begin +// u:= helUtils.getHeliosStrVal(Helios, 'SELECT SUSER_SNAME()'); +// druhDavky:= helUtils.getHeliosIntVal(Helios, 'SELECT DruhDavky FROM ' + tblDavkyDU + ' WHERE LoginName=SUSER_SNAME()'); + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabDruhDavky'') IS NOT NULL DROP TABLE #TabDruhDavky' + CRLF + 'CREATE TABLE #TabDruhDavky (DruhDavky TINYINT NOT NULL)'; +// lSQL:= lSQL + 'INSERT #TabDruhDavky (DruhDavky) VALUES (3)'; + Helios.ExecSQL(lSQL); + idDavka:= 0; + podm:= 'hvw_Davky.Uzavreno=0 AND hvw_Davky.DruhDavky=4'; + if (bidDavky>0) then + if Helios.Prenos2(bidDavky, 'hvw_Davky.CisloPozice', 'hvw_Davky.ID', oVar, oVar2, podm, 'Vyberte dávku', false, true, false, 1) then + begin + edtDavkaStr.Text:= VarToStr(oVar); + edtDavkaStr.Text:= helUtils.StripChars(edtDavkaStr.Text, ['''', 'N']); + idDavka:= StrToInt(VarToStr(oVar2)); + + rD:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Rok FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString); + lSQL:= 'SELECT TOP(1) k.RegCis FROM ' + tblDavky + ' d INNER JOIN ' + tblPrikaz + ' vp ON (vp.ID=d.IDPrikaz) INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IDTabKmen)'; + lSQL:= lSQL + ' WHERE d.DruhDavky=4 AND d.Rok=' + rD + ' AND d.Cislo=(SELECT Cislo FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString + ')'; + lSQL:= lSQL + ' AND d.CisloPozice<>N' + QuotedStr(edtDavkaStr.Text); + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + begin + rD:= VarToStr(FieldValues(0)); + if (rD<>prik.regC) then + begin + Helios.Error(#1'!! CHYBA - na dávku pro Konečnou nelze přidávat rozdílné odlitky !!'#1); + idDavka:= 0; + edtDavkaStr.Text:= ''; + edtDavkaStr.SetFocus; + end + else + edtDavkaStrExit(Sender); + end + else + edtDavkaStrExit(Sender); + end + else + begin + edtDavkaStr.Text:= ''; + selDavkaStr.SetFocus; + idDavka:= 0; + end; + lSQL:= 'IF OBJECT_ID(N''tempdb..#TabDruhDavky'') IS NOT NULL DROP TABLE #TabDruhDavky'; + Helios.ExecSQL(lSQL); + end; + + + + + procedure TformOdvTavby.selFormirClick(Sender: TObject); + var podm, selMes: string; + cM, cR: integer; + begin +// ziskej ID mzdObd za tento a predchozi mesic + cM:= MonthOf(Now); + cR:= YearOf(Now); + selMes:= helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + cR.ToString + ' AND Mesic=' + cM.ToString); + if (cM=1) then + selMes:= selMes + IfThen(selMes<>'', ', ', '') + helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + (cR-1).ToString + ' AND Mesic=12') + else + selMes:= selMes + IfThen(selMes<>'', ', ', '') + helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + cR.ToString + ' AND Mesic=' + (cM-1).ToString); + + podm:= 'TabCisZam.ID IN (SELECT z.ZamestnanecID FROM ' + tblZamDopl + ' z INNER JOIN ' + tblProfes + ' p ON (p.Cislo=z.Profese) INNER JOIN ' + tblZamMzd; + podm:= podm + ' m ON (m.ZamestnanecID=z.ZamestnanecID AND z.IDObdobi=m.IDObdobi) WHERE m.StavES=0 AND m.Stredisko=N''00100100223'''; + podm:= podm + ' AND z.IDObdobi IN (' + selMes + '))'; + + oVar:= edtFormir.Text; + if Helios.Prenos(bidCisZam, 'TabCisZam.Cislo', oVar, podm, 'Vyberte Formíře', true) then + edtFormir.Text:= StringOfChar('0', 6-Length(VarToStr(oVar))) + VarToStr(oVar); + edtPocetStr.SetFocus; + end; + + + + + procedure TformOdvTavby.selOperP42Click(Sender: TObject); + var podm: string; + begin + idVOp:= 0; + idVPr:= 0; + podm:= '/* TabPrPostup.Nazev LIKE N''Předán%'' AND TabPrPostup.Odvadeci=1 AND */ TabPrPostup.IDPrikaz IN (SELECT ID FROM ' + tblPrikaz; + podm:= podm + ' WHERE StavPrikazu IN (30,50,60) AND Rada IN (N''224-43'', N''224-42''))'; + if Helios.Prenos(bidVyrOper, 'TabPrPostup.ID', oVar, podm, 'Vyberte operaci P42/P43', true) then + begin + idVOp:= StrToInt(VarToStr(oVar)); + edtOperP42.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Barcode FROM ' + tblPrPost + ' WHERE ID=' + idVOp.ToString); + idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDPrikaz FROM ' + tblPrPost + ' WHERE ID=' + idVOp.ToString); + NactiPrikaz; + lblOperaceP42.Caption:= ''; + with Helios.OpenSQL('SELECT Operace, Nazev FROM ' + tblPrPost + ' WHERE ID=' + idVOp.ToString) do + lblOperaceP42.Caption:= Trim(VarToStr(FieldValues(0))) + ' / ' + VarToStr(FieldValues(1)); + edtKsP42.SetFocus; + end; + end; + + + + + procedure TformOdvTavby.selOpStrClick(Sender: TObject); + var lSQL, podm, u: string; + begin + oVar:= edtOpStr.Text; + podm:= 'TabPrPostup.Kusy_pozadovane>0'; + +// u:= helUtils.getHeliosStrVal(Helios, 'SELECT SUSER_SNAME()'); +// if (u='ssustek') or (u='pcreny') then +// begin + podm:= podm + ' AND TabPrPostup.IDPrikaz IN (SELECT p.ID FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen)'; + podm:= podm + ' WHERE p.StavPrikazu IN (20,30) AND LEFT(k.SkupZbo,2)=N''P3'')'; +// end; + + if Helios.Prenos(bidVyrOper, 'TabPrPostup.BarCode', oVar, podm, 'Vyberte operaci', true) then + begin + edtOpStr.Text:= VarToStr(oVar); + edtOpStrExit(Sender); + end; + end; + + + + + procedure TformOdvTavby.selOpTavbaClick(Sender: TObject); + var lSQL, podm: string; + begin + oVar:= edtOpTavba.Text; + podm:= 'LOWER(TabPrPostup.nazev) LIKE N''%odléván%'' AND TabPrPostup.Kusy_pozadovane>0'; + if Helios.Prenos(bidVyrOper, 'TabPrPostup.BarCode', oVar, podm, 'Vyberte operaci Tavby', true) then + begin + edtOpTavba.Text:= VarToStr(oVar); + edtOpTavbaExit(Sender); + end; + edtTavba.SetFocus; + end; + + + + + procedure TformOdvTavby.selOpVibrClick(Sender: TObject); + var lSQL, podm: string; + begin + oVar:= edtOpVibr.Text; + podm:= 'LOWER(TabPrPostup.nazev) LIKE N''%vibrován%'' AND TabPrPostup.Kusy_pozadovane>0 AND TabPrPostup.Kusy_zive>0'; + podm:= podm + ' AND TabPrPostup.IDOdchylkyDo IS NULL AND TabPrPostup.IDPrikaz IN (SELECT ID FROM ' + tblPrikaz + ' WHERE StavPrikazu=30)'; + if Helios.Prenos(bidVyrOper, 'TabPrPostup.BarCode', oVar, podm, 'Vyberte operaci Vibrování', true) then + begin + edtOpVibr.Text:= VarToStr(oVar); + edtOpVibrExit(Sender); + end; + edtTavbaV.SetFocus; + end; + + + + + procedure TformOdvTavby.selPrikazObecClick(Sender: TObject); + var podm: string; + begin + idVPr:= 0; + podm:= ''; + if (typ=5) and (druhDavky=1) then + podm:= 'TabPrikaz.StavPrikazu IN (30,50,60) AND TabPrikaz.Rada=N' + QuotedStr('223-31'); + if Helios.Prenos(bidVyrPrik, 'TabPrikaz.ID', oVar, podm, 'Vyberte příkaz do dávky', true) then + begin + idVPr:= StrToInt(VarToStr(oVar)); + edtPrikazObec.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT RadaPrikaz FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); + NactiPrikaz; + selDavkaObec.SetFocus; + end; + end; + +end. diff --git a/frmPlanLis.dfm b/frmPlanLis.dfm new file mode 100644 index 0000000..7eb3f26 --- /dev/null +++ b/frmPlanLis.dfm @@ -0,0 +1,16 @@ +object formPlanLis: TformPlanLis + Left = 0 + Top = 0 + Caption = ' Sm'#283'nov'#253' pl'#225'n nasazen'#237 + ClientHeight = 617 + ClientWidth = 909 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 +end diff --git a/frmPlanLis.pas b/frmPlanLis.pas new file mode 100644 index 0000000..e9731f1 --- /dev/null +++ b/frmPlanLis.pas @@ -0,0 +1,24 @@ +unit frmPlanLis; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs; + +type + TformPlanLis = class(TForm) + private + { Private declarations } + public + { Public declarations } + end; + +var + formPlanLis: TformPlanLis; + +implementation + +{$R *.dfm} + +end. diff --git a/frmSchvaleniZak.dfm b/frmSchvaleniZak.dfm new file mode 100644 index 0000000..e20593b --- /dev/null +++ b/frmSchvaleniZak.dfm @@ -0,0 +1,718 @@ +object formSchvaleniZak: TformSchvaleniZak + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = ' Schv'#225'len'#237' zak'#225'zky' + ClientHeight = 734 + ClientWidth = 896 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + Position = poOwnerFormCenter + OnClose = FormClose + OnShow = FormShow + TextHeight = 23 + object Label1: TLabel + Left = 107 + Top = 180 + Width = 85 + Height = 23 + Caption = 'Vyj'#225'd'#345'en'#237':' + end + object Label2: TLabel + Left = 305 + Top = 180 + Width = 91 + Height = 23 + Caption = 'Pozn'#225'mka:' + end + object Label3: TLabel + Left = 15 + Top = 126 + Width = 112 + Height = 23 + Caption = 'Aktu'#225'ln'#237' stav:' + end + object lblStav: TLabel + Left = 189 + Top = 126 + Width = 274 + Height = 23 + AutoSize = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clRed + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object Label4: TLabel + Left = 15 + Top = 90 + Width = 166 + Height = 23 + Caption = 'Po'#382'adovan'#233' datum:' + end + object lblDatReq: TLabel + Left = 189 + Top = 90 + Width = 142 + Height = 23 + AutoSize = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clRed + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object Label5: TLabel + Left = 366 + Top = 90 + Width = 78 + Height = 23 + Caption = 'Mno'#382'stv'#237':' + end + object lblMnoz: TLabel + Left = 453 + Top = 90 + Width = 142 + Height = 23 + AutoSize = False + end + object Label6: TLabel + Left = 15 + Top = 323 + Width = 69 + Height = 23 + Caption = 'Historie:' + end + object lblDatObr: TLabel + Left = 306 + Top = 312 + Width = 105 + Height = 23 + Caption = 'Datum OBR:' + Visible = False + end + object edtZakazka: TLabeledEdit + Left = 15 + Top = 48 + Width = 145 + Height = 31 + Color = 15790320 + EditLabel.Width = 74 + EditLabel.Height = 23 + EditLabel.Caption = 'Zak'#225'zka:' + ReadOnly = True + TabOrder = 0 + Text = '' + end + object edtZakazkaNazev: TLabeledEdit + Left = 366 + Top = 48 + Width = 503 + Height = 31 + EditLabel.Width = 57 + EditLabel.Height = 23 + EditLabel.Caption = 'N'#225'zev:' + ReadOnly = True + TabOrder = 1 + Text = '' + end + object cbStav: TComboBox + Left = 107 + Top = 207 + Width = 175 + Height = 31 + Style = csDropDownList + ItemIndex = 0 + TabOrder = 2 + Text = 'Souhlas' + Items.Strings = ( + 'Souhlas' + 'Vr'#225'tit') + end + object edtRole: TLabeledEdit + Left = 15 + Top = 207 + Width = 64 + Height = 31 + Color = 15790320 + EditLabel.Width = 43 + EditLabel.Height = 23 + EditLabel.Caption = 'Role:' + ReadOnly = True + TabOrder = 3 + Text = '' + end + object edtPoznamka: TMemo + Left = 305 + Top = 207 + Width = 568 + Height = 97 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + MaxLength = 255 + ParentFont = False + ScrollBars = ssVertical + TabOrder = 4 + end + object btnOK: TButton + Left = 534 + Top = 672 + Width = 142 + Height = 52 + Caption = 'OK' + TabOrder = 7 + OnClick = btnOKClick + end + object btnStorno: TButton + Left = 732 + Top = 672 + Width = 142 + Height = 52 + Caption = 'Storno' + TabOrder = 8 + OnClick = btnStornoClick + end + object btnAdd: TBitBtn + Left = 150 + Top = 275 + Width = 64 + Height = 55 + Glyph.Data = { + 36100000424D3610000000000000360000002800000020000000200000000100 + 2000000000000010000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000100000001000000010000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000001000000010000000400000005000000040000 + 0001000000010000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000100000002000000060000000F000000150000000F0000 + 0007000000020000000100000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000010000000500000012321E1166A8653BFF2C180D660000 + 0012000000050000000100000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000001000000030000000C0805032C9A613BEBD2A46EFF8C512FEC0704 + 022D0000000C0000000300000001000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000100000007000000175F3B23A4C49161FFD5A871FFBB8657FF5630 + 1CA7000000180000000700000001000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000030000000F21140D4EB47A50FDD8AD78FFD4A86FFFD6AB76FFA569 + 41FD1D110A500000001000000004000000010000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0002000000090201011D8C5B3AD6D2A878FFD6AB74FFD5A972FFD6AA73FFCD9F + 6DFF804D2DD90201011F00000009000000020000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000010000 + 0005000000114A312083C49367FFDAB07DFFD6AB74FFD6AA74FFD6AA73FFD8AE + 79FFBA8357FF4629188700000013000000050000000100000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000020000 + 000B130C0835B17A54F6DCB687FFD8AD78FFD7AD77FFD7AD76FFD6AC75FFD6AB + 75FFD8AF7DFFA26841F7110A06370000000C0000000300000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000001000000060000 + 00137A5338BBD4AB81FFDAB37FFFD8AF79FFD9AF78FFD8AE78FFD7AD77FFD8AD + 77FFDAAF7BFFCB9D6FFF71452BBE000000160000000700000001000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000030000000C3525 + 1960C5946DFFDFBC8CFFD9B17CFFD9B17BFFD9B17BFFD9B07AFFD8AF7AFFD8AF + 79FFD8AE79FFDCB682FFB68158FF332014660000000E00000004000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000020000000709060420A879 + 55E9E0C097FFDBB580FFDAB27EFFDAB27DFFDAB27DFFDAB27DFFDAB17CFFD9B0 + 7BFFD9B07AFFD9B07CFFD8B282FF9A6643EA0805032300000008000000020000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000001000000040000000E674A349BD4AE + 89FFDFBB8CFFDBB580FFDBB581FFDBB581FFDBB480FFDBB47FFFDAB47EFFDAB3 + 7EFFD9B27DFFDAB17CFFDCB684FFC99A70FF613F299F00000011000000050000 + 0001000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000200000009231A1242C39671FDE5C8 + 9EFFDCB784FFDCB784FFDDB683FFDCB783FFDCB682FFDCB682FFDBB581FFDBB5 + 80FFDAB380FFDAB37EFFDAB27DFFDEBC8CFFB58158FD21150E460000000B0000 + 0002000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000100000005020201129B7152D3E2C5A2FFDFBD + 8CFFDEBB88FFE1C090FFE3C594FFE4C594FFE4C796FFE5C796FFE3C493FFE2C1 + 90FFE0BE8DFFDEBA88FFDBB481FFDBB582FFD9B287FF906141D6020101160000 + 0006000000010000000000000000000000000000000000000000000000000000 + 000000000000000000000000000300000009523D2D79D4B08DFFE6CBA2FFE6CB + 9BFFE8CEA0FFE8CEA0FFE7CD9FFFE7CC9DFFE7CC9DFFE6CA9BFFE6C999FFE5C8 + 98FFE4C696FFE4C595FFE3C393FFE0BF8DFFE1BF90FFC79A70FF4E35247E0000 + 000C000000030000000000000000000000000000000000000000000000000000 + 000000000000000000010000000515100C28BF9472F5EEDBBBFFEBD4A7FFEAD2 + A5FFEAD2A5FFEAD1A4FFE9D1A3FFEAD0A2FFE9CFA2FFE8CEA0FFE7CD9EFFE7CB + 9CFFE7CA9BFFE6C999FFE4C797FFE4C695FFE3C594FFE5C89EFFB2805BF6130D + 092C000000070000000100000000000000000000000000000000000000000000 + 000000000000000000020000000787664DB3EAD8C5FFFBF6ECFFFAF6EBFFFAF6 + EBFFFAF6EAFFF6EDD7FFECD4A8FFEBD3A6FFEAD3A6FFE9D2A4FFE9D0A3FFE8CF + A1FFE8CE9FFFEEDAB7FFF6EBD6FFF8F1E2FFF8F0E0FFF8EFDFFFE4CDB5FF7F5A + 3EB8000000090000000200000000000000000000000000000000000000000000 + 0000000000000000000100000006C89A73FFC79973FFC69872FFC69871FFC597 + 70FFC59770FFF8EFDBFFEDD8ACFFEDD7ABFFECD6A9FFECD5A9FFEBD4A7FFEAD2 + A5FFEAD1A4FFF0DEBCFFC18F69FFC18E67FFC18E67FFC08D66FFBF8D66FFBF8C + 65FF000000080000000200000000000000000000000000000000000000000000 + 000000000000000000010000000300000006000000090000000A0000000C0000 + 0011C79973FFF9F0DEFFEEDBB0FFEEDAAEFFEED9AEFFEED8ACFFEDD7ABFFECD6 + AAFFEBD4A8FFF2E1C1FFB8835DFF000000150000000F0000000D0000000C0000 + 0008000000040000000100000000000000000000000000000000000000000000 + 0000000000000000000000000001000000010000000200000002000000040000 + 000AC99D77FFF9F3E2FFF1DEB4FFF0DDB3FFF0DDB1FFEFDCB1FFEEDAAFFFEED9 + ADFFEDD8ACFFF3E5C6FFBA8660FF0000000D0000000500000003000000020000 + 0002000000010000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000020000 + 0008CA9F79FFFAF5E6FFF2E1B8FFF1E0B7FFF1DFB5FFF0DEB4FFF0DDB2FFEFDC + B1FFEFDAB0FFF4E7CAFFBB8A64FF0000000A0000000300000001000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000020000 + 0007CCA27CFFFBF6E7FFF3E3BAFFF3E3BAFFF2E2B9FFF2E1B8FFF2E0B6FFF1DE + B5FFF0DDB3FFF5EACDFFBF8D66FF000000090000000200000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000010000 + 0006CDA47EFFFCF7E9FFF4E6BEFFF4E5BDFFF3E5BCFFF3E3BAFFF3E3B9FFF2E1 + B8FFF1E0B6FFF7ECD2FFC09169FF000000080000000200000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000010000 + 0005CFA680FFFCF8ECFFF5E8C0FFF5E8C0FFF5E6BFFFF5E6BDFFF4E5BCFFF3E4 + BBFFF3E2B9FFF7EED4FFC1936CFF000000070000000200000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000010000 + 0003CFA983FFFEFCF6FFFEFCF6FFFDFCF6FFFDFCF5FFFDFBF4FFFDFBF4FFFDFB + F4FFFDFBF4FFFDFBF3FFC3956FFF000000050000000100000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0002967A5FB8D0A985FFD1A984FFD0A984FFD0A883FFD0A883FFD0A882FFCFA8 + 82FFCFA782FFCEA681FF8D6C51B9000000030000000100000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0001000000020000000200000003000000030000000300000003000000030000 + 0003000000030000000300000002000000010000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000010000000100000001000000010000 + 0001000000010000000100000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000} + TabOrder = 6 + OnClick = btnAddClick + end + object grd: TNextDBGrid6 + Left = 13 + Top = 355 + Width = 861 + Height = 268 + ParentColor = False + TabOrder = 9 + ActiveView = grdView + ActiveViewIndex = 0 + AlternatingRowColor = clBtnFace + AppearanceOptions = [aoAlternatingRowColors, aoHintIndicators, aoStyleColors] + Options = [goArrowEndEditing, goAutoHideScrollBars, goExitEndEditing, goTabLeaveControl] + RightClickDeselect = False + RightClickSelect = False + RowHeight = 33 + ScrollBars = [sbVertical] + SelectFullRow = True + UserDefinedColorPalette.GeometryHoverColor = clBlack + OnCellDblClick = grdCellDblClick + DataSource = ds + object grdView: TNxReportGridView6 + ColumnMoving = False + GridLines = True + HeaderHeight = 26 + OnHeaderMouseDown = grdViewHeaderMouseDown + end + object colRole: TNxDBTextColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Role' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clRed + Header.Font.Height = -19 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 0 + ParentFont = False + PlaceholderText = 'Text Text' + Position = 0 + Width = 50 + OnGetHint = colRoleGetHint + DataBinding.FieldName = 'colRole' + end + object colDatum: TNxDBDateColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Datum' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clRed + Header.Font.Height = -19 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 1 + ParentFont = False + PlaceholderText = '07.09.2020' + Position = 1 + Width = 190 + OnGetText = colDatumGetText + FormatMask = 'd.m.yyyy hh:nn:ss' + DataBinding.FieldName = 'colDatum' + InsertString = '30.12.1899' + end + object colStav: TNxDBTextColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Alignment = taCenter + Header.Caption = 'Stav' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clRed + Header.Font.Height = -19 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 2 + ParentFont = False + PlaceholderText = 'Text Text' + Position = 2 + Width = 170 + DataBinding.FieldName = 'colStav' + end + object colPozn: TNxDBMemoColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'Pozn'#225'mka' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clRed + Header.Font.Height = -19 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Header.ParentFont = False + Index = 3 + ParentFont = False + PlaceholderText = 'The quick brown fox jumps over the lazy dog' + Position = 3 + Width = 420 + OnGetHint = colPoznGetHint + DataBinding.FieldName = 'colPoznamka' + end + object colHistID: TNxDBNumberColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'HistID' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 4 + PlaceholderText = '1742.50' + Position = 4 + Visible = False + FormatMask = '#,##0.00' + Increment = 1.000000000000000000 + DataBinding.FieldName = 'colHistID' + InsertString = '0' + end + object colAutor: TNxDBTextColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'Autor' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 5 + PlaceholderText = 'Text Text' + Position = 5 + Visible = False + DataBinding.FieldName = 'colAutor' + end + object colJenVDO: TNxDBNumberColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'jenVDO' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 6 + PlaceholderText = '1742.50' + Position = 6 + Visible = False + FormatMask = '#,##0.00' + Max = 1.000000000000000000 + NumericEditOptions = [] + Increment = 1.000000000000000000 + DataBinding.FieldName = 'colJenVDO' + InsertString = '0' + end + object colDatumObr: TNxDBTimeColumn6 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -11 + Footer.Font.Name = 'Tahoma' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'DatumOBR' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + Index = 7 + PlaceholderText = 'Text Text' + Position = 7 + Visible = False + HoursText = 'H' + MinutesText = 'M' + DataBinding.FieldName = 'colDatumOBR' + end + object colVDOproOBR: TNxDBCheckBoxColumn6 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Tahoma' + Font.Style = [] + Footer.Font.Charset = DEFAULT_CHARSET + Footer.Font.Color = clWindowText + Footer.Font.Height = -12 + Footer.Font.Name = 'Segoe UI' + Footer.Font.Style = [] + Footer.FormatMask = '#,##0.00' + Header.Caption = 'VDOproOBR' + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -12 + Header.Font.Name = 'Segoe UI' + Header.Font.Style = [] + Index = 8 + PlaceholderText = 'True' + Position = 8 + Visible = False + CheckedImageIndex = -1 + UncheckedImageIndex = -1 + DataBinding.FieldName = 'colVDOproOBR' + InsertString = 'False' + end + end + object cbJenVDO: TCheckBox + Left = 117 + Top = 244 + Width = 154 + Height = 25 + Caption = ' pro VDO' + TabOrder = 10 + end + object edtRegCis: TLabeledEdit + Left = 180 + Top = 48 + Width = 169 + Height = 31 + Color = 15790320 + EditLabel.Width = 81 + EditLabel.Height = 23 + EditLabel.Caption = 'Reg.'#269#237'slo:' + ReadOnly = True + TabOrder = 11 + Text = '' + end + object edtDatObr: TDateTimePicker + Left = 426 + Top = 308 + Width = 135 + Height = 31 + Date = 44386.000000000000000000 + Time = 0.350455891202727800 + TabOrder = 5 + Visible = False + end + object mInfo: TMemo + Left = 15 + Top = 630 + Width = 464 + Height = 96 + Color = 15790320 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + ReadOnly = True + TabOrder = 12 + end + object cbZmenaDatumKonZakazka: TCheckBox + Left = 569 + Top = 312 + Width = 185 + Height = 25 + Caption = 'Zm'#283'na Datum KON' + TabOrder = 13 + end + object tbl: TFDMemTable + AfterPost = tblAfterPost + FetchOptions.AssignedValues = [evMode] + FetchOptions.Mode = fmAll + ResourceOptions.AssignedValues = [rvSilentMode] + ResourceOptions.SilentMode = True + UpdateOptions.AssignedValues = [uvCheckRequired, uvAutoCommitUpdates] + UpdateOptions.CheckRequired = False + UpdateOptions.AutoCommitUpdates = True + Left = 633 + Top = 141 + object tblcolDatum: TDateTimeField + FieldName = 'colDatum' + DisplayFormat = 'd.m.yyyy hh:nn:ss' + end + object tblcolStav: TStringField + FieldName = 'colStav' + Size = 30 + end + object tblcolPozn: TStringField + FieldName = 'colPoznamka' + Size = 500 + end + object tblcolHistID: TIntegerField + FieldName = 'colHistID' + end + object tblcolRole: TStringField + FieldName = 'colRole' + Size = 5 + end + object tblcolAutor: TStringField + FieldName = 'colAutor' + Size = 50 + end + object tblcolJenVDO: TSmallintField + FieldName = 'colJenVDO' + Visible = False + end + object tblcolDatumOBR: TDateField + FieldName = 'colDatumOBR' + end + object tblcolVDOproOBR: TSmallintField + FieldName = 'colVDOproOBR' + end + object tblcolOBRproVDO: TSmallintField + FieldName = 'colOBRproVDO' + end + object tblcolDatumVDO: TDateField + FieldName = 'colDatumVDO' + end + object tblcolPoznamkaR: TSmallintField + FieldName = 'colPoznamkaR' + end + object tblcolPoznamka2: TStringField + FieldName = 'colPoznamka2' + Size = 500 + end + end + object ds: TDataSource + DataSet = tbl + Left = 595 + Top = 141 + end +end diff --git a/frmSchvaleniZak.pas b/frmSchvaleniZak.pas new file mode 100644 index 0000000..b7fa407 --- /dev/null +++ b/frmSchvaleniZak.pas @@ -0,0 +1,1018 @@ +unit frmSchvaleniZak; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.ComCtrls, Vcl.Mask, + NxGridView6, NxColumns6, NxControls6, NxCustomGrid6, NxTypes6, NxVirtualGrid6, NxDBGrid6, + NxDBColumns6, NxGrid6, + Data.DB, MemDS, VirtualTable, Vcl.Buttons, + ddPlugin_TLB, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error, + FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, FireDAC.Comp.DataSet, FireDAC.Comp.Client; + +const + tblSchvalZak = '[dbo].[_hdc_TabSchvaleniZakazky]'; + tblSchvalZakHist = '[dbo].[_hdc_TabSchvaleniZakazkyHist]'; + tblSchvalZakRole = '[dbo].[_hdc_TabSchvaleniZakazkyRole]'; + c_UnassignedDate = -693594; + + type + TformSchvaleniZak = class(TForm) + edtZakazka: TLabeledEdit; + edtZakazkaNazev: TLabeledEdit; + cbStav: TComboBox; + Label1: TLabel; + edtRole: TLabeledEdit; + Label2: TLabel; + edtPoznamka: TMemo; + btnOK: TButton; + btnStorno: TButton; + Label3: TLabel; + lblStav: TLabel; + btnAdd: TBitBtn; + grd: TNextDBGrid6; + grdView: TNxReportGridView6; + colStav: TNxDBTextColumn6; + colHistID: TNxDBNumberColumn6; + tbl: TFDMemTable; + ds: TDataSource; + tblcolDatum: TDateTimeField; + tblcolStav: TStringField; + tblcolPozn: TStringField; + tblcolHistID: TIntegerField; + colRole: TNxDBTextColumn6; + colPozn: TNxDBMemoColumn6; + tblcolRole: TStringField; + Label4: TLabel; + lblDatReq: TLabel; + Label5: TLabel; + lblMnoz: TLabel; + tblcolAutor: TStringField; + colAutor: TNxDBTextColumn6; + Label6: TLabel; + cbJenVDO: TCheckBox; + tblcolJenVDO: TSmallintField; + colJenVDO: TNxDBNumberColumn6; + edtRegCis: TLabeledEdit; + colDatum: TNxDBDateColumn6; + lblDatObr: TLabel; + edtDatObr: TDateTimePicker; + tblcolDatumOBR: TDateField; + colDatumObr: TNxDBTimeColumn6; + tblcolVDOproOBR: TSmallintField; + mInfo: TMemo; + cbZmenaDatumKonZakazka: TCheckBox; + tblcolOBRproVDO: TSmallintField; + tblcolDatumVDO: TDateField; + colVDOproOBR: TNxDBCheckBoxColumn6; + tblcolPoznamkaR: TSmallintField; + tblcolPoznamka2: TStringField; + procedure FormShow (Sender: TObject); + procedure FormClose (Sender: TObject; var Action: TCloseAction); + procedure btnStornoClick (Sender: TObject); + procedure btnAddClick (Sender: TObject); + procedure tblAfterPost (DataSet: TDataSet); + procedure colDatumDrawBackground (Sender: TObject; ACol, ARow: Integer; CellRect: TRect; State: TNxCellPaintingState); + procedure grdViewHeaderMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; Col, X, Y: Integer); + procedure grdCellDblClick(Sender: TObject; ACol, ARow: Integer); + procedure btnOKClick(Sender: TObject); + procedure colRoleGetHint (Sender: TObject; ACol, ARow: Integer; var Text: WideString); + procedure colPoznGetHint (Sender: TObject; ACol, ARow: Integer; var Text: WideString); + procedure colDatumGetText(Sender: TObject; ACol, ARow: Integer; var Text: WideString); + private + function LastRow: integer; + procedure NactiHistorii; + procedure ZapisDoHist (const idZak, radek: integer); safecall; + public + Helios: IHelios; + id: Integer; + arrID: TArray; + end; + +var + formSchvaleniZak: TformSchvaleniZak; + oVar1: OleVariant; + cisZakazky, szKmene, szKmeneSub, currRole, lastRole: string; + idZakazky: integer; + arrIDZak: TArray; + idPrikazFin, idPrikazSub: integer; + histLoad, zamek, currZamek, zapisOBR, jeTestDB, jeObrobek, jeVzorek, VdoProVzo: boolean; + uzivId, idZakazkyPom: integer; + prevRole: string; + +implementation +uses System.StrUtils, System.DateUtils, + helUtils; + +{$R *.dfm} + + + function TformSchvaleniZak.LastRow: integer; + var i: integer; + begin + result:= -1; + if (grd.RowCount>0) then + for i:=0 to grd.RowCount-1 do + if (grd.Cells[0,i]='') then + result:= i; + end; + + + + procedure TformSchvaleniZak.NactiHistorii; + var lSQL, stavTxt, role, sTemp, pozn: string; + akce: Byte; + stavIdx: integer; + jenVDO, proOBR, lastRec: boolean; + datumObrStr: string; + rNum: integer; + begin + prevRole:= ''; // promenna pro posledni roli v historii (kdo se vyjadril jako posledni) + lastRec:= false; + + if (idZakazky<=0) then + Exit; + lSQL:= 'SELECT z.CisloZakazky, z.Nazev, z.DruhyNazev, ISNULL(ze._SchvaleniZakazky_Lock,0) FROM ' + tblZak + ' z LEFT JOIN ' + tblZakE; + lSQL:= lSQL + ' ze ON (ze.ID=z.ID) WHERE z.ID=' + idZakazky.ToString; + with Helios.OpenSQL(lSQL) do + if (RecordCount=1) then + begin + edtZakazka.Text:= VarToStr(FieldValues(0)); + edtZakazkaNazev.Text:= VarToStr(FieldValues(1)) + ' ** ' + VarToStr(FieldValues(2)); + + lSQL:= 'SELECT TOP(1) p.RegCis FROM ' + tblPZ + ' p INNER JOIN ' + tblDZ + ' d ON (d.ID=p.IDDoklad) WHERE d.DruhPohybuZbo IN (9,6) AND '; + lSQL:= lSQL + 'ISNULL(p.CisloZakazky,d.CisloZakazky)=N' + QuotedStr(VarToStr(FieldValues(0))); + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + edtRegCis.Text:= VarToStr(FieldValues(0)); + + stavTxt:= VarToStr(FieldValues(3)); + zamek:= true; + btnOK.Enabled:= false; + btnOK.Enabled:= true; + if (stavTxt='0') then + begin + zamek:= false; + btnOK.Enabled:= true; + end; + + datumObrStr:= ''; + stavTxt:= ''; + role:= ''; + lblStav.Caption:= stavTxt; +// grd.DataSource.DataSet.ClearFields; + tbl.EmptyDataSet; + + histLoad:= true; + proOBR:= false; + zapisObr:= false; + lSQL:= 'SELECT DatPorizeni, Role, Akce, Poznamka, ID, Autor, ISNULL(JenVDO,0) AS JenVDO, ISNULL(VDOproOBR,0) AS VDOproOBR, DatumOBR, DatumKON FROM ' + tblSchvalZakHist; + lSQL:= lSQL + ' WHERE IDZakazky=' + idZakazky.ToString + ' ORDER BY DatPorizeni'; + with Helios.OpenSQL(lSQL) do + begin + lastRole:= ''; + First; + rNum:= 1; + while not(EOF) do + begin + tbl.Append; +// tbl.FieldByName('colDatum').AsString:= FormatDateTime('d.m.yyyy hh:nn:ss', StrToDateTime(VarToStr(FieldValues(0)))); + if (VarIsType(FieldByNameValues('DatPorizeni'), varDate)) then + tbl.FieldByName('colDatum').AsString:= FieldByNameValues('DatPorizeni'); + + role:= VarToStr(FieldByNameValues('Role')); + tbl.FieldByName('colRole').AsString:= role; + if (RecordCount=rNum) then + lastRole:= role; + + if (VarIsType(FieldByNameValues('DatumOBR'), varDate)) then + if (VarToStr(FieldByNameValues('DatumOBR'))<>'') then + tbl.FieldByName('colDatumObr').AsString:= FormatDateTime('d.m.yyyy', StrToDate(VarToStr(FieldByNameValues('DatumOBR')))); + + if (role='OBR') and (tbl.FieldByName('colDatumObr').AsString<>'') then + datumObrStr:= tbl.FieldByName('colDatumObr').AsString; + + + prevRole:= role; + + zapisObr:= false; + if (role='OBR') then + zapisObr:= true; + + proOBR:= false; + sTemp:= VarToStr(FieldByNameValues('VDOproOBR')); + if (role='VDO') and (StrToBool(sTemp)) then + proOBR:= true; + + tbl.FieldByName('colVDOproOBR').AsInteger:= IfThenInt(proOBR, 1, 0); + + akce:= StrToInt(VarToStr(FieldByNameValues('Akce'))); + case akce of + 1: stavIdx:= cbStav.Items.IndexOf('Souhlas'); + 2: stavIdx:= cbStav.Items.IndexOf('Vrceno'); + 3: stavIdx:= cbStav.Items.IndexOf('Dotaz'); + end; + case akce of + 1: stavTxt:= 'Souhlas'; + 2: stavTxt:= 'Vrceno'; + 3: stavTxt:= 'Dotaz'; + end; + + + if (VarIsType(FieldByNameValues('DatumKON'), varDate)) then + if (VarToStr(FieldByNameValues('DatumKON'))<>'') then + tbl.FieldByName('colDatumObr').AsString:= FormatDateTime('d.m.yyyy', StrToDate(VarToStr(FieldByNameValues('DatumKON')))); + + + pozn:= VarToStr(FieldByNameValues('Poznamka')); +{ + if (tbl.FieldByName('colDatumObr').AsString<>'') then + pozn:= pozn + IfThen(pozn<>'', ' (', '') + 'datum: ' + tbl.FieldByName('colDatumObr').AsString + IfThen(pozn<>'', ')', ''); +} + tbl.FieldByName('colPoznamka').AsString:= pozn; + tbl.FieldByName('colPoznamka2').AsString:= pozn; + + tbl.FieldByName('colPoznamkaR').AsInteger:= 0; + if (pozn.Contains(Chr(13))) then + begin + tbl.FieldByName('colPoznamkaR').AsInteger:= 1; + tbl.FieldByName('colPoznamka').AsString:= '(uka m)'; + end; + + tbl.FieldByName('colHistID').AsString:= VarToStr(FieldByNameValues('ID')); + tbl.FieldByName('colAutor').AsString:= VarToStr(FieldByNameValues('Autor')); + tbl.FieldByName('colJenVDO').AsInteger:= 0; + jenVDO:= StrToBool(VarToStr(FieldValues(6))); + if (jenVDO) then + begin + tbl.FieldByName('colJenVDO').AsInteger:= 1; + if (akce=1) then + stavTxt:= stavTxt + ' (VDO)'; + end; + + if (proOBR) then + stavTxt:= stavTxt + ' (OBR)'; + + tbl.FieldByName('colStav').AsString:= stavTxt; + tbl.Post; + Inc (rNum); + Next; + end; + grd.Sort(colDatum.Index, skDescending); + grd.Invalidate; + + if ((lastRole='VDO') or ((currRole='VDO') and (prevRole='OBR'))) and (datumObrStr<>'') then + edtDatObr.DateTime:= StrToDateTime (datumObrStr); + + end; + + lastRole:= helUtils.getHeliosStrVal (Helios, '', 'SELECT TOP(1) Role FROM ' + tblSchvalZakHist + ' WHERE IDZakazky=' + idZakazky.ToString + ' ORDER BY DatPorizeni DESC'); + + + if (stavTxt='Vrceno') then + lblStav.Caption:= stavTxt + ' REP'; + if (stavTxt='Souhlas') then + lblStav.Caption:= stavTxt; + if (stavTxt='Souhlas') and (role='REP') then + lblStav.Caption:= 'Poadovno schvlen DZR'; + if (stavTxt='Souhlas') and (role='DZR') then + lblStav.Caption:= 'Poadovno schvlen CEN'; + if ((stavTxt='Souhlas') and (role='CEN')) or ((stavTxt='Souhlas (VDO)') and (role='REP')) or ((stavTxt='Souhlas') and (role='OBR')) then + lblStav.Caption:= 'Poadovno schvlen VDO'; + if (stavTxt='Souhlas') and (role='VDO') and (proOBR) then + lblStav.Caption:= 'Poadovno schvlen OBR'; + if (stavTxt='Souhlas') and (role='VDO') then + lblStav.Caption:= 'Schvleno'; + + lblDatReq.Caption:= ''; + lblMnoz.Caption:= '0'; + lSQL:= 'SELECT TOP(1) PozadDatDod, Mnozstvi FROM ' + tblPZ + ' WHERE CisloZakazky=N' + edtZakazka.Text.QuotedString; + lSQL:= lSQL + ' AND DruhPohybuZbo=' + IfThen(edtZakazka.Text.LeftStr(1)='R', '6', '9'); + with Helios.OpenSQL(lSQL) do + if (RecordCount=1) then + begin + lblDatReq.Caption:= ''; + stavTxt:= VarToStr(FieldValues(0)); + if (stavTxt<>'') and (VarIsType(FieldValues(0), varDate)) then + lblDatReq.Caption:= FormatDateTime('d.m.yyyy', StrToDate(stavTxt)); + lblMnoz.Caption:= VarToStr(FieldValues(1)); + end; + end; + lSQL:= 'SELECT 1 FROM ' + tblSchvalZakHist + ' WHERE Akce=2 AND Role=N''VDO'' AND IDZakazky=' + idZakazky.ToString; + lSQL:= lSQL + ' AND ID=(SELECT MAX(ID) FROM ' + tblSchvalZakHist + ' WHERE Role=N''VDO'' AND IDZakazky=' + idZakazky.ToString + ')'; + if (helUtils.sqlExistsTestGeneral(Helios, lSQL)) then + begin + btnAdd.Enabled:= false; + btnOK.Enabled:= false; + edtPoznamka.Enabled:= false; + cbStav.Enabled:= false; + cbJenVDO.Enabled:= false; + end; + + lSQL:= 'SELECT 1 FROM ' + tblSchvalZakHist + ' WHERE Akce=2 AND Role=N''OBR'' AND IDZakazky=' + idZakazky.ToString; +// lSQL:= lSQL + ' AND ID=(SELECT MAX(ID) FROM ' + tblSchvalZakHist + ' WHERE Role=N''VDO'' AND IDZakazky=' + idZakazky.ToString + ')'; + if (helUtils.sqlExistsTestGeneral(Helios, lSQL)) then + begin + btnAdd.Enabled:= false; + btnOK.Enabled:= false; + edtPoznamka.Enabled:= false; + cbStav.Enabled:= false; + cbJenVDO.Enabled:= false; + end; + + if (edtRole.Text='OBR') and (zapisOBR) then + begin + btnAdd.Enabled:= false; + btnOK.Enabled:= false; + cbStav.Enabled:= false; + edtPoznamka.Enabled:= false; + end; + + if not(zamek) then + begin + btnAdd.Enabled:= true; + btnOK.Enabled:= true; + edtPoznamka.Enabled:= true; + cbStav.Enabled:= true; + cbJenVDO.Enabled:= (role='OBR'); + end; + + end; + + + + + procedure TformSchvaleniZak.tblAfterPost (DataSet: TDataSet); + var lR: integer; + begin + Exit; + grd.RowCount:= grd.RowCount + 1; + lR:= LastRow; + if (histLoad) then + begin + grd.Cell[colRole.Index, lR].AsString:= DataSet.FieldByName('colRole').AsString; + grd.Cell[colDatum.Index, lR].AsString:= DataSet.FieldByName('colDatum').AsString; + grd.Cell[colStav.Index, lR].AsString:= DataSet.FieldByName('colStav').AsString; + grd.Cell[colPozn.Index, lR].AsString:= Trim(DataSet.FieldByName('colPoznamka').AsString); + grd.Cell[colHistID.Index, lR].AsInteger:= DataSet.FieldByName('colHistID').AsInteger; + grd.Cell[colAutor.Index, lR].AsString:= DataSet.FieldByName('colAutor').AsString; + grd.Cell[colJenVDO.Index, lR].AsInteger:= dataset.FieldByName('colJenVDO').AsInteger; + grd.Cell[colDatumObr.Index, lR].AsString:= FormatDateTime('d.m.yyyy', dataset.FieldByName('colDatumObr').AsDateTime); + end + else + begin + grd.Cell[colRole.Index, lR].AsString:= edtRole.Text; + grd.Cell[colDatum.Index, lR].AsString:= FormatDateTime('d.m.yyyy hh:nn:ss', Now); + grd.Cell[colStav.Index, lR].AsString:= cbStav.Text; + grd.Cell[colPozn.Index, lR].AsString:= Trim(edtPoznamka.Text); + grd.Cell[colJenVDO.Index, lR].AsInteger:= StrToInt(IfThen(cbJenVDO.Checked, '1', '0')); + grd.Cell[colDatumObr.Index, lR].AsString:= FormatDateTime('d.m.yyyy', edtDatObr.Date); + end; + end; + + + + procedure TformSchvaleniZak.btnAddClick (Sender: TObject); + var lSQL, pozn: string; + jenVDO: boolean; + begin + pozn:= edtPoznamka.Text.Trim; +{ + if (edtRole.Text='OBR') then + pozn:= pozn + IfThen(pozn<>'', ' (datum: ', '') + FormatDateTime('d.m.yyyy', edtDatObr.DateTime) + IfThen(pozn<>'', ')', ''); +} + + jenVDO:= cbJenVDO.Checked; + if (currRole='VDO') and (cbStav.ItemIndex=0) and (jeVzorek) and not(jenVDO) then + if not(Helios.YesNo('Odsouhlasenm schvalovn uzavete a polete informaci VZO a garantovi.' + CRLF + 'Pokraovat ?', false)) then + Exit; + + + + histLoad:= false; + tbl.Append; + tbl.FieldByName('colRole').AsString:= edtRole.Text; + tbl.FieldByName('colDatum').AsDateTime:= Now; + tbl.FieldByName('colStav').AsString:= cbStav.Text; + tbl.FieldByName('colPoznamka').AsString:= pozn; + tbl.FieldByName('colHistID').AsInteger:= 0; + + tbl.FieldByName('colVDOproOBR').AsInteger:= 0; + if (cbJenVDO.Caption.Contains('pro OBR')) and (cbJenVDO.Checked) then + begin + tbl.FieldByName('colVDOproOBR').AsInteger:= 1; + tbl.FieldByName('colStav').AsString:= tbl.FieldByName('colStav').AsString + ' (pro OBR)'; + end; + + tbl.FieldByName('colOBRproVDO').AsInteger:= 0; + tbl.FieldByName('colJenVDO').AsInteger:= 0; + if (cbJenVDO.Caption.Contains('pro VDO')) and (cbJenVDO.Checked) then + begin + tbl.FieldByName('colOBRproVDO').AsInteger:= 1; + tbl.FieldByName('colJenVDO').AsInteger:= 1; + tbl.FieldByName('colStav').AsString:= tbl.FieldByName('colStav').AsString + ' (pro VDO)';// IfThen(edtRole.Text='OBR', ' OBR', ' VDO'); + end; + + if ((edtRole.Text='OBR') or (edtRole.Text='VDO')) and (cbZmenaDatumKonZakazka.Checked) then + tbl.FieldByName('colDatumObr').AsDateTime:= edtDatObr.DateTime; + + if (edtRole.Text='VDO') and (cbZmenaDatumKonZakazka.Checked) then + tbl.FieldByName('colDatumVDO').AsDateTime:= edtDatObr.DateTime; + + tbl.Post; + grd.Sort (colDatum.Index, skDescending); + grd.Invalidate; + btnAdd.Enabled:= false; + end; + + + + + procedure TformSchvaleniZak.ZapisDoHist (const idZak: Integer; const radek: Integer); + var akce, idKZ, rozdilMin: integer; + lSQL, s, roleCil, datKonec: string; + datOBR, datKon: TDatetime; + idVPrV, idPlan: integer; // VDO/VOB + begin + + + if (idZak>0) and (radek>=0) then + begin + helUtils.ReseedTable (Helios, tblSchvalZakHist); + + if (edtDatObr.Visible) then + datOBR:= edtDatObr.Date; + + lSQL:= 'INSERT ' + tblSchvalZakHist + ' (IDZakazky, Role, RoleCil, Akce, Poznamka, DatPorizeni, '; + if(edtRole.Text='VDO') then + begin + if not(VdoProVzo) then + begin + lSQL:= lSQL + 'VDOproOBR'; + if (cbZmenaDatumKonZakazka.Checked) then + lSQL:= lSQL + ', DatumKON'; + end; + end + else + lSQL:= lSQL + 'JenVDO'; + + if (edtRole.Text='OBR') then + lSQL:= lSQL + ', DatumOBR'; + + if (jeVzorek) and (VdoProVzo) then + lSQL:= lSQL + ', VDOProVZO'; + + + + lSQL:= lSQL + ') SELECT ' + idZak.ToString + ', N' + edtRole.Text.QuotedString + ', N'; + + roleCil:= ''; + if (cbStav.ItemIndex=0) then // souhlas + begin + if (edtRole.Text='REP') then + begin + if (cbJenVDO.Checked) then + roleCil:= 'VDO' + else + roleCil:= 'DZR'; + end + else + if (edtRole.Text='DZR') then + roleCil:= 'CEN' + else + if (edtRole.Text='CEN') then + roleCil:= 'VDO' + else + if (edtRole.Text='VDO') then + begin + if (VdoProVzo) then + roleCil:= 'VZO' + else + if (cbJenVDO.Checked) then + roleCil:= 'OBR' + else + if (jeVzorek) then + roleCil:= 'VZO/G' + else + roleCil:= 'REP'; + end + else + if (edtRole.Text='OBR') then + begin + if (cbJenVDO.Checked) then + roleCil:= 'VDO' + else + roleCil:= 'REP'; + end + else + lSQL:= lSQL + ''; + + end; + if (cbStav.ItemIndex=1) then + begin + if (edtRole.Text='DZR') or (edtRole.Text='CEN') or (edtRole.Text='VDO') then + roleCil:= 'REP'; + if (edtRole.Text='OBR') then + roleCil:= 'VDO'; + end; + + if (currRole='VZO') and (cbStav.ItemIndex=2) then + roleCil:= 'VDO'; + + + lSQL:= lSQL + roleCil.QuotedString; + + s:= grd.Cells[colStav.Index, radek]; + akce:= 1; + if (s='Vrtit') then + akce:= 2; + if (s='Souhlas') and (edtRole.Text='VDO') and (cbJenVDO.Checked) then + akce:= 1; + if (currRole='VZO') then + akce:= 3; + + + lSQL:= lSQL + ', ' + akce.ToString + ', N' + QuotedStr(grd.Cells[colPozn.Index, radek]) + ', CONVERT(datetime, N' + QuotedStr(grd.Cells[colDatum.Index, radek]) + ',104),'; + + if (edtRole.Text='VDO') and not(VdoProVzo) then + lSQL:= lSQL + grd.Cell[colVDOproOBR.Index, radek].AsInteger.ToString + else + lSQL:= lSQL + grd.Cell[colJenVDO.Index, radek].AsInteger.ToString; + + if (edtRole.Text='OBR') then + lSQL:= lSQL + ', CONVERT(date, N' + FormatDateTime('dd.mm.yyyy', edtDatObr.DateTime).QuotedString + ', 104)'; + + if (edtRole.Text='VDO') and (datOBR<>Today) and (cbZmenaDatumKonZakazka.Checked) then + lSQL:= lSQL + ', CONVERT(date, N' + FormatDateTime('dd.mm.yyyy', edtDatObr.DateTime).QuotedString + ', 104)'; + + +// if (edtRole.Text='VDO') then +// Helios.ExecSQL('INSERT dbo._hdc_TabLog (LogText) VALUES (N' + lSQL.Replace('''','''''').QuotedString + ')'); + + try + Helios.ExecSQL(lSQL); + + + +// pokud je VDO (Roubal), zapis datum do DatumKON na zakazce + if (edtRole.Text='VDO') and (s='Souhlas') and (datOBR<>Today) and (cbZmenaDatumKonZakazka.Checked) then + Helios.ExecSQL('UPDATE ' + tblZakE + ' SET _DatPotvrzeniVyroby=CONVERT(date, N' + FormatDateTime('dd.mm.yyyy', edtDatObr.DateTime).QuotedString + ', 104) WHERE ID=' + idZak.ToString); + + + +// pokud je OBR (Simacek) + if (edtRole.Text='OBR') and (s='Souhlas') and (datOBR<>Today) + then // and ((jeTestDb) or (Helios.CurrentDB='Kdynium')) then + begin + lSQL:= 'SELECT p.ID FROM ' + tblVPr + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE k.SkupZbo IN (N''P51'') AND p.IDZakazka=' + idZak.ToString; + idVPrV:= helUtils.getHeliosIntVal(Helios, 0, lSQL); + if (idVPrV>0) then + begin + lSQL:= 'DECLARE @planKal INT, @d DATETIME; SET @d=DATEADD(day, 1, CONVERT(datetime, N' + datOBR.Format('yyyymmdd').QuotedString + ', 112))' + CRLF; + lSQL:= lSQL + 'EXEC dbo.hp_PrepocetPlanovanychTerminuVyroby @IDPlan=NULL, @IDPrikaz=' + idVPrV.ToString + ', @VcetnePodrizenychPrikazu=0, @PlanUkonceni=@d'; + lSQL:= lSQL + ', @AktualizovatDatumVyrPlanu=0, @ErrIDPlanKalend=@planKal OUT, @AktualizovatPotvrzTerminObj=0'; + Helios.ExecSQL(lSQL); + + lSQL:= 'SELECT p.ID FROM ' + tblVPr + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE k.SkupZbo IN (N''VOB'', N''VOD'') AND p.ID=(SELECT IDPrikazRidici FROM ' + tblVPr; + lSQL:= lSQL + ' WHERE ID=' + idVPrV.ToString + ') AND p.IDPrikazVyssi IS NULL AND p.IDZakazka=' + idZak.ToString; + idVPrV:= helUtils.getHeliosIntVal(Helios, 0, lSQL); + + if (idVPrV>0) then + begin + lSQL:= 'SELECT DATEDIFF(mi, Plan_zadani, Plan_ukonceni) AS RozdilMin FROM ' + tblVPr + ' WHERE ID=' + idVPrV.ToString; + rozdilMin:= helUtils.getHeliosIntVal(Helios, 0 , lSQL); + if (rozdilMin>=0) then + begin + lSQL:= 'DECLARE @d DATETIME; SET @d=CONVERT(datetime, N' + datOBR.Format('dd.mm.yyyy hh:nn:ss').QuotedString + ', 104); EXEC @d = dbo.ef_GetPrevNextWorkDay @d, N''N''; SELECT @d AS NextDen'; + datOBR:= helUtils.getHeliosDateTimeVal(Helios, Now, lSQL); + datKonec:= ''; + +// lSQL:= 'EXEC dbo.hp_VyrPrikaz_GetPlanTermin @IDDilce=' + idKZ.ToString; + + lSQL:= 'SELECT IDTabKmen, ISNULL(IDZakazModif,0) AS IDZakazModif, kusy_ciste FROM ' + tblVPr + ' WHERE ID=' + idVPrV.ToString; + with Helios.OpenSQL(lSQL) do + begin + lSQL:= 'DECLARE @dStart DATETIME, @dEnd DATETIME, @dStartVyssi DATETIME, @idKZ INT, @errPlanKal INT' + CRLF; + lSQL:= lSQL + 'SET @dStart=CONVERT(datetime, N' + datOBR.Format('yyyymmdd').QuotedString + ', 112)' + CRLF; + lSQL:= lSQL + 'EXEC dbo.hp_VyrPrikaz_GetPlanTermin @IDDilce=' + VarToStr(FieldByNameValues('IDTabKmen')) + ', @KusyZadane=' + VarToStr(FieldByNameValues('kusy_ciste')); + lSQL:= lSQL + ', @PlanZadani=@dStart OUT, @PlanUkonceni=@dEnd OUT, @AplikujDobuMeziPrikazy=0, @Selectem=0, @PlanZadaniVyssiho=@dStartVyssi OUT, @IDZakazModif='; + if (VarToStr(FieldByNameValues('IDZakazModif'))='0') then + lSQL:= lSQL + 'NULL' + else + lSQL:= lSQL + VarToStr(FieldByNameValues('IDZakazModif')); + lSQL:= lSQL + ', @DatumTPV=NULL, @IDPrikaz=' + idVPrV.ToString + ', @ErrIDPlanKalend=@errPlanKal OUT' + CRLF; + lSQL:= lSQL + 'SELECT @dEnd AS DatKonec'; + datKon:= helUtils.getHeliosDateTimeVal(Helios, Now, lSQL); + datKonec:= helUtils.getHeliosStrVal(Helios, '', lSQL); + end; +{ + lSQL:= 'DECLARE @dStart DATETIME, @dEnd DATETIME, @idKZ INT; SET @dStart=CONVERT(datetime, N' + datOBR.Format('yyyymmdd').QuotedString + ', 112)' + CRLF; + lSQL:= lSQL + 'EXEC dbo.hp_GetPlanovanyTerminDokonceniVyroby @IDFinal=' + VarToStr(FieldByNameValues('IDTabKmen')) + ', @IDZakazModif='; + if (VarToStr(FieldByNameValues('IDZakazModif'))='0') then + lSQL:= lSQL + 'NULL' + else + lSQL:= lSQL + VarToStr(FieldByNameValues('IDZakazModif')); + lSQL:= lSQL + ', @Mnozstvi=' + VarToStr(FieldByNameValues('kusy_ciste')) + ', @DatumZahajeni=@dStart, @DatumUkonceni=@dEnd OUT' + CRLF + 'SELECT @dEnd AS DatKonec'; + datKonec:= helUtils.getHeliosStrVal(Helios, '', lSQL); + end; + + + lSQL:= 'DECLARE @dStart DATETIME, @dEnd DATETIME; SET @dStart=CONVERT(datetime, N' + datOBR.Format('yyyymmdd').QuotedString + ', 112)' + CRLF; + lSQL:= lSQL + 'SET @dEnd = DATEADD(mi, ' + rozdilMin.ToString + ', @dStart)' + CRLF + 'SELECT @dEnd AS DatKonec'; + with Helios.OpenSQL(lSQL) do + datKonec:= VarToStr(FieldByNameValues('DatKonec')); +} + if (datKonec<>'') then + begin + lSQL:= 'UPDATE ' + tblVPr + ' SET plan_zadani=dbo.hf_TruncDate(CONVERT(datetime, N' + datOBR.Format('dd.mm.yyyy hh:nn:ss').QuotedString + ', 104))'; + lSQL:= lSQL + ', plan_ukonceni=dbo.hf_TruncDate(CONVERT(datetime, N' + datKon.Format('dd.mm.yyyy hh:nn:ss').QuotedString + ', 104)) WHERE ID=' + idVPrV.ToString; + Helios.ExecSQL(lSQL); + + idPlan:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDPlan FROM ' + tblVPr + ' WHERE ID=' + idVPrV.ToString); + if (idPlan>0) then + begin + lSQL:= 'UPDATE ' + tblPlan + ' SET datum=dbo.hf_TruncDate(CONVERT(datetime, N' + datKon.Format('dd.mm.yyyy hh:nn:ss').QuotedString + ', 104)) WHERE ID=' + idPlan.ToString; + Helios.ExecSQL(lSQL); + end; + + end; + end; + end; + + end; + end; + except + end; + + + end; + end; + + + + + procedure TformSchvaleniZak.btnOKClick (Sender: TObject); + var i, x: integer; + begin + if (grd.RowCount>0) and (edtRole.Text<>'') then + begin + for i:=0 to grd.RowCount-1 do + if (grd.Cell[colHistID.Index, i].AsInteger=0) and (grd.Cells[colRole.Index, i]=edtRole.Text) then + if (Length(arrID)>1) and (idZakazky=0) then + for x:=Low(arrID) to High(arrID) do + ZapisDoHist (arrID[x], i) + else + ZapisDoHist (idZakazky, i); + end; + Close; + end; + + + + procedure TformSchvaleniZak.btnStornoClick (Sender: TObject); + begin + Close; + end; + + + + procedure TformSchvaleniZak.colDatumDrawBackground (Sender: TObject; ACol, ARow: Integer; CellRect: TRect; State: TNxCellPaintingState); + var i: Integer; + begin + i:= ACol; + end; + + + + procedure TformSchvaleniZak.colDatumGetText (Sender: TObject; ACol, ARow: Integer; var Text: WideString); + begin + if (Text='30.12.1899 00:00:00') then + Text:= ''; + end; + + + + + procedure TformSchvaleniZak.colPoznGetHint (Sender: TObject; ACol, ARow: Integer; var Text: WideString); + begin + if (grd.Cells[colDatumObr.index, ARow]<>'') then + if (grd.Cells[colDatumObr.index, ARow]<>'30.12.1899') then + Text:= grd.Cells[colDatumObr.index, ARow]; + end; + + + + + procedure TformSchvaleniZak.colRoleGetHint (Sender: TObject; ACol, ARow: Integer; var Text: WideString); + begin + if (grd.Cells[colAutor.Index, ARow]<>'') then // and (ACol=colRole.Index) + Text:= grd.Cells[colAutor.Index, ARow]; + end; + + + + + procedure TformSchvaleniZak.FormClose (Sender: TObject; var Action: TCloseAction); + var lSQL: string; + begin + if (tbl.Active) then + tbl.Close; + + lSQL:= 'IF OBJECT_ID(''dbo.TabZakazka_EXT'', N''U'') IS NOT NULL' + CRLF + ' IF EXISTS(SELECT ID FROM ' + tblZakE + ' WHERE ID=' + idZakazky.ToString + ')'; + lSQL:= lSQL + CRLF + ' UPDATE ' + tblZakE + ' SET _SchvaleniZakazky_Lock=NULL WHERE ID=' + idZakazky.ToString + ' AND _SchvaleniZakazky_Lock=' + uzivId.ToString; + Helios.ExecSQL(lSQL); + + Action:= caFree; + end; + + + + + procedure TformSchvaleniZak.FormShow (Sender: TObject); + var lSQL, infoTxt: string; + dVypPrSub, dVypPrFin, sTemp: string; + dPlanPrSub, dPlanPrFin: string; + begin + uzivId:= Helios.UserId; + idZakazky:= 0; + VdoProVzo:= false; + + cbZmenaDatumKonZakazka.Visible:= false; + + jeTestDb:= false; + if (helUtils.SQLObjectExists(Helios, Helios.SystemDB + '.dbo.TabDBHelios')) then + jeTestDb:= helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 FROM ' + Helios.SystemDB + '.dbo.TabDBHelios WHERE SysJmeno=N' + Helios.CurrentDB.QuotedString + ' AND TypDB=4'); + self.Caption:= ' Schvlen zakzky' + IfThen(jeTestDB, ' (TEST DB)', ''); + + szKmeneSub:= ''; + + + +// zdroj ID jsou vyrobni prikazy + if (id>0) and (Helios.BrowseID=bidVyrPrik) then + idZakazky:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDZakazka FROM ' + tblVPr + ' WHERE ID=' + id.ToString); + if (Length(arrID)>0) and (Helios.BrowseID=bidVyrPrik) then + begin + sTemp:= helUtils.getHeliosStrVal (Helios, '', 'SELECT IDZakazka FROM ' + tblVPr + ' WHERE ID IN (' + helUtils.ArrayToString (arrID, ',', true) + ')'); + SetLength(arrID, 0); + if (sTemp<>'') then + arrID:= helUtils.StrToArrayInt (sTemp); + end; + +// zdroj ID je vyrobni plan + if (id>0) and (Helios.BrowseID=bidVyrPlan) then + idZakazky:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDZakazka FROM ' + tblPlan + ' WHERE ID=' + id.ToString); + if (Length(arrID)>0) and (Helios.BrowseID=bidVyrPlan) then + begin + sTemp:= helUtils.getHeliosStrVal (Helios, '', 'SELECT IDZakazka FROM ' + tblPlan + ' WHERE ID IN (' + helUtils.ArrayToString (arrID, ',', true) + ')'); + SetLength(arrID, 0); + if (sTemp<>'') then + arrID:= helUtils.StrToArrayInt (sTemp); + end; + +// zdroj ID jsou zakazky + if (id>0) and (Helios.BrowseID=bidZak) then + idZakazky:= id; + + + + + cisZakazky:= ''; + if (idZakazky>0) then + cisZakazky:= helUtils.getHeliosStrVal(Helios, '', 'SELECT CisloZakazky FROM ' + tblZak + ' WHERE ID=' + idZakazky.ToString); + jeVzorek:= helUtils.IfThenBool (LeftStr(cisZakazky,2).ToUpper='VZ', true, false); + + + lSQL:= 'IF NOT EXISTS (SELECT 1 FROM ' + tblSchvalZak + ' WHERE IDZakazka=' + idZakazky.ToString + ') INSERT ' + tblSchvalZak; + lSQL:= lSQL + ' (IDZakazka' + IfThen(jeVzorek, ', TypZakazky', '') + ') SELECT ' + idZakazky.ToString + IfThen (jeVzorek, ', 13', ''); + Helios.ExecSQL (lSQL); + + + lSQL:= 'SELECT TOP(1) p.SkupZbo FROM ' + tblPZ + ' p INNER JOIN ' + tblDZ + ' d ON (d.ID=p.IDDoklad) INNER JOIN ' + tblZak + ' z ON (z.CisloZakazky='; + lSQL:= lSQL + 'ISNULL(p.CisloZakazky,d.CisloZakazky)) WHERE d.DruhPohybuZbo IN (9,6) AND z.ID=' + idZakazky.ToString; + szKmene:= helUtils.getHeliosStrVal(Helios, '', lSQL); + edtRegCis.EditLabel.Caption:= 'Reg.slo' + IfThen(szKmene<>'', ' (SK ' + szKmene + ')', '') + ':'; + jeObrobek:= (szKmene='VOB'); + + + idPrikazFin:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT TOP(1) ID FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi IS NULL AND IDZakazka=' + idZakazky.ToString); + lSQL:= 'SELECT TOP(1) p.ID FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.IDPrikazVyssi=' + idPrikazFin.ToString + ' AND p.IDZakazka=' + idZakazky.ToString; + lSQL:= lSQL + ' AND k.SkupZbo NOT IN (N''VDO'')'; + idPrikazSub:= helUtils.getHeliosIntVal(Helios, 0, lSQL); + szKmeneSub:= helUtils.getHeliosStrVal(Helios, '', 'SELECT k.SkupZbo FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.ID=' + idPrikazSub.ToString); + + + currRole:= ''; + if (helUtils.HeliosObjectExists(Helios,helUtils.VratTableName(tblSchvalZakRole))) then + begin + with Helios.OpenSQL('SELECT TOP(1) Role FROM ' + tblSchvalZakRole + ' WHERE Login=SUSER_SNAME() ORDER BY Priorita') do + if (RecordCount=1) then + edtRole.Text:= VarToStr(FieldValues(0)); + + currRole:= UpperCase(edtRole.Text); + if (szKmene<>'VOB') and (currRole='OBR') then + edtRole.Text:= ''; + edtPoznamka.SetFocus; + end; + + cbJenVDO.Enabled:= false; + if (currRole='REP') or (currRole='VZO') then + cbJenVDO.Enabled:= true; + if (currRole='VDO') then + begin + cbZmenaDatumKonZakazka.Visible:= true; + cbJenVDO.Enabled:= true; + cbJenVDO.Caption:= ' pro OBR'; + lblDatObr.Caption:= 'Datum ' + currRole; + lblDatObr.Visible:= true; + + lSQL:= 'SELECT 1 FROM ' + tblVPr + ' WHERE IDPrikazVyssi IS NULL AND IDZakazka=' + idZakazky.ToString; + if (helUtils.sqlExistsTestGeneral(Helios, lSQL)) then + edtDatObr.Date:= helUtils.getHeliosDateTimeVal(Helios, Now, lSQL.Replace(' 1 ', ' TOP(1) Plan_ukonceni_X')) + else + edtDatObr.Date:= Now; + edtDatObr.Visible:= true; + end; + + + if (Length(arrID)>1) and (idZakazky=0) then + edtZakazka.Text:= '(vc zakzek)'; + + if (currRole='OBR') then + begin + edtDatObr.DateTime:= Now; + + if (helUtils.HeliosObjectExists(Helios, 'dbo.ef_HDC_VyrPrikaz_VypocteneUkonceni', '')) and (szKmeneSub='P51') then + begin + lSQL:= 'SELECT TOP(1) ISNULL(dbo.ef_HDC_VyrPrikaz_VypocteneUkonceni(p.ID, 1),0) AS Datum FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.IDZakazka=' + idZakazky.ToString + + ' AND k.SkupZbo=N''P51'''; + sTemp:= DateTimeToStr(helUtils.getHeliosDateTimeVal(Helios, c_UnassignedDate, lSQL)); + if (sTemp='01.01.1900') then + edtDatObr.DateTime:= Now + else + edtDatObr.DateTime:= helUtils.getHeliosDateTimeVal(Helios, c_UnassignedDate, lSQL); + lblDatObr.Visible:= true; + edtDatObr.Visible:= true; + end; +{ + lSQL:= 'SELECT MAX(X.Cas) FROM (' + + 'SELECT KPP.CasDo AS Cas FROM dbo.TabKapacPlan KP INNER JOIN dbo.TabKapacPlanPol KPP ON (KPP.IDKapacPlan=KP.ID' + + ' AND KPP.IDPrikaz IN (SELECT ID FROM dbo.TabPrikaz WHERE IDZakazka=' + idZakazky.ToString + ' AND Rada=N''231-51''))' + + ' INNER JOIN dbo.TabPrikaz VP ON (VP.ID=KPP.IDPrikaz) WHERE KP.Aktivni=1' + + ' UNION ALL ' + + 'SELECT DKP.CCasDo FROM TabAdvKapacPlan AKP INNER JOIN TabAdvKPDavky DKP ON (DKP.IDAdvKapacPlan=AKP.ID' + + ' AND DKP.IDPrikaz IN (SELECT ID FROM dbo.TabPrikaz WHERE IDZakazka=' + idZakazky.ToString + ' AND Rada=N''231-51''))' + + ' INNER JOIN dbo.TabPrikaz VP ON (VP.ID=DKP.IDPrikaz) WHERE AKP.Aktivni=1' + + ' ) X'; + edtDatObr.DateTime:= helUtils.getHeliosDateTimeVal(Helios, Now(), lSQL); +} + lblDatObr.Visible:= true; + edtDatObr.Visible:= true; + end; + + if not(tbl.Active) then + tbl.Active:= true; + + btnAdd.Enabled:= (edtRole.Text<>''); + if (idZakazky>0) and (helUtils.HeliosObjectExists(Helios,helUtils.VratTableName(tblSchvalZakHist))) then + NactiHistorii; + + lSQL:= 'IF OBJECT_ID(''dbo.TabZakazka_EXT'', N''U'') IS NOT NULL' + CRLF + 'IF NOT EXISTS(SELECT ID FROM ' + tblZakE + ' WHERE ID=' + idZakazky.ToString + ')'; + lSQL:= lSQL + CRLF + 'INSERT ' + tblZakE + ' (ID) VALUES (' + idZakazky.ToString + ')' + CRLF + 'UPDATE ' + tblZakE + ' SET _SchvaleniZakazky_Lock='; + lSQL:= lSQL + uzivId.ToString + ' WHERE ID=' + idZakazky.ToString; + Helios.ExecSQL(lSQL); + + lSQL:= 'SELECT 1 FROM ' + tblZak + ' z INNER JOIN ' + tblZakE + ' ze ON (ze.ID=z.ID) WHERE z.ID=' + idZakazky.ToString + + ' AND ISNULL(ze._SchvaleniZakazky_Lock,0)<>' + uzivId.ToString; + zamek:= helUtils.sqlExistsTestGeneral(Helios, lSQL); + currZamek:= zamek; + + if not(zamek) then + begin + if (currRole='OBR') or (currRole='VDO') or (currRole='VZO') then + cbJenVDO.Enabled:= true; + end + else + cbJenVDO.Enabled:= false; + + + + if (currRole='VZO') then + begin + cbJenVDO.Checked:= true; + cbJenVDO.Enabled:= false; + cbStav.Items.Add('Dotaz'); + cbStav.ItemIndex:= cbStav.Items.Count-1; + if not(jeVzorek) then + btnOK.Enabled:= false; + end; + + if (currRole='VDO') and not(jeObrobek) and (prevRole='VZO') and (jeVzorek) then + begin + cbJenVDO.Caption:= ' pro VZO'; + cbJenVDO.Enabled:= false; + cbJenVDO.Checked; + VdoProVzo:= true; + end; + + if (currRole='VDO') and (jeVzorek) and (jeObrobek) and (prevRole='VZO') then + begin + cbJenVDO.Checked:= true; + end; + + + + infoTxt:= ''; + dVypPrSub:= ''; + dPlanPrSub:= ''; + dVypPrFin:= ''; + dPlanPrFin:= ''; + + lSQL:= 'SELECT TOP(1) p.Plan_ukonceni_X FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.IDZakazka=' + idZakazky.ToString + + ' AND p.ID=' + idPrikazSub.ToString; + dPlanPrSub:= DateTimeToStr(helUtils.getHeliosDateTimeVal(Helios, c_UnassignedDate, lSQL)); + if (dPlanPrSub.Contains('.20')) then + begin + dPlanPrSub:= dPlanPrSub.Replace('.0', '.'); + if (dPlanPrSub.StartsWith('0')) then + dPlanPrSub:= MidStr(dPlanPrSub, 2, 20); + end; + + lSQL:= 'SELECT TOP(1) p.Plan_ukonceni_X FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.IDZakazka=' + idZakazky.ToString + + ' AND p.ID=' + idPrikazFin.ToString; + dPlanPrFin:= DateTimeToStr(helUtils.getHeliosDateTimeVal(Helios, c_UnassignedDate, lSQL)); + if (dPlanPrFin.Contains('.20')) then + begin + dPlanPrFin:= dPlanPrFin.Replace('.0', '.'); + if (dPlanPrFin.StartsWith('0')) then + dPlanPrFin:= MidStr(dPlanPrFin, 2, 20); + end; + + if (helUtils.HeliosObjectExists(Helios, 'dbo.ef_HDC_VyrPrikaz_VypocteneUkonceni', '')) then + begin + lSQL:= 'SELECT TOP(1) dbo.ef_HDC_VyrPrikaz_VypocteneUkonceni(p.ID, 1) AS Datum FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.IDZakazka=' + idZakazky.ToString + + ' AND k.SkupZbo=N''P51'''; + dVypPrSub:= helUtils.getHeliosStrVal(Helios, '', lSQL); + if (dVypPrSub.Contains('.20')) then + begin + dVypPrSub:= dVypPrSub.Replace('.0', '.'); + if (dVypPrSub.StartsWith('0')) then + dVypPrSub:= MidStr(dVypPrSub, 2, 20); + end; + + lSQL:= 'SELECT TOP(1) dbo.ef_HDC_VyrPrikaz_VypocteneUkonceni(p.ID, 1) AS Datum FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.IDZakazka=' + idZakazky.ToString + + ' AND k.SkupZbo=N' + szKmene.QuotedString; + dVypPrFin:= helUtils.getHeliosStrVal(Helios, '', lSQL); + if (dVypPrFin.Contains('.20')) then + begin + dVypPrFin:= dVypPrFin.Replace('.0', '.'); + if (dVypPrFin.StartsWith('0')) then + dVypPrFin:= MidStr(dVypPrFin, 2, 20); + end; + end; + + infoTxt:= ''; + if (dPlanPrSub<>'') and (dPlanPrSub<>'00.00.0000') then + infoTxt:= 'pln ' + dPlanPrSub; + if (dVypPrSub<>'') and (dVypPrSub<>'00.00.0000') then + infoTxt:= infoTxt + ' / vpoet ' + dVypPrSub; + if (infoTxt<>'') then + mInfo.Lines.Add(szKmeneSub + ': ' + infoTxt); + + infoTxt:= ''; + if (dPlanPrFin<>'') and (dPlanPrFin<>'00.00.0000') then + infoTxt:= 'pln ' + dPlanPrSub; + if (dVypPrFin<>'') and (dVypPrFin<>'00.00.0000') then + infoTxt:= infoTxt + ' / vpoet ' + dVypPrFin; + if (infoTxt<>'') then + mInfo.Lines.Add(szKmene + ': ' + infoTxt); + + mInfo.Visible:= (mInfo.Text<>''); + + btnAdd.Enabled:= not(lastRole=currRole); + + end; + + + + procedure TformSchvaleniZak.grdCellDblClick (Sender: TObject; ACol, ARow: Integer); + var s: string; + begin + if (ACol=colPozn.Index) and (grd.RowCount>0) then + if (grd.DataSource.DataSet.FieldByName('colPoznamkaR').AsInteger=1) then + begin + s:= grd.DataSource.DataSet.FieldByName('colPoznamka2').AsString; + helUtils.FormMemo2 ('Poznmka', s, true, 14); + end; + end; + + + + procedure TformSchvaleniZak.grdViewHeaderMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; Col, X, Y: Integer); + begin +// if (Button=mbLeft) then +// ShowMessage('W: ' + grd.Columns.Item[Col].Width.ToString); + end; + +end. diff --git a/frmVstupDat.dfm b/frmVstupDat.dfm new file mode 100644 index 0000000..2100bb5 --- /dev/null +++ b/frmVstupDat.dfm @@ -0,0 +1,506 @@ +object formVstupDat: TformVstupDat + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = ' VSTUP DAT ' + ClientHeight = 652 + ClientWidth = 854 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poOwnerFormCenter + OnActivate = FormActivate + OnClose = FormClose + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 25 + object Label1: TLabel + Left = 33 + Top = 81 + Width = 134 + Height = 40 + Caption = 'Skladem:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -33 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object Label2: TLabel + Left = 63 + Top = 161 + Width = 146 + Height = 40 + Alignment = taRightJustify + Caption = 'Z v'#253'roby :' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -33 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object Label3: TLabel + Left = 37 + Top = 332 + Width = 172 + Height = 40 + Alignment = taRightJustify + Caption = 'Expedovat :' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -33 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblSkladem: TLabel + Left = 225 + Top = 74 + Width = 117 + Height = 49 + Alignment = taCenter + AutoSize = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -40 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblNazev: TLabel + Left = 8 + Top = 12 + Width = 833 + Height = 55 + Alignment = taCenter + AutoSize = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clRed + Font.Height = -40 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object Label4: TLabel + Left = 5 + Top = 248 + Width = 149 + Height = 40 + Alignment = taRightJustify + Caption = 'Um'#237'st'#283'n'#237' :' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -33 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object Label5: TLabel + Left = 10 + Top = 416 + Width = 199 + Height = 40 + Alignment = taRightJustify + Caption = 'Hmot. kg/ks :' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -33 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblMDZ: TLabel + Left = 141 + Top = 457 + Width = 48 + Height = 25 + Caption = 'MDZ' + Font.Charset = DEFAULT_CHARSET + Font.Color = clRed + Font.Height = -21 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + Visible = False + end + object pnlCalc: TPanel + Left = 390 + Top = 73 + Width = 440 + Height = 390 + Caption = 'pnlCalc' + Color = 16776176 + ParentBackground = False + TabOrder = 8 + object tKeyb: TAdvTouchKeyboard + Left = 5 + Top = 3 + Width = 160 + Height = 200 + Margins.Left = 1 + Margins.Top = 1 + Margins.Right = 1 + Margins.Bottom = 1 + ParentCustomHint = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -33 + Font.Name = 'Tahoma' + Font.Style = [] + AutoPostKey = False + KeyboardType = ktNUMERIC + KeyDistance = 1 + Keys = < + item + Caption = '7' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 100 + Width = 100 + SpecialKey = skNone + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 0 + Y = 0 + end + item + Caption = '8' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 100 + Width = 100 + SpecialKey = skNone + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 100 + Y = 0 + end + item + Caption = '9' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 100 + Width = 100 + SpecialKey = skNone + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 200 + Y = 0 + end + item + Caption = '4' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 100 + Width = 100 + SpecialKey = skNone + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 0 + Y = 100 + end + item + Caption = '5' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 100 + Width = 100 + SpecialKey = skNone + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 100 + Y = 100 + end + item + Caption = '6' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 100 + Width = 100 + SpecialKey = skNone + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 200 + Y = 100 + end + item + Caption = '1' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 100 + Width = 100 + SpecialKey = skNone + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 0 + Y = 200 + end + item + Caption = '2' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 100 + Width = 100 + SpecialKey = skNone + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 100 + Y = 200 + end + item + Caption = '3' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 100 + Width = 100 + SpecialKey = skNone + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 200 + Y = 200 + end + item + Caption = 'Sma'#382 + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 140 + Width = 100 + SpecialKey = skDelete + BorderColor = clGray + BorderColorDown = clBlack + Color = 3618815 + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 320 + Y = 0 + end + item + Caption = '0' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 80 + Width = 200 + SpecialKey = skNone + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 0 + Y = 300 + end + item + Caption = '.' + KeyValue = -1 + ShiftKeyValue = -1 + AltGrKeyValue = -1 + Height = 80 + Width = 100 + SpecialKey = skDecimal + BorderColor = clGray + BorderColorDown = clBlack + Color = clSilver + ColorDown = clGray + TextColor = clBlack + TextColorDown = clBlack + ImageIndex = -1 + X = 200 + Y = 300 + end> + SmallFont.Charset = DEFAULT_CHARSET + SmallFont.Color = clWindowText + SmallFont.Height = -16 + SmallFont.Name = 'Tahoma' + SmallFont.Style = [] + Version = '1.4.2.0' + OnKeyClick = tKeybKeyClick + OnKeyDown = tKeybKeyDown + object Button1: TButton + Left = -280 + Top = 294 + Width = 75 + Height = 25 + Caption = 'Button1' + TabOrder = 0 + end + end + end + object edtVyroba: TRzNumericEdit + Left = 223 + Top = 152 + Width = 161 + Height = 56 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -40 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + OnClick = edtVyrobaClick + OnEnter = edtVyrobaEnter + DisplayFormat = ',0;(,0)' + end + object edtExpedice: TRzNumericEdit + Left = 223 + Top = 322 + Width = 161 + Height = 56 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -40 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 2 + OnClick = edtExpediceClick + OnEnter = edtExpediceEnter + DisplayFormat = ',0;(,0)' + end + object btnOK: TButton + Left = 100 + Top = 533 + Width = 190 + Height = 108 + Caption = 'OK' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -33 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + OnClick = btnOKClick + end + object btnStorno: TButton + Left = 401 + Top = 571 + Width = 137 + Height = 70 + Caption = 'Storno' + TabOrder = 4 + OnClick = btnStornoClick + end + object edtUmisteni: TRzEdit + Left = 160 + Top = 238 + Width = 224 + Height = 56 + Text = '' + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -40 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + OnClick = edtUmisteniClick + end + object edtHmotnost: TRzNumericEdit + Left = 223 + Top = 406 + Width = 161 + Height = 56 + Alignment = taCenter + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -40 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 5 + OnClick = edtHmotnostClick + IntegersOnly = False + DisplayFormat = '#,##0.###' + end + object btnDok: TButton + Left = 668 + Top = 571 + Width = 137 + Height = 70 + Caption = 'Dokumenty' + TabOrder = 6 + Visible = False + OnClick = btnDokClick + end + object btnVahaAPI: TButton + Left = 222 + Top = 465 + Width = 163 + Height = 37 + Caption = 'Na'#269'ti z v'#225'hy' + TabOrder = 7 + Visible = False + OnClick = btnVahaAPIClick + end +end diff --git a/frmVstupDat.pas b/frmVstupDat.pas new file mode 100644 index 0000000..5a3975a --- /dev/null +++ b/frmVstupDat.pas @@ -0,0 +1,486 @@ +unit frmVstupDat; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, + Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, RzEdit, AdvTouchKeyboard, Vcl.ExtCtrls, IdHTTP, ddPlugin_TLB; + +const + KLF_ACTIVATE = $00000001; + KLF_SETFORPROCESS = $00000100; + idScale = '5d370286e1780'; + urlAPI = 'https://pd7wk7ht2l.execute-api.eu-central-1.amazonaws.com/alpha/scale'; + +type + TformVstupDat = class(TForm) + pnlCalc: TPanel; + tKeyb: TAdvTouchKeyboard; + edtVyroba: TRzNumericEdit; + edtExpedice: TRzNumericEdit; + btnOK: TButton; + btnStorno: TButton; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + lblSkladem: TLabel; + lblNazev: TLabel; + Label4: TLabel; + edtUmisteni: TRzEdit; + Label5: TLabel; + edtHmotnost: TRzNumericEdit; + lblMDZ: TLabel; + btnDok: TButton; + btnVahaAPI: TButton; + procedure FormShow(Sender: TObject); + procedure edtVyrobaClick(Sender: TObject); + procedure edtExpediceClick(Sender: TObject); + procedure tKeybKeyClick(Sender: TObject; Index: Integer); + procedure tKeybKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure btnOKClick(Sender: TObject); + procedure btnStornoClick(Sender: TObject); + procedure btnCalcCloseClick(Sender: TObject); + procedure FormActivate(Sender: TObject); + procedure edtVyrobaEnter(Sender: TObject); + procedure edtExpediceEnter(Sender: TObject); + procedure edtUmisteniClick(Sender: TObject); + procedure edtHmotnostClick(Sender: TObject); + procedure btnDokClick(Sender: TObject); + procedure btnVahaAPIClick(Sender: TObject); + private + public + Helios: IHelios; + idKZ: Integer; + jeMDZ: boolean; + mnVyroba: Extended; + mnExpedice: Extended; + mnZmet: Extended; + hmot: Extended; + umisteni: string; + rekl: boolean; + fokus: byte; + end; + +var + lSQL: string; + formVstupDat: TformVstupDat; + ctrl: byte; + numPadVal, skladem: extended; + exitKeyb: Boolean; + layName: array[0..KL_NAMELENGTH+1] of Char; + http: TIdCustomHTTP; + +implementation + +uses System.StrUtils, System.JSON, helUtils; + +{$R *.dfm} + + procedure TformVstupDat.btnCalcCloseClick(Sender: TObject); + begin + pnlCalc.Enabled:= false; + case ctrl of + 1: edtUmisteni.SetFocus; + 2: btnOK.SetFocus; + end; + end; + + + + procedure TformVstupDat.btnDokClick(Sender: TObject); + begin + if (idKZ>0) then + Helios.OpenBrowse(bidDok, 'TabDokumenty.ID IN (SELECT IDDok FROM ' + tblDokumVaz + ' WHERE IdentVazby=8 AND IDTab=' + idKZ.ToString + ')'); + end; + + + + procedure TformVstupDat.btnOKClick(Sender: TObject); + var lSQL: string; + begin + edtUmisteni.Text:= Trim(edtUmisteni.Text); + umisteni:= edtUmisteni.Text; + mnVyroba:= edtVyroba.Value; + mnExpedice:= edtExpedice.Value; + hmot:= edtHmotnost.Value; + + if (mnVyroba-mnExpedice>0) and (umisteni='') then + begin + Helios.Error(#1'Nen zadno umstn na sklad !!'#1); + edtUmisteni.SetFocus; + end + else + begin + mnZmet:= 0; + if (mnExpedice=0) then + Helios.Info(#1'! Nen zadno MNOSTV K EXPEDICI !'#1); + if ((mnVyroba+skladem)0) and (idKZ>0) then + begin + lSQL:= 'UPDATE ' + tblKZ + ' SET Hmotnost=' + StringReplace(hmot.ToString, ',', '.', [rfReplaceAll]) + ' WHERE ID=' + idKZ.ToString; + lSQL:= lSQL + ' AND Hmotnost<>' + StringReplace(hmot.ToString, ',', '.', [rfReplaceAll]); + Helios.ExecSQL(lSQL); + end; + ModalResult:= mrOk; + end; + end; + end; + + + + procedure TformVstupDat.btnStornoClick(Sender: TObject); + begin + ModalResult:= mrCancel; + end; + + + + +// 4x faster than dateutils version + function UNIXTimeToDateTimeFAST(UnixTime: LongWord): TDateTime; + begin + result:= (UnixTime/86400) + 25569; + end; + + + + + procedure TformVstupDat.btnVahaAPIClick(Sender: TObject); + var lSQL, data, datStamp, datX, datHmot: string; + hm: Extended; + JObj: TJSONObject; + dat: TDateTime; + begin + hm:= 0; + http:= TIdHTTP.Create(nil); + try + try + data:= http.Get(urlAPI + '/' + idScale); + if (data<>'') then + begin + JObj:= TJSONObject.ParseJSONValue(TEncoding.Default.GetBytes(data),0) as TJSONObject; +// datStamp:= JObj.Get('timestamp').JsonValue.Value; +// if (Length(datStamp)=13) then +// datStamp:= LeftStr(datStamp, 10); +// dat:= UNIXTimeToDateTimeFAST(StrToInt64(datStamp)); +// dat:= UnixToDateTime(StrToInt64(datStamp)); + datHmot:= JObj.Get('weight').JsonValue.Value; // v gramech + hm:= 0; + if not(TryStrToFloat(datHmot,hm)) then + hm:= 0; + hm:= hm/1000; + end; + except on E:Exception do + Helios.Error('Chyba natn hmotnosti: ' + CRLF + #1 + E.Message + #1); + end; + finally + if Assigned(JObj) then + JObj.Free; + http.Free; + end; + edtHmotnost.Value:= hm; + end; + + + + procedure TformVstupDat.edtExpediceClick(Sender: TObject); + begin + edtVyroba.Color:= $f0f0f0; + edtUmisteni.Color:= $f0f0f0; + edtExpedice.Color:= clWebSalmon; + edtHmotnost.Color:= $f0f0f0; + if (jeMDZ) then + edtHmotnost.Color:= $33dfff; + pnlCalc.Enabled:= true; + ctrl:= 2; + end; + + + + procedure TformVstupDat.edtExpediceEnter(Sender: TObject); + begin + edtExpediceClick(Sender); + end; + + + + procedure TformVstupDat.edtHmotnostClick(Sender: TObject); + begin + edtVyroba.Color:= $f0f0f0; + edtUmisteni.Color:= $f0f0f0; + edtExpedice.Color:= $f0f0f0; + edtHmotnost.Color:= clWebSalmon; + ctrl:= 3; + end; + + + + procedure TformVstupDat.edtUmisteniClick(Sender: TObject); + begin + edtVyroba.Color:= $f0f0f0; + edtUmisteni.Color:= clWebSalmon; + edtUmisteni.SetFocus; + edtExpedice.Color:= $f0f0f0; + edtHmotnost.Color:= $f0f0f0; + if (jeMDZ) then + edtHmotnost.Color:= $33dfff; + end; + + + + procedure TformVstupDat.edtVyrobaClick(Sender: TObject); + begin + edtVyroba.Color:= clWebSalmon; + edtVyroba.SetFocus; + edtUmisteni.Color:= $f0f0f0; + edtExpedice.Color:= $f0f0f0; + edtHmotnost.Color:= $f0f0f0; + if (jeMDZ) then + edtHmotnost.Color:= $33dfff; + pnlCalc.Enabled:= true; + ctrl:= 1; + end; + + + + procedure TformVstupDat.edtVyrobaEnter(Sender: TObject); + begin + edtVyrobaClick(Sender); + end; + + + + + procedure TformVstupDat.FormActivate(Sender: TObject); + begin + edtVyrobaClick(Sender); + end; + + + + procedure TformVstupDat.FormClose(Sender: TObject; var Action: TCloseAction); + begin + if (layName[0]<>'') then + LoadKeyboardLayout(@layName, KLF_ACTIVATE or KLF_SETFORPROCESS); + Action:= caFree; + end; + + + + procedure TformVstupDat.FormShow(Sender: TObject); + var m, m2: extended; + s: integer; + lSQL: string; + begin + tKeyb.Width:= 430; + tKeyb.Height:= 395; + pnlCalc.Enabled:= false; + edtVyroba.Value:= mnVyroba; + edtExpedice.Color:= clOlive; + edtExpedice.Value:= mnExpedice; + edtHmotnost.Value:= hmot; + + lblMDZ.Visible:= false; + edtUmisteni.Color:= $f0f0f0; + edtExpedice.Color:= $f0f0f0; + edtHmotnost.Color:= $f0f0f0; + + if (rekl) then + lblMDZ.Caption:= 'REKLAMACE'; + + if (jeMDZ) or (rekl) then + begin + edtHmotnost.Color:= $33dfff; + lblMDZ.Visible:= true; + end; + + if (idKZ>0) then + begin + lblNazev.Caption:= Trim(helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev1 FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString)); + edtUmisteni.Text:= umisteni; + s:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblSS + ' WHERE IDSklad=N''100'' AND IDKmenZbozi=' + idKZ.ToString); + if (s>0) then + begin + m:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT ISNULL( (SELECT Mnozstvi FROM ' + tblSS + ' WHERE ID=' + s.ToString + '), 0)'); +{ + lSQL:= 'SELECT ISNULL( (SELECT SUM(Mnozstvi) FROM ' + tblPZ + ' WHERE SkutecneDatReal IS NULL AND DatPorizeni>=CONVERT(datetime,N''1.3.2019 00:00:01'',104)'; + lSQL:= lSQL + ' AND DruhPohybuZbo IN (2,4) AND IDZboSklad=' + s.ToString + '), 0)'; +} +// lSQL:= 'SELECT ISNULL( (SELECT MnozstviExp FROM dbo.hvw_StavSkladuProExpedici WHERE ID=' + s.ToString + '), 0)'; +// m2:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); +// skladem:= m-m2; + lSQL:= 'SELECT ISNULL( (SELECT MnozstviExp FROM dbo.hvw_StavSkladuProExpedici WHERE ID=' + s.ToString + '), 0)'; + skladem:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); + lblSkladem.Caption:= FormatFloat('#,##0', skladem); + end; + + lSQL:= 'SELECT Hmotnost FROM ' + tblKZ + ' WHERE Hmotnost>0 AND ID=' + idKZ.ToString; + with Helios.OpenSQL(lSQL) do + if (RecordCount>0) then + edtHmotnost.Value:= StrToFloat(VarToStr(FieldValues(0))); + + with Helios.OpenSQL('SELECT COUNT(*) FROM ' + tblDokumVaz + ' WHERE IdentVazby=8 AND IDTab=' + idKZ.ToString) do + btnDok.Visible:= (RecordCount>0); + end; + + if GetKeyboardLayoutName(@layName) then + LoadKeyboardLayout('00020409', KLF_ACTIVATE or KLF_SETFORPROCESS); + + http:= TIdHTTP.Create(nil); + try + try + http.Get(urlAPI + '/' + idScale, [404]); + except + btnVahaAPI.Visible:= false; + end; + finally + http.Free; + end; + btnVahaAPI.Visible:= false; + + case fokus of + 1: edtVyrobaClick(Sender); + 2: edtUmisteniClick(Sender); + 3: edtExpediceClick(Sender); + 4: edtHmotnostClick(Sender); + end; + + end; + + + + procedure TformVstupDat.tKeybKeyClick(Sender: TObject; Index: Integer); + var i: integer; + lSQL, sql1, sql2: string; + desMisto, prepDesM: Boolean; + begin + prepDesM:= true; + if (Index<15) then + begin + if (Index=9) then + begin + case ctrl of + 1: edtVyroba.Value:= 0; + 2: edtExpedice.Value:= 0; + 3: edtHmotnost.Value:= 0; + end; + end; + + i:= -1; + case Index of + 0: i:= 7; + 1: i:= 8; + 2: i:= 9; + 3: i:= 4; + 4: i:= 5; + 5: i:= 6; + 6: i:= 1; + 7: i:= 2; + 8: i:= 3; + // 9: edtNumVal.Value:= 0; + 10: i:= 0; + 11: begin + i:= 100; + prepDesM:= false; + desMisto:= true; + end; + end; + if (i>=0) then + begin + case ctrl of + 1: begin + if (edtVyroba.Value=0) then + edtVyroba.IntValue:= i + else + edtVyroba.IntValue:= StrToInt(Trim(StringReplace(StringReplace(edtVyroba.Text,#160,'',[rfReplaceAll]),' ','',[rfReplaceAll])) + IntToStr(i)); + edtVyroba.SelStart:= Length(edtVyroba.Text); + end; + 2: begin + if (edtExpedice.Value=0) then + edtExpedice.IntValue:= i + else + edtExpedice.IntValue:= StrToInt(Trim(StringReplace(StringReplace(edtExpedice.Text,#160,'',[rfReplaceAll]),' ','',[rfReplaceAll])) + IntToStr(i)); + edtExpedice.SelStart:= Length(edtExpedice.Text); + end; + 3: begin + if (prepDesM) then + desMisto:= Pos(',', edtHmotnost.Text)>0; + if (edtHmotnost.Value=0) then + begin + if (i<100) and (desMisto=false) then + edtHmotnost.IntValue:= i + else + if (i<100) then + edtHmotnost.Text:= edtHmotnost.Text + IntToStr(i) + else + edtHmotnost.Text:= '0,'; + end + else + begin + if (desMisto) then + begin + if (i=100) and (Pos(',', edtHmotnost.Text)=0) then +{ + begin + edtHmotnost.Value:= StrToFloat(Trim(StringReplace(StringReplace(edtHmotnost.Text,#160,'',[rfReplaceAll]),' ','',[rfReplaceAll])) + ',' + IntToStr(i)); + desMisto:= false; + end + else +} + edtHmotnost.Text:= edtHmotnost.Text + ','; + if (i<100) then + edtHmotnost.Text:= edtHmotnost.Text + IntToStr(i); + end + else + edtHmotnost.Value:= StrToFloat(Trim(StringReplace(StringReplace(edtHmotnost.Text,#160,'',[rfReplaceAll]),' ','',[rfReplaceAll])) + IntToStr(i)); + end; + edtHmotnost.SelStart:= Length(edtHmotnost.Text); + end; + end; + end; + end + else + begin +{ + case ctrl of + 1: if (t1-t2)<10 then + edtVyroba.Value:= 0; + 2: if (t1-t2)<10 then + edtExpedice.Value:= 0; + end; +} + end; + end; + + + + procedure TformVstupDat.tKeybKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + var i: integer; + begin +{ + case Key of + 13: i:= 11; + 46: i:= 9; + 48: i:= 10; // 0 + 49: i:= 6; + 50: i:= 7; + 51: i:= 8; + 52: i:= 3; + 53: i:= 4; + 54: i:= 5; + 55: i:= 0; + 56: i:= 1; + 57: i:= 9; + end; + tKeybKeyClick(Sender, i); +} + end; + +end. diff --git a/ico.ico b/ico.ico new file mode 100644 index 0000000000000000000000000000000000000000..14d2ea0d8c1bffeb7513d2054e16a4a132308440 GIT binary patch literal 9198 zcmeHN30zfG8vkFwsHq_trkUb3lheCRNfWl1sSu!&OITP^V$(Fy;y6=Qrq$#Yp(&b~ zW{XRfnxkD>zCp1rWNeppn&&b-| zio$#xOkF@ZI`RD+?2ns)l(C`2?Sw6}2Vwu}8Ayr_L~=|p@{;Fa%iI@8>n_4g$Nn`R zB7WHId>2HU)sk-^)=iBhd;n6Y)210uQinjktEPRcQIxxx<6S6I7aYk>q|PDKxjphT z7GwKoBS^O+vKL2V{k#2<8rvNe#|uz$C>tr`y5m6NT-4F_1slFX=F9=8sj5INeYbnX zThxzqhTVa!pA1G`>Ovgfw-K8^eg>Hz4nP%cR9#Vu^vQjZOk3uBH69g31=R5#WG#FZ zyOvMjcsFFc-4~T*$8dB<5`7tf1lq2q>LiNxXF@SfYOAZTXXRAt^fYSdzv`3a*f>3k zHhK>G<3B=f{4DxEn6wX*)`KYfaSu{y$K;q06z$u@c)1TJj^$D2I&7Q&5`BS-~#aC4oFQqo%qNn`aF~B5jfy+XHzipQ5I+9L2QZx_A1~7xQs+X9~yX zBVqWRh#PVv^&djKDs2CJ1onRa9>?3$uEX)u)>RxEiB*G5`fo6l5`8LBnxBKc-@S{h z1+S3K0!|FJZ^E%*vbV-4-h^ zjn&Ur2&@)DlEB60uz&XP8k|OW)WfF-w;rqAB5t z;J)y)&wZ^{OTR^5EOrKJ;I=t)KbbpkzL%!&g-?C_hD4fStrrm2!~Hb>dKoi&`dTc# zKb%F@#z$_($KigF0i9>e#zZY)V;-J(|AVk0R{xuWjX_+VjcLr7?!HIaw+uyYKOnMuh5ys>xp(CRLI=v$S+E^6*YZ*bN zZbBTAiNI4&``f`yOZWi8&4uwbPkP{v2d^c3lxE`h#FMUKp%r}9x6#N|B(e)bKr4OdabS3)>1oG9sU=s z0q?4^LRJ3LUR8Q1Tk%|Z!DJ9!rP=kaIG(R~W>s5eKdaVH?XT8Nd03Sk+^$%2(Qp^y zM|f9Plql9j6l*Su^$Ep#i(+j?@m#K0&rz)ZTnN^rD}Jt1dsa?SsbjmVpRprQ1jLNDFbUlD*df+l{xciRhqx^JnY|yx5&|`iSFXtbyFU4 z@V4pSRqg%ZeN~*BsVWK&X&D=#x_%@d(W_|RM#Y+t%1fH3udLfB)`#>vLAK4WI<@1= z(X@Fm^%c8^Q0G4Cr>$`sPUwh?=h8F|@$xgiB)zWMj;v=fo(HL_vf~bV!oRBgxQ;L3 zFY(5jo7%T(x?=6hA>X<1w!@0d#kpHFZIMAb>sN}kGDp10e9B+HMDrBhB139yFLkoy zh(ks@y>q?FToJ!*n)Za&OV1_p*tzr#9Y?~OH8;ijnl0XGAJzyJYkUs7pDWLX@M2qu z>zzx-lCI6RDdfRgqxLszaH?qkCbf3reGVU`#r9N3cP2N>?sge$F;J@xtzD#8`#r@5 z65rWhyvF$cfVwls)X#U;LKW+on!lY+bFMlD^0rauAo6dJQ?#!+zZ>Kk$#<+5YTtF;^Ki?Y=N0Sj4SaB_EE0FD3)jb; zEf+VWbH4ZX7?3>Xh{1Z>+kI}IcN^Y&RI&E!n42x(1H1l5vlF?db=Pq&{3NGun)wvt z;%=RrL>8I*tjnvy-RX|_ZxI=ohf4EzsEo)%BIbcHYU8xWZGC!_I+C?URWi@*SRAc&mw71jL9UYj<-OqAZFs&hpz$~l zgqQf&-es>LIZDR2%^zyx-C$md4263#9Q>Q>3)@;J`q;Z|j@#|Cd&MM&{`S0(HsM~b z56f(GvW0SjGdtR3C{{a{jL|aK*DKk7q;WlxSm8G{XQ(YQCaQ@H{9dDS<3G|dBDq+1 z?tQk*c}|u8xYuTf7UAfei1=96eOWhU4{YlN>Lk}HS<5bTv&Z`B*K^zdTxdBj(m&M# zx(M(q{z#pIWeHuOaMUUIJ?B@gQ|L*3?)w;t{S!wIa4$5EYrtxqe^0fx>nFj@T{FwJ zrgFc%=iAAy@f*n}xCI-QJ903;@vFj|G^h9iyKmJr?pa<`{6?%{`0bf%Y+vFB>$9A| z@P$)hHGbT5y&vFrV4c_ay*0(r>Dcsl9zV`d&StE+De7nEEd~t$ literal 0 HcmV?d00001 diff --git a/ico.png b/ico.png new file mode 100644 index 0000000000000000000000000000000000000000..43d8a72d1d90f1d681cf59d1befd47096091719e GIT binary patch literal 1604 zcmXw13pCSv9RE@4O5E!7G+jM!)K#~-lsre%C`wV$6Fp8zMdgvrtl1bsmtH23yhBNp zqW1dFqhhR46EBvzTY^HJvc*sv_1g9(A5RIAHhvO zN^b_zeZS1E0AL32aPxAWnwrvTwJ?&fRs(AhffyPX{?a#I_Fh`i)K}TmSN2|3*FL1y zzhZOnTp6yYrhfFcO zMud%lwi8(wvRdeGM7AWh1DTVQ;3)rjuD6>W)N*poRh3=fSdy;I-Wkl2`L z=p?<#_BvY)!)jRDES5V)LyplLR@(rE0$C6kB@I$SVXIXnlT^~?bL;(18do-~XzLx_ z84G2zy44!(vk$T}={yDUXDysq@dZQS{1d?le#9@}N*cR{&u2EDxz8J&P>m_no;T~A zsGPWGLYZ9Q90Oe|5X6_a@1Sx#lN$!dmF!R7Y@*m!MCPPQ!xPDog{ahU>dTJP^d^-? z^LQP@GYXh@l|RKp{Vutt4<3%6JOX`&Hox%)Ve0PIyk!pxfP`v7D~r%Rdt5t3-Tcea$S2X z!JC&KLd9gGiI?Or0ECJWb2?BAL`6S6Ljk_OECf-21OQ_m0CP1z*w4^K&<&|QpsvOn z0KI8@nr9)xXu`OB4OkjB?Hf&a0L(N+CIvs)FNj4*PBH+PbtFL3d-*>%0J=a2fRRw^ z706V_e>V;bXsAD25HUN*#penDzjJ<+&h5W`HwHkr!xii36)qe+@Y$0eG_TWL_dqk| z25pVmE@FXUOZ*C5hUuVqCDS49A zb!rR0|HbRB2Rf6I z{RMHC%J;hUn6D*Js$G>RRO+03xrf)$>;U>#vy6t3v)nL$pU^7v_I&qPqmAjzwwyFZ zdYC)K=Q8!UxRmnQByoP%5&Pe;SKvCy(M;Aoi%Z1YY|)`3sSL7Isq$m8NDbsp`r*;# zrz$F{o|@?|Uo1(vyx2dmFm`j|=1ZzA^B#@tV`z#DxZd8mOZWqKa5CeRgT>FwXkigv zUF&-`>1XDhIJyCMA7{=gJm0!AbDu-;kxX>_(wk|EpSc}c`A<4v4!{l}$x-`bOj{Hl3!hT~|Hb^Bb$wI+82zAk^eTX$O|@=&-xjXir$)-tXa zweiDMTWobt-U4wAfoe@Vw7pu&k4{P%8sG`uqDo|m57O;kTuk70<@6^NZ=027+PkrE zk-v$~s*cxFq@);h_+(%3)C~tyse-$@cRVL2oqBH28gKK!es#v?RlJASv@ElQe7n-S zPehg+@(Gu~3;RRRS1a5j7N{#%jS|BL?kvhEQV&HgtGyR!HOV_4wr^%vZFuRn)58>L zHa+0(FkfbMdDE`%&R|kiB3CD8dR2t`eze}`zx>#^-$F{n%EsjGxA7E;Pvi%Y P>j$pRd$6TWzU2P^USm*Y literal 0 HcmV?d00001 diff --git a/plgKdynium.dpr b/plgKdynium.dpr new file mode 100644 index 0000000..719e124 --- /dev/null +++ b/plgKdynium.dpr @@ -0,0 +1,73 @@ +library plgKdynium; + + +//{$WEAKLINKRTTI ON} +//{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} +//{$IFNDEF DEBUG} +// {$SetPEFlags $AC0E} +// {$SetPEOptFlags $AC0E} +//{$ELSE} +// {$SetPEFlags $AA02} +// {$SetPEOptFlags $AA02} +//{$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 + madExcept, + madLinkDisAsm, + madListHardware, + madListProcesses, + madListModules, + System.Win.ComServ, + ddPlugin_TLB, + ComObjekt in 'ComObjekt.pas', + frmGenPolos in 'frmGenPolos.pas' {formGenPolos}, + frmOdlitek in 'frmOdlitek.pas' {formOdlitek}, + frmOdvTavby in 'frmOdvTavby.pas' {formOdvTavby}, + frmOdvLis in 'frmOdvLis.pas' {formOdvLis}, + frmGenTPV in 'frmGenTPV.pas' {formGenTPV}, + frmDavkyObecne in 'frmDavkyObecne.pas' {formDavkyObecne}, + frmEvidOper in 'frmEvidOper.pas' {formEvidOper}, + frmHrOdvOper in 'frmHrOdvOper.pas' {formHrOdvOper}, + frmVstupDat in 'frmVstupDat.pas' {formVstupDat}, + frmSchvaleniZak in 'frmSchvaleniZak.pas' {formSchvaleniZak}, + frmInputNum in 'frmInputNum.pas' {formInputNum}, + frmHrOdvOperZmetky in 'frmHrOdvOperZmetky.pas' {formHrOdvOperZmetky}, + frmKoopObjUprava in 'frmKoopObjUprava.pas' {formKoopObjUprava}, + dataMod in 'dataMod.pas' {dm: TDataModule}, + frmOOPPohyb in 'frmOOPPohyb.pas' {formOOPPohyb}; + +// ,frmPlanLis in 'frmPlanLis.pas' {formPlanLis}; + +exports + DllGetClassObject, + DllCanUnloadNow, + DllRegisterServer, + DllUnregisterServer; + +{$R *.RES} + +BEGIN +END. + + + + +// 2022.524 +// frmOdlitek - pridano Lisovaci skupina 2 + Llisovaci cas 2 diff --git a/plgKdynium.dproj b/plgKdynium.dproj new file mode 100644 index 0000000..2d6bbf9 --- /dev/null +++ b/plgKdynium.dproj @@ -0,0 +1,240 @@ + + + {CDF713A9-2CCE-4031-A570-C2BDF2C725A4} + plgKdynium.dpr + True + Release + 1 + Library + None + 20.3 + Win32 + plgKdynium + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + false + false + false + false + false + 00400000 + true + plgKdynium + 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;Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;Vcl.Imaging;Vcl.Samples;$(DCC_Namespace) + + + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png + package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey= + Debug + activity-1.1.0.dex.jar;annotation-1.2.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;biometric-1.1.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.1.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.1.0.dex.jar;core-runtime-2.1.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.2.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.2.0.dex.jar;lifecycle-runtime-2.2.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.2.0.dex.jar;lifecycle-viewmodel-savedstate-2.2.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;savedstate-1.0.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar + + + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png + activity-1.1.0.dex.jar;annotation-1.2.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;biometric-1.1.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.1.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.1.0.dex.jar;core-runtime-2.1.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.2.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.2.0.dex.jar;lifecycle-runtime-2.2.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.2.0.dex.jar;lifecycle-viewmodel-savedstate-2.2.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;savedstate-1.0.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar + + + Debug + true + CompanyName=;FileDescription=Plugin Helios iNuvio pro Kdynium Kdyne;FileVersion=3.0.2024.1027;InternalName=plgKdynium;LegalCopyright=HD Consulting Stakonice, T. Buzin;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=XE11.3;ProgramID=com.embarcadero.$(MSBuildProjectName) + 3 + 2024 + 1027 + 1029 + true + (None) + none + D:\Data\Helios\HeliosMain.exe + D:\Data\Helios + + + RELEASE;$(DCC_Define) + 0 + false + 0 + + + true + 3 + 2025 + 514 + true + CompanyName=;FileDescription=Plugin Helios iNuvio pro Kdynium Kdyne;FileVersion=3.0.2025.514;InternalName=plgKdynium;LegalCopyright=HD Consulting Stakonice, T. Buzin;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=XE12.3.1;ProgramID=com.embarcadero.$(MSBuildProjectName);LastCompiledTime=2025.05.14 13:17:13 + madExcept;$(DCC_Define) + 3 + 2 + true + + + DEBUG;$(DCC_Define) + false + true + true + true + + + Debug + + + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=3.0.2024.1027;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);LastCompiledTime=2025.05.14 13:12:34 + true + true + true + 3 + 2024 + 1027 + true + madExcept;$(DCC_Define) + 3 + + + + MainSource + + + +
formGenPolos
+
+ +
formOdlitek
+
+ +
formOdvTavby
+
+ +
formOdvLis
+
+ +
formGenTPV
+
+ +
formDavkyObecne
+
+ +
formEvidOper
+
+ +
formHrOdvOper
+
+ +
formVstupDat
+
+ +
formSchvaleniZak
+
+ +
formInputNum
+
+ +
formHrOdvOperZmetky
+
+ +
formKoopObjUprava
+
+ +
dm
+ TDataModule +
+ +
formOOPPohyb
+
+ + Base + + + Cfg_1 + Base + + + Cfg_2 + Base + +
+ + Delphi.Personality.12 + + + + + plgKdynium.dpr + + + Ethea SVGIconImageList VCL components + TurboPack Essentials Delphi Runtime package + Png Components for Delphi + DMVCFramework - CopyRight (2010-2024) Daniele Teti and the DMVCFramework Team + Ethea SVGIconImageList FMX components + Helios Orange Components + Express Cross Platform Library Icon Library by Developer Express Inc. + TurboPack LockBox 3 Delphi runtime package + Embarcadero Standard Components + TurboPack Orpheus Delphi datataware designtime package + TurboPack LockBox 3 VCL designtime package + TurboPack LockBox Delphi designtime package + Ethea IconFontsImageList VCL components + Ethea IconFontsImageList FMX components + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + + False + False + False + True + False + + + 12 + + + +
diff --git a/plgKdynium.res b/plgKdynium.res new file mode 100644 index 0000000000000000000000000000000000000000..8427757cbf20387a3e35b879de9a3f9e930e95bc GIT binary patch literal 1004 zcmZ{j-D(p-7>3{ch_)hl;F%|j2!$eHw{8@QP+F@t*w)a7;+e!G#>LGh56s==}b$B@wB-?yO$vdw`tncBiFRe zuG1xt5jxoG>!MBKtW>y1dw<3#MzsibyNoXxL+(}1ro<012KlR8y<+L9|A3aWw;M{y qEWXn_)$6MLkyrHjd=oW~wGR*bUuQbO+Gl=;IxX&V(Te}HgzE;#xR6!= literal 0 HcmV?d00001 diff --git a/regMe_x64_kdynium.reg b/regMe_x64_kdynium.reg new file mode 100644 index 0000000000000000000000000000000000000000..d80d5836d542ae16115b273ece0f5fb0a1714c2b GIT binary patch literal 1030 zcmds$TT8=05QV>I!T(TvuSgrOAXuZNQg5_k5GzG&DS?c-M?v|UBwm498knm1i-h*f-(bv>G5ksfVcxC-&_u+5U=@8>g6 zqntadRdAzXRox!LztVF)+YVc5IdE@g?Yrtc(=+9PTdO+~&HjlZr$LQL=$?56zRrBA c0=b<#{*~;%yR+)_EWEVQr)vFV&wup!JD19rp#T5? literal 0 HcmV?d00001 diff --git a/regMe_x86_kdynium.reg b/regMe_x86_kdynium.reg new file mode 100644 index 0000000000000000000000000000000000000000..ea5435ddb25ec14f5f4c12fd01313854ffde7054 GIT binary patch literal 922 zcmdUtT}uK{5Qd-Yp#LD<8KoY`mL%L_kpi{vBF+sPmh{dU5_^JM*E3#B*P+dB;USw(|Wp`SwURH%^a;1Om{`Y*p02T3t*Z=?k literal 0 HcmV?d00001