unit frmMain; {$I plgEMPDeleniTrubek.inc} interface uses Winapi.Windows, Winapi.ActiveX, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, ddPlugin_TLB, Vcl.StdCtrls, System.ImageList, Vcl.ImgList, Vcl.Mask, Vcl.ExtCtrls, Vcl.VirtualImageList, Vcl.BaseImageCollection, Vcl.ImageCollection, Vcl.ControlList, ES.ControlListControls, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client, System.Generics.Collections, datModul, Vcl.Buttons, Vcl.Touch.GestureMgr, JvExStdCtrls, JvScrollBar, RzTabs, JvExControls, JvgDigits, Winapi.ShlObj, Winapi.KnownFolders, Vcl.ComCtrls, JvExComCtrls, JvDateTimePicker, AdvDateTimePicker, RzEdit, System.SyncObjs, arrayHelper; const skladMat = '1030'; PRINTER_OPTION_NO_CACHE = 1 shl 0; KLF_ACTIVATE = $00000001; KLF_SETFORPROCESS = $00000100; type { TControlList = class(Vcl.Controllist.TControlList) private procedure CNCommand(var Message: TWMCommand); message CN_COMMAND; procedure WMVScroll(var Msg: TWMHScroll); message WM_VSCROLL; end; } TformMain = class(TForm) imgListOld: TImageList; imgColl: TImageCollection; imgList: TVirtualImageList; ctrlFronta: TControlList; cbPrevod: TEsControlListCheckBox; lblMaterial: TLabel; lblDeleni: TLabel; lblNadoba: TLabel; lblRegCisPrikaz: TLabel; Label1: TLabel; cbZamest: TComboBox; lblRegCis: TLabel; lblMaterialSort: TLabel; Label3: TLabel; lblNadobaSort: TLabel; edtFiltrMaterial: TEdit; edtFiltrNadoba: TEdit; btnSmazFiltry: TSpeedButton; Label4: TLabel; lblRecCount: TLabel; edtFiltrPila: TEdit; edtFiltrPlan: TEdit; panelPila: TPanel; panelPlan: TPanel; btnAddPila: TSpeedButton; btnAddPila2: TSpeedButton; boxFiltry: TGroupBox; frontaPanel: TPanel; btnFiltrPila: TBitBtn; btnFiltrPlan: TBitBtn; lblPila1RegCis: TLabel; lblPila1Skladem: TLabel; lblPila1Sarze: TLabel; lblPila1SarzeSkladem: TLabel; frontaPila: TControlList; lblPila1ItemDeleni: TLabel; lblPila1ItemNadoba: TLabel; btnPauzaPila: TSpeedButton; btnPila2Pauza: TSpeedButton; lblPila1ItemRadaPrikaz: TLabel; lblRadaPrikaz: TLabel; lblRecSelected: TLabel; Panel1: TPanel; btnFrontaUp: TSpeedButton; btnFrontaPgUp: TSpeedButton; btnFrontaPgDown: TSpeedButton; btnFrontaDown: TSpeedButton; cbFrontaAll: TCheckBox; timerNactiFrontu: TTimer; time2: TTimer; btnStopPila: TSpeedButton; btnPila2Stop: TSpeedButton; btnDelPila: TSpeedButton; btnPila2Del: TSpeedButton; Label2: TLabel; pgCtrl: TRzPageControl; shPila: TRzTabSheet; shPlan: TRzTabSheet; frontaPlan: TControlList; lblPlanItemDeleni: TLabel; lblPlanItemNadoba: TLabel; lblPlanItemRadaPrikaz: TLabel; btnTiskStitku: TSpeedButton; btnPlanUp: TSpeedButton; btnPlanPgUp: TSpeedButton; btnPlanPgDown: TSpeedButton; btnPlanDown: TSpeedButton; btnPilaPgUp: TSpeedButton; btnPilaUp: TSpeedButton; btnPilaDown: TSpeedButton; btnPilaPgDown: TSpeedButton; lblPlanRegCis: TLabel; lblPlanSkladem: TLabel; lblPlanSarze: TLabel; lblPlanSarzeSkladem: TLabel; lblPlanDelkaSum: TLabel; lblPilaDelkaSum: TLabel; btnDigitReset: TButton; digitTimer: TTimer; lblTimerPila: TLabel; btnObrazek: TSpeedButton; btnPosliNaPilu: TBitBtn; btnFiltrMat: TSpeedButton; btnCalc: TSpeedButton; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; lblPila1Nazev1: TLabel; lblPlanNazev1: TLabel; timer3: TTimer; btnAllZamest: TButton; btnDelPilaOne: TSpeedButton; btnSrot: TButton; btnCalcNadoba: TSpeedButton; edtFiltrNazev: TEdit; btnFiltrNazev: TSpeedButton; edtFiltrDN: TEdit; edtFiltrPrumer: TEdit; edtFiltrTloustka: TEdit; edtFiltrJakost: TEdit; edtFiltrProfil: TEdit; Label13: TLabel; lblPrumer: TLabel; Label14: TLabel; lblTloustka: TLabel; lblFiltrDN: TLabel; lblFiltrPrumer: TLabel; lblFiltrTloustka: TLabel; lblFiltrJakostMat: TLabel; lblFiltrProfil: TLabel; btnKonecDavky: TButton; btnFiltrPilaDel: TSpeedButton; lblRezatUhel: TLabel; lblRezatUhelPlan: TLabel; lblRezatUhelPila: TLabel; btnZmenaSarze: TButton; pgCtrlMD: TRzPageControl; shFrontaPrace: TRzTabSheet; shMatDavky: TRzTabSheet; ctrlMD: TControlList; lblMDCislo: TLabel; pnlHeaderMD: TPanel; Label15: TLabel; lblMDDatum: TLabel; lblMDCisloZbo: TLabel; lblMDNazev: TLabel; lblMDPrumer: TLabel; lblMDTloustka: TLabel; lblMDJakost: TLabel; lblMDDM: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; Label19: TLabel; Label20: TLabel; Label21: TLabel; Label22: TLabel; Label24: TLabel; Label25: TLabel; Shape1: TShape; edtFiltrMDCislo: TEdit; btnSmazFiltryMD: TSpeedButton; dtFiltrMDDatum: TRzDateTimeEdit; lblMDPozic: TLabel; btnTiskBezEvidence: TBitBtn; lblPozicePilaFronta: TLabel; lblRegCisPrikaz2: TLabel; edtFiltrMDDM: TEdit; edtFiltrMDSila: TEdit; edtFiltrMDPrumer: TEdit; lblJsemAlter: TLabel; edtFiltrMDRegCisMat: TEdit; edtFiltrMDRozmer: TEdit; edtFiltrMDNormaMAT: TEdit; lblMDRozmer: TLabel; lblMDNormaMat: TLabel; procedure FormShow (Sender: TObject); procedure cbZamestChange (Sender: TObject); procedure ctrlFrontaBeforeDrawItem (AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState); procedure cbPrevodClick (Sender: TObject); procedure lblNadobaSortClick (Sender: TObject); procedure lblMaterialSortClick (Sender: TObject); procedure edtFiltrMaterialExit (Sender: TObject); procedure edtFiltrNadobaExit (Sender: TObject); procedure btnSmazFiltryClick (Sender: TObject); procedure edtFiltrMaterialEnter (Sender: TObject); procedure edtFiltrNadobaEnter (Sender: TObject); procedure ctrlFrontaItemClick (Sender: TObject); procedure ctrlFrontaMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure btnFiltrPilaClick (Sender: TObject); procedure edtFiltrPilaExit (Sender: TObject); procedure btnFiltrPlanClick (Sender: TObject); procedure edtFiltrPlanExit (Sender: TObject); procedure edtFiltrPilaEnter (Sender: TObject); procedure edtFiltrPlanEnter (Sender: TObject); procedure btnAddPilaClick (Sender: TObject); procedure frontaPilaBeforeDrawItem (AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState); procedure edtFiltrMaterialKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); procedure lblMaterialClick (Sender: TObject); procedure lblRegCisClick (Sender: TObject); procedure btnFrontaDownClick (Sender: TObject); procedure btnFrontaPgDownClick (Sender: TObject); procedure btnFrontaPgUpClick (Sender: TObject); procedure btnFrontaUpClick (Sender: TObject); procedure cbFrontaAllClick (Sender: TObject); procedure timerNactiFrontuTimer (Sender: TObject); procedure btnDelPilaClick (Sender: TObject); procedure btnPila2DelClick (Sender: TObject); procedure btnPilaPgUpClick (Sender: TObject); procedure btnPilaUpClick (Sender: TObject); procedure btnPilaDownClick (Sender: TObject); procedure btnPilaPgDownClick (Sender: TObject); procedure btnPlanPgUpClick (Sender: TObject); procedure btnPlanPgDownClick (Sender: TObject); procedure btnPlanUpClick (Sender: TObject); procedure btnPlanDownClick (Sender: TObject); procedure frontaPlanBeforeDrawItem (AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState); procedure FormClose (Sender: TObject; var Action: TCloseAction); procedure frontaPlanAfterDrawItems (ACanvas: TCanvas; ARect: TRect); procedure btnTiskStitkuClick (Sender: TObject); procedure btnDigitResetClick (Sender: TObject); procedure digitTimerTimer (Sender: TObject); procedure btnPosliNaPiluClick (Sender: TObject); procedure pgCtrlChange (Sender: TObject); procedure btnObrazekClick (Sender: TObject); procedure btnFiltrMatClick (Sender: TObject); procedure frontaPilaItemClick (Sender: TObject); procedure btnCalcClick (Sender: TObject); procedure timer3Timer (Sender: TObject); procedure btnAllZamestClick (Sender: TObject); procedure btnDelPilaOneClick (Sender: TObject); procedure btnSrotClick (Sender: TObject); procedure lblPlanItemDeleniClick (Sender: TObject); procedure btnCalcNadobaClick (Sender: TObject); procedure edtFiltrNazevEnter (Sender: TObject); procedure edtFiltrNazevExit (Sender: TObject); procedure edtFiltrDNEnter (Sender: TObject); procedure edtFiltrPrumerEnter (Sender: TObject); procedure edtFiltrTloustkaEnter (Sender: TObject); procedure edtFiltrJakostEnter (Sender: TObject); procedure edtFiltrJakostExit (Sender: TObject); procedure edtFiltrJakostKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); procedure edtFiltrProfilEnter (Sender: TObject); procedure edtFiltrProfilExit (Sender: TObject); procedure edtFiltrProfilKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); procedure edtFiltrDNExit (Sender: TObject); procedure edtFiltrDNKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); procedure edtFiltrPrumerExit (Sender: TObject); procedure edtFiltrPrumerKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); procedure edtFiltrTloustkaExit (Sender: TObject); procedure edtFiltrTloustkaKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); procedure edtFiltrNazevKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); procedure btnKonecDavkyClick (Sender: TObject); procedure btnFiltrPilaDelClick (Sender: TObject); procedure frontaPilaAfterDrawItems (ACanvas: TCanvas; ARect: TRect); procedure ctrlMDBeforeDrawItem (AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState); procedure ctrlMDBeforeDrawItems (ACanvas: TCanvas; ARect: TRect); procedure ctrlMDItemClick (Sender: TObject); procedure lblMDCisloZboClick (Sender: TObject); procedure btnZmenaSarzeClick (Sender: TObject); procedure ctrlMDMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure edtFiltrMDCisloKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState); procedure edtFiltrMDCisloExit (Sender: TObject); procedure dtFiltrMDDatumChange (Sender: TObject); procedure btnSmazFiltryMDClick (Sender: TObject); procedure dtFiltrMDDatumDateTimeChange (Sender: TObject; DateTime: TDateTime); procedure pgCtrlMDChange (Sender: TObject); procedure edtFiltrPilaChange (Sender: TObject); procedure btnTiskBezEvidenceClick (Sender: TObject); procedure Label4MouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure edtFiltrMDDMKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState); procedure edtFiltrMDDMExit (Sender: TObject); procedure edtFiltrMDSilaExit (Sender: TObject); procedure edtFiltrMDSilaKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState); procedure edtFiltrMDRegCisMatExit (Sender: TObject); procedure edtFiltrMDRegCisMatKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState); procedure edtFiltrMDRozmerExit (Sender: TObject); procedure edtFiltrMDRozmerKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState); procedure edtFiltrMDNormaMatExit (Sender: TObject); procedure edtFiltrMDNormaMatKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState); private FTiskThread: TThread; apiTiskTasks: TArrayRecord; canAktPilu: boolean; // FPila: TList; // FPlan: TList; function EvidencePrace (idRezRozpisR: integer): integer; // vystup je TabPrikazMzdyAZmetky.ID nebo 0 procedure ShowTabTip; procedure CloseTabTip; procedure NactiPracovnikyPily; procedure NactiRozpracovanePolozky; procedure NactiFrontu; procedure UpdateVyber; procedure AktualizujFrontuPila; procedure NactiMnozstviSkladu (pila: boolean=true; idKZ: integer=0; sarze: string=''); procedure VymazUdajePilaNeboPlan (plan: Boolean=false); procedure NactiZamestnanceDleIDNeboCisla (id: integer=0; cislo: Integer=0); procedure ZapisInfoMaterialPila; procedure ZapisInfoMaterialPlan; procedure TiskniZAPIAddTask (idRezPredpisR, idPrKV: integer); procedure TTiskThreadDestroy (Sender: TObject); public Helios: IHelios; dm: Tdm; idDP: integer; end; var formMain: TformMain; bc, szrc, sz, rc, sarze, msgProTimer: string; sklMat: string; mamSarzi, kmenStavOK, sarzeStavOK, materialOK, materialPilaOK, jsemZUlozenych: boolean; idKZ, idSS, idVCS, cisZam, idZam: integer; mnozSkl: extended; idPrac: integer; pilaOK, planOK, canSelFronta, firstNacitani: boolean; pilaDelkaSum, planDelkaSum: extended; timerPila: integer; itemPilaProTisk: integer; oVar1, oVar2: OleVariant; pilaReqSN, planReqSN: boolean; calcTyp: byte; tick1: Cardinal; showMDDetail: boolean; implementation uses System.StrUtils, System.Character, System.Rtti, System.Math, WinAPI.ShellAPI, Vcl.Clipbrd, System.Threading, Winapi.WinSpool, Vcl.Printers, frmCalc, frmObrazekKZ, frmKeyb, frmPolozkyMD, helUtils; {$R *.dfm} procedure TformMain.UpdateVyber; var i: integer; begin end; procedure TformMain.CloseTabTip; var HwndTabTip: HWND; begin HwndTabTip := FindWindow(PChar('IPTip_Main_Window'), nil); if (HwndTabTip <> 0) then PostMessage(HwndTabTip, WM_SYSCOMMAND, SC_CLOSE, 0); end; procedure TformMain.ShowTabTip; var SI: TStartupInfo; PI: TProcessInformation; ExeName: string; begin ExeName:= GetEnvironmentVariable('CommonProgramW6432') + '\microsoft shared\ink\TabTip.exe'; ZeroMemory(@SI, SizeOf(SI)); SI.cb := SizeOf(SI); if not CreateProcess (PChar(ExeName), nil, nil, nil, False, 0, nil, nil, SI, PI) then RaiseLastOSError; CloseHandle(PI.hProcess); CloseHandle(PI.hThread); end; procedure TformMain.ZapisInfoMaterialPila; var lSQL: string; begin if (datModul.idKmenMaterialPila>0) then begin // if (edtFiltrPila.Text='') then begin lSQL:= 'SELECT k.Nazev1 + N'' '' + ISNULL(ke._Rozmer, N'''') + N'' / '' + ISNULL(ke._S1_X, N'''') + N'' '' + ISNULL(ke._JakostMaterialu, N'''') AS Nazev1, k.RegCis FROM ' + tblKZ; lSQL:= lSQL + ' k LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) WHERE k.id=' + datModul.idKmenMaterialPila.ToString; with Helios.OpenSQL(lSQL) do begin lblPila1Nazev1.Caption:= VarToStr(FieldByNameValues('Nazev1')); lblPila1RegCis.Caption:= VarToStr(FieldByNameValues('RegCis')); end; end; end else begin lblPila1Nazev1.Caption:= ''; lblPila1RegCis.Caption:= ''; lblPila1Skladem.Caption:= ''; lblPila1Sarze.Caption:= ''; lblPila1SarzeSkladem.Caption:= ''; end; end; procedure TformMain.ZapisInfoMaterialPlan; var lSQL: string; begin if (datModul.idKmenMaterialPlan>0) then begin if (edtFiltrPila.Text='') then begin lSQL:= 'SELECT k.Nazev1 + N'' '' + ISNULL(ke._Rozmer, N'''') + N'' / '' + ISNULL(ke._S1_X, N'''') + N'' '' + ISNULL(ke._JakostMaterialu, N'''') AS Nazev1, k.RegCis FROM ' + tblKZ; lSQL:= lSQL + ' k LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) WHERE k.id=' + datModul.idKmenMaterialPlan.ToString; with Helios.OpenSQL(lSQL) do begin lblPlanNazev1.Caption:= VarToStr(FieldByNameValues('Nazev1')); lblPlanRegCis.Caption:= VarToStr(FieldByNameValues('RegCis')); end; end; end else begin lblPlanNazev1.Caption:= ''; lblPlanRegCis.Caption:= ''; lblPlanSkladem.Caption:= ''; lblPlanSarze.Caption:= ''; lblPlanSarzeSkladem.Caption:= ''; end; end; procedure TformMain.NactiRozpracovanePolozky; var lSQL, prpA, sarze: string; i, idH, poz, iTemp: integer; idPol, idVPr, prpD, idPrVaz, idPrP, idPrac, idKZMat, idMaD: integer; z, zx: TZamestnanec; jeTiskAkt: boolean; begin if not(dm.tblPila.Active) then dm.tblPila.Open; if not(dm.tblPlan.Active) then dm.tblPlan.Open; canAktPilu:= false; Helios.ExecSQL('SELECT 2 AS DebugStep'); Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 2'''); iTemp:= 0; lSQL:= 'SELECT TOP(1) ID, ISNULL(OsCislo,0) AS OsCislo, ISNULL(Sarze, N'''') AS Sarze, ISNULL(IdKmenZboMaterial,0) AS IdKmenZboMaterial, ISNULL(IDPlanMD,0) AS IDPlanMD FROM ' + tblRezPredpis; lSQL:= lSQL + ' WHERE Splneno=0 AND IDPlanMD IS NOT NULL AND JePlan=0 AND LoginName=SUSER_SNAME()'; // DeviceID=N' + datModul.devID.QuotedString; with Helios.OpenSQL(lSQL) do if (RecordCount>0) then begin First; while not(EOF) do begin idH:= VarToStr(FieldByNameValues('ID')).ToInteger; sarze:= VarToStr(FieldByNameValues('Sarze')); datModul.idHlavPila:= idH; cisZam:= VarToStr(FieldByNameValues('OsCislo')).ToInteger; idZam:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblCZam + ' WHERE Cislo=' + cisZam.ToString); z:= TZamestnanec.Create(0, cisZam, Helios); for i:=0 to cbZamest.Items.Count-1 do begin zx:= (cbZamest.Items.Objects[i] as TZamestnanec); if (zx.Cislo=z.Cislo) then cbZamest.ItemIndex:= i; end; FreeAndNil (z); FreeAndNil (zx); // nacti udaje z Materialove davky idMaD:= VarToStr(FieldByNameValues('IDPlanMD')).ToInteger; if (idMaD>0) and (datModul.idMatDavka=0) then datModul.idMatDavka:= idMaD; if (idMaD>0) and (shPila.Caption='DÁVKA') then shPila.Caption:= 'DÁVKA ' + helUtils.getHeliosStrVal(Helios, '', 'SELECT Cislo FROM ' + tblMatDavkyH + ' WHERE ID=' + idMaD.ToString); if (datModul.idMatDavka>0) then datModul.idMatDavkaKmen:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDKmenZboziMat FROM ' + tblMatDavkyH + ' WHERE ID=' + datModul.idMatDavka.ToString); if (datModul.idMatDavkaKmen>0) then NactiMnozstviSkladu (true, datModul.idMatDavkaKmen, ''); Helios.ExecSQL('SELECT 3 AS DebugStep'); Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 3'''); // dopln vazby na operaci lSQL:= 'MERGE ' + tblRezPredpisR + ' AS T USING (SELECT v.ID AS IDPrKVazby, p.Doklad, p.Alt FROM ' + tblPrKVaz + ' v LEFT JOIN ' + tblPrPost; lSQL:= lSQL + ' p ON (p.operace=v.Operace AND p.IDPrikaz=v.IDPrikaz AND p.IDOdchylkyDo IS NULL)) AS S ON (T.IDPrKVazby=S.IDPrKVazby)'; lSQL:= lSQL + ' WHEN MATCHED AND T.DokladOper IS NULL THEN UPDATE SET T.DokladOper=S.Doklad, T.AltOper=S.Alt;'; // Helios.ExecSQL(lSQL); Helios.ExecSQL('SELECT 4 AS DebugStep'); Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 4'''); lSQL:= 'SELECT r.ID, r.IDPrikaz, r.Doklad, ISNULL(r.Operace, IIF(TRIM(r.Operace)<>N'''', TRIM(r.Operace), o.Operace)) AS Operace, ISNULL(r.DokladOper, o.Doklad) AS DokladOper'; lSQL:= lSQL + ', ISNULL(r.AltOper, o.Alt) AS AltOper, r.IDPrKVazby, r.IDKmenMaterial, r.MnozstviKs, r.Mnozstvi, r.MnozstviReal'; lSQL:= lSQL + ', r.MnozstviRealKs, r.Tisk, ISNULL(r.IdMzdy,0) AS IdMzdy, r.IDPlanMD, r.IDPlanMDPol FROM ' + tblRezPredpisR + ' r'; lSQL:= lSQL + ' LEFT JOIN ' + tblPrKVaz + ' v ON (v.ID=r.IDPrKVazby AND v.IDOdchylkyDo IS NULL)'; lSQL:= lSQL + ' LEFT JOIN ' + tblPrPost + ' o ON (o.Operace=v.Operace AND o.IDPrikaz=r.IDPrikaz AND o.IDOdchylkyDo IS NULL)'; lSQL:= lSQL + ' WHERE r.IDMzdy IS NULL AND r.Tisk=0 AND ISNULL(v.Splneno,0)=0 AND r.IDHlavicka=' + idH.ToString; lSQL:= lSQL + ' AND r.IDPrikaz IN (SELECT ID FROM ' + tblVPr + ' WHERE DATEDIFF(year, DatPorizeni, GETDATE())<5 AND StavPrikazu IN (30))'; lSQL:= lSQL + ' ORDER BY r.Pozice, r.ID'; with Helios.OpenSQL(lSQL) do if (RecordCount>0) then begin First; while not(EOF) do begin idPol:= VarToStr(FieldByNameValues('ID')).ToInteger; idVPr:= VarToStr(FieldByNameValues('IDPrikaz')).ToInteger; prpD:= VarToStr(FieldByNameValues('DokladOper')).ToInteger; prpA:= VarToStr(FieldByNameValues('AltOper')); idPrVaz:= VarToStr(FieldByNameValues('IDPrKVazby')).ToInteger; lSQL:= 'SELECT ID FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString + ' AND Doklad=' + prpD.ToString + ' AND Alt=N' + prpA.QuotedString; idPrP:= helUtils.getHeliosIntVal(Helios, 0, lSQL); idPrac:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT pracoviste FROM ' + tblPrPost + ' WHERE ID=' + idPrP.ToString); poz:= dm.MaxPoziceTab (dm.tblPila) + 10; dm.tblPila.Append; dm.tblPila.FieldByName('colPozice').AsInteger:= poz; dm.tblPila.FieldByName('colPoziceInt').AsInteger:= poz; dm.tblPila.FieldByName('colIDPrKVazby').AsInteger:= idPrVaz; dm.tblPila.FieldByName('colIDPrPostup').AsInteger:= idPrP; dm.tblPila.FieldByName('colIDHlavicka').AsInteger:= idH; dm.tblPila.FieldByName('colIDPolozka').AsInteger:= idPol; dm.tblPila.FieldByName('colIDPlanH').AsInteger:= idMaD; dm.tblPila.FieldByName('colIDPlanR').AsString:= VarToStr(FieldByNameValues('IDPlanMDPol')); dm.tblPila.FieldByName('colKs').AsExtended:= VarToStr(FieldByNameValues('MnozstviKs')).ToExtended; dm.tblPila.FieldByName('colOperace').AsString:= VarToStr(FieldByNameValues('Operace')); dm.tblPila.FieldByName('colTisk').AsString:= VarToStr(FieldByNameValues('Tisk')); dm.tblPila.FieldByName('colIDMzdy').AsInteger:= VarToStr(FieldByNameValues('IdMzdy')).ToInteger; dm.tblPila.FieldByName('colPovoleno').AsBoolean:= (dm.tblPila.FieldByName('colIDMzdy').AsInteger=0); dm.tblPila.FieldByName('colPokracujVTisku').AsBoolean:= dm.tblPila.FieldByName('colPovoleno').AsBoolean; lSQL:= 'SELECT pp.ID, mvaz.ID AS IDMVaz, kzvp.SkupZbo, kzvp.RegCis, kzvp.Nazev1, kzmvaz.ID AS IDKmenMat, kzmvaz.SkupZbo AS SkupZboMat, kzmvaz.RegCis AS RegCisMat, kzmvaz.Nazev1 AS Nazev1Mat, mvaz.pozice'; lSQL:= lSQL + ', ISNULL(zak.Nazev,N'''') AS CisloNadoby, kzf.Nazev1, kzf.Vykres, pp.operace, ISNULL(mvaz.mnozstvi,0)*1000 AS MnozMat, ISNULL(mvaz.mnoz_Nevydane,0)*1000 AS MnozMatCelkem'; lSQL:= lSQL + ', ISNULL(mvazv.mnoz_Nevydane, (mvaz.mnoz_Nevydane/mvaz.mnozstvi)) AS MnozVys, vp.RadaPrikaz, ISNULL(kzmvazE._Rozmer, N'''') AS Rozmer'; lSQL:= lSQL + ', ISNULL(pp.Plan_zadani, vp.Plan_zadani) AS Datum, vp.RadaPrikaz, ISNULL(kzmvazE._JakostMaterialu, N'''') AS JakostMat'; lSQL:= lSQL + ', ISNULL(kzmvazE._S1_X, N'''') AS SilaMat, ISNULL(kzmvazE._Dm1_X, 0) AS Prumer, ISNULL(kzmvazE._DN1, N'''') AS DN'; lSQL:= lSQL + ' FROM ' + tblPrPost + ' pp INNER JOIN ' + tblPrikaz + ' vp ON (vp.ID=pp.IDPrikaz) INNER JOIN ' + tblKZ + ' kzvp ON (kzvp.ID=vp.IdTabKmen)'; lSQL:= lSQL + ' LEFT JOIN ' + tblPrikaz + ' vpv ON (vpv.ID=vp.IDPrikazVyssi) LEFT JOIN ' + tblPrikaz + ' vpf ON (vpf.ID=vp.IDPrikazRidici)'; lSQL:= lSQL + ' INNER JOIN ' + tblPrVaz + ' mvaz ON (mvaz.Splneno=0 AND mvaz.IDPrikaz=vp.ID AND mvaz.operace=pp.operace AND mvaz.IDOdchylkyDo IS NULL)'; lSQL:= lSQL + ' LEFT JOIN ' + tblZak + ' zak ON (zak.ID=vpf.IDZakazka) INNER JOIN ' + tblKZ + ' kzf ON (kzf.ID=vpf.IdTabKmen)'; lSQL:= lSQL + ' LEFT JOIN dbo.TabPrKVazby mvazv ON (mvazv.IDPrikaz=vpv.ID AND mvazv.IDOdchylkyDo IS NULL AND mvazv.nizsi=mvaz.vyssi)'; lSQL:= lSQL + ' LEFT JOIN ' + tblKZ + ' kzmvaz ON (kzmvaz.ID=mvaz.nizsi) LEFT JOIN ' + tblKZe + ' kzmvazE ON (kzmvazE.ID=kzmvaz.ID)'; lSQL:= lSQL + ' WHERE pp.ID=' + idPrP.ToString + ' AND ISNULL(vpf.StavPrikazu,30)=30 AND vp.StavPrikazu=30 AND pp.prednastaveno=1'; lSQL:= lSQL + ' AND pp.splneno=0 AND pp.IDOdchylkyDo IS NULL AND pp.pracoviste=' + idPrac.ToString; with Helios.OpenSQL(lSQL) do if (RecordCount>0) then begin First; dm.tblPila.FieldByName('colSZ').AsString:= VarToStr(FieldByNameValues('SkupZboMat')); dm.tblPila.FieldByName('colRegCis').AsString:= VarToStr(FieldByNameValues('RegCisMat')); dm.tblPila.FieldByName('colCisloZboziMat').AsString:= VarToStr(FieldByNameValues('SkupZboMat')).Trim + VarToStr(FieldByNameValues('RegCisMat')).Trim; dm.tblPila.FieldByName('colIDKmenMat').AsString:= VarToStr(FieldByNameValues('IDKmenMat')).Trim; dm.tblPila.FieldByName('colRozmer').AsString:= VarToStr(FieldByNameValues('Rozmer')).Trim; dm.tblPila.FieldByName('colNazev1').AsString:= VarToStr(FieldByNameValues('Nazev1Mat')); dm.tblPila.FieldByName('colKs').AsExtended:= VarToStr(FieldByNameValues('MnozVys')).ToExtended; dm.tblPila.FieldByName('colDelka').AsExtended:= VarToStr(FieldByNameValues('MnozMat')).ToExtended; dm.tblPila.FieldByName('colDelkaCelkem').AsExtended:= dm.tblPila.FieldByName('colKs').AsExtended * VarToStr(FieldByNameValues('MnozMat')).ToExtended; dm.tblPila.FieldByName('colNadoba').AsString:= VarToStr(FieldByNameValues('CisloNadoby')).Trim; dm.tblPila.FieldByName('colVykresFin').AsString:= VarToStr(FieldByNameValues('Vykres')).Trim; // dm.tblPila.FieldByName('colPozice').AsString:= VarToStr(FieldByNameValues('pozice')).Trim; dm.tblPila.FieldByName('colJakostMat').AsString:= VarToStr(FieldByNameValues('JakostMat')).Trim; dm.tblPila.FieldByName('colSilaMat').AsString:= VarToStr(FieldByNameValues('SilaMat')).Trim; dm.tblPila.FieldByName('colDatum').AsDateTime:= FieldByNameValues('Datum'); dm.tblPila.FieldByName('colVybran').AsBoolean:= false; dm.tblPila.FieldByName('colSmazat').AsBoolean:= false; dm.tblPila.FieldByName('colRadaPrikaz').AsString:= VarToStr(FieldByNameValues('RadaPrikaz')).Replace(' ', '').Trim; dm.tblPila.FieldByName('colSZPrikaz').AsString:= VarToStr(FieldByNameValues('SkupZbo')).Trim; // SZ dilce vyrobniho prikazu dm.tblPila.FieldByName('colRegCisPrikaz').AsString:= VarToStr(FieldByNameValues('RegCis')).Trim; // RegCis dilce vyrobniho prikazu dm.tblPila.FieldByName('colPrumer').AsString:= VarToStr(FieldByNameValues('Prumer')).Trim; dm.tblPila.FieldByName('colDN').AsString:= VarToStr(FieldByNameValues('DN')).Trim; dm.tblPila.Post; end else dm.tblPila.Cancel; Next; end; Helios.ExecSQL('SELECT 5 AS DebugStep'); Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 5'''); jsemZUlozenych:= true; edtFiltrPila.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT CisloZbozi FROM ' + tblKZ + ' WHERE ID=' + datModul.idMatDavkaKmen.ToString); iTemp:= 0; if (datModul.idKmenMaterialPila>0) then begin iTemp:= datModul.idKmenMaterialPila; datModul.idMatDavkaKmen:= iTemp; end; { firstNacitani:= true; edtFiltrPilaExit (self); firstNacitani:= false; } if (iTemp>0) then datModul.idKmenMaterialPila:= iTemp; edtFiltrPila.Text:= ''; jsemZUlozenych:= false; end; Next; end; end; frontaPila.ItemCount:= dm.tblPila.RecordCount; btnDelPila.Enabled:= (dm.tblPila.RecordCount>0); btnDelPilaOne.Enabled:= btnDelPila.Enabled; frontaPila.Invalidate; Helios.ExecSQL('SELECT 6 AS DebugStep'); Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 6'''); lSQL:= 'SELECT ID, ISNULL(OsCislo,0) AS OsCislo, ISNULL(Sarze, N'''') AS Sarze FROM ' + tblRezPredpis; lSQL:= lSQL + ' WHERE Splneno=0 AND JePlan=1 AND LoginName=SUSER_SNAME()'; // DeviceID=N' + datModul.devID.QuotedString; with Helios.OpenSQL(lSQL) do if (RecordCount>0) then begin Helios.ExecSQL('SELECT 7 AS DebugStep'); Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 7'''); First; while not(EOF) do begin idH:= VarToStr(FieldByNameValues('ID')).ToInteger; sarze:= VarToStr(FieldByNameValues('Sarze')); datModul.idHlavPlan:= idH; if (cbZamest.ItemIndex=-1) then begin cisZam:= VarToStr(FieldByNameValues('OsCislo')).ToInteger; idZam:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblCZam + ' WHERE Cislo=' + cisZam.ToString); z:= TZamestnanec.Create(0, cisZam, Helios); for i:=0 to cbZamest.Items.Count-1 do begin zx:= (cbZamest.Items.Objects[i] as TZamestnanec); if (zx.Cislo=z.Cislo) then cbZamest.ItemIndex:= i; end; FreeAndNil(z); FreeAndNil(zx); end; Helios.ExecSQL('SELECT 8 AS DebugStep'); Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 8'''); lSQL:= 'SELECT ID, IDPrikaz, Doklad, Operace, DokladOper, AltOper, IDPrKVazby, IDKmenMaterial, MnozstviKs, Mnozstvi, MnozstviReal, MnozstviRealKs, Tisk FROM '; lSQL:= lSQL + tblRezPredpisR + ' WHERE IDMzdy IS NULL AND IDHlavicka=' + idH.ToString + ' ORDER BY Pozice, ID'; with Helios.OpenSQL(lSQL) do if (RecordCount>0) then begin Helios.ExecSQL('SELECT 9 AS DebugStep'); Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 9'''); First; while not(EOF) do begin idPol:= VarToStr(FieldByNameValues('ID')).ToInteger; idVPr:= VarToStr(FieldByNameValues('IDPrikaz')).ToInteger; prpD:= VarToStr(FieldByNameValues('DokladOper')).ToInteger; prpA:= VarToStr(FieldByNameValues('AltOper')); idPrVaz:= VarToStr(FieldByNameValues('IDPrKVazby')).ToInteger; lSQL:= 'SELECT ID FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString + ' AND Doklad=' + prpD.ToString + ' AND Alt=N' + prpA.QuotedString; idPrP:= helUtils.getHeliosIntVal(Helios, 0, lSQL); idPrac:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT pracoviste FROM ' + tblPrPost + ' WHERE ID=' + idPrP.ToString); idKZMat:= VarToStr(FieldByNameValues('IDKmenMaterial')).ToInteger; poz:= dm.MaxPoziceTab (dm.tblPlan) + 10; if (datModul.idKmenMaterialPlan=0) then datModul.idKmenMaterialPlan:= idKZMat; NactiMnozstviSkladu (true, idKZMat, ''); dm.tblPlan.Append; dm.tblPlan.FieldByName('colPozice').AsInteger:= poz; dm.tblPlan.FieldByName('colIDPrKVazby').AsInteger:= idPrVaz; dm.tblPlan.FieldByName('colIDPrPostup').AsInteger:= idPrP; dm.tblPlan.FieldByName('colIDHlavicka').AsInteger:= idH; dm.tblPlan.FieldByName('colIDPolozka').AsInteger:= idPol; dm.tblPlan.FieldByName('colKs').AsExtended:= VarToStr(FieldByNameValues('MnozstviKs')).ToExtended; dm.tblPlan.FieldByName('colOperace').AsString:= VarToStr(FieldByNameValues('Operace')); Helios.ExecSQL('SELECT 10 AS DebugStep'); Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 10'''); lSQL:= 'SELECT pp.ID, mvaz.ID AS IDMVaz, kzvp.SkupZbo, kzvp.RegCis, kzvp.Nazev1, kzmvaz.SkupZbo AS SkupZboMat, kzmvaz.RegCis AS RegCisMat, kzmvaz.Nazev1 AS Nazev1Mat, mvaz.pozice'; lSQL:= lSQL + ', ISNULL(zak.Nazev,N'''') AS CisloNadoby, kzf.Nazev1, kzf.Vykres, pp.operace, ISNULL(mvaz.mnozstvi,0)*1000 AS MnozMat, ISNULL(mvaz.mnoz_Nevydane,0)*1000 AS MnozMatCelkem'; lSQL:= lSQL + ', ISNULL(mvazv.mnoz_Nevydane, (mvaz.mnoz_Nevydane/mvaz.mnozstvi)) AS MnozVys, vp.RadaPrikaz, ISNULL(kzmvazE._Rozmer, N'''') AS Rozmer'; lSQL:= lSQL + ', ISNULL(pp.Plan_zadani, vp.Plan_zadani) AS Datum, vp.RadaPrikaz, ISNULL(kzmvazE._JakostMaterialu, N'''') AS JakostMat'; lSQL:= lSQL + ', ISNULL(kzmvazE._S1_X, N'''') AS SilaMat'; lSQL:= lSQL + ' FROM ' + tblPrPost + ' pp INNER JOIN ' + tblPrikaz + ' vp ON (vp.ID=pp.IDPrikaz) INNER JOIN ' + tblKZ + ' kzvp ON (kzvp.ID=vp.IdTabKmen)'; lSQL:= lSQL + ' LEFT JOIN ' + tblPrikaz + ' vpv ON (vpv.ID=vp.IDPrikazVyssi) LEFT JOIN ' + tblPrikaz + ' vpf ON (vpf.ID=vp.IDPrikazRidici)'; lSQL:= lSQL + ' INNER JOIN ' + tblPrVaz + ' mvaz ON (mvaz.Splneno=0 AND mvaz.IDPrikaz=vp.ID AND mvaz.operace=pp.operace AND mvaz.IDOdchylkyDo IS NULL)'; lSQL:= lSQL + ' LEFT JOIN ' + tblZak + ' zak ON (zak.ID=vpf.IDZakazka) INNER JOIN ' + tblKZ + ' kzf ON (kzf.ID=vpf.IdTabKmen)'; lSQL:= lSQL + ' LEFT JOIN dbo.TabPrKVazby mvazv ON (mvazv.IDPrikaz=vpv.ID AND mvazv.IDOdchylkyDo IS NULL AND mvazv.nizsi=mvaz.vyssi)'; lSQL:= lSQL + ' LEFT JOIN ' + tblKZ + ' kzmvaz ON (kzmvaz.ID=mvaz.nizsi) LEFT JOIN ' + tblKZe + ' kzmvazE ON (kzmvazE.ID=kzmvaz.ID)'; lSQL:= lSQL + ' WHERE pp.ID=' + idPrP.ToString + ' AND vp.StavPrikazu=30 AND pp.prednastaveno=1 AND pp.splneno=0 AND pp.IDOdchylkyDo IS NULL AND pp.pracoviste=' + idPrac.ToString; with Helios.OpenSQL(lSQL) do if (RecordCount>0) then begin First; Helios.ExecSQL('SELECT 11 AS DebugStep'); Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 11'''); dm.tblPlan.FieldByName('colSZ').AsString:= VarToStr(FieldByNameValues('SkupZboMat')); dm.tblPlan.FieldByName('colRegCis').AsString:= VarToStr(FieldByNameValues('RegCisMat')); dm.tblPlan.FieldByName('colNazev1').AsString:= VarToStr(FieldByNameValues('Nazev1Mat')); dm.tblPlan.FieldByName('colPovoleno').AsBoolean:= true; dm.tblPlan.FieldByName('colCisloZboziMat').AsString:= VarToStr(FieldByNameValues('SkupZboMat')).Trim + VarToStr(FieldByNameValues('RegCisMat')).Trim; dm.tblPlan.FieldByName('colRozmer').AsString:= VarToStr(FieldByNameValues('Rozmer')).Trim; dm.tblPlan.FieldByName('colDelka').AsExtended:= VarToStr(FieldByNameValues('MnozMat')).ToExtended; dm.tblPlan.FieldByName('colNadoba').AsString:= VarToStr(FieldByNameValues('CisloNadoby')).Trim; dm.tblPlan.FieldByName('colVykresFin').AsString:= VarToStr(FieldByNameValues('Vykres')).Trim; // dm.tblPlan.FieldByName('colPozice').AsString:= VarToStr(FieldByNameValues('pozice')).Trim; dm.tblPlan.FieldByName('colJakostMat').AsString:= VarToStr(FieldByNameValues('JakostMat')).Trim; dm.tblPlan.FieldByName('colSilaMat').AsString:= VarToStr(FieldByNameValues('SilaMat')).Trim; dm.tblPlan.FieldByName('colDatum').AsDateTime:= FieldByNameValues('Datum'); dm.tblPlan.FieldByName('colVybran').AsBoolean:= false; dm.tblPlan.FieldByName('colSmazat').AsBoolean:= false; dm.tblPlan.FieldByName('colRadaPrikaz').AsString:= VarToStr(FieldByNameValues('RadaPrikaz')).Replace(' ', '').Trim; end; dm.tblPlan.Post; Next; end; Helios.ExecSQL('SELECT 12 AS DebugStep'); Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 12'''); edtFiltrPlan.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT CisloZbozi FROM ' + tblKZ + ' WHERE ID=' + idKZMat.ToString); iTemp:= datModul.idKmenMaterialPlan; edtFiltrPlanExit (self); datModul.idKmenMaterialPlan:= iTemp; edtFiltrPlan.Text:= ''; end; Next; end; frontaPlan.ItemCount:= dm.tblPlan.RecordCount; btnDelPila.Enabled:= (dm.tblPlan.RecordCount>0); frontaPlan.Invalidate; Helios.ExecSQL('SELECT 13 AS DebugStep'); Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 13'''); end; canAktPilu:= true; ZapisInfoMaterialPila; ZapisInfoMaterialPlan; end; procedure TformMain.NactiFrontu; var lSQL, oldFiltr: string; idPP: integer; begin Exit; // nove dm.NactiFrontu // hvw_RezaciPredpisFronta lSQL:= '/* NactiFrontu*/ SELECT pp.ID, mvaz.ID AS IDMVaz, kzvp.SkupZbo, kzvp.RegCis, kzvp.Nazev1, kzmvaz.SkupZbo AS SkupZboMat, kzmvaz.RegCis AS RegCisMat, kzmvaz.Nazev1 AS Nazev1Mat, mvaz.pozice'; lSQL:= lSQL + ', zak.Nazev AS CisloNadoby, kzf.Nazev1 AS Nazev1Fin, kzf.Vykres, pp.operace, mvaz.mnozstvi*1000 AS MnozMat, mvaz.mnoz_Nevydane*1000 AS MnozMatCelkem'; lSQL:= lSQL + ', ISNULL(mvazv.mnoz_Nevydane, (mvaz.mnoz_Nevydane/mvaz.mnozstvi)) AS MnozVys, vp.RadaPrikaz, ISNULL(kzmvazE._Rozmer, N'''') AS Rozmer'; lSQL:= lSQL + ', ISNULL(pp.Plan_zadani, vp.Plan_zadani) AS Datum, vpf.RadaPrikaz AS RadaPrikazFin, ISNULL(kzmvazE._JakostMaterialu, N'''') AS JakostMat'; lSQL:= lSQL + ', ISNULL(kzmvazE._S1_X, N'''') AS SilaMat, ISNULL(kzmvazE._Dm1_X, N'''') AS DN '; lSQL:= lSQL + ' FROM ' + tblPrPost + ' pp INNER JOIN ' + tblPrikaz + ' vp ON (vp.ID=pp.IDPrikaz) INNER JOIN ' + tblKZ + ' kzvp ON (kzvp.ID=vp.IdTabKmen)'; lSQL:= lSQL + ' LEFT JOIN ' + tblPrikaz + ' vpv ON (vpv.ID=vp.IDPrikazVyssi) LEFT JOIN ' + tblPrikaz + ' vpf ON (vpf.ID=vp.IDPrikazRidici)'; lSQL:= lSQL + ' INNER JOIN ' + tblPrVaz + ' mvaz ON (mvaz.Splneno=0 AND mvaz.IDPrikaz=vp.ID AND mvaz.operace=pp.operace AND mvaz.IDOdchylkyDo IS NULL)'; lSQL:= lSQL + ' LEFT JOIN ' + tblZak + ' zak ON (zak.ID=vpf.IDZakazka) LEFT JOIN ' + tblKZ + ' kzf ON (kzf.ID=vpf.IdTabKmen)'; lSQL:= lSQL + ' LEFT JOIN dbo.TabPrKVazby mvazv ON (mvazv.IDPrikaz=vpv.ID AND mvazv.IDOdchylkyDo IS NULL AND mvazv.nizsi=mvaz.vyssi)'; lSQL:= lSQL + ' LEFT JOIN ' + tblKZ + ' kzmvaz ON (kzmvaz.ID=mvaz.nizsi) LEFT JOIN ' + tblKZe + ' kzmvazE ON (kzmvazE.ID=kzmvaz.ID)'; lSQL:= lSQL + ' WHERE vp.StavPrikazu=30 AND pp.prednastaveno=1 AND pp.splneno=0 AND pp.IDOdchylkyDo IS NULL AND pp.pracoviste=' + idPrac.ToString; if (dm.tblPila.RecordCount>0) then lSQL:= lSQL + ' AND mvaz.ID NOT IN (' + dm.VratIdPrKVazebNaPile (false) + ')'; if (dm.tblPlan.RecordCount>0) then lSQL:= lSQL + ' AND mvaz.ID NOT IN (' + dm.VratIdPrKVazebNaPile (true) + ')'; lSQL:= lSQL + ' ORDER BY ISNULL(pp.Plan_zadani, vp.Plan_zadani)'; try with Helios.OpenSQL(lSQL) do begin if (RecordCount>0) then begin if not(dm.tblFronta.Active) then dm.tblFronta.Open; dm.tblFronta.Filtered:= false; dm.tblFronta.Clear; // .EmptyDataSet; while not(EOF) do begin dm.tblFronta.Append; idPP:= VarToStr(FieldByNameValues('ID')).ToInteger; dm.tblFronta.FieldByName('colIDPrPostup').AsInteger:= idPP; dm.tblFronta.FieldByName('colIDPrKVazby').AsInteger:= VarToStr(FieldByNameValues('IDMVaz')).ToInteger; dm.tblFronta.FieldByName('colOperace').AsString:= VarToStr(FieldByNameValues('operace')).Trim; dm.tblFronta.FieldByName('colRegCis').AsString:= VarToStr(FieldByNameValues('RegCisMat')).Trim; dm.tblFronta.FieldByName('colSZ').AsString:= VarToStr(FieldByNameValues('SkupZboMat')).Trim; dm.tblFronta.FieldByName('colCisloZboziMat').AsString:= VarToStr(FieldByNameValues('SkupZboMat')).Trim + VarToStr(FieldByNameValues('RegCisMat')).Trim; dm.tblFronta.FieldByName('colRozmer').AsString:= VarToStr(FieldByNameValues('Rozmer')).Trim; dm.tblFronta.FieldByName('colNazev1').AsString:= VarToStr(FieldByNameValues('Nazev1Mat')).Trim; dm.tblFronta.FieldByName('colKs').AsExtended:= VarToStr(FieldByNameValues('MnozVys')).ToExtended; dm.tblFronta.FieldByName('colDelka').AsExtended:= VarToStr(FieldByNameValues('MnozMat')).ToExtended; dm.tblFronta.FieldByName('colDelkaCelkem').AsExtended:= dm.tblFronta.FieldByName('colKs').AsExtended * VarToStr(FieldByNameValues('MnozMat')).ToExtended; dm.tblFronta.FieldByName('colNadoba').AsString:= VarToStr(FieldByNameValues('CisloNadoby')).Trim; dm.tblFronta.FieldByName('colVykresFin').AsString:= VarToStr(FieldByNameValues('Vykres')).Trim; dm.tblFronta.FieldByName('colPozice').AsString:= VarToStr(FieldByNameValues('pozice')).Trim; dm.tblFronta.FieldByName('colJakostMat').AsString:= VarToStr(FieldByNameValues('JakostMat')).Trim; dm.tblFronta.FieldByName('colSilaMat').AsString:= VarToStr(FieldByNameValues('SilaMat')).Trim; dm.tblFronta.FieldByName('colDN').AsString:= VarToStr(FieldByNameValues('DN')).Trim; dm.tblFronta.FieldByName('colDatum').AsDateTime:= FieldByNameValues('Datum'); dm.tblFronta.FieldByName('colVybran').AsBoolean:= false; dm.tblFronta.FieldByName('colSmazat').AsBoolean:= false; dm.tblFronta.FieldByName('colRadaPrikaz').AsString:= VarToStr(FieldByNameValues('RadaPrikaz')).Replace(' ', '').Trim; dm.tblFronta.Post; Next; end; end else Helios.Error(#1'Žádný hutní materiál, požadovaný na zadaných výrobních příkazech,'#1 + CRLF + #1'na sobě nemá navázanou operaci.'#1) end; finally end; edtFiltrMaterialExit (self); ctrlFronta.ItemCount:= dm.tblFronta.RecordCount; lblRecCount.Caption:= 'Počet: ' + dm.tblFronta.RecordCount.ToString; end; procedure TformMain.NactiPracovnikyPily; var lSQL, p, j: string; begin cbZamest.Clear; lSQL:= '/* NactiPracovnikyPily */ SELECT z.ID, z.Cislo, z.Jmeno, z.Prijmeni FROM ' + tblCisZam + ' z INNER JOIN ' + tblCisZamE + ' ze ON (ze.ID=z.ID) WHERE ze._VyrobaPilar=1 ORDER BY z.PrijmeniJmeno'; try with Helios.OpenSQL(lSQL) do begin First; while not(EOF) do begin idZam:= VarToStr(FieldByNameValues('ID')).ToInteger; cisZam:= VarToStr(FieldByNameValues('Cislo')).ToInteger; p:= FieldByNameValues('Prijmeni'); j:= FieldByNameValues('Jmeno'); cbZamest.Items.AddObject(p + ' ' + j, TZamestnanec.Create (idZam, cisZam, Helios)); Next; end; idZam:= 0; cisZam:= 0; end; finally end; end; procedure TformMain.ctrlMDItemClick (Sender: TObject); // Na pilu var f: TformPolozkyMD; i, newPoz, idMD, polId: integer; lSQL, s: string; begin if not(showMDDetail) then Exit; showMDDetail:= false; if not(dm.tblMatDavky.Active) then dm.tblMatDavky.Open; i:= ctrlMD.HotItemIndex; dm.tblMatDavky.RecNo:= i + 1; idMD:= dm.tblMatDavky.FieldByName('colID').AsInteger; f:= TformPolozkyMD.Create(nil); try f.Helios:= Helios; f.mForm:= self; f.idMatDavky:= idMD; f.dm:= dm; f.ShowModal; if (f.mrVal=1) then // na pilu begin if (cbZamest.ItemIndex<0) then begin Helios.Error(#1'Není vybrán zaměstnanec !'#1); if (cbZamest.CanFocus) then cbZamest.SetFocus; Exit; end; datModul.idMatDavka:= idMD; // datModul.idKmenMaterialPila:= dm.tblMatDavky.FieldByName('colIDKmenMat').AsInteger; datModul.idKmenMaterialPila:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDKmenZboziMat FROM ' + tblMatDavkyH + ' WHERE ID=' + idMd.ToString); datModul.idMatDavkaKmen:= datModul.idKmenMaterialPila; ZapisInfoMaterialPila; shPila.Caption:= 'DÁVKA ' + helUtils.getHeliosStrVal(Helios, '', 'SELECT Cislo FROM ' + tblMatDavkyH + ' WHERE ID=' + idMD.ToString); Helios.ExecSQL('UPDATE ' + tblRezPredpisPily + ' SET CisloDavky=N' + shPila.Caption.Replace('DÁVKA ', '').QuotedString + ' WHERE LoginName=SUSER_SNAME() AND Aktivni=1'); digitTimer.Enabled:= true; btnTiskStitku.Enabled:= false; Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 6'''); if (datModul.idHlavPila=0) then // delam cely novy seznam Pila ? begin s:= helUtils.GetClientComputerName(1); lSQL:= 'INSERT ' + tblRezPredpis + ' (IDPlanMD, BlokovaniEditoru, IDPila, JePlan, DeviceID, OsCislo, CompName, IDKmenZboMaterial, LoginName) SELECT ' + idMD.ToString; lSQL:= lSQL + ', ' + Helios.UserId.ToString + ', ' + IfThen(datModul.idPila=0, 'NULL', datModul.idPila.ToString) + ', 0, N' + datModul.devID.QuotedString + ', ' + cisZam.ToString; lSQL:= lSQL + ', N' + s.QuotedString + ', ' + datModul.idKmenMaterialPila.ToString + ', SUSER_SNAME()' + CRLF + 'SELECT SCOPE_IDENTITY()'; datModul.idHlavPila:= helUtils.getHeliosIntVal(Helios, 0, lSQL); try dm.tblPila.Close; dm.tblPila.Assign (dm.tblPolozkyMD); dm.tblPila.Open; dm.tblPila.IndexFieldNames:= ''; dm.tblPila.Refresh; dm.tblPila.IndexFieldNames:= 'colPoziceInt ASC'; dm.tblPila.Refresh; // frontaPila.ItemIndex:= 0; Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 7'''); Helios.ExecSQL('UPDATE ' + tblMatDavkyH + ' SET NaPile=1 WHERE ID=' + idMD.ToString); except on E:Exception do Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 7-1 ERROR'''); end; end else begin // ne, jen potrebuju pridat z materialove davky jen chybejici polozky dm.tblPolozkyMD.First; while not(dm.tblPolozkyMD.Eof) do begin if not(dm.tblPila.Locate('colIDPrPostup', VarArrayOf([dm.tblPolozkyMD.FieldByName('colIDPrPostup').AsInteger]), [loCaseInsensitive])) then begin dm.tblPila.Append; for i:=0 to dm.tblPolozkyMD.FieldCount-1 do dm.tblPila.FieldByName(dm.tblPolozkyMD.Fields[i].FieldName).Value:= dm.tblPolozkyMD.Fields[i].Value; dm.tblPila.Post; end; dm.tblPolozkyMD.Next; end; end; dm.tblPila.IndexFieldNames:= ''; dm.tblPila.First; dm.tblPila.DisableControls; while not(dm.tblPila.Eof) do begin newPoz:= dm.MaxPoziceTab (dm.tblPila) + 10; dm.tblPila.Edit; dm.tblPila.FieldByName('colIDHlavicka').AsInteger:= datModul.idHlavPila; dm.tblPila.FieldByName('colPozice').AsInteger:= newPoz; dm.tblPila.FieldByName('colPoziceInt').AsInteger:= newPoz; polId:= 0; lSQL:= 'UPDATE ' + tblMatDavkyR + ' SET NaPile=1 WHERE ID=' + dm.tblPila.FieldByName('colIDPlanR').AsString + CRLF; lSQL:= lSQL + 'INSERT ' + tblRezPredpisR + ' (IDPlanMD, IDPlanMDPol, IDHlavicka, Pozice, IDPrKVazby, MnozstviKs, Mnozstvi, IDKmenMaterial)'; lSQL:= lSQL + ' SELECT ' + idMD.ToString + ', ' + dm.tblPila.FieldByName('colIDPlanR').AsString + ', ' + datModul.idHlavPila.ToString + ', ' + newPoz.ToString; lSQL:= lSQL + ', ' + dm.tblPila.FieldByName('colIDPrKVazby').AsString + ', ' + dm.tblPila.FieldByName('colKs').AsExtended.ToString.Replace(',', '.'); lSQL:= lSQL + ', ' + (dm.tblPila.FieldByName('colDelka').AsExtended/1000).ToString.Replace(',', '.') + ', ' + datModul.idKmenMaterialPila.ToString + CRLF; lSQL:= lSQL + 'SELECT SCOPE_IDENTITY() AS newid'; with Helios.OpenSQL(lSQL) do polId:= VarToStr(FieldByNameValues('newid')).ToInteger; dm.tblPila.FieldByName('colIDPolozka').AsInteger:= polId; dm.tblPila.FieldByName('colTisk').AsBoolean:= false; dm.tblPila.FieldByName('colPovoleno').AsBoolean:= true; dm.tblPila.Post; dm.tblPila.Next; end; dm.tblPila.EnableControls; dm.tblPila.IndexFieldNames:= 'colPozice'; btnSmazFiltryMDClick (Sender); btnPilaUp.Enabled:= (dm.tblPila.RecordCount>0); btnPilaDown.Enabled:= btnPilaUp.Enabled; Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 8'''); frontaPila.ItemCount:= dm.tblPila.RecordCount; dm.tblPolozkyMD.Clear; idMD:= 0; end; finally f.Free; end; btnDelPila.Enabled:= (dm.tblPila.RecordCount>0); Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 9'''); dm.NactiMaterialoveDavky (self, idMD); ctrlMD.ItemCount:= dm.tblMatDavky.RecordCount; ctrlMD.Invalidate; if (pgCtrlMD.ActivePage=shMatDavky) then pgCtrlMDChange (Sender); Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 10'''); if (edtFiltrPila.CanFocus) then edtFiltrPila.SetFocus; end; procedure TformMain.ctrlMDMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if (GetTickCount-tick1<1500) then begin showMDDetail:= false; Exit; end; showMDDetail:= true; tick1:= GetTickCount; ctrlMDItemClick (Sender); end; procedure TformMain.timerNactiFrontuTimer (Sender: TObject); begin if (dm.PocetOznacenychVeFronte=0) and (dm.tblPila.RecordCount=0) and (dm.tblPlan.RecordCount=0) then dm.NactiFrontu (idPrac, self); end; procedure TformMain.timer3Timer (Sender: TObject); begin timer3.Enabled:= false; end; procedure TformMain.cbFrontaAllClick (Sender: TObject); begin if (cbFrontaAll.Checked) then dm.FrontaOznacitVse else dm.FrontaOdznacitVse; ctrlFronta.Invalidate; lblRecSelected.Caption:= 'Výběr: ' + dm.PocetOznacenychVeFronte.ToString + ' / celkem ' + ((dm.SoucetDelekOznacenychVeFronte)/1000).ToString + ' m'; end; procedure TformMain.cbPrevodClick (Sender: TObject); var i: integer; begin { i:= ctrlFronta.HotItemIndex; dm.tblFronta.RecNo:= i + 1; dm.tblFronta.Edit; dm.tblFronta.FieldByName('colVybran').AsBoolean:= cbPrevod.Checked; dm.tblFronta.Post; ctrlFronta.Invalidate; } end; procedure TformMain.cbZamestChange (Sender: TObject); var z: TZamestnanec; begin if (cbZamest.ItemIndex>-1) then begin z:= TZamestnanec (cbZamest.Items.Objects[cbZamest.ItemIndex]); cisZam:= z.Cislo; idZam:= z.Id; end; end; procedure TformMain.ctrlMDBeforeDrawItem (AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState); var lSQL, sz, rc: string; begin dm.tblMatDavky.RecNo:= AIndex + 1; // AIndex zero-based lblMDCislo.Caption:= VarToStr(dm.tblMatDavky.FieldByName('colCislo').Value).Trim; lblMDDatum.Caption:= FormatDateTime ('d.m.yyyy', dm.tblMatDavky.FieldByName('colPlanVyroby').Value).Trim; sz:= VarToStr(dm.tblMatDavky.FieldByName('colSZMat').Value).Trim; rc:= VarToStr(dm.tblMatDavky.FieldByName('colRCMat').Value).Trim; lblMDCisloZbo.Caption:= sz + ' ' + rc; lblMDNazev.Caption:= VarToStr(dm.tblMatDavky.FieldByName('colNazev1Mat').Value).Trim; // lblMDRozmer.Caption:= VarToStr(dm.tblMatDavky.FieldByName('colRozmer').Value).Trim; lblMDPozic.Caption:= VarToStr(dm.tblMatDavky.FieldByName('colPocetRadku').Value).Trim; lSQL:= '/* ctrlMDBeforeDrawItem */SELECT TOP(1) ISNULL(kze._DN1,N'''') AS DN, ISNULL(kze._JakostMaterialu,N'''') AS JakostMat, ISNULL(kze._Rozmer, N'''') AS Rozmer, ISNULL(kze._Dm1_X, 0) AS Prumer'; lSQL:= lSQL + ', ISNULL(kze._S1_X, N'''') AS SilaMat, ISNULL(kze._NormaMat,N'''') AS NormaMAT FROM ' + tblKZ; lSQL:= lSQL + ' k INNER JOIN ' + tblKZe + ' kze ON (kze.ID=k.ID) WHERE k.SkupZbo=N' + sz.QuotedString + ' AND k.RegCis=N' + rc.QuotedString; try try with Helios.OpenSQL(lSQL) do if (RecordCount=1) then begin // lblMDDM.Caption:= VarToStr(FieldByNameValues('DN')); lblMDDM.Caption:= dm.tblMatDavky.FieldByName('colPrumerDM').AsString; if (lblMDDM.Caption='0') then lblMDDM.Caption:= ''; lblMDPrumer.Caption:= VarToStr(FieldByNameValues('Prumer')); if (lblMDPrumer.Caption='0') then lblMDPrumer.Caption:= ''; lblMDTloustka.Caption:= VarToStr(FieldByNameValues('SilaMat')); if (lblMDTloustka.Caption='0') then lblMDTloustka.Caption:= ''; lblMDJakost.Caption:= VarToStr(FieldByNameValues('JakostMat')); lblMDRozmer.Caption:= VarToStr(FieldByNameValues('Rozmer')); lblMDNormaMat.Caption:= VarToStr(FieldByNameValues('NormaMAT')); end; except end; finally end; end; procedure TformMain.ctrlMDBeforeDrawItems (ACanvas: TCanvas; ARect: TRect); begin // ctrlMD.ItemCount:= dm.tblMatDavky.RecordCount; end; procedure TformMain.ctrlFrontaBeforeDrawItem (AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState); var lSQL, sz, rc: string; uhel: Extended; begin { // pokud je povoleno, neni videt vyber polozky v seznamu // Nastavení barvy pera pro rámeček ACanvas.Pen.Color:= clBlack; ACanvas.Pen.Width:= 1; // Šířka rámečku // Nakreslení rámečku kolem položky ACanvas.Rectangle(ARect); } dm.tblFronta.RecNo:= AIndex + 1; // AIndex zero-based lblMaterial.Caption:= VarToStr(dm.tblFronta.FieldByName('colNazev1').Value).Trim; // lblPozice.Caption:= VarToStr(dm.tblFronta.FieldByName('colPozice').Value).Trim; lblRegCis.Caption:= VarToStr(dm.tblFronta.FieldByName('colRegCis').Value) + ' ' + VarToStr(dm.tblFronta.FieldByName('colRozmer').Value).Trim + '/' + VarToStr(dm.tblFronta.FieldByName('colSilaMat').Value) + ' ' + VarToStr(dm.tblFronta.FieldByName('colJakostMat').Value); lblDeleni.Caption:= VarToStr(dm.tblFronta.FieldByName('colKs').Value) + ' x ' + VarToStr(dm.tblFronta.FieldByName('colDelka').Value) + ' mm '; lblNadoba.Caption:= VarToStr(dm.tblFronta.FieldByName('colNadoba').Value); lblRegCisPrikaz.Caption:= '' + VarToStr(dm.tblFronta.FieldByName('colRegCisPrikaz').Value).Trim; lblRadaPrikaz.Caption:= VarToStr(dm.tblFronta.FieldByName('colRadaPrikaz').Value).Trim; lblPrumer.Caption:= VarToStr(dm.tblFronta.FieldByName('colPrumer').Value).Trim; lblTloustka.Caption:= VarToStr(dm.tblFronta.FieldByName('colSilaMat').Value).Trim; lblRezatUhel.Caption:= ''; sz:= VarToStr(dm.tblFronta.FieldByName('colSZPrikaz').Value).Trim; rc:= VarToStr(dm.tblFronta.FieldByName('colRegCisPrikaz').Value).Trim; if (sz<>'') and (rc<>'') then begin lSQL:= 'SELECT TOP(1) Uhel FROM dbo.hvw_ADE_INSERT_VYROBA WHERE SkupZbo=N' + sz.QuotedString + ' AND RegCis=N' + rc.QuotedString + ' AND LastRec=1 AND StavPolozky=N''50'''; uhel:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); if (uhel>1) then lblRezatUhel.Caption:= 'úhel ' + uhel.ToString; end; cbPrevod.Checked:= dm.tblFronta.FieldByName('colVybran').AsBoolean; end; procedure TformMain.lblRegCisClick (Sender: TObject); begin lblMaterialClick (Sender); end; procedure TformMain.lblMaterialClick (Sender: TObject); var i: integer; begin if (canSelFronta) then begin // cbPrevod.Checked:= not(cbPrevod.Checked); cbPrevodClick(Sender); cbPrevod.Checked:= not(cbPrevod.Checked); cbPrevod.Invalidate; i:= ctrlFronta.HotItemIndex; dm.tblFronta.RecNo:= i + 1; dm.tblFronta.Edit; dm.tblFronta.FieldByName('colVybran').AsBoolean:= cbPrevod.Checked; // dm.tblFronta.FieldByName('colSmazat').AsBoolean:= dm.tblFronta.FieldByName('colVybran').AsBoolean; dm.tblFronta.Post; ctrlFronta.Invalidate; lblRecSelected.Caption:= 'Výběr: ' + dm.PocetOznacenychVeFronte.ToString + ' / celkem ' + ((dm.SoucetDelekOznacenychVeFronte)/1000).ToString + ' m'; btnAddPila.Enabled:= (dm.PocetOznacenychVeFronte>0); btnObrazek.Enabled:= (dm.PocetOznacenychVeFronte=1); btnFiltrMat.Enabled:= (dm.PocetOznacenychVeFronte=1); ctrlFronta.ItemIndex:= -1; end; end; procedure TformMain.ctrlFrontaItemClick (Sender: TObject); var i, rFronta: integer; m1, m2, m3: string; begin i:= ctrlFronta.HotItemIndex; dm.tblFronta.RecNo:= i + 1; canSelFronta:= false; rFronta:= dm.tblFronta.RecordCount; if (pgCtrl.ActivePage=shPila) then begin m1:= dm.VybranyMaterialFronta; m2:= dm.MaterialNaPile (false); // na pile m3:= dm.tblFronta.FieldByName('colSZ').AsString + dm.tblFronta.FieldByName('colRegCis').AsString; if (m1='') and (m2='') then canSelFronta:= true; if not(canSelFronta) and (m1='') and (m2=m3) then canSelFronta:= true; if not(canSelFronta) and (m1=m3) and (m2='') then canSelFronta:= true; if not(canSelFronta) and (m1=m3) and (m2=m3) then canSelFronta:= true; if not(canSelFronta) then Helios.Error(#1'Můžete vybírat jen stejný typ materiálu jaký je vybrán ve frontě nebo v DÁVCE.'#1); end; if (pgCtrl.ActivePage=shPlan) then begin m1:= dm.VybranyMaterialFronta; m2:= dm.MaterialNaPile (true); // v planu m3:= dm.tblFronta.FieldByName('colSZ').AsString + dm.tblFronta.FieldByName('colRegCis').AsString; if (m1='') and (m2='') then canSelFronta:= true; if not(canSelFronta) and (m1='') and (m2=m3) then canSelFronta:= true; if not(canSelFronta) and (m1=m3) and (m2='') then canSelFronta:= true; if not(canSelFronta) and (m1=m3) and (m2=m3) then canSelFronta:= true; if not(canSelFronta) then Helios.Error(#1'Můžete vybírat jen stejný typ materiálu jaký je vybrán ve frontě nebo v PLÁNU.'#1); end; { cbPrevodClick(Sender); cbPrevod.Checked:= not(cbPrevod.Checked); cbPrevod.Invalidate; i:= ctrlFronta.HotItemIndex; dm.tblFronta.RecNo:= i + 1; dm.tblFronta.Edit; dm.tblFronta.FieldByName('colVybran').AsBoolean:= cbPrevod.Checked; dm.tblFronta.Post; ctrlFronta.Invalidate; lblRecSelected.Caption:= 'Výběr: ' + dm.PocetOznacenychVeFronte.ToString + ' / celkem ' + ((dm.SoucetDelekOznacenychVeFronte)/1000).ToString + ' m'; } end; procedure TformMain.ctrlFrontaMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin // if (Button=mbLeft) then // ctrlFrontaItemClick(Sender); end; procedure TformMain.TTiskThreadDestroy (Sender: TObject); begin if Assigned(FTiskThread) then FTiskThread:= nil; end; procedure TformMain.TiskniZAPIAddTask (idRezPredpisR, idPrKV: Integer); var em: integer; begin FTiskThread:= TThread.CreateAnonymousThread ( procedure begin // while not TThread.CheckTerminated do // begin TThread.Queue (nil, procedure begin try em:= EvidencePrace (idRezPredpisR); if (em>0) then begin dm.tblPila.Edit; dm.tblPila.FieldByName('colIDMzdy').AsInteger:= em; dm.tblPila.FieldByName('colPovoleno').AsBoolean:= false; dm.tblPila.Post; if (Helios.PrintForm3 (bidPrKVaz, datModul.idTiskFormStitek, 'TabPrKVazby.ID=' + idPrKV.ToString)) then begin dm.tblPila.Edit; dm.tblPila.FieldByName('colTisk').AsBoolean:= true; dm.tblPila.Post; Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET Tisk=1, DatTisku=GETDATE() WHERE ID=' + idRezPredpisR.ToString); Helios.ExecSQL('UPDATE ' + tblRezPredpisPily + ' SET PosledniTisk=GETDATE() WHERE Aktivni=1 AND LoginName=SUSER_SNAME()'); end; btnPilaDownClick (nil); end; apiTiskTasks.Remove(idRezPredpisR); // TerminateThread(TThread.Current.ThreadID, 0); finally end; end); // if TThread.CheckTerminated then // Exit; // end; end ); // FTiskThread.FreeOnTerminate:= true; FTiskThread.NameThreadForDebugging (AnsiString('HDCDZAPITiskThread'), FTiskThread.ThreadID); FTiskThread.OnTerminate:= TTiskThreadDestroy; FTiskThread.Start; end; procedure TformMain.AktualizujFrontuPila; var lSQL: string; i, i2, idPrKV, em: integer; spl, jeAPI: boolean; bmk: TBookmark; begin if not(canAktPilu) then Exit; if (dm.tblPila.RecordCount>0) then // 010030INT00003061021550 begin i:= dm.tblPila.RecNo; bmk:= dm.tblPila.GetBookmark; dm.tblPila.DisableControls; dm.tblPila.First; while not(dm.tblPila.Eof) do begin i2:= dm.tblPila.FieldByName('colIDPolozka').AsInteger; idPrKV:= dm.tblPila.FieldByName('colIDPrKVazby').AsInteger; { jeAPI:= helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM ' + tblRezPredpisR + ' WHERE TiskAPI=1 AND DatTisku IS NULL AND ID=' + i2.ToString); if (jeAPI) then begin if (apiTiskTasks.IndexOf(i2)<0) then begin apiTiskTasks.Add(i2); TiskniZAPIAddTask (i2, idPrKV); end; end; } { if (dm.tblPila.FieldByName('colIDPlanR').AsInteger>0) then begin lSQL:= 'SELECT 1 FROM ' + tblRezPredpisR + ' WHERE TiskAPI=1 AND DatTisku IS NOT NULL AND ID=' + i2.ToString; spl:= helUtils.sqlExistsTestGeneral(Helios, lSQL); if (spl) then begin dm.tblPila.Edit; dm.tblPila.FieldByName('colPovoleno').AsBoolean:= false; dm.tblPila.Post; Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET Tisk=1, DatTisku=GETDATE() WHERE ID=' + i2.ToString); end; spl:= helUtils.getHeliosBoolVal(Helios, false, 'SELECT Splneno FROM ' + tblMatDavkyR + ' WHERE ID=' + dm.tblPila.FieldByName('colIDPlanR').AsString); if (spl) then begin dm.tblPila.Edit; dm.tblPila.FieldByName('colPovoleno').AsBoolean:= false; dm.tblPila.Post; end; end; } dm.tblPila.Next; end; dm.tblPila.RecNo:= i; if (dm.tblPila.BookmarkValid(bmk)) then dm.tblPila.GotoBookmark(bmk); dm.tblPila.FreeBookmark(bmk); dm.tblPila.EnableControls; end; end; procedure TformMain.digitTimerTimer (Sender: TObject); var v: Integer; h, m: integer; begin Inc(timerPila); h:= (timerPila div 100); m:= (timerPila mod 100); lblTimerPila.Caption:= FormatFloat('00', h) + ':' + FormatFloat('00', m); // kazde 2s aktualizuj udaje ve fronte Pila, osetri stav kdy je polozka "uzavrena" akci pres CERVENE TLACITKO if (lblTimerPila.Caption.EndsWith('1') or lblTimerPila.Caption.EndsWith('4') or lblTimerPila.Caption.EndsWith('8') or lblTimerPila.Caption.EndsWith('9')) then AktualizujFrontuPila; panelPila.Invalidate; end; procedure TformMain.dtFiltrMDDatumChange (Sender: TObject); begin // dtFiltrMDDatum.Format:= ''; if (dtFiltrMDDatum.Date=0) then dtFiltrMDDatum.Format:= ' ' else dtFiltrMDDatum.Format:= ''; edtFiltrMDCisloExit (Sender); end; procedure TformMain.dtFiltrMDDatumDateTimeChange(Sender: TObject; DateTime: TDateTime); begin if (DateTime=0) then dtFiltrMDDatum.Format:= ' ' else dtFiltrMDDatum.Format:= ''; edtFiltrMDCisloExit (Sender); end; procedure TformMain.VymazUdajePilaNeboPlan (plan: Boolean=false); begin if (dm=nil) then Exit; try if (plan) then begin if (dm.tblPlan<>nil) then if (dm.tblPlan.RecordCount=0) then begin datModul.planSZ:= ''; datModul.planRC:= ''; datModul.planSarze:= ''; lblPlanRegCis.Caption:= ''; lblPlanNazev1.Caption:= ''; lblPlanSkladem.Caption:= ''; lblPlanSarze.Caption:= ''; lblPlanSarzeSkladem.Caption:= ''; // lblPlanDelkaSum.Caption:= ''; end end else begin if (dm.tblPila<>nil) then if (dm.tblPila.RecordCount=0) then begin shPila.Caption:= 'DÁVKA'; datModul.idKmenMaterialPila:= 0; datModul.idMatDavka:= 0; datModul.pilaSZ:= ''; datModul.pilaRC:= ''; datModul.pilaSarze:= ''; lblJsemAlter.Visible:= false; lblPila1RegCis.Caption:= ''; lblPila1Nazev1.Caption:= ''; lblPila1Skladem.Caption:= ''; lblPila1Sarze.Caption:= ''; lblPila1SarzeSkladem.Caption:= ''; // lblPilaDelkaSum.Caption:= ''; end end; finally end; end; procedure TformMain.edtFiltrPilaChange (Sender: TObject); begin if (edtFiltrPila.Text='') then begin lblPila1RegCis.Caption:= ''; lblPila1Nazev1.Caption:= ''; lblPila1Sarze.Caption:= ''; lblPila1Skladem.Caption:= ''; lblPila1SarzeSkladem.Caption:= ''; btnZmenaSarze.Visible:= false; lblRecCount.Caption:= 'Počet: 0'; lblRecSelected.Caption:= 'Výběr: 0 / celkem 0 m'; if (pgCtrlMD.ActivePage=shMatDavky) then lblRecCount.Caption:= 'Počet dávek: ' + dm.tblMatDavky.RecordCount.ToString else lblRecCount.Caption:= 'Počet: ' + dm.tblFronta.RecordCount.ToString; btnAddPila.Enabled:= not(pgCtrlMD.ActivePage=shMatDavky); btnAddPila.Enabled:= btnAddPila.Enabled and (dm.tblFronta.RecordCount>0); end; end; procedure TformMain.edtFiltrPilaEnter (Sender: TObject); begin LoadKeyboardLayout('00000409', KLF_ACTIVATE or KLF_SETFORPROCESS); edtFiltrPila.Text:= ''; VymazUdajePilaNeboPlan (false); end; procedure TformMain.edtFiltrPilaExit (Sender: TObject); var lSQL, kod, sarze, sz, rc, matPila, errMsg: string; d: byte; canCont, jeMatPila: boolean; i, i2, idKZ, idx, idMatOld: integer; ks: Extended; alter: boolean; begin edtFiltrPila.Text:= edtFiltrPila.Text.Trim; datModul.pilaSZ:= ''; datModul.pilaRC:= ''; datModul.pilaSarze:= ''; // btnZmenaSarze.Visible:= false; if (edtFiltrPila.Text<>'') then begin btnKonecDavky.Enabled:= false; // btnZmenaSarze.Visible:= true; // btnZmenaSarze.Enabled:= true; idMatOld:= datModul.idKmenMaterialPila; kod:= edtFiltrPila.Text; d:= Length(kod); sz:= ''; rc:= ''; sarze:= ''; if (d=13) then // 010030INT00003021022032 / 010030INT00003061021550 begin sz:= LeftStr(kod, 3); rc:= MidStr(kod, 4, 30); end; if (d=13) then begin sz:= LeftStr(kod, 3); rc:= MidStr(kod, 4, 10); end else if (d>13) and (LeftStr(kod,3)='010') then begin kod:= MidStr(kod, 4, 100); sz:= LeftStr(kod, 3); // 030 rc:= MidStr(kod, 4, 10); // INT0000232 sarze:= MidStr(kod, 16, 50); // 1202106 end; lSQL:= 'SELECT 1 FROM ' + tblSZ + ' s LEFT JOIN ' + tblSZe + ' se ON (se.ID=s.ID) WHERE se._MaterialProPilu=1'; jeMatPila:= helUtils.sqlExistsTestGeneral(Helios, lSQL); if (jeMatPila) then begin idKZ:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblKZ + ' WHERE SkupZbo=N' + sz.QuotedString + ' AND RegCis=N' + rc.QuotedString); if (idKZ=0) then begin Helios.Error(#1'Tento materiál nemá kartu !'#1 + CRLF + 'Naskenovaný kód: ' + kod); materialOK:= false; materialPilaOk:= false; datModul.idKmenMaterialPila:= 0; edtFiltrPila.Text:= ''; btnTiskStitku.Enabled:= false; btnTiskBezEvidence.Enabled:= false; if (edtFiltrPila.CanFocus) then edtFiltrPila.SetFocus; Exit; end; materialOK:= dm.NaskenovanyMaterialJeOK (idKZ, firstNacitani); materialPilaOk:= materialOK; btnTiskStitku.Enabled:= materialPilaOk; btnTiskBezEvidence.Enabled:= materialPilaOk; if not(materialPilaOk) then begin Helios.Error(#1'Naskenovaný materiál není původní požadovaný ani jeho alternativa'#1 + CRLF + 'Naskenovaný kód: ' + kod); Exit; end; datModul.pilaSZ:= sz; datModul.pilaRC:= rc; datModul.pilaSarze:= sarze; btnZmenaSarze.Visible:= true; datModul.idKmenMaterialPila:= idKZ; pilaReqSN:= helUtils.getHeliosBoolVal(Helios, false, 'SELECT CONVERT(bit, CASE WHEN KontrolaVyrC=N''N'' THEN 0 ELSE 1 END) FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString); { lSQL:= 'UPDATE ' + tblRezPredpis + ' SET IDKmenZboMaterial=' + idKZ.ToString + ', Sarze=N' + IfThen(sarze='', 'ULL', sarze.QuotedString); lSQL:= lSQL + ' WHERE ID=' + datModul.idHlavPila.ToString; Helios.ExecSQL(lSQL); } if not(firstNacitani) then begin digitTimer.Enabled:= true; timerPila:= 0; end; ZapisInfoMaterialPila; lblPila1Sarze.Caption:= sarze; NactiMnozstviSkladu (true, idKZ, sarze); if (sarze='') and (pilaReqSN) then begin if not(jsemZUlozenych) then begin Helios.Error(#1'Pozor, odpis naskenovaného materiálu vyžaduje ŠARŽI'#1); materialOK:= false; end; end; // pokud je vyzadovana Sarze, zvyrazni font cisla materialu if (pilaReqSN) then lblPila1RegCis.Font.Color:= clRed else lblPila1RegCis.Font.Color:= clWindowText; lblPila1Sarze.Font.Color:= lblPila1RegCis.Font.Color; if (dm.tblPila.RecordCount>0) then begin // materialOK:= true; if (datModul.idKmenMaterialPila=0) then datModul.idKmenMaterialPila:= dm.tblPila.FieldByName('colIDKmenMat').AsInteger; matPila:= dm.MaterialNaPile (false); if not(materialOK) then begin btnTiskStitku.Enabled:= false; btnTiskBezEvidence.Enabled:= false; lblJsemAlter.Visible:= false; errMsg:= 'Máte vybrané položky z jiného materiálu než byl naskenovaný !!'; Helios.Error(#1 + errMsg + #1); { if (Helios.YesNo(#1'Naskenovaný materiál neodpovídá vybraným položkám'#1 + CRLF + 'Chcete provést záměnu materiálu ?', false)) then begin end else materialOK:= false; } end else begin lblJsemAlter.Visible:= (datModul.idMatDavkaKmen<>idKZ); datModul.idKmenMaterialPila:= idKZ; if (materialOK) and (sarze='') and (pilaReqSN) then begin errMsg:= 'POZOR, ' + IfThen(jsemZUlozenych, 'uložená', 'naskenovaná') + ' KARTA vyžaduje ŠARŽI.'; if not(firstNacitani) then errMsg:= ''; materialOK:= false; end else begin if (kmenStavOK=false) or ((sarzeStavOK=false) and (sarze<>'')) then begin if not(kmenStavOK) then errMsg:= 'POZOR, ' + IfThen(jsemZUlozenych, 'uložená', 'naskenovaná') + ' KARTA ' + IfThen(jsemZUlozenych, 'z nezpracovaných položek pily' , '') + ' není evidována na skladě'; if (lblPila1Sarze.Caption<>'') and not(sarzeStavOK) then errMsg:= 'POZOR, ' + IfThen(jsemZUlozenych, 'uložená', 'naskenovaná') + ' ŠARŽE ' + IfThen(jsemZUlozenych, 'z nezpracovaných položek pily' , '') + 'není evidována na skladě !'; materialOK:= false; end; // if (errMsg<>'') then // Helios.Error(#1 + errMsg + #1); end; end; if (errMsg='') then begin btnAddPila.Enabled:= false; btnFiltrPilaDel.Enabled:= false; btnKonecDavky.Enabled:= true; { try for idx:=0 to frontaPila.ItemCount-1 do begin frontaPila.ItemIndex:= idx; dm.tblPila.RecNo:= idx + 1; // index control listu je zero based i:= dm.tblPila.FieldByName('colIDPrKVazby').AsInteger; i2:= dm.tblPila.FieldByName('colIDPolozka').AsInteger; ks:= dm.tblPila.FieldByName('colKs').AsExtended; Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET Sarze=N' + lblPila1Sarze.Caption.QuotedString + ' WHERE ID=' + i2.ToString); if (Helios.PrintForm3 (bidPrKVaz, 78, 'TabPrKVazby.ID=' + i.ToString)) then begin Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET Tisk=1, DatTisku=GETDATE() WHERE ID=' + i2.ToString); dm.tblPila.Edit; dm.tblPila.FieldByName('colTisk').AsBoolean:= true; dm.tblPila.Post; end; end; except on E:Exception do Helios.Error(#1'CHYBA'#1 + E.Message); end; } // po vytisteni vsech stitku se puvodne smazala fronta pily (davka) if (dm.KolikZbyvaKTisku=0) then begin Helios.ExecSQL('UPDATE ' + tblRezPredpis + ' SET DatSplneno=GETDATE(), JeNovaVetaEditor=0 WHERE ID=' + datModul.idHlavPila.ToString); datModul.idHlavPila:= 0; dm.tblPila.Clear; // .EmptyDataSet; frontaPila.ItemCount:= 0; frontaPila.Invalidate; digitTimer.Enabled:= false; VymazUdajePilaNeboPlan (false); btnPilaUp.Enabled:= (dm.tblPila.RecordCount>0); btnPilaDown.Enabled:= btnPilaUp.Enabled; edtFiltrPila.Text:= ''; end; end else begin if (errMsg.Contains('není evid')) then begin errMsg:= errMsg + CRLF + 'karta ' + sz + ' ' + rc + ' / šarže ' + sarze; edtFiltrPila.Text:= ''; Helios.Error(#1 + errMsg + #1); VymazUdajePilaNeboPlan (false); if (edtFiltrPila.CanFocus) then edtFiltrPila.SetFocus; end; end; { dm.tblPila.DisableControls; dm.tblPila.Filtered:= false; dm.tblPila.Filter:= 'colRegCis<>' + (sz+rc).ToUpper.QuotedString; dm.tblPila.Filtered:= true; i:= dm.tblPila.RecordCount; dm.tblPila.Filtered:= false; dm.tblPila.EnableControls; pila1OK:= (i=0); if (i>0) then Helios.ExecSQL('Některé pozice zadané na PILU neodpovídají naskenovanému materiálu'); } end; end else begin datModul.pilaSZ:= sz; datModul.pilaRC:= rc; datModul.pilaSarze:= sarze; end; end; btnDelPila.Enabled:= (dm.tblPila.RecordCount>0); btnDelPilaOne.Enabled:= btnDelPila.Enabled; end; procedure TformMain.edtFiltrPlanEnter (Sender: TObject); begin edtFiltrPlan.Text:= ''; VymazUdajePilaNeboPlan (true); end; procedure TformMain.edtFiltrPlanExit (Sender: TObject); var lSQL, kod, sarze, sz, rc, matPila: string; d: byte; canCont: boolean; m1, m2: Extended; begin sz:= ''; rc:= ''; sarze:= ''; edtFiltrPlan.Text:= edtFiltrPlan.Text.Trim; if (edtFiltrPlan.Text<>'') then begin kod:= edtFiltrPlan.Text; d:= Length(kod); if (d=13) then begin sz:= LeftStr(kod, 3); rc:= MidStr(kod, 4, 10); end else if (d>13) and (LeftStr(kod,3)='010') then // 010030INT0000232101202106 begin kod:= MidStr(kod, 4, 100); sz:= LeftStr(kod, 3); // 030 rc:= MidStr(kod, 4, 10); // INT0000232 sarze:= MidStr(kod, 16, 50); // 1202106 end; if (sz='030') or (sz='130') then begin m1:= 0; m2:= 0; datModul.planSZ:= sz; datModul.planRC:= rc; datModul.planSarze:= sarze; lSQL:= 'SELECT k.Nazev1 + N'' '' + ISNULL(ke._Rozmer, N'''') + N'' / '' + ISNULL(ke._S1_X, N'''') + N'' '' + ISNULL(ke._JakostMaterialu, N'''') FROM ' + tblKZ; lSQL:= lSQL + ' k LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) WHERE k.SkupZbo=N' + sz.QuotedString + ' AND k.RegCis=N' + rc.QuotedString; lblPlanNazev1.Caption:= helUtils.getHeliosStrVal(Helios, '', lSQL); // lblPila1Nazev1.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev1 FROM ' + tblKZ + ' WHERE SkupZbo=N' + sz.QuotedString + ' AND RegCis=N' + rc.QuotedString); lblPlanRegCis.Caption:= rc; lSQL:= 'SELECT s.Mnozstvi FROM ' + tblSS + ' s INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) WHERE k.SkupZbo=N' + sz.QuotedString + ' AND k.RegCis=N' + rc.QuotedString; lSQL:= lSQL + ' AND s.IDSklad=N' + skladMat.QuotedString; m1:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); lblPlanSkladem.Caption:= m1.ToString; lblPlanSarze.Caption:= sarze; if (sarze<>'') then begin lSQL:= 'SELECT vcs.Mnozstvi FROM ' + tblVyrCS + ' vcs INNER JOIN ' + tblSS + ' s ON (s.ID=vcs.IDStavSkladu) INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) WHERE k.SkupZbo=N'; lSQL:= lSQL + sz.QuotedString + ' AND k.RegCis=N' + rc.QuotedString + ' AND s.IDSklad=N' + skladMat.QuotedString + ' AND vcs.Nazev1=N' + sarze.QuotedString; m2:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); lblPlanSarzeSkladem.Caption:= m2.ToString; end; if (dm.tblPlan.RecordCount>0) then begin matPila:= dm.MaterialNaPile (true); if (matPila<>sz+rc) then Helios.Error(#1'Naskenovaný materiál neodpovídá vybraným položkám'#1) else begin end; { dm.tblPlan.DisableControls; dm.tblPlan.Filtered:= false; dm.tblPlan.Filter:= 'colRegCis<>' + (sz+rc).ToUpper.QuotedString; dm.tblPlan.Filtered:= true; i:= dm.tblPlan.RecordCount; dm.tblPlan.Filtered:= false; dm.tblPlan.EnableControls; pila1OK:= (i=0); if (i>0) then Helios.ExecSQL('Některé pozice zadané na PLÁN neodpovídají naskenovanému materiálu'); } end; end; end; end; procedure TformMain.edtFiltrProfilEnter (Sender: TObject); var f: TformKeyb; begin edtFiltrProfil.Text:= ''; { if (helUtils.IsAdmin) and (1=0) then ShowTabTip else begin if not(helUtils.IsPhysicalKeyboardConnected) then begin f:= TformKeyb.Create(nil); try f.ShowModal; edtFiltrProfil.Text:= f.text.ToUpper; if (frontaPanel.CanFocus) then frontaPanel.SetFocus; finally f.Free; end; end; end; } end; procedure TformMain.edtFiltrProfilExit (Sender: TObject); begin edtFiltrProfil.Text:= edtFiltrProfil.Text.ToUpper; lblFiltrProfil.Visible:= (edtFiltrProfil.Text<>''); if (frontaPanel.CanFocus) then frontaPanel.SetFocus; CloseTabTip; edtFiltrMaterialExit (Sender); end; procedure TformMain.edtFiltrProfilKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key=VK_RETURN) then edtFiltrProfilExit (Sender); end; procedure TformMain.edtFiltrPrumerEnter (Sender: TObject); var f: TformCalc; begin edtFiltrPrumer.Text:= ''; { f:= TformCalc.Create(nil); try f.mrVal:= 0; f.retVal:= ''; f.edtNum.Text:= ''; f.pnlAkce:= 6; f.Hide; f.ShowModal; if (f.mrVal<10) then begin if (f.retVal<>'') then edtFiltrPrumer.Text:= f.retVal; if (f.retVal='') or (f.retVal='0') then edtFiltrPrumer.Text:= ''; end; edtFiltrMaterialExit (Sender); finally f.Free; end; if (frontaPlan.CanFocus) then frontaPlan.SetFocus; } end; procedure TformMain.edtFiltrPrumerExit (Sender: TObject); begin edtFiltrPrumer.Text:= edtFiltrPrumer.Text.Trim; lblFiltrPrumer.Visible:= (edtFiltrPrumer.Text<>''); if (frontaPanel.CanFocus) then frontaPanel.SetFocus; CloseTabTip; edtFiltrMaterialExit (Sender); end; procedure TformMain.edtFiltrPrumerKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key=VK_RETURN) or (Key=VK_ESCAPE) then edtFiltrPrumerExit (Sender); end; procedure TformMain.edtFiltrTloustkaEnter (Sender: TObject); // var f: TformCalc; begin edtFiltrTloustka.Text:= ''; { f:= TformCalc.Create(nil); try f.mrVal:= 0; f.retVal:= ''; f.edtNum.Text:= ''; f.pnlAkce:= 7; f.Hide; f.ShowModal; if (f.mrVal<10) then begin if (f.retVal<>'') then edtFiltrTloustka.Text:= f.retVal; if (f.retVal='') or (f.retVal='0') then edtFiltrTloustka.Text:= ''; end; edtFiltrMaterialExit (Sender); finally f.Free; end; if (frontaPlan.CanFocus) then frontaPlan.SetFocus; } end; procedure TformMain.edtFiltrTloustkaExit (Sender: TObject); begin edtFiltrTloustka.Text:= edtFiltrTloustka.Text.Trim; lblFiltrTloustka.Visible:= (edtFiltrTloustka.Text<>''); if (frontaPanel.CanFocus) then frontaPanel.SetFocus; // if not(helUtils.IsPhysicalKeyboardConnected) then CloseTabTip; edtFiltrMaterialExit (Sender); end; procedure TformMain.edtFiltrTloustkaKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key=VK_RETURN) or (Key=VK_ESCAPE) then edtFiltrTloustkaExit (Sender); end; procedure TformMain.btnTiskBezEvidenceClick (Sender: TObject); var lSQL, oper, altPrP, sTemp, tiskarnaPila: string; i, ii, i2, i3, idKZx, dokl, idKmenTisk, idMD, idVPr, doklPrP: integer; ks, delka: Extended; defPrintName: string; hPrinter: THandle; JobInfo: array[0..255] of TJobInfo1; vPO: TPrinterOptions; JobsReturned, ix: DWORD; DocInfo: TDocInfo1; begin if (datModul.idTiskForm>0) then begin if (datModul.tiskarnaNazev='') then // ZDesigner ZD421 PILA begin lSQL:= 'SELECT TOP(1) TiskFronta FROM ' + tblTiskDef + ' WHERE FormDefID=' + datModul.idTiskForm.ToString; lSQL:= lSQL + ' AND (LoginName IS NULL OR LoginName=SUSER_SNAME()) ORDER BY ISNULL(LoginName, N'''') DESC'; datModul.tiskarnaNazev:= helUtils.getHeliosStrVal(Helios, '', lSQL); end; if not(helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM ' + tblTiskDef + ' WHERE TiskDoSouboru=1 AND FormDefID=' + datModul.idTiskForm.ToString)) then if (helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 AS A FROM ' + tblTiskDef + ' WHERE FormDefID=' + datModul.idTiskForm.ToString + ' AND Implicitni=0')) and (datModul.tiskarnaNazev<>'') then if not(dm.IsPrinterActiveFrmId(datModul.tiskarnaNazev, datModul.idTiskForm)) then begin Helios.Error('Tiskárna nenalezena nebo "' + datModul.tiskarnaNazev + '" není aktivní'); // Exit; end; end; // zkusi zrusit probihajici tiskove joby defPrintName:= Printer.Printers[Printer.PrinterIndex]; if (datModul.tiskarnaNazev<>'') then defPrintName:= datModul.tiskarnaNazev; if (defPrintName<>'') then begin vPO.dwFlags:= PRINTER_OPTION_NO_CACHE; vPO.cbSize:= SizeOf(vPO); if OpenPrinter2(PChar(defPrintName), @hPrinter, nil, @vPO) then try // Získání seznamu úloh EnumJobs(hPrinter, 0, 255, 1, @JobInfo, SizeOf(JobInfo), JobsReturned, ix); if (JobsReturned>0) then for ix:=0 to JobsReturned - 1 do begin // Zrušení jednotlivých úloh SetJob(hPrinter, JobInfo[ix].JobId, 0, nil, JOB_CONTROL_CANCEL); end; finally ClosePrinter(hPrinter); end; end; idMD:= dm.tblPila.FieldByName('colIDPlanH').AsInteger; dm.tblPila.RecNo:= frontaPila.ItemIndex + 1; // index TControlListu je zero based // dotaz na pocet stitku pri ks>1 i:= dm.tblPila.FieldByName('colIDPrKVazby').AsInteger; idVPr:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDPrikaz FROM ' + tblPrKVaz + ' WHERE IDOdchylkyDo IS NULL AND ID=' + i.ToString); dokl:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT Doklad FROM ' + tblPrKVaz + ' WHERE IDOdchylkyDo IS NULL AND ID=' + i.ToString); ii:= dm.tblPila.FieldByName('colIDPrKVazbyAlter').AsInteger; if (ii>0) then begin idKZx:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT nizsi FROM ' + tblPrKVaz + ' WHERE ID=' + ii.ToString); if (idKZx<>datModul.idKmenMaterialPila) then ii:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblPrKVaz + ' WHERE nizsi=' + datModul.idKmenMaterialPila.ToString + ' AND IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString); end; idKZx:= 0; ii:= 0; if (i>0) then idKZx:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT nizsi FROM ' + tblPrKVaz + ' WHERE ID=' + i.ToString + ' AND IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString); if (idKZx>0) then if (idKZx<>datModul.idKmenMaterialPila) then ii:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblPrKVaz + ' WHERE nizsi=' + datModul.idKmenMaterialPila.ToString + ' AND IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString); if (ii>0) and (i<>ii) then begin i:= ii; dm.tblPila.Edit; dm.tblPila.FieldByName('colIDPrKVazby').AsInteger:= i; dm.tblPila.Post; end; oper:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Operace FROM ' + tblPrKVaz + ' WHERE ID=' + i.ToString); if (oper='') then begin lSQL:= 'SELECT COUNT(ID) FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString + ' AND pracoviste=' + datModul.idPracovistePila.ToString; if (helUtils.getHeliosIntVal(Helios, 0, lSQL)=1) then oper:= helUtils.getHeliosStrVal(Helios, '', lSQL.Replace('COUNT(ID)', 'operace')); if (oper<>'') then Helios.ExecSQL('UPDATE ' + tblPrKVaz + ' SET Operace=N' + oper.QuotedString + ' WHERE ID=' + i.ToString + ' AND ISNULL(Operace,N'''')<>N' + oper.QuotedString); end; delka:= dm.tblPila.FieldByName('colDelka').AsExtended; ks:= dm.tblPila.FieldByName('colKs').AsExtended; idKmenTisk:= datModul.idMatDavkaKmen; if (datModul.idMatDavkaKmen<>datModul.idKmenMaterialPila) then begin lSQL:= 'SELECT ID FROM ' + tblPrKVaz + ' WHERE IDOdchylkyDo IS NULL AND nizsi=' + datModul.idKmenMaterialPila.ToString + ' AND IDPrikaz=' + idVPr.ToString; i3:= helUtils.getHeliosIntVal (Helios, 0, lSQL); if (i3=0) then begin lSQL:= 'DECLARE @i INT' + CRLF + 'EXEC @i=dbo.hp_NewPozadavek_TabPrKVazby @IDPrikaz=' + idVpr.ToString + ', @IDKmenZbozi=' + datModul.idKmenMaterialPila.ToString; lSQL:= lSQL + ', @Mnozstvi=' + (helUtils.RoundToEX(delka, -4)/1000).ToString.Replace(',', '.'); lSQL:= lSQL + ', @Mnoz_zad=' + (helUtils.RoundToEX(delka * ks, -4)/1000).ToString.Replace(',', '.') + ', @Operace=N' + oper.QuotedString; lSQL:= lSQL + ', @Alt_K_Dokladu=' + dokl.ToString + CRLF + 'SELECT @i'; i3:= helUtils.getHeliosIntVal(Helios, 0, lSQL); end; if (i3>0) then begin i:= i3; dm.tblPila.Edit; dm.tblPila.FieldByName('colIDPrKVazby').AsInteger:= i; dm.tblPila.Post; idKmenTisk:= datModul.idKmenMaterialPila; end; end; i2:= dm.tblPila.FieldByName('colIDPolozka').AsInteger; Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET IdPrKVazby=' + i.ToString + ' WHERE ID=' + i2.ToString); lSQL:= 'DROP TABLE IF EXISTS #TabPilaMatDavkaPolTisk' + CRLF; lSQL:= lSQL + 'CREATE TABLE #TabPilaMatDavkaPolTisk (ID INT IDENTITY(1,1) NOT NULL, IDPrKVazba INT, IDKmenZbozi INT, Sarze NVARCHAR(100), DelkaM NUMERIC(19,6) DEFAULT 0.0 )' + CRLF; lSQL:= lSQL + 'INSERT #TabPilaMatDavkaPolTisk (IDPrKVazba, IDKmenZbozi, Sarze, DelkaM)'; lSQL:= lSQL + ' SELECT ' + i.ToString + ', ' + idKmenTisk.ToString + ', N' + lblPila1Sarze.Caption.QuotedString + ', ' + (helUtils.RoundToEX(delka, -4)/1000).ToString.Replace(',', '.'); // Helios.ExecSQL(lSQL); { try if (DirectoryExists('C:\Temp')) then begin sTemp:= '<$PF_WhereSys>TabPrKVazby.ID=' + i.ToString + '<$PF_TiskDoSouboru>1'; sTemp:= sTemp + '<$PF_DoSouboruCesta>C:\Temp<$PF_IDTypDoSouboru>3'; Helios.PrintForm3 (bidPrKVaz, datModul.idTiskForm, sTemp); end; finally end; } // tisk Helios.ExecSQL ('UPDATE ' + tblPrKVaz + ' SET Prednastaveno=0 WHERE IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString); Helios.ExecSQL ('UPDATE ' + tblPrKVaz + ' SET Prednastaveno=1 WHERE IDOdchylkyDo IS NULL AND ID=' + i.ToString); if (helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM ' + tblPlgInfo + ' WHERE NazevSys=N''PluginRemotePrint''')) then begin try tiskarnaPila:= datModul.tiskarnaNazev; if (datModul.tiskarnaNazev='') then begin tiskarnaPila:= helUtils.getHeliosStrVal (Helios, '', 'SELECT TOP(1) Nazev FROM dbo.GTabRPSeznamTiskaren WHERE LOWER(Nazev) LIKE N''%pila%'' ORDER BY Nazev'); datModul.tiskarnaNazev:= tiskarnaPila; end; if (tiskarnaPila<>'') then begin lSQL:= 'DECLARE @u NVARCHAR(80)=SUSER_SNAME(); EXEC dbo.GEP_RP_NewPozadavekNaTisk @Uzivatel=@u, @Popis=N''Tisk štítku pila'', @BrowseID=11050, @TiskID=' + datModul.idTiskForm.ToString + ', @Filtr=N''TabPrKVazby.ID=' + i.ToString + ''', @Tiskarna=N' + tiskarnaPila.QuotedString + ', @PocetKopii=1'; { lSQL:= 'INSERT dbo.GTabRPSeznamPozadavku (Typ, Uzivatel, Popis, BrowseID, Filtr, Tiskarna)' +' SELECT 0, SUSER_SNAME(), N''Tisk štítku pila'', ' + datModul.idTiskForm.ToString + ', N''TabPrKVazby.ID=' + i.ToString + ''', N' } Helios.ExecSQL (lSQL); end; finally end; end; try if not(datModul.tiskJenPlgRP) then try if (Helios.PrintForm3 (bidPrKVaz, datModul.idTiskForm, 'TabPrKVazby.ID=' + i.ToString)) then begin lSQL:= 'INSERT ' + tblRezPredpisTisky + ' (MimoEvidenci, IDRezaciPredpisR, IDKmenMaterial, Sarze, CisloZboziMat, DeviceID, IDPila, IDPrikaz, IDPrKVazby, OperacePrP,IDPredpisdavkyPlan)'; lSQL:= lSQL + ' SELECT 1, ' + i2.ToString + ', ' + datModul.idKmenMaterialPila.ToString + ', N' + IfThen(lblPila1Sarze.Caption='', 'ULL', lblPila1Sarze.Caption.QuotedString); lSQL:= lSQL + ', N' + (datModul.pilaSZ + datModul.pilaRC).QuotedString + ', N' + datModul.devID.QuotedString + ', ' + datModul.idPila.ToString; lSQL:= lSQL + ', ' + idVPr.ToString + ', ' + i.ToString + ', N' + oper.QuotedString + ', ' + idMD.ToString; Helios.ExecSQL(lSQL); Helios.ExecSQL('UPDATE ' + tblRezPredpisPily + ' SET PosledniTisk=GETDATE(), PocetTiskuMimo=PocetTiskuMimo+1 WHERE Aktivni=1 AND LoginName=SUSER_SNAME()'); end; except on E:Exception do Helios.Error(#1'Chyba tisku: ' + #1 + E.Message); end; finally end; Helios.ExecSQL('DROP TABLE IF EXISTS #TabPilaMatDavkaPolTisk'); end; procedure TformMain.btnAddPilaClick (Sender: TObject); var i, newPoz, polId: integer; lSQL, errMsg, cZbo, s: string; begin if (cbZamest.ItemIndex<0) then begin Helios.Error(#1'Není vybrán zaměstnanec !'#1); if (cbZamest.CanFocus) then cbZamest.SetFocus; Exit; end; if (dm.PocetVybranychMaterialuFronty>1) then begin Helios.Error(#1'Musíte vybrat jen jeden druh materiálu (reg.číslo) !'#1); if (cbZamest.CanFocus) then cbZamest.SetFocus; Exit; end; btnDelPilaOne.Enabled:= true; i:= 0; cZbo:= ''; // lSQL:= 'DELETE X FROM (SELECT ID, ROW_NUMBER() OVER (PARTITION BY Pozice) AS Radek FROM ' + tblRezPredpisR + ') X WHERE WHERE JeNovaVetaEditor=0 AND ' dm.tblFronta.DisableControls; dm.tblFronta.First; while not(dm.tblFronta.Eof) do begin if (dm.tblFronta.FieldByName('colVybran').AsBoolean) then begin if not(dm.RadekFrontyUzNaPile(dm.tblFronta.RecNo, false)) and not(dm.RadekFrontyUzNaPile(dm.tblFronta.RecNo, true)) then begin // PILA if (pgCtrl.ActivePage=shPila) then begin digitTimer.Enabled:= true; btnTiskStitku.Enabled:= true; if (datModul.idHlavPila=0) then begin s:= helUtils.GetClientComputerName(1); lSQL:= 'INSERT ' + tblRezPredpis + ' (JePlan, DeviceID, OsCislo, JeNovaVetaEditor, CompName) SELECT 0, N' + datModul.devID.QuotedString; lSQL:= lSQL + ', ' + cisZam.ToString + ', 1, N' + s.QuotedString + '; SELECT SCOPE_IDENTITY()'; datModul.idHlavPila:= helUtils.getHeliosIntVal(Helios, 0, lSQL); end; newPoz:= dm.MaxPoziceTab (dm.tblPila) + 10; dm.tblPila.Append; if (dm.CopyRecord (dm.tblFronta, dm.tblPila, dm.tblFronta.RecNo)) then begin if (cZbo='') then cZbo:= dm.tblPila.FieldByName('colCisloZboziMat').AsString; if (cZbo<>'') and (datModul.idKmenMaterialPila=0) then datModul.idKmenMaterialPila:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblKZ + ' WHERE CisloZbozi=N' + cZbo.QuotedString); dm.tblPila.FieldByName('colIDKmenMat').AsInteger:= datModul.idKmenMaterialPila; dm.tblPila.FieldByName('colIDHlavicka').AsInteger:= datModul.idHlavPila; dm.tblPila.FieldByName('colPozice').AsInteger:= newPoz; dm.tblPila.FieldByName('colTisk').AsBoolean:= false; dm.tblPila.FieldByName('colPovoleno').AsBoolean:= true; try dm.tblFronta.Edit; dm.tblFronta.FieldByName('colSmazat').AsBoolean:= true; dm.tblFronta.Post; polId:= 0; lSQL:= 'INSERT ' + tblRezPredpisR + ' (IDHlavicka, Pozice, IDPrKVazby, MnozstviKs, Mnozstvi, IDKmenMaterial)'; lSQL:= lSQL + ' SELECT ' + datModul.idHlavPila.ToString + ', ' + newPoz.ToString + ', ' + dm.tblPila.FieldByName('colIDPrKVazby').AsString; lSQL:= lSQL + ', ' + dm.tblPila.FieldByName('colKs').AsExtended.ToString.Replace(',', '.'); lSQL:= lSQL + ', ' + (dm.tblPila.FieldByName('colDelka').AsExtended/1000).ToString.Replace(',', '.') + ', ' + datModul.idKmenMaterialPila.ToString + CRLF; lSQL:= lSQL + 'SELECT SCOPE_IDENTITY() AS newid'; with Helios.OpenSQL(lSQL) do polId:= VarToStr(FieldByNameValues('newid')).ToInteger; dm.tblPila.FieldByName('colIDPolozka').AsInteger:= polId; dm.tblPila.Post; except on E:Exception do begin errMsg:= E.Message; dm.tblPila.Cancel; end; end; end else dm.tblPila.Cancel; end // shPila else // PLAN begin // shPlan if (datModul.idHlavPlan=0) then begin s:= helUtils.GetClientComputerName(1); lSQL:= 'INSERT ' + tblRezPredpis + ' (JePlan, DeviceID, OsCislo, JeNovaVetaEditor, CompName) SELECT 1, N' + datModul.devID.QuotedString; lSQL:= lSQL + ', ' + cisZam.ToString + ', 1, N' + s.QuotedString + ' SELECT SCOPE_IDENTITY()'; datModul.idHlavPlan:= helUtils.getHeliosIntVal(Helios, 0, lSQL); Helios.ExecSQL('UPDATE ' + tblRezPredpis + ' SET IDPlan=' + datModul.idHlavPlan.ToString + ' WHERE ID=' + datModul.idHlavPila.ToString); end; if (datModul.idHlavPlan>0) then begin newPoz:= dm.MaxPoziceTab (dm.tblPlan) + 10; dm.tblPlan.Append; if (dm.CopyRecord (dm.tblFronta, dm.tblPlan, dm.tblFronta.RecNo)) then begin if (cZbo='') then cZbo:= dm.tblPlan.FieldByName('colCisloZboziMat').AsString; if (cZbo<>'') and (datModul.idKmenMaterialPlan=0) then datModul.idKmenMaterialPlan:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblKZ + ' WHERE CisloZbozi=N' + cZbo.QuotedString); dm.tblPlan.FieldByName('colIDKmenMat').AsInteger:= datModul.idKmenMaterialPlan; dm.tblPlan.FieldByName('colIDHlavicka').AsInteger:= datModul.idHlavPlan; dm.tblPlan.FieldByName('colPozice').AsInteger:= newPoz; try dm.tblFronta.Edit; dm.tblFronta.FieldByName('colSmazat').AsBoolean:= true; dm.tblFronta.Post; polId:= 0; lSQL:= 'INSERT ' + tblRezPredpisR + ' (IDHlavicka, Pozice, IDPrKVazby, MnozstviKs, Mnozstvi)'; lSQL:= lSQL + ' SELECT ' + datModul.idHlavPlan.ToString + ', ' + newPoz.ToString + ', ' + dm.tblPlan.FieldByName('colIDPrKVazby').AsString; lSQL:= lSQL + ', ' + dm.tblPlan.FieldByName('colKs').AsExtended.ToString.Replace(',', '.'); lSQL:= lSQL + ', ' + (dm.tblPlan.FieldByName('colDelka').AsExtended/1000).ToString.Replace(',', '.') + CRLF; lSQL:= lSQL + 'SELECT SCOPE_IDENTITY() AS newid'; with Helios.OpenSQL(lSQL) do polId:= VarToStr(FieldByNameValues('newid')).ToInteger; dm.tblPlan.FieldByName('colIDPolozka').AsInteger:= polId; dm.tblPlan.Post; except dm.tblPlan.Cancel; end; end else dm.tblPlan.Cancel; btnSrot.Enabled:= false; // (dm.tblPlan.RecordCount>0); btnPosliNaPilu.Enabled:= (dm.tblPlan.RecordCount>0); end; end; // shPlan end; end; dm.tblFronta.Next; end; { with Helios.OpenSQL('SELECT RegCis, Nazev1 FROM ' + tblKZ + ' WHERE CisloZbozi=N' + cZbo.QuotedString) do if (RecordCount=1) then begin if (pgCtrl.ActivePage=shPila) then begin if (edtFiltrPila.Text='') then begin lblPila1RegCis.Caption:= VarToStr(FieldByNameValues('RegCis')); lSQL:= 'SELECT k.Nazev1 + N'' '' + ISNULL(ke._Rozmer, N'''') + N'' / '' + ISNULL(ke._S1_X, N'''') + N'' '' + ISNULL(ke._JakostMaterialu, N'''') FROM ' + tblKZ; lSQL:= lSQL + ' k LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) WHERE k.CisloZbozi=N' + cZbo.QuotedString; lblPila1Nazev1.Caption:= helUtils.getHeliosStrVal(Helios, '', lSQL); end; end else begin if (edtFiltrPlan.Text='') then begin lblPlanRegCis.Caption:= VarToStr(FieldByNameValues('RegCis')); lSQL:= 'SELECT k.Nazev1 + N'' '' + ISNULL(ke._Rozmer, N'''') + N'' / '' + ISNULL(ke._S1_X, N'''') + N'' '' + ISNULL(ke._JakostMaterialu, N'''') FROM ' + tblKZ; lSQL:= lSQL + ' k LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) WHERE k.CisloZbozi=N' + cZbo.QuotedString; lblPlanNazev1.Caption:= helUtils.getHeliosStrVal(Helios, '', lSQL); end; end; end; } ZapisInfoMaterialPila; ZapisInfoMaterialPlan; dm.tblFronta.First; while not(dm.tblFronta.Eof) do begin if (dm.tblFronta.FieldByName('colSmazat').AsBoolean) then dm.tblFronta.Delete; dm.tblFronta.Next; end; dm.NactiFrontu (idPrac, self); cbFrontaAll.Checked:= false; dm.FrontaOdznacitVse; lblRecSelected.Caption:= 'Výběr: ' + dm.PocetOznacenychVeFronte.ToString + ' / celkem ' + dm.SoucetDelekOznacenychVeFronte.ToString + ' m'; dm.tblFronta.Refresh; dm.tblFronta.RecNo:= 0; dm.tblFronta.EnableControls; btnAddPila.Enabled:= (dm.PocetOznacenychVeFronte>0); btnDelPila.Enabled:= (dm.tblPila.RecordCount>0) or (dm.tblPlan.RecordCount>0); btnPilaUp.Enabled:= (dm.tblPila.RecordCount>0); btnPilaDown.Enabled:= btnPilaUp.Enabled; btnPlanUp.Enabled:= (dm.tblPlan.RecordCount>0); btnPlanDown.Enabled:= btnPlanUp.Enabled; btnSmazFiltryMDClick (Sender); ctrlFronta.ItemCount:= dm.tblFronta.RecordCount; ctrlFronta.Invalidate; frontaPila.ItemCount:= dm.tblPila.RecordCount; frontaPila.Invalidate; frontaPlan.ItemCount:= dm.tblPlan.RecordCount; frontaPlan.Invalidate; end; procedure TformMain.btnFiltrMatClick (Sender: TObject); var s: string; begin if (dm.tblFronta.RecordCount>0) then if (dm.PocetOznacenychVeFronte=1) then begin edtFiltrMaterial.Text:= dm.VratMaterialPrvniOznacenyVeFronte; edtFiltrMaterialExit (Sender); btnFiltrMat.Enabled:= (dm.PocetOznacenychVeFronte=1); end; btnAddPila.Enabled:= (dm.PocetOznacenychVeFronte>0); end; procedure TformMain.btnFiltrPilaClick (Sender: TObject); var kod, sarze, sz, rc: string; d: byte; canCont: boolean; begin edtFiltrPila.Text:= edtFiltrPila.Text.Trim; if (edtFiltrPila.Text<>'') then begin edtFiltrMaterial.Text:= datModul.pilaSZ + datModul.pilaRC; dm.tblFronta.Filtered:= false; dm.tblFronta.Filter:= 'colCisloZboziMat=' + edtFiltrMaterial.Text.ToUpper.QuotedString; dm.tblFronta.Filtered:= true; lblRecCount.Caption:= 'Počet: ' + dm.tblFronta.RecordCount.ToString; ctrlFronta.ItemCount:= dm.tblFronta.RecordCount; ctrlFronta.Invalidate; end; end; procedure TformMain.btnFiltrPilaDelClick (Sender: TObject); begin edtFiltrPila.Text:= ''; lblJsemAlter.Visible:= false; // btnAddPila.Enabled:= true; // btnDelPila.Enabled:= true; // btnDelPilaOne.Enabled:= true; btnKonecDavky.Enabled:= false; datModul.idKmenMaterialPila:= 0; btnZmenaSarze.Visible:= false; end; procedure TformMain.btnFiltrPlanClick(Sender: TObject); var kod, sarze, sz, rc: string; d: byte; canCont: boolean; begin edtFiltrPlan.Text:= edtFiltrPlan.Text.Trim; if (edtFiltrPlan.Text<>'') then begin edtFiltrMaterial.Text:= datModul.planSZ + datModul.planRC; dm.tblFronta.Filtered:= false; dm.tblFronta.Filter:= 'colCisloZboziMat=' + edtFiltrMaterial.Text.ToUpper.QuotedString; dm.tblFronta.Filtered:= true; lblRecCount.Caption:= 'Počet: ' + dm.tblFronta.RecordCount.ToString; ctrlFronta.ItemCount:= dm.tblFronta.RecordCount; ctrlFronta.Invalidate; end; end; procedure TformMain.btnFrontaDownClick (Sender: TObject); begin // SendMessage(ctrlFronta.Handle, WM_VSCROLL, SB_LINEDOWN, 0); if (ctrlFronta.ItemIndex0) then ctrlFronta.ItemIndex:= ctrlFronta.ItemIndex - 1; end; procedure TformMain.btnFrontaPgUpClick (Sender: TObject); var i: integer; OldScrollPos : integer; begin OldScrollPos := TRttiContext.Create.GetType(TControlList).GetField('FScrollPos').GetValue(Sender).AsInteger; TRttiContext.Create.GetType(TControlList).GetField('FScrollPos').SetValue(Sender, OldScrollPos); // SendMessage(ctrlFronta.Handle, WM_VSCROLL, SB_PAGEUP, 0); i:= Trunc(ctrlFronta.ClientHeight / ctrlFronta.ItemHeight); if (ctrlFronta.ItemIndex-i >= 0) then ctrlFronta.ItemIndex:= ctrlFronta.ItemIndex - i else ctrlFronta.ItemIndex:= 0; end; procedure TformMain.btnKonecDavkyClick (Sender: TObject); var idx, i, i2, idM, pocMezdPrev: integer; lSQL, tmpString: string; ks: Extended; arrIDRozpisR: TArray; begin if (frontaPila.ItemCount>0) and (1=0) then begin SetLength(arrIDRozpisR, frontaPila.ItemCount); lSQL:= 'DROP TABLE IF EXISTS #TabEvidPracePila' + CRLF; lSQL:= lSQL + 'CREATE TABLE #TabEvidPracePila (ID INT IDENTITY(1,1) NOT NULL, OsCislo INT, IDPolozka INT NOT NULL, Sarze NVARCHAR(100), CasS INT, PocetKs NUMERIC(19,6) DEFAULT 1.0 NOT NULL)'; Helios.ExecSQL (lSQL); for idx:=0 to frontaPila.ItemCount-1 do begin frontaPila.ItemIndex:= idx; dm.tblPila.RecNo:= idx + 1; // index TControlListu je zero based // dotaz na pocet stitku pri ks>1 i:= dm.tblPila.FieldByName('colIDPrKVazby').AsInteger; i2:= dm.tblPila.FieldByName('colIDPolozka').AsInteger; ks:= dm.tblPila.FieldByName('colKs').AsExtended; // tisk - VYPNUTY !!! if (1=0) and (Helios.PrintForm3 (bidPrKVaz, datModul.idTiskFormStitek, 'TabPrKVazby.ID=' + i.ToString)) then begin Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET Tisk=1, DatTisku=GETDATE() WHERE ID=' + i2.ToString); dm.tblPila.Edit; dm.tblPila.FieldByName('colTisk').AsBoolean:= true; dm.tblPila.Post; end; // evidovat praci ? tj. IDMzdy je null/nulove // je uz radek v evidenci operaci ? idM:= 0; if (i2>0) then idM:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ISNULL(IdMzdy,0) FROM ' + tblRezPredpisR + ' WHERE ID=' + i2.ToString); if (idM=0) then begin try lSQL:= 'INSERT #TabEvidPracePila (OsCislo, IDPolozka, Sarze, CasS, PocetKs) SELECT ' + cisZam.ToString + ', ' + i2.ToString + ', N' + lblPila1Sarze.Caption.QuotedString; lSQL:= lSQL + ', ' + timerPila.ToString + ', ' + ks.ToString.Replace(',', '.'); Helios.ExecSQL (lSQL); Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET Sarze=N' + lblPila1Sarze.Caption.QuotedString + ' WHERE ID=' + i2.ToString); arrIDRozpisR[idx]:= i2; // co tohle bylo ? - nove stale VYPNUTO !!! if (1=0) and not(helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM dbo._HDC_Log WHERE DATEDIFF(s, DatPorizeni, GETDATE())<10 AND Typ=10 AND iTemp=' + i2.ToString)) then begin dm.tblPila.Edit; dm.tblPila.FieldByName('colPovoleno').AsBoolean:= false; dm.tblPila.Post; btnTiskStitku.Enabled:= false; if (dm.KolikZbyvaKTisku=0) then begin Helios.ExecSQL('UPDATE ' + tblRezPredpis + ' SET DatSplneno=GETDATE(), JeNovaVetaEditor=0 WHERE ID=' + datModul.idHlavPila.ToString); datModul.idHlavPila:= 0; dm.tblPila.Clear; // .EmptyDataSet; frontaPila.ItemCount:= 0; frontaPila.Invalidate; digitTimer.Enabled:= false; VymazUdajePilaNeboPlan (false); // = pila btnPilaUp.Enabled:= (dm.tblPila.RecordCount>0); btnPilaDown.Enabled:= btnPilaUp.Enabled; edtFiltrPila.Text:= ''; end; end; except on E:Exception do Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET Sarze=NULL WHERE ID=' + i2.ToString); end; end; end; try // spust proceduru pro zapis prace lSQL:= 'IF OBJECT_ID(N''dbo.ep_HDC_EvidPracePila'', N''P'') IS NOT NULL EXEC dbo.ep_HDC_EvidPracePila @CelkovyCasS=' + timerPila.ToString + CRLF; Helios.ExecSQL (lSQL); Helios.ExecSQL ('DROP TABLE IF EXISTS #TabEvidPracePila'); // po ukonceni davky se smaze fronta a davka se oznaci jako splnena if (1=1) then begin Helios.ExecSQL('UPDATE ' + tblRezPredpis + ' SET DatSplneno=GETDATE(), JeNovaVetaEditor=0 WHERE ID=' + datModul.idHlavPila.ToString); datModul.idHlavPila:= 0; dm.tblPila.Clear; // .EmptyDataSet; frontaPila.ItemCount:= 0; frontaPila.Invalidate; digitTimer.Enabled:= false; VymazUdajePilaNeboPlan (false); // = pila btnPilaUp.Enabled:= (dm.tblPila.RecordCount>0); btnPilaDown.Enabled:= btnPilaUp.Enabled; edtFiltrPila.Text:= ''; end; except on E:Exception do Helios.Error(#1'CHYBA'#1 + CRLF + E.Message); end; end; btnFiltrPilaDel.Enabled:= true; btnAddPila.Enabled:= true; btnDelPila.Enabled:= true; btnDelPilaOne.Enabled:= true; btnKonecDavky.Enabled:= false; timerPila:= 0; end; procedure TformMain.btnAllZamestClick(Sender: TObject); var i: integer; begin if (Helios.Prenos(bidCisZam, 'TabCisZam.ID', oVar1, 'TabCisZam.StavES NOT IN (1,2,3,4)', 'Vyberte zaměstnance', false)) then begin i:= VarToStr(oVar1).ToInteger; NactiZamestnanceDleIDNeboCisla (i, 0); end; end; procedure TformMain.NactiZamestnanceDleIDNeboCisla (id: Integer = 0; cislo: Integer = 0); begin if (id>0) then cislo:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT Cislo FROM ' + tblCZam + ' WHERE ID=' + id.ToString); if (cislo>0) then begin with Helios.OpenSQL('SELECT Jmeno, Prijmeni FROM ' + tblCZam + ' WHERE Cislo=' + cislo.ToString) do if (RecordCount=1) then begin cisZam:= cislo; idZam:= id; cbZamest.Items.Clear; cbZamest.Items.AddObject(FieldByNameValues('Prijmeni') + ' ' + FieldByNameValues('Jmeno'), TZamestnanec.Create (idZam, cisZam, Helios)); cbZamest.ItemIndex:= 0; end else Helios.Error(#1'Zadané osobní číslo neexistuje'#1); end else Helios.Error(#1'Osobní číslo musí být větší než 0'#1); end; procedure TformMain.btnCalcClick (Sender: TObject); var f: TformCalc; begin f:= TformCalc.Create(nil); try f.mrVal:= 0; f.retVal:= ''; f.edtNum.Text:= ''; f.pnlAkce:= 1; f.Hide; f.ShowModal; if (f.mrVal<10) then begin if not(TryStrToInt(f.retVal, cisZam)) then cisZam:= 0; if (cisZam>0) then NactiZamestnanceDleIDNeboCisla (0, cisZam) else Helios.Error(#1'Musíte zadat platné osobní číslo'#1); end; finally f.Free; end; end; procedure TformMain.btnCalcNadobaClick (Sender: TObject); var f: TformCalc; cisNadoby: integer; begin cisNadoby:= 0; f:= TformCalc.Create(nil); try f.mrVal:= 0; f.retVal:= ''; f.edtNum.Text:= ''; if (calcTyp=1) then f.pnlAkce:= 3; if (calcTyp=2) then f.pnlAkce:= 4; f.Hide; f.ShowModal; if (f.mrVal<10) then begin case calcTyp of 1: begin if not(TryStrToInt(f.retVal, cisNadoby)) then cisNadoby:= 0; if (cisNadoby>0) then begin edtFiltrNadoba.Text:= cisNadoby.ToString; edtFiltrNadobaExit (Sender); end else Helios.Error(#1'Musíte zadat platné číslo nádoby'#1); end; 2: begin edtFiltrNazev.Text:= f.retVal; edtFiltrNazevExit (Sender); end; end; end; finally f.Free; end; end; procedure TformMain.btnDelPilaClick (Sender: TObject); var ids, lSQL: string; begin if (pgCtrlMD.ActivePage=shMatDavky) then begin lblJsemAlter.Visible:= false; shPila.Caption:= 'DÁVKA'; Helios.ExecSQL('UPDATE ' + tblRezPredpisPily + ' SET CisloDavky=NULL WHERE LoginName=SUSER_SNAME() AND Aktivni=1'); lSQL:= 'UPDATE ' + tblMatDavkyR + ' SET NaPile=0 WHERE ID IN (SELECT IDPlanMDPol FROM ' + tblRezPredpisR + ' WHERE IDPlanMDPol IS NOT NULL AND IDHlavicka=' + datModul.idHlavPila.ToString + ')'; Helios.ExecSQL(lSQL); if (dm.tblPila.RecordCount>0) then if (dm.tblPila.FieldByName('colIDPlanH').AsInteger>0) then Helios.ExecSQL('UPDATE ' + tblMatDavkyH + ' SET NaPile=0 WHERE ID=' + dm.tblPila.FieldByName('colIDPlanH').AsString); ids:= dm.IDckaRezPredpisR (dm.tblPila); try dm.tblPila.Clear; // TFDMemTable.EmptyDataSet; Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE Tisk=0 AND ID IN (' + ids + ')'); frontaPila.ItemCount:= dm.tblPila.RecordCount; finally end; Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE DatTisku IS NULL AND Tisk=0 AND IDHlavicka=' + datModul.idHlavPila.ToString); lSQL:= 'IF NOT EXISTS(SELECT 1 FROM ' + tblRezPredpisR + ' WHERE DatTisku IS NOT NULL AND IDHlavicka=' + datModul.idHlavPila.ToString + ')'; lSQL:= lSQL + ' DELETE FROM ' + tblRezPredpis + ' WHERE ID=' + datModul.idHlavPila.ToString; Helios.ExecSQL(lSQL); // lSQL:= 'DELETE FROM ' + tblRezPredpis + ' WHERE ID=' + datModul.idHlavPila.ToString; // Helios.ExecSQL(lSQL); datModul.idHlavPila:= 0; frontaPila.Invalidate; btnDelPila.Enabled:= (dm.tblPila.RecordCount>0); btnDelPilaOne.Enabled:= (dm.tblPila.RecordCount>0); edtFiltrPila.Text:= ''; VymazUdajePilaNeboPlan (false); timerPila:= 0; digitTimerTimer(Self); digitTimer.Enabled:= false; datModul.idKmenMaterialPila:= 0; datModul.idMatDavka:= 0; dm.NactiMaterialoveDavky (self); ctrlMD.ItemCount:= dm.tblMatDavky.RecordCount; ctrlMD.Invalidate; pgCtrlMDChange (Sender); end else begin if (pgCtrl.ActivePage=shPila) then begin shPila.Caption:= 'DÁVKA'; lSQL:= 'UPDATE ' + tblMatDavkyR + ' SET NaPile=0 WHERE ID IN (SELECT IDPlanMDPol FROM ' + tblRezPredpisR + ' WHERE IDPlanMDPol IS NOT NULL AND IDHlavicka=' + datModul.idHlavPila.ToString + ')'; Helios.ExecSQL(lSQL); ids:= dm.IDckaRezPredpisR(dm.tblPila); try dm.tblPila.Clear; // TFDMemTable.EmptyDataSet; Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE DatTisku IS NULL AND Tisk=0 AND ID IN (' + ids + ')'); frontaPila.ItemCount:= dm.tblPila.RecordCount; finally end; Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE DatTisku IS NULL AND IDHlavicka=' + datModul.idHlavPila.ToString); lSQL:= 'DELETE FROM ' + tblRezPredpis + ' WHERE ID=' + datModul.idHlavPila.ToString + ' AND ID NOT IN (SELECT IDHlavicka FROM ' + tblRezPredpisR + ' WHERE IDHlavicka=' + datModul.idHlavPila.ToString + ')'; Helios.ExecSQL(lSQL); datModul.idHlavPila:= 0; frontaPila.Invalidate; btnDelPila.Enabled:= (dm.tblPila.RecordCount>0); btnDelPilaOne.Enabled:= (dm.tblPila.RecordCount>0); edtFiltrPila.Text:= ''; VymazUdajePilaNeboPlan (false); timerPila:= 0; digitTimerTimer(Self); digitTimer.Enabled:= false; datModul.idKmenMaterialPila:= 0; datModul.idMatDavka:= 0; dm.NactiMaterialoveDavky (self); end; if (pgCtrl.ActivePage=shPlan) then begin ids:= dm.IDckaRezPredpisR(dm.tblPlan); try dm.tblPlan.Clear; // .EmptyDataSet; Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE ID IN (' + ids + ')'); frontaPlan.ItemCount:= dm.tblPlan.RecordCount; finally end; Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE IDHlavicka=' + datModul.idHlavPlan.ToString); Helios.ExecSQL('DELETE FROM ' + tblRezPredpis + ' WHERE ID=' + datModul.idHlavPlan.ToString); datModul.idHlavPlan:= 0; frontaPlan.Invalidate; btnDelPila.Enabled:= (dm.tblPlan.RecordCount>0); btnPosliNaPilu.Enabled:= (dm.tblPlan.RecordCount>0); btnDelPilaOne.Enabled:= (dm.tblPlan.RecordCount>0); datModul.idKmenMaterialPlan:= 0; end; end; btnPilaUp.Enabled:= (dm.tblPila.RecordCount>0); btnPilaDown.Enabled:= btnPilaUp.Enabled; ZapisInfoMaterialPlan; ZapisInfoMaterialPila; btnTiskStitku.Enabled:= false; btnTiskBezEvidence.Enabled:= false; dm.NactiFrontu (idPrac, self); end; procedure TformMain.btnDelPilaOneClick (Sender: TObject); var lSQL: string; i, ii, idPol, idMD, idMDPlanR: integer; begin if (pgCtrl.ActivePage=shPila) then begin if (dm.tblPila.RecordCount>0) then begin i:= frontaPila.ItemIndex + 1; dm.tblPila.RecNo:= i; idMDPlanR:= dm.tblPila.FieldByName('colIDPlanR').AsInteger; Helios.ExecSQL('UPDATE ' + tblMatDavkyR + ' SET NaPile=0 WHERE ID=' + idMDPlanR.ToString); idMD:= dm.tblPila.FieldByName('colIDPlanH').AsInteger; lSQL:= 'IF NOT EXISTS(SELECT 1 FROM ' + tblMatDavkyR + ' WHERE NaPile=1 AND IDHlava=' + idMD.ToString + ') ' + 'UPDATE ' + tblMatDavkyH + ' SET NaPile=0 WHERE ID=' + idMD.ToString; Helios.ExecSQL (lSQL); idPol:= dm.tblPila.FieldByName('colIDPolozka').AsInteger; dm.tblPila.Delete; Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE ID=' + idPol.ToString + ' AND Tisk=0'); if (dm.tblPila.RecordCount=0) then begin Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE IDHlavicka=' + datModul.idHlavPila.ToString); Helios.ExecSQL('DELETE FROM ' + tblRezPredpis + ' WHERE ID=' + datModul.idHlavPila.ToString); end; dm.PrecislujPoziceFronty (dm.tblPila, true); frontaPila.ItemCount:= dm.tblPila.RecordCount; datModul.idHlavPila:= 0; frontaPila.Invalidate; btnDelPila.Enabled:= (dm.tblPila.RecordCount>0); btnDelPilaOne.Enabled:= (dm.tblPila.RecordCount>0); if (dm.tblPila.RecordCount=0) then begin VymazUdajePilaNeboPlan (false); Helios.ExecSQL('UPDATE ' + tblRezPredpisPily + ' SET CisloDavky=NULL WHERE LoginName=SUSER_SNAME() AND Aktivni=1'); end; btnPilaUp.Enabled:= (dm.tblPila.RecordCount>0); btnPilaDown.Enabled:= btnPilaUp.Enabled; dm.NactiMaterialoveDavky(self); end; end else begin if (dm.tblPlan.RecordCount>0) then begin i:= frontaPlan.ItemIndex + 1; idMDPlanR:= dm.tblPila.FieldByName('colIDPlanR').AsInteger; Helios.ExecSQL('UPDATE ' + tblMatDavkyR + ' SET NaPile=0 WHERE ID=' + idMDPlanR.ToString); idMD:= dm.tblPila.FieldByName('colIDPlanH').AsInteger; lSQL:= 'IF NOT EXISTS(SELECT 1 FROM ' + tblMatDavkyR + ' WHERE NaPile=1 AND IDHlava=' + idMD.ToString + ') ' + 'UPDATE ' + tblMatDavkyH + ' SET NaPile=0 WHERE ID=' + idMD.ToString; Helios.ExecSQL (lSQL); idPol:= dm.tblPlan.FieldByName('colIDPolozka').AsInteger; dm.tblPlan.Delete; Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE ID=' + idPol.ToString); if (dm.tblPlan.RecordCount=0) then begin Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE IDHlavicka=' + datModul.idHlavPila.ToString); Helios.ExecSQL('DELETE FROM ' + tblRezPredpis + ' WHERE ID=' + datModul.idHlavPila.ToString); end; dm.PrecislujPoziceFronty (dm.tblPlan, true); frontaPila.ItemCount:= dm.tblPlan.RecordCount; datModul.idHlavPila:= 0; frontaPlan.Invalidate; btnDelPila.Enabled:= (dm.tblPlan.RecordCount>0); btnDelPilaOne.Enabled:= (dm.tblPlan.RecordCount>0); if (dm.tblPlan.RecordCount=0) then VymazUdajePilaNeboPlan (true); btnPlanUp.Enabled:= (dm.tblPlan.RecordCount>0); btnPlanDown.Enabled:= btnPlanUp.Enabled; end; end; dm.NactiFrontu (idPrac, self); end; procedure TformMain.btnDigitResetClick (Sender: TObject); begin timerPila:= 0; end; procedure TformMain.btnObrazekClick (Sender: TObject); var f: TformObrazekKZ; lSQL: string; begin if (dm.PocetOznacenychVeFronte=1) then begin f:= TformObrazekKZ.Create(nil); try lSQL:= 'SELECT v.ID FROM ' + tblPrVaz + ' vaz INNER JOIN ' + tblKZ + ' v ON (vaz.vyssi=v.ID) WHERE vaz.ID=' + dm.tblFronta.FieldByName('colIDPrKVazby').AsString; f.idKZ:= helUtils.getHeliosIntVal(Helios, 0, lSQL); f.Helios:= Helios; f.ShowModal; finally f.Free; end; end; end; procedure TformMain.btnPila2DelClick (Sender: TObject); begin dm.tblPlan.Clear; // .EmptyDataSet; frontaPlan.Invalidate; dm.NactiFrontu (idPrac, self); end; procedure TformMain.btnPilaDownClick (Sender: TObject); var oldPos: integer; s: string; i, i2, i3: Integer; begin // oldPos:= TRttiContext.Create.GetType(TControlList).GetField('FScrollPos').GetValue(Sender).AsInteger; // TRttiContext.Create.GetType(TControlList).GetField('FScrollPos').SetValue(Sender, oldPos); // SendMessage(frontaPila.Handle, WM_VSCROLL, SB_LINEDOWN, 0); if (dm.tblPila.RecordCount>1) then begin i:= dm.tblPila.RecNo; if (dm.tblPila.FieldByName('colPovoleno').AsBoolean) then begin dm.tblPila.RecNo:= frontaPila.ItemIndex + 1; oldPos:= dm.tblPila.FieldByName('colPozice').AsInteger; if (oldPos<10*dm.tblPila.RecordCount) then // mam za sebou neco begin dm.tblPila.Edit; dm.tblPila.FieldByName('colPozice').AsInteger:= oldPos + 11; dm.tblPila.FieldByName('colPoziceInt').AsInteger:= dm.tblPila.FieldByName('colPozice').AsInteger; // prevPos:= dm.tblPila.FieldByName('colPozice').AsInteger; dm.tblPila.Post; // dm.tblPila.IndexName:= dm.tblPila.Indexes.Items[0].Name; // dm.tblPila.Indexes.Items[0].Selected:= true; dm.PrecislujPoziceFronty (dm.tblPila, true); dm.tblPila.Refresh; frontaPila.ItemCount:= dm.tblPila.RecordCount; frontaPila.Update; frontaPila.Invalidate; end; if (i1) then begin i:= dm.tblPila.RecNo; if (dm.tblPila.FieldByName('colPovoleno').AsBoolean) then begin dm.tblPila.RecNo:= frontaPila.ItemIndex + 1; oldPos:= dm.tblPila.FieldByName('colPozice').AsInteger; if (oldPos>10) then // mam pred sebou neco begin dm.tblPila.Prior; dm.tblPila.Edit; dm.tblPila.FieldByName('colPozice').AsInteger:= oldPos + 1; dm.tblPila.FieldByName('colPoziceInt').AsInteger:= dm.tblPila.FieldByName('colPozice').AsInteger; // prevPos:= dm.tblPila.FieldByName('colPozice').AsInteger; dm.tblPila.Post; // dm.tblPila.IndexName:= dm.tblPila.Indexes.Items[0].Name; // dm.tblPila.Indexes.Items[0].Selected:= true; dm.PrecislujPoziceFronty (dm.tblPila); dm.tblPila.Refresh; frontaPila.ItemCount:= dm.tblPila.RecordCount; frontaPila.Update; frontaPila.Invalidate; if (i>1) then begin dm.tblPila.RecNo:= i-1; if (i-2>=0) then frontaPila.ItemIndex:= i-2; end; end; end; end; end; procedure TformMain.btnPlanDownClick (Sender: TObject); var oldPos: integer; i: integer; begin // oldPos:= TRttiContext.Create.GetType(TControlList).GetField('FScrollPos').GetValue(Sender).AsInteger; // TRttiContext.Create.GetType(TControlList).GetField('FScrollPos').SetValue(Sender, oldPos); // SendMessage(frontaPlan.Handle, WM_VSCROLL, SB_LINEUP, 0); if (dm.tblPlan.RecordCount>1) then begin i:= dm.tblPlan.RecNo; dm.tblPlan.RecNo:= frontaPlan.ItemIndex + 1; oldPos:= dm.tblPlan.FieldByName('colPozice').AsInteger; if (oldPos<10*dm.tblPlan.RecordCount) then // mam za sebou neco begin dm.tblPlan.Edit; dm.tblPlan.FieldByName('colPozice').AsInteger:= oldPos + 11; // prevPos:= dm.tblPlan.FieldByName('colPozice').AsInteger; dm.tblPlan.Post; // dm.tblPlan.IndexName:= dm.tblPlan.Indexes.Items[0].Name; // dm.tblPlan.Indexes.Items[0].Selected:= true; dm.PrecislujPoziceFronty (dm.tblPlan, true); dm.tblPlan.Refresh; frontaPlan.ItemCount:= dm.tblPlan.RecordCount; frontaPlan.Update; frontaPlan.Invalidate; end; if (i1) then begin i:= dm.tblPlan.RecNo; dm.tblPlan.RecNo:= frontaPlan.ItemIndex + 1; oldPos:= dm.tblPlan.FieldByName('colPozice').AsInteger; if (oldPos>10) then // mam pred sebou neco begin dm.tblPlan.Prior; dm.tblPlan.Edit; dm.tblPlan.FieldByName('colPozice').AsInteger:= oldPos + 1; // prevPos:= dm.tblPlan.FieldByName('colPozice').AsInteger; dm.tblPlan.Post; // dm.tblPlan.IndexName:= dm.tblPlan.Indexes.Items[0].Name; // dm.tblPlan.Indexes.Items[0].Selected:= true; dm.PrecislujPoziceFronty (dm.tblPlan); dm.tblPlan.Refresh; frontaPlan.ItemCount:= dm.tblPlan.RecordCount; frontaPlan.Update; frontaPlan.Invalidate; if (i>1) then begin dm.tblPlan.RecNo:= i-1; if (i-2>=0) then frontaPlan.ItemIndex:= i-2; end; end; end; end; procedure TformMain.btnPosliNaPiluClick (Sender: TObject); var lSQL, czbo, errMsg: string; i: integer; m1, m2: Extended; begin if (dm.tblPlan.RecordCount=0) then Exit; if (dm.tblPila.RecordCount>0) then Helios.Error(#1'Na pile jsou ještě položky'#1) else begin for i:=1 to dm.tblPlan.RecordCount do begin dm.tblPila.Append; dm.CopyRecord(dm.tblPlan, dm.tblPila, i); dm.tblPila.FieldByName('colTisk').AsBoolean:= false; dm.tblPila.FieldByName('colPovoleno').AsBoolean:= true; dm.tblPila.Post; end; czbo:= ''; if (dm.tblPila.RecordCount>0) then begin dm.tblPila.First; czbo:= dm.tblPila.FieldByName('colCisloZboziMat').AsString; datModul.idKmenMaterialPila:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblKZ + ' WHERE CisloZbozi=N' + czbo.QuotedString); datModul.idKmenMaterialPlan:= 0; end; datModul.idHlavPila:= datModul.idHlavPlan; Helios.ExecSQL('UPDATE ' + tblRezPredpis + ' SET IdPlan=NULL WHERE IdPlan=' + datModul.idHlavPlan.ToString); Helios.ExecSQL('UPDATE ' + tblRezPredpis + ' SET JePlan=0 WHERE ID=' + datModul.idHlavPlan.ToString); datModul.idHlavPlan:= 0; dm.tblPlan.Clear; // .EmptyDataSet; frontaPlan.ItemCount:= 0; frontaPlan.Invalidate; lblPila1Nazev1.Caption:= lblPlanNazev1.Caption; lblPila1RegCis.Caption:= lblPlanRegCis.Caption; lblPila1Skladem.Caption:= lblPlanSkladem.Caption; lblPila1Sarze.Caption:= lblPlanSarze.Caption; lblPila1SarzeSkladem.Caption:= lblPlanSarzeSkladem.Caption; datModul.pilaSZ:= datModul.planSZ; datModul.pilaRC:= datModul.planRC; datModul.pilaSarze:= datModul.planSarze; edtFiltrPlan.Text:= ''; VymazUdajePilaNeboPlan (true); lSQL:= 'SELECT s.MnozBezVyd FROM ' + tblSS + ' s INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) WHERE k.CisloZbozi=N' + czbo.QuotedString + ' AND s.IDSklad=N' + skladMat.QuotedString; m1:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); lblPila1Skladem.Caption:= m1.ToString; kmenStavOK:= (m1>0); if (kmenStavOK) then lblPila1Skladem.Font.Color:= clWindowText else lblPila1Skladem.Font.Color:= clRed; if (lblPila1Sarze.Caption<>'') then begin lSQL:= 'SELECT vcs.MnozBezVyd FROM ' + tblVyrCS + ' vcs INNER JOIN ' + tblSS + ' s ON (s.ID=vcs.IDStavSkladu) INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) WHERE k.CisloZbozi=N'; lSQL:= lSQL + czbo.QuotedString + ' AND s.IDSklad=N' + skladMat.QuotedString + ' AND vcs.Nazev1=N' + lblPila1Sarze.Caption.QuotedString; m2:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); lblPila1SarzeSkladem.Caption:= m2.ToString; sarzeStavOK:= (m2>0); if (sarzeStavOK) then lblPila1SarzeSkladem.Font.Color:= clWindowText else lblPila1SarzeSkladem.Font.Color:= clRed; end; { materialOK:= true; if (kmenStavOK=false) or (sarzeStavOK=false) then begin if not(kmenStavOK) then errMsg:= 'POZOR, naskenovaná KARTA není na skladě'; if (lblPila1Sarze.Caption<>'') and not(sarzeStavOK) then errMsg:= 'POZOR, naskenovaná ŠARŽE není na skladě !'; Helios.Error(#1 + errMsg + #1); materialOK:= false; edtFiltrPila.Text:= ''; VymazUdajePilaNeboPlan; end; } pgCtrl.ActivePage:= shPila; frontaPila.ItemCount:= dm.tblPila.RecordCount; frontaPila.Invalidate; timerPila:= 0; digitTimer.Enabled:= true; end; end; procedure TformMain.btnSmazFiltryClick (Sender: TObject); begin dm.tblFronta.Filtered:= false; edtFiltrNadoba.Text:= ''; edtFiltrMaterial.Text:= ''; edtFiltrNazev.Text:= ''; edtFiltrDN.Text:= ''; edtFiltrPrumer.Text:= ''; edtFiltrProfil.Text:= ''; edtFiltrTloustka.Text:= ''; edtFiltrJakost.Text:= ''; lblFiltrDN.Visible:= false; lblFiltrPrumer.Visible:= false; lblFiltrTloustka.Visible:= false; lblFiltrJakostMat.Visible:= false; lblFiltrProfil.Visible:= false; dm.tblFronta.IndexFieldNames:= 'colIDPrKVazby'; lblRecCount.Caption:= 'Počet: ' + dm.tblFronta.RecordCount.ToString; ctrlFronta.ItemCount:= dm.tblFronta.RecordCount; ctrlFronta.Invalidate; lblRecSelected.Caption:= 'Výběr: 0 / celkem 0 m'; dm.FrontaOdznacitVse; btnFiltrMat.Enabled:= (dm.PocetOznacenychVeFronte=1); if (frontaPanel.CanFocus) then frontaPanel.SetFocus; end; procedure TformMain.btnSmazFiltryMDClick (Sender: TObject); begin edtFiltrMDCislo.Text:= ''; edtFiltrMDDM.Text:= ''; edtFiltrMDRegCisMat.Text:= ''; edtFiltrMDSila.Text:= ''; edtFiltrMDPrumer.Text:= ''; edtFiltrMDRozmer.Text:= ''; edtFiltrMDNormaMAT.Text:= ''; dtFiltrMDDatum.Date:= 0; dtFiltrMDDatum.Format:= ' '; edtFiltrMDCisloExit (Sender); end; procedure TformMain.btnSrotClick (Sender: TObject); var lSQL: string; mnozSrot: Extended; fC: TformCalc; begin mnozSrot:= 0; fC:= TformCalc.Create(nil); try fC.edtNum.Text:= '0'; fC.Hide; fC.pnlAkce:= 2; fC.ShowModal; if (fc.mrVal<10) then if not(TryStrToFloat(fC.retVal, mnozSrot)) then mnozSrot:= 0; finally fC.Free; end; if (mnozSrot>0) then begin lSQL:= 'DROP TABLE IF EXISTS #TabEvidPracePilaZbytek' + CRLF; lSQL:= lSQL + 'CREATE TABLE #TabEvidPracePilaZbytek (IDKmen INT, Sarze NVARCHAR(100), Mnozstvi NUMERIC(19,6) DEFAULT 0.0 NOT NULL)' + CRLF; lSQL:= lSQL + 'INSERT #TabEvidPracePilaZbytek (IDKmen, Sarze, Mnozstvi) SELECT ' + datModul.pilaKZ.ToString + ', N' + datModul.pilaSarze.QuotedString + ', ' + mnozSkl.ToString.Replace(',','.') + CRLF; lSQL:= lSQL + 'IF OBJECT_ID(N''dbo.ep_HDC_EvidPracePilaSrot'', N''P'') IS NOT NULL EXEC dbo.ep_HDC_EvidPracePilaSrot' + CRLF; try Helios.ExecSQL(lSQL); except on E:Exception do Helios.Error(#1'Chyba při zápisu šrotu'#1 + CRLF + E.Message); end; end; end; procedure TformMain.NactiMnozstviSkladu (pila: Boolean = True; idKZ: Integer = 0; sarze: string = ''); var lSQL: string; m1, m2: Extended; begin m1:= 0; m2:= 0; lSQL:= 'SELECT s.Mnozstvi FROM ' + tblSS + ' s INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) WHERE k.ID=' + idKZ.ToString + ' AND s.IDSklad=N' + skladMat.QuotedString; m1:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); if (pila) then begin lblPila1Skladem.Caption:= m1.ToString; kmenStavOK:= (m1>0); end else lblPlanSkladem.Caption:= m1.ToString; if (sarze<>'') then begin lSQL:= 'SELECT vcs.Mnozstvi FROM ' + tblVyrCS + ' vcs INNER JOIN ' + tblSS + ' s ON (s.ID=vcs.IDStavSkladu) WHERE s.IDKmenZbozi=' + idKZ.ToString + ' AND s.IDSklad=N'; lSQL:= lSQL + skladMat.QuotedString + ' AND vcs.Nazev1=N' + lblPila1Sarze.Caption.QuotedString; m2:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); if (pila) then begin lblPila1SarzeSkladem.Caption:= m2.ToString; sarzeStavOK:= (m2>0); end else lblPlanSarzeSkladem.Caption:= m2.ToString; end; end; function TformMain.EvidencePrace (idRezRozpisR: integer): integer; // vystup je TabPrikazMzdyAZmetky.ID nebo 0 var lSQL, errMsg: string; begin result:= 0; errMsg:= ''; try { lSQL:= 'SET NOCOUNT ON' + CRLF + 'DECLARE @errMsg NVARCHAR(500), @tranPred INT' + CRLF + 'DECLARE @errTab TABLE (LogText NVARCHAR(500) )' + CRLF + 'DROP TABLE IF EXISTS #TabEvidPilaErrors'; lSQL:= lSQL + CRLF + 'CREATE TABLE #TabEvidPilaErrors (ID INT IDENTITY(1,1) NOT NULL, LogText NVARCHAR(500) )' + CRLF + 'DROP TABLE IF EXISTS #TabEvidPracePila' + CRLF; lSQL:= lSQL + 'CREATE TABLE #TabEvidPracePila (ID INT IDENTITY(1,1) NOT NULL, IDPolozka INT NOT NULL, Sarze NVARCHAR(100), CasS INT, PocetKs NUMERIC(19,6) DEFAULT 1.0 NOT NULL)' + CRLF; lSQL:= lSQL + 'INSERT #TabEvidPracePila (IDPolozka, Sarze, CasS) SELECT ' + i2.ToString + ', N' + lblPila1Sarze.Caption.QuotedString + ', ' + timerPila.ToString + CRLF; lSQL:= lSQL + 'UPDATE ' + tblRezPredpisR + ' SET Tisk=1, DatTisku=GETDATE() WHERE ID=' + i2.ToString + CRLF; lSQL:= lSQL + 'SET @tranPred=@@TRANCOUNT' + CRLF + 'BEGIN TRY' + CRLF + ' IF (@tranPred=0) BEGIN TRAN' + CRLF; lSQL:= lSQL + ' IF OBJECT_ID(N''dbo.ep_HDC_EvidPracePila'', N''P'') IS NOT NULL EXEC dbo.ep_HDC_EvidPracePila' + CRLF; lSQL:= lSQL + ' IF (@tranPred=0) AND (@@TRANCOUNT>0) COMMIT TRAN' + CRLF + 'END TRY' + CRLF; lSQL:= lSQL + 'BEGIN CATCH' + CRLF + ' SET @errMsg = ERROR_MESSAGE()' + CRLF + ' INSERT @errTab (LogText) SELECT LogText FROM #TabEvidPilaErrors' + CRLF; lSQL:= lSQL + ' IF (@tranPred=0) AND (@@TRANCOUNT>0) ROLLBACK TRAN' + CRLF + ' INSERT dbo._HDC_Log (Typ, LogText, iTemp) SELECT 10, @errMsg, ' + i2.ToString + CRLF; lSQL:= lSQL + ' INSERT dbo._HDC_Log (Typ, LogText, iTemp) SELECT 10, LogText, ' + i2.ToString + ' FROM @errTab' + CRLF + 'END CATCH'; } lSQL:= 'SET NOCOUNT ON' + CRLF + 'DECLARE @idMzda INT=0, @errM NVARCHAR(255)=N''''' + CRLF + 'DROP TABLE IF EXISTS #TabEvidPracePila' + CRLF; lSQL:= lSQL + 'CREATE TABLE #TabEvidPracePila (ID INT IDENTITY(1,1) NOT NULL, OsCislo INT, IDPolozka INT NOT NULL, Sarze NVARCHAR(100), CasS INT, PocetKs NUMERIC(19,6) DEFAULT 1.0 NOT NULL)' + CRLF; lSQL:= lSQL + 'INSERT #TabEvidPracePila (OsCislo, IDPolozka, Sarze, CasS) SELECT ' + cisZam.ToString + ', ' + idRezRozpisR.ToString + ', N' + lblPila1Sarze.Caption.QuotedString; lSQL:= lSQL + ', ' + timerPila.ToString + CRLF; lSQL:= lSQL + 'IF OBJECT_ID(N''dbo.ep_HDC_EvidPracePila'', N''P'') IS NOT NULL EXEC @idMzda=dbo.ep_HDC_EvidPracePila @errMsg=@errM' + CRLF; lSQL:= lSQL + 'SELECT @idMzda AS IDMzda, @errM AS ErrMsg'; with Helios.OpenSQL(lSQL) do begin result:= StrToInt(VarToStr(FieldByNameValues('IDMzda'))); errMsg:= VarToStr(FieldByNameValues('ErrMsg')); end; if (errMsg<>'') then Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET ErrMsg=N' + errMsg.QuotedString + ' WHERE ID=' + idRezRozpisR.ToString); // Helios.ExecSQL(lSQL); // result:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT TOP(1) ISNULL(IDMzdy,0) FROM ' + tblRezPredpisR + ' WHERE ID=' + idRezRozpisR.ToString); if (result>0) then begin if not(helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM dbo._HDC_Log WHERE DATEDIFF(s, DatPorizeni, GETDATE())<10 AND Typ=10 AND iTemp=' + idRezRozpisR.ToString)) or (1=1) then begin dm.tblPila.Edit; dm.tblPila.FieldByName('colPovoleno').AsBoolean:= false; dm.tblPila.FieldByName('colIDMzdy').AsInteger:= result; dm.tblPila.Post; btnTiskStitku.Enabled:= false; if (dm.KolikZbyvaKTisku=0) then begin Helios.ExecSQL('UPDATE ' + tblRezPredpis + ' SET DatSplneno=GETDATE(), JeNovaVetaEditor=0 WHERE ID=' + datModul.idHlavPila.ToString); datModul.idHlavPila:= 0; datModul.idMatDavka:= 0; dm.tblPila.Clear; // .EmptyDataSet; frontaPila.ItemCount:= 0; frontaPila.Invalidate; digitTimer.Enabled:= false; VymazUdajePilaNeboPlan; btnPilaUp.Enabled:= (dm.tblPila.RecordCount>0); btnPilaDown.Enabled:= btnPilaUp.Enabled; btnDelPila.Enabled:= btnPilaUp.Enabled; btnDelPilaOne.Enabled:= btnPilaUp.Enabled; edtFiltrPila.Text:= ''; end; end; end; frontaPila.Invalidate; except on E:Exception do begin errMsg:= E.Message; end; end; end; procedure TformMain.btnTiskStitkuClick (Sender: TObject); var i, ii, i2, idPredpisH, idPrPost, idM, idKZx, idMD, idMDP, pocMezdPrev, doklOper, idEvP: integer; lSQL, tmpString, oper, operPlan, altOper, tiskarnaPila: string; i3, dokl, idKmenTisk, idVPr: integer; ks, delka: Extended; tiskOK: boolean; defPrintName: string; hPrinter: THandle; vPO: TPrinterOptions; JobInfo: array[0..255] of TJobInfo1; JobsReturned, ix: DWORD; DocInfo: TDocInfo1; begin tiskOK:= false; if (datModul.idTiskForm>0) then begin if (datModul.tiskarnaNazev= '') then // ZDesigner ZD421 PILA begin lSQL:= 'SELECT TOP(1) TiskFronta FROM ' + tblTiskDef + ' WHERE FormDefID=' + datModul.idTiskForm.ToString; lSQL:= lSQL + ' AND (LoginName IS NULL OR LoginName=SUSER_SNAME()) ORDER BY ISNULL(LoginName, N'''') DESC'; datModul.tiskarnaNazev:= helUtils.getHeliosStrVal(Helios, '', lSQL); end; if not(helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 AS A FROM ' + tblTiskDef + ' WHERE TiskDoSouboru=1 AND FormDefID=' + datModul.idTiskForm.ToString)) then if (helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 AS A FROM ' + tblTiskDef + ' WHERE FormDefID=' + datModul.idTiskForm.ToString + ' AND Implicitni=0')) and (datModul.tiskarnaNazev<>'') then begin if not(dm.IsPrinterActiveFrmId(datModul.tiskarnaNazev, datModul.idTiskForm)) then begin Helios.Error('Tiskárna nenalezena nebo "' + datModul.tiskarnaNazev + '" není aktivní'); // Exit; end; end; end; // zkusi zrusit probihajici tiskove joby defPrintName:= Printer.Printers[Printer.PrinterIndex]; if (datModul.tiskarnaNazev<>'') then defPrintName:= datModul.tiskarnaNazev; if (defPrintName<>'') then begin vPO.dwFlags:= PRINTER_OPTION_NO_CACHE; vPO.cbSize:= SizeOf(vPO); if OpenPrinter2(PChar(defPrintName), @hPrinter, nil, @vPO) then try // Získání seznamu úloh EnumJobs(hPrinter, 0, 255, 1, @JobInfo, SizeOf(JobInfo), JobsReturned, ix); if (JobsReturned>0) then for ix:=0 to JobsReturned - 1 do begin // Zrušení jednotlivých úloh SetJob(hPrinter, JobInfo[ix].JobId, 0, nil, JOB_CONTROL_CANCEL); end; finally ClosePrinter(hPrinter); end; end; dm.tblPila.RecNo:= frontaPila.ItemIndex + 1; // index TControlListu je zero based // dotaz na pocet stitku pri ks>1 idMDP:= dm.tblPila.FieldByName('colIDPlanR').AsInteger; idMD:= dm.tblPila.FieldByName('colIDPlanH').AsInteger; operPlan:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Operace FROM ' + tblMatDavkyR + ' WHERE ID=' + idMDP.ToString); i:= dm.tblPila.FieldByName('colIDPrKVazby').AsInteger; idVPr:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDPrikaz FROM ' + tblPrKVaz + ' WHERE IDOdchylkyDo IS NULL AND ID=' + i.ToString); dokl:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT Doklad FROM ' + tblPrKVaz + ' WHERE IDOdchylkyDo IS NULL AND ID=' + i.ToString); ii:= dm.tblPila.FieldByName('colIDPrKVazbyAlter').AsInteger; if (ii>0) then begin idKZx:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT nizsi FROM ' + tblPrKVaz + ' WHERE ID=' + ii.ToString); if (idKZx<>datModul.idKmenMaterialPila) then ii:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT ID FROM ' + tblPrKVaz + ' WHERE nizsi=' + datModul.idKmenMaterialPila.ToString + ' AND IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString); end; idKZx:= 0; if (i>0) and (ii=0) then idKZx:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT nizsi FROM ' + tblPrKVaz + ' WHERE ID=' + i.ToString + ' AND IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString); if (idKZx>0) then if (idKZx<>datModul.idKmenMaterialPila) then ii:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT ID FROM ' + tblPrKVaz + ' WHERE nizsi=' + datModul.idKmenMaterialPila.ToString + ' AND IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString); if (ii>0) and (i<>ii) then begin Helios.ExecSQL ('UPDATE ' + tblPrKVaz + ' SET Operace=N' + operPlan.QuotedString + ' WHERE ID=' + ii.ToString + ' AND Operace IS NULL'); i:= ii; dm.tblPila.Edit; dm.tblPila.FieldByName('colIDPrKVazby').AsInteger:= i; dm.tblPila.Post; end; oper:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Operace FROM ' + tblPrKVaz + ' WHERE ID=' + i.ToString); if (oper='') then begin lSQL:= 'SELECT COUNT(ID) FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString + ' AND pracoviste=' + datModul.idPracovistePila.ToString; if (helUtils.getHeliosIntVal(Helios, 0, lSQL)=1) then oper:= helUtils.getHeliosStrVal(Helios, '', lSQL.Replace('COUNT(ID)', 'operace')); if (oper<>'') then Helios.ExecSQL('UPDATE ' + tblPrKVaz + ' SET Operace=N' + oper.QuotedString + ' WHERE ID=' + i.ToString + ' AND ISNULL(Operace,N'''')<>N' + oper.QuotedString); end; delka:= dm.tblPila.FieldByName('colDelka').AsExtended; ks:= dm.tblPila.FieldByName('colKs').AsExtended; idVPr:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDPrikaz FROM ' + tblPrKVaz + ' WHERE IDOdchylkyDo IS NULL AND ID=' + i.ToString); dokl:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT Doklad FROM ' + tblPrKVaz + ' WHERE IDOdchylkyDo IS NULL AND ID=' + i.ToString); idKmenTisk:= datModul.idMatDavkaKmen; if (datModul.idMatDavkaKmen<>datModul.idKmenMaterialPila) then begin lSQL:= 'SELECT ID FROM ' + tblPrKVaz + ' WHERE IDOdchylkyDo IS NULL AND nizsi=' + datModul.idKmenMaterialPila.ToString + ' AND IDPrikaz=' + idVPr.ToString; i3:= helUtils.getHeliosIntVal (Helios, 0, lSQL); if (i3=0) then begin lSQL:= 'DECLARE @i INT' + CRLF + 'EXEC @i=dbo.hp_NewPozadavek_TabPrKVazby @IDPrikaz=' + idVpr.ToString + ', @IDKmenZbozi=' + datModul.idKmenMaterialPila.ToString; lSQL:= lSQL + ', @Mnozstvi=' + (helUtils.RoundToEX(delka, -4)/1000).ToString.Replace(',', '.'); lSQL:= lSQL + ', @Mnoz_zad=' + (helUtils.RoundToEX(delka * ks, -4)/1000).ToString.Replace(',', '.') + ', @Operace=N' + oper.QuotedString; lSQL:= lSQL + ', @Alt_K_Dokladu=' + dokl.ToString + CRLF + 'SELECT @i'; i3:= helUtils.getHeliosIntVal (Helios, 0, lSQL); end; if (i3>0) then begin i:= i3; dm.tblPila.Edit; dm.tblPila.FieldByName('colIDPrKVazby').AsInteger:= i; dm.tblPila.Post; idKmenTisk:= datModul.idKmenMaterialPila; end; end; i2:= dm.tblPila.FieldByName('colIDPolozka').AsInteger; idPredpisH:= dm.tblPila.FieldByName('colIDHlavicka').AsInteger; lSQL:= 'SELECT o.Doklad FROM ' + tblPrKVaz + ' v LEFT JOIN ' + tblPrPost + ' o ON (v.IDPrikaz=o.IDPrikaz AND o.IDOdchylkyDo IS NULL AND v.Operace=o.Operace) WHERE v.ID=' + i.ToString; doklOper:= helUtils.getHeliosIntVal(Helios, 0, lSQL); altOper:= helUtils.getHeliosStrVal(Helios, '', lSQL.Replace('o.Doklad ', 'o.Alt ')); lSQL:= 'INSERT ' + tblRezPredpisEvidPrace + ' (IDRezaciPredpisR, IDPlanMD, OsCislo, IDKmenZboziMat, Sarze, CasS) SELECT ' + i2.ToString + ', ' + idMD.ToString; lSQL:= lSQL + ', ' + cisZam.ToString + ', ' + idKmenTisk.ToString + ', N' + lblPila1Sarze.Caption.QuotedString + ', ' + timerPila.ToString + CRLF + 'SELECT SCOPE_IDENTITY()'; idEvP:= helUtils.getHeliosIntVal(Helios, 0, lSQL); if (dm.PocetPovolenychPredeMnou(dm.tblPila)=0) then begin lSQL:= 'UPDATE ' + tblRezPredpisR + ' SET Sarze=N' + lblPila1Sarze.Caption.QuotedString + ', IDKmenMaterial=' + idKmenTisk.ToString; lSQL:= lSQL + ', IDPrKVazby=' + i.ToString + ', Operace=N' + oper.QuotedString + ', DokladOper=' + doklOper.ToString + ', AltOper=N' + altOper.QuotedString; lSQL:= lSQL + ' WHERE ID=' + i2.ToString; Helios.ExecSQL(lSQL); Helios.ExecSQL ('UPDATE ' + tblPrKVaz + ' SET Prednastaveno=0 WHERE IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString); Helios.ExecSQL ('UPDATE ' + tblPrKVaz + ' SET Prednastaveno=1 WHERE IDOdchylkyDo IS NULL AND ID=' + i.ToString); // tisk if (helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM ' + tblPlgInfo + ' WHERE NazevSys=N''PluginRemotePrint''')) then begin try tiskarnaPila:= datModul.tiskarnaNazev; if (datModul.tiskarnaNazev='') then begin tiskarnaPila:= helUtils.getHeliosStrVal (Helios, '', 'SELECT TOP(1) Nazev FROM dbo.GTabRPSeznamTiskaren WHERE LOWER(Nazev) LIKE N''%pila%'' ORDER BY Nazev'); datModul.tiskarnaNazev:= tiskarnaPila; end; if (tiskarnaPila<>'') then begin lSQL:= 'DECLARE @u NVARCHAR(80)=SUSER_SNAME(); EXEC dbo.GEP_RP_NewPozadavekNaTisk @Uzivatel=@u, @Popis=N''Tisk štítku pila'', @BrowseID=11050, @TiskID=' + datModul.idTiskForm.ToString + ', @Filtr=N''TabPrKVazby.ID=' + i.ToString + ''', @Tiskarna=N' + tiskarnaPila.QuotedString + ', @PocetKopii=1'; { lSQL:= 'INSERT dbo.GTabRPSeznamPozadavku (Typ, Uzivatel, Popis, BrowseID, Filtr, Tiskarna)' +' SELECT 0, SUSER_SNAME(), N''Tisk štítku pila'', ' + datModul.idTiskForm.ToString + ', N''TabPrKVazby.ID=' + i.ToString + ''', N' + tiskarnaPila.QuotedString; } Helios.ExecSQL (lSQL); end; finally end; end; if not(datModul.tiskJenPlgRP) then begin if (Helios.PrintForm3 (bidPrKVaz, datModul.idTiskForm, 'TabPrKVazby.ID=' + i.ToString)) then begin lSQL:= 'INSERT ' + tblRezPredpisTisky + ' (IDRezaciPredpisR, IDKmenMaterial, Sarze, CisloZboziMat, DeviceID, IDPila, IDPrikaz, IDPrKVazby, OperacePrP, IDPredpisdavkyPlan) SELECT ' + i2.ToString; lSQL:= lSQL + ', ' + idKmenTisk.ToString + ', N' + IfThen(lblPila1Sarze.Caption='', 'ULL', lblPila1Sarze.Caption.QuotedString) + ', N' + (datModul.pilaSZ + datModul.pilaRC).QuotedString; lSQL:= lSQL + ', N' + datModul.devID.QuotedString + ', ' + datModul.idPila.ToString + ', ' + idVPr.ToString + ', ' + i.ToString + ', N' + oper.QuotedString + ', ' + idMD.ToString; Helios.ExecSQL(lSQL); tiskOK:= true; Helios.ExecSQL('UPDATE ' + tblRezPredpisPily + ' SET PosledniTisk=GETDATE(), PocetTisku=PocetTisku+1 WHERE Aktivni=1 AND LoginName=SUSER_SNAME()'); Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET Tisk=1, DatTisku=GETDATE() WHERE ID=' + i2.ToString); dm.tblPila.Edit; dm.tblPila.FieldByName('colTisk').AsBoolean:= true; dm.tblPila.Post; end; end else begin tiskOK:= true; Helios.ExecSQL('UPDATE ' + tblRezPredpisPily + ' SET PosledniTisk=GETDATE(), PocetTisku=PocetTisku+1 WHERE Aktivni=1 AND LoginName=SUSER_SNAME()'); Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET Tisk=1, DatTisku=GETDATE() WHERE ID=' + i2.ToString); dm.tblPila.Edit; dm.tblPila.FieldByName('colTisk').AsBoolean:= true; dm.tblPila.Post; end; // evidovat praci ? tj. IDMzdy je null/nulove // je uz radek v evidenci operaci ? idM:= 0; if (i2>0) then idM:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT ISNULL(IdMzdy,0) FROM ' + tblRezPredpisR + ' WHERE ID=' + i2.ToString); if (idM=0) and (dm.VsePredeMnouMaMzdu (dm.tblPila)) then begin try helUtils.waitStart(nil, 'Generuju výdejku materiálu...'); idM:= EvidencePrace (i2); helUtils.waitEnd; finally end; if (idM>0) then begin Helios.ExecSQL('UPDATE ' + tblRezPredpisEvidPrace + ' SET IDMzdy=' + idM.ToString + ' WHERE ID=' + idEvP.ToString); Helios.ExecSQL('UPDATE ' + tblMatDavkyR + ' SET Splneno=1, NaPile=0 WHERE ID=' + idMDP.ToString); Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET IdMzdy=' + idM.ToString + ', DatSplneno=GETDATE() WHERE ID=' + i2.ToString); dm.tblPila.Edit; dm.tblPila.FieldByName('colPovoleno').AsBoolean:= false; dm.tblPila.FieldByName('colIDMzdy').AsInteger:= idM; dm.tblPila.Post; btnPilaDownClick (nil); end; timerPila:= 0; end; // pokud je vse splneno, uzavri Materialovou davku a Rezaci predpis if (dm.PocetPovolenych (dm.tblPila)=0) then begin lSQL:= 'IF NOT EXISTS(SELECT 1 FROM ' + tblRezPredpisR + ' WHERE IDHlavicka=' + idPredpisH.ToString + ' AND (IDMzdy IS NULL OR DatTisku IS NULL))' + CRLF; lSQL:= lSQL + ' UPDATE ' + tblRezPredpis + ' SET DatSplneno=GETDATE() WHERE ID=' + idPredpisH.ToString; Helios.ExecSQL(lSQL); lSQL:= 'IF NOT EXISTS(SELECT 1 FROM ' + tblMatDavkyR + ' WHERE IDHlava=' + idMD.ToString + ' AND Splneno=0)' + CRLF; lSQL:= lSQL + ' UPDATE ' + tblMatDavkyH + ' SET Splneno=1, NaPile=0 WHERE ID=' + idMD.ToString; Helios.ExecSQL(lSQL); Helios.ExecSQL('UPDATE ' + tblRezPredpisPily + ' SET CisloDavky=NULL WHERE LoginName=SUSER_SNAME() AND Aktivni=1'); idMD:= 0; datModul.idMatDavka:= 0; datModul.idMatDavkaKmen:= 0; dm.tblPila.Clear; btnTiskStitku.Enabled:= false; btnTiskBezEvidence.Enabled:= false; VymazUdajePilaNeboPlan (false); digitTimer.Enabled:= false; lblTimerPila.Caption:= '00:00'; end; end else Helios.Error (#1'Tisk lze provádět pouze z PRVNÍ povolené položky'#1); AktualizujFrontuPila; end; procedure TformMain.btnZmenaSarzeClick (Sender: TObject); begin lblJsemAlter.Visible:= false; edtFiltrPila.Text:= ''; btnZmenaSarze.Visible:= false; if (edtFiltrPila.CanFocus) then edtFiltrPila.SetFocus; end; procedure TformMain.edtFiltrDNEnter (Sender: TObject); var f: TformCalc; d: integer; begin edtFiltrDN.Text:= ''; { f:= TformCalc.Create(nil); try f.mrVal:= 0; f.retVal:= ''; f.edtNum.Text:= ''; f.pnlAkce:= 5; f.Hide; f.ShowModal; if (f.mrVal<10) then begin if (f.retVal<>'') then edtFiltrDN.Text:= f.retVal; if (f.retVal='') or (f.retVal='0') then edtFiltrDN.Text:= ''; end; edtFiltrMaterialExit (Sender); finally f.Free; end; if (frontaPlan.CanFocus) then frontaPlan.SetFocus; } end; procedure TformMain.edtFiltrDNExit (Sender: TObject); var s: string; begin edtFiltrDN.Text:= edtFiltrDN.Text.Trim.ToUpper; s:= edtFiltrDN.Text; if (s<>'') and not(s.StartsWith('DN', true)) then edtFiltrDN.Text:= 'DN' + edtFiltrDN.Text; lblFiltrDN.Visible:= (edtFiltrDN.Text<>''); edtFiltrMaterialExit (Sender); end; procedure TformMain.edtFiltrDNKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key=VK_RETURN) or (Key=VK_ESCAPE) then edtFiltrDNExit (Sender); end; procedure TformMain.edtFiltrJakostEnter (Sender: TObject); var f: TformKeyb; begin edtFiltrJakost.Text:= ''; if (helUtils.IsAdmin) and (1=0) then ShowTabTip else begin if not(helUtils.IsPhysicalKeyboardConnected) then begin f:= TformKeyb.Create(nil); try f.ShowModal; edtFiltrJakost.Text:= f.text.ToUpper; if (frontaPlan.CanFocus) then frontaPlan.SetFocus; finally f.Free; end; end; end; end; procedure TformMain.edtFiltrJakostExit (Sender: TObject); begin edtFiltrJakost.Text:= edtFiltrJakost.Text.Trim.ToUpper; lblFiltrJakostMat.Visible:= (edtFiltrJakost.Text<>''); if (frontaPanel.CanFocus) then frontaPanel.SetFocus; CloseTabTip; edtFiltrMaterialExit (Sender); end; procedure TformMain.edtFiltrJakostKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key=VK_RETURN) then begin Key:= 0; edtFiltrJakostExit(Sender); end; end; procedure TformMain.edtFiltrMaterialEnter (Sender: TObject); var f: TformCalc; f2: TformKeyb; d: integer; begin edtFiltrMaterial.Text:= ''; { f:= TformCalc.Create(nil); try f.mrVal:= 0; f.retVal:= ''; f.edtNum.Text:= ''; f.pnlAkce:= 4; f.Hide; f.ShowModal; if (f.mrVal<10) then begin if (f.retVal<>'') then edtFiltrMaterial.Text:= f.retVal; if (f.retVal='') or (f.retVal='0') then edtFiltrMaterial.Text:= ''; end; finally f.Free; end; } if (helUtils.IsAdmin) and (1=0) then ShowTabTip else begin if not(helUtils.IsPhysicalKeyboardConnected) then begin f2:= TformKeyb.Create(nil); try f2.ShowModal; edtFiltrMaterial.Text:= f2.text.ToUpper; finally f2.Free; end; end; end; { if (frontaPanel.CanFocus) then frontaPanel.SetFocus; } end; procedure TformMain.edtFiltrMaterialExit (Sender: TObject); var filtrNew, fMaterial, fNadoba, fNazev, fPrumer, fDN, fJakost, fProfil, fTloustka, fRozmer, fNormaMat: string; d: integer; sz, rc, kodMat: string; begin if (frontaPanel.CanFocus) then frontaPanel.SetFocus; CloseTabTip; edtFiltrMaterial.Text:= edtFiltrMaterial.Text.Trim; edtFiltrNadoba.Text:= edtFiltrNadoba.Text.Trim; edtFiltrNazev.Text:= edtFiltrNazev.Text.Trim; edtFiltrDN.Text:= edtFiltrDN.Text.Trim; edtFiltrPrumer.Text:= edtFiltrPrumer.Text.Trim; edtFiltrProfil.Text:= edtFiltrProfil.Text.Trim; edtFiltrTloustka.Text:= edtFiltrTloustka.Text.Trim; edtFiltrJakost.Text:= edtFiltrJakost.Text.Trim; edtFiltrMDRozmer.Text:= edtFiltrMDRozmer.Text.Trim; edtFiltrMDNormaMAT.Text:= edtFiltrMDNormaMAT.Text.Trim; kodMat:= edtFiltrMaterial.Text; d:= Length(kodMat); sz:= ''; rc:= ''; if (d=13) then // 010030INT000031910275957 begin sz:= LeftStr(kodMat, 3); rc:= MidStr(kodMat, 4, 30); end; if (d=13) then begin sz:= LeftStr(kodMat, 3); rc:= MidStr(kodMat, 4, 10); end else if (d>13) and (LeftStr(kodMat,3)='010') then // 010030INT000037610313119 begin kodMat:= MidStr(kodMat, 4, 100); sz:= LeftStr(kodMat, 3); // 030 rc:= MidStr(kodMat, 4, 10); // INT0000232 // sarze:= MidStr(kodMat, 16, 50); // 1202106 edtFiltrMaterial.Text:= sz + rc; end; if (edtFiltrMaterial.Text<>'') or (edtFiltrNadoba.Text<>'') or (edtFiltrNazev.Text<>'') or (edtFiltrDN.Text<>'') or (edtFiltrPrumer.Text<>'') or (edtFiltrJakost.Text<>'') or (edtFiltrProfil.Text<>'') or (edtFiltrTloustka.Text<>'') or (edtFiltrMDRozmer.Text<>'') or (edtFiltrMDNormaMAT.Text<>'') then begin dm.FrontaOdznacitVse; fMaterial:= edtFiltrMaterial.Text; fNadoba:= edtFiltrNadoba.Text; fNazev:= edtFiltrNazev.Text; fPrumer:= edtFiltrPrumer.Text; fDN:= edtFiltrDN.Text; fJakost:= edtFiltrJakost.Text; fProfil:= edtFiltrProfil.Text; fTloustka:= edtFiltrTloustka.Text; fRozmer:= edtFiltrMDRozmer.Text.Trim; fNormaMat:= edtFiltrMDNormaMAT.Text.Trim; filtrNew:= IfThen(fMaterial<>'', 'UPPER(colCisloZboziMat) LIKE ''%' + fMaterial.ToUpper + '%''', ''); if (fNadoba<>'') then begin if (filtrNew<>'') then filtrNew:= filtrNew + ' AND '; filtrNew:= filtrNew + 'UPPER(colNadoba) LIKE ''%' + fNadoba.ToUpper + '%'''; end; if (fNazev<>'') then begin if (filtrNew<>'') then filtrNew:= filtrNew + ' AND '; filtrNew:= filtrNew + 'UPPER(colNazev1) LIKE ''%' + fNazev.ToUpper + '%'''; end; if (fPrumer<>'') then begin if (filtrNew<>'') then filtrNew:= filtrNew + ' AND '; filtrNew:= filtrNew + 'UPPER(colPrumer) LIKE ''' + fPrumer.ToUpper + ''''; end; if (fDN<>'') then begin if (filtrNew<>'') then filtrNew:= filtrNew + ' AND '; filtrNew:= filtrNew + 'UPPER(colDN) LIKE ''' + fDN.ToUpper + ''''; end; if (fTloustka<>'') then begin if (filtrNew<>'') then filtrNew:= filtrNew + ' AND '; filtrNew:= filtrNew + 'UPPER(colSilaMat) LIKE ''' + fTloustka.ToUpper + ''''; end; if (fProfil<>'') then filtrNew:= filtrNew + IfThen(filtrNew<>'', ' AND ', '') + 'UPPER(colRozmer) LIKE ''' + fProfil.ToUpper + ''''; if (fJakost<>'') then filtrNew:= filtrNew + IfThen(filtrNew<>'', ' AND ', '') + 'UPPER(colJakostMat) LIKE ''' + fJakost.ToUpper + ''''; if (fRozmer<>'') then filtrNew:= filtrNew + IfThen(filtrNew<>'', ' AND ', '') + 'UPPER(colRozmer) LIKE ''' + fRozmer.ToUpper + '%'''; if (fNormaMat<>'') then filtrNew:= filtrNew + IfThen(filtrNew<>'', ' AND ', '') + 'UPPER(colNormaMat) LIKE ''%' + fNormaMat.ToUpper + '%'''; dm.tblFronta.Filtered:= false; dm.tblFronta.Filter:= filtrNew; dm.tblFronta.Filtered:= true; end else begin dm.tblFronta.Filter:= ''; dm.tblFronta.Filtered:= true; dm.tblFronta.Filtered:= false; end; lblRecCount.Caption:= 'Počet: ' + dm.tblFronta.RecordCount.ToString; ctrlFronta.ItemCount:= dm.tblFronta.RecordCount; ctrlFronta.Invalidate; lblRecSelected.Caption:= 'Výběr: 0 / celkem 0 m'; dm.FrontaOdznacitVse; if (frontaPlan.CanFocus) then frontaPlan.SetFocus; end; procedure TformMain.edtFiltrMaterialKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key=VK_RETURN) then begin Key:= 0; edtFiltrJakostExit (Sender); end; end; procedure TformMain.edtFiltrMDCisloExit (Sender: TObject); var filtrNew: string; fCislo, fRCMat, fDM, fS1, fDatum, fRozmer, fNormaMat: string; begin if (frontaPanel.CanFocus) then frontaPanel.SetFocus; CloseTabTip; edtFiltrMDCislo.Text:= edtFiltrMDCislo.Text.Trim; fCislo:= edtFiltrMDCislo.Text; fDatum:= DateToStr(dtFiltrMDDatum.Date); if (fDatum='30.12.1899') then fDatum:= ''; fDM:= edtFiltrMDDM.Text.Trim; fS1:= edtFiltrMDSila.Text.Trim; fRCMat:= edtFiltrMDRegCisMat.Text.Trim; fRozmer:= edtFiltrMDRozmer.Text.Trim; fNormaMat:= edtFiltrMDNormaMAT.Text.Trim; if (fCislo<>'') or (fDatum<>'') or (fDM<>'') or (fS1<>'') or (fRCMat<>'') or (fRozmer<>'') or (fNormaMat<>'') then begin filtrNew:= IfThen(fCislo<>'', 'colCislo=' + fCislo, ''); if (fDatum<>'') then begin if (filtrNew<>'') then filtrNew:= filtrNew + ' AND '; filtrNew:= filtrNew + 'colPlanVyroby BETWEEN ''' + fDatum + ' 00:00:01'' AND ''' + fDatum + ' 23:59:59'''; end; if (fDM<>'') then begin if (filtrNew<>'') then filtrNew:= filtrNew + ' AND '; filtrNew:= filtrNew + 'UPPER(colPrumerDM)=''' + fDM + ''''; end; if (fRCMat<>'') then begin if (filtrNew<>'') then filtrNew:= filtrNew + ' AND '; filtrNew:= filtrNew + 'UPPER(colRCMat) LIKE ''%' + fRCMat + '%'''; end; if (fS1<>'') then begin if (filtrNew<>'') then filtrNew:= filtrNew + ' AND '; filtrNew:= filtrNew + 'UPPER(colTloustkaS1)=''' + fS1 + ''''; end; if (fRozmer<>'') then filtrNew:= filtrNew + IfThen(filtrNew<>'', ' AND ', '') + 'UPPER(colRozmer) LIKE ''' + fRozmer.ToUpper + '%'''; if (fNormaMat<>'') then filtrNew:= filtrNew + IfThen(filtrNew<>'', ' AND ', '') + 'UPPER(colNormaMat) LIKE ''%' + fNormaMat.ToUpper + '%'''; dm.tblMatDavky.Filtered:= false; dm.tblMatDavky.Filter:= filtrNew; dm.tblMatDavky.Filtered:= true; end else begin dm.tblMatDavky.Filter:= ''; dm.tblMatDavky.Filtered:= true; dm.tblMatDavky.Filtered:= false; end; lblRecCount.Caption:= 'Počet dávek: ' + dm.tblMatDavky.RecordCount.ToString; ctrlMD.ItemCount:= dm.tblMatDavky.RecordCount; ctrlMD.Invalidate; // lblRecSelected.Caption:= 'Výběr: 0 / celkem 0 m'; // dm.FrontaOdznacitVse; if (frontaPlan.CanFocus) then frontaPlan.SetFocus; end; procedure TformMain.edtFiltrMDCisloKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key=VK_RETURN) then begin Key:= 0; edtFiltrMDCisloExit (Sender); end; end; procedure TformMain.edtFiltrMDDMExit (Sender: TObject); begin edtFiltrMDCisloExit (Sender); end; procedure TformMain.edtFiltrMDSilaExit(Sender: TObject); begin edtFiltrMDCisloExit (Sender); end; procedure TformMain.edtFiltrMDSilaKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key=VK_RETURN) then begin Key:= 0; edtFiltrMDCisloExit (Sender); end; end; procedure TformMain.edtFiltrMDDMKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key=VK_RETURN) then begin Key:= 0; edtFiltrMDCisloExit (Sender); end; end; procedure TformMain.edtFiltrMDNormaMatExit (Sender: TObject); begin edtFiltrMDCisloExit (Sender); end; procedure TformMain.edtFiltrMDNormaMatKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key=VK_RETURN) then begin Key:= 0; edtFiltrMDCisloExit (Sender); end; end; procedure TformMain.edtFiltrMDRegCisMatExit (Sender: TObject); begin edtFiltrMDCisloExit (Sender); end; procedure TformMain.edtFiltrMDRegCisMatKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key=VK_RETURN) then begin Key:= 0; edtFiltrMDRegCisMatExit (Sender); end; end; procedure TformMain.edtFiltrMDRozmerExit (Sender: TObject); begin edtFiltrMDCisloExit (Sender); end; procedure TformMain.edtFiltrMDRozmerKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key=VK_RETURN) then begin Key:= 0; edtFiltrMDCisloExit (Sender); end; end; procedure TformMain.edtFiltrNadobaEnter (Sender: TObject); begin edtFiltrNadoba.Text:= ''; calcTyp:= 1; end; procedure TformMain.edtFiltrNadobaExit (Sender: TObject); begin edtFiltrMaterialExit (Sender); end; procedure TformMain.edtFiltrNazevEnter (Sender: TObject); begin edtFiltrNazev.Text:= ''; calcTyp:= 2; end; procedure TformMain.edtFiltrNazevExit (Sender: TObject); begin edtFiltrNazev.Text:= edtFiltrNazev.Text.Trim; edtFiltrMaterialExit (Sender); end; procedure TformMain.edtFiltrNazevKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key=VK_RETURN) or (Key=VK_ESCAPE) then edtFiltrNazevExit (Sender); end; procedure TformMain.FormClose (Sender: TObject; var Action: TCloseAction); var lSQL: string; begin if (1=0) AND (datModul.idHlavPila>0) then begin lSQL:= 'UPDATE ' + tblRezPredpis + ' SET IDKmenZboMaterial=' + IfThen(datModul.idKmenMaterialPila=0, 'NULL', datModul.idKmenMaterialPila.ToString); lSQL:= lSQL + ', Sarze=N' + IfThen(datModul.pilaSarze='', 'ULL', datModul.pilaSarze.QuotedString); lSQL:= lSQL + ' WHERE ID=' + datModul.idHlavPila.ToString; Helios.ExecSQL(lSQL); end; // Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE LoginName=SUSER_SNAME() AND DatTisku IS NULL AND Tisk=0'); // Helios.ExecSQL('DELETE FROM ' + tblRezPredpis + ' WHERE ID NOT IN (SELECT IDHlavicka FROM ' + tblRezPredpisR + ' WHERE LoginName=SUSER_SNAME())'); if (dm.tblPila.RecordCount=0) then begin Helios.ExecSQL('UPDATE ' + tblRezPredpisPily + ' SET CisloDavky=NULL WHERE Aktivni=1 AND LoginName=SUSER_SNAME()'); if (datModul.idHlavPila>0) then Helios.ExecSQL('DELETE ' + tblRezPredpisPily + ' WHERE ID=' + datModul.idHlavPila.ToString); end; if (dm.tblFronta.Active) then dm.tblFronta.Close; if (dm.tblPila.Active) then dm.tblPila.Close; // FPila.Free; if (dm.tblPlan.Active) then dm.tblPlan.Close; // FPlan.Free; Action:= TCloseAction.caFree; end; procedure TformMain.pgCtrlChange (Sender: TObject); begin btnTiskStitku.Enabled:= (pgCtrl.ActivePage=shPila) and (dm.tblPila.RecordCount>0); if (pgCtrl.ActivePage=shPila) then begin btnAddPila.Enabled:= (edtFiltrPila.Text=''); btnDelPila.Enabled:= (dm.tblPila.RecordCount>0) and (edtFiltrPila.Text=''); btnDelPilaOne.Enabled:= (dm.tblPila.RecordCount>0) and (edtFiltrPila.Text=''); end; if (pgCtrl.ActivePage=shPlan) then begin btnAddPila.Enabled:= true; btnDelPila.Enabled:= (dm.tblPlan.RecordCount>0); btnDelPilaOne.Enabled:= (dm.tblPlan.RecordCount>0); end; end; procedure TformMain.pgCtrlMDChange (Sender: TObject); begin lblRecCount.Caption:= 'Počet: 0'; lblRecSelected.Caption:= 'Výběr: 0 / celkem 0 m'; if (pgCtrlMD.ActivePage=shMatDavky) then lblRecCount.Caption:= 'Počet dávek: ' + dm.tblMatDavky.RecordCount.ToString else lblRecCount.Caption:= 'Počet: ' + dm.tblFronta.RecordCount.ToString; btnAddPila.Enabled:= not(pgCtrlMD.ActivePage=shMatDavky); btnAddPila.Enabled:= btnAddPila.Enabled and (dm.tblFronta.RecordCount>0); end; procedure TformMain.FormShow (Sender: TObject); var lSQL: string; cnt, iId, iMD: integer; begin idPrac:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT ID FROM ' + tblCPrac + ' WHERE TRIM(Pracoviste)=N''30'' AND IDTabStrom=N''101001'''); lblRecCount.Caption:= 'Počet: 0'; lblRecSelected.Caption:= 'Výběr: 0 / celkem 0 m'; if (idDP>0) then begin datModul.idHlavPila:= idDP; if (helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 FROM ' + tblRezPredpis + ' WHERE ID=' + idDP.ToString + ' AND IDPlan IS NOT NULL')) then datModul.idHlavPlan:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDPlan FROM ' + tblRezPredpis + ' WHERE ID=' + idDP.ToString + ' AND IDPlan IS NOT NULL'); end; pgCtrl.ActivePage:= shPila; pgCtrlMD.ActivePage:= shMatDavky; // dm.NactiIkonuProButton (btnTiskStitku, 'XC_X_PRINT'); // dm.NactiIkonuProButton (btnObrazek, 'XC_X_PDFIN'); VymazUdajePilaNeboPlan; VymazUdajePilaNeboPlan (true); if (dm.tblPila<>nil) then begin if not(dm.tblPila.Active) then dm.tblPila.Open; dm.tblPila.Clear; // .EmptyDataSet; pilaDelkaSum:= 0; if not(dm.tblPlan.Active) then dm.tblPlan.Open; dm.tblPlan.Clear; // .EmptyDataSet; planDelkaSum:= 0; // FPila:= TList.Create; // FPlan:= TList.Create; NactiPracovnikyPily; { helUtils.waitStart(nil, 'Načítám rozpracovaná data...'); NactiRozpracovanePolozky; helUtils.waitEnd; } lSQL:= 'SELECT ID, IDPlanMD FROM ' + tblRezPredpis + ' WHERE Splneno=0 AND IDPlanMD IS NOT NULL AND JePlan=0 AND LoginName=SUSER_SNAME()'; // DeviceID=N' + datModul.devID.QuotedString; with Helios.OpenSQL(lSQL) do begin First; while not(EOF) do begin iID:= VarToStr(FieldByNameValues('ID')).ToInteger; iMD:= VarToStr(FieldByNameValues('IDPlanMD')).ToInteger; Helios.ExecSQL ('DELETE FROM ' + tblRezPredpisR + ' WHERE IDHlavicka=' + iID.ToString + ' AND IDPlanMD=' + iMD.ToString); Helios.ExecSQL ('DELETE FROM ' + tblRezPredpis + ' WHERE ID=' + iID.ToString + ' AND IDPlanMD=' + iMD.ToString); Helios.ExecSQL ('UPDATE ' + tblMatDavkyR + ' SET NaPile=0 WHERE IDHlava=' + iMD.ToString); Helios.ExecSQL ('UPDATE ' + tblMatDavkyH + ' SET NaPile=0 WHERE ID=' + iMD.ToString); Next; end; end; Helios.ExecSQL('SELECT 14 AS DebugStep'); btnKonecDavky.Enabled:= false; // musim nejdriv naskenovat material dm.NactiMaterialoveDavky (self); Helios.ExecSQL('SELECT 15 AS DebugStep'); ctrlMD.ItemCount:= dm.tblMatDavky.RecordCount; dm.NactiFrontu (idPrac, self); Helios.ExecSQL('SELECT 16 AS DebugStep'); ctrlFronta.ItemCount:= dm.tblFronta.RecordCount; digitTimer.Enabled:= true; timerPila:= 0; dtFiltrMDDatum.Date:= 0; dtFiltrMDDatum.Format:= ' '; end; if (cbZamest.CanFocus) then cbZamest.SetFocus; end; procedure TformMain.frontaPilaAfterDrawItems (ACanvas: TCanvas; ARect: TRect); begin // FPila.Count:= frontaPila.ItemCount; end; procedure TformMain.frontaPilaBeforeDrawItem (AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState); var ks, delka: Extended; idVPr: integer; lSQL, sz, rc: string; uhel: Extended; function NapoctiDelkuPila (AIndex: integer): Extended; var ii, idx: integer; begin result:= 0; dm.tblPila.DisableControls; ii:= dm.tblPila.RecNo; for idx:=1 to AIndex+1 do begin dm.tblPila.RecNo:= idx; result:= Result + dm.tblPila.FieldByName('colKs').AsInteger * dm.tblPila.FieldByName('colDelka').AsExtended; end; dm.tblPila.RecNo:= ii; dm.tblPila.EnableControls; end; begin { // pokud je povoleno, neni videt vyber polozky v seznamu // Nastavení barvy pera pro rámeček ACanvas.Pen.Color:= clBlack; ACanvas.Pen.Width:= 1; // Šířka rámečku // Nakreslení rámečku kolem položky ACanvas.Rectangle(ARect); } dm.tblPila.RecNo:= AIndex + 1; // AIndex zero-based ks:= dm.tblPila.FieldByName('colKs').AsExtended; delka:= dm.tblPila.FieldByName('colDelka').AsExtended; pilaDelkaSum:= NapoctiDelkuPila (AIndex); lblPila1ItemDeleni.Caption:= IfThen(ks>0, ks.ToString + ' x ' + delka.ToString + ' mm ', ''); lblPila1ItemNadoba.Caption:= VarToStr(dm.tblPila.FieldByName('colNadoba').Value).Trim; lblPila1ItemRadaPrikaz.Caption:= VarToStr(dm.tblPila.FieldByName('colRadaPrikaz').Value).Trim; lblPilaDelkaSum.Caption:= pilaDelkaSum.ToString + ' mm'; if (dm.tblPila.FieldByName('colPovoleno').AsBoolean) then lblPila1ItemDeleni.Font.Style:= lblPila1ItemDeleni.Font.Style - [fsStrikeOut] else lblPila1ItemDeleni.Font.Style:= lblPila1ItemDeleni.Font.Style + [fsStrikeOut]; lblPozicePilaFronta.Caption:= dm.tblPila.FieldByName('colPozice').AsString; lblRezatUhelPila.Caption:= ''; sz:= VarToStr(dm.tblPila.FieldByName('colSZPrikaz').Value).Trim; rc:= VarToStr(dm.tblPila.FieldByName('colRegCisPrikaz').Value).Trim; if (sz<>'') and (rc<>'') then begin lSQL:= 'SELECT TOP(1) Uhel FROM dbo.hvw_ADE_INSERT_VYROBA WHERE SkupZbo=N' + sz.QuotedString + ' AND RegCis=N' + rc.QuotedString + ' AND LastRec=1 AND StavPolozky=N''50'''; uhel:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); if (uhel>1) then lblRezatUhelPila.Caption:= 'úhel ' + uhel.ToString; end; lblRegCisPrikaz2.Caption:= dm.tblPila.FieldByName('colRegCisPrikaz').AsString; lblPila1ItemNadoba.Font.Style:= lblPila1ItemDeleni.Font.Style; lblPila1ItemRadaPrikaz.Font.Style:= lblPila1ItemDeleni.Font.Style; lblPilaDelkaSum.Font.Style:= lblPila1ItemDeleni.Font.Style; end; procedure TformMain.frontaPilaItemClick (Sender: TObject); var i, idKZ: integer; lSQL, czbo: string; jeTiskAkt: boolean; begin btnTiskStitku.Enabled:= false; btnTiskBezEvidence.Enabled:= false; if (edtFiltrPila.Text='') then begin Helios.Error(#1'Nejdřív naskenujte MATERIÁL !'); Exit; end; if (pilaReqSN) and (lblPila1Sarze.Caption='') then begin Helios.Error(#1'Nelze pokračovat, naskenovaný materiál požaduje ŠARŽI !'#1); end else begin i:= frontaPila.ItemIndex + 1; // zero based dm.tblPila.RecNo:= i; czbo:= dm.tblPila.FieldByName('colCisloZboziMat').AsString; idKZ:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblKZ + ' WHERE CisloZbozi=N' + czbo.QuotedString); if (lblPila1RegCis.Caption='') and (dm.tblPila.RecordCount>0) then begin with Helios.OpenSQL('SELECT RegCis, Nazev1 FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString) do if (RecordCount=1) then begin lblPila1RegCis.Caption:= VarToStr(FieldByNameValues('RegCis')); lSQL:= 'SELECT k.Nazev1 + N'' '' + ISNULL(ke._Rozmer, N'''') + N'' / '' + ISNULL(ke._S1_X, N'''') + N'' '' + ISNULL(ke._JakostMaterialu, N'''') FROM ' + tblKZ; lSQL:= lSQL + ' k LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) WHERE k.ID=' + idKZ.ToString; lblPila1Nazev1.Caption:= helUtils.getHeliosStrVal(Helios, '', lSQL); end; end; btnDelPilaOne.Enabled:= (dm.tblPila.RecordCount>0); btnDelPila.Enabled:= btnDelPilaOne.Enabled; if (edtFiltrPila.Text<>'') then begin materialOK:= (czbo=datModul.pilaSZ+datModul.pilaRC); materialOK:= materialOK or dm.NaskenovanyMaterialJeOK (datModul.idKmenMaterialPila); if not(materialOK) then Helios.Error(#1'Vybraný/naskenovaný materiál neodpovídá požadavku.'#1) else begin btnTiskBezEvidence.Enabled:= true; dm.tblPila.RecNo:= frontaPila.ItemIndex + 1; if (dm.tblPila.FieldByName('colPovoleno').AsBoolean) then begin i:= dm.PocetPovolenychPredeMnou (dm.tblPila); btnTiskStitku.Enabled:= (i=0); end; end; end; end; end; procedure TformMain.frontaPlanAfterDrawItems (ACanvas: TCanvas; ARect: TRect); begin // FPlan.Count:= frontaPlan.ItemCount; end; procedure TformMain.frontaPlanBeforeDrawItem (AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState); var ks, delka: Extended; lSQL, sz, rc: string; uhel: Extended; function NapoctiDelkuPlan (AIndex: integer): Extended; var ii, idx: integer; begin result:= 0; dm.tblPlan.DisableControls; ii:= dm.tblPlan.RecNo; for idx:=1 to AIndex+1 do begin dm.tblPlan.RecNo:= idx; result:= Result + dm.tblPlan.FieldByName('colKs').AsInteger * dm.tblPlan.FieldByName('colDelka').AsExtended; end; dm.tblPlan.RecNo:= ii; dm.tblPlan.EnableControls; end; begin dm.tblPlan.RecNo:= AIndex + 1; // AIndex zero-based ks:= dm.tblPlan.FieldByName('colKs').AsExtended; delka:= dm.tblPlan.FieldByName('colDelka').AsExtended; planDelkaSum:= NapoctiDelkuPlan (AIndex); lblRezatUhelPlan.Caption:= ''; sz:= VarToStr(dm.tblPlan.FieldByName('colSZPrikaz').Value).Trim; rc:= VarToStr(dm.tblPlan.FieldByName('colRegCisPrikaz').Value).Trim; if (sz<>'') and (rc<>'') then begin lSQL:= 'SELECT TOP(1) Uhel FROM dbo.hvw_ADE_INSERT_VYROBA WHERE SkupZbo=N' + sz.QuotedString + ' AND RegCis=N' + rc.QuotedString + ' AND LastRec=1 AND StavPolozky=N''50'''; uhel:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); if (uhel>1) then lblRezatUhelPlan.Caption:= 'úhel ' + uhel.ToString; end; lblPlanItemDeleni.Caption:= IfThen(ks>0, ks.ToString + ' x ' + delka.ToString + ' mm ', ''); lblPlanItemNadoba.Caption:= VarToStr(dm.tblPlan.FieldByName('colNadoba').Value).Trim; lblPlanItemRadaPrikaz.Caption:= VarToStr(dm.tblPlan.FieldByName('colRadaPrikaz').Value).Trim; lblPlanDelkaSum.Caption:= planDelkaSum.ToString + ' mm'; end; procedure TformMain.Label4MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if (ssShift in Shift) then begin ShowMessage('DeviceID: ' + datModul.devID); if (ssCtrl in Shift) then Clipboard.AsText:= datModul.devID; end; end; procedure TformMain.lblMaterialSortClick (Sender: TObject); begin dm.tblFronta.IndexFieldNames:= 'colRegCis,colNadoba'; dm.tblFronta.First; ctrlFronta.Invalidate; end; procedure TformMain.lblMDCisloZboClick(Sender: TObject); begin if (ctrlMD.ItemCount=1) then ctrlMDItemClick (Sender); end; procedure TformMain.lblNadobaSortClick (Sender: TObject); begin dm.tblFronta.IndexFieldNames:= 'colNadoba,colRegCis'; dm.tblFronta.First; ctrlFronta.Invalidate; end; procedure TformMain.lblPlanItemDeleniClick (Sender: TObject); begin btnDelPilaOne.Enabled:= (dm.tblPlan.RecordCount>0); end; end.