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 0000000..1a1aeaa Binary files /dev/null and b/arrowDown.png differ 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 0000000..14d2ea0 Binary files /dev/null and b/ico.ico differ diff --git a/ico.png b/ico.png new file mode 100644 index 0000000..43d8a72 Binary files /dev/null and b/ico.png differ 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 0000000..8427757 Binary files /dev/null and b/plgKdynium.res differ diff --git a/regMe_x64_kdynium.reg b/regMe_x64_kdynium.reg new file mode 100644 index 0000000..d80d583 Binary files /dev/null and b/regMe_x64_kdynium.reg differ diff --git a/regMe_x86_kdynium.reg b/regMe_x86_kdynium.reg new file mode 100644 index 0000000..ea5435d Binary files /dev/null and b/regMe_x86_kdynium.reg differ