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

1263 lines
43 KiB
ObjectPascal
Raw Permalink Blame History

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.