Files
Kdynium-plgKdynium/frmOdvTavby.pas
2025-05-21 21:19:51 +02:00

2202 lines
86 KiB
ObjectPascal

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) <selCol> FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND (ID=' + idVOp.ToString + ' OR ID1=' + idVOp.ToString + ')';
lSQL:= lSQL.Replace('<selCol>', 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) <selCol> FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND (ID=' + idVOp.ToString + ' OR ID1=' + idVOp.ToString + ')';
lSQL:= lSQL.Replace('<selCol>', 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) <selCol> FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND (ID=' + idVOp.ToString + ' OR ID1=' + idVOp.ToString + ')';
{
if (param='kusy_pozadovane') then
lSQL:= lSQL.Replace('<selCol>', 'CONVERT(numeric(19,6), CASE WHEN Kusy_nepotrebne>kusy_zad THEN 0.0 ELSE kusy_zad-kusy_nepotrebne END)')
else
}
lSQL:= lSQL.Replace('<selCol>', 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.