unit frmUkonceniPalety; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.Mask, Vcl.Buttons, IdHTTP, IdSSLOpenSSL, REST.Json, ddPlugin_TLB, JsonDataObjects, ColorButton, uPing; {$I iConsts.inc} type TformUkonceniPalety = class(TForm) btnZapisPaletyATisk: TButton; Panel1: TPanel; Panel2: TPanel; Panel3: TPanel; Panel4: TPanel; edtNazev1: TLabeledEdit; edtPaleta: TLabeledEdit; edtSarze: TLabeledEdit; edtSZ: TLabeledEdit; edtRegCis: TLabeledEdit; edtStroj: TLabeledEdit; edtDatVyroby: TLabeledEdit; edtSmena: TLabeledEdit; edtKs: TLabeledEdit; edtKA: TLabeledEdit; GroupBox1: TGroupBox; edtPlneKA: TLabeledEdit; edtKsVPoslednimKA: TLabeledEdit; pnlTiskKopie1: TPanel; rbTiskKopie1: TRadioButton; pnlTiskKopie2: TPanel; rbTiskKopie2: TRadioButton; GridPanel1: TGridPanel; Label1: TLabel; LabeledEdit2: TLabeledEdit; edtPokrac: TLabeledEdit; pnlPokracujAno: TPanel; rbPokracujAno: TRadioButton; pnlPokracujNe: TPanel; rbPokracujNe: TRadioButton; Label2: TLabel; Label3: TLabel; GridPanel2: TGridPanel; pnlTiskarna: TPanel; pnlObrazovka: TPanel; btnTiskarna: TColorButton; btnObrazovka: TColorButton; procedure FormShow(Sender: TObject); procedure btnObrazovkaClick(Sender: TObject); procedure btnTiskarnaClick(Sender: TObject); procedure rbTiskKopie1Click(Sender: TObject); procedure rbTiskKopie2Click(Sender: TObject); procedure rbPokracujAnoClick(Sender: TObject); procedure rbPokracujNeClick(Sender: TObject); procedure btnZapisPaletyATiskClick(Sender: TObject); procedure edtKsExit(Sender: TObject); procedure edtKAExit(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private function NactiPocetKAZEvidRozpOperR: extended; function GenerujJSON (idMzdy: integer): TJSONObject; procedure NactiParemetry; procedure BarvyBtnDleParam; public Helios: IHelios; idVPr: integer; idVyrCisPrikaz: integer; idStroj: integer; paleta, sarze, denSmena: string; idEvEOp: integer; [Default(false)] prerusit: boolean; end; var formUkonceniPalety: TformUkonceniPalety; tiskNa: byte; idKmen, idPalety, idFormKA, idFormPL, idFormPS: integer; mjEvid: string; jeFinal, jePolotovar: boolean; pocKA, pocKS, ksVKA: Extended; prepKA2ks, prepKA2pal: Extended; implementation uses DateUtils, Math, StrUtils, datMod, helUtils, helTabsBIDs, frmSarzeVydej; {$R *.dfm} function TformUkonceniPalety.GenerujJSON (idMzdy: Integer): TJsonObject; var lSQL, jsonOut: string; idPrikaz, idDoklad, idPZ: integer; mn: Extended; oMain, oPrikaz, oVydejka, oPrijemka, oPolozka, oVyrCislo: TJsonObject; aVydejky, aPrijemky, aPolozky, aVyrCisla: TJsonArray; begin oMain:= TJsonObject.Create; try if (idMzdy>0) then begin // prikaz oPrikaz:= oMain.O['prikaz']; oPrikaz.S['akce']:= 'stop'; idPrikaz:= 0; mn:= 0; lSQL:= 'SELECT IDPrikaz, kusy_odv FROM ' + tblPMZ + ' WHERE ID=' + idMzdy.ToString; with Helios.OpenSQL(lSQL) do begin idPrikaz:= VarToStr(FieldByNameValues('IDPrikaz')).ToInteger; mn:= VarToStr(FieldByNameValues('kusy_odv')).ToExtended; end; lSQL:= 'SELECT p.ID, p.Rada, p.Prikaz, ISNULL(zm.Rada,N'''') AS RadaZM, ISNULL(zm.Kod,N'''') AS Kod, p.IDTabKmen, k.CisloZbozi, k.Nazev1' + ', ISNULL(k.MJEvidence,N'''') AS MJ FROM ' + tblPrikaz + ' p LEFT JOIN ' + tblZakazModif + ' zm ON (zm.ID=p.IDZakazModif) INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.ID=' + idPrikaz.ToString; with Helios.OpenSQL (lSQL) do begin oPrikaz.I['id']:= VarToStr(FieldByNameValues('ID')).ToInteger; oPrikaz.S['rada']:= VarToStr(FieldByNameValues('Rada')); oPrikaz.I['prikaz']:= VarToStr(FieldByNameValues('Prikaz')).ToInteger; oPrikaz.I['id_dilce']:= VarToStr(FieldByNameValues('IDTabKmen')).ToInteger; oPrikaz.S['cislo_zbozi']:= VarToStr(FieldByNameValues('CisloZbozi')); oPrikaz.S['nazev']:= VarToStr(FieldByNameValues('Nazev1')); oPrikaz.S['mj']:= VarToStr(FieldByNameValues('MJ')); oPrikaz.F['mnozstvi']:= mn; oPrikaz.S['modif_rada']:= VarToStr(FieldByNameValues('RadaZM')); oPrikaz.S['modif_kod']:= VarToStr(FieldByNameValues('Kod')); oPrikaz.Values['caszahajeni']:= null; oPrikaz.D['casukonceni']:= Now; end; // vydejka if (helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 FROM ' + tblPMZGenPZ + ' WHERE TypGen=0 AND IDPohybu IS NOT NULL AND IDMzdy=' + idMzdy.ToString)) then begin lSQL:= 'SELECT DISTINCT(IDDoklad) AS IDDoklad FROM ' + tblPZ + ' WHERE ID IN (SELECT IDPohybu FROM ' + tblPMZGenPZ + ' WHERE TypGen=0 AND IDPohybu IS NOT NULL AND IDMzdy=' + idMzdy.ToString + ') GROUP BY IDDoklad'; with Helios.OpenSQL (lSQL) do begin aVydejky:= oMain.A['vydejky']; First; while not(EOF) do begin oVydejka:= aVydejky.AddObject; idDoklad:= VarToStr(FieldByNameValues('IDDoklad')).ToInteger; oVydejka.I['id']:= idDoklad; lSQL:= 'SELECT IDSklad, RadaDokladu, PoradoveCislo, DatPorizeni FROM ' + tblDZ + ' WHERE ID=' + idDoklad.ToString; with Helios.OpenSQL (lSQL) do if (RecordCount=1) then begin oVydejka.S['rada_dokladu']:= VarToStr(FieldByNameValues('RadaDokladu')); oVydejka.I['poradove_cislo']:= VarToStr(FieldByNameValues('PoradoveCislo')).ToInteger; if not VarIsNull(FieldByNameValues('DatPorizeni')) then oVydejka.D['dat_porizeni']:= StrToDateTime (VarToStr(FieldByNameValues('DatPorizeni'))) else oVydejka.Values['dat_porizeni']:= Null; oVydejka.S['sklad']:= VarToStr(FieldByNameValues('IDSklad')); end; lSQL:= 'SELECT p.ID, p.SkupZbo, p.RegCis, p.Nazev1, p.Mnozstvi, p.MJ, p.Mnozstvi*p.PrepMnozstvi AS MnozPrep, k.MJEvidence FROM ' + tblPZ + 'p INNER JOIN ' + tblSS + ' s ON (s.ID=p.IDZboSklad) INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) WHERE p.IDDoklad=' + idDoklad.ToString + ' AND p.ID IN (SELECT IDPohybu FROM ' + tblPMZGenPZ + ' WHERE TypGen=0 AND IDPohybu IS NOT NULL AND IDMzdy=' + idMzdy.ToString + ')'; with Helios.OpenSQL (lSQL) do if (RecordCount>0) then begin aPolozky:= oVydejka.A['polozky']; First; while not(EOF) do begin oPolozka:= aPolozky.AddObject; oPolozka.S['skup_zbo']:= VarToStr(FieldByNameValues('SkupZbo')); oPolozka.S['reg_cis']:= VarToStr(FieldByNameValues('RegCis')); oPolozka.S['nazev1']:= VarToStr(FieldByNameValues('Nazev1')); oPolozka.F['mnozstvi']:= VarToStr(FieldByNameValues('Mnozstvi')).ToDouble; if not VarIsNull(FieldByNameValues('MJ')) then oPolozka.S['mj']:= VarToStr(FieldByNameValues('MJ')) else oPolozka.Values['mj']:= Null; oPolozka.F['mnozstvi_prepoctene']:= VarToStr(FieldByNameValues('MnozPrep')).ToDouble; if not VarIsNull(FieldByNameValues('MJEvidence')) then oPolozka.S['mjevid']:= VarToStr(FieldByNameValues('MJEvidence')) else oPolozka.Values['mjevid']:= Null; idPZ:= VarToStr(FieldByNameValues('ID')).ToInteger; lSQL:= 'SELECT vcp.Nazev, vcs.Nazev1, vcs.Nazev2, vcp.Mnozstvi, vcp.DatExpirace FROM ' + tblVyrCP + ' vcp INNER JOIN ' + tblVyrCS + ' vcs ON (vcs.ID=vcp.IDVyrCis) WHERE vcp.IDPolozkaDokladu=' + idPZ.ToString; with Helios.OpenSQL (lSQL) do begin aVyrCisla:= oPolozka.A['vyrobni_cisla']; First; while not(EOF) do begin oVyrCislo:= aVyrCisla.AddObject; if not VarIsNull(FieldByNameValues('Nazev1')) then oVyrCislo.S['paletovy_list']:= VarToStr(FieldByNameValues('Nazev1')) else oVyrCislo.Values['paletovy_list']:= Null; if not VarIsNull(FieldByNameValues('Nazev')) then oVyrCislo.S['sarze']:= VarToStr(FieldByNameValues('Nazev')) // vcs.Nazev2 else oVyrCislo.Values['sarze']:= Null; oVyrCislo.F['mnozstvi']:= VarToStr(FieldByNameValues('Mnozstvi')).ToDouble; if not VarIsNull(FieldByNameValues('DatExpirace')) then oVydejka.D['dat_expirace']:= FieldByNameValues('DatExpirace') else oVydejka.Values['dat_expirace']:= Null; Next; end; end; Next; end; end; Next; end; end; end; // prijemka if (helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 FROM ' + tblPMZGenPZ + ' WHERE TypGen IN (2,3) AND IDPohybu IS NOT NULL AND IDMzdy=' + idMzdy.ToString)) then begin lSQL:= 'SELECT DISTINCT(IDDoklad) AS IDDoklad FROM ' + tblPZ + ' WHERE ID IN (SELECT IDPohybu FROM ' + tblPMZGenPZ + ' WHERE TypGen IN (2,3) AND IDPohybu IS NOT NULL AND IDMzdy=' + idMzdy.ToString + ') GROUP BY IDDoklad'; with Helios.OpenSQL (lSQL) do begin aPrijemky:= oMain.A['prijemky']; First; while not(EOF) do begin oPrijemka:= aPrijemky.AddObject; idDoklad:= VarToStr(FieldByNameValues('IDDoklad')).ToInteger; oPrijemka.I['id']:= idDoklad; lSQL:= 'SELECT IDSklad, RadaDokladu, PoradoveCislo, DatPorizeni FROM ' + tblDZ + ' WHERE ID=' + idDoklad.ToString; with Helios.OpenSQL (lSQL) do begin oPrijemka.S['rada_dokladu']:= VarToStr(FieldByNameValues('RadaDokladu')); oPrijemka.I['poradove_cislo']:= VarToStr(FieldByNameValues('PoradoveCislo')).ToInteger; oPrijemka.S['dat_porizeni']:= VarToStr(FieldByNameValues('DatPorizeni')); oPrijemka.S['sklad']:= VarToStr(FieldByNameValues('IDSklad')); end; lSQL:= 'SELECT p.ID, p.SkupZbo, p.RegCis, p.Nazev1, p.Mnozstvi, p.MJ, p.Mnozstvi*p.PrepMnozstvi AS MnozPrep, k.MJEvidence FROM ' + tblPZ + 'p INNER JOIN ' + tblSS + ' s ON (s.ID=p.IDZboSklad) INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) WHERE p.IDDoklad=' + idDoklad.ToString + ' AND p.ID IN (SELECT IDPohybu FROM ' + tblPMZGenPZ + ' WHERE TypGen IN (2,3) AND IDPohybu IS NOT NULL AND IDMzdy=' + idMzdy.ToString + ')'; with Helios.OpenSQL (lSQL) do begin aPolozky:= oPrijemka.A['polozky']; First; while not(EOF) do begin oPolozka:= aPolozky.AddObject; oPolozka.S['skup_zbo']:= VarToStr(FieldByNameValues('SkupZbo')); oPolozka.S['reg_cis']:= VarToStr(FieldByNameValues('RegCis')); oPolozka.S['nazev1']:= VarToStr(FieldByNameValues('Nazev1')); oPolozka.F['mnozstvi']:= VarToStr(FieldByNameValues('Mnozstvi')).ToDouble; oPolozka.S['mj']:= VarToStr(FieldByNameValues('MJ')); oPolozka.F['mnozstvi_prepoctene']:= VarToStr(FieldByNameValues('MnozPrep')).ToDouble; oPolozka.S['mjevid']:= VarToStr(FieldByNameValues('MJEvidence')); idPZ:= VarToStr(FieldByNameValues('ID')).ToInteger; lSQL:= 'SELECT vcp.Nazev, vcs.Nazev1, vcs.Nazev2, vcp.Mnozstvi, vcp.DatExpirace FROM ' + tblVyrCP + ' vcp INNER JOIN ' + tblVyrCS + ' vcs ON (vcs.ID=vcp.IDVyrCis) WHERE vcp.IDPolozkaDokladu=' + idPZ.ToString; with Helios.OpenSQL (lSQL) do begin aVyrCisla:= oPolozka.A['vyrobni_cisla']; First; while not(EOF) do begin oVyrCislo:= aVyrCisla.AddObject; oVyrCislo.S['paletovy_list']:= VarToStr(FieldByNameValues('Nazev1')); oVyrCislo.S['sarze']:= VarToStr(FieldByNameValues('Nazev')); // vcs.Nazev2 oVyrCislo.F['mnozstvi']:= VarToStr(FieldByNameValues('Mnozstvi')).ToDouble; oVyrCislo.S['dat_expirace']:= VarToStr(FieldByNameValues('DatExpirace')); Next; end; end; Next; end; end; Next; end; end; end; end; jsonOut:= oMain.ToJSON(false); finally { if (oPolozka<>nil) then FreeAndNil (oPolozka); if (oPrijemka<>nil) then FreeAndNil (oPrijemka); if (oVydejka<>nil) then FreeAndNil (oVydejka); if (aPrijemky<>nil) then FreeAndNil (aPrijemky); if (aVydejky<>nil) then FreeAndNil (aVydejky); } end; oMain:= TJsonObject.Create; oMain.FromUtf8JSON(jsonOut); result:= oMain; end; function TformUkonceniPalety.NactiPocetKAZEvidRozpOperR: Extended; var lSQL: string; begin result:= 0; if (idEvEOp>0) then begin lSQL:= 'SELECT TOP(1) vc.Mnozstvi-vc.Odvedeno-vc.Zmetky AS Zbytek FROM ' + tblRozpracOperR + ' eor INNER JOIN ' + tblRozpracOper + ' eo ON (eo.ID=eor.IDEvidRozpracOper) LEFT JOIN '; lSQL:= lSQL + tblPrikazVC + ' vc ON (vc.ID=eor.IDVyrCis) WHERE eor.IDPrikaz=' + idVPr.ToString + ' AND eo.ID=' + idEvEOp.ToString; with Helios.OpenSQL(lSQL) do if (RecordCount=1) then result:= VarToStr(FieldByNameValues('Zbytek')).ToExtended; end; end; procedure TformUkonceniPalety.NactiParemetry; var lSQL: string; begin idKmen:= 0; mjEvid:= ''; jeFinal:= false; jePolotovar:= false; if (idVPr>0) then begin with Helios.OpenSQL('SELECT k.SkupZbo, k.RegCis, k.Nazev1, vp.IDTabKmen, k.MJEvidence FROM ' + tblVPr + ' vp INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IDTabKmen) WHERE vp.ID=' + idVPr.ToString) do begin idKmen:= VarToStr(FieldByNameValues('IDTabKmen')).ToInteger; mjEvid:= VarToStr(FieldByNameValues('MJEvidence')); edtSZ.Text:= VarToStr(FieldByNameValues('SkupZbo')); edtRegCis.Text:= VarToStr(FieldByNameValues('RegCis')); edtNazev1.Text:= VarToStr(FieldByNameValues('Nazev1')); jeFinal:= helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 FROM ' + tblParKZ + ' WHERE IDKmenZbozi=' + idKmen.ToString + ' AND TypDilce=0'); jePolotovar:= helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 FROM ' + tblParKZ + ' WHERE IDKmenZbozi=' + idKmen.ToString + ' AND TypDilce=1'); end; pocKA:= NactiPocetKAZEvidRozpOperR; edtKA.Text:= pocKA.ToString.Replace('.', ','); prepKA2ks:= 0; prepKA2pal:= 0; if (mjEvid.ToUpper='KA') then begin ksVKA:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT PocetOdvozene FROM ' + tblMJZbo + ' WHERE KodMJ1=N''KA'' AND KodMJ2=N''Ks'' AND IDKmenZbozi=' + idKmen.ToString); prepKA2ks:= ksVKA; edtKs.Text:= (pocKA * ksVKA).ToString.Replace('.', ','); prepKA2pal:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT PocetHlavni FROM ' + tblMJZbo + ' WHERE KodMJ1=N''KA'' AND KodMJ2=N''pal'' AND IDKmenZbozi=' + idKmen.ToString); end; end; idPalety:= 0; if (paleta<>'') and (sarze<>'') then idPalety:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT TOP(1) ID FROM ' + tblPalety + ' WHERE CisloPalety=N' + paleta.QuotedString + ' AND Sarze=N' + sarze.QuotedString); end; procedure TformUkonceniPalety.BarvyBtnDleParam; begin if (rbTiskKopie1.Checked) then begin pnlTiskKopie1.Color:= clMoneyGreen; rbTiskKopie1.Color:= clMoneyGreen; end else begin pnlTiskKopie1.Color:= clBtnFace; rbTiskKopie1.Color:= clBtnFace; end; if (rbTiskKopie2.Checked) then begin pnlTiskKopie2.Color:= $005B5BFF; rbTiskKopie2.Color:= $005B5BFF; // pnlTiskKopie2.Color:= clMoneyGreen; // rbTiskKopie2.Color:= clMoneyGreen; end else begin pnlTiskKopie2.Color:= clBtnFace; rbTiskKopie2.Color:= clBtnFace; end; if (rbPokracujAno.Checked) then begin edtPokrac.Text:= '1'; pnlPokracujAno.Color:= clMoneyGreen; rbPokracujAno.Color:= clMoneyGreen; end else begin pnlPokracujAno.Color:= clBtnFace; rbPokracujAno.Color:= clBtnFace; end; if (rbPokracujNe.Checked) then begin edtPokrac.Text:= '2'; pnlPokracujNe.Color:= $005B5BFF; rbPokracujNe.Color:= $005B5BFF; // pnlPokracujNe.Color:= clMoneyGreen; // rbPokracujNe.Color:= clMoneyGreen; end else begin pnlPokracujNe.Color:= clBtnFace; rbPokracujNe.Color:= clBtnFace; end; end; procedure TformUkonceniPalety.rbPokracujAnoClick (Sender: TObject); begin if (rbPokracujAno.Checked) then rbPokracujNe.Checked:= false; BarvyBtnDleParam; end; procedure TformUkonceniPalety.rbPokracujNeClick (Sender: TObject); begin if (rbPokracujNe.Checked) then rbPokracujAno.Checked:= false; BarvyBtnDleParam; end; procedure TformUkonceniPalety.rbTiskKopie1Click (Sender: TObject); begin if (rbTiskKopie1.Checked) then rbTiskKopie2.Checked:= false; BarvyBtnDleParam; end; procedure TformUkonceniPalety.rbTiskKopie2Click (Sender: TObject); begin if (rbTiskKopie2.Checked) then rbTiskKopie1.Checked:= false; BarvyBtnDleParam; end; procedure TformUkonceniPalety.btnObrazovkaClick (Sender: TObject); begin btnObrazovka.BackColor:= clMoneyGreen; btnObrazovka.HoverColor:= clMoneyGreen; btnTiskarna.BackColor:= clBtnFace; btnTiskarna.HoverColor:= clBtnFace; Label2.Visible:= false; pnlTiskKopie1.Visible:= false; pnlTiskKopie2.Visible:= false; tiskNa:= 2; end; procedure TformUkonceniPalety.btnTiskarnaClick (Sender: TObject); begin btnTiskarna.BackColor:= clMoneyGreen; btnTiskarna.HoverColor:= clMoneyGreen; btnObrazovka.BackColor:= clBtnFace; btnObrazovka.HoverColor:= clBtnFace; Label2.Visible:= true; pnlTiskKopie1.Visible:= true; pnlTiskKopie2.Visible:= true; tiskNa:= 1; end; procedure TformUkonceniPalety.btnZapisPaletyATiskClick (Sender: TObject); var lSQL, lSQL2, podm, errMsg, a, novyPL, idMzdyS, idMezdS, skSubPrikaz, sTemp, sRnd, sklVyd, radaVyd: string; nazevOp, mjDilce: string; pocKA, pocKAOld, pocKS, noveMnoz, NPalPocKA, NPalPocKS, prepKA2ks, mnozProKoef, koefMn : extended; casPrace, idEvOpR, idMzdy, locIdVPr, d, d2, cnt, iPing: integer; bid, idF, idPalUkonceni, idPrac, idDZ, idDZVyd: integer; spotrebaTesto, spotreba702, vydejOK: boolean; fSarzeVydej: TformSarzeVydej; doJedneVydejky: Boolean; lHTTP: TIdHTTP; ssl: TIdSSLIOHandlerSocketOpenSSL; lParamList, respStream: TStringStream; resp: string; joOut, joIn, itemsObj: TJSONObject; begin idMezdS:= ''; idPalUkonceni:= 0; SetClassLong (TForm(Sender).Handle, GCL_HCURSOR, Screen.Cursors[crHourGlass]); Screen.Cursor:= crHourglass; helUtils.ReseedTable(Helios, tblPMZ); helUtils.ReseedTable(Helios, tblPalety); helUtils.ReseedTable(Helios, tblPaletyUkonceni); if not(TryStrToFloat(edtKs.Text.Replace(' ','').Trim, pocKS)) then pocKS:= 0; if not(TryStrToFloat(edtKA.Text.Replace(' ','').Trim, pocKA)) then pocKA:= 0; if not(TryStrToFloat(edtPlneKA.Text.Replace(' ','').Trim, NPalPocKA)) then NPalPocKA:= 0; if not(TryStrToFloat(edtKsVPoslednimKA.Text.Replace(' ','').Trim, NPalPocKS)) then NPalPocKS:= 0; pocKAOld:= pocKA; pocKA:= pocKA + NPalPocKA; if (NPalPocKS>0) and (prepKA2ks<>0) then pocKA:= pocKA + (NPalPocKS/prepKA2ks); if (idEvEOp>0) and (pocKA>0) then begin spotrebaTesto:= false; lSQL:= 'SELECT 1 FROM ' + tblVPr + ' p INNER JOIN ' + tblKZ + ' k ON (p.IDTabKmen=k.ID) WHERE p.IDPrikazVyssi=' + idVPr.ToString + ' AND k.SkupZbo=N''701'''; if (helUtils.sqlExistsTestGeneral (Helios, lSQL)) then spotrebaTesto:= true; // spotreba tisicikus (SK 702), na kterem je testo spotreba702:= false; if not(spotrebaTesto) then begin lSQL:= 'SELECT 1 FROM ' + tblVPr + ' p INNER JOIN ' + tblKZ + ' k ON (p.IDTabKmen=k.ID) WHERE p.IDPrikazVyssi=' + idVPr.ToString + ' AND k.SkupZbo=N''702'''; if (helUtils.sqlExistsTestGeneral (Helios, lSQL)) then spotreba702:= true; end; lSQL:= 'INSERT ' + tblPaletyUkonceni + ' (IDPalety, PocetKs, PocetKA, NeuplnaPalPocetKA, NeuplnaPalKsVPoslKA, IDPrikaz) SELECT ' + idPalety.ToString + ', ' + pocKS.ToString.Replace(',', '.') + ', '; if (NPalPocKA>0) then lSQL:= lSQL + NPalPocKA.ToString.Replace(',', '.') else lSQL:= lSQL + pocKAOld.ToString.Replace(',', '.'); lSQL:= lSQL + ', ' + NPalPocKA.ToString.Replace(',', '.') + ', ' + NPalPocKS.ToString.Replace(',', '.') + ', ' + idVPr.ToString + CRLF; lSQL:= lSQL + 'SELECT SCOPE_IDENTITY() AS newID'; with Helios.OpenSQL(lSQL) do if (RecordCount=1) then idPalUkonceni:= VarToStr(FieldByNameValues('newID')).ToInteger; idPrac:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDStroje FROM ' + tblRozpracOper + ' WHERE ID=' + idEvEOp.ToString); if (helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM ' + tblRozpracOper + ' WHERE Stav=20 AND ID=' + idEvEOp.ToString)) then begin lSQL:= 'UPDATE ' + tblRozpracOper + ' SET CasUkonceni=GETDATE() WHERE ID=' + idEvEOp.ToString; Helios.ExecSQL(lSQL); casPrace:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT DATEDIFF(second, CasZahajeni, CasUkonceni) FROM ' + tblRozpracOper + ' WHERE ID=' + idEvEOp.ToString); if (casPrace=0) then casPrace:= 60; // uprava odvadeneho mnozstvi v evidenci rozpracovanych operaci podle zadaneho poctu KA na neuplne palete, bez kusu v poslednim KA if ((NPalPocKA>0) and (NPalPocKS=0)) or (1=1) then begin koefMn:= 0; d:= 0; lSQL:= 'SELECT r.ID, r.Mnoz_odv, ISNULL(re._KoefMnoz, 1) AS Koef, pp.Nazev, k.MJEvidence, r.DokladPrPostup FROM ' + tblRozpracOperR + ' r INNER JOIN ' + tblPrPost + ' pp ON (pp.IDPrikaz=r.IDPrikaz AND pp.Doklad=r.DokladPrPostup AND pp.Alt=r.AltPrPostup AND pp.IDOdchylkyDo IS NULL) INNER JOIN ' + tblKZ + ' k ON (k.ID=pp.Dilec) LEFT JOIN ' + tblRozpracOperRE + ' re ON (re.ID=r.ID) WHERE r.IDEvidRozpracOper=' + idEvEOp.ToString + ' ORDER BY r.DokladPrPostup DESC'; with Helios.OpenSQL(lSQL) do begin First; if (recordCount=1) then begin nazevOp:= VarToStr(FieldByNameValues('Nazev')); mjDilce:= VarToStr(FieldByNameValues('MJEvidence')); mnozProKoef:= VarToStr(FieldByNameValues('Mnoz_odv')).ToExtended; d:= VarToStr(FieldByNameValues('DokladPrPostup')).ToInteger; koefMn:= helUtils.RoundToEX (pocKAOld / mnozProKoef, -4); end; if (RecordCount>1) then begin while not(EOF) do begin nazevOp:= VarToStr(FieldByNameValues('Nazev')); mjDilce:= VarToStr(FieldByNameValues('MJEvidence')); mnozProKoef:= VarToStr(FieldByNameValues('Mnoz_odv')).ToExtended; if (nazevOp.ToLower.Contains('balení')) and (mjDilce.ToLower='ka') and (mnozProKoef<>0) then begin d:= VarToStr(FieldByNameValues('DokladPrPostup')).ToInteger; koefMn:= helUtils.RoundToEX (pocKAOld / mnozProKoef, -4); end; Next; end; end; end; if (koefMn<>0) and (d<>0) then begin lSQL:= 'SELECT ID, Mnoz_odv, DokladPrPostup FROM ' + tblRozpracOperR + ' WHERE IDEvidRozpracOper=' + idEvEOp.ToString + 'ORDER BY DokladPrPostup'; with Helios.OpenSQL(lSQL) do if (RecordCount>0) then begin First; while not(EOF) do begin d2:= VarToStr(FieldByNameValues('DokladPrPostup')).ToInteger; if (d=d2) then Helios.ExecSQL('UPDATE ' + tblRozpracOperR + ' SET Mnoz_odv=' + pocKAOld.ToString + ' WHERE ID=' + VarToStr(FieldByNameValues('ID'))) else Helios.ExecSQL('UPDATE ' + tblRozpracOperR + ' SET Mnoz_odv=ROUND(Mnoz_odv * ' + koefMn.ToString.Replace(',', '.') + ', 2) WHERE ID=' + VarToStr(FieldByNameValues('ID'))); Next; end; end; end; end; lSQL:= 'EXEC dbo.hp_EvidRozpracOper_AktualizaceCasuOper @IDEvidRozpracOper=' + idEvEOp.ToString + ', @CelkovyCas_S=' + casPrace.ToString + ', @KVO=1'; Helios.ExecSQL(lSQL); if (idPrac>0) then lSQL:= 'EXEC dbo.hp_EvidRozpracOper_Uzavreni @IDEvidRozpracOper=' + idEvEOp.ToString + ', @GenerovatEvidenciOperaci=1' else lSQL:= 'EXEC dbo.hp_EvidRozpracOper_Uzavreni @IDEvidRozpracOper=' + idEvEOp.ToString + ', @GenerovatEvidenciOperaci=0'; Helios.ExecSQL(lSQL); // na sklad 261 nemusim delat jednu vydejku doJedneVydejky:= false; lSQL:= 'SELECT ID FROM ' + tblRozpracOperR + ' WHERE IDEvidRozpracOper=' + idEvEOp.ToString; with Helios.OpenSQL (lSQL) do if (RecordCount>0) then begin First; while not(EOF) do begin idEvOpR:= VarToStr(FieldByNameValues('ID')).ToInteger; lSQL:= 'SELECT ISNULL(IDVyrCis,0) FROM ' + tblRozpracOperR + ' WHERE ID=' + idEvOpR.ToString; idVyrCisPrikaz:= helUtils.getHeliosIntVal (Helios, 0, lSQL); { lSQL:= 'UPDATE eor SET eor.Mnoz_odv=' + pocKA.ToString.Replace(',', '.') + ' FROM ' + tblRozpracOper + ' eo INNER JOIN ' + tblRozpracOperR + ' eor ON (eor.IDEvidRozpracOper=eo.ID)'; lSQL:= lSQL + ' WHERE eo.ID=' + idEvEOp.ToString; Helios.ExecSQL(lSQL); } lSQL:= 'SELECT ID FROM ' + tblPMZ + ' WHERE IDEvidRozpracOperR=' + idEvOpR.ToString; idMzdy:= helUtils.getHeliosIntVal (Helios, 0, lSQL); if (idMzdy>0) then begin idMezdS:= idMezdS + idMzdy.ToString + ','; idDZVyd:= 0; if (doJedneVydejky) then begin locIdVPr:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDPrikaz FROM ' + tblPMZ + ' WHERE ID=' + idMzdyS); lSQL:= 'SELECT ISNULL(pkz.VychoziSklad, r.VydejMatPol_SkladProGenHlavDZ) FROM ' + tblPrikazRada + ' r INNER JOIN ' + tblVPr + ' p ON (p.Rada=r.Rada) LEFT JOIN ' + tblParamKZ; lSQL:= lSQL + ' pkz ON (pkz.IDKmenZbozi=p.IDTabKmen) WHERE p.ID=' + locIdVPr.ToString; sklVyd:= helUtils.getHeliosStrVal(Helios, '261', lSQL); sklVyd:= '261'; lSQL:= 'SELECT r.RadaDokl_GenerRezVyd_Mat FROM ' + tblPrikazRada + ' r INNER JOIN ' + tblVPr + ' p ON (p.Rada=r.Rada) WHERE p.ID=' + locIdVPr.ToString; radaVyd:= helUtils.getHeliosStrVal(Helios, '223', lSQL); // radaVyd:= '223'; lSQL:= 'SELECT TOP(1) d.ID FROM ' + tblDZ + ' d INNER JOIN ' + tblDZe + ' de ON (d.ID=de.ID) WHERE d.DruhPohybuZbo=4 AND d.Realizovano=0 AND d.IDSklad=N' + sklVyd.QuotedString; lSQL:= lSQL + ' AND d.RadaDokladu=N' + radaVyd.QuotedString + ' AND de._Vyroba_DenSmena=N' + denSmena.QuotedString + ' ORDER BY d.ID DESC'; idDZVyd:= helUtils.getHeliosIntVal (Helios, 0, lSQL); end; // vydejka z evidence mzdy helUtils.ReseedTable (Helios, tblDZ); helUtils.ReseedTable (Helios, tblPZ); sRnd:= '[dbo].[' + helUtils.RandomString(6, '_PekPohOZ') + ']'; lSQL:= 'SET NOCOUNT ON' + CRLF + 'DROP TABLE IF EXISTS ' + sRnd + CRLF + 'CREATE TABLE ' + sRnd + ' (ID INT, IDPohZbo INT, IDKmen INT, IDSklad NVARCHAR(30), IDDoklad INT )' + CRLF; lSQL:= lSQL + 'DECLARE @e NVARCHAR(500)=N''''' + CRLF + 'IF OBJECT_ID(N''dbo.ep_Vyroba_GenVydejZeMzdy'', N''P'') IS NOT NULL EXEC dbo.ep_Vyroba_GenVydejZeMzdy @IDMzdy=' + idMzdy.ToString; lSQL:= lSQL + ', @IDDoklad=' + IfThen(idDZVyd=0, 'NULL', idDZVyd.ToString) + ', @realizujVydej=1, @respExistDokl=1, @spotrebaTesto=' + IfThen(spotrebaTesto, '1', '0'); lSQL:= lSQL + ', @errMsg=@e OUT, @extTab=N' + sRnd.QuotedString + ', @vydejAll=0, @denSmena=N' + denSmena.QuotedString + ', @smazVydejTesto=' + IfThen(spotrebaTesto, '1', '0'); if (spotreba702) then lSQL:= lSQL + ', @spotreba702=1'; lSQL:= lSQL + CRLF + 'SELECT @e'; errMsg:= helUtils.getHeliosStrVal (Helios, '', lSQL); // cannot insert NULL to IDSklad (TabStavSkladu) if (errMsg<>'') then begin Helios.ExecSQL ('UPDATE ' + tblPaletyUkonceni + ' SET ErrMsg=LEFT(N' + errMsg.QuotedString + ',255) WHERE ID=' + idPalUkonceni.ToString); lSQL:= 'DELETE FROM ' + tblPZ + ' WHERE ID IN (SELECT IDPohZbo FROM ' + sRnd + ' WHERE IDPohZbo IS NOT NULL)'; Helios.ExecSQL (lSQL); helUtils.ReseedTable (Helios, tblPZ); end else begin // kontrola na zadavani sarzi - vypnuto if (1=0) then begin {$IFDEF DEBUG} lSQL:= 'MERGE ' + sRnd + ' AS T USING (SELECT p.ID, p.IDDoklad, s.IDSklad, s.IDKmenZbozi FROM ' + tblPZ + ' p INNER JOIN ' + tblSS + ' s ON (s.ID=p.IDZboSklad)) AS S ON (T.IDPohZbo=S.ID)'; lSQL:= lSQL + ' WHEN MATCHED THEN UPDATE SET T.IDKmen=s.IDKmenZbozi, T.IDDoklad=S.IDDoklad, T.IDSklad=S.IDSklad;'; Helios.ExecSQL (lSQL); {$ENDIF} lSQL:= 'SELECT p.ID FROM ' + tblPZ + ' p INNER JOIN ' + tblSS + ' s ON (s.ID=p.IDZboSklad) INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) INNER JOIN ' + tblKZe; lSQL:= lSQL + ' ke ON (ke.ID=k.ID) WHERE p.ID IN (SELECT IDPohZbo FROM ' + sRnd + ' WHERE IDPohZbo IS NOT NULL) AND ke._Vyroba_ZadavatSarzi=1'; cnt:= helUtils.SQLGetRowCount(Helios, lSQL); if (cnt>0) then begin sTemp:= getHeliosRowToStringDelim (Helios, lSQL, ','); if (sTemp='') then sTemp:= helUtils.getHeliosStrVal(Helios, '', lSQL.Replace('T p.ID F', 'T STRING_AGG(p.ID,N'','') F')); fSarzeVydej:= TformSarzeVydej.Create(nil); try fSarzeVydej.Helios:= Helios; fSarzeVydej.idVydejka:= idDZVyd; fSarzeVydej.sIdPohybuOZ:= sTemp; fSarzeVydej.ShowModal; vydejOK:= fSarzeVydej.retOK; finally fSarzeVydej.Free; end; end; end; end; if (sRnd<>'') then Helios.ExecSQL('DROP TABLE IF EXISTS ' + sRnd); // prijemka z evidence mzdy lSQL:= ''; { lSQL:= 'DROP TABLE IF EXISTS #HDCTabGenOdvodZeMzdyKonfig' + CRLF + 'CREATE TABLE #HDCTabGenOdvodZeMzdyKonfig (RadaOdvodNaSklad NVARCHAR(3), SkladProOdvod NVARCHAR(30)'; lSQL:= lSQL + ', BezVyrobnichCisel BIT DEFAULT 0)' + CRLF + 'INSERT #HDCTabGenOdvodZeMzdyKonfig (SkladProOdvod) SELECT N''211''' + CRLF; } lSQL:= lSQL + 'DECLARE @e NVARCHAR(500)=N''''; IF OBJECT_ID(N''dbo.ep_Vyroba_GenOdvodZeMzdy'', N''P'') IS NOT NULL EXEC dbo.ep_Vyroba_GenOdvodZeMzdy @IDMzdy=' + idMzdy.ToString + ', @bezVyrCis=0, @realizujPrijem=1, @errMsg=@e OUT'; // @kopiiNaTechSklad=0, if (edtNazev1.Text.Contains('polotovar')) or (jePolotovar) then lSQL:= lSQL + ', @skladOdvod=N''311''' else lSQL:= lSQL + ', @skladOdvod=N''312'''; lSQL:= lSQL + CRLF + 'SELECT @e'; errMsg:= helUtils.getHeliosStrVal (Helios, '', lSQL); // posli JSON o vyrobene palete try resp:= GenerujJSON (idMzdy).ToJSON (false).Replace(#10, '').Replace(#9, '').Replace('''', ''); if (resp<>'') then begin resp:= TJSON.JsonEncode(resp); lSQL:= 'UPDATE ' + tblPalety + ' SET JSONDataKonec=N' + resp.QuotedString + ' WHERE ID=' + idPalety.ToString; Helios.ExecSQL(lSQL); try lParamList:= TStringStream.Create(''); lParamList.WriteString (resp); // http klient je stejny lHTTP:= TIdHTTP.Create; if (datMod.phServer.Contains('https')) then begin ssl:= TIdSSLIOHandlerSocketOpenSSL.Create(nil); ssl.SSLOptions.Method:= sslvTLSv1_2; ssl.SSLOptions.Mode:= sslmUnassigned; lHTTP.IOHandler:= ssl; end; lHTTP.HTTPOptions:= [hoKeepOrigProtocol, hoForceEncodeParams, hoNoProtocolErrorException, hoWantProtocolErrorContent]; lHTTP.Request.ContentType := 'application/ld+json'; lHTTP.Request.Accept := 'application/ld+json, text/javascript, */*; q=0.01'; resp:= ''; respStream:= TStringStream.Create(''); iPing:= uPing.Ping (datMod.getDomainName (datMod.phServer), resp); // if (helUtils.PingHost (helUtils.NetGetHostName(datMod.phServer))) then if (iPing=0) then begin lHTTP.Post (datMod.phServer + IfThen(datMod.phServer.EndsWith('/'), '', '/') + 'prikaz', lParamList, respStream); resp:= respStream.DataString.Replace('\/', '/'); Helios.ExecSQL('UPDATE ' + tblPalety + ' SET JSONKonecResp=N' + resp.QuotedString + ' WHERE ID=' + idPalety.ToString); end; finally respStream.Free; lParamList.Free; if (ssl<>nil) then ssl.Free; lHTTP.Free; end; end; finally end; { if (errMsg='') then begin lSQL:= 'SELECT TOP(1) d.ID FROM ' + tblPMZGenPZ + ' pmzg INNER JOIN ' + tblPZ + ' p ON (p.ID=pmzg.IDPohybu) INNER JOIN ' + tblDZ + ' d ON (d.ID=p.IDDoklad)'; lSQL:= lSQL + ' WHERE p.TypVyrobnihoDokladu=0 AND d.DruhPohybuZbo=0 AND d.Realizovano=0 AND pmzg.TypGen=2 AND pmzg.IDMzdy=' + idMzdyS; idDZ:= helUtils.getHeliosIntVal (Helios, 0, lSQL); if (idDZ>0) then begin vydejOK:= true; lSQL:= 'SELECT 1 FROM ' + tblDZe + ' WHERE ID=' + idDZ.ToString + ' AND _Vyroba_ZadatSarze=1'; if (helUtils.sqlExistsTestGeneral(Helios, lSQL)) then begin fSarzeVydej:= TformSarzeVydej.Create(nil); try fSarzeVydej.Helios:= Helios; fSarzeVydej.idVydejka:= idDZ; fSarzeVydej.ShowModal; vydejOK:= fSarzeVydej.retOK; finally fSarzeVydej.Free; end; end; if (vydejOK) then begin lSQL:= 'DECLARE @b BIT, @i INT' + CRLF + 'SET @i=' + Helios.UserId.ToString + CRLF; lSQL:= lSQL + 'EXEC dbo.hp_Realizuj_Prijem @ID=' + idDZ.ToString + ', @DatumRealizace=NULL, @Uzivatel=@i, @BylaChyba=@b OUT'; Helios.ExecSQL(lSQL); end; end; end; } end; Next; end; end; if (idPalUkonceni>0) and (idMezdS<>'') then begin if (RightStr(idMezdS,1)=',') then idMezdS:= LeftStr(idMezdS, idMezdS.Length-1); lSQL:= 'UPDATE ' + tblPaletyUkonceni + ' SET IDMezd=N' + idMzdyS.QuotedString + ' WHERE ID=' + idPalUkonceni.ToString; Helios.ExecSQL(lSQL); end; bid:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT DPBID FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_Vyroba_Palety'''); // idF:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblFormDef + ' WHERE Nazev2=N''PEK-2'''); if (bid>100000) then begin if (idFormPL>0) then begin podm:= 'hvw_Vyroba_Palety.CisloPalety=N' + edtPaleta.Text.QuotedString; Helios.PrintForm3 (bid, idFormPL, podm); end; end; if (rbPokracujAno.Checked) then begin helUtils.ReseedTable(Helios, tblRozpracOper); helUtils.ReseedTable(Helios, tblRozpracOperR); d:= 0; a:= ''; lSQL:= 'SELECT TOP(1) pp.Doklad, pp.Alt FROM ' + tblPrPost + ' pp INNER JOIN ' + tblCPrac + ' p ON (pp.pracoviste=p.Id) INNER JOIN ' + tblCStroju + ' s ON (s.IDPrac=p.ID)'; lSQL:= lSQL + ' WHERE pp.Typ=1 AND pp.IDOdchylkyDo IS NULL AND pp.IDPrikaz=' + idVPr.ToString + ' AND s.ID=' + idStroj.ToString; with Helios.OpenSQL(lSQL) do if (RecordCount=1) then begin d:= VarToStr(FieldByNameValues('Doklad')).ToInteger; a:= VarToStr(FieldByNameValues('Alt')); end; if (d>0) then begin novyPL:= ''; noveMnoz:= 0; lSQL:= 'SELECT ID FROM ' + tblPrikazVC + ' WHERE ID>' + idVyrCisPrikaz.ToString + ' AND IDPrikaz=' + idVPr.ToString + ' AND (Mnozstvi-Odvedeno-Zmetky)>0'; idVyrCisPrikaz:= helUtils.getHeliosIntVal(Helios, 0, lSQL); if (idVyrCisPrikaz>0) then begin lSQL:= 'SELECT VyrCislo, Mnozstvi-Odvedeno-Zmetky AS Zbytek FROM ' + tblPrikazVC + ' WHERE ID=' + idVyrCisPrikaz.ToString; with Helios.OpenSQL(lSQL) do if (RecordCount=1) then begin novyPL:= VarToStr(FieldByNameValues('VyrCislo')); noveMnoz:= VarToStr(FieldByNameValues('Zbytek')).ToExtended; end; end; if (noveMnoz>0) then begin lSQL:= 'DECLARE @i INT, @i2 INT' + CRLF + 'EXEC @i=dbo.ep_Vyroba_InsertEvidRozpracOper @IDZamestnance=' + datMod.idZamMistr.ToString + ', @IDStroje=' + idStroj.ToString + CRLF; lSQL:= lSQL + 'IF (@i IS NOT NULL) EXEC @i2=dbo.ep_Vyroba_InsertEvidRozpracOperPol @IdEvidRozpOper=@i, @IdPrikaz=' + idVPr.ToString + ', @doklPrPost=' + d.ToString + ', @altPrPost=N' + a.QuotedString; lSQL:= lSQL + ', @cisloPL=N' + novyPL.QuotedString + ', @sarze=N' + edtSarze.Text.QuotedString + IfThen(noveMnoz>0, ', @mnozOdv=' + noveMnoz.ToString, ''); Helios.ExecSQL(lSQL); end; end; end; Close; end; // mam Evidenci rozprac. oper. Helios.ExecSQL('UPDATE ' + tblPalety + ' SET DatUkonceni=GETDATE() WHERE ID=' + idPalety.ToString); if (prerusit) and (idVPr>0) then Helios.ExecSQL('UPDATE ' + tblPrikaz + ' SET StavPrikazu=40 WHERE ID=' + idVPr.ToString); end; Screen.Cursor:= crDefault; SetClassLong(TForm(Sender).Handle, GCL_HCURSOR, Screen.Cursors[crDefault]); end; procedure TformUkonceniPalety.edtKAExit (Sender: TObject); begin edtKA.Text:= edtKA.Text.Trim; if not(TryStrToFloat(edtKA.Text, pocKA)) then pocKA:= 0; pocKS:= pocKA * ksVKA; edtKs.Text:= FormatFloat('##,##0.##', pocKS); end; procedure TformUkonceniPalety.edtKsExit (Sender: TObject); begin edtKs.Text:= edtKs.Text.Trim; if not(TryStrToFloat(edtKs.Text, pocKS)) then pocKS:= 0; pocKA:= pocKS/ksVKA; edtKA.Text:= FormatFloat('#,##0.##', pocKA); end; procedure TformUkonceniPalety.FormClose (Sender: TObject; var Action: TCloseAction); begin Action:= TCloseAction.caFree; end; procedure TformUkonceniPalety.FormShow (Sender: TObject); var lSQL: string; begin NactiParemetry; tiskNa:= 1; lSQL:= 'SELECT ISNULL(_KL,0) FROM ' + tblKZe + ' WHERE ID=' + idKmen.ToString; idFormKA:= helUtils.getHeliosIntVal (Helios, 0, lSQL); // lblWarnStitekKA.Visible:= (idFormKA=0); lSQL:= 'SELECT ISNULL(_PalStitek,0) FROM ' + tblKZe + ' WHERE ID=' + idKmen.ToString; idFormPS:= helUtils.getHeliosIntVal (Helios, 0, lSQL); lSQL:= 'SELECT ISNULL(_PLKK,0) FROM ' + tblKZe + ' WHERE ID=' + idKmen.ToString; idFormPL:= helUtils.getHeliosIntVal (Helios, 0, lSQL); // lblWarnStitekPL.Visible:= (idFormPL=0); SetWindowLong(btnZapisPaletyATisk.Handle, GWL_STYLE, GetWindowLong((btnZapisPaletyATisk as TWinControl).Handle, GWL_STYLE) or BS_MULTILINE); edtPaleta.Text:= paleta; edtSarze.Text:= sarze; edtStroj.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblCStroju + ' WHERE ID=' + idStroj.ToString); edtDatVyroby.Text:= FormatDateTime('dd.mm.yyyy', Now); lSQL:= 'DECLARE @d DATETIME=GETDATE(); SELECT Smena FROM dbo.ef_GetDatumASmenu (@d)'; with Helios.OpenSQL(lSQL) do edtSmena.Text:= VarToStr(FieldByNameValues('Smena')); edtPokrac.Text:= '1'; if (edtKA.CanFocus) then edtKA.SetFocus; LabeledEdit2.EditLabel.Caption:= ''; end; end.