1263 lines
43 KiB
ObjectPascal
1263 lines
43 KiB
ObjectPascal
unit frmEvidOper;
|
|
|
|
interface
|
|
|
|
uses
|
|
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms,
|
|
Vcl.Dialogs, ddPlugin_TLB, Vcl.StdCtrls, TBPackageU, Vcl.ExtCtrls, Data.DB, MemDS, VirtualTable, NxGridView6, NxColumns6,
|
|
NxControls6, NxCustomGrid6, NxVirtualGrid6, NxDBGrid6, NxDBColumns6, NxTypes6, Vcl.Mask, RzEdit, System.ImageList,
|
|
Vcl.ImgList, Vcl.ComCtrls, frmVstupDat, AdvTouchKeyboard, RxToolEdit, RzButton, RzRadChk;
|
|
|
|
const
|
|
CRLF = #13#10;
|
|
tblDavky = '[dbo].[_hdc_TabDavky]';
|
|
KLF_ACTIVATE = $00000001;
|
|
KLF_SETFORPROCESS = $00000100;
|
|
|
|
|
|
type
|
|
TTBVirtualTable = class helper for TVirtualTable
|
|
published
|
|
function IsFirstRecord: boolean;
|
|
function IsLastRecord: boolean;
|
|
end;
|
|
|
|
TOperace = record
|
|
id, idPrikaz: Integer;
|
|
doklad: Integer;
|
|
alt, skupzbo, regcis, operace, nazev, idEvidence: string;
|
|
ksZadane, ksZive, ksZmetky: extended;
|
|
odvadeci: boolean;
|
|
end;
|
|
|
|
TformEvidOper = class(TForm)
|
|
edtBarCode: TLabeledEdit;
|
|
lblDavka: TLabel;
|
|
selBarCode: TButtonedEdit;
|
|
tbl: TVirtualTable;
|
|
dsZavady: TDataSource;
|
|
tblKodZavady: TStringField;
|
|
tblPopis: TStringField;
|
|
tblMnozstvi: TFloatField;
|
|
grd: TNextDBGrid6;
|
|
view: TNxReportGridView6;
|
|
edtCisZam: TLabeledEdit;
|
|
selCisZam: TButtonedEdit;
|
|
lblZamest: TLabel;
|
|
edtDobreKs: TRzNumericEdit;
|
|
Label2: TLabel;
|
|
colKod: TNxDBTextColumn6;
|
|
colPopis: TNxDBTextColumn6;
|
|
colMnozstvi: TNxDBNumberColumn6;
|
|
btnOK: TButton;
|
|
btnZrusit: TButton;
|
|
btnAdd: TButton;
|
|
imgList: TImageList;
|
|
lblOperace: TLabel;
|
|
edtBarCode2: TLabeledEdit;
|
|
selBarCode2: TButtonedEdit;
|
|
pgCtrlZavady: TPageControl;
|
|
shNeopravitelne: TTabSheet;
|
|
shInterneOpravitelne: TTabSheet;
|
|
tblZavadyIO: TVirtualTable;
|
|
StringField1: TStringField;
|
|
StringField2: TStringField;
|
|
FloatField1: TFloatField;
|
|
tblNeodvadet: TBooleanField;
|
|
dsZavadyIO: TDataSource;
|
|
grdIO: TNextDBGrid6;
|
|
viewIO: TNxReportGridView6;
|
|
colKod2: TNxDBTextColumn6;
|
|
colPopis2: TNxDBTextColumn6;
|
|
colMnozstvi2: TNxDBNumberColumn6;
|
|
btnAddIO: TButton;
|
|
lblZapisDat: TLabel;
|
|
pnlCalc: TPanel;
|
|
tKeyb: TAdvTouchKeyboard;
|
|
edtNumVal: TRzNumericEdit;
|
|
btnCalcClose: TButton;
|
|
lblPnl: TLabel;
|
|
lblMaloOperaci: TLabel;
|
|
lblZmetky: TLabel;
|
|
cbOpakTrideni: TRzCheckBox;
|
|
shEvid: TTabSheet;
|
|
tblEvid: TVirtualTable;
|
|
dsEvid: TDataSource;
|
|
tblEvidDatum: TDateField;
|
|
tblEvidZamest: TStringField;
|
|
tblEvidMnoz: TFloatField;
|
|
grdEvid: TNextDBGrid6;
|
|
colEvidDatum: TNxDBDateColumn6;
|
|
colEvidZamest: TNxDBTextColumn6;
|
|
colEvidMnoz: TNxDBNumberColumn6;
|
|
viewEvid: TNxReportGridView6;
|
|
procedure FormShow(Sender: TObject);
|
|
procedure btnAddClick(Sender: TObject);
|
|
procedure edtBarCodeExit(Sender: TObject);
|
|
procedure selBarCodeClick(Sender: TObject);
|
|
procedure edtCisZamExit(Sender: TObject);
|
|
procedure btnOKClick(Sender: TObject);
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
procedure grdCellClick(Sender: TObject; ACol, ARow: Integer; Button: TMouseButton);
|
|
procedure btnZrusitClick(Sender: TObject);
|
|
procedure edtBarCode2Exit(Sender: TObject);
|
|
procedure selBarCode2Click(Sender: TObject);
|
|
procedure btnAddIOClick(Sender: TObject);
|
|
procedure grdIOCellClick(Sender: TObject; ACol, ARow: Integer; Button: TMouseButton);
|
|
procedure colKodDrawBackground(Sender: TObject; ACol, ARow: Integer; CellRect: TRect; State: TNxCellPaintingState);
|
|
procedure tKeybKeyClick(Sender: TObject; Index: Integer);
|
|
procedure tKeybKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
procedure btnCalcCloseClick(Sender: TObject);
|
|
procedure edtDobreKsEnter(Sender: TObject);
|
|
procedure edtCisZamKeyPress(Sender: TObject; var Key: Char);
|
|
procedure edtNumValKeyPress(Sender: TObject; var Key: Char);
|
|
procedure edtBarCode2KeyPress(Sender: TObject; var Key: Char);
|
|
procedure edtBarCodeKeyPress(Sender: TObject; var Key: Char);
|
|
procedure edtDobreKsChange(Sender: TObject);
|
|
procedure tblAfterPost(DataSet: TDataSet);
|
|
procedure tblZavadyIOAfterPost(DataSet: TDataSet);
|
|
procedure tblAfterDelete(DataSet: TDataSet);
|
|
procedure tblZavadyIOAfterDelete(DataSet: TDataSet);
|
|
procedure cbOpakTrideniClick(Sender: TObject);
|
|
private
|
|
procedure VypocetKs;
|
|
public
|
|
Helios: IHelios;
|
|
jeTest: boolean;
|
|
filtrRada: string;
|
|
end;
|
|
|
|
var
|
|
formEvidOper: TformEvidOper;
|
|
fVstDat: TformVstupDat;
|
|
oVar: OleVariant;
|
|
operace: TOperace;
|
|
evidID, pomText: string;
|
|
idVOp, idDavky, druhDavky: integer;
|
|
idZavadaLouh: integer;
|
|
VPrDavky: string;
|
|
kodZavady, popisZavady, podm: string;
|
|
exitKeyb: boolean;
|
|
calcAkce: byte; // 1 - edit Dobre ks / 2 - Neopravitelne / 3 - Interne Opravitelne
|
|
calcMnozEdit: boolean;
|
|
aktRowNum: integer;
|
|
davkaZbytekOp, origChciEvid, zmetky, zmetkyIO, zmetkyNeodv: Extended;
|
|
chciEvidVic: boolean;
|
|
|
|
implementation
|
|
uses System.StrUtils, helUtils;
|
|
|
|
{$R *.dfm}
|
|
|
|
|
|
function TTBVirtualTable.IsFirstRecord: Boolean;
|
|
begin
|
|
result:= False;
|
|
if (recNo=1) then
|
|
result:= true;
|
|
end;
|
|
|
|
|
|
function TTBVirtualTable.IsLastRecord: Boolean;
|
|
begin
|
|
result:= False;
|
|
if (recNo=RecordCount) then
|
|
result:= true;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformEvidOper.btnAddClick(Sender: TObject);
|
|
var i: integer;
|
|
begin
|
|
podm:= 'TabCZavad.Blokovano=0 AND LEFT(TabCZavad.kod,1)<>N''V''';
|
|
if (tbl.RecordCount>0) then
|
|
begin
|
|
podm:= podm + ' AND TabCZavad.Kod NOT IN (';
|
|
i:= tbl.RecNo;
|
|
grd.DataSource.DataSet.DisableControls;
|
|
tbl.First;
|
|
while not(tbl.Eof) do
|
|
begin
|
|
podm:= podm + 'N' + QuotedStr(tbl.FieldByName('KodZavady').AsString) + ',';
|
|
tbl.Next;
|
|
end;
|
|
tbl.RecNo:= i;
|
|
grd.DataSource.DataSet.EnableControls;
|
|
SetLength(podm, Length(podm)-1);
|
|
podm:= podm + ')';
|
|
end;
|
|
{
|
|
if (filtrRada<>'') then
|
|
begin
|
|
podm:= podm + ' AND CONVERT(nvarchar(200), TabCZavad.Poznamka) LIKE ';
|
|
if (LeftStr(filtrRada,3)='224') then
|
|
podm:= podm + 'N''%KONEÈNÁ%''';
|
|
end;
|
|
}
|
|
kodZavady:= '';
|
|
popisZavady:= '';
|
|
if Helios.Prenos(11015, 'kod', oVar, podm, 'Vyberte typ ZÁVADY', true) then
|
|
kodZavady:= VarToStr(oVar);
|
|
{
|
|
kodZavady:= '';
|
|
pnlCalc.Visible:= true;
|
|
btnOK.Enabled:= false;
|
|
btnZrusit.Enabled:= false;
|
|
lblPnl.Caption:= 'Kód závady';
|
|
calcAkce:= 4;
|
|
calcMnozEdit:= false;
|
|
|
|
tKeyb.Visible:= true;
|
|
tKeyb.Width:= 330;
|
|
tKeyb.Height:= 305;
|
|
edtNumVal.SetFocus;
|
|
pnlCalc.Repaint;
|
|
}
|
|
|
|
// kod:= Trim(InputBox('Zadejte kód ZÁVADY', 'Kód:', ''));
|
|
if (kodZavady<>'') then
|
|
begin
|
|
if (tbl.Locate('KodZavady', VarArrayOf([kodZavady]), [loCaseInsensitive])) then
|
|
Helios.Error(#1'Tuto závadu jste již zadali.'#1)
|
|
else
|
|
with Helios.OpenSQL('SELECT nazev FROM ' + tblCZavad + ' WHERE kod=N' + QuotedStr(kodZavady)) do
|
|
if (RecordCount<>1) then
|
|
Helios.Error(#1'Nebyl nalezen zadaný kód ZÁVADY'#1)
|
|
else
|
|
begin
|
|
popisZavady:= VarToStr(FieldValues(0));
|
|
pnlCalc.Visible:= true;
|
|
btnOK.Enabled:= false;
|
|
btnZrusit.Enabled:= false;
|
|
lblPnl.Caption:= 'Množství závady ' + kodZavady;
|
|
calcAkce:= 2;
|
|
calcMnozEdit:= false;
|
|
edtNumVal.Value:= 0;
|
|
edtNumVal.SelectAll;
|
|
tKeyb.Visible:= true;
|
|
tKeyb.Width:= 330;
|
|
tKeyb.Height:= 305;
|
|
edtNumVal.SetFocus;
|
|
pnlCalc.Repaint;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformEvidOper.btnAddIOClick(Sender: TObject);
|
|
var i: integer;
|
|
begin
|
|
podm:= 'TabCZavad.Blokovano=0 AND LEFT(TabCZavad.kod,1)=N''V''';
|
|
if (tblZavadyIO.RecordCount>0) then
|
|
begin
|
|
podm:= podm + ' AND TabCZavad.Kod NOT IN (';
|
|
i:= tblZavadyIO.RecNo;
|
|
grd.DataSource.DataSet.DisableControls;
|
|
tblZavadyIO.First;
|
|
while not(tblZavadyIO.Eof) do
|
|
begin
|
|
podm:= podm + 'N' + QuotedStr(tblZavadyIO.FieldByName('KodZavady').AsString) + ',';
|
|
tblZavadyIO.Next;
|
|
end;
|
|
tblZavadyIO.RecNo:= i;
|
|
grd.DataSource.DataSet.EnableControls;
|
|
SetLength(podm, Length(podm)-1);
|
|
podm:= podm + ')';
|
|
end;
|
|
|
|
{
|
|
if (filtrRada<>'') then
|
|
begin
|
|
podm:= podm + ' AND CONVERT(nvarchar(200), TabCZavad.Poznamka) LIKE ';
|
|
if (LeftStr(filtrRada,3)='224') then
|
|
podm:= podm + 'N''%KONEÈNÁ%''';
|
|
end;
|
|
}
|
|
kodZavady:= '';
|
|
if Helios.Prenos(11015, 'kod', oVar, podm, 'Vyberte typ ZÁVADY', true) then
|
|
kodZavady:= VarToStr(oVar);
|
|
// kod:= Trim(InputBox('Zadejte kód ZÁVADY', 'Kód:', ''));
|
|
if (kodZavady<>'') then
|
|
begin
|
|
if (tblZavadyIO.Locate('KodZavady', VarArrayOf([kodZavady]), [loCaseInsensitive])) then
|
|
Helios.Error(#1'Tuto závadu jste již zadali.'#1)
|
|
else
|
|
with Helios.OpenSQL('SELECT nazev FROM ' + tblCZavad + ' WHERE kod=N' + QuotedStr(kodZavady)) do
|
|
if (RecordCount<>1) then
|
|
Helios.Error(#1'Nebyl nalezen zadaný kód ZÁVADY'#1)
|
|
else
|
|
begin
|
|
popisZavady:= VarToStr(FieldValues(0));
|
|
pnlCalc.Visible:= true;
|
|
btnOK.Enabled:= false;
|
|
btnZrusit.Enabled:= false;
|
|
lblPnl.Caption:= 'Množství závady ' + kodZavady;
|
|
calcAkce:= 3;
|
|
calcMnozEdit:= false;
|
|
edtNumVal.Value:= 0;
|
|
edtNumVal.SelectAll;
|
|
tKeyb.Visible:= true;
|
|
tKeyb.Width:= 330;
|
|
tKeyb.Height:= 305;
|
|
edtNumVal.SetFocus;
|
|
pnlCalc.Repaint;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformEvidOper.btnOKClick(Sender: TObject);
|
|
var lSQL, compName, zmetkyAll: string;
|
|
ksOK, koefDavkaOK: extended;
|
|
pomNum, allNum: Integer;
|
|
begin
|
|
if (edtCisZam.Text='') then
|
|
begin
|
|
Helios.Error(#1'Není zadán zamìstnanec.'#1);
|
|
edtCisZam.SelectAll;
|
|
edtCisZam.SetFocus;
|
|
Exit;
|
|
end;
|
|
if (idVOp>0) then
|
|
begin
|
|
lblZapisDat.Visible:= true;
|
|
self.Repaint;
|
|
|
|
lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabEvidPracePlg'') IS NOT NULL DELETE FROM dbo._temp_TabEvidPracePlg WHERE Stanice=HOST_NAME()' + CRLF;
|
|
lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabEvidPraceZavadyPlg'') IS NOT NULL DELETE FROM dbo._temp_TabEvidPraceZavadyPlg WHERE Stanice=HOST_NAME()' + CRLF;
|
|
Helios.ExecSQL(lSQL);
|
|
|
|
lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabEvidPracePlg'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabEvidPracePlg) DROP TABLE dbo._temp_TabEvidPracePlg' + CRLF;
|
|
Helios.ExecSQL(lSQL);
|
|
lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabEvidPraceZavadyPlg'') IS NOT NULL IF NOT EXISTS(SELECT * FROM dbo._temp_TabEvidPraceZavadyPlg) DROP TABLE dbo._temp_TabEvidPraceZavadyPlg' + CRLF;
|
|
Helios.ExecSQL(lSQL);
|
|
|
|
lSQL:= 'IF OBJECT_ID(N''tempdb..#TabEvidPracePlg'') IS NOT NULL DROP TABLE #TabEvidPracePlg' + CRLF + 'CREATE TABLE #TabEvidPracePlg (TypOdvodu TINYINT, IDDavky INT, IDOperace INT';
|
|
lSQL:= lSQL + ', IDPrikaz INT, kusy_dobre NUMERIC(19,6) DEFAULT 0.0 NOT NULL, kusy_zavada NUMERIC(19,6) DEFAULT 0.0 NOT NULL, OpakovanaOperace BIT DEFAULT 0, CisloZam INT NOT NULL';
|
|
lSQL:= lSQL + ', CilovePrikazy NVARCHAR(2000) DEFAULT N'''', Autor NVARCHAR(80) DEFAULT SUSER_SNAME(), Stanice NVARCHAR(100) DEFAULT HOST_NAME())' + CRLF;
|
|
lSQL:= lSQL + 'IF OBJECT_ID(N''tempdb..#TabEvidPraceZavadyPlg'') IS NOT NULL DROP TABLE #TabEvidPraceZavadyPlg' + CRLF + 'CREATE TABLE #TabEvidPraceZavadyPlg (KodZavady';
|
|
lSQL:= lSQL + ' NVARCHAR(15) NOT NULL, Mnozstvi NUMERIC(19,6) DEFAULT 0.0 NOT NULL, JeInterneOprav BIT DEFAULT 0, Neodvadet BIT DEFAULT 0, Autor NVARCHAR(80) DEFAULT SUSER_SNAME()';
|
|
lSQL:= lSQL + ', Stanice NVARCHAR(100) DEFAULT HOST_NAME())';
|
|
if (jeTest) then
|
|
begin
|
|
lSQL:= StringReplace(lSQL, '#TabEvidPrace', 'dbo._temp_TabEvidPrace', [rfReplaceAll]);
|
|
lSQL:= StringReplace(lSQL, 'tempdb..', '', [rfReplaceAll]);
|
|
end;
|
|
Helios.ExecSQL(lSQL);
|
|
|
|
{
|
|
ksOK:= edtDobreKs.Value;
|
|
if (zmetky<=edtDobreKs.Value) then
|
|
ksOK:= edtDobreKs.Value - zmetky;
|
|
if (zmetky>edtDobreKs.Value) then
|
|
ksOK:= 0;
|
|
if (edtDobreKs.Value-zmetky>0) then
|
|
}
|
|
ksOK:= edtDobreKs.Value - zmetky - zmetkyNeodv;
|
|
|
|
koefDavkaOK:= 1;
|
|
if (davkaZbytekOp<ksOK) then
|
|
begin
|
|
koefDavkaOK:= davkaZbytekOp/ksOK;
|
|
ksOK:= davkaZbytekOp;
|
|
end;
|
|
|
|
lSQL:= 'INSERT #TabEvidPracePlg (TypOdvodu, IDDavky, IDOperace, kusy_dobre, CisloZam, OpakovanaOperace, CilovePrikazy) SELECT 4, ' + idDavky.ToString + ', ' + idVOp.ToString;
|
|
lSQL:= lSQL + ', ' + StringReplace(ksOK.ToString, ',', '.', [rfReplaceAll]) + ', ' + edtCisZam.Text + ' , ' + IfThen(cbOpakTrideni.Checked, '1', '0');
|
|
lSQL:= lSQL + ', N' + VPrDavky.QuotedString + CRLF;
|
|
lSQL:= lSQL + 'MERGE #TabEvidPracePlg AS T USING ' + tblPrPost + ' AS S ON (T.IDOperace=S.ID) WHEN MATCHED THEN UPDATE SET T.IDPrikaz=S.IDPrikaz;';
|
|
if (jeTest) then
|
|
lSQL:= StringReplace(lSQL, '#TabEvidPrace', 'dbo._temp_TabEvidPrace', [rfReplaceAll]);
|
|
Helios.ExecSQL(lSQL);
|
|
|
|
tbl.First;
|
|
allNum:= Trunc(zmetky);
|
|
while not(tbl.Eof) do
|
|
begin
|
|
pomNum:= tbl.FieldByName('Mnozstvi').AsInteger;
|
|
if (pomNum>0) then
|
|
begin
|
|
if (koefDavkaOK<>1) then
|
|
begin
|
|
pomNum:= Trunc(pomNum * koefDavkaOK);
|
|
if (tbl.RecNo=tbl.RecordCount) then
|
|
pomNum:= allNum
|
|
else
|
|
allNum:= allNum - pomNum;
|
|
end;
|
|
|
|
if (pomNum>0) then
|
|
begin
|
|
lSQL:= 'INSERT #TabEvidPraceZavadyPlg (KodZavady, Mnozstvi, JeInterneOprav) SELECT N' + QuotedStr(tbl.FieldByName('KodZavady').AsString) + ', ';
|
|
lSQL:= lSQL + StringReplace(pomNum.ToString, ',', '.' ,[rfReplaceAll]) + ', 0';
|
|
if (jeTest) then
|
|
lSQL:= StringReplace(lSQL, '#TabEvidPrace', 'dbo._temp_TabEvidPrace', [rfReplaceAll]);
|
|
Helios.ExecSQL(lSQL);
|
|
end;
|
|
end;
|
|
tbl.Next;
|
|
end;
|
|
|
|
tblZavadyIO.First;
|
|
allNum:= Trunc(zmetkyIO);
|
|
while not(tblZavadyIO.Eof) do
|
|
begin
|
|
pomNum:= tblZavadyIO.FieldByName('Mnozstvi').AsInteger;
|
|
if (pomNum>0) then
|
|
begin
|
|
if (koefDavkaOK<>1) then
|
|
begin
|
|
pomNum:= Trunc(pomNum * koefDavkaOK);
|
|
if (tblZavadyIO.RecNo=tblZavadyIO.RecordCount) then
|
|
pomNum:= allNum
|
|
else
|
|
allNum:= allNum - pomNum;
|
|
end;
|
|
|
|
if (pomNum>0) then
|
|
begin
|
|
lSQL:= 'INSERT #TabEvidPraceZavadyPlg (KodZavady, Mnozstvi, JeInterneOprav, Neodvadet) SELECT N' + QuotedStr(tblZavadyIO.FieldByName('KodZavady').AsString) + ', ';
|
|
lSQL:= lSQL + StringReplace(pomNum.ToString, ',', '.' ,[rfReplaceAll]) + ', 1, ' + IfThen(tblZavadyIO.FieldByName('Neodvadet').AsBoolean, '1', '0');
|
|
if (jeTest) then
|
|
lSQL:= StringReplace(lSQL, '#TabEvidPrace', 'dbo._temp_TabEvidPrace', [rfReplaceAll]);
|
|
Helios.ExecSQL(lSQL);
|
|
end;
|
|
end;
|
|
tblZavadyIO.Next;
|
|
end;
|
|
|
|
lSQL:= 'UPDATE #TabEvidPracePlg SET kusy_zavada=' + StringReplace(FloatToStr(zmetky + zmetkyIO + zmetkyNeodv), ',', '.', [rfReplaceAll]) + ' WHERE Stanice=HOST_NAME()';
|
|
if (jeTest) then
|
|
lSQL:= StringReplace(lSQL, '#TabEvidPrace', 'dbo._temp_TabEvidPrace', [rfReplaceAll]);
|
|
Helios.ExecSQL(lSQL);
|
|
|
|
if not(jeTest) then
|
|
begin
|
|
lSQL:= 'IF OBJECT_ID(N''dbo.ep_Vyroba_EvidPracePlg'') IS NOT NULL EXEC dbo.ep_Vyroba_EvidPracePlg';
|
|
try
|
|
Helios.ExecSQL(lSQL);
|
|
except on E:Exception do
|
|
Helios.Error(#1 + E.Message + #1);
|
|
end;
|
|
end;
|
|
Close;
|
|
end
|
|
else
|
|
begin
|
|
Helios.Error(#1'Není naètena Dávka nebo Operace.'#1);
|
|
if (idVOp=0) then
|
|
edtBarCode2.SetFocus;
|
|
if (idDavky=0) then
|
|
edtBarCode.SetFocus;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformEvidOper.btnZrusitClick(Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformEvidOper.cbOpakTrideniClick(Sender: TObject);
|
|
var ksLouh, ksLouhEvid: extended;
|
|
begin
|
|
if (cbOpakTrideni.Checked) and (operace.id>0) and (operace.skupzbo.ToUpper='P41') and (AnsiContainsText(operace.nazev, 'tøídìn')) then
|
|
begin
|
|
lSQL:= 'SELECT SUM(Mnozstvi) FROM dbo._hdc_TabZmetkyPredpoklad WHERE IDMzdy IN (' + operace.idEvidence + ') AND IDZavady=' + idZavadaLouh.ToString;
|
|
ksLouh:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
|
|
operace.ksZive:= ksLouh;
|
|
lSQL:= 'SELECT SUM(z.kusy_odv) FROM ' + tblMzdZm + ' z LEFT JOIN ' + tblMzdZmE + ' e ON (e.ID=z.ID) INNER JOIN ' + tblPrPost + ' p ON (p.Doklad=z.DokladPrPostup';
|
|
lSQL:= lSQL + ' AND p.Alt=z.AltPrPostup AND p.IDPrikaz=z.IDPrikaz) WHERE z.IDPrikaz=' + operace.idPrikaz.ToString + ' AND p.Odvadeci=1';
|
|
lSQL:= lSQL + ' AND e._OpakovanaKontrola=1';
|
|
ksLouhEvid:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
|
|
davkaZbytekOp:= ksLouh - ksLouhEvid;
|
|
lblOperace.Caption:= Trim(operace.operace) + ' / ' + operace.nazev + ' *** ' + operace.skupzbo + ' ' + operace.nazev;
|
|
lblOperace.Caption:= lblOperace.Caption + ' / v dávce zbývá ' + StringReplace(davkaZbytekOp.ToString, ',', '.', [rfReplaceAll]) + ' oper.';
|
|
if (davkaZbytekOp=0) then
|
|
lblOperace.Font.Color:= clRed
|
|
else
|
|
lblOperace.Font.Color:= clWindowText;
|
|
edtCisZam.SetFocus;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformEvidOper.colKodDrawBackground(Sender: TObject; ACol, ARow: Integer; CellRect: TRect; State: TNxCellPaintingState);
|
|
var lSQL: string;
|
|
begin
|
|
if (ARow=0) then
|
|
lSQL:= '';
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformEvidOper.edtBarCode2Exit(Sender: TObject);
|
|
var lSQL, dokl, alt: string;
|
|
ksZive: Extended;
|
|
begin
|
|
edtBarcode2.Text:= Trim(edtBarcode2.Text);
|
|
edtBarcode2.Text:= helUtils.StripChars(edtBarcode2.Text, ['''', '"', '-', ';', ' ', '=']);
|
|
if (edtBarCode2.Text='') then
|
|
Exit;
|
|
if (LeftStr(edtBarCode2.Text,1).ToLower<>'a') then
|
|
begin
|
|
Helios.Error(#1 + 'Kód Operace musí zaèínat písmenem A' + #1);
|
|
edtBarCode2.Text:= '';
|
|
edtBarCode2.SetFocus;
|
|
end
|
|
else
|
|
begin
|
|
operace.id:= 0;
|
|
operace.doklad:= 0;
|
|
operace.alt:= '';
|
|
operace.operace:= '';
|
|
operace.nazev:= '';
|
|
operace.ksZadane:= 0;
|
|
operace.ksZive:= 0;
|
|
operace.ksZmetky:= 0;
|
|
operace.idEvidence:= '0';
|
|
operace.odvadeci:= false;
|
|
idVOp:= 0;
|
|
lblOperace.Caption:= '';
|
|
idVOp:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND BarCode=N' + edtBarcode2.Text.QuotedString);
|
|
if (idVOp>0) then
|
|
begin
|
|
operace.id:= idVOp;
|
|
lSQL:= 'SELECT o.operace, o.Nazev, k.SkupZbo, k.RegCis FROM ' + tblPrPost + ' o INNER JOIN ' + tblPrikaz + ' p ON (p.ID=o.IDPrikaz) INNER JOIN ';
|
|
lSQL:= lSQL + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE o.IDOdchylkyDo IS NULL AND (o.ID=' + idVOp.ToString + ' OR o.ID1=' + idVOp.ToString + ')';
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
operace.operace:= VarToStr(FieldValues(0));
|
|
operace.nazev:= Trim(VarToStr(FieldValues(1)));
|
|
operace.skupzbo:= VarToStr(FieldValues(2));
|
|
operace.regcis:= VarToStr(FieldValues(3));
|
|
lblOperace.Caption:= Trim(operace.operace) + ' / ' + operace.nazev + ' *** ' + operace.skupzbo + ' ' + operace.nazev;
|
|
if (AnsiContainsText(operace.nazev, 'tøídìn')) and (operace.skupzbo.ToUpper='P41') then
|
|
cbOpakTrideni.Visible:= true;
|
|
end;
|
|
with Helios.OpenSQL('SELECT Kusy_zad, Doklad, Alt, IDPrikaz, Odvadeci FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND (ID=' + idVOp.ToString + ' OR ID1=' + idVOp.ToString + ')') do
|
|
begin
|
|
operace.ksZadane:= StrToFloat(StringReplace(VarToStr(FieldValues(0)),',','.',[rfReplaceAll]));
|
|
operace.doklad:= StrToInt(VarToStr(FieldValues(1)));
|
|
operace.alt:= VarToStr(FieldValues(2));
|
|
operace.idPrikaz:= StrToInt(VarToStr(FieldValues(3)));
|
|
operace.odvadeci:= StrToBool(VarToStr(FieldValues(4)));
|
|
lSQL:= 'SELECT STRING_AGG(ID, '','') FROM ' + tblMzdZm + ' WHERE IDPrikaz=' + operace.idPrikaz.ToString + ' AND DokladPrPostup=' + operace.doklad.ToString;
|
|
lSQL:= lSQL + ' AND AltPrPostup=N' + QuotedStr(operace.alt);
|
|
operace.idEvidence:= helUtils.getHeliosStrVal(Helios, '0', lSQL);
|
|
end;
|
|
if (VPrDavky='') then
|
|
begin
|
|
lSQL:= 'SELECT STRING_AGG(IDPrikaz, N'','') FROM ' + tblDavky + ' WHERE ID=' + idDavky.ToString + ' OR IDRodic=' + idDavky.ToString;
|
|
VPrDavky:= helUtils.getHeliosStrVal(Helios, '', lSQL);
|
|
if (VPrDavky<>'') then
|
|
begin
|
|
podm:= 'TabPrPostup.IDPrikaz IN (SELECT IDPrikazVyssi FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi IS NOT NULL AND ID IN (' + VPrDavky + '))';
|
|
lSQL:= 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi IS NOT NULL AND ID IN (' + VPrDavky + ')';
|
|
VPrDavky:= helUtils.getHeliosStrVal(Helios, '', lSQL);
|
|
end;
|
|
end;
|
|
|
|
if (druhDavky=4) and (VPrDavky<>'') then
|
|
begin
|
|
lSQL:= 'SELECT TOP(1) k.SkupZbo FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.ID IN (' + VPrDavky + ')';
|
|
lSQL:= helUtils.getHeliosStrVal(Helios, '', lSQL);
|
|
if (lSQL='P41') and (operace.skupZbo='P42') then
|
|
VPrDavky:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE ID IN (' + VPrDavky + ')');
|
|
if ((lSQL='P42') or (lSQL='P41')) and (operace.skupZbo='P43') then
|
|
VPrDavky:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE ID IN (' + VPrDavky + ')');
|
|
if (lSQL='P41') and (operace.skupZbo='VOD') then
|
|
begin
|
|
VPrDavky:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE ID IN (' + VPrDavky + ')');
|
|
lSQL:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE ID IN (' + VPrDavky + ')');
|
|
if (lSQL<>'') then
|
|
VPrDavky:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE ID IN (' + VPrDavky + ')');
|
|
end;
|
|
end;
|
|
|
|
if (VPrDavky='') then
|
|
VPrDavky:= helUtils.getHeliosStrVal(Helios, '', 'SELECT IDPrikaz FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND ID=' + idVOp.ToString);
|
|
|
|
lSQL:= 'SELECT SUM(Kusy_zive) FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND Doklad=' + operace.doklad.ToString + ' AND Alt=N' + operace.alt.QuotedString;
|
|
if (VPrDavky<>'') then
|
|
lSQL:= lSQL + ' AND IDPrikaz IN (' + VPrDavky + ')';
|
|
davkaZbytekOp:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
|
|
operace.ksZive:= davkaZbytekOp;
|
|
|
|
pgCtrlZavady.Pages[shEvid.PageIndex].TabVisible:= false;
|
|
pgCtrlZavady.Invalidate;
|
|
tblEvid.Clear;
|
|
lSQL:= 'SELECT e.Datum_X, z.PrijmeniJmeno, SUM(e.kusy_odv) FROM ' + tblMzdZm + ' e INNER JOIN ' + tblCZam + ' z ON (z.ID=e.Zamestnanec)';
|
|
if (cbOpakTrideni.Checked) then
|
|
lSQL:= lSQL + ' INNER JOIN ' + tblMzdZmE + ' ee ON (ee.ID=e.ID AND ee._OpakovanaKontrola=1)';
|
|
lSQL:= lSQL + ' WHERE e.IDPrikaz IN (' + VPrDavky + ') AND e.DokladPrPostup=' + operace.doklad.ToString + ' AND e.AltPrPostup=N' + QuotedStr(operace.alt);
|
|
lSQL:= lSQL + ' GROUP BY e.Datum_X, z.PrijmeniJmeno ORDER BY e.Datum_X DESC';
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
tblEvid.Append;
|
|
tblEvid.FieldByName('Datum').AsDateTime:= StrToDate(VarToStr(FieldValues(0)));
|
|
tblEvid.FieldByName('Zamest').AsString:= VarToStr(FieldValues(1));
|
|
tblEvid.FieldByName('Mnoz').AsFloat:= StrToFloat(VarToStr(FieldValues(2)));
|
|
tblEvid.Post;
|
|
Next;
|
|
end;
|
|
grdEvid.Sort(0, skDescending);
|
|
pgCtrlZavady.Pages[shEvid.PageIndex].TabVisible:= true;
|
|
end;
|
|
|
|
lblOperace.Caption:= lblOperace.Caption + ' / v dávce zbývá ' + StringReplace(davkaZbytekOp.ToString, ',', '.', [rfReplaceAll]) + ' oper.';
|
|
if (davkaZbytekOp=0) then
|
|
lblOperace.Font.Color:= clRed
|
|
else
|
|
lblOperace.Font.Color:= clWindowText;
|
|
|
|
edtCisZam.SetFocus;
|
|
end
|
|
else
|
|
Helios.Error(#1'Zadaný kód Operace nebyl nalezen.'#1);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformEvidOper.edtBarCode2KeyPress(Sender: TObject; var Key: Char);
|
|
begin
|
|
if (Ord(key)=VK_RETURN) then
|
|
edtBarCode2Exit(Sender);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformEvidOper.edtBarCodeExit(Sender: TObject);
|
|
var lSQL: string;
|
|
begin
|
|
edtBarcode.Text:= Trim(edtBarcode.Text);
|
|
edtBarcode.Text:= helUtils.StripChars(edtBarcode.Text, ['''', '"', '-', ';', ' ']);
|
|
idDavky:= 0;
|
|
if (edtBarcode.Text<>'') then
|
|
begin
|
|
edtBarCode2.Text:= '';
|
|
lblOperace.Caption:= '';
|
|
lblZmetky.Caption:= '';
|
|
lblMaloOperaci.Visible:= false;
|
|
cbOpakTrideni.Checked:= false;
|
|
cbOpakTrideni.Visible:= false;
|
|
tbl.Clear;
|
|
tblZavadyIO.Clear;
|
|
tblEvid.Clear;
|
|
druhDavky:= -1;
|
|
lblDavka.Caption:= '';
|
|
idDavky:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ISNULL(IDRodic, ID) FROM ' + tblDavky + ' WHERE KodDavky2=N' + edtBarCode.Text.QuotedString);
|
|
if (idDavky=0) then
|
|
idDavky:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ISNULL(IDRodic, ID) FROM ' + tblDavky + ' WHERE KodDavky=' + edtBarcode.Text);
|
|
if (idDavky>0) then
|
|
begin
|
|
lSQL:= 'SELECT DruhDavky, Rok, Cislo FROM ' + tblDavky + ' WHERE ID=' + idDavky.ToString;
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
druhDavky:= StrToInt(VarToStr(FieldValues(0)));
|
|
lblDavka.Caption:= 'Dávka ';
|
|
case druhDavky of
|
|
1: lblDavka.Caption:= lblDavka.Caption + 'VOSK';
|
|
2: lblDavka.Caption:= lblDavka.Caption + 'OBALOVNA';
|
|
3: lblDavka.Caption:= lblDavka.Caption + 'TAVÍRNA';
|
|
4: lblDavka.Caption:= lblDavka.Caption + 'KONEÈNÁ';
|
|
5: lblDavka.Caption:= lblDavka.Caption + 'KONEÈNÁ interní';
|
|
6: lblDavka.Caption:= lblDavka.Caption + 'OBROBNA';
|
|
end;
|
|
lblDavka.Caption:= lblDavka.Caption + ' - ' + VarToStr(FieldValues(1)) + ' / ' + VarToStr(FieldValues(2));
|
|
end;
|
|
|
|
lSQL:= 'SELECT STRING_AGG(IDPrikaz, N'','') FROM ' + tblDavky + ' WHERE ID=' + idDavky.ToString + ' OR IDRodic=' + idDavky.ToString;
|
|
VPrDavky:= helUtils.getHeliosStrVal(Helios, '', lSQL);
|
|
if (VPrDavky<>'') then
|
|
begin
|
|
podm:= 'TabPrPostup.IDPrikaz IN (SELECT IDPrikazVyssi FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi IS NOT NULL AND ID IN (' + VPrDavky + '))';
|
|
lSQL:= 'SELECT STRING_AGG(p.IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen)';
|
|
lSQL:= lSQL + ' WHERE p.IDPrikazVyssi IS NOT NULL AND p.ID IN (' + VPrDavky + ')';
|
|
// if (druhDavky=4) then
|
|
// lSQL:= lSQL + ' AND k.SkupZbo=N''P41''';
|
|
VPrDavky:= helUtils.getHeliosStrVal(Helios, '', lSQL);
|
|
end;
|
|
|
|
{
|
|
if (druhDavky=4) and (VPrDavky<>'') then
|
|
begin
|
|
lSQL:= 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi IS NOT NULL AND ID IN (' + VPrDavky + ')';
|
|
lSQL:= lSQL + ' AND EXISTS(SELECT k.ID FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.ID IN (' + VPrDavky + ')';
|
|
lSQL:= lSQL + ' AND k.SkupZbo=N''P41'')';
|
|
VPrDavky:= helUtils.getHeliosStrVal(Helios, '', lSQL);
|
|
end;
|
|
}
|
|
edtBarCode2.SetFocus;
|
|
end
|
|
else
|
|
Helios.Error(#1'Zadaný kód Dávky nebyl nalezen.'#1);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformEvidOper.edtBarCodeKeyPress(Sender: TObject; var Key: Char);
|
|
begin
|
|
if (Ord(key)=VK_RETURN) then
|
|
edtBarCodeExit(Sender);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformEvidOper.edtCisZamExit(Sender: TObject);
|
|
begin
|
|
lblZamest.Caption:= '';
|
|
edtCisZam.Text:= StringReplace(Trim(edtCisZam.Text), ' ', '', [rfReplaceAll]);
|
|
edtCisZam.Text:= helUtils.StripChars(edtCisZam.Text, ['''', '"', '-', ';', ' ']);
|
|
edtCisZam.Text:= helUtils.RemoveWords(edtCisZam.Text, ['null']);
|
|
edtCisZam.Text:= helUtils.RemoveAlphas(edtCisZam.Text);
|
|
|
|
if not(IsNumeric(edtCisZam.Text)) then
|
|
begin
|
|
Helios.Error(#1'Kód zamìstnance musí být èíselný'#1);
|
|
edtCisZam.Text:= '';
|
|
edtCisZam.SetFocus;
|
|
end
|
|
else
|
|
if (edtCisZam.Text<>'') then
|
|
begin
|
|
if (helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblCZam + ' WHERE Cislo=' + edtCisZam.Text)=0) then
|
|
begin
|
|
Helios.Error(#1'Osobní èíslo zamìstnance nebylo nalezeno.'#1 + CRLF + edtCisZam.Text);
|
|
edtCisZam.Text:= '';
|
|
lblZamest.Caption:= '';
|
|
edtCisZam.SetFocus;
|
|
end
|
|
else
|
|
begin
|
|
edtCisZam.Text:= StringOfChar('0', 6-Length(edtCisZam.Text)) + edtCisZam.Text;
|
|
lblZamest.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT PrijmeniJmeno FROM ' + tblCZam + ' WHERE Cislo=' + edtCisZam.Text);
|
|
edtDobreKs.SelectAll;
|
|
edtDobreKs.SetFocus;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformEvidOper.edtCisZamKeyPress(Sender: TObject; var Key: Char);
|
|
begin
|
|
if (Ord(key)=VK_RETURN) then
|
|
edtCisZamExit(Sender);
|
|
end;
|
|
|
|
|
|
|
|
procedure TformEvidOper.edtDobreKsChange(Sender: TObject);
|
|
begin
|
|
origChciEvid:= edtDobreKs.Value;
|
|
if (davkaZbytekOp<edtDobreKs.Value) then
|
|
begin
|
|
lblMaloOperaci.Caption:= 'Pùvodní požadované množství ' + origChciEvid.ToString;
|
|
chciEvidVic:= true;
|
|
end
|
|
else
|
|
begin
|
|
lblMaloOperaci.Caption:= '';
|
|
chciEvidVic:= false;
|
|
end;
|
|
lblMaloOperaci.Visible:= chciEvidVic;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformEvidOper.edtDobreKsEnter(Sender: TObject);
|
|
begin
|
|
calcMnozEdit:= false;
|
|
calcAkce:= 1;
|
|
lblPnl.Caption:= 'CELKEM KUSY';
|
|
pnlCalc.Visible:= true;
|
|
edtNumVal.Value:= edtDobreKs.Value;
|
|
edtNumVal.SelectAll;
|
|
tKeyb.Visible:= true;
|
|
tKeyb.Width:= 330;
|
|
tKeyb.Height:= 305;
|
|
edtNumVal.SetFocus;
|
|
pnlCalc.Repaint;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformEvidOper.edtNumValKeyPress(Sender: TObject; var Key: Char);
|
|
begin
|
|
if (Ord(Key)=VK_RETURN) then
|
|
begin
|
|
exitKeyb:= false;
|
|
tKeybKeyClick(Sender, 11);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformEvidOper.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
begin
|
|
if (tbl.Active) then
|
|
tbl.Close;
|
|
if (tblZavadyIO.Active) then
|
|
tblZavadyIO.Close;
|
|
if (tblEvid.Active) then
|
|
tblEvid.Close;
|
|
Action:= caFree;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformEvidOper.FormShow(Sender: TObject);
|
|
var i: integer;
|
|
begin
|
|
self.ParentWindow:= Helios.MainApplicationHandle;
|
|
self.Icon.Handle:= Helios.MainApplicationIconHandle;
|
|
// self.Font.Name:= Helios.Font;
|
|
// self.Font.Height:= Helios.FontHeight;
|
|
|
|
if (jeTest) then
|
|
self.Caption:= self.Caption + ' TEST ';
|
|
|
|
for i:=0 to grd.Columns.Count-1 do
|
|
grd.Columns[i].Header.Color:= clRed;
|
|
{
|
|
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:= 26;
|
|
(Self.Components[i] as TTB_3Button).Height:= 26;
|
|
end;
|
|
end;
|
|
}
|
|
VPrDavky:= '';
|
|
if not(tbl.Active) then
|
|
tbl.Open;
|
|
if not(tblZavadyIO.Active) then
|
|
tblZavadyIO.Open;
|
|
if not(tblEvid.Active) then
|
|
tblEvid.Open;
|
|
|
|
davkaZbytekOp:= 0;
|
|
zmetky:= 0;
|
|
zmetkyIO:= 0;
|
|
zmetkyNeodv:= 0;
|
|
chciEvidVic:= false;
|
|
|
|
idZavadaLouh:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblZavady + ' WHERE kod=N''V404''');
|
|
|
|
lblZapisDat.Visible:= false;
|
|
pgCtrlZavady.Pages[shEvid.PageIndex].TabVisible:= false;
|
|
pgCtrlZavady.ActivePageIndex:= 0;
|
|
self.Repaint;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformEvidOper.grdCellClick(Sender: TObject; ACol, ARow: Integer; Button: TMouseButton);
|
|
var mn: Extended;
|
|
t: string;
|
|
i: integer;
|
|
begin
|
|
if (tbl.RecordCount>0) and (ACol=0) then
|
|
if Helios.YesNo('Chcete smazat závadu ' + grd.Cell[ACol, ARow].AsString + ' ?', false) then
|
|
begin
|
|
tbl.Edit;
|
|
tbl.Delete;
|
|
grd.Refresh;
|
|
end;
|
|
if (tbl.RecordCount>0) and (ACol=colMnozstvi.Index) then
|
|
begin
|
|
calcMnozEdit:= true;
|
|
calcAkce:= 2;
|
|
aktRowNum:= tbl.RecNo;
|
|
lblPnl.Caption:= 'Množství závady ' + grd.Cells[0, ARow];
|
|
pnlCalc.Visible:= true;
|
|
edtNumVal.Value:= grd.Cell[2, ARow].AsFloat;
|
|
edtNumVal.SelectAll;
|
|
tKeyb.Visible:= True;
|
|
tKeyb.Width:= 330;
|
|
tKeyb.Height:= 305;
|
|
edtNumVal.SetFocus;
|
|
pnlCalc.Repaint;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformEvidOper.grdIOCellClick(Sender: TObject; ACol, ARow: Integer; Button: TMouseButton);
|
|
var mn: Extended;
|
|
t: string;
|
|
i: integer;
|
|
begin
|
|
if (tblZavadyIO.RecordCount>0) and (ACol=0) then
|
|
if Helios.YesNo('Chcete smazat závadu ' + grdIO.Cell[ACol, ARow].AsString + ' ?', false) then
|
|
begin
|
|
tblZavadyIO.Edit;
|
|
tblZavadyIO.Delete;
|
|
grdIO.Refresh;
|
|
end;
|
|
if (tblZavadyIO.RecordCount>0) and (ACol=colMnozstvi.Index) then
|
|
begin
|
|
calcMnozEdit:= true;
|
|
calcAkce:= 3;
|
|
aktRowNum:= tblZavadyIO.RecNo;
|
|
lblPnl.Caption:= 'Množství závady ' + grdIO.Cells[0,ARow];
|
|
pnlCalc.Visible:= true;
|
|
edtNumVal.Value:= grd.Cell[2, ARow].AsFloat;
|
|
edtNumVal.SelectAll;
|
|
tKeyb.Visible:= true;
|
|
tKeyb.Width:= 330;
|
|
tKeyb.Height:= 305;
|
|
edtNumVal.SetFocus;
|
|
pnlCalc.Repaint;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformEvidOper.selBarCode2Click(Sender: TObject);
|
|
var lSQL, podm: string;
|
|
bid: integer;
|
|
begin
|
|
{
|
|
if (filtrRada<>'') then
|
|
podm:= 'TabPrPostup.IDPrikaz IN (SELECT ID FROM ' + tblPrikaz + ' WHERE Rada LIKE N' + QuotedStr(filtrRada + '%') + ')';
|
|
}
|
|
VPrDavky:= '';
|
|
podm:= '';
|
|
if (idDavky>0) then
|
|
begin
|
|
lSQL:= 'SELECT STRING_AGG(IDPrikaz, N'','') FROM ' + tblDavky + ' WHERE ID=' + idDavky.ToString + ' OR IDRodic=' + idDavky.ToString;
|
|
VPrDavky:= helUtils.getHeliosStrVal(Helios, '', lSQL);
|
|
podm:= 'TabPrPostup.IDPrikaz IN (SELECT IDPrikazVyssi FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi IS NOT NULL AND ID IN (' + VPrDavky + '))';
|
|
lSQL:= 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi IS NOT NULL AND ID IN (' + VPrDavky + ')';
|
|
VPrDavky:= helUtils.getHeliosStrVal(Helios, '', lSQL);
|
|
|
|
{
|
|
if (VPrDavky='') then
|
|
begin
|
|
lSQL:= 'SELECT STRING_AGG(IDPrikaz, N'','') FROM ' + tblDavky + ' WHERE ID=' + idDavky.ToString + ' OR IDRodic=' + idDavky.ToString;
|
|
VPrDavky:= helUtils.getHeliosStrVal(Helios, '', lSQL);
|
|
if (VPrDavky<>'') then
|
|
begin
|
|
podm:= 'TabPrPostup.IDPrikaz IN (SELECT IDPrikazVyssi FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi IS NOT NULL AND ID IN (' + VPrDavky + '))';
|
|
lSQL:= 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi IS NOT NULL AND ID IN (' + VPrDavky + ')';
|
|
VPrDavky:= helUtils.getHeliosStrVal(Helios, '', lSQL);
|
|
end;
|
|
end;
|
|
|
|
if (druhDavky=4) and (VPrDavky<>'') then
|
|
begin
|
|
lSQL:= 'SELECT TOP(1) k.SkupZbo FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.ID IN (' + VPrDavky + ')';
|
|
lSQL:= helUtils.getHeliosStrVal(Helios, '', lSQL);
|
|
if (lSQL='P41') and (operace.skupZbo='P42') then
|
|
VPrDavky:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE ID IN (' + VPrDavky + ')');
|
|
if ((lSQL='P42') or (lSQL='P41')) and (operace.skupZbo='P43') then
|
|
VPrDavky:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE ID IN (' + VPrDavky + ')');
|
|
if (lSQL='P41') and (operace.skupZbo='VOD') then
|
|
begin
|
|
VPrDavky:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE ID IN (' + VPrDavky + ')');
|
|
lSQL:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE ID IN (' + VPrDavky + ')');
|
|
if (lSQL<>'') then
|
|
VPrDavky:= helUtils.getHeliosStrVal(Helios, '', 'SELECT STRING_AGG(IDPrikazVyssi, N'','') FROM ' + tblPrikaz + ' WHERE ID IN (' + VPrDavky + ')');
|
|
end;
|
|
end;
|
|
}
|
|
end;
|
|
if Helios.Prenos(bidVyrOper, 'TabPrPostup.BarCode', oVar, podm, 'Vyberte operaci', true) then
|
|
begin
|
|
edtBarCode2.Text:= Trim(VarToStr(oVar));
|
|
edtBarCode2Exit(Sender);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformEvidOper.selBarCodeClick(Sender: TObject);
|
|
var podm: string;
|
|
bid: integer;
|
|
begin
|
|
podm:= '';
|
|
bid:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_Davky''');
|
|
if (bid>0) then
|
|
begin
|
|
if Helios.Prenos(100000+bid, 'KodDavky', oVar, '', 'Vyberte dávku', true) then
|
|
begin
|
|
edtBarCode.Text:= Trim(VarToStr(oVar));
|
|
edtBarCodeExit(Sender);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformEvidOper.tblAfterDelete(DataSet: TDataSet);
|
|
begin
|
|
tblAfterPost(DataSet);
|
|
VypocetKs;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformEvidOper.tblAfterPost(DataSet: TDataSet);
|
|
var i: integer;
|
|
begin
|
|
zmetky:= 0;
|
|
if (tbl.RecordCount>0) then
|
|
begin
|
|
i:= tbl.RecNo;
|
|
grd.DataSource.DataSet.DisableControls;
|
|
tbl.First;
|
|
while not(tbl.Eof) do
|
|
begin
|
|
zmetky:= zmetky + tbl.FieldByName('Mnozstvi').AsFloat;
|
|
tbl.Next;
|
|
end;
|
|
tbl.RecNo:= i;
|
|
grd.DataSource.DataSet.EnableControls;
|
|
end;
|
|
if (zmetky+zmetkyIO+zmetkyNeodv>0) then
|
|
begin
|
|
lblZmetky.Caption:= 'Celkem opr+neopr: ' + (zmetky+zmetkyIO+zmetkyNeodv).ToString;
|
|
lblZmetky.Visible:= true;
|
|
end
|
|
else
|
|
lblZmetky.Visible:= false;
|
|
shNeopravitelne.Caption:= ' Neopravitelné ' + IfThen(zmetky>0, '(' + Trunc(zmetky).ToString +')', '');
|
|
end;
|
|
|
|
|
|
|
|
procedure TformEvidOper.tblZavadyIOAfterDelete(DataSet: TDataSet);
|
|
begin
|
|
tblZavadyIOAfterPost(Dataset);
|
|
VypocetKs;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformEvidOper.tblZavadyIOAfterPost(DataSet: TDataSet);
|
|
var i: integer;
|
|
begin
|
|
zmetkyIO:= 0;
|
|
zmetkyNeodv:= 0;
|
|
if (tblZavadyIO.RecordCount>0) then
|
|
begin
|
|
i:= tblZavadyIO.RecNo;
|
|
grdIO.DataSource.DataSet.DisableControls;
|
|
tblZavadyIO.First;
|
|
while not(tblZavadyIO.Eof) do
|
|
begin
|
|
if (tblZavadyIO.FieldByName('Neodvadet').AsBoolean) then
|
|
zmetkyNeodv:= zmetkyNeodv + tblZavadyIO.FieldByName('Mnozstvi').AsFloat
|
|
else
|
|
zmetkyIO:= zmetkyIO + tblZavadyIO.FieldByName('Mnozstvi').AsFloat;
|
|
tblZavadyIO.Next;
|
|
end;
|
|
tblZavadyIO.RecNo:= i;
|
|
grdIO.DataSource.DataSet.EnableControls;
|
|
end;
|
|
if (zmetky+zmetkyIO+zmetkyNeodv>0) then
|
|
begin
|
|
lblZmetky.Caption:= 'Celkem opr+neopr: ' + (zmetky+zmetkyIO+zmetkyNeodv).ToString;
|
|
lblZmetky.Visible:= true;
|
|
end
|
|
else
|
|
lblZmetky.Visible:= false;
|
|
shInterneOpravitelne.Caption:= ' Internì opravit. ' + IfThen((zmetkyIO+zmetkyNeodv)>0, '(' + Trunc(zmetkyIO+zmetkyNeodv).ToString +')', '');
|
|
end;
|
|
|
|
|
|
|
|
procedure TformEvidOper.VypocetKs;
|
|
begin
|
|
{
|
|
if (davkaZbytekOp<edtDobreKs.Value+zmetky+zmetkyIO) then
|
|
begin
|
|
edtDobreKs.Value:= davkaZbytekOp - zmetky - zmetkyIO;
|
|
if (edtDobreKs.Value<0) then
|
|
edtDobreKs.Value:= 0;
|
|
end
|
|
else
|
|
begin
|
|
edtDobreKs.Value:= davkaZbytekOp - zmetky - zmetkyIO;
|
|
if (edtDobreKs.Value>origChciEvid) then
|
|
edtDobreKs.Value:= origChciEvid;
|
|
end;
|
|
}
|
|
{
|
|
if (edtDobreKs.Value+zmetky+zmetkyIO>davkaZbytekOp) then
|
|
lblMaloOperaci.Visible:= true
|
|
else
|
|
lblMaloOperaci.Visible:= false;
|
|
}
|
|
end;
|
|
|
|
|
|
|
|
procedure TformEvidOper.tKeybKeyClick(Sender: TObject; Index: Integer);
|
|
var i: integer;
|
|
lSQL, sql1, sql2: string;
|
|
begin
|
|
if (Index=9) and (calcAkce=1) and (calcMnozEdit) then
|
|
begin
|
|
edtDobreKs.Value:= 0;
|
|
exitKeyb:= false;
|
|
end;
|
|
|
|
if (tKeyb.Visible) and not(exitKeyb) then
|
|
begin
|
|
exitKeyb:= false;
|
|
tKeyb.SetFocus;
|
|
i:= -1;
|
|
case Index of
|
|
0: i:= 7;
|
|
1: i:= 8;
|
|
2: i:= 9;
|
|
3: i:= 4;
|
|
4: i:= 5;
|
|
5: i:= 6;
|
|
6: i:= 1;
|
|
7: i:= 2;
|
|
8: i:= 3;
|
|
9: edtNumVal.Value:= 0;
|
|
10: i:= 0;
|
|
11: begin
|
|
if (calcMnozEdit) then
|
|
case calcAkce of
|
|
2: begin
|
|
tbl.Edit;
|
|
tbl.FieldByName('Mnozstvi').AsFloat:= edtNumVal.Value;
|
|
tbl.Post;
|
|
VypocetKs;
|
|
end;
|
|
3: begin
|
|
tblZavadyIO.Edit;
|
|
tblZavadyIO.FieldByName('Mnozstvi').AsFloat:= edtNumVal.Value;
|
|
tblZavadyIO.Post;
|
|
VypocetKs;
|
|
end;
|
|
end
|
|
else
|
|
case calcAkce of
|
|
1: begin
|
|
edtDobreKs.Value:= edtNumVal.Value;
|
|
if (edtDobreKs.Value>operace.ksZive) then
|
|
edtDobreKs.Value:= operace.ksZive;
|
|
// btnOK.SetFocus;
|
|
end;
|
|
2: begin
|
|
if (edtNumVal.Value>0) then
|
|
begin
|
|
tbl.Append;
|
|
tbl.FieldByName('KodZavady').AsString:= kodZavady;
|
|
tbl.FieldByName('Popis').AsString:= popisZavady;
|
|
tbl.FieldByName('Mnozstvi').AsFloat:= edtNumVal.Value;
|
|
tbl.Post;
|
|
VypocetKs;
|
|
btnAdd.SetFocus;
|
|
end;
|
|
end;
|
|
3: begin
|
|
if (edtNumVal.Value>0) then
|
|
begin
|
|
tblZavadyIO.Append;
|
|
tblZavadyIO.FieldByName('KodZavady').AsString:= kodZavady;
|
|
tblZavadyIO.FieldByName('Popis').AsString:= popisZavady;
|
|
tblZavadyIO.FieldByName('Mnozstvi').AsFloat:= edtNumVal.Value;
|
|
lSQL:= 'SELECT ISNULL(e._Neodvadet, 0) FROM ' + tblCZavad + ' z LEFT JOIN ' + tblCZavadE + ' e ON (e.ID=z.ID) WHERE z.Kod=N' + QuotedStr(kodZavady);
|
|
tblZavadyIO.FieldByName('Neodvadet').AsBoolean:= getHeliosBoolVal(Helios, false, lSQL);
|
|
tblZavadyIO.Post;
|
|
VypocetKs;
|
|
btnAddIO.SetFocus;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
grd.Refresh;
|
|
grdIO.Refresh;
|
|
calcMnozEdit:= false;
|
|
btnOK.Enabled:= true;
|
|
btnZrusit.Enabled:= true;
|
|
pnlCalc.Visible:= false;
|
|
tKeyb.Visible:= false;
|
|
exitKeyb:= true;
|
|
end;
|
|
end;
|
|
if (i>=0) then
|
|
begin
|
|
if (edtNumVal.Value=0) then
|
|
edtNumVal.Value:= i
|
|
else
|
|
edtNumVal.Value:= StrToInt(Trim(StringReplace(StringReplace(edtNumVal.Text,#160,'',[rfReplaceAll]),' ','',[rfReplaceAll])) + IntToStr(i));
|
|
end
|
|
else
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TformEvidOper.tKeybKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
var i: integer;
|
|
begin
|
|
i:= -1;
|
|
case Key of
|
|
13: i:= 11;
|
|
46: i:= 9;
|
|
48: i:= 10; // 0
|
|
49: i:= 6;
|
|
50: i:= 7;
|
|
51: i:= 8;
|
|
52: i:= 3;
|
|
53: i:= 4;
|
|
54: i:= 5;
|
|
55: i:= 0;
|
|
56: i:= 1;
|
|
57: i:= 9;
|
|
end;
|
|
tKeybKeyClick(Sender, i);
|
|
end;
|
|
|
|
|
|
procedure TformEvidOper.btnCalcCloseClick(Sender: TObject);
|
|
begin
|
|
numPadVal:= 0;
|
|
pnlCalc.Visible:= false;
|
|
tKeyb.Visible:= false;
|
|
btnOK.Enabled:= true;
|
|
btnZrusit.Enabled:= true;
|
|
if (calcAkce=1) and (edtDobreKs.Value>0) then
|
|
btnOK.SetFocus;
|
|
end;
|
|
|
|
end.
|