unit frmOdvTavby; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, System.StrUtils, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, RzEdit, TBPackageU, ddPlugin_TLB, Vcl.ExtCtrls, Vcl.ComCtrls, RzDTP, Data.DB, MemDS, VirtualTable, Vcl.Grids, Vcl.DBGrids, RzDBGrid; const tblTavby = '[dbo].[_hdc_TabTavby]'; tblOdlitky = '[dbo].[_hdc_TabOdlitky]'; tblDavky = '[dbo].[_hdc_TabDavky]'; tblDavkyDU = '[dbo].[_hdc_TabDavkyDruhUziv]'; type TcfgVosk = record sklVosk, sklObal, radaVPrVosk: string; end; TOperace = record id, idPrikaz, idPrac: integer; bc: string; ksZive, ksPozad, ksReal, ksOdv, ksZmetIO, ksZmetOpr, ksZmetIOKdy, ksZmetNeopr: Extended; {$IF CompilerVersion>=34} // Sydney a vys class operator Initialize(out Dest: TOperace); {$ENDIF} end; TPrikaz = record id, idKZ, stav: integer; sz, regC, sklad: string; ksZive: Extended; mamP30: boolean; {$IF CompilerVersion>=34} // Sydney a vys class operator Initialize(out Dest: TPrikaz); {$ENDIF} end; TformOdvTavby = class(TForm) btnOK: TButton; btnStorno: TButton; edtOpTavba: TLabeledEdit; selOpTavba: TButtonedEdit; edtTavba: TLabeledEdit; selTavba: TButtonedEdit; edtPocetStr: TRzNumericEdit; Label1: TLabel; lblVyrOp: TLabel; lblPocetStr: TLabel; pgCtrl: TPageControl; shTavba: TTabSheet; shVibrovani: TTabSheet; edtFormir: TLabeledEdit; selFormir: TButtonedEdit; edtOpVibr: TLabeledEdit; selOpVibr: TButtonedEdit; edtTavbaV: TLabeledEdit; selTavbaV: TButtonedEdit; edtVibrator: TLabeledEdit; selVibrator: TButtonedEdit; lblPopis: TLabel; lblPrikaz: TLabel; Label3: TLabel; edtStrCelk: TRzNumericEdit; lblKsStrom: TLabel; edtStrZmetky: TRzNumericEdit; Label4: TLabel; Label2: TLabel; lblZapisDat: TLabel; lblVibrator: TLabel; lblFormir: TLabel; lblLidiZTavby: TLabel; lblLidiZTavby2: TLabel; shOdvStr: TTabSheet; edtOpStr: TLabeledEdit; selOpStr: TButtonedEdit; edtZamStr: TLabeledEdit; selZamStr: TButtonedEdit; edtStrStr: TRzNumericEdit; Label5: TLabel; Label6: TLabel; lblZamest: TLabel; lblStromKs: TLabel; Label7: TLabel; edtDavka: TEdit; selDavka: TButtonedEdit; Label8: TLabel; edtDavkaStr: TEdit; selDavkaStr: TButtonedEdit; lblOperace: TLabel; shPrevodVosk: TTabSheet; edtVoskPrikaz: TEdit; selVoskPrikaz: TButtonedEdit; Label10: TLabel; Label11: TLabel; edtVoskStr: TRzNumericEdit; datVoskDatum: TRzDateTimePicker; Label9: TLabel; lblVoskDavka: TLabel; lblVoskZbyva: TLabel; btnOKNew: TButton; shDavkaObec: TTabSheet; Label12: TLabel; edtPrikazObec: TEdit; selPrikazObec: TButtonedEdit; edtStrObec: TRzNumericEdit; Label14: TLabel; datDavkaObec: TRzDateTimePicker; Label15: TLabel; edtDavkaObec: TEdit; selDavkaObec: TButtonedEdit; lblObecZbyva: TLabel; cbMJObec: TComboBox; lblStrDavka: TLabel; gbEvidPrace: TGroupBox; grdEvidPrace: TRzDBGrid; vTab: TVirtualTable; vDs: TDataSource; vTabcolDatum: TStringField; vTabcolAutor: TStringField; vTabcolMnoz: TFloatField; vTabcolMJ: TStringField; shP42: TTabSheet; Label13: TLabel; edtOperP42: TEdit; selOperP42: TButtonedEdit; Label16: TLabel; edtKsP42: TRzNumericEdit; Label17: TLabel; edtDavkaObr: TEdit; selDavkaObr: TButtonedEdit; lblOperaceP42: TLabel; lblDavkaObr: TLabel; selZamP42: TButtonedEdit; Label18: TLabel; edtZamP42: TRzNumericEdit; lblZamP42: TLabel; Label19: TLabel; edtStrZmetky2: TRzNumericEdit; cbZmetky: TCheckBox; cbStrNenalite: TCheckBox; cbZmetky2: TCheckBox; edtStrZmetky3: TRzNumericEdit; Label20: TLabel; procedure FormShow(Sender: TObject); procedure selTavbaClick(Sender: TObject); procedure selOpTavbaClick(Sender: TObject); procedure selFormirClick(Sender: TObject); procedure edtFormirExit(Sender: TObject); procedure edtVibratorExit(Sender: TObject); procedure selVibratorClick(Sender: TObject); procedure btnStornoClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure btnOKClick(Sender: TObject); procedure edtTavbaVExit(Sender: TObject); procedure edtTavbaExit(Sender: TObject); procedure selOpVibrClick(Sender: TObject); procedure selTavbaVClick(Sender: TObject); procedure edtOpTavbaExit(Sender: TObject); procedure edtOpVibrExit(Sender: TObject); procedure edtPocetStrExit(Sender: TObject); procedure edtPocetStrChange(Sender: TObject); procedure edtZamStrExit(Sender: TObject); procedure edtOpStrExit(Sender: TObject); procedure selOpStrClick(Sender: TObject); procedure selDavkaClick(Sender: TObject); procedure edtDavkaExit(Sender: TObject); procedure selDavkaStrClick(Sender: TObject); procedure edtDavkaStrExit(Sender: TObject); procedure selZamStrClick(Sender: TObject); procedure selVoskPrikazClick(Sender: TObject); procedure edtVoskPrikazExit(Sender: TObject); procedure edtVoskStrExit(Sender: TObject); procedure btnOKNewClick(Sender: TObject); procedure selPrikazObecClick(Sender: TObject); procedure edtPrikazObecExit(Sender: TObject); procedure selDavkaObecClick(Sender: TObject); procedure edtOperP42Exit(Sender: TObject); procedure selDavkaObrClick(Sender: TObject); procedure selOperP42Click(Sender: TObject); procedure selZamP42Click(Sender: TObject); procedure edtZamP42Exit(Sender: TObject); procedure selZamP42Exit(Sender: TObject); procedure FormResize(Sender: TObject); private function TestMamNaPrevod(const sklFrom: string): boolean; function VyrPrikazMaOperaciPracoviste(const idVPr: Integer; prac: string): boolean; function getTextDruhDavky(const idD: integer): string; procedure NactiPrikaz; safecall; procedure NactiTavbu(const idTavby: integer); safecall; procedure ZjistiVOp(bc: string; const nactiVP: boolean); safecall; function getParamOperace(const idVOp: integer; const param: string; const defVal: string=''): string; overload; function getParamOperace(const idVOp: integer; const param: string; const defVal: Integer=-999999): integer; overload; function getParamOperace(const idVOp: integer; const param: string; const defVal: Extended=-999999): Extended; overload; public Helios: IHelios; typ: integer; druhDavky: integer; jeTest: Boolean; rada: string; end; var formOdvTavby: TformOdvTavby; idVPr, idVPrV, idVOp, idDavka, idDavkaRodic, cDavky: integer; oVar, oVar2: OleVariant; bidTavby, bidDavky: integer; stred, rc, davkaMJ, sklFrom, sklTo, pozn, prac: string; btnNew, tavbaCalamari, opakovanaTavba: boolean; ksStr, ksZive: Extended; prik: TPrikaz; oper: TOperace; mnP31max: Extended; implementation uses System.DateUtils, System.AnsiStrings, helUtils; {$R *.dfm} {$IF CompilerVersion>=34} // Sydney a vys class operator TOperace.Initialize (out Dest: TOperace); begin Dest.id:= 0; Dest.idPrikaz:= 0; Dest.idPrac:= 0; Dest.bc:= ''; Dest.ksZive:= 0; Dest.ksPozad:= 0; Dest.ksReal:= 0; Dest.ksOdv:= 0; Dest.ksZmetIO:= 0; Dest.ksZmetOpr:= 0; Dest.ksZmetIOKdy:= 0; Dest.ksZmetNeopr:= 0; end; class operator TPrikaz.Initialize (out Dest: TPrikaz); begin Dest.id:= 0; Dest.idKZ:= 0; Dest.stav:= 10; Dest.sz:= ''; Dest.regC:= ''; Dest.sklad:= ''; Dest.ksZive:= 0; Dest.mamP30:= false; end; {$ENDIF} function TformOdvTavby.getParamOperace (const idVOp: integer; const param: string; const defVal: string=''): string; var lSQL: string; begin result:= defVal; if (idVOp>0) and (param<>'') then begin lSQL:= 'SELECT TOP(1) FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND (ID=' + idVOp.ToString + ' OR ID1=' + idVOp.ToString + ')'; lSQL:= lSQL.Replace('', param); result:= helUtils.getHeliosStrVal(Helios, defVal, lSQL); end; end; function TformOdvTavby.getParamOperace (const idVOp: integer; const param: string; const defVal: integer=-999999): integer; var lSQL: string; begin result:= defVal; if (idVOp>0) and (param<>'') then begin lSQL:= 'SELECT TOP(1) FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND (ID=' + idVOp.ToString + ' OR ID1=' + idVOp.ToString + ')'; lSQL:= lSQL.Replace('', param); result:= helUtils.getHeliosIntVal(Helios, defVal, lSQL); end; end; function TformOdvTavby.getParamOperace (const idVOp: integer; const param: string; const defVal: Extended=-999999): Extended; var lSQL: string; begin result:= defVal; if (idVOp>0) and (param<>'') then begin lSQL:= 'SELECT TOP(1) FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND (ID=' + idVOp.ToString + ' OR ID1=' + idVOp.ToString + ')'; { if (param='kusy_pozadovane') then lSQL:= lSQL.Replace('', 'CONVERT(numeric(19,6), CASE WHEN Kusy_nepotrebne>kusy_zad THEN 0.0 ELSE kusy_zad-kusy_nepotrebne END)') else } lSQL:= lSQL.Replace('', param); result:= helUtils.getHeliosFloatVal(Helios, defVal, lSQL); end; end; function TformOdvTavby.getTextDruhDavky (const idD: Integer): string; var x: integer; begin result:= ''; if (idD>0) then begin x:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT DruhDavky FROM ' + tblDavky + ' WHERE ID=' + idD.ToString); case x of 1: result:= 'VOSK'; 2: result:= 'OBALOVNA'; 3: result:= 'TAVÍRNA'; 4: result:= 'KONEČNÁ'; 5: result:= 'OBECNÁ'; 6: result:= 'OBROBNA'; end; end; end; function TformOdvTavby.VyrPrikazMaOperaciPracoviste (const idVPr: Integer; prac: string): boolean; var lSQL: string; begin result:= false; prac:= Trim(prac); if (idVPr>0) and (prac<>'') then begin lSQL:= 'SELECT p.ID FROM ' + tblPrPost + ' p INNER JOIN ' + tblCPrac + ' pr ON (pr.ID=p.pracoviste) WHERE p.IDPrikaz=' + idVPr.ToString; lSQL:= lSQL + ' AND pr.Blokovano=0 AND pr.Pracoviste=N' + QuotedStr(prac); with Helios.OpenSQL(lSQL) do if (RecordCount>0) then result:= true; end; end; function TformOdvTavby.TestMamNaPrevod(const sklFrom: string): boolean; var lSQL: string; ksSkl: Extended; begin result:= false; if (idVPr>0) and (sklFrom<>'') then begin rc:= helUtils.getHeliosStrVal(Helios, '', 'SELECT k.RegCis FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.Id=p.IdTabKmen) WHERE p.ID=' + idVPr.ToString); ksStr:= 0; ksSkl:= 0; try lSQL:= 'SELECT CASE WHEN ISNULL(o.MamMatecniOdlitek,0)=1 THEN ISNULL(o1.KSnaStrom,0) ELSE ISNULL(o.KSnaStrom,0) END FROM ' + tblOdlitky; lSQL:= lSQL + ' o LEFT JOIN ' + tblOdlitky + ' o1 ON (o1.Odlitek=o.MatecniOdlitek) WHERE o.Odlitek=N' + QuotedStr(rc); ksStr:= helUtils.getHeliosIntVal(Helios, 0, lSQL); lSQL:= 'SELECT s.Mnozstvi FROM ' + tblSS + ' s INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) WHERE k.SkupZbo=N''P12'' AND s.IDSklad=N' + QuotedStr(sklFrom); lSQL:= lSQL + ' AND k.RegCis=N' + QuotedStr(rc); ksSkl:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); except end; if (ksSkl>=edtVoskStr.Value) then result:= true else Helios.Error(#1'Na skladě Vosk/modely nemáte dost kusů P12 pro převod.'#1); end; end; procedure TformOdvTavby.btnOKClick (Sender: TObject); var lSQL, radaVPr: string; canCont: boolean; begin canCont:= true; davkaMJ:= ''; edtFormir.Text:= Trim(edtFormir.Text); edtVibrator.Text:= Trim(edtVibrator.Text); edtTavba.Text:= Trim(edtTavba.Text); edtTavbaV.Text:= Trim(edtTavbaV.Text); edtDavka.Text:= Trim(edtDavka.Text); edtDavkaStr.Text:= Trim(edtDavkaStr.Text); lblZapisDat.Visible:= true; Self.Repaint; btnOK.Enabled:= false; btnStorno.Enabled:= false; if (idVPr>0) then begin radaVPr:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Rada FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); if (rada='') then davkaMJ:= ''; end; // TAVBA if (pgCtrl.ActivePageIndex=shTavba.PageIndex) and (idVPr>0) then begin canCont:= true; if (LeftStr(edtTavba.Text,1).ToUpper<>'T') then begin canCont:= false; Helios.Error('Označení tavby nezačíná písmenem T, vyberte tavbu z číselníku.'); end; if (canCont) then begin lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabEvidenceTavby'') IS NOT NULL DELETE FROM dbo._temp_TabEvidenceTavby WHERE Autor=SUSER_SNAME()' + CRLF; lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabEvidenceTavby'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabEvidenceTavby) DROP TABLE '; lSQL:= lSQL + 'dbo._temp_TabEvidenceTavby'; Helios.ExecSQL(lSQL); lSQL:= 'IF OBJECT_ID(N''tempdb..#TabEvidenceTavby'') IS NOT NULL DROP TABLE #TabEvidenceTavby' + CRLF + 'CREATE TABLE #TabEvidenceTavby (BarCodeOperace NVARCHAR(15) NOT NULL'; lSQL:= lSQL + ', CisloTavby NVARCHAR(11) NOT NULL, Opakovana BIT DEFAULT 0, Formir INT NULL, PocetStromu SMALLINT NOT NULL, JeCalamari BIT DEFAULT 0, Autor NVARCHAR(80) DEFAULT SUSER_SNAME())' + CRLF; lSQL:= lSQL + 'INSERT #TabEvidenceTavby (BarCodeOperace, CisloTavby, Formir, PocetStromu, JeCalamari, Opakovana) SELECT N' + QuotedStr(edtOpTavba.Text) + ', N' + QuotedStr(edtTavba.Text); lSQL:= lSQL + ', ' + IfThen(edtFormir.Text='', 'NULL', edtFormir.Text) + ', ' + StringReplace(edtPocetStr.Value.ToString, ',', '.', [rfReplaceAll]); lSQL:= lSQL + ', ' + IfThen(tavbaCalamari, '1', '0') + ', ' + IfThen(opakovanaTavba, '1', '0') + CRLF; if (jeTest) then begin lSQL:= StringReplace(lSQL, '#TabEvi', 'dbo._temp_TabEvi', [rfReplaceAll]); lSQL:= StringReplace(lSQL, 'tempdb..', '', [rfReplaceAll]); end; Helios.ExecSQL(lSQL); if not(jeTest) then begin lSQL:= 'IF OBJECT_ID(N''dbo.ep_Tavirna_EvidenceTavby'') IS NOT NULL EXEC dbo.ep_Tavirna_EvidenceTavby'; try Helios.ExecSQL(lSQL); except on E:Exception do Helios.Error(#1 + E.Message + #1); end; end; if (btnNew) then begin NactiPrikaz; lblLidiZTavby.Caption:= ''; edtPocetStr.Value:= 0; lblPocetStr.Caption:= ''; lblVyrOp.Caption:= ''; lblKsStrom.Caption:= ''; edtTavba.Text:= ''; edtTavba.SetFocus; end; end; end; // VIBROVANI if (pgCtrl.ActivePageIndex=shVibrovani.PageIndex) and (idVPr>0) and (edtTavbaV.Text<>'') then begin canCont:= true; if (LeftStr(edtTavbaV.Text,1).ToUpper<>'T') then begin canCont:= false; Helios.Error('Označení tavby nezačíná písmenem T, vyberte tabvu z číselníku.'); if (edtTavbaV.CanFocus) then edtTavbaV.SetFocus; end; if (canCont) then if (edtVibrator.Text.Trim='') then begin canCont:= false; Helios.Error('Musíte vybrat zaměstnance, který práci provedl.'); if (edtVibrator.CanFocus) then edtVibrator.SetFocus; end; if (canCont) then if (edtDavka.Text.Trim='') then begin canCont:= false; Helios.Error('Musíte vybrat/založit výrobní Dávku.'); if (edtDavka.CanFocus) then edtDavka.SetFocus; end; if (canCont) then begin if (cbZmetky.Checked or cbStrNenalite.Checked) and (edtStrZmetky.Value=0) then begin canCont:= false; Helios.Error('Pokud evidujete zmetky, musíte uvést jejich počet.'); if (edtStrZmetky.CanFocus) then edtStrZmetky.SetFocus; end; if (canCont) and (cbZmetky.Checked) and (edtStrZmetky2.Value=0) then begin canCont:= false; Helios.Error('Pokud evidujete zmetky, musíte uvést jejich počet.'); if (edtStrZmetky2.CanFocus) then edtStrZmetky2.SetFocus; end; end; if (canCont) then begin davkaMJ:= 'STR'; lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabEvidenceVibrovani'') IS NOT NULL DELETE FROM dbo._temp_TabEvidenceVibrovani WHERE Autor=SUSER_SNAME()' + CRLF; lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabEvidenceVibrovani'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabEvidenceVibrovani) DROP TABLE '; lSQL:= lSQL + 'dbo._temp_TabEvidenceVibrovani'; Helios.ExecSQL(lSQL); lSQL:= 'IF OBJECT_ID(N''tempdb..#TabEvidenceVibrovani'') IS NOT NULL DROP TABLE #TabEvidenceVibrovani' + CRLF + 'CREATE TABLE #TabEvidenceVibrovani (BarCodeOperace NVARCHAR(15) NOT NULL'; lSQL:= lSQL + ', CisloTavby NVARCHAR(11) NOT NULL, Vibrovac INT, PocetStromuOK SMALLINT DEFAULT 0, PocetStromuZmetky SMALLINT DEFAULT 0, cbObalovna BIT DEFAULT 0, IDDavka INT'; lSQL:= lSQL + ', cbStrNenalite BIT DEFAULT 0, PocetStromuZmetky2 SMALLINT DEFAULT 0, cbObalovna2 BIT DEFAULT 0, PocetStromuZmetky3 SMALLINT DEFAULT 0, cbObalovna3 BIT DEFAULT 0'; lSQL:= lSQL + ', Autor NVARCHAR(80) DEFAULT SUSER_SNAME(), IDPrikaz INT)' + CRLF; lSQL:= lSQL + 'INSERT #TabEvidenceVibrovani (BarCodeOperace, CisloTavby, Vibrovac, PocetStromuOK, PocetStromuZmetky, cbObalovna, cbStrNenalite, PocetStromuZmetky2'; lSQL:= lSQL + ', cbObalovna2, PocetStromuZmetky3, IDPrikaz)'; lSQL:= lSQL + ' SELECT N' + edtOpVibr.Text.QuotedString + ', N' + edtTavbaV.Text.QuotedString + ', ' + IfThen(edtVibrator.Text='', 'NULL', edtVibrator.Text); lSQL:= lSQL + ', ' + FloatToStr(edtStrCelk.Value-edtStrZmetky.Value-edtStrZmetky2.Value).Replace(',', '.'); lSQL:= lSQL + ', ' + edtStrZmetky.Value.ToString.Replace(',', '.') + ', ' + IfThen(cbZmetky.Checked, '1', '0') + ', ' + IfThen(cbStrNenalite.Checked, '1', '0'); lSQL:= lSQL + ', ' + edtStrZmetky2.Value.ToString.Replace(',', '.') + ', ' + IfThen(cbZmetky2.Checked, '1', '0'); lSQL:= lSQL + ', ' + edtStrZmetky3.Value.ToString.Replace(',', '.') + ', ' + idVPr.ToString + CRLF; if (jeTest) then begin lSQL:= lSQL.Replace('#TabEvi', 'dbo._temp_TabEvi', [rfReplaceAll]); lSQL:= lSQL.Replace('tempdb..', '', [rfReplaceAll]); end; Helios.ExecSQL(lSQL); if (idDavka>0) then begin lSQL:= 'UPDATE #TabEvidenceVibrovani SET IDDavka=' + idDavka.ToString + ' WHERE Autor=SUSER_SNAME()'; if (jeTest) then lSQL:= lSQL.Replace('#TabEvi', 'dbo._temp_TabEvi', [rfReplaceAll]); Helios.ExecSQL(lSQL); lSQL:= 'UPDATE ' + tblDavky + ' SET IDPrikaz=' + idVPr.ToString + ', MJ=N' + QuotedStr(davkaMJ) + ', Tavba=N' + QuotedStr(edtTavbaV.Text) + ', Mnozstvi='; lSQL:= lSQL + StringReplace(FloatToStr((edtStrCelk.Value-edtStrZmetky.Value-edtStrZmetky2.Value){*ksStr}), ',', '.', [rfReplaceAll]) + ' WHERE Uzavreno=0 AND ID=' + idDavka.ToString; Helios.ExecSQL(lSQL); end; if not(jeTest) then begin lSQL:= 'DECLARE @retVal INT=1; IF OBJECT_ID(N''dbo.ep_Tavirna_EvidenceVibrovani'') IS NOT NULL EXEC @retVal=dbo.ep_Tavirna_EvidenceVibrovani' + CRLF; lSQL:= lSQL + 'SELECT @retVal'; // lSQL:= lSQL + 'IF OBJECT_ID(N''tempdb..#TabExtKom'') IS NOT NULL SELECT CASE WHEN EXISTS(SELECT * FROM #TabExtKom) THEN 1 ELSE 0 END ELSE SELECT 0'; try with Helios.OpenSQL(lSQL) do if (RecordCount=1) then begin lSQL:= 'Typ=7 AND IDPomoc=' + edtOpVibr.Text.Replace('A', '').Replace('B', ''); if (VarToStr(FieldValues(0))='1') then if (helUtils.HeliosExistsTest(Helios, '_hdc_TabLog', lSQL)) then Helios.OpenBrowse(helUtils.getHeliosIntVal(Helios, 0, 'SELECT DPBID FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_HDCLog'''), lSQL) else Helios.Error(#1'Nespecifikovaná chyba při evidenci Vibrování, operaci zaevidujte ručně.'#1); end; except on E:Exception do Helios.Error(#1 + E.Message + #1); end; end; if (btnNew) then begin NactiPrikaz; lblLidiZTavby2.Caption:= ''; edtStrCelk.Value:= 0; edtStrZmetky.Value:= 0; edtStrZmetky2.Value:= 0; cbZmetky.Checked:= false; cbZmetky2.Checked:= false; edtTavbaV.Text:= ''; edtTavbaV.SetFocus; end; end; end; // TAVBA if (pgCtrl.ActivePageIndex=shOdvStr.PageIndex) and (idVPr>0) and (edtStrStr.Value>0) then begin lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabEvidenceOperStromky'') IS NOT NULL DELETE FROM dbo._temp_TabEvidenceOperStromky WHERE Autor=SUSER_SNAME()' + CRLF; lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabEvidenceOperStromky'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabEvidenceOperStromky) DROP TABLE '; lSQL:= lSQL + 'dbo._temp_TabEvidenceOperStromky'; Helios.ExecSQL(lSQL); lSQL:= 'IF OBJECT_ID(N''tempdb..#TabEvidenceOperStromky'') IS NOT NULL DROP TABLE #TabEvidenceOperStromky' + CRLF + 'CREATE TABLE #TabEvidenceOperStromky (BarCodeOperace NVARCHAR(15) NOT NULL'; lSQL:= lSQL + ', Zamestnanec INT, PocetStromuOK SMALLINT DEFAULT 0, PocetStromuZmetky SMALLINT DEFAULT 0, IDDavka INT, Autor NVARCHAR(80) DEFAULT SUSER_SNAME(),'; lSQL:= lSQL + ' Poznamka NVARCHAR(max) DEFAULT N'''')' + CRLF; lSQL:= lSQL + 'INSERT #TabEvidenceOperStromky (BarCodeOperace, Zamestnanec, PocetStromuOK, PocetStromuZmetky, Poznamka) SELECT N' + QuotedStr(edtOpStr.Text); lSQL:= lSQL + ', ' + IfThen(edtZamStr.Text='', 'NULL', edtZamStr.Text) + ', ' + StringReplace(FloatToStr(edtStrStr.Value), ',', '.', [rfReplaceAll]) + ', 0'; lSQL:= lSQL + ', N' + QuotedStr(pozn); if (jeTest) then begin lSQL:= StringReplace(lSQL, '#TabEvi', 'dbo._temp_TabEvi', [rfReplaceAll]); lSQL:= StringReplace(lSQL, 'tempdb..', '', [rfReplaceAll]); end; Helios.ExecSQL(lSQL); if (idDavka>0) then begin davkaMj:= 'STR'; lSQL:= 'UPDATE #TabEvidenceOperStromky SET IDDavka=' + idDavka.ToString + ' WHERE Autor=SUSER_SNAME()'; if (jeTest) then lSQL:= StringReplace(lSQL, '#TabEvi', 'dbo._temp_TabEvi', [rfReplaceAll]); Helios.ExecSQL(lSQL); lSQL:= 'UPDATE ' + tblDavky + ' SET IDPrikaz=' + idVPr.ToString + ', MJ=N' + QuotedStr(davkaMJ) + ', Mnozstvi='; lSQL:= lSQL + StringReplace(FloatToStr(edtStrStr.Value{*ksStr}),',','.',[rfReplaceAll]) + ' WHERE Uzavreno=0 AND ID=' + idDavka.ToString; Helios.ExecSQL(lSQL); end; if not(jeTest) then begin lSQL:= 'IF OBJECT_ID(N''dbo.ep_Tavirna_EvidenceOperStromky'') IS NOT NULL EXEC dbo.ep_Tavirna_EvidenceOperStromky'; try Helios.ExecSQL(lSQL); except on E:Exception do Helios.Error(#1 + E.Message + #1); end; end; if (btnNew) then begin NactiPrikaz; edtStrStr.Value:= 0; edtStrStr.SetFocus; end; edtDavkaStr.Text:= ''; idDavka:= 0; end; // VOSK NA OBALOVNU if (pgCtrl.ActivePageIndex=shPrevodVosk.PageIndex) and (idVPr>0) and (edtVoskStr.Value>0) and (1=0) then begin lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabPrevodVosk2Obal'') IS NOT NULL DELETE FROM dbo._temp_TabPrevodVosk2Obal WHERE Autor=SUSER_SNAME()' + CRLF; lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabPrevodVosk2Obal'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabPrevodVosk2Obal) DROP TABLE '; lSQL:= lSQL + 'dbo._temp_TabPrevodVosk2Obal'; Helios.ExecSQL(lSQL); lSQL:= 'IF OBJECT_ID(N''tempdb..#TabPrevodVosk2Obal'') IS NOT NULL DROP TABLE #TabPrevodVosk2Obal' + CRLF + 'CREATE TABLE #TabPrevodVosk2Obal (IDPrikaz INT NOT NULL'; lSQL:= lSQL + ', Pozice TINYINT DEFAULT 1, PocetStromu SMALLINT DEFAULT 0, DatPrevodu DATETIME, Autor NVARCHAR(80) DEFAULT SUSER_SNAME())' + CRLF; lSQL:= lSQL + 'INSERT #TabPrevodVosk2Obal (IDPrikaz, PocetStromu, DatPrevodu, Pozice) SELECT ' + idVPr.ToString + ', ' + StringReplace(FloatToStr(edtVoskStr.Value), ',', '.', [rfReplaceAll]); lSQL:= lSQL + ', CONVERT(datetime, N' + QuotedStr(FormatDateTime('dd.mm.yyyy hh:nn:ss', datVoskDatum.DateTime)) + ', 104), '; if (lblVoskDavka.Caption<>'') then lSQL:= lSQL + StringReplace(lblVoskDavka.Caption, 'Dávka č. ', '', [rfReplaceAll]) else lSQL:= lSQL + 'NULL'; if (jeTest) then begin lSQL:= StringReplace(lSQL, '#TabPrevodV', 'dbo._temp_TabPrevodV', [rfReplaceAll]); lSQL:= StringReplace(lSQL, 'tempdb..', '', [rfReplaceAll]); end; Helios.ExecSQL(lSQL); if not(jeTest) then begin lSQL:= 'IF OBJECT_ID(N''dbo.ep_Vosk_GenerujOdvodStromecku'') IS NOT NULL EXEC dbo.ep_Vosk_GenerujOdvodStromecku'; try Helios.ExecSQL(lSQL); { // lSQL:= 'IF OBJECT_ID(N''dbo.ep_Vosk_PrevodNaObalovnu'') IS NOT NULL EXEC dbo.ep_Vosk_PrevodNaObalovnu'; try Helios.ExecSQL(lSQL); idVPrV:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDPrikazVyssi FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); if (idVPrV>0) then begin lblZapisDat.Caption:= 'Tisk dokladů...'; // } { lSQL:= 'IF OBJECT_ID(N''dbo._temp_TiskPomoc'') IS NULL CREATE TABLE dbo._temp_TiskPomoc (ID INT IDENTITY(1,1) NOT NULL, IDPrikazNizsi INT, Pozice INT, '; lSQL:= lSQL + 'Mnozstvi NUMERIC(19,6), Autor NVARCHAR(80) DEFAULT SUSER_SNAME())'; Helios.ExecSQL(lSQL); lSQL:= 'INSERT dbo._temp_TiskPomoc (Mnozstvi, IDPrikazNizsi, Pozice) VALUES (' + StringReplace(FloatToStr(edtVoskStr.Value), ',', '.', [rfReplaceAll]) + ', '; lSQL:= lSQL + idVPr.ToString + ', ' + IfThen(lblVoskDavka.Caption='', '0', lblVoskDavka.Caption) + ')'; Helios.ExecSQL(lSQL); } { // Sleep(1000); Helios.PrintForm3(100097, 84, 'hvw_Davky.Pozice=' + cDavky.ToString + ' AND hvw_Davky.Rok=DATEPART(year,GETDATE()) AND hvw_Davky.IDPrikaz=' + idVPr.ToString); // } // Helios.ExecSQL('IF OBJECT_ID(N''dbo._temp_TiskPomoc'') IS NOT NULL DELETE FROM dbo._temp_TiskPomoc WHERE Autor=SUSER_SNAME()'); // Helios.ExecSQL('IF OBJECT_ID(N''dbo._temp_TiskPomoc'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TiskPomoc) DROP TABLE dbo._temp_TiskPomoc'); //// end; except on E:Exception do Helios.Error(#1 + E.Message + #1); end; end; end; // DAVKA OBECNA if (pgCtrl.ActivePageIndex=shDavkaObec.PageIndex) and (idVPr>0) AND (edtStrObec.Value>0) then begin lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabDavkaObecna'') IS NOT NULL DELETE FROM dbo._temp_TabDavkaObecna WHERE Autor=SUSER_SNAME()' + CRLF; lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabDavkaObecna'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabDavkaObecna) DROP TABLE '; lSQL:= lSQL + 'dbo._temp_TabDavkaObecna'; Helios.ExecSQL(lSQL); lSQL:= 'IF OBJECT_ID(N''tempdb..#TabDavkaObecna'') IS NOT NULL DROP TABLE #TabDavkaObecna' + CRLF + 'CREATE TABLE #TabDavkaObecna (IDPrikaz INT NOT NULL'; lSQL:= lSQL + ', IDDavka INT, MJ NVARCHAR(10), Pozice TINYINT DEFAULT 1, PocetStromu SMALLINT DEFAULT 0, DatPrevodu DATETIME, Autor NVARCHAR(80) DEFAULT SUSER_SNAME())' + CRLF; lSQL:= lSQL + 'INSERT #TabDavkaObecna (IDPrikaz, PocetStromu, DatPrevodu, IDDavka, MJ) SELECT ' + idVPr.ToString + ', ' + StringReplace(FloatToStr(edtStrObec.Value), ',', '.', [rfReplaceAll]); lSQL:= lSQL + ', CONVERT(datetime, N' + QuotedStr(FormatDateTime('dd.mm.yyyy hh:nn:ss', datVoskDatum.DateTime)) + ', 104), ' + idDavka.ToString + ', N'; lSQL:= lSQL + IfThen(cbMJObec.ItemIndex=-1,'ks', cbMJObec.Text); if (jeTest) then begin lSQL:= StringReplace(lSQL, '#TabDavkaObe', 'dbo._temp_TabDavkaObe', [rfReplaceAll]); lSQL:= StringReplace(lSQL, 'tempdb..', '', [rfReplaceAll]); end; Helios.ExecSQL(lSQL); if (idDavka>0) then begin lSQL:= 'UPDATE #TabDavkaObecna SET IDDavka=' + idDavka.ToString + ' WHERE Autor=SUSER_SNAME()'; if (jeTest) then lSQL:= StringReplace(lSQL, '#TabDav', 'dbo._temp_TabDav', [rfReplaceAll]); Helios.ExecSQL(lSQL); end; if not(jeTest) then begin lSQL:= 'IF OBJECT_ID(N''dbo.ep_Davky_ObecnyPrevod'') IS NOT NULL EXEC dbo.ep_Davky_ObecnyPrevod'; try Helios.ExecSQL(lSQL); except on E:Exception do Helios.Error(#1 + E.Message + #1); end; end; idDavka:= 0; edtDavkaObec.Text:= ''; end; // PREVOD P42/P43 -> OBROBNA if (pgCtrl.ActivePageIndex=shP42.PageIndex) and (idVOp>0) AND (edtKsP42.Value>0) then begin lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabPrevodKon2Obr'') IS NOT NULL DELETE FROM dbo._temp_TabPrevodKon2Obr WHERE Autor=SUSER_SNAME()' + CRLF; lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabPrevodKon2Obr'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabPrevodKon2Obr) DROP TABLE '; lSQL:= lSQL + 'dbo._temp_TabPrevodKon2Obr'; Helios.ExecSQL(lSQL); lSQL:= 'IF OBJECT_ID(N''tempdb..#TabPrevodKon2Obr'') IS NOT NULL DROP TABLE #TabPrevodKon2Obr' + CRLF + 'CREATE TABLE #TabPrevodKon2Obr (IDPrPostup INT NOT NULL'; lSQL:= lSQL + ', IDDavka INT NULL, MJ NVARCHAR(10) DEFAULT N''ks'', Pozice TINYINT DEFAULT 1, Mnozstvi SMALLINT DEFAULT 0, DatPrevodu DATETIME DEFAULT GETDATE()'; lSQL:= lSQL + ', CisZam INT, Autor NVARCHAR(80) DEFAULT SUSER_SNAME())' + CRLF; lSQL:= lSQL + 'INSERT #TabPrevodKon2Obr (IDPrPostup, Mnozstvi, CisZam) SELECT ' + idVOp.ToString + ', ' + StringReplace(FloatToStr(edtKsP42.Value), ',', '.', [rfReplaceAll]); lSQL:= lSQL + ', ' + edtZamP42.IntValue.ToString; if (jeTest) then begin lSQL:= StringReplace(lSQL, '#TabPrevodKon2Obr', 'dbo._temp_TabPrevodKon2Obr', [rfReplaceAll]); lSQL:= StringReplace(lSQL, 'tempdb..', '', [rfReplaceAll]); end; Helios.ExecSQL(lSQL); if (idDavka>0) then begin lSQL:= 'UPDATE #TabPrevodKon2Obr SET IDDavka=' + idDavka.ToString + ', MJ=N''ks'' WHERE Autor=SUSER_SNAME()'; if (jeTest) then lSQL:= StringReplace(lSQL, '#TabPrev', 'dbo._temp_TabPrev', [rfReplaceAll]); Helios.ExecSQL(lSQL); end; if not(jeTest) then begin lSQL:= 'IF OBJECT_ID(N''dbo.ep_Konecna_PrevodNaObrobnu'') IS NOT NULL EXEC dbo.ep_Konecna_PrevodNaObrobnu'; try Helios.ExecSQL(lSQL); except on E:Exception do Helios.Error(#1 + E.Message + #1); end; end; idDavka:= 0; edtDavkaObr.Text:= ''; end; lblZapisDat.Visible:= false; Self.Repaint; btnOK.Enabled:= true; btnStorno.Enabled:= true; if not(btnNew) and (canCont) then Close; btnNew:= false; end; procedure TformOdvTavby.btnOKNewClick(Sender: TObject); begin btnNew:= true; btnOKClick(Sender); end; procedure TformOdvTavby.btnStornoClick(Sender: TObject); begin Close; end; procedure TformOdvTavby.edtDavkaExit(Sender: TObject); var lSQL: string; begin lSQL:= ''; end; procedure TformOdvTavby.edtDavkaStrExit (Sender: TObject); var lSQL, rD, cD: string; begin if (idVPr>0) and (idDavka>0) then begin rD:= YearOf(Now).ToString; cD:= '1'; with Helios.OpenSQL('SELECT Rok, Cislo FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString) do begin rD:= VarToStr(FieldValues(0)); cD:= VarToStr(FieldValues(1)); end; lSQL:= 'SELECT COUNT(*) FROM ' + tblDavky + ' WHERE DruhDavky=4 AND Rok=' + rD + ' AND Cislo=' + cD + ' GROUP BY RegCis'; with Helios.OpenSQL(lSQL) do if (VarToStr(FieldValues(0))='1') then begin lSQL:= 'TabVyrCisPrikaz.IDPrikaz IN (SELECT ID FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi=' + idVPr.ToString + ')'; if Helios.Prenos2(bidVyrPrikVC, 'VyrCislo', '', oVar, oVar2, lSQL, 'Vyberte Tavby', True, True, False, 1) then pozn:= StringReplace(StringReplace(StringReplace(VarToStr(oVar), ',', '*', [rfReplaceAll]), 'N''', '', [rfReplaceAll]), '''', '', [rfReplaceAll]); lblStrDavka.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Rok FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString) + ' KONEČNÁ'; btnOK.SetFocus; end else begin Helios.Error(#1'Do jedné dávky KONEČNÁ nesmíte míchat víc druhů odlitků'#1); lblStrDavka.Caption:= ''; edtDavkaStr.Text:= ''; selDavkaStr.SetFocus; idDavka:= 0; end; end; end; procedure TformOdvTavby.edtFormirExit (Sender: TObject); begin edtFormir.Text:= StringReplace(Trim(edtFormir.Text), ' ', '', [rfReplaceAll]); edtFormir.Text:= helUtils.StripChars(edtFormir.Text, ['''', '"', '-', ';', ' ']); edtFormir.Text:= helUtils.RemoveWords(edtFormir.Text, ['null']); edtFormir.Text:= helUtils.RemoveAlphas(edtFormir.Text); if (edtFormir.Text<>'') then begin if (helUtils.getHeliosIntVal(Helios, -1, 'SELECT ID FROM ' + tblCZam + ' WHERE Cislo=' + edtFormir.Text)<0) then begin Helios.Error(#1'Osobní číslo zaměstnance nebylo nalezeno.'#1 + CRLF + edtFormir.Text); edtFormir.Text:= ''; lblFormir.Caption:= ''; edtFormir.SetFocus; end else begin edtFormir.Text:= StringOfChar('0', 6-Length(edtFormir.Text)) + edtFormir.Text; lblFormir.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT PrijmeniJmeno FROM ' + tblCZam + ' WHERE Cislo=' + edtFormir.Text); end; end; end; procedure TformOdvTavby.edtOperP42Exit (Sender: TObject); var lSQL, rVPr, sz, rc: string; ksZive, ksStrom: Extended; mon: TMonitor; jeP43: Boolean; begin btnOKNew.Enabled:= true; btnOK.Enabled:= true; self.Height:= 645; if not(vTab.Active) then vTab.Open; vTab.Clear; edtOperP42.Text:= StringReplace(Trim(edtOperP42.Text), ' ', '', [rfReplaceAll]); edtOperP42.Text:= helUtils.StripChars(edtOperP42.Text, ['''', '"', '-', ';', ' ']); ZjistiVOp(edtOperP42.Text, True); sz:= ''; rc:= ''; idVPr:= 0; pozn:= ''; lSQL:= 'SELECT k.SkupZbo, k.RegCis, vp.ID FROM ' + tblPrikaz + ' vp INNER JOIN ' + tblPrPost + ' p ON (p.IDPrikaz=vp.ID) INNER JOIN ' + tblKZ; lSQL:= lSQL + ' k ON (k.ID=vp.IDTabKmen) WHERE p.BarCode=N' + QuotedStr(edtOperP42.Text); with Helios.OpenSQL(lSQL) do if (RecordCount=1) then begin sz:= VarToStr(FieldValues(0)); rc:= VarToStr(FieldValues(1)); idVPr:= StrToInt(VarToStr(FieldValues(2))); pozn:= ''; // helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(VyrCislo, N''*'') FROM ' + tblPrikazVC + ' WHERE IDPrikaz=' + idVPr.ToString); end; lSQL:= 'SELECT CASE WHEN ISNULL(o.MamMatecniOdlitek,0)=1 THEN ISNULL(o1.KSnaStrom,0) ELSE ISNULL(o.KSnaStrom,0) END FROM ' + tblOdlitky; lSQL:= lSQL + ' o LEFT JOIN ' + tblOdlitky + ' o1 ON (o1.Odlitek=o.MatecniOdlitek) WHERE o.Odlitek=N' + QuotedStr(rc); ksStrom:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); jeP43:= false; if (sz='P43') then jeP43:= true; // btnOK.Top:= 535; // btnOKNew.Top:= 535; // btnStorno.Top:= 535; if (idVOp>0) then begin // idVOp:= helUtils.getHeliosIntVal(Helios, 'SELECT ID FROM ' + tblPrPost + ' WHERE Barcode=N' + QuotedStr(edtOpVibr.Text)); ksZive:= getParamOperace(idVOp, 'Kusy_zive', -999999); // A17209B lSQL:= 'SELECT mz.ID, mz.DatPorizeni, mz.Autor, mz.kusy_odv' + IfThen(ksStrom>0, '/' + ksStrom.ToString, '') + ', kz.MJEvidence FROM ' + tblPrPost; lSQL:= lSQL + ' pp INNER JOIN ' + tblMzdZm + ' mz ON (mz.DokladPrPostup=pp.Doklad AND mz.AltPrPostup=pp.Alt'; lSQL:= lSQL + ' AND mz.IDPrikaz=pp.IDPrikaz) INNER JOIN ' + tblPrikaz + ' p ON (p.ID=pp.IDPrikaz) INNER JOIN ' + tblKZ; lSQL:= lSQL + ' kz ON (kz.ID=p.IdTabKmen) WHERE pp.ID=' + idVOp.ToString + ' ORDER BY mz.DatPorizeni'; with Helios.OpenSQL(lSQL) do if (RecordCount>0) then begin self.Height:= 845; // btnOK.Top:= 600; // btnOKNew.Top:= 600; // btnStorno.Top:= 600; mon:= Screen.MonitorFromPoint(Mouse.CursorPos); self.Left:= mon.Left + ((mon.Width - self.Width) div 2); self.Top:= mon.Top + ((mon.Height - self.Height) div 2); First; while not(EOF) do begin vTab.Append; vTab.FieldByName('colDatum').AsString:= FormatDateTime('d.m.yyyy h:nn', StrToDateTime(VarToStr(FieldValues(1)))); vTab.FieldByName('colAutor').AsString:= VarToStr(FieldValues(2)); vTab.FieldByName('colMnoz').AsFloat:= StrToFloat(VarToStr(FieldValues(3))); vTab.FieldByName('colMJ').AsString:= 'ks'; // VarToStr(FieldValues(4)); vTab.Post; Next; end; end; if (ksZive=0) then begin btnOKNew.Enabled:= false; btnOK.Enabled:= false; Helios.Error(#1'Na operaci nezbývají žádné kusy k odvedení !!'#1); edtOperP42.SelectAll; edtOperP42.SetFocus; end else begin lblOperaceP42.Caption:= lblOperace.Caption + ' (živé ks ' + ksZive.ToString + ')'; // idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDPrikaz FROM ' + tblPrPost + ' WHERE Barcode=N' + QuotedStr(edtOpStr.Text)); NactiPrikaz; rVPr:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Rada FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); lSQL:= 'ID=' + idVOp.ToString + ' AND Doklad=(SELECT MAX(Doklad) FROM ' + tblPrPost + ' WHERE IDPrikaz=' + idVPr.ToString + ')'; if (helUtils.HeliosExistsTest(Helios, tblPrPost, lSQL)) AND ((rVPr='223-42') OR (rVPr='223-43')) then begin edtDavkaObr.Enabled:= true; selDavkaObr.Enabled:= true; end; end; end; end; procedure TformOdvTavby.edtOpStrExit (Sender: TObject); var lSQL, rVPr, sz, rc: string; ksZive, ksStrom: Extended; mon: TMonitor; jeP31: Boolean; begin edtOpStr.Text:= StringReplace(Trim(edtOpStr.Text), ' ', '', [rfReplaceAll]); edtOpStr.Text:= helUtils.StripChars(edtOpStr.Text, ['''', '"', '-', ';', ' ']); if (edtOpStr.Text='') then Exit; btnOKNew.Enabled:= true; btnOK.Enabled:= true; self.Height:= 645; if not(vTab.Active) then vTab.Open; vTab.Clear; ZjistiVOp(edtOpStr.Text, True); if (prik.stav=0) or (prik.stav>30) then Helios.Error(#1'Výrobní příkaz operace je již uzavřen.'#1); sz:= ''; rc:= ''; idVPr:= 0; pozn:= ''; lSQL:= 'SELECT k.SkupZbo, k.RegCis, vp.ID FROM ' + tblPrikaz + ' vp INNER JOIN ' + tblPrPost + ' p ON (p.IDPrikaz=vp.ID) INNER JOIN ' + tblKZ; lSQL:= lSQL + ' k ON (k.ID=vp.IDTabKmen) WHERE p.IDOdchylkyDo IS NULL AND p.BarCode=N' + QuotedStr(edtOpStr.Text); with Helios.OpenSQL(lSQL) do if (RecordCount=1) then begin sz:= VarToStr(FieldValues(0)); rc:= VarToStr(FieldValues(1)); idVPr:= StrToInt(VarToStr(FieldValues(2))); pozn:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(VyrCislo, N''*'') FROM ' + tblPrikazVC + ' WHERE IDPrikaz=' + idVPr.ToString); end; lSQL:= 'SELECT CASE WHEN ISNULL(o.MamMatecniOdlitek,0)=1 THEN ISNULL(o1.KSnaStrom,0) ELSE ISNULL(o.KSnaStrom,0) END FROM ' + tblOdlitky; lSQL:= lSQL + ' o LEFT JOIN ' + tblOdlitky + ' o1 ON (o1.Odlitek=o.MatecniOdlitek) WHERE o.Odlitek=N' + QuotedStr(rc); ksStrom:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); jeP31:= false; if (sz='P31') then jeP31:= true; // btnOK.Top:= 535; // btnOKNew.Top:= 535; // btnStorno.Top:= 535; if (idVOp>0) then begin // idVOp:= helUtils.getHeliosIntVal(Helios, 'SELECT ID FROM ' + tblPrPost + ' WHERE Barcode=N' + QuotedStr(edtOpVibr.Text)); ksZive:= getParamOperace(idVOp, 'Kusy_zive', -999999); // A17209B lSQL:= 'SELECT mz.ID, mz.DatPorizeni, mz.Autor, mz.kusy_odv' + IfThen(ksStrom>0, '/' + ksStrom.ToString, '') + ', kz.MJEvidence FROM ' + tblPrPost; lSQL:= lSQL + ' pp INNER JOIN ' + tblMzdZm + ' mz ON (mz.DokladPrPostup=pp.Doklad AND mz.AltPrPostup=pp.Alt'; lSQL:= lSQL + ' AND mz.IDPrikaz=pp.IDPrikaz) INNER JOIN ' + tblPrikaz + ' p ON (p.ID=pp.IDPrikaz) INNER JOIN ' + tblKZ; lSQL:= lSQL + ' kz ON (kz.ID=p.IdTabKmen) WHERE pp.IDOdchylkyDo IS NULL AND pp.ID1=' + idVOp.ToString + ' ORDER BY mz.DatPorizeni'; with Helios.OpenSQL(lSQL) do if (RecordCount>0) then begin self.Height:= 845; mon:= Screen.MonitorFromPoint(Mouse.CursorPos); self.Left:= mon.Left + ((mon.Width - self.Width) div 2); self.Top:= mon.Top + ((mon.Height - self.Height) div 2); First; while not(EOF) do begin vTab.Append; vTab.FieldByName('colDatum').AsString:= FormatDateTime('d.m.yyyy h:nn', StrToDateTime(VarToStr(FieldValues(1)))); vTab.FieldByName('colAutor').AsString:= VarToStr(FieldValues(2)); vTab.FieldByName('colMnoz').AsFloat:= StrToFloat(VarToStr(FieldValues(3))); vTab.FieldByName('colMJ').AsString:= 'STR'; // VarToStr(FieldValues(4)); vTab.Post; Next; end; // btnOK.Top:= 600; // btnOKNew.Top:= 600; // btnStorno.Top:= 600; end; if (ksZive=0) then begin btnOKNew.Enabled:= false; btnOK.Enabled:= false; Helios.Error(#1'Na operaci nezbývají žádné kusy k odvedení !!'#1); edtOpStr.SelectAll; end else begin if (ksStrom=0) then ksStrom:= 1; lblOperace.Caption:= lblOperace.Caption + ' (živé ks ' + ksZive.ToString + ' = ' + helUtils.RoundToEx(ksZive/ksStrom,-2).ToString + ' str)'; // idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDPrikaz FROM ' + tblPrPost + ' WHERE Barcode=N' + QuotedStr(edtOpStr.Text)); NactiPrikaz; rVPr:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Rada FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); lSQL:= 'ID1=' + idVOp.ToString + ' AND IDOdchylkyDo IS NULL AND ' + SQLTryConvertNumNullDefVal('int', 'operace', -1) + '=(SELECT MAX('; lSQL:= lSQL + SQLTryConvertNumNullDefVal('int', 'operace', -1) + ') FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString + ')'; if (helUtils.HeliosExistsTest(Helios, tblPrPost, lSQL)) AND (rVPr='223-31') then begin edtDavkaStr.Enabled:= true; selDavkaStr.Enabled:= true; end; edtZamStr.SetFocus; end; end; end; procedure TformOdvTavby.ZjistiVOp (bc: string; const nactiVP: boolean); var lSQL: string; begin bc:= StringReplace(Trim(bc), ' ', '', [rfReplaceAll]); bc:= helUtils.StripChars(Trim(bc), ['''', '"', '-', ';', ' ']); if (bc<>'') then begin // idVOp:= helUtils.getHeliosIntVal(Helios, 'SELECT ID FROM ' + tblPrPost + ' WHERE Barcode=N' + QuotedStr(edtOpVibr.Text)); idVOp:= StrToInt(StringReplace(StringReplace(bc, 'A', '', [rfReplaceAll]), 'B', '', [rfReplaceAll])); lSQL:= 'SELECT cp.Pracoviste FROM ' + tblPrPost + ' p INNER JOIN ' + tblCPrac + ' cp ON (cp.ID=p.pracoviste) WHERE p.IDOdchylkyDo IS NULL AND p.ID1=' + idVOp.ToString; prac:= UpperCase(helUtils.getHeliosStrVal(Helios, '', lSQL)); if (prac.ToLower='t09') then tavbaCalamari:= true; lblOperace.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT nazev FROM ' + tblPrPost + ' WHERE IdOdchylkyDo IS NULL AND ID1=' + idVOp.ToString); ksZive:= getParamOperace(idVOp, 'Kusy_zive', -999999); idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDPrikaz FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND ID1=' + idVOp.ToString); oper.id:= idVOp; oper.idPrikaz:= idVPr; oper.bc:= bc; oper.ksZive:= ksZive; oper.ksPozad:= getParamOperace(idVOp, 'kusy_pozadovane', -999999); oper.idPrac:= getParamOperace(idVOp, 'pracoviste', 0); end else begin idVOp:= 0; prac:= ''; idVPr:= 0; ksZive:= 0; oper.id:= 0; oper.idPrikaz:= 0; oper.ksZive:= 0; oper.ksPozad:= 0; oper.ksReal:= 0; oper.ksOdv:= 0; oper.ksZmetIO:= 0; oper.ksZmetOpr:= 0; oper.ksZmetIOKdy:= 0; oper.ksZmetNeopr:= 0; end; if (nactiVP) then NactiPrikaz; end; procedure TformOdvTavby.edtOpTavbaExit (Sender: TObject); begin tavbaCalamari:= false; edtOpTavba.Text:= Trim(edtOpTavba.Text); edtOpTavba.Text:= helUtils.StripChars(edtOpTavba.Text, ['''', '"', '-', ';', ' ']); if (edtOpTavba.Text<>'') then begin ZjistiVOp(edtOpTavba.Text, true); if (prik.stav=0) or (prik.stav>30) then Helios.Error(#1'Výrobní příkaz operace je již uzavřen.'#1); if not(prik.mamP30) then Helios.Error(#1'Na výrobním příkazu není tavenina, nutno doplnit.'#1); end; if not(tavbaCalamari) then edtFormir.EditLabel.Caption:= 'Formíř (os.č.):' else edtFormir.EditLabel.Caption:= 'Tavič/odlévač (os.č.):' end; procedure TformOdvTavby.edtOpVibrExit (Sender: TObject); var lSQL, doklad, operace, alt: string; begin btnOKNew.Enabled:= true; btnOK.Enabled:= true; edtOpVibr.Text:= StringReplace(Trim(edtOpVibr.Text), ' ', '', [rfReplaceAll]); edtOpVibr.Text:= helUtils.StripChars(edtOpVibr.Text, ['''', '"', '-', ';', ' ']); // edtOpVibr.Text:= helUtils.RemoveWords(edtVibrator.Text, ['null']); if (edtOpVibr.Text<>'') then begin ZjistiVOp(edtOpVibr.Text, true); if (prik.stav>30) or (prik.stav=0) or (prik.stav=10) then Helios.Error(#1'Výrobní příkaz je ve stavu Pořízení nebo je již uzavřen'#1) else begin if (prac='T23') and (VyrPrikazMaOperaciPracoviste(idVPr, 'T12') or VyrPrikazMaOperaciPracoviste(idVPr, 'T13')) then Helios.Info(#1'Snímáte operaci Chlazení ale příkaz má i operaci Vibrování'#1); if (ksZive=0) then begin btnOKNew.Enabled:= false; btnOK.Enabled:= false; Helios.Error(#1'Na operaci nezbývají žádné kusy k odvedení !!'#1); with Helios.OpenSQL('SELECT Doklad, Alt FROM ' + tblPrPost + ' WHERE IdOdchylkyDo IS NULL AND ID1=' + idVOp.ToString) do begin doklad:= VarToStr(FieldValues(0)); alt:= VarToStr(FieldValues(1)); Helios.OpenBrowse(bidEvidOp, 'IDPrikaz=' + idVPr.ToString + ' AND DokladPrPostup=' + doklad + ' AND AltPrPostup=N' + QuotedStr(alt)); end; edtOpVibr.SelectAll; edtOpVibr.SetFocus; end else begin idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDPrikaz FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND ID1=' + idVOp.ToString); NactiPrikaz; edtTavbaV.SetFocus; end; end; end; end; procedure TformOdvTavby.edtPocetStrChange (Sender: TObject); begin edtPocetStrExit(Sender); end; procedure TformOdvTavby.edtPocetStrExit (Sender: TObject); begin lblKsStrom.Caption:= ksStr.ToString + ' ks/str -> ' + (ksStr*edtPocetStr.Value).ToString + ' ks'; end; procedure TformOdvTavby.edtPrikazObecExit (Sender: TObject); var idRodicDavka: integer; ksPrikaz, ksDavky: extended; begin edtPrikazObec.Text:= Trim(edtPrikazObec.Text); edtPrikazObec.Text:= helUtils.StripChars(edtPrikazObec.Text, ['''', '"', ';']); if (edtPrikazObec.Text<>'') then begin if (helUtils.PosCount('-',edtPrikazObec.Text)=0) then begin case druhDavky of 1: edtPrikazObec.Text:= '223-31 - ' + edtPrikazObec.Text; end; end; idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblPrikaz + ' WHERE RadaPrikaz=N' + QuotedStr(edtPrikazObec.Text)); if (idVPr>0) then begin NactiPrikaz; ksPrikaz:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT kusy_zad FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); ksDavky:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT SUM(Mnozstvi) FROM ' + tblDavky + ' WHERE DruhDavky=4 AND IDPrikaz=' + idVPr.ToString); lblObecZbyva.Caption:= 'Zbývá předat: ' + (ksPrikaz-ksDavky).ToString; edtVoskStr.SetFocus; end else begin lblObecZbyva.Caption:= ''; Helios.Error(#1'Výrobní příkaz nebyl dohledán.'#1); edtPrikazObec.SelectAll; end; end; end; procedure TformOdvTavby.edtTavbaExit(Sender: TObject); var lSQL: string; idVPrN: integer; begin opakovanaTavba:= false; btnOKNew.Enabled:= true; btnOK.Enabled:= true; edtTavba.Text:= Trim(edtTavba.Text); edtTavba.Text:= helUtils.StripChars(edtTavba.Text, ['''', '"', '-', ';', ' ']); if (edtTavba.Text<>'') then if (LeftStr(edtTavba.Text,1).ToUpper<>'T') then Helios.Error('Označení tavby nezačíná písmenem T, vyberte tabvu z číselníku.') else begin // if (edtTavba.Text<>'') then if (edtTavba.Text<>'') and (idVPr>0) then begin lSQL:= 'DECLARE @p1 NVARCHAR(100), @p2 NVARCHAR(100)' + CRLF + 'SELECT @p1=Prijmeni FROM ' + tblCZam + ' WHERE Cislo=(SELECT TOP(1) CisZamTavic FROM ' + tblTavby; lSQL:= lSQL + ' WHERE CisloTavby=N' + edtTavba.Text.QuotedString + ' ORDER BY Datum DESC)' + CRLF; lSQL:= lSQL + 'SELECT @p2=Prijmeni FROM ' + tblCZam + ' WHERE Cislo=(SELECT TOP(1) CisZamOdlevac FROM ' + tblTavby; lSQL:= lSQL + ' WHERE CisloTavby=N' + edtTavba.Text.QuotedString + ' ORDER BY Datum DESC)' + CRLF + 'SELECT @p1 + N'' / '' + @p2' + CRLF; lblLidiZTavby.Caption:= helUtils.getHeliosStrVal(Helios, '', lSQL); lSQL:= 'SELECT p.ID FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IdTabKmen) WHERE p.IDPrikazVyssi=' + idVPr.ToString + ' AND k.SkupZbo=N''P30'''; idVPrN:= helUtils.getHeliosIntVal(Helios, 0, lSQL); mnP31max:= 0; if (idVOp>0) then mnP31max:= getParamOperace(idVOp, 'kusy_pozadovane', -999999); // A333662B lSQL:= 'SELECT pz.ID FROM ' + tblVyrCP + ' pvc INNER JOIN ' + tblPZ + ' pz ON (pvc.IDPolozkaDokladu=pz.ID) INNER JOIN ' + tblVyrCS + ' vc ON (vc.ID=IDVyrCis)'; lSQL:= lSQL + ' WHERE ISNULL(pz.IDPrikaz,0)=' + idVPrN.ToString + ' AND pz.SkupZbo=N''P30'' AND pz.DruhPohybuZbo=0 AND pz.TypVyrobnihoDokladu=0 AND vc.Nazev1=N'; lSQL:= lSQL + edtTavba.Text.QuotedString; with Helios.OpenSQL(lSQL) do if (RecordCount>0) then begin if not(Helios.YesNo(#1'Pozor, tato tavba již byla na podřízený příkaz P30 použita.' + CRLF + 'Chcete ji použít znovu ?' + #1, false)) then begin btnOKNew.Enabled:= false; btnOK.Enabled:= false; edtTavba.Text:= ''; edtTavba.SetFocus; end else opakovanaTavba:= true; end; end else lblLidiZTavby.Caption:= ''; end; end; procedure TformOdvTavby.edtTavbaVExit(Sender: TObject); var lSQL: string; begin edtTavbaV.Text:= Trim(edtTavbaV.Text); edtTavbaV.Text:= helUtils.StripChars(edtTavbaV.Text, ['''', '"', '-', ';', ' ']); if (edtTavbaV.Text<>'') then if (LeftStr(edtTavbaV.Text,1).ToUpper<>'T') then Helios.Error('Označení tavby nezačíná písmenem T, vyberte tabvu z číselníku.') else begin if (edtTavbaV.Text<>'') then begin lSQL:= 'DECLARE @p1 NVARCHAR(100), @p2 NVARCHAR(100)' + CRLF + 'SELECT @p1=Prijmeni FROM ' + tblCZam + ' WHERE Cislo=(SELECT TOP(1) CisZamTavic FROM ' + tblTavby; lSQL:= lSQL + ' WHERE CisloTavby=N' + QuotedStr(edtTavbaV.Text) + ' ORDER BY Datum DESC)' + CRLF; lSQL:= lSQL + 'SELECT @p2=Prijmeni FROM ' + tblCZam + ' WHERE Cislo=(SELECT TOP(1) CisZamOdlevac FROM ' + tblTavby; lSQL:= lSQL + ' WHERE CisloTavby=N' + QuotedStr(edtTavbaV.Text) + ' ORDER BY Datum DESC)' + CRLF + 'SELECT @p1 + N'' / '' + @p2' + CRLF; lblLidiZTavby2.Caption:= helUtils.getHeliosStrVal(Helios, '', lSQL); if (helUtils.HeliosObjectExists(Helios, 'dbo._hdc_konfig')) then if (helUtils.getHeliosStrVal(Helios, '0', 'SELECT TOP(1) Hodnota FROM dbo._hdc_konfig WHERE Parametr=N''TavirnaKontrola''')='1') then if not(helUtils.HeliosExistsTest(Helios, 'dbo._hdc_TabTavby', 'KontrolaStav=1 AND CisloTavby=N' + edtTavbaV.Text.QuotedString)) then Helios.Error(#1'POZOR - tato TAVBA NEBYLA ZATÍM UVOLNĚNA !'#1 + CRLF + '(odlitky z ní nepůjou převést na další sklad)'); { lSQL:= 'SELECT ID FROM ' + tblTavby + ' WHERE CisloTavby=N' + edtTavbaV.Text.QuotedString + ' AND KontrolaStav<>1'; with Helios.OpenSQL(lSQL) do if (RecordCount>0) then Helios.Error(#1'!! Pozor, tavba ' + edtTavbaV.Text + ' NENÍ zatím UVOLNĚNA !!' + #1); } end else lblLidiZTavby2.Caption:= ''; end; end; procedure TformOdvTavby.edtVibratorExit(Sender: TObject); begin edtVibrator.Text:= StringReplace(Trim(edtVibrator.Text), ' ', '', [rfReplaceAll]); edtVibrator.Text:= helUtils.StripChars(edtVibrator.Text, ['''', '"', '-', ';', ' ']); edtVibrator.Text:= helUtils.RemoveWords(edtVibrator.Text, ['null']); edtVibrator.Text:= helUtils.RemoveAlphas(edtVibrator.Text); if (edtVibrator.Text<>'') then begin if (helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblCZam + ' WHERE Cislo=' + edtVibrator.Text)=0) then begin Helios.Error(#1'Osobní číslo zaměstnance nebylo nalezeno.'#1 + CRLF + edtVibrator.Text); edtVibrator.Text:= ''; lblVibrator.Caption:= ''; edtVibrator.SetFocus; end else begin edtVibrator.Text:= StringOfChar('0', 6-Length(edtVibrator.Text)) + edtVibrator.Text; lblVibrator.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT PrijmeniJmeno FROM ' + tblCZam + ' WHERE Cislo=' + edtVibrator.Text); edtStrCelk.SelectAll; edtStrCelk.SetFocus; end; end; end; procedure TformOdvTavby.edtVoskPrikazExit(Sender: TObject); var lSQL: string; cnt: integer; ksPrikaz, ksDavky: integer; begin edtVoskPrikaz.Text:= Trim(edtVoskPrikaz.Text); edtVoskPrikaz.Text:= helUtils.StripChars(edtVoskPrikaz.Text, ['''', '"', ';']); if (edtVoskPrikaz.Text<>'') then begin if (helUtils.PosCount('-',edtVoskPrikaz.Text)=0) then edtVoskPrikaz.Text:= '221-12 - ' + edtVoskPrikaz.Text; idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblPrikaz + ' WHERE RadaPrikaz=N' + QuotedStr(edtVoskPrikaz.Text)); if (idVPr>0) then begin NactiPrikaz; cnt:= 1 + helUtils.getHeliosIntVal(Helios, 0, 'SELECT MAX(Pozice) FROM ' + tblDavky + ' WHERE DruhDavky=1 AND IDPrikaz=' + idVPr.ToString); cDavky:= cnt; lblVoskDavka.Caption:= 'Dávka č. ' + cnt.ToString; ksPrikaz:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT kusy_zad FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); ksDavky:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT SUM(Mnozstvi) FROM ' + tblDavky + ' WHERE DruhDavky=1 AND IDPrikaz=' + idVPr.ToString); lblVoskZbyva.Caption:= 'Zbývá předat: ' + (ksPrikaz-ksDavky).ToString; edtVoskStr.SetFocus; end else begin lblVoskDavka.Caption:= ''; Helios.Error(#1'Výrobní příkaz nebyl dohledán.'#1); edtVoskPrikaz.SelectAll; end; end; end; procedure TformOdvTavby.edtVoskStrExit(Sender: TObject); begin if not(TestMamNaPrevod('00100100221400')) then edtVoskStr.Value:= 0; end; procedure TformOdvTavby.edtZamP42Exit(Sender: TObject); begin edtZamP42.Text:= StringReplace(Trim(edtZamP42.Text), ' ', '', [rfReplaceAll]); edtZamP42.Text:= helUtils.StripChars(edtZamP42.Text, ['''', '"', '-', ';', ' ']); edtZamP42.Text:= helUtils.RemoveWords(edtZamP42.Text, ['null']); edtZamP42.Text:= helUtils.RemoveAlphas(edtZamP42.Text); if (edtZamP42.Text<>'0') then begin if (helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblCZam + ' WHERE Cislo=' + edtZamP42.Text)=0) then begin Helios.Error(#1'Osobní číslo zaměstnance nebylo nalezeno.'#1 + CRLF + edtZamP42.Text); edtZamP42.Text:= ''; edtZamP42.SetFocus; lblZamP42.Caption:= ''; end else begin edtZamP42.Text:= StringOfChar('0', 6-Length(edtZamP42.Text)) + edtZamP42.Text; lblZamP42.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT PrijmeniJmeno FROM ' + tblCZam + ' WHERE Cislo=' + edtZamP42.Text); edtDavkaObr.SelectAll; end; end; end; procedure TformOdvTavby.edtZamStrExit(Sender: TObject); begin edtZamStr.Text:= Trim(edtZamStr.Text); edtZamStr.Text:= StringReplace(edtZamStr.Text, ' ', '', [rfReplaceAll]); edtZamStr.Text:= helUtils.StripChars(edtZamStr.Text, ['''', '"', '-', ';', ' ']); edtZamStr.Text:= helUtils.RemoveWords(edtZamStr.Text, ['null']); edtZamStr.Text:= helUtils.RemoveAlphas(edtZamStr.Text); if (edtZamStr.Text<>'') then begin if (helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblCZam + ' WHERE Cislo=' + edtZamStr.Text)=0) then begin Helios.Error(#1'Osobní číslo zaměstnance nebylo nalezeno.'#1 + CRLF + edtZamStr.Text); edtZamStr.Text:= ''; lblZamest.Caption:= ''; edtZamStr.SetFocus; end else begin edtZamStr.Text:= StringOfChar('0', 6-Length(edtZamStr.Text)) + edtZamStr.Text; lblZamest.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT PrijmeniJmeno FROM ' + tblCZam + ' WHERE Cislo=' + edtZamStr.Text); edtStrStr.SelectAll; edtStrStr.SetFocus; end; end; end; procedure TformOdvTavby.FormClose(Sender: TObject; var Action: TCloseAction); begin if (vTab.Active) then vTab.Close; Action:= caFree; end; procedure TformOdvTavby.FormResize(Sender: TObject); begin btnOK.Top:= pgCtrl.Top + pgCtrl.Height + 15; btnOKNew.Top:= btnOK.Top; btnStorno.Top:= btnOK.Top; end; procedure TformOdvTavby.FormShow(Sender: TObject); var lSQL: string; i: integer; begin self.ParentWindow:= Helios.MainApplicationHandle; self.Height:= 645; self.Icon.Handle:= Helios.MainApplicationIconHandle; pgCtrl.Height:= 435; gbEvidPrace.Top:= 627; if (jeTest) then self.Caption:= self.Caption + ' TEST '; { for i:=0 to Self.ComponentCount-1 do begin if (Self.Components[i] is TButton) then begin (Self.Components[i] as TButton).Font.Name:= Helios.Font; (Self.Components[i] as TButton).Font.Height:= Helios.FontHeight; end; if (Self.Components[i] is TTB_3Button) then begin // (Self.Components[i] as TTB_3Button).Width:= 30; // (Self.Components[i] as TTB_3Button).Height:= 30; end; end; } idVPr:= 0; idVOp:= 0; edtStrStr.Value:= 0; edtTavba.Text:= ''; tavbaCalamari:= false; edtTavbaV.Text:= ''; edtOperP42.Text:= ''; pgCtrl.Height:= 435; btnNew:= false; bidTavby:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_TavbyPosledniData'''); bidDavky:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_Davky'''); case typ of 1: begin Self.Caption:= 'Evidence práce Tavení'; pgCtrl.ActivePageIndex:= shTavba.PageIndex; edtOpTavba.SetFocus; pgCtrl.Pages[shVibrovani.PageIndex].TabVisible:= false; pgCtrl.Pages[shOdvStr.PageIndex].TabVisible:= false; pgCtrl.Pages[shPrevodVosk.PageIndex].TabVisible:= false; pgCtrl.Pages[shDavkaObec.PageIndex].TabVisible:= false; pgCtrl.Pages[shP42.PageIndex].TabVisible:= false; end; 2: begin Self.Caption:= 'Evidence práce Vibrování'; self.Height:= 760; pgCtrl.Height:= 540; gbEvidPrace.Top:= 735; pgCtrl.ActivePageIndex:= shVibrovani.PageIndex; edtOpVibr.SetFocus; pgCtrl.Pages[shTavba.PageIndex].TabVisible:= false; pgCtrl.Pages[shOdvStr.PageIndex].TabVisible:= false; pgCtrl.Pages[shPrevodVosk.PageIndex].TabVisible:= false; pgCtrl.Pages[shDavkaObec.PageIndex].TabVisible:= false; pgCtrl.Pages[shP42.PageIndex].TabVisible:= false; lSQL:= 'IF OBJECT_ID(N''tempdb..#TabDruhDavky'') IS NOT NULL DROP TABLE #TabDruhDavky' + CRLF + 'CREATE TABLE #TabDruhDavky (DruhDavky TINYINT NOT NULL)'; lSQL:= lSQL + 'INSERT #TabDruhDavky (DruhDavky) VALUES (3)'; Helios.ExecSQL(lSQL); end; 3: begin Self.Caption:= 'Evidence práce STR'; pgCtrl.ActivePageIndex:= shOdvStr.PageIndex; edtOpStr.SetFocus; pgCtrl.Pages[shTavba.PageIndex].TabVisible:= false; pgCtrl.Pages[shVibrovani.PageIndex].TabVisible:= false; pgCtrl.Pages[shPrevodVosk.PageIndex].TabVisible:= false; pgCtrl.Pages[shDavkaObec.PageIndex].TabVisible:= false; pgCtrl.Pages[shP42.PageIndex].TabVisible:= false; edtDavkaStr.Enabled:= false; selDavkaStr.Enabled:= false; Label8.Enabled:= false; end; 4: begin Self.Caption:= 'Dávka VOSK->OBALOVNA'; pgCtrl.ActivePageIndex:= shPrevodVosk.PageIndex; edtVoskPrikaz.SetFocus; pgCtrl.Pages[shTavba.PageIndex].TabVisible:= false; pgCtrl.Pages[shVibrovani.PageIndex].TabVisible:= false; pgCtrl.Pages[shOdvStr.PageIndex].TabVisible:= false; pgCtrl.Pages[shDavkaObec.PageIndex].TabVisible:= false; pgCtrl.Pages[shP42.PageIndex].TabVisible:= false; datVoskDatum.DateTime:= Now; end; 5: begin Self.Caption:= 'Dávka obecná'; case druhDavky of 1: begin Self.Caption:= 'Dávka KONEČNÁ'; cbMJObec.ItemIndex:= cbMJObec.Items.IndexOf('ks'); end; end; pgCtrl.ActivePageIndex:= shDavkaObec.PageIndex; edtPrikazObec.SetFocus; pgCtrl.Pages[shTavba.PageIndex].TabVisible:= false; pgCtrl.Pages[shVibrovani.PageIndex].TabVisible:= false; pgCtrl.Pages[shOdvStr.PageIndex].TabVisible:= false; pgCtrl.Pages[shPrevodVosk.PageIndex].TabVisible:= false; pgCtrl.Pages[shP42.PageIndex].TabVisible:= false; datDavkaObec.DateTime:= Now; lSQL:= 'IF OBJECT_ID(N''tempdb..#TabDruhDavky'') IS NOT NULL DROP TABLE #TabDruhDavky' + CRLF + 'CREATE TABLE #TabDruhDavky (DruhDavky TINYINT NOT NULL)'; lSQL:= lSQL + 'INSERT #TabDruhDavky (DruhDavky) VALUES (4)'; Helios.ExecSQL(lSQL); end; 6: begin Self.Caption:= 'Dávka KONEČNÁ->OBRÁBĚNÍ'; pgCtrl.ActivePageIndex:= shP42.PageIndex; edtOperP42.SetFocus; pgCtrl.Pages[shTavba.PageIndex].TabVisible:= false; pgCtrl.Pages[shVibrovani.PageIndex].TabVisible:= false; pgCtrl.Pages[shOdvStr.PageIndex].TabVisible:= false; pgCtrl.Pages[shPrevodVosk.PageIndex].TabVisible:= false; pgCtrl.Pages[shDavkaObec.PageIndex].TabVisible:= false; lSQL:= 'IF OBJECT_ID(N''tempdb..#TabDruhDavky'') IS NOT NULL DROP TABLE #TabDruhDavky' + CRLF + 'CREATE TABLE #TabDruhDavky (DruhDavky TINYINT NOT NULL)' + CRLF; lSQL:= lSQL + 'INSERT #TabDruhDavky (DruhDavky) VALUES (6)'; Helios.ExecSQL(lSQL); end; end; pgCtrl.Repaint; end; procedure TformOdvTavby.NactiTavbu(const idTavby: Integer); var lSQL: string; begin if (idTavby>0) then begin lSQL:= ''; end; end; procedure TformOdvTavby.selTavbaClick(Sender: TObject); var podm: string; begin // oVar:= helUtils.getHeliosIntVal(Helios, 'SELECT ID FROM ' + tblTavby + ' WHERE CisloTavby=N' + QuotedStr(edtTavba.Text)); oVar:= Trim(edtTavba.Text); podm:= 'DATEDIFF(month,hvw_TavbyPosledniData.Datum,GETDATE())<3'; if (tavbaCalamari) then podm:= podm + ' AND hvw_TavbyPosledniData.CisloPece IN (21,22)'; // if Helios.Prenos(bidTavby, 'hvw_TavbyPosledniData.ID', oVar, '', 'Vyberte tavbu', true) then if Helios.Prenos(bidTavby, 'hvw_TavbyPosledniData.CisloTavby', oVar, podm, 'Vyberte tavbu', true) then begin // edtTavba.Text:= helUtils.getHeliosStrVal(Helios, 'SELECT CisloTavby FROM ' + tblTavby + ' WHERE ID=' + VarToStr(oVar)); edtTavba.Text:= VarToStr(oVar); edtTavbaExit(Sender); end; if (btnOK.Enabled) then edtFormir.SetFocus; end; procedure TformOdvTavby.selTavbaVClick(Sender: TObject); var podm: string; begin // oVar:= helUtils.getHeliosIntVal(Helios, 'SELECT ID FROM ' + tblTavby + ' WHERE CisloTavby=N' + QuotedStr(edtTavba.Text)); podm:= 'DATEDIFF(month,hvw_TavbyPosledniData.Datum,GETDATE())<3'; if (tavbaCalamari) then podm:= podm + ' AND hvw_TavbyPosledniData.CisloPece IN (21,22)'; oVar:= edtTavbaV.Text; if Helios.Prenos(bidTavby, 'hvw_TavbyPosledniData.CisloTavby', oVar, podm, 'Vyberte tavbu', true) then begin edtTavbaV.Text:= VarToStr(oVar); edtTavbaVExit(Sender); end; edtVibrator.SetFocus; end; procedure TformOdvTavby.selVibratorClick(Sender: TObject); var podm, selMes: string; cM, cR: integer; begin // ziskej ID mzdObd za tento a predchozi mesic cM:= MonthOf(Now); cR:= YearOf(Now); selMes:= helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + cR.ToString + ' AND Mesic=' + cM.ToString); if (cM=1) then selMes:= selMes + IfThen(selMes<>'', ', ', '') + helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + (cR-1).ToString + ' AND Mesic=12') else selMes:= selMes + IfThen(selMes<>'', ', ', '') + helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + cR.ToString + ' AND Mesic=' + (cM-1).ToString); podm:= 'TabCisZam.ID IN (SELECT z.ZamestnanecID FROM ' + tblZamDopl + ' z INNER JOIN ' + tblProfes + ' p ON (p.Cislo=z.Profese) INNER JOIN ' + tblZamMzd; podm:= podm + ' m ON (m.ZamestnanecID=z.ZamestnanecID AND z.IDObdobi=m.IDObdobi) WHERE m.StavES=0 AND m.Stredisko=N''00100100223'''; podm:= podm + ' AND z.IDObdobi IN (' + selMes + '))'; oVar:= edtVibrator.Text; if Helios.Prenos(bidCisZam, 'TabCisZam.Cislo', oVar, podm, 'Vyberte Vibrovače', true) then edtVibrator.Text:= StringOfChar('0', 6-Length(VarToStr(oVar))) + VarToStr(oVar); edtStrCelk.SetFocus; end; procedure TformOdvTavby.selVoskPrikazClick(Sender: TObject); var lSQL, podm, id: string; begin podm:= 'TabPrikaz.StavPrikazu IN (30,50,60) AND TabPrikaz.Rada=N''221-12'''; if Helios.Prenos(bidVyrPrik, 'TabPrikaz.ID', oVar, podm, 'Vyberte příkaz', true) then begin id:= VarToStr(oVar); edtVoskPrikaz.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT RadaPrikaz FROM ' + tblPrikaz + ' WHERE ID=' + id); edtVoskPrikazExit(Sender); end; end; procedure TformOdvTavby.selZamP42Click(Sender: TObject); var podm, selMes: string; cM, cR: integer; begin // ziskej ID mzdObd za tento a predchozi mesic cM:= MonthOf(Now); cR:= YearOf(Now); selMes:= helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + cR.ToString + ' AND Mesic=' + cM.ToString); if (cM=1) then selMes:= selMes + IfThen(selMes<>'', ', ', '') + helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + (cR-1).ToString + ' AND Mesic=12') else selMes:= selMes + IfThen(selMes<>'', ', ', '') + helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + cR.ToString + ' AND Mesic=' + (cM-1).ToString); podm:= 'TabCisZam.ID IN (SELECT z.ZamestnanecID FROM ' + tblZamDopl + ' z INNER JOIN ' + tblProfes + ' p ON (p.Cislo=z.Profese) INNER JOIN ' + tblZamMzd; podm:= podm + ' m ON (m.ZamestnanecID=z.ZamestnanecID AND z.IDObdobi=m.IDObdobi) WHERE m.StavES=0 AND m.Stredisko=N''00100100224'''; podm:= podm + ' AND z.IDObdobi IN (' + selMes + '))'; oVar:= edtZamP42.Text; if Helios.Prenos(bidCisZam, 'TabCisZam.Cislo', oVar, podm, 'Vyberte zaměstnance', true) then edtZamP42.Text:= StringOfChar('0', 6-Length(VarToStr(oVar))) + VarToStr(oVar); edtZamP42Exit(Sender); end; procedure TformOdvTavby.selZamP42Exit(Sender: TObject); begin if (edtZamP42.Value>0) then edtDavkaObr.SetFocus; end; procedure TformOdvTavby.selZamStrClick(Sender: TObject); var podm, selMes: string; cM, cR: integer; begin // ziskej ID mzdObd za tento a predchozi mesic cM:= MonthOf(Now); cR:= YearOf(Now); selMes:= helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + cR.ToString + ' AND Mesic=' + cM.ToString); if (cM=1) then selMes:= selMes + IfThen(selMes<>'', ', ', '') + helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + (cR-1).ToString + ' AND Mesic=12') else selMes:= selMes + IfThen(selMes<>'', ', ', '') + helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + cR.ToString + ' AND Mesic=' + (cM-1).ToString); podm:= 'TabCisZam.ID IN (SELECT z.ZamestnanecID FROM ' + tblZamDopl + ' z INNER JOIN ' + tblProfes + ' p ON (p.Cislo=z.Profese) INNER JOIN ' + tblZamMzd; podm:= podm + ' m ON (m.ZamestnanecID=z.ZamestnanecID AND z.IDObdobi=m.IDObdobi) WHERE m.StavES=0 /* AND m.Stredisko=N''00100100223'' */'; podm:= podm + ' AND z.IDObdobi IN (' + selMes + '))'; oVar:= edtZamStr.Text; if Helios.Prenos(bidCisZam, 'TabCisZam.Cislo', oVar, podm, 'Vyberte zaměstnance', true) then edtZamStr.Text:= StringOfChar('0', 6-Length(VarToStr(oVar))) + VarToStr(oVar); edtZamStrExit(Sender); end; procedure TformOdvTavby.NactiPrikaz; var lSQL, skl, eMsg, prac, rc: string; z, k: Extended; idKZ: integer; canCont, pracOK: boolean; begin prik.id:= 0; prik.regC:= ''; prik.sz:= ''; prik.idKZ:= 0; prik.sklad:= ''; prik.stav:= 0; prik.mamP30:= false; if (idVPr>0) then begin skl:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Sklad FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); lSQL:= 'SELECT k.RegCis, k.Nazev1, p.RadaPrikaz, CASE WHEN ISNULL(o.MamMatecniOdlitek,0)=1 THEN ISNULL(o1.KSnaStrom,0) ELSE ISNULL(o.KSnaStrom,0) END'; lSQL:= lSQL + ', k.ID, p.StavPrikazu, k.SkupZbo FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen)'; lSQL:= lSQL + ' LEFT JOIN ' + tblOdlitky + ' o ON (k.RegCis=o.Odlitek) LEFT JOIN ' + tblOdlitky + ' o1 ON (o1.Odlitek=o.MatecniOdlitek)'; lSQL:= lSQL + ' WHERE p.ID=' + idVPr.ToString; with Helios.OpenSQL(lSQL) do if (RecordCount=1) then begin rc:= VarToStr(FieldByNameValues('RegCis')); idKZ:= StrToInt(VarToStr(FieldByNameValues('ID'))); lblPopis.Caption:= rc + ' ' + VarToStr(FieldByNameValues('Nazev1')); prik.id:= idVPr; prik.regC:= rc; prik.sz:= VarToStr(FieldByNameValues('SkupZbo')); prik.idKZ:= idKZ; prik.sklad:= skl; prik.mamP30:= false; if (idVOp>0) and (pgCtrl.ActivePageIndex=shTavba.PageIndex) or (pgCtrl.ActivePageIndex=shVibrovani.PageIndex) or (pgCtrl.ActivePageIndex=shOdvStr.PageIndex) then begin canCont:= (lblOperace.Caption<>''); lSQL:= 'SELECT p.Pracoviste FROM ' + tblPrPost + ' o INNER JOIN ' + tblCPrac + ' p ON (o.pracoviste=p.ID) WHERE o.ID=' + idVOp.ToString; prac:= helUtils.getHeliosStrVal(Helios, '', lSQL); // T09/T11 - tavba pracOK:= (prac='T11') or (prac='T09'); if (pgCtrl.ActivePageIndex=shTavba.PageIndex) and not(pracOK) then begin canCont:= false; if (tavbaCalamari) then Helios.Error(#1 + rc + ': Naskenovaná operace ' + idVOp.ToString + ' není TAVENÍ a ODLÉVÁNÍ.'#1) else Helios.Error(#1 + rc + ': Naskenovaná operace ' + idVOp.ToString + ' není ODLÉVÁNÍ.'#1); edtOpTavba.Text:= ''; end; // T12 - vibrace nebo T15 - rucni pracOK:= (prac='T12') or (prac='T13') or (prac='T15'); if (pgCtrl.ActivePageIndex=shVibrovani.PageIndex) and not(pracOK) then begin canCont:= false; Helios.Error(#1 + rc + ': Naskenovaná operace č.' + idVOp.ToString + ' není VIBROVÁNÍ (prac.T12/13/15).'#1); edtOpVibr.Text:= ''; end; if (prik.sz='P31') then begin lSQL:= 'SELECT 1 FROM ' + tblPrVaz + ' v INNER JOIN ' + tblKZ + ' k ON (k.ID=v.nizsi) WHERE v.IDOdchylkyDo IS NULL AND v.IDPrikaz=' + prik.id.ToString + ' AND k.SkupZbo=N''P30'''; if (helUtils.sqlExistsTestGeneral(Helios, lSQL)) then prik.mamP30:= true; end; if (canCont) then begin if not TryStrToFloat(VarToStr(FieldValues(3)), k) then k:= 0; lblKsStrom.Caption:= k.ToString + ' ks/str'; ksStr:= k; z:= 0; if (idVOp>0) then begin z:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT kusy_zad FROM ' + tblPrPost + ' WHERE ID=' + idVOp.ToString); lSQL:= 'SELECT ISNULL(SUM(m.kusy_odv + m.kusy_zmet_neopr),0) FROM ' + tblMzdZm + ' m INNER JOIN ' + tblPrPost + ' p ON (p.IDPrikaz=m.IDPrikaz AND '; lSQL:= lSQL + 'm.DokladPrPostup=p.Doklad AND ISNULL(m.AltPrPostup,N''Q'')=ISNULL(p.Alt,N''Q'')) WHERE p.ID=' + idVOp.ToString; z:= z-helUtils.getHeliosFloatVal(Helios, 0, lSQL); end; if (z<0) then z:= 0; if (k>0) then z:= z/k; lblPrikaz.Caption:= 'VPř ' + VarToStr(FieldValues(2)) + ' / dodělat ' + IfThen(k=0, z.ToString, helUtils.RoundToEX(z,-2).ToString) + ' STR' end else begin lblPrikaz.Caption:= ''; lblOperace.Caption:= ''; idVPr:= 0; idVOp:= 0; end; end; if (idKZ>0) and ((pgCtrl.ActivePageIndex=shPrevodVosk.PageIndex) or (pgCtrl.ActivePageIndex=shDavkaObec.PageIndex) or (pgCtrl.ActivePageIndex=shP42.PageIndex)) then begin // prevod vosk -> obalovna lblPrikaz.Caption:= 'VPř ' + VarToStr(FieldValues(2)) + ' / dodělat '; lblPrikaz.Caption:= lblPrikaz.Caption + helUtils.getHeliosStrVal(Helios, '', 'SELECT kusy_zive FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); lSQL:= 'SELECT Mnozstvi FROM ' + tblSS + ' WHERE IDSklad=N' + QuotedStr(skl) + ' AND IDKmenZbozi=' + idKZ.ToString; k:= helUtils.getHeliosFloatVal(Helios, 0, lSQL); lblPrikaz.Caption:= lblPrikaz.Caption + ' / skl ' + FloatToStr(k); end; prik.stav:= StrToInt(VarToStr(FieldValues(5))); eMsg:= ''; case prik.stav of 10: eMsg:= 'POZOR, příkaz je jen Pořízen'; 20: eMsg:= 'POZOR, příkaz je jen Předzpracován'; 50: eMsg:= 'POZOR, příkaz Ukončen'; 60: eMsg:= 'POZOR, příkaz Uzavřen'; end; if (eMsg<>'') then Helios.Error(#1 + '!!! ' + eMsg + ' - ' + rc + ' - operace ' + idVOp.ToString + ' NEBUDE EVIDOVÁNA !!!' + #1); end; end else begin lblPopis.Caption:= ''; lblPrikaz.Caption:= ''; end; end; procedure TformOdvTavby.selDavkaClick(Sender: TObject); var lSQL, podm, kodDavky, r: string; begin // u:= helUtils.getHeliosStrVal(Helios, 'SELECT SUSER_SNAME()'); // druhDavky:= helUtils.getHeliosIntVal(Helios, 'SELECT DruhDavky FROM ' + tblDavkyDU + ' WHERE LoginName=SUSER_SNAME()'); idDavka:= 0; bidDavky:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_Davky'''); r:= '2020'; if (idVPr>0) then r:= helUtils.getHeliosStrVal (Helios, r, 'SELECT DATEPART(year, zadani) FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); podm:= 'hvw_Davky.Uzavreno=0 AND DATEDIFF(month, hvw_Davky.DatPorizeni,GETDATE())<3 AND hvw_Davky.DruhDavky=3'; // AND hvw_Davky.Rok=' + r; if (bidDavky>0) then if Helios.Prenos2(bidDavky, 'hvw_Davky.CisloPozice', 'hvw_Davky.KodDavky', oVar, oVar2, podm, 'Dávky', false, true, false, 1) then begin edtDavka.Text:= VarToStr(oVar); kodDavky:= VarToStr(oVar2); edtDavka.Text:= helUtils.StripChars(edtDavka.Text, ['''', 'N']); podm:= 'SELECT ID FROM ' + tblDavky + ' WHERE Uzavreno=0 AND KodDavky=N' + kodDavky.QuotedString + ' AND DruhDavky=3'; idDavka:= helUtils.getHeliosIntVal (Helios, 0, podm); { lSQL:= 'SELECT TOP(1) k.RegCis FROM ' + tblDavky + ' d INNER JOIN ' + tblPrikaz + ' vp ON (vp.ID=d.IDPrikaz) INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IDTabKmen)'; lSQL:= lSQL + ' WHERE d.DruhDavky=3 AND d.Rok=' + r + ' AND d.Cislo=(SELECT Cislo FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString + ')'; lSQL:= lSQL + ' AND d.CisloPozice<>N' + QuotedStr(edtDavka.Text); with Helios.OpenSQL(lSQL) do if (RecordCount>0) then begin r:= VarToStr(FieldValues(0)); if (r<>prik.regC) then begin Helios.Error(#1'!! CHYBA - na dávku nelze přidávat rozdílné odlitky !!'#1); idDavka:= 0; edtDavka.Text:= ''; selDavka.SetFocus; end else btnOK.SetFocus; end else } btnOK.SetFocus; end else begin edtDavka.Text:= ''; selDavka.SetFocus; idDavka:= 0; end; end; procedure TformOdvTavby.selDavkaObecClick (Sender: TObject); var lSQL, podm: string; begin idDavka:= 0; podm:= 'hvw_Davky.Uzavreno=0 AND DATEDIFF(month, hvw_Davky.DatPorizeni,GETDATE())<3'; if (typ=5) and (druhDavky=1) then podm:= podm + ' AND hvw_Davky.DruhDavky=4'; if (bidDavky>0) then if Helios.Prenos(bidDavky, 'hvw_Davky.CisloPozice', oVar, podm, 'Vyberte dávku', true) then begin edtDavkaObec.Text:= VarToStr(oVar); podm:= 'SELECT ID FROM ' + tblDavky + ' WHERE Uzavreno=0 AND CisloPozice=N' + QuotedStr(edtDavkaObec.Text); if (typ=5) and (druhDavky=1) then podm:= podm + ' AND DruhDavky=4'; idDavka:= helUtils.getHeliosIntVal(Helios, 0, podm); idDavkaRodic:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDRodic FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString); edtStrObec.SelectAll; edtStrObec.SetFocus; end else begin edtDavkaObec.Text:= ''; selDavkaObec.SetFocus; end; lSQL:= 'IF OBJECT_ID(N''tempdb..#TabDruhDavky'') IS NOT NULL DROP TABLE #TabDruhDavky'; Helios.ExecSQL(lSQL); end; procedure TformOdvTavby.selDavkaObrClick (Sender: TObject); var lSQL, podm, rD: string; begin // u:= helUtils.getHeliosStrVal(Helios, 'SELECT SUSER_SNAME()'); // druhDavky:= helUtils.getHeliosIntVal(Helios, 'SELECT DruhDavky FROM ' + tblDavkyDU + ' WHERE LoginName=SUSER_SNAME()'); idDavka:= 0; edtDavkaObr.Text:= ''; selDavkaObr.SetFocus; podm:= 'hvw_Davky.Uzavreno=0 AND hvw_Davky.DruhDavky=6'; if Helios.Prenos2(bidDavky, 'hvw_Davky.CisloPozice', 'hvw_Davky.ID', oVar, oVar2, podm, 'Vyberte dávku', false, true, false, 1) then begin edtDavkaObr.Text:= VarToStr(oVar); edtDavkaObr.Text:= helUtils.StripChars(edtDavkaObr.Text, ['''', 'N']); idDavka:= StrToInt(VarToStr(oVar2)); lblDavkaObr.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Rok FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString); lblDavkaObr.Caption:= Trim(lblDavkaObr.Caption + ' / ' + getTextDruhDavky(idDavka)); btnOK.SetFocus; end; lSQL:= 'IF OBJECT_ID(N''tempdb..#TabDruhDavky'') IS NOT NULL DROP TABLE #TabDruhDavky'; Helios.ExecSQL(lSQL); end; procedure TformOdvTavby.selDavkaStrClick (Sender: TObject); var lSQL, podm, rD, cD: string; begin // u:= helUtils.getHeliosStrVal(Helios, 'SELECT SUSER_SNAME()'); // druhDavky:= helUtils.getHeliosIntVal(Helios, 'SELECT DruhDavky FROM ' + tblDavkyDU + ' WHERE LoginName=SUSER_SNAME()'); lSQL:= 'IF OBJECT_ID(N''tempdb..#TabDruhDavky'') IS NOT NULL DROP TABLE #TabDruhDavky' + CRLF + 'CREATE TABLE #TabDruhDavky (DruhDavky TINYINT NOT NULL)'; // lSQL:= lSQL + 'INSERT #TabDruhDavky (DruhDavky) VALUES (3)'; Helios.ExecSQL(lSQL); idDavka:= 0; podm:= 'hvw_Davky.Uzavreno=0 AND hvw_Davky.DruhDavky=4'; if (bidDavky>0) then if Helios.Prenos2(bidDavky, 'hvw_Davky.CisloPozice', 'hvw_Davky.ID', oVar, oVar2, podm, 'Vyberte dávku', false, true, false, 1) then begin edtDavkaStr.Text:= VarToStr(oVar); edtDavkaStr.Text:= helUtils.StripChars(edtDavkaStr.Text, ['''', 'N']); idDavka:= StrToInt(VarToStr(oVar2)); rD:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Rok FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString); lSQL:= 'SELECT TOP(1) k.RegCis FROM ' + tblDavky + ' d INNER JOIN ' + tblPrikaz + ' vp ON (vp.ID=d.IDPrikaz) INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IDTabKmen)'; lSQL:= lSQL + ' WHERE d.DruhDavky=4 AND d.Rok=' + rD + ' AND d.Cislo=(SELECT Cislo FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString + ')'; lSQL:= lSQL + ' AND d.CisloPozice<>N' + QuotedStr(edtDavkaStr.Text); with Helios.OpenSQL(lSQL) do if (RecordCount>0) then begin rD:= VarToStr(FieldValues(0)); if (rD<>prik.regC) then begin Helios.Error(#1'!! CHYBA - na dávku pro Konečnou nelze přidávat rozdílné odlitky !!'#1); idDavka:= 0; edtDavkaStr.Text:= ''; edtDavkaStr.SetFocus; end else edtDavkaStrExit(Sender); end else edtDavkaStrExit(Sender); end else begin edtDavkaStr.Text:= ''; selDavkaStr.SetFocus; idDavka:= 0; end; lSQL:= 'IF OBJECT_ID(N''tempdb..#TabDruhDavky'') IS NOT NULL DROP TABLE #TabDruhDavky'; Helios.ExecSQL(lSQL); end; procedure TformOdvTavby.selFormirClick(Sender: TObject); var podm, selMes: string; cM, cR: integer; begin // ziskej ID mzdObd za tento a predchozi mesic cM:= MonthOf(Now); cR:= YearOf(Now); selMes:= helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + cR.ToString + ' AND Mesic=' + cM.ToString); if (cM=1) then selMes:= selMes + IfThen(selMes<>'', ', ', '') + helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + (cR-1).ToString + ' AND Mesic=12') else selMes:= selMes + IfThen(selMes<>'', ', ', '') + helUtils.getHeliosStrVal(Helios, '', 'SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + cR.ToString + ' AND Mesic=' + (cM-1).ToString); podm:= 'TabCisZam.ID IN (SELECT z.ZamestnanecID FROM ' + tblZamDopl + ' z INNER JOIN ' + tblProfes + ' p ON (p.Cislo=z.Profese) INNER JOIN ' + tblZamMzd; podm:= podm + ' m ON (m.ZamestnanecID=z.ZamestnanecID AND z.IDObdobi=m.IDObdobi) WHERE m.StavES=0 AND m.Stredisko=N''00100100223'''; podm:= podm + ' AND z.IDObdobi IN (' + selMes + '))'; oVar:= edtFormir.Text; if Helios.Prenos(bidCisZam, 'TabCisZam.Cislo', oVar, podm, 'Vyberte Formíře', true) then edtFormir.Text:= StringOfChar('0', 6-Length(VarToStr(oVar))) + VarToStr(oVar); edtPocetStr.SetFocus; end; procedure TformOdvTavby.selOperP42Click(Sender: TObject); var podm: string; begin idVOp:= 0; idVPr:= 0; podm:= '/* TabPrPostup.Nazev LIKE N''Předán%'' AND TabPrPostup.Odvadeci=1 AND */ TabPrPostup.IDPrikaz IN (SELECT ID FROM ' + tblPrikaz; podm:= podm + ' WHERE StavPrikazu IN (30,50,60) AND Rada IN (N''224-43'', N''224-42''))'; if Helios.Prenos(bidVyrOper, 'TabPrPostup.ID', oVar, podm, 'Vyberte operaci P42/P43', true) then begin idVOp:= StrToInt(VarToStr(oVar)); edtOperP42.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Barcode FROM ' + tblPrPost + ' WHERE ID=' + idVOp.ToString); idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDPrikaz FROM ' + tblPrPost + ' WHERE ID=' + idVOp.ToString); NactiPrikaz; lblOperaceP42.Caption:= ''; with Helios.OpenSQL('SELECT Operace, Nazev FROM ' + tblPrPost + ' WHERE ID=' + idVOp.ToString) do lblOperaceP42.Caption:= Trim(VarToStr(FieldValues(0))) + ' / ' + VarToStr(FieldValues(1)); edtKsP42.SetFocus; end; end; procedure TformOdvTavby.selOpStrClick(Sender: TObject); var lSQL, podm, u: string; begin oVar:= edtOpStr.Text; podm:= 'TabPrPostup.Kusy_pozadovane>0'; // u:= helUtils.getHeliosStrVal(Helios, 'SELECT SUSER_SNAME()'); // if (u='ssustek') or (u='pcreny') then // begin podm:= podm + ' AND TabPrPostup.IDPrikaz IN (SELECT p.ID FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen)'; podm:= podm + ' WHERE p.StavPrikazu IN (20,30) AND LEFT(k.SkupZbo,2)=N''P3'')'; // end; if Helios.Prenos(bidVyrOper, 'TabPrPostup.BarCode', oVar, podm, 'Vyberte operaci', true) then begin edtOpStr.Text:= VarToStr(oVar); edtOpStrExit(Sender); end; end; procedure TformOdvTavby.selOpTavbaClick(Sender: TObject); var lSQL, podm: string; begin oVar:= edtOpTavba.Text; podm:= 'LOWER(TabPrPostup.nazev) LIKE N''%odléván%'' AND TabPrPostup.Kusy_pozadovane>0'; if Helios.Prenos(bidVyrOper, 'TabPrPostup.BarCode', oVar, podm, 'Vyberte operaci Tavby', true) then begin edtOpTavba.Text:= VarToStr(oVar); edtOpTavbaExit(Sender); end; edtTavba.SetFocus; end; procedure TformOdvTavby.selOpVibrClick(Sender: TObject); var lSQL, podm: string; begin oVar:= edtOpVibr.Text; podm:= 'LOWER(TabPrPostup.nazev) LIKE N''%vibrován%'' AND TabPrPostup.Kusy_pozadovane>0 AND TabPrPostup.Kusy_zive>0'; podm:= podm + ' AND TabPrPostup.IDOdchylkyDo IS NULL AND TabPrPostup.IDPrikaz IN (SELECT ID FROM ' + tblPrikaz + ' WHERE StavPrikazu=30)'; if Helios.Prenos(bidVyrOper, 'TabPrPostup.BarCode', oVar, podm, 'Vyberte operaci Vibrování', true) then begin edtOpVibr.Text:= VarToStr(oVar); edtOpVibrExit(Sender); end; edtTavbaV.SetFocus; end; procedure TformOdvTavby.selPrikazObecClick(Sender: TObject); var podm: string; begin idVPr:= 0; podm:= ''; if (typ=5) and (druhDavky=1) then podm:= 'TabPrikaz.StavPrikazu IN (30,50,60) AND TabPrikaz.Rada=N' + QuotedStr('223-31'); if Helios.Prenos(bidVyrPrik, 'TabPrikaz.ID', oVar, podm, 'Vyberte příkaz do dávky', true) then begin idVPr:= StrToInt(VarToStr(oVar)); edtPrikazObec.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT RadaPrikaz FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString); NactiPrikaz; selDavkaObec.SetFocus; end; end; end.