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<4E>N<EFBFBD>%''';
|
||
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<6A> 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<61> k<>d Z<>VADY'#1)
|
||
else
|
||
begin
|
||
popisZavady:= VarToStr(FieldValues(0));
|
||
pnlCalc.Visible:= true;
|
||
btnOK.Enabled:= false;
|
||
btnZrusit.Enabled:= false;
|
||
lblPnl.Caption:= 'Mno<6E>stv<74> 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<4E>N<EFBFBD>%''';
|
||
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<6A> 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<61> k<>d Z<>VADY'#1)
|
||
else
|
||
begin
|
||
popisZavady:= VarToStr(FieldValues(0));
|
||
pnlCalc.Visible:= true;
|
||
btnOK.Enabled:= false;
|
||
btnZrusit.Enabled:= false;
|
||
lblPnl.Caption:= 'Mno<6E>stv<74> 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<65> zad<61>n zam<61>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<65> na<6E>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<><74>d<EFBFBD>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<7A>v<EFBFBD> ' + 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<75> za<7A><61>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<><74>d<EFBFBD>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<7A>v<EFBFBD> ' + 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<61> 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<41>RNA';
|
||
4: lblDavka.Caption:= lblDavka.Caption + 'KONE<4E>N<EFBFBD>';
|
||
5: lblDavka.Caption:= lblDavka.Caption + 'KONE<4E>N<EFBFBD> intern<72>';
|
||
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<61> 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<61>stnance mus<75> b<>t <20><>seln<6C>'#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<62> <20><>slo zam<61>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<64> po<70>adovan<61> mno<6E>stv<74> ' + 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<6E>stv<74> 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<6E>stv<74> 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<6C> ' + 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<72> 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.
|