Files
EMPolar-plgEMPDeleniTrubek/frmMain.pas
2025-09-13 09:14:20 +02:00

5030 lines
176 KiB
ObjectPascal

unit frmMain;
{$I plgEMPDeleniTrubek.inc}
interface
uses
Winapi.Windows, Winapi.ActiveX, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
ddPlugin_TLB, Vcl.StdCtrls, System.ImageList, Vcl.ImgList, Vcl.Mask,
Vcl.ExtCtrls, Vcl.VirtualImageList, Vcl.BaseImageCollection,
Vcl.ImageCollection, Vcl.ControlList, ES.ControlListControls,
FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param,
FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf,
Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client,
System.Generics.Collections,
datModul, Vcl.Buttons, Vcl.Touch.GestureMgr, JvExStdCtrls, JvScrollBar, RzTabs,
JvExControls, JvgDigits,
Winapi.ShlObj, Winapi.KnownFolders, Vcl.ComCtrls, JvExComCtrls,
JvDateTimePicker, AdvDateTimePicker, RzEdit,
System.SyncObjs,
arrayHelper;
const
skladMat = '1030';
PRINTER_OPTION_NO_CACHE = 1 shl 0;
KLF_ACTIVATE = $00000001;
KLF_SETFORPROCESS = $00000100;
type
{
TControlList = class(Vcl.Controllist.TControlList)
private
procedure CNCommand(var Message: TWMCommand); message CN_COMMAND;
procedure WMVScroll(var Msg: TWMHScroll); message WM_VSCROLL;
end;
}
TformMain = class(TForm)
imgListOld: TImageList;
imgColl: TImageCollection;
imgList: TVirtualImageList;
ctrlFronta: TControlList;
cbPrevod: TEsControlListCheckBox;
lblMaterial: TLabel;
lblDeleni: TLabel;
lblNadoba: TLabel;
lblRegCisPrikaz: TLabel;
Label1: TLabel;
cbZamest: TComboBox;
lblRegCis: TLabel;
lblMaterialSort: TLabel;
Label3: TLabel;
lblNadobaSort: TLabel;
edtFiltrMaterial: TEdit;
edtFiltrNadoba: TEdit;
btnSmazFiltry: TSpeedButton;
Label4: TLabel;
lblRecCount: TLabel;
edtFiltrPila: TEdit;
edtFiltrPlan: TEdit;
panelPila: TPanel;
panelPlan: TPanel;
btnAddPila: TSpeedButton;
btnAddPila2: TSpeedButton;
boxFiltry: TGroupBox;
frontaPanel: TPanel;
btnFiltrPila: TBitBtn;
btnFiltrPlan: TBitBtn;
lblPila1RegCis: TLabel;
lblPila1Skladem: TLabel;
lblPila1Sarze: TLabel;
lblPila1SarzeSkladem: TLabel;
frontaPila: TControlList;
lblPila1ItemDeleni: TLabel;
lblPila1ItemNadoba: TLabel;
btnPauzaPila: TSpeedButton;
btnPila2Pauza: TSpeedButton;
lblPila1ItemRadaPrikaz: TLabel;
lblRadaPrikaz: TLabel;
lblRecSelected: TLabel;
Panel1: TPanel;
btnFrontaUp: TSpeedButton;
btnFrontaPgUp: TSpeedButton;
btnFrontaPgDown: TSpeedButton;
btnFrontaDown: TSpeedButton;
cbFrontaAll: TCheckBox;
timerNactiFrontu: TTimer;
time2: TTimer;
btnStopPila: TSpeedButton;
btnPila2Stop: TSpeedButton;
btnDelPila: TSpeedButton;
btnPila2Del: TSpeedButton;
Label2: TLabel;
pgCtrl: TRzPageControl;
shPila: TRzTabSheet;
shPlan: TRzTabSheet;
frontaPlan: TControlList;
lblPlanItemDeleni: TLabel;
lblPlanItemNadoba: TLabel;
lblPlanItemRadaPrikaz: TLabel;
btnTiskStitku: TSpeedButton;
btnPlanUp: TSpeedButton;
btnPlanPgUp: TSpeedButton;
btnPlanPgDown: TSpeedButton;
btnPlanDown: TSpeedButton;
btnPilaPgUp: TSpeedButton;
btnPilaUp: TSpeedButton;
btnPilaDown: TSpeedButton;
btnPilaPgDown: TSpeedButton;
lblPlanRegCis: TLabel;
lblPlanSkladem: TLabel;
lblPlanSarze: TLabel;
lblPlanSarzeSkladem: TLabel;
lblPlanDelkaSum: TLabel;
lblPilaDelkaSum: TLabel;
btnDigitReset: TButton;
digitTimer: TTimer;
lblTimerPila: TLabel;
btnObrazek: TSpeedButton;
btnPosliNaPilu: TBitBtn;
btnFiltrMat: TSpeedButton;
btnCalc: TSpeedButton;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
lblPila1Nazev1: TLabel;
lblPlanNazev1: TLabel;
timer3: TTimer;
btnAllZamest: TButton;
btnDelPilaOne: TSpeedButton;
btnSrot: TButton;
btnCalcNadoba: TSpeedButton;
edtFiltrNazev: TEdit;
btnFiltrNazev: TSpeedButton;
edtFiltrDN: TEdit;
edtFiltrPrumer: TEdit;
edtFiltrTloustka: TEdit;
edtFiltrJakost: TEdit;
edtFiltrProfil: TEdit;
Label13: TLabel;
lblPrumer: TLabel;
Label14: TLabel;
lblTloustka: TLabel;
lblFiltrDN: TLabel;
lblFiltrPrumer: TLabel;
lblFiltrTloustka: TLabel;
lblFiltrJakostMat: TLabel;
lblFiltrProfil: TLabel;
btnKonecDavky: TButton;
btnFiltrPilaDel: TSpeedButton;
lblRezatUhel: TLabel;
lblRezatUhelPlan: TLabel;
lblRezatUhelPila: TLabel;
btnZmenaSarze: TButton;
pgCtrlMD: TRzPageControl;
shFrontaPrace: TRzTabSheet;
shMatDavky: TRzTabSheet;
ctrlMD: TControlList;
lblMDCislo: TLabel;
pnlHeaderMD: TPanel;
Label15: TLabel;
lblMDDatum: TLabel;
lblMDCisloZbo: TLabel;
lblMDNazev: TLabel;
lblMDPrumer: TLabel;
lblMDTloustka: TLabel;
lblMDJakost: TLabel;
lblMDDM: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Label24: TLabel;
Label25: TLabel;
Shape1: TShape;
edtFiltrMDCislo: TEdit;
btnSmazFiltryMD: TSpeedButton;
dtFiltrMDDatum: TRzDateTimeEdit;
lblMDPozic: TLabel;
btnTiskBezEvidence: TBitBtn;
lblPozicePilaFronta: TLabel;
lblRegCisPrikaz2: TLabel;
edtFiltrMDDM: TEdit;
edtFiltrMDSila: TEdit;
edtFiltrMDPrumer: TEdit;
lblJsemAlter: TLabel;
edtFiltrMDRegCisMat: TEdit;
edtFiltrMDRozmer: TEdit;
edtFiltrMDNormaMAT: TEdit;
lblMDRozmer: TLabel;
lblMDNormaMat: TLabel;
procedure FormShow (Sender: TObject);
procedure cbZamestChange (Sender: TObject);
procedure ctrlFrontaBeforeDrawItem (AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState);
procedure cbPrevodClick (Sender: TObject);
procedure lblNadobaSortClick (Sender: TObject);
procedure lblMaterialSortClick (Sender: TObject);
procedure edtFiltrMaterialExit (Sender: TObject);
procedure edtFiltrNadobaExit (Sender: TObject);
procedure btnSmazFiltryClick (Sender: TObject);
procedure edtFiltrMaterialEnter (Sender: TObject);
procedure edtFiltrNadobaEnter (Sender: TObject);
procedure ctrlFrontaItemClick (Sender: TObject);
procedure ctrlFrontaMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure btnFiltrPilaClick (Sender: TObject);
procedure edtFiltrPilaExit (Sender: TObject);
procedure btnFiltrPlanClick (Sender: TObject);
procedure edtFiltrPlanExit (Sender: TObject);
procedure edtFiltrPilaEnter (Sender: TObject);
procedure edtFiltrPlanEnter (Sender: TObject);
procedure btnAddPilaClick (Sender: TObject);
procedure frontaPilaBeforeDrawItem (AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState);
procedure edtFiltrMaterialKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState);
procedure lblMaterialClick (Sender: TObject);
procedure lblRegCisClick (Sender: TObject);
procedure btnFrontaDownClick (Sender: TObject);
procedure btnFrontaPgDownClick (Sender: TObject);
procedure btnFrontaPgUpClick (Sender: TObject);
procedure btnFrontaUpClick (Sender: TObject);
procedure cbFrontaAllClick (Sender: TObject);
procedure timerNactiFrontuTimer (Sender: TObject);
procedure btnDelPilaClick (Sender: TObject);
procedure btnPila2DelClick (Sender: TObject);
procedure btnPilaPgUpClick (Sender: TObject);
procedure btnPilaUpClick (Sender: TObject);
procedure btnPilaDownClick (Sender: TObject);
procedure btnPilaPgDownClick (Sender: TObject);
procedure btnPlanPgUpClick (Sender: TObject);
procedure btnPlanPgDownClick (Sender: TObject);
procedure btnPlanUpClick (Sender: TObject);
procedure btnPlanDownClick (Sender: TObject);
procedure frontaPlanBeforeDrawItem (AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState);
procedure FormClose (Sender: TObject; var Action: TCloseAction);
procedure frontaPlanAfterDrawItems (ACanvas: TCanvas; ARect: TRect);
procedure btnTiskStitkuClick (Sender: TObject);
procedure btnDigitResetClick (Sender: TObject);
procedure digitTimerTimer (Sender: TObject);
procedure btnPosliNaPiluClick (Sender: TObject);
procedure pgCtrlChange (Sender: TObject);
procedure btnObrazekClick (Sender: TObject);
procedure btnFiltrMatClick (Sender: TObject);
procedure frontaPilaItemClick (Sender: TObject);
procedure btnCalcClick (Sender: TObject);
procedure timer3Timer (Sender: TObject);
procedure btnAllZamestClick (Sender: TObject);
procedure btnDelPilaOneClick (Sender: TObject);
procedure btnSrotClick (Sender: TObject);
procedure lblPlanItemDeleniClick (Sender: TObject);
procedure btnCalcNadobaClick (Sender: TObject);
procedure edtFiltrNazevEnter (Sender: TObject);
procedure edtFiltrNazevExit (Sender: TObject);
procedure edtFiltrDNEnter (Sender: TObject);
procedure edtFiltrPrumerEnter (Sender: TObject);
procedure edtFiltrTloustkaEnter (Sender: TObject);
procedure edtFiltrJakostEnter (Sender: TObject);
procedure edtFiltrJakostExit (Sender: TObject);
procedure edtFiltrJakostKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState);
procedure edtFiltrProfilEnter (Sender: TObject);
procedure edtFiltrProfilExit (Sender: TObject);
procedure edtFiltrProfilKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState);
procedure edtFiltrDNExit (Sender: TObject);
procedure edtFiltrDNKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState);
procedure edtFiltrPrumerExit (Sender: TObject);
procedure edtFiltrPrumerKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState);
procedure edtFiltrTloustkaExit (Sender: TObject);
procedure edtFiltrTloustkaKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState);
procedure edtFiltrNazevKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState);
procedure btnKonecDavkyClick (Sender: TObject);
procedure btnFiltrPilaDelClick (Sender: TObject);
procedure frontaPilaAfterDrawItems (ACanvas: TCanvas; ARect: TRect);
procedure ctrlMDBeforeDrawItem (AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState);
procedure ctrlMDBeforeDrawItems (ACanvas: TCanvas; ARect: TRect);
procedure ctrlMDItemClick (Sender: TObject);
procedure lblMDCisloZboClick (Sender: TObject);
procedure btnZmenaSarzeClick (Sender: TObject);
procedure ctrlMDMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure edtFiltrMDCisloKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState);
procedure edtFiltrMDCisloExit (Sender: TObject);
procedure dtFiltrMDDatumChange (Sender: TObject);
procedure btnSmazFiltryMDClick (Sender: TObject);
procedure dtFiltrMDDatumDateTimeChange (Sender: TObject; DateTime: TDateTime);
procedure pgCtrlMDChange (Sender: TObject);
procedure edtFiltrPilaChange (Sender: TObject);
procedure btnTiskBezEvidenceClick (Sender: TObject);
procedure Label4MouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure edtFiltrMDDMKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState);
procedure edtFiltrMDDMExit (Sender: TObject);
procedure edtFiltrMDSilaExit (Sender: TObject);
procedure edtFiltrMDSilaKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState);
procedure edtFiltrMDRegCisMatExit (Sender: TObject);
procedure edtFiltrMDRegCisMatKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState);
procedure edtFiltrMDRozmerExit (Sender: TObject);
procedure edtFiltrMDRozmerKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState);
procedure edtFiltrMDNormaMatExit (Sender: TObject);
procedure edtFiltrMDNormaMatKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState);
private
FTiskThread: TThread;
apiTiskTasks: TArrayRecord<integer>;
canAktPilu: boolean;
// FPila: TList<TZaznamPily>;
// FPlan: TList<TZaznamPily>;
function EvidencePrace (idRezRozpisR: integer): integer; // vystup je TabPrikazMzdyAZmetky.ID nebo 0
procedure ShowTabTip;
procedure CloseTabTip;
procedure NactiPracovnikyPily;
procedure NactiRozpracovanePolozky;
procedure NactiFrontu;
procedure UpdateVyber;
procedure AktualizujFrontuPila;
procedure NactiMnozstviSkladu (pila: boolean=true; idKZ: integer=0; sarze: string='');
procedure VymazUdajePilaNeboPlan (plan: Boolean=false);
procedure NactiZamestnanceDleIDNeboCisla (id: integer=0; cislo: Integer=0);
procedure ZapisInfoMaterialPila;
procedure ZapisInfoMaterialPlan;
procedure TiskniZAPIAddTask (idRezPredpisR, idPrKV: integer);
procedure TTiskThreadDestroy (Sender: TObject);
public
Helios: IHelios;
dm: Tdm;
idDP: integer;
end;
var
formMain: TformMain;
bc, szrc, sz, rc, sarze, msgProTimer: string;
sklMat: string;
mamSarzi, kmenStavOK, sarzeStavOK, materialOK, materialPilaOK, jsemZUlozenych: boolean;
idKZ, idSS, idVCS, cisZam, idZam: integer;
mnozSkl: extended;
idPrac: integer;
pilaOK, planOK, canSelFronta, firstNacitani: boolean;
pilaDelkaSum, planDelkaSum: extended;
timerPila: integer;
itemPilaProTisk: integer;
oVar1, oVar2: OleVariant;
pilaReqSN, planReqSN: boolean;
calcTyp: byte;
tick1: Cardinal;
showMDDetail: boolean;
implementation
uses System.StrUtils, System.Character, System.Rtti, System.Math, WinAPI.ShellAPI, Vcl.Clipbrd,
System.Threading, Winapi.WinSpool, Vcl.Printers,
frmCalc, frmObrazekKZ, frmKeyb, frmPolozkyMD, helUtils;
{$R *.dfm}
procedure TformMain.UpdateVyber;
var i: integer;
begin
end;
procedure TformMain.CloseTabTip;
var HwndTabTip: HWND;
begin
HwndTabTip := FindWindow(PChar('IPTip_Main_Window'), nil);
if (HwndTabTip <> 0) then
PostMessage(HwndTabTip, WM_SYSCOMMAND, SC_CLOSE, 0);
end;
procedure TformMain.ShowTabTip;
var SI: TStartupInfo;
PI: TProcessInformation;
ExeName: string;
begin
ExeName:= GetEnvironmentVariable('CommonProgramW6432') + '\microsoft shared\ink\TabTip.exe';
ZeroMemory(@SI, SizeOf(SI));
SI.cb := SizeOf(SI);
if not CreateProcess (PChar(ExeName), nil, nil, nil, False, 0, nil, nil, SI, PI) then
RaiseLastOSError;
CloseHandle(PI.hProcess);
CloseHandle(PI.hThread);
end;
procedure TformMain.ZapisInfoMaterialPila;
var lSQL: string;
begin
if (datModul.idKmenMaterialPila>0) then
begin
// if (edtFiltrPila.Text='') then
begin
lSQL:= 'SELECT k.Nazev1 + N'' '' + ISNULL(ke._Rozmer, N'''') + N'' / '' + ISNULL(ke._S1_X, N'''') + N'' '' + ISNULL(ke._JakostMaterialu, N'''') AS Nazev1, k.RegCis FROM ' + tblKZ;
lSQL:= lSQL + ' k LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) WHERE k.id=' + datModul.idKmenMaterialPila.ToString;
with Helios.OpenSQL(lSQL) do
begin
lblPila1Nazev1.Caption:= VarToStr(FieldByNameValues('Nazev1'));
lblPila1RegCis.Caption:= VarToStr(FieldByNameValues('RegCis'));
end;
end;
end
else
begin
lblPila1Nazev1.Caption:= '';
lblPila1RegCis.Caption:= '';
lblPila1Skladem.Caption:= '';
lblPila1Sarze.Caption:= '';
lblPila1SarzeSkladem.Caption:= '';
end;
end;
procedure TformMain.ZapisInfoMaterialPlan;
var lSQL: string;
begin
if (datModul.idKmenMaterialPlan>0) then
begin
if (edtFiltrPila.Text='') then
begin
lSQL:= 'SELECT k.Nazev1 + N'' '' + ISNULL(ke._Rozmer, N'''') + N'' / '' + ISNULL(ke._S1_X, N'''') + N'' '' + ISNULL(ke._JakostMaterialu, N'''') AS Nazev1, k.RegCis FROM ' + tblKZ;
lSQL:= lSQL + ' k LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) WHERE k.id=' + datModul.idKmenMaterialPlan.ToString;
with Helios.OpenSQL(lSQL) do
begin
lblPlanNazev1.Caption:= VarToStr(FieldByNameValues('Nazev1'));
lblPlanRegCis.Caption:= VarToStr(FieldByNameValues('RegCis'));
end;
end;
end
else
begin
lblPlanNazev1.Caption:= '';
lblPlanRegCis.Caption:= '';
lblPlanSkladem.Caption:= '';
lblPlanSarze.Caption:= '';
lblPlanSarzeSkladem.Caption:= '';
end;
end;
procedure TformMain.NactiRozpracovanePolozky;
var lSQL, prpA, sarze: string;
i, idH, poz, iTemp: integer;
idPol, idVPr, prpD, idPrVaz, idPrP, idPrac, idKZMat, idMaD: integer;
z, zx: TZamestnanec;
jeTiskAkt: boolean;
begin
if not(dm.tblPila.Active) then
dm.tblPila.Open;
if not(dm.tblPlan.Active) then
dm.tblPlan.Open;
canAktPilu:= false;
Helios.ExecSQL('SELECT 2 AS DebugStep');
Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 2''');
iTemp:= 0;
lSQL:= 'SELECT TOP(1) ID, ISNULL(OsCislo,0) AS OsCislo, ISNULL(Sarze, N'''') AS Sarze, ISNULL(IdKmenZboMaterial,0) AS IdKmenZboMaterial, ISNULL(IDPlanMD,0) AS IDPlanMD FROM ' + tblRezPredpis;
lSQL:= lSQL + ' WHERE Splneno=0 AND IDPlanMD IS NOT NULL AND JePlan=0 AND LoginName=SUSER_SNAME()'; // DeviceID=N' + datModul.devID.QuotedString;
with Helios.OpenSQL(lSQL) do
if (RecordCount>0) then
begin
First;
while not(EOF) do
begin
idH:= VarToStr(FieldByNameValues('ID')).ToInteger;
sarze:= VarToStr(FieldByNameValues('Sarze'));
datModul.idHlavPila:= idH;
cisZam:= VarToStr(FieldByNameValues('OsCislo')).ToInteger;
idZam:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblCZam + ' WHERE Cislo=' + cisZam.ToString);
z:= TZamestnanec.Create(0, cisZam, Helios);
for i:=0 to cbZamest.Items.Count-1 do
begin
zx:= (cbZamest.Items.Objects[i] as TZamestnanec);
if (zx.Cislo=z.Cislo) then
cbZamest.ItemIndex:= i;
end;
FreeAndNil (z);
FreeAndNil (zx);
// nacti udaje z Materialove davky
idMaD:= VarToStr(FieldByNameValues('IDPlanMD')).ToInteger;
if (idMaD>0) and (datModul.idMatDavka=0) then
datModul.idMatDavka:= idMaD;
if (idMaD>0) and (shPila.Caption='DÁVKA') then
shPila.Caption:= 'DÁVKA ' + helUtils.getHeliosStrVal(Helios, '', 'SELECT Cislo FROM ' + tblMatDavkyH + ' WHERE ID=' + idMaD.ToString);
if (datModul.idMatDavka>0) then
datModul.idMatDavkaKmen:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDKmenZboziMat FROM ' + tblMatDavkyH + ' WHERE ID=' + datModul.idMatDavka.ToString);
if (datModul.idMatDavkaKmen>0) then
NactiMnozstviSkladu (true, datModul.idMatDavkaKmen, '');
Helios.ExecSQL('SELECT 3 AS DebugStep');
Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 3''');
// dopln vazby na operaci
lSQL:= 'MERGE ' + tblRezPredpisR + ' AS T USING (SELECT v.ID AS IDPrKVazby, p.Doklad, p.Alt FROM ' + tblPrKVaz + ' v LEFT JOIN ' + tblPrPost;
lSQL:= lSQL + ' p ON (p.operace=v.Operace AND p.IDPrikaz=v.IDPrikaz AND p.IDOdchylkyDo IS NULL)) AS S ON (T.IDPrKVazby=S.IDPrKVazby)';
lSQL:= lSQL + ' WHEN MATCHED AND T.DokladOper IS NULL THEN UPDATE SET T.DokladOper=S.Doklad, T.AltOper=S.Alt;';
// Helios.ExecSQL(lSQL);
Helios.ExecSQL('SELECT 4 AS DebugStep');
Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 4''');
lSQL:= 'SELECT r.ID, r.IDPrikaz, r.Doklad, ISNULL(r.Operace, IIF(TRIM(r.Operace)<>N'''', TRIM(r.Operace), o.Operace)) AS Operace, ISNULL(r.DokladOper, o.Doklad) AS DokladOper';
lSQL:= lSQL + ', ISNULL(r.AltOper, o.Alt) AS AltOper, r.IDPrKVazby, r.IDKmenMaterial, r.MnozstviKs, r.Mnozstvi, r.MnozstviReal';
lSQL:= lSQL + ', r.MnozstviRealKs, r.Tisk, ISNULL(r.IdMzdy,0) AS IdMzdy, r.IDPlanMD, r.IDPlanMDPol FROM ' + tblRezPredpisR + ' r';
lSQL:= lSQL + ' LEFT JOIN ' + tblPrKVaz + ' v ON (v.ID=r.IDPrKVazby AND v.IDOdchylkyDo IS NULL)';
lSQL:= lSQL + ' LEFT JOIN ' + tblPrPost + ' o ON (o.Operace=v.Operace AND o.IDPrikaz=r.IDPrikaz AND o.IDOdchylkyDo IS NULL)';
lSQL:= lSQL + ' WHERE r.IDMzdy IS NULL AND r.Tisk=0 AND ISNULL(v.Splneno,0)=0 AND r.IDHlavicka=' + idH.ToString;
lSQL:= lSQL + ' AND r.IDPrikaz IN (SELECT ID FROM ' + tblVPr + ' WHERE DATEDIFF(year, DatPorizeni, GETDATE())<5 AND StavPrikazu IN (30))';
lSQL:= lSQL + ' ORDER BY r.Pozice, r.ID';
with Helios.OpenSQL(lSQL) do
if (RecordCount>0) then
begin
First;
while not(EOF) do
begin
idPol:= VarToStr(FieldByNameValues('ID')).ToInteger;
idVPr:= VarToStr(FieldByNameValues('IDPrikaz')).ToInteger;
prpD:= VarToStr(FieldByNameValues('DokladOper')).ToInteger;
prpA:= VarToStr(FieldByNameValues('AltOper'));
idPrVaz:= VarToStr(FieldByNameValues('IDPrKVazby')).ToInteger;
lSQL:= 'SELECT ID FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString + ' AND Doklad=' + prpD.ToString + ' AND Alt=N' + prpA.QuotedString;
idPrP:= helUtils.getHeliosIntVal(Helios, 0, lSQL);
idPrac:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT pracoviste FROM ' + tblPrPost + ' WHERE ID=' + idPrP.ToString);
poz:= dm.MaxPoziceTab (dm.tblPila) + 10;
dm.tblPila.Append;
dm.tblPila.FieldByName('colPozice').AsInteger:= poz;
dm.tblPila.FieldByName('colPoziceInt').AsInteger:= poz;
dm.tblPila.FieldByName('colIDPrKVazby').AsInteger:= idPrVaz;
dm.tblPila.FieldByName('colIDPrPostup').AsInteger:= idPrP;
dm.tblPila.FieldByName('colIDHlavicka').AsInteger:= idH;
dm.tblPila.FieldByName('colIDPolozka').AsInteger:= idPol;
dm.tblPila.FieldByName('colIDPlanH').AsInteger:= idMaD;
dm.tblPila.FieldByName('colIDPlanR').AsString:= VarToStr(FieldByNameValues('IDPlanMDPol'));
dm.tblPila.FieldByName('colKs').AsExtended:= VarToStr(FieldByNameValues('MnozstviKs')).ToExtended;
dm.tblPila.FieldByName('colOperace').AsString:= VarToStr(FieldByNameValues('Operace'));
dm.tblPila.FieldByName('colTisk').AsString:= VarToStr(FieldByNameValues('Tisk'));
dm.tblPila.FieldByName('colIDMzdy').AsInteger:= VarToStr(FieldByNameValues('IdMzdy')).ToInteger;
dm.tblPila.FieldByName('colPovoleno').AsBoolean:= (dm.tblPila.FieldByName('colIDMzdy').AsInteger=0);
dm.tblPila.FieldByName('colPokracujVTisku').AsBoolean:= dm.tblPila.FieldByName('colPovoleno').AsBoolean;
lSQL:= 'SELECT pp.ID, mvaz.ID AS IDMVaz, kzvp.SkupZbo, kzvp.RegCis, kzvp.Nazev1, kzmvaz.ID AS IDKmenMat, kzmvaz.SkupZbo AS SkupZboMat, kzmvaz.RegCis AS RegCisMat, kzmvaz.Nazev1 AS Nazev1Mat, mvaz.pozice';
lSQL:= lSQL + ', ISNULL(zak.Nazev,N'''') AS CisloNadoby, kzf.Nazev1, kzf.Vykres, pp.operace, ISNULL(mvaz.mnozstvi,0)*1000 AS MnozMat, ISNULL(mvaz.mnoz_Nevydane,0)*1000 AS MnozMatCelkem';
lSQL:= lSQL + ', ISNULL(mvazv.mnoz_Nevydane, (mvaz.mnoz_Nevydane/mvaz.mnozstvi)) AS MnozVys, vp.RadaPrikaz, ISNULL(kzmvazE._Rozmer, N'''') AS Rozmer';
lSQL:= lSQL + ', ISNULL(pp.Plan_zadani, vp.Plan_zadani) AS Datum, vp.RadaPrikaz, ISNULL(kzmvazE._JakostMaterialu, N'''') AS JakostMat';
lSQL:= lSQL + ', ISNULL(kzmvazE._S1_X, N'''') AS SilaMat, ISNULL(kzmvazE._Dm1_X, 0) AS Prumer, ISNULL(kzmvazE._DN1, N'''') AS DN';
lSQL:= lSQL + ' FROM ' + tblPrPost + ' pp INNER JOIN ' + tblPrikaz + ' vp ON (vp.ID=pp.IDPrikaz) INNER JOIN ' + tblKZ + ' kzvp ON (kzvp.ID=vp.IdTabKmen)';
lSQL:= lSQL + ' LEFT JOIN ' + tblPrikaz + ' vpv ON (vpv.ID=vp.IDPrikazVyssi) LEFT JOIN ' + tblPrikaz + ' vpf ON (vpf.ID=vp.IDPrikazRidici)';
lSQL:= lSQL + ' INNER JOIN ' + tblPrVaz + ' mvaz ON (mvaz.Splneno=0 AND mvaz.IDPrikaz=vp.ID AND mvaz.operace=pp.operace AND mvaz.IDOdchylkyDo IS NULL)';
lSQL:= lSQL + ' LEFT JOIN ' + tblZak + ' zak ON (zak.ID=vpf.IDZakazka) INNER JOIN ' + tblKZ + ' kzf ON (kzf.ID=vpf.IdTabKmen)';
lSQL:= lSQL + ' LEFT JOIN dbo.TabPrKVazby mvazv ON (mvazv.IDPrikaz=vpv.ID AND mvazv.IDOdchylkyDo IS NULL AND mvazv.nizsi=mvaz.vyssi)';
lSQL:= lSQL + ' LEFT JOIN ' + tblKZ + ' kzmvaz ON (kzmvaz.ID=mvaz.nizsi) LEFT JOIN ' + tblKZe + ' kzmvazE ON (kzmvazE.ID=kzmvaz.ID)';
lSQL:= lSQL + ' WHERE pp.ID=' + idPrP.ToString + ' AND ISNULL(vpf.StavPrikazu,30)=30 AND vp.StavPrikazu=30 AND pp.prednastaveno=1';
lSQL:= lSQL + ' AND pp.splneno=0 AND pp.IDOdchylkyDo IS NULL AND pp.pracoviste=' + idPrac.ToString;
with Helios.OpenSQL(lSQL) do
if (RecordCount>0) then
begin
First;
dm.tblPila.FieldByName('colSZ').AsString:= VarToStr(FieldByNameValues('SkupZboMat'));
dm.tblPila.FieldByName('colRegCis').AsString:= VarToStr(FieldByNameValues('RegCisMat'));
dm.tblPila.FieldByName('colCisloZboziMat').AsString:= VarToStr(FieldByNameValues('SkupZboMat')).Trim + VarToStr(FieldByNameValues('RegCisMat')).Trim;
dm.tblPila.FieldByName('colIDKmenMat').AsString:= VarToStr(FieldByNameValues('IDKmenMat')).Trim;
dm.tblPila.FieldByName('colRozmer').AsString:= VarToStr(FieldByNameValues('Rozmer')).Trim;
dm.tblPila.FieldByName('colNazev1').AsString:= VarToStr(FieldByNameValues('Nazev1Mat'));
dm.tblPila.FieldByName('colKs').AsExtended:= VarToStr(FieldByNameValues('MnozVys')).ToExtended;
dm.tblPila.FieldByName('colDelka').AsExtended:= VarToStr(FieldByNameValues('MnozMat')).ToExtended;
dm.tblPila.FieldByName('colDelkaCelkem').AsExtended:= dm.tblPila.FieldByName('colKs').AsExtended * VarToStr(FieldByNameValues('MnozMat')).ToExtended;
dm.tblPila.FieldByName('colNadoba').AsString:= VarToStr(FieldByNameValues('CisloNadoby')).Trim;
dm.tblPila.FieldByName('colVykresFin').AsString:= VarToStr(FieldByNameValues('Vykres')).Trim;
// dm.tblPila.FieldByName('colPozice').AsString:= VarToStr(FieldByNameValues('pozice')).Trim;
dm.tblPila.FieldByName('colJakostMat').AsString:= VarToStr(FieldByNameValues('JakostMat')).Trim;
dm.tblPila.FieldByName('colSilaMat').AsString:= VarToStr(FieldByNameValues('SilaMat')).Trim;
dm.tblPila.FieldByName('colDatum').AsDateTime:= FieldByNameValues('Datum');
dm.tblPila.FieldByName('colVybran').AsBoolean:= false;
dm.tblPila.FieldByName('colSmazat').AsBoolean:= false;
dm.tblPila.FieldByName('colRadaPrikaz').AsString:= VarToStr(FieldByNameValues('RadaPrikaz')).Replace(' ', '').Trim;
dm.tblPila.FieldByName('colSZPrikaz').AsString:= VarToStr(FieldByNameValues('SkupZbo')).Trim; // SZ dilce vyrobniho prikazu
dm.tblPila.FieldByName('colRegCisPrikaz').AsString:= VarToStr(FieldByNameValues('RegCis')).Trim; // RegCis dilce vyrobniho prikazu
dm.tblPila.FieldByName('colPrumer').AsString:= VarToStr(FieldByNameValues('Prumer')).Trim;
dm.tblPila.FieldByName('colDN').AsString:= VarToStr(FieldByNameValues('DN')).Trim;
dm.tblPila.Post;
end
else
dm.tblPila.Cancel;
Next;
end;
Helios.ExecSQL('SELECT 5 AS DebugStep');
Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 5''');
jsemZUlozenych:= true;
edtFiltrPila.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT CisloZbozi FROM ' + tblKZ + ' WHERE ID=' + datModul.idMatDavkaKmen.ToString);
iTemp:= 0;
if (datModul.idKmenMaterialPila>0) then
begin
iTemp:= datModul.idKmenMaterialPila;
datModul.idMatDavkaKmen:= iTemp;
end;
{
firstNacitani:= true;
edtFiltrPilaExit (self);
firstNacitani:= false;
}
if (iTemp>0) then
datModul.idKmenMaterialPila:= iTemp;
edtFiltrPila.Text:= '';
jsemZUlozenych:= false;
end;
Next;
end;
end;
frontaPila.ItemCount:= dm.tblPila.RecordCount;
btnDelPila.Enabled:= (dm.tblPila.RecordCount>0);
btnDelPilaOne.Enabled:= btnDelPila.Enabled;
frontaPila.Invalidate;
Helios.ExecSQL('SELECT 6 AS DebugStep');
Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 6''');
lSQL:= 'SELECT ID, ISNULL(OsCislo,0) AS OsCislo, ISNULL(Sarze, N'''') AS Sarze FROM ' + tblRezPredpis;
lSQL:= lSQL + ' WHERE Splneno=0 AND JePlan=1 AND LoginName=SUSER_SNAME()'; // DeviceID=N' + datModul.devID.QuotedString;
with Helios.OpenSQL(lSQL) do
if (RecordCount>0) then
begin
Helios.ExecSQL('SELECT 7 AS DebugStep');
Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 7''');
First;
while not(EOF) do
begin
idH:= VarToStr(FieldByNameValues('ID')).ToInteger;
sarze:= VarToStr(FieldByNameValues('Sarze'));
datModul.idHlavPlan:= idH;
if (cbZamest.ItemIndex=-1) then
begin
cisZam:= VarToStr(FieldByNameValues('OsCislo')).ToInteger;
idZam:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblCZam + ' WHERE Cislo=' + cisZam.ToString);
z:= TZamestnanec.Create(0, cisZam, Helios);
for i:=0 to cbZamest.Items.Count-1 do
begin
zx:= (cbZamest.Items.Objects[i] as TZamestnanec);
if (zx.Cislo=z.Cislo) then
cbZamest.ItemIndex:= i;
end;
FreeAndNil(z);
FreeAndNil(zx);
end;
Helios.ExecSQL('SELECT 8 AS DebugStep');
Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 8''');
lSQL:= 'SELECT ID, IDPrikaz, Doklad, Operace, DokladOper, AltOper, IDPrKVazby, IDKmenMaterial, MnozstviKs, Mnozstvi, MnozstviReal, MnozstviRealKs, Tisk FROM ';
lSQL:= lSQL + tblRezPredpisR + ' WHERE IDMzdy IS NULL AND IDHlavicka=' + idH.ToString + ' ORDER BY Pozice, ID';
with Helios.OpenSQL(lSQL) do
if (RecordCount>0) then
begin
Helios.ExecSQL('SELECT 9 AS DebugStep');
Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 9''');
First;
while not(EOF) do
begin
idPol:= VarToStr(FieldByNameValues('ID')).ToInteger;
idVPr:= VarToStr(FieldByNameValues('IDPrikaz')).ToInteger;
prpD:= VarToStr(FieldByNameValues('DokladOper')).ToInteger;
prpA:= VarToStr(FieldByNameValues('AltOper'));
idPrVaz:= VarToStr(FieldByNameValues('IDPrKVazby')).ToInteger;
lSQL:= 'SELECT ID FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString + ' AND Doklad=' + prpD.ToString + ' AND Alt=N' + prpA.QuotedString;
idPrP:= helUtils.getHeliosIntVal(Helios, 0, lSQL);
idPrac:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT pracoviste FROM ' + tblPrPost + ' WHERE ID=' + idPrP.ToString);
idKZMat:= VarToStr(FieldByNameValues('IDKmenMaterial')).ToInteger;
poz:= dm.MaxPoziceTab (dm.tblPlan) + 10;
if (datModul.idKmenMaterialPlan=0) then
datModul.idKmenMaterialPlan:= idKZMat;
NactiMnozstviSkladu (true, idKZMat, '');
dm.tblPlan.Append;
dm.tblPlan.FieldByName('colPozice').AsInteger:= poz;
dm.tblPlan.FieldByName('colIDPrKVazby').AsInteger:= idPrVaz;
dm.tblPlan.FieldByName('colIDPrPostup').AsInteger:= idPrP;
dm.tblPlan.FieldByName('colIDHlavicka').AsInteger:= idH;
dm.tblPlan.FieldByName('colIDPolozka').AsInteger:= idPol;
dm.tblPlan.FieldByName('colKs').AsExtended:= VarToStr(FieldByNameValues('MnozstviKs')).ToExtended;
dm.tblPlan.FieldByName('colOperace').AsString:= VarToStr(FieldByNameValues('Operace'));
Helios.ExecSQL('SELECT 10 AS DebugStep');
Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 10''');
lSQL:= 'SELECT pp.ID, mvaz.ID AS IDMVaz, kzvp.SkupZbo, kzvp.RegCis, kzvp.Nazev1, kzmvaz.SkupZbo AS SkupZboMat, kzmvaz.RegCis AS RegCisMat, kzmvaz.Nazev1 AS Nazev1Mat, mvaz.pozice';
lSQL:= lSQL + ', ISNULL(zak.Nazev,N'''') AS CisloNadoby, kzf.Nazev1, kzf.Vykres, pp.operace, ISNULL(mvaz.mnozstvi,0)*1000 AS MnozMat, ISNULL(mvaz.mnoz_Nevydane,0)*1000 AS MnozMatCelkem';
lSQL:= lSQL + ', ISNULL(mvazv.mnoz_Nevydane, (mvaz.mnoz_Nevydane/mvaz.mnozstvi)) AS MnozVys, vp.RadaPrikaz, ISNULL(kzmvazE._Rozmer, N'''') AS Rozmer';
lSQL:= lSQL + ', ISNULL(pp.Plan_zadani, vp.Plan_zadani) AS Datum, vp.RadaPrikaz, ISNULL(kzmvazE._JakostMaterialu, N'''') AS JakostMat';
lSQL:= lSQL + ', ISNULL(kzmvazE._S1_X, N'''') AS SilaMat';
lSQL:= lSQL + ' FROM ' + tblPrPost + ' pp INNER JOIN ' + tblPrikaz + ' vp ON (vp.ID=pp.IDPrikaz) INNER JOIN ' + tblKZ + ' kzvp ON (kzvp.ID=vp.IdTabKmen)';
lSQL:= lSQL + ' LEFT JOIN ' + tblPrikaz + ' vpv ON (vpv.ID=vp.IDPrikazVyssi) LEFT JOIN ' + tblPrikaz + ' vpf ON (vpf.ID=vp.IDPrikazRidici)';
lSQL:= lSQL + ' INNER JOIN ' + tblPrVaz + ' mvaz ON (mvaz.Splneno=0 AND mvaz.IDPrikaz=vp.ID AND mvaz.operace=pp.operace AND mvaz.IDOdchylkyDo IS NULL)';
lSQL:= lSQL + ' LEFT JOIN ' + tblZak + ' zak ON (zak.ID=vpf.IDZakazka) INNER JOIN ' + tblKZ + ' kzf ON (kzf.ID=vpf.IdTabKmen)';
lSQL:= lSQL + ' LEFT JOIN dbo.TabPrKVazby mvazv ON (mvazv.IDPrikaz=vpv.ID AND mvazv.IDOdchylkyDo IS NULL AND mvazv.nizsi=mvaz.vyssi)';
lSQL:= lSQL + ' LEFT JOIN ' + tblKZ + ' kzmvaz ON (kzmvaz.ID=mvaz.nizsi) LEFT JOIN ' + tblKZe + ' kzmvazE ON (kzmvazE.ID=kzmvaz.ID)';
lSQL:= lSQL + ' WHERE pp.ID=' + idPrP.ToString + ' AND vp.StavPrikazu=30 AND pp.prednastaveno=1 AND pp.splneno=0 AND pp.IDOdchylkyDo IS NULL AND pp.pracoviste=' + idPrac.ToString;
with Helios.OpenSQL(lSQL) do
if (RecordCount>0) then
begin
First;
Helios.ExecSQL('SELECT 11 AS DebugStep');
Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 11''');
dm.tblPlan.FieldByName('colSZ').AsString:= VarToStr(FieldByNameValues('SkupZboMat'));
dm.tblPlan.FieldByName('colRegCis').AsString:= VarToStr(FieldByNameValues('RegCisMat'));
dm.tblPlan.FieldByName('colNazev1').AsString:= VarToStr(FieldByNameValues('Nazev1Mat'));
dm.tblPlan.FieldByName('colPovoleno').AsBoolean:= true;
dm.tblPlan.FieldByName('colCisloZboziMat').AsString:= VarToStr(FieldByNameValues('SkupZboMat')).Trim + VarToStr(FieldByNameValues('RegCisMat')).Trim;
dm.tblPlan.FieldByName('colRozmer').AsString:= VarToStr(FieldByNameValues('Rozmer')).Trim;
dm.tblPlan.FieldByName('colDelka').AsExtended:= VarToStr(FieldByNameValues('MnozMat')).ToExtended;
dm.tblPlan.FieldByName('colNadoba').AsString:= VarToStr(FieldByNameValues('CisloNadoby')).Trim;
dm.tblPlan.FieldByName('colVykresFin').AsString:= VarToStr(FieldByNameValues('Vykres')).Trim;
// dm.tblPlan.FieldByName('colPozice').AsString:= VarToStr(FieldByNameValues('pozice')).Trim;
dm.tblPlan.FieldByName('colJakostMat').AsString:= VarToStr(FieldByNameValues('JakostMat')).Trim;
dm.tblPlan.FieldByName('colSilaMat').AsString:= VarToStr(FieldByNameValues('SilaMat')).Trim;
dm.tblPlan.FieldByName('colDatum').AsDateTime:= FieldByNameValues('Datum');
dm.tblPlan.FieldByName('colVybran').AsBoolean:= false;
dm.tblPlan.FieldByName('colSmazat').AsBoolean:= false;
dm.tblPlan.FieldByName('colRadaPrikaz').AsString:= VarToStr(FieldByNameValues('RadaPrikaz')).Replace(' ', '').Trim;
end;
dm.tblPlan.Post;
Next;
end;
Helios.ExecSQL('SELECT 12 AS DebugStep');
Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 12''');
edtFiltrPlan.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT CisloZbozi FROM ' + tblKZ + ' WHERE ID=' + idKZMat.ToString);
iTemp:= datModul.idKmenMaterialPlan;
edtFiltrPlanExit (self);
datModul.idKmenMaterialPlan:= iTemp;
edtFiltrPlan.Text:= '';
end;
Next;
end;
frontaPlan.ItemCount:= dm.tblPlan.RecordCount;
btnDelPila.Enabled:= (dm.tblPlan.RecordCount>0);
frontaPlan.Invalidate;
Helios.ExecSQL('SELECT 13 AS DebugStep');
Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 13''');
end;
canAktPilu:= true;
ZapisInfoMaterialPila;
ZapisInfoMaterialPlan;
end;
procedure TformMain.NactiFrontu;
var lSQL, oldFiltr: string;
idPP: integer;
begin
Exit; // nove dm.NactiFrontu
// hvw_RezaciPredpisFronta
lSQL:= '/* NactiFrontu*/ SELECT pp.ID, mvaz.ID AS IDMVaz, kzvp.SkupZbo, kzvp.RegCis, kzvp.Nazev1, kzmvaz.SkupZbo AS SkupZboMat, kzmvaz.RegCis AS RegCisMat, kzmvaz.Nazev1 AS Nazev1Mat, mvaz.pozice';
lSQL:= lSQL + ', zak.Nazev AS CisloNadoby, kzf.Nazev1 AS Nazev1Fin, kzf.Vykres, pp.operace, mvaz.mnozstvi*1000 AS MnozMat, mvaz.mnoz_Nevydane*1000 AS MnozMatCelkem';
lSQL:= lSQL + ', ISNULL(mvazv.mnoz_Nevydane, (mvaz.mnoz_Nevydane/mvaz.mnozstvi)) AS MnozVys, vp.RadaPrikaz, ISNULL(kzmvazE._Rozmer, N'''') AS Rozmer';
lSQL:= lSQL + ', ISNULL(pp.Plan_zadani, vp.Plan_zadani) AS Datum, vpf.RadaPrikaz AS RadaPrikazFin, ISNULL(kzmvazE._JakostMaterialu, N'''') AS JakostMat';
lSQL:= lSQL + ', ISNULL(kzmvazE._S1_X, N'''') AS SilaMat, ISNULL(kzmvazE._Dm1_X, N'''') AS DN ';
lSQL:= lSQL + ' FROM ' + tblPrPost + ' pp INNER JOIN ' + tblPrikaz + ' vp ON (vp.ID=pp.IDPrikaz) INNER JOIN ' + tblKZ + ' kzvp ON (kzvp.ID=vp.IdTabKmen)';
lSQL:= lSQL + ' LEFT JOIN ' + tblPrikaz + ' vpv ON (vpv.ID=vp.IDPrikazVyssi) LEFT JOIN ' + tblPrikaz + ' vpf ON (vpf.ID=vp.IDPrikazRidici)';
lSQL:= lSQL + ' INNER JOIN ' + tblPrVaz + ' mvaz ON (mvaz.Splneno=0 AND mvaz.IDPrikaz=vp.ID AND mvaz.operace=pp.operace AND mvaz.IDOdchylkyDo IS NULL)';
lSQL:= lSQL + ' LEFT JOIN ' + tblZak + ' zak ON (zak.ID=vpf.IDZakazka) LEFT JOIN ' + tblKZ + ' kzf ON (kzf.ID=vpf.IdTabKmen)';
lSQL:= lSQL + ' LEFT JOIN dbo.TabPrKVazby mvazv ON (mvazv.IDPrikaz=vpv.ID AND mvazv.IDOdchylkyDo IS NULL AND mvazv.nizsi=mvaz.vyssi)';
lSQL:= lSQL + ' LEFT JOIN ' + tblKZ + ' kzmvaz ON (kzmvaz.ID=mvaz.nizsi) LEFT JOIN ' + tblKZe + ' kzmvazE ON (kzmvazE.ID=kzmvaz.ID)';
lSQL:= lSQL + ' WHERE vp.StavPrikazu=30 AND pp.prednastaveno=1 AND pp.splneno=0 AND pp.IDOdchylkyDo IS NULL AND pp.pracoviste=' + idPrac.ToString;
if (dm.tblPila.RecordCount>0) then
lSQL:= lSQL + ' AND mvaz.ID NOT IN (' + dm.VratIdPrKVazebNaPile (false) + ')';
if (dm.tblPlan.RecordCount>0) then
lSQL:= lSQL + ' AND mvaz.ID NOT IN (' + dm.VratIdPrKVazebNaPile (true) + ')';
lSQL:= lSQL + ' ORDER BY ISNULL(pp.Plan_zadani, vp.Plan_zadani)';
try
with Helios.OpenSQL(lSQL) do
begin
if (RecordCount>0) then
begin
if not(dm.tblFronta.Active) then
dm.tblFronta.Open;
dm.tblFronta.Filtered:= false;
dm.tblFronta.Clear; // .EmptyDataSet;
while not(EOF) do
begin
dm.tblFronta.Append;
idPP:= VarToStr(FieldByNameValues('ID')).ToInteger;
dm.tblFronta.FieldByName('colIDPrPostup').AsInteger:= idPP;
dm.tblFronta.FieldByName('colIDPrKVazby').AsInteger:= VarToStr(FieldByNameValues('IDMVaz')).ToInteger;
dm.tblFronta.FieldByName('colOperace').AsString:= VarToStr(FieldByNameValues('operace')).Trim;
dm.tblFronta.FieldByName('colRegCis').AsString:= VarToStr(FieldByNameValues('RegCisMat')).Trim;
dm.tblFronta.FieldByName('colSZ').AsString:= VarToStr(FieldByNameValues('SkupZboMat')).Trim;
dm.tblFronta.FieldByName('colCisloZboziMat').AsString:= VarToStr(FieldByNameValues('SkupZboMat')).Trim + VarToStr(FieldByNameValues('RegCisMat')).Trim;
dm.tblFronta.FieldByName('colRozmer').AsString:= VarToStr(FieldByNameValues('Rozmer')).Trim;
dm.tblFronta.FieldByName('colNazev1').AsString:= VarToStr(FieldByNameValues('Nazev1Mat')).Trim;
dm.tblFronta.FieldByName('colKs').AsExtended:= VarToStr(FieldByNameValues('MnozVys')).ToExtended;
dm.tblFronta.FieldByName('colDelka').AsExtended:= VarToStr(FieldByNameValues('MnozMat')).ToExtended;
dm.tblFronta.FieldByName('colDelkaCelkem').AsExtended:= dm.tblFronta.FieldByName('colKs').AsExtended * VarToStr(FieldByNameValues('MnozMat')).ToExtended;
dm.tblFronta.FieldByName('colNadoba').AsString:= VarToStr(FieldByNameValues('CisloNadoby')).Trim;
dm.tblFronta.FieldByName('colVykresFin').AsString:= VarToStr(FieldByNameValues('Vykres')).Trim;
dm.tblFronta.FieldByName('colPozice').AsString:= VarToStr(FieldByNameValues('pozice')).Trim;
dm.tblFronta.FieldByName('colJakostMat').AsString:= VarToStr(FieldByNameValues('JakostMat')).Trim;
dm.tblFronta.FieldByName('colSilaMat').AsString:= VarToStr(FieldByNameValues('SilaMat')).Trim;
dm.tblFronta.FieldByName('colDN').AsString:= VarToStr(FieldByNameValues('DN')).Trim;
dm.tblFronta.FieldByName('colDatum').AsDateTime:= FieldByNameValues('Datum');
dm.tblFronta.FieldByName('colVybran').AsBoolean:= false;
dm.tblFronta.FieldByName('colSmazat').AsBoolean:= false;
dm.tblFronta.FieldByName('colRadaPrikaz').AsString:= VarToStr(FieldByNameValues('RadaPrikaz')).Replace(' ', '').Trim;
dm.tblFronta.Post;
Next;
end;
end
else
Helios.Error(#1'Žádný hutní materiál, požadovaný na zadaných výrobních příkazech,'#1 + CRLF + #1'na sobě nemá navázanou operaci.'#1)
end;
finally
end;
edtFiltrMaterialExit (self);
ctrlFronta.ItemCount:= dm.tblFronta.RecordCount;
lblRecCount.Caption:= 'Počet: ' + dm.tblFronta.RecordCount.ToString;
end;
procedure TformMain.NactiPracovnikyPily;
var lSQL, p, j: string;
begin
cbZamest.Clear;
lSQL:= '/* NactiPracovnikyPily */ SELECT z.ID, z.Cislo, z.Jmeno, z.Prijmeni FROM ' + tblCisZam + ' z INNER JOIN ' + tblCisZamE + ' ze ON (ze.ID=z.ID) WHERE ze._VyrobaPilar=1 ORDER BY z.PrijmeniJmeno';
try
with Helios.OpenSQL(lSQL) do
begin
First;
while not(EOF) do
begin
idZam:= VarToStr(FieldByNameValues('ID')).ToInteger;
cisZam:= VarToStr(FieldByNameValues('Cislo')).ToInteger;
p:= FieldByNameValues('Prijmeni');
j:= FieldByNameValues('Jmeno');
cbZamest.Items.AddObject(p + ' ' + j, TZamestnanec.Create (idZam, cisZam, Helios));
Next;
end;
idZam:= 0;
cisZam:= 0;
end;
finally
end;
end;
procedure TformMain.ctrlMDItemClick (Sender: TObject); // Na pilu
var f: TformPolozkyMD;
i, newPoz, idMD, polId: integer;
lSQL, s: string;
begin
if not(showMDDetail) then
Exit;
showMDDetail:= false;
if not(dm.tblMatDavky.Active) then
dm.tblMatDavky.Open;
i:= ctrlMD.HotItemIndex;
dm.tblMatDavky.RecNo:= i + 1;
idMD:= dm.tblMatDavky.FieldByName('colID').AsInteger;
f:= TformPolozkyMD.Create(nil);
try
f.Helios:= Helios;
f.mForm:= self;
f.idMatDavky:= idMD;
f.dm:= dm;
f.ShowModal;
if (f.mrVal=1) then // na pilu
begin
if (cbZamest.ItemIndex<0) then
begin
Helios.Error(#1'Není vybrán zaměstnanec !'#1);
if (cbZamest.CanFocus) then
cbZamest.SetFocus;
Exit;
end;
datModul.idMatDavka:= idMD;
// datModul.idKmenMaterialPila:= dm.tblMatDavky.FieldByName('colIDKmenMat').AsInteger;
datModul.idKmenMaterialPila:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDKmenZboziMat FROM ' + tblMatDavkyH + ' WHERE ID=' + idMd.ToString);
datModul.idMatDavkaKmen:= datModul.idKmenMaterialPila;
ZapisInfoMaterialPila;
shPila.Caption:= 'DÁVKA ' + helUtils.getHeliosStrVal(Helios, '', 'SELECT Cislo FROM ' + tblMatDavkyH + ' WHERE ID=' + idMD.ToString);
Helios.ExecSQL('UPDATE ' + tblRezPredpisPily + ' SET CisloDavky=N' + shPila.Caption.Replace('DÁVKA ', '').QuotedString + ' WHERE LoginName=SUSER_SNAME() AND Aktivni=1');
digitTimer.Enabled:= true;
btnTiskStitku.Enabled:= false;
Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 6''');
if (datModul.idHlavPila=0) then // delam cely novy seznam Pila ?
begin
s:= helUtils.GetClientComputerName(1);
lSQL:= 'INSERT ' + tblRezPredpis + ' (IDPlanMD, BlokovaniEditoru, IDPila, JePlan, DeviceID, OsCislo, CompName, IDKmenZboMaterial, LoginName) SELECT ' + idMD.ToString;
lSQL:= lSQL + ', ' + Helios.UserId.ToString + ', ' + IfThen(datModul.idPila=0, 'NULL', datModul.idPila.ToString) + ', 0, N' + datModul.devID.QuotedString + ', ' + cisZam.ToString;
lSQL:= lSQL + ', N' + s.QuotedString + ', ' + datModul.idKmenMaterialPila.ToString + ', SUSER_SNAME()' + CRLF + 'SELECT SCOPE_IDENTITY()';
datModul.idHlavPila:= helUtils.getHeliosIntVal(Helios, 0, lSQL);
try
dm.tblPila.Close;
dm.tblPila.Assign (dm.tblPolozkyMD);
dm.tblPila.Open;
dm.tblPila.IndexFieldNames:= '';
dm.tblPila.Refresh;
dm.tblPila.IndexFieldNames:= 'colPoziceInt ASC';
dm.tblPila.Refresh;
// frontaPila.ItemIndex:= 0;
Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 7''');
Helios.ExecSQL('UPDATE ' + tblMatDavkyH + ' SET NaPile=1 WHERE ID=' + idMD.ToString);
except on E:Exception do
Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 7-1 ERROR''');
end;
end
else
begin // ne, jen potrebuju pridat z materialove davky jen chybejici polozky
dm.tblPolozkyMD.First;
while not(dm.tblPolozkyMD.Eof) do
begin
if not(dm.tblPila.Locate('colIDPrPostup', VarArrayOf([dm.tblPolozkyMD.FieldByName('colIDPrPostup').AsInteger]), [loCaseInsensitive])) then
begin
dm.tblPila.Append;
for i:=0 to dm.tblPolozkyMD.FieldCount-1 do
dm.tblPila.FieldByName(dm.tblPolozkyMD.Fields[i].FieldName).Value:= dm.tblPolozkyMD.Fields[i].Value;
dm.tblPila.Post;
end;
dm.tblPolozkyMD.Next;
end;
end;
dm.tblPila.IndexFieldNames:= '';
dm.tblPila.First;
dm.tblPila.DisableControls;
while not(dm.tblPila.Eof) do
begin
newPoz:= dm.MaxPoziceTab (dm.tblPila) + 10;
dm.tblPila.Edit;
dm.tblPila.FieldByName('colIDHlavicka').AsInteger:= datModul.idHlavPila;
dm.tblPila.FieldByName('colPozice').AsInteger:= newPoz;
dm.tblPila.FieldByName('colPoziceInt').AsInteger:= newPoz;
polId:= 0;
lSQL:= 'UPDATE ' + tblMatDavkyR + ' SET NaPile=1 WHERE ID=' + dm.tblPila.FieldByName('colIDPlanR').AsString + CRLF;
lSQL:= lSQL + 'INSERT ' + tblRezPredpisR + ' (IDPlanMD, IDPlanMDPol, IDHlavicka, Pozice, IDPrKVazby, MnozstviKs, Mnozstvi, IDKmenMaterial)';
lSQL:= lSQL + ' SELECT ' + idMD.ToString + ', ' + dm.tblPila.FieldByName('colIDPlanR').AsString + ', ' + datModul.idHlavPila.ToString + ', ' + newPoz.ToString;
lSQL:= lSQL + ', ' + dm.tblPila.FieldByName('colIDPrKVazby').AsString + ', ' + dm.tblPila.FieldByName('colKs').AsExtended.ToString.Replace(',', '.');
lSQL:= lSQL + ', ' + (dm.tblPila.FieldByName('colDelka').AsExtended/1000).ToString.Replace(',', '.') + ', ' + datModul.idKmenMaterialPila.ToString + CRLF;
lSQL:= lSQL + 'SELECT SCOPE_IDENTITY() AS newid';
with Helios.OpenSQL(lSQL) do
polId:= VarToStr(FieldByNameValues('newid')).ToInteger;
dm.tblPila.FieldByName('colIDPolozka').AsInteger:= polId;
dm.tblPila.FieldByName('colTisk').AsBoolean:= false;
dm.tblPila.FieldByName('colPovoleno').AsBoolean:= true;
dm.tblPila.Post;
dm.tblPila.Next;
end;
dm.tblPila.EnableControls;
dm.tblPila.IndexFieldNames:= 'colPozice';
btnSmazFiltryMDClick (Sender);
btnPilaUp.Enabled:= (dm.tblPila.RecordCount>0);
btnPilaDown.Enabled:= btnPilaUp.Enabled;
Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 8''');
frontaPila.ItemCount:= dm.tblPila.RecordCount;
dm.tblPolozkyMD.Clear;
idMD:= 0;
end;
finally
f.Free;
end;
btnDelPila.Enabled:= (dm.tblPila.RecordCount>0);
Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 9''');
dm.NactiMaterialoveDavky (self, idMD);
ctrlMD.ItemCount:= dm.tblMatDavky.RecordCount;
ctrlMD.Invalidate;
if (pgCtrlMD.ActivePage=shMatDavky) then
pgCtrlMDChange (Sender);
Helios.ExecSQL('INSERT dbo._hdc_Log (Typ, LogText) SELECT 11, N''DebugStep 10''');
if (edtFiltrPila.CanFocus) then
edtFiltrPila.SetFocus;
end;
procedure TformMain.ctrlMDMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if (GetTickCount-tick1<1500) then
begin
showMDDetail:= false;
Exit;
end;
showMDDetail:= true;
tick1:= GetTickCount;
ctrlMDItemClick (Sender);
end;
procedure TformMain.timerNactiFrontuTimer (Sender: TObject);
begin
if (dm.PocetOznacenychVeFronte=0) and (dm.tblPila.RecordCount=0) and (dm.tblPlan.RecordCount=0) then
dm.NactiFrontu (idPrac, self);
end;
procedure TformMain.timer3Timer (Sender: TObject);
begin
timer3.Enabled:= false;
end;
procedure TformMain.cbFrontaAllClick (Sender: TObject);
begin
if (cbFrontaAll.Checked) then
dm.FrontaOznacitVse
else
dm.FrontaOdznacitVse;
ctrlFronta.Invalidate;
lblRecSelected.Caption:= 'Výběr: ' + dm.PocetOznacenychVeFronte.ToString + ' / celkem ' + ((dm.SoucetDelekOznacenychVeFronte)/1000).ToString + ' m';
end;
procedure TformMain.cbPrevodClick (Sender: TObject);
var i: integer;
begin
{
i:= ctrlFronta.HotItemIndex;
dm.tblFronta.RecNo:= i + 1;
dm.tblFronta.Edit;
dm.tblFronta.FieldByName('colVybran').AsBoolean:= cbPrevod.Checked;
dm.tblFronta.Post;
ctrlFronta.Invalidate;
}
end;
procedure TformMain.cbZamestChange (Sender: TObject);
var z: TZamestnanec;
begin
if (cbZamest.ItemIndex>-1) then
begin
z:= TZamestnanec (cbZamest.Items.Objects[cbZamest.ItemIndex]);
cisZam:= z.Cislo;
idZam:= z.Id;
end;
end;
procedure TformMain.ctrlMDBeforeDrawItem (AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState);
var lSQL, sz, rc: string;
begin
dm.tblMatDavky.RecNo:= AIndex + 1; // AIndex zero-based
lblMDCislo.Caption:= VarToStr(dm.tblMatDavky.FieldByName('colCislo').Value).Trim;
lblMDDatum.Caption:= FormatDateTime ('d.m.yyyy', dm.tblMatDavky.FieldByName('colPlanVyroby').Value).Trim;
sz:= VarToStr(dm.tblMatDavky.FieldByName('colSZMat').Value).Trim;
rc:= VarToStr(dm.tblMatDavky.FieldByName('colRCMat').Value).Trim;
lblMDCisloZbo.Caption:= sz + ' ' + rc;
lblMDNazev.Caption:= VarToStr(dm.tblMatDavky.FieldByName('colNazev1Mat').Value).Trim;
// lblMDRozmer.Caption:= VarToStr(dm.tblMatDavky.FieldByName('colRozmer').Value).Trim;
lblMDPozic.Caption:= VarToStr(dm.tblMatDavky.FieldByName('colPocetRadku').Value).Trim;
lSQL:= '/* ctrlMDBeforeDrawItem */SELECT TOP(1) ISNULL(kze._DN1,N'''') AS DN, ISNULL(kze._JakostMaterialu,N'''') AS JakostMat, ISNULL(kze._Rozmer, N'''') AS Rozmer, ISNULL(kze._Dm1_X, 0) AS Prumer';
lSQL:= lSQL + ', ISNULL(kze._S1_X, N'''') AS SilaMat, ISNULL(kze._NormaMat,N'''') AS NormaMAT FROM ' + tblKZ;
lSQL:= lSQL + ' k INNER JOIN ' + tblKZe + ' kze ON (kze.ID=k.ID) WHERE k.SkupZbo=N' + sz.QuotedString + ' AND k.RegCis=N' + rc.QuotedString;
try
try
with Helios.OpenSQL(lSQL) do
if (RecordCount=1) then
begin
// lblMDDM.Caption:= VarToStr(FieldByNameValues('DN'));
lblMDDM.Caption:= dm.tblMatDavky.FieldByName('colPrumerDM').AsString;
if (lblMDDM.Caption='0') then
lblMDDM.Caption:= '';
lblMDPrumer.Caption:= VarToStr(FieldByNameValues('Prumer'));
if (lblMDPrumer.Caption='0') then
lblMDPrumer.Caption:= '';
lblMDTloustka.Caption:= VarToStr(FieldByNameValues('SilaMat'));
if (lblMDTloustka.Caption='0') then
lblMDTloustka.Caption:= '';
lblMDJakost.Caption:= VarToStr(FieldByNameValues('JakostMat'));
lblMDRozmer.Caption:= VarToStr(FieldByNameValues('Rozmer'));
lblMDNormaMat.Caption:= VarToStr(FieldByNameValues('NormaMAT'));
end;
except
end;
finally
end;
end;
procedure TformMain.ctrlMDBeforeDrawItems (ACanvas: TCanvas; ARect: TRect);
begin
// ctrlMD.ItemCount:= dm.tblMatDavky.RecordCount;
end;
procedure TformMain.ctrlFrontaBeforeDrawItem (AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState);
var lSQL, sz, rc: string;
uhel: Extended;
begin
{ // pokud je povoleno, neni videt vyber polozky v seznamu
// Nastavení barvy pera pro rámeček
ACanvas.Pen.Color:= clBlack;
ACanvas.Pen.Width:= 1; // Šířka rámečku
// Nakreslení rámečku kolem položky
ACanvas.Rectangle(ARect);
}
dm.tblFronta.RecNo:= AIndex + 1; // AIndex zero-based
lblMaterial.Caption:= VarToStr(dm.tblFronta.FieldByName('colNazev1').Value).Trim;
// lblPozice.Caption:= VarToStr(dm.tblFronta.FieldByName('colPozice').Value).Trim;
lblRegCis.Caption:= VarToStr(dm.tblFronta.FieldByName('colRegCis').Value) + ' ' + VarToStr(dm.tblFronta.FieldByName('colRozmer').Value).Trim
+ '/' + VarToStr(dm.tblFronta.FieldByName('colSilaMat').Value) + ' ' + VarToStr(dm.tblFronta.FieldByName('colJakostMat').Value);
lblDeleni.Caption:= VarToStr(dm.tblFronta.FieldByName('colKs').Value) + ' x ' + VarToStr(dm.tblFronta.FieldByName('colDelka').Value) + ' mm ';
lblNadoba.Caption:= VarToStr(dm.tblFronta.FieldByName('colNadoba').Value);
lblRegCisPrikaz.Caption:= '' + VarToStr(dm.tblFronta.FieldByName('colRegCisPrikaz').Value).Trim;
lblRadaPrikaz.Caption:= VarToStr(dm.tblFronta.FieldByName('colRadaPrikaz').Value).Trim;
lblPrumer.Caption:= VarToStr(dm.tblFronta.FieldByName('colPrumer').Value).Trim;
lblTloustka.Caption:= VarToStr(dm.tblFronta.FieldByName('colSilaMat').Value).Trim;
lblRezatUhel.Caption:= '';
sz:= VarToStr(dm.tblFronta.FieldByName('colSZPrikaz').Value).Trim;
rc:= VarToStr(dm.tblFronta.FieldByName('colRegCisPrikaz').Value).Trim;
if (sz<>'') and (rc<>'') then
begin
lSQL:= 'SELECT TOP(1) Uhel FROM dbo.hvw_ADE_INSERT_VYROBA WHERE SkupZbo=N' + sz.QuotedString + ' AND RegCis=N' + rc.QuotedString + ' AND LastRec=1 AND StavPolozky=N''50''';
uhel:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
if (uhel>1) then
lblRezatUhel.Caption:= 'úhel ' + uhel.ToString;
end;
cbPrevod.Checked:= dm.tblFronta.FieldByName('colVybran').AsBoolean;
end;
procedure TformMain.lblRegCisClick (Sender: TObject);
begin
lblMaterialClick (Sender);
end;
procedure TformMain.lblMaterialClick (Sender: TObject);
var i: integer;
begin
if (canSelFronta) then
begin
// cbPrevod.Checked:= not(cbPrevod.Checked);
cbPrevodClick(Sender);
cbPrevod.Checked:= not(cbPrevod.Checked);
cbPrevod.Invalidate;
i:= ctrlFronta.HotItemIndex;
dm.tblFronta.RecNo:= i + 1;
dm.tblFronta.Edit;
dm.tblFronta.FieldByName('colVybran').AsBoolean:= cbPrevod.Checked;
// dm.tblFronta.FieldByName('colSmazat').AsBoolean:= dm.tblFronta.FieldByName('colVybran').AsBoolean;
dm.tblFronta.Post;
ctrlFronta.Invalidate;
lblRecSelected.Caption:= 'Výběr: ' + dm.PocetOznacenychVeFronte.ToString + ' / celkem ' + ((dm.SoucetDelekOznacenychVeFronte)/1000).ToString + ' m';
btnAddPila.Enabled:= (dm.PocetOznacenychVeFronte>0);
btnObrazek.Enabled:= (dm.PocetOznacenychVeFronte=1);
btnFiltrMat.Enabled:= (dm.PocetOznacenychVeFronte=1);
ctrlFronta.ItemIndex:= -1;
end;
end;
procedure TformMain.ctrlFrontaItemClick (Sender: TObject);
var i, rFronta: integer;
m1, m2, m3: string;
begin
i:= ctrlFronta.HotItemIndex;
dm.tblFronta.RecNo:= i + 1;
canSelFronta:= false;
rFronta:= dm.tblFronta.RecordCount;
if (pgCtrl.ActivePage=shPila) then
begin
m1:= dm.VybranyMaterialFronta;
m2:= dm.MaterialNaPile (false); // na pile
m3:= dm.tblFronta.FieldByName('colSZ').AsString + dm.tblFronta.FieldByName('colRegCis').AsString;
if (m1='') and (m2='') then
canSelFronta:= true;
if not(canSelFronta) and (m1='') and (m2=m3) then
canSelFronta:= true;
if not(canSelFronta) and (m1=m3) and (m2='') then
canSelFronta:= true;
if not(canSelFronta) and (m1=m3) and (m2=m3) then
canSelFronta:= true;
if not(canSelFronta) then
Helios.Error(#1'Můžete vybírat jen stejný typ materiálu jaký je vybrán ve frontě nebo v DÁVCE.'#1);
end;
if (pgCtrl.ActivePage=shPlan) then
begin
m1:= dm.VybranyMaterialFronta;
m2:= dm.MaterialNaPile (true); // v planu
m3:= dm.tblFronta.FieldByName('colSZ').AsString + dm.tblFronta.FieldByName('colRegCis').AsString;
if (m1='') and (m2='') then
canSelFronta:= true;
if not(canSelFronta) and (m1='') and (m2=m3) then
canSelFronta:= true;
if not(canSelFronta) and (m1=m3) and (m2='') then
canSelFronta:= true;
if not(canSelFronta) and (m1=m3) and (m2=m3) then
canSelFronta:= true;
if not(canSelFronta) then
Helios.Error(#1'Můžete vybírat jen stejný typ materiálu jaký je vybrán ve frontě nebo v PLÁNU.'#1);
end;
{
cbPrevodClick(Sender);
cbPrevod.Checked:= not(cbPrevod.Checked);
cbPrevod.Invalidate;
i:= ctrlFronta.HotItemIndex;
dm.tblFronta.RecNo:= i + 1;
dm.tblFronta.Edit;
dm.tblFronta.FieldByName('colVybran').AsBoolean:= cbPrevod.Checked;
dm.tblFronta.Post;
ctrlFronta.Invalidate;
lblRecSelected.Caption:= 'Výběr: ' + dm.PocetOznacenychVeFronte.ToString + ' / celkem ' + ((dm.SoucetDelekOznacenychVeFronte)/1000).ToString + ' m';
}
end;
procedure TformMain.ctrlFrontaMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
// if (Button=mbLeft) then
// ctrlFrontaItemClick(Sender);
end;
procedure TformMain.TTiskThreadDestroy (Sender: TObject);
begin
if Assigned(FTiskThread) then
FTiskThread:= nil;
end;
procedure TformMain.TiskniZAPIAddTask (idRezPredpisR, idPrKV: Integer);
var em: integer;
begin
FTiskThread:= TThread.CreateAnonymousThread (
procedure
begin
// while not TThread.CheckTerminated do
// begin
TThread.Queue (nil,
procedure
begin
try
em:= EvidencePrace (idRezPredpisR);
if (em>0) then
begin
dm.tblPila.Edit;
dm.tblPila.FieldByName('colIDMzdy').AsInteger:= em;
dm.tblPila.FieldByName('colPovoleno').AsBoolean:= false;
dm.tblPila.Post;
if (Helios.PrintForm3 (bidPrKVaz, datModul.idTiskFormStitek, 'TabPrKVazby.ID=' + idPrKV.ToString)) then
begin
dm.tblPila.Edit;
dm.tblPila.FieldByName('colTisk').AsBoolean:= true;
dm.tblPila.Post;
Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET Tisk=1, DatTisku=GETDATE() WHERE ID=' + idRezPredpisR.ToString);
Helios.ExecSQL('UPDATE ' + tblRezPredpisPily + ' SET PosledniTisk=GETDATE() WHERE Aktivni=1 AND LoginName=SUSER_SNAME()');
end;
btnPilaDownClick (nil);
end;
apiTiskTasks.Remove(idRezPredpisR);
// TerminateThread(TThread.Current.ThreadID, 0);
finally
end;
end);
// if TThread.CheckTerminated then
// Exit;
// end;
end
);
// FTiskThread.FreeOnTerminate:= true;
FTiskThread.NameThreadForDebugging (AnsiString('HDCDZAPITiskThread'), FTiskThread.ThreadID);
FTiskThread.OnTerminate:= TTiskThreadDestroy;
FTiskThread.Start;
end;
procedure TformMain.AktualizujFrontuPila;
var lSQL: string;
i, i2, idPrKV, em: integer;
spl, jeAPI: boolean;
bmk: TBookmark;
begin
if not(canAktPilu) then
Exit;
if (dm.tblPila.RecordCount>0) then // 010030INT00003061021550
begin
i:= dm.tblPila.RecNo;
bmk:= dm.tblPila.GetBookmark;
dm.tblPila.DisableControls;
dm.tblPila.First;
while not(dm.tblPila.Eof) do
begin
i2:= dm.tblPila.FieldByName('colIDPolozka').AsInteger;
idPrKV:= dm.tblPila.FieldByName('colIDPrKVazby').AsInteger;
{
jeAPI:= helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM ' + tblRezPredpisR + ' WHERE TiskAPI=1 AND DatTisku IS NULL AND ID=' + i2.ToString);
if (jeAPI) then
begin
if (apiTiskTasks.IndexOf(i2)<0) then
begin
apiTiskTasks.Add(i2);
TiskniZAPIAddTask (i2, idPrKV);
end;
end;
}
{
if (dm.tblPila.FieldByName('colIDPlanR').AsInteger>0) then
begin
lSQL:= 'SELECT 1 FROM ' + tblRezPredpisR + ' WHERE TiskAPI=1 AND DatTisku IS NOT NULL AND ID=' + i2.ToString;
spl:= helUtils.sqlExistsTestGeneral(Helios, lSQL);
if (spl) then
begin
dm.tblPila.Edit;
dm.tblPila.FieldByName('colPovoleno').AsBoolean:= false;
dm.tblPila.Post;
Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET Tisk=1, DatTisku=GETDATE() WHERE ID=' + i2.ToString);
end;
spl:= helUtils.getHeliosBoolVal(Helios, false, 'SELECT Splneno FROM ' + tblMatDavkyR + ' WHERE ID=' + dm.tblPila.FieldByName('colIDPlanR').AsString);
if (spl) then
begin
dm.tblPila.Edit;
dm.tblPila.FieldByName('colPovoleno').AsBoolean:= false;
dm.tblPila.Post;
end;
end;
}
dm.tblPila.Next;
end;
dm.tblPila.RecNo:= i;
if (dm.tblPila.BookmarkValid(bmk)) then
dm.tblPila.GotoBookmark(bmk);
dm.tblPila.FreeBookmark(bmk);
dm.tblPila.EnableControls;
end;
end;
procedure TformMain.digitTimerTimer (Sender: TObject);
var v: Integer;
h, m: integer;
begin
Inc(timerPila);
h:= (timerPila div 100);
m:= (timerPila mod 100);
lblTimerPila.Caption:= FormatFloat('00', h) + ':' + FormatFloat('00', m);
// kazde 2s aktualizuj udaje ve fronte Pila, osetri stav kdy je polozka "uzavrena" akci pres CERVENE TLACITKO
if (lblTimerPila.Caption.EndsWith('1') or lblTimerPila.Caption.EndsWith('4') or lblTimerPila.Caption.EndsWith('8') or lblTimerPila.Caption.EndsWith('9')) then
AktualizujFrontuPila;
panelPila.Invalidate;
end;
procedure TformMain.dtFiltrMDDatumChange (Sender: TObject);
begin
// dtFiltrMDDatum.Format:= '';
if (dtFiltrMDDatum.Date=0) then
dtFiltrMDDatum.Format:= ' '
else
dtFiltrMDDatum.Format:= '';
edtFiltrMDCisloExit (Sender);
end;
procedure TformMain.dtFiltrMDDatumDateTimeChange(Sender: TObject; DateTime: TDateTime);
begin
if (DateTime=0) then
dtFiltrMDDatum.Format:= ' '
else
dtFiltrMDDatum.Format:= '';
edtFiltrMDCisloExit (Sender);
end;
procedure TformMain.VymazUdajePilaNeboPlan (plan: Boolean=false);
begin
if (dm=nil) then
Exit;
try
if (plan) then
begin
if (dm.tblPlan<>nil) then
if (dm.tblPlan.RecordCount=0) then
begin
datModul.planSZ:= '';
datModul.planRC:= '';
datModul.planSarze:= '';
lblPlanRegCis.Caption:= '';
lblPlanNazev1.Caption:= '';
lblPlanSkladem.Caption:= '';
lblPlanSarze.Caption:= '';
lblPlanSarzeSkladem.Caption:= '';
// lblPlanDelkaSum.Caption:= '';
end
end
else
begin
if (dm.tblPila<>nil) then
if (dm.tblPila.RecordCount=0) then
begin
shPila.Caption:= 'DÁVKA';
datModul.idKmenMaterialPila:= 0;
datModul.idMatDavka:= 0;
datModul.pilaSZ:= '';
datModul.pilaRC:= '';
datModul.pilaSarze:= '';
lblJsemAlter.Visible:= false;
lblPila1RegCis.Caption:= '';
lblPila1Nazev1.Caption:= '';
lblPila1Skladem.Caption:= '';
lblPila1Sarze.Caption:= '';
lblPila1SarzeSkladem.Caption:= '';
// lblPilaDelkaSum.Caption:= '';
end
end;
finally
end;
end;
procedure TformMain.edtFiltrPilaChange (Sender: TObject);
begin
if (edtFiltrPila.Text='') then
begin
lblPila1RegCis.Caption:= '';
lblPila1Nazev1.Caption:= '';
lblPila1Sarze.Caption:= '';
lblPila1Skladem.Caption:= '';
lblPila1SarzeSkladem.Caption:= '';
btnZmenaSarze.Visible:= false;
lblRecCount.Caption:= 'Počet: 0';
lblRecSelected.Caption:= 'Výběr: 0 / celkem 0 m';
if (pgCtrlMD.ActivePage=shMatDavky) then
lblRecCount.Caption:= 'Počet dávek: ' + dm.tblMatDavky.RecordCount.ToString
else
lblRecCount.Caption:= 'Počet: ' + dm.tblFronta.RecordCount.ToString;
btnAddPila.Enabled:= not(pgCtrlMD.ActivePage=shMatDavky);
btnAddPila.Enabled:= btnAddPila.Enabled and (dm.tblFronta.RecordCount>0);
end;
end;
procedure TformMain.edtFiltrPilaEnter (Sender: TObject);
begin
LoadKeyboardLayout('00000409', KLF_ACTIVATE or KLF_SETFORPROCESS);
edtFiltrPila.Text:= '';
VymazUdajePilaNeboPlan (false);
end;
procedure TformMain.edtFiltrPilaExit (Sender: TObject);
var lSQL, kod, sarze, sz, rc, matPila, errMsg: string;
d: byte;
canCont, jeMatPila: boolean;
i, i2, idKZ, idx, idMatOld: integer;
ks: Extended;
alter: boolean;
begin
edtFiltrPila.Text:= edtFiltrPila.Text.Trim;
datModul.pilaSZ:= '';
datModul.pilaRC:= '';
datModul.pilaSarze:= '';
// btnZmenaSarze.Visible:= false;
if (edtFiltrPila.Text<>'') then
begin
btnKonecDavky.Enabled:= false;
// btnZmenaSarze.Visible:= true;
// btnZmenaSarze.Enabled:= true;
idMatOld:= datModul.idKmenMaterialPila;
kod:= edtFiltrPila.Text;
d:= Length(kod);
sz:= '';
rc:= '';
sarze:= '';
if (d=13) then // 010030INT00003021022032 / 010030INT00003061021550
begin
sz:= LeftStr(kod, 3);
rc:= MidStr(kod, 4, 30);
end;
if (d=13) then
begin
sz:= LeftStr(kod, 3);
rc:= MidStr(kod, 4, 10);
end
else
if (d>13) and (LeftStr(kod,3)='010') then
begin
kod:= MidStr(kod, 4, 100);
sz:= LeftStr(kod, 3); // 030
rc:= MidStr(kod, 4, 10); // INT0000232
sarze:= MidStr(kod, 16, 50); // 1202106
end;
lSQL:= 'SELECT 1 FROM ' + tblSZ + ' s LEFT JOIN ' + tblSZe + ' se ON (se.ID=s.ID) WHERE se._MaterialProPilu=1';
jeMatPila:= helUtils.sqlExistsTestGeneral(Helios, lSQL);
if (jeMatPila) then
begin
idKZ:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblKZ + ' WHERE SkupZbo=N' + sz.QuotedString + ' AND RegCis=N' + rc.QuotedString);
if (idKZ=0) then
begin
Helios.Error(#1'Tento materiál nemá kartu !'#1 + CRLF + 'Naskenovaný kód: ' + kod);
materialOK:= false;
materialPilaOk:= false;
datModul.idKmenMaterialPila:= 0;
edtFiltrPila.Text:= '';
btnTiskStitku.Enabled:= false;
btnTiskBezEvidence.Enabled:= false;
if (edtFiltrPila.CanFocus) then
edtFiltrPila.SetFocus;
Exit;
end;
materialOK:= dm.NaskenovanyMaterialJeOK (idKZ, firstNacitani);
materialPilaOk:= materialOK;
btnTiskStitku.Enabled:= materialPilaOk;
btnTiskBezEvidence.Enabled:= materialPilaOk;
if not(materialPilaOk) then
begin
Helios.Error(#1'Naskenovaný materiál není původní požadovaný ani jeho alternativa'#1 + CRLF + 'Naskenovaný kód: ' + kod);
Exit;
end;
datModul.pilaSZ:= sz;
datModul.pilaRC:= rc;
datModul.pilaSarze:= sarze;
btnZmenaSarze.Visible:= true;
datModul.idKmenMaterialPila:= idKZ;
pilaReqSN:= helUtils.getHeliosBoolVal(Helios, false, 'SELECT CONVERT(bit, CASE WHEN KontrolaVyrC=N''N'' THEN 0 ELSE 1 END) FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString);
{
lSQL:= 'UPDATE ' + tblRezPredpis + ' SET IDKmenZboMaterial=' + idKZ.ToString + ', Sarze=N' + IfThen(sarze='', 'ULL', sarze.QuotedString);
lSQL:= lSQL + ' WHERE ID=' + datModul.idHlavPila.ToString;
Helios.ExecSQL(lSQL);
}
if not(firstNacitani) then
begin
digitTimer.Enabled:= true;
timerPila:= 0;
end;
ZapisInfoMaterialPila;
lblPila1Sarze.Caption:= sarze;
NactiMnozstviSkladu (true, idKZ, sarze);
if (sarze='') and (pilaReqSN) then
begin
if not(jsemZUlozenych) then
begin
Helios.Error(#1'Pozor, odpis naskenovaného materiálu vyžaduje ŠARŽI'#1);
materialOK:= false;
end;
end;
// pokud je vyzadovana Sarze, zvyrazni font cisla materialu
if (pilaReqSN) then
lblPila1RegCis.Font.Color:= clRed
else
lblPila1RegCis.Font.Color:= clWindowText;
lblPila1Sarze.Font.Color:= lblPila1RegCis.Font.Color;
if (dm.tblPila.RecordCount>0) then
begin
// materialOK:= true;
if (datModul.idKmenMaterialPila=0) then
datModul.idKmenMaterialPila:= dm.tblPila.FieldByName('colIDKmenMat').AsInteger;
matPila:= dm.MaterialNaPile (false);
if not(materialOK) then
begin
btnTiskStitku.Enabled:= false;
btnTiskBezEvidence.Enabled:= false;
lblJsemAlter.Visible:= false;
errMsg:= 'Máte vybrané položky z jiného materiálu než byl naskenovaný !!';
Helios.Error(#1 + errMsg + #1);
{
if (Helios.YesNo(#1'Naskenovaný materiál neodpovídá vybraným položkám'#1 + CRLF + 'Chcete provést záměnu materiálu ?', false)) then
begin
end
else
materialOK:= false;
}
end
else
begin
lblJsemAlter.Visible:= (datModul.idMatDavkaKmen<>idKZ);
datModul.idKmenMaterialPila:= idKZ;
if (materialOK) and (sarze='') and (pilaReqSN) then
begin
errMsg:= 'POZOR, ' + IfThen(jsemZUlozenych, 'uložená', 'naskenovaná') + ' KARTA vyžaduje ŠARŽI.';
if not(firstNacitani) then
errMsg:= '';
materialOK:= false;
end
else
begin
if (kmenStavOK=false) or ((sarzeStavOK=false) and (sarze<>'')) then
begin
if not(kmenStavOK) then
errMsg:= 'POZOR, ' + IfThen(jsemZUlozenych, 'uložená', 'naskenovaná') + ' KARTA ' + IfThen(jsemZUlozenych, 'z nezpracovaných položek pily' , '') + ' není evidována na skladě';
if (lblPila1Sarze.Caption<>'') and not(sarzeStavOK) then
errMsg:= 'POZOR, ' + IfThen(jsemZUlozenych, 'uložená', 'naskenovaná') + ' ŠARŽE ' + IfThen(jsemZUlozenych, 'z nezpracovaných položek pily' , '') + 'není evidována na skladě !';
materialOK:= false;
end;
// if (errMsg<>'') then
// Helios.Error(#1 + errMsg + #1);
end;
end;
if (errMsg='') then
begin
btnAddPila.Enabled:= false;
btnFiltrPilaDel.Enabled:= false;
btnKonecDavky.Enabled:= true;
{
try
for idx:=0 to frontaPila.ItemCount-1 do
begin
frontaPila.ItemIndex:= idx;
dm.tblPila.RecNo:= idx + 1; // index control listu je zero based
i:= dm.tblPila.FieldByName('colIDPrKVazby').AsInteger;
i2:= dm.tblPila.FieldByName('colIDPolozka').AsInteger;
ks:= dm.tblPila.FieldByName('colKs').AsExtended;
Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET Sarze=N' + lblPila1Sarze.Caption.QuotedString + ' WHERE ID=' + i2.ToString);
if (Helios.PrintForm3 (bidPrKVaz, 78, 'TabPrKVazby.ID=' + i.ToString)) then
begin
Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET Tisk=1, DatTisku=GETDATE() WHERE ID=' + i2.ToString);
dm.tblPila.Edit;
dm.tblPila.FieldByName('colTisk').AsBoolean:= true;
dm.tblPila.Post;
end;
end;
except on E:Exception do
Helios.Error(#1'CHYBA'#1 + E.Message);
end;
}
// po vytisteni vsech stitku se puvodne smazala fronta pily (davka)
if (dm.KolikZbyvaKTisku=0) then
begin
Helios.ExecSQL('UPDATE ' + tblRezPredpis + ' SET DatSplneno=GETDATE(), JeNovaVetaEditor=0 WHERE ID=' + datModul.idHlavPila.ToString);
datModul.idHlavPila:= 0;
dm.tblPila.Clear; // .EmptyDataSet;
frontaPila.ItemCount:= 0;
frontaPila.Invalidate;
digitTimer.Enabled:= false;
VymazUdajePilaNeboPlan (false);
btnPilaUp.Enabled:= (dm.tblPila.RecordCount>0);
btnPilaDown.Enabled:= btnPilaUp.Enabled;
edtFiltrPila.Text:= '';
end;
end
else
begin
if (errMsg.Contains('není evid')) then
begin
errMsg:= errMsg + CRLF + 'karta ' + sz + ' ' + rc + ' / šarže ' + sarze;
edtFiltrPila.Text:= '';
Helios.Error(#1 + errMsg + #1);
VymazUdajePilaNeboPlan (false);
if (edtFiltrPila.CanFocus) then
edtFiltrPila.SetFocus;
end;
end;
{
dm.tblPila.DisableControls;
dm.tblPila.Filtered:= false;
dm.tblPila.Filter:= 'colRegCis<>' + (sz+rc).ToUpper.QuotedString;
dm.tblPila.Filtered:= true;
i:= dm.tblPila.RecordCount;
dm.tblPila.Filtered:= false;
dm.tblPila.EnableControls;
pila1OK:= (i=0);
if (i>0) then
Helios.ExecSQL('Některé pozice zadané na PILU neodpovídají naskenovanému materiálu');
}
end;
end
else
begin
datModul.pilaSZ:= sz;
datModul.pilaRC:= rc;
datModul.pilaSarze:= sarze;
end;
end;
btnDelPila.Enabled:= (dm.tblPila.RecordCount>0);
btnDelPilaOne.Enabled:= btnDelPila.Enabled;
end;
procedure TformMain.edtFiltrPlanEnter (Sender: TObject);
begin
edtFiltrPlan.Text:= '';
VymazUdajePilaNeboPlan (true);
end;
procedure TformMain.edtFiltrPlanExit (Sender: TObject);
var lSQL, kod, sarze, sz, rc, matPila: string;
d: byte;
canCont: boolean;
m1, m2: Extended;
begin
sz:= '';
rc:= '';
sarze:= '';
edtFiltrPlan.Text:= edtFiltrPlan.Text.Trim;
if (edtFiltrPlan.Text<>'') then
begin
kod:= edtFiltrPlan.Text;
d:= Length(kod);
if (d=13) then
begin
sz:= LeftStr(kod, 3);
rc:= MidStr(kod, 4, 10);
end
else
if (d>13) and (LeftStr(kod,3)='010') then // 010030INT0000232101202106
begin
kod:= MidStr(kod, 4, 100);
sz:= LeftStr(kod, 3); // 030
rc:= MidStr(kod, 4, 10); // INT0000232
sarze:= MidStr(kod, 16, 50); // 1202106
end;
if (sz='030') or (sz='130') then
begin
m1:= 0;
m2:= 0;
datModul.planSZ:= sz;
datModul.planRC:= rc;
datModul.planSarze:= sarze;
lSQL:= 'SELECT k.Nazev1 + N'' '' + ISNULL(ke._Rozmer, N'''') + N'' / '' + ISNULL(ke._S1_X, N'''') + N'' '' + ISNULL(ke._JakostMaterialu, N'''') FROM ' + tblKZ;
lSQL:= lSQL + ' k LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) WHERE k.SkupZbo=N' + sz.QuotedString + ' AND k.RegCis=N' + rc.QuotedString;
lblPlanNazev1.Caption:= helUtils.getHeliosStrVal(Helios, '', lSQL);
// lblPila1Nazev1.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev1 FROM ' + tblKZ + ' WHERE SkupZbo=N' + sz.QuotedString + ' AND RegCis=N' + rc.QuotedString);
lblPlanRegCis.Caption:= rc;
lSQL:= 'SELECT s.Mnozstvi FROM ' + tblSS + ' s INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) WHERE k.SkupZbo=N' + sz.QuotedString + ' AND k.RegCis=N' + rc.QuotedString;
lSQL:= lSQL + ' AND s.IDSklad=N' + skladMat.QuotedString;
m1:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
lblPlanSkladem.Caption:= m1.ToString;
lblPlanSarze.Caption:= sarze;
if (sarze<>'') then
begin
lSQL:= 'SELECT vcs.Mnozstvi FROM ' + tblVyrCS + ' vcs INNER JOIN ' + tblSS + ' s ON (s.ID=vcs.IDStavSkladu) INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) WHERE k.SkupZbo=N';
lSQL:= lSQL + sz.QuotedString + ' AND k.RegCis=N' + rc.QuotedString + ' AND s.IDSklad=N' + skladMat.QuotedString + ' AND vcs.Nazev1=N' + sarze.QuotedString;
m2:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
lblPlanSarzeSkladem.Caption:= m2.ToString;
end;
if (dm.tblPlan.RecordCount>0) then
begin
matPila:= dm.MaterialNaPile (true);
if (matPila<>sz+rc) then
Helios.Error(#1'Naskenovaný materiál neodpovídá vybraným položkám'#1)
else
begin
end;
{
dm.tblPlan.DisableControls;
dm.tblPlan.Filtered:= false;
dm.tblPlan.Filter:= 'colRegCis<>' + (sz+rc).ToUpper.QuotedString;
dm.tblPlan.Filtered:= true;
i:= dm.tblPlan.RecordCount;
dm.tblPlan.Filtered:= false;
dm.tblPlan.EnableControls;
pila1OK:= (i=0);
if (i>0) then
Helios.ExecSQL('Některé pozice zadané na PLÁN neodpovídají naskenovanému materiálu');
}
end;
end;
end;
end;
procedure TformMain.edtFiltrProfilEnter (Sender: TObject);
var f: TformKeyb;
begin
edtFiltrProfil.Text:= '';
{
if (helUtils.IsAdmin) and (1=0) then
ShowTabTip
else
begin
if not(helUtils.IsPhysicalKeyboardConnected) then
begin
f:= TformKeyb.Create(nil);
try
f.ShowModal;
edtFiltrProfil.Text:= f.text.ToUpper;
if (frontaPanel.CanFocus) then
frontaPanel.SetFocus;
finally
f.Free;
end;
end;
end;
}
end;
procedure TformMain.edtFiltrProfilExit (Sender: TObject);
begin
edtFiltrProfil.Text:= edtFiltrProfil.Text.ToUpper;
lblFiltrProfil.Visible:= (edtFiltrProfil.Text<>'');
if (frontaPanel.CanFocus) then
frontaPanel.SetFocus;
CloseTabTip;
edtFiltrMaterialExit (Sender);
end;
procedure TformMain.edtFiltrProfilKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key=VK_RETURN) then
edtFiltrProfilExit (Sender);
end;
procedure TformMain.edtFiltrPrumerEnter (Sender: TObject);
var f: TformCalc;
begin
edtFiltrPrumer.Text:= '';
{
f:= TformCalc.Create(nil);
try
f.mrVal:= 0;
f.retVal:= '';
f.edtNum.Text:= '';
f.pnlAkce:= 6;
f.Hide;
f.ShowModal;
if (f.mrVal<10) then
begin
if (f.retVal<>'') then
edtFiltrPrumer.Text:= f.retVal;
if (f.retVal='') or (f.retVal='0') then
edtFiltrPrumer.Text:= '';
end;
edtFiltrMaterialExit (Sender);
finally
f.Free;
end;
if (frontaPlan.CanFocus) then
frontaPlan.SetFocus;
}
end;
procedure TformMain.edtFiltrPrumerExit (Sender: TObject);
begin
edtFiltrPrumer.Text:= edtFiltrPrumer.Text.Trim;
lblFiltrPrumer.Visible:= (edtFiltrPrumer.Text<>'');
if (frontaPanel.CanFocus) then
frontaPanel.SetFocus;
CloseTabTip;
edtFiltrMaterialExit (Sender);
end;
procedure TformMain.edtFiltrPrumerKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key=VK_RETURN) or (Key=VK_ESCAPE) then
edtFiltrPrumerExit (Sender);
end;
procedure TformMain.edtFiltrTloustkaEnter (Sender: TObject);
// var f: TformCalc;
begin
edtFiltrTloustka.Text:= '';
{
f:= TformCalc.Create(nil);
try
f.mrVal:= 0;
f.retVal:= '';
f.edtNum.Text:= '';
f.pnlAkce:= 7;
f.Hide;
f.ShowModal;
if (f.mrVal<10) then
begin
if (f.retVal<>'') then
edtFiltrTloustka.Text:= f.retVal;
if (f.retVal='') or (f.retVal='0') then
edtFiltrTloustka.Text:= '';
end;
edtFiltrMaterialExit (Sender);
finally
f.Free;
end;
if (frontaPlan.CanFocus) then
frontaPlan.SetFocus;
}
end;
procedure TformMain.edtFiltrTloustkaExit (Sender: TObject);
begin
edtFiltrTloustka.Text:= edtFiltrTloustka.Text.Trim;
lblFiltrTloustka.Visible:= (edtFiltrTloustka.Text<>'');
if (frontaPanel.CanFocus) then
frontaPanel.SetFocus;
// if not(helUtils.IsPhysicalKeyboardConnected) then
CloseTabTip;
edtFiltrMaterialExit (Sender);
end;
procedure TformMain.edtFiltrTloustkaKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key=VK_RETURN) or (Key=VK_ESCAPE) then
edtFiltrTloustkaExit (Sender);
end;
procedure TformMain.btnTiskBezEvidenceClick (Sender: TObject);
var lSQL, oper, altPrP, sTemp, tiskarnaPila: string;
i, ii, i2, i3, idKZx, dokl, idKmenTisk, idMD, idVPr, doklPrP: integer;
ks, delka: Extended;
defPrintName: string;
hPrinter: THandle;
JobInfo: array[0..255] of TJobInfo1;
vPO: TPrinterOptions;
JobsReturned, ix: DWORD;
DocInfo: TDocInfo1;
begin
if (datModul.idTiskForm>0) then
begin
if (datModul.tiskarnaNazev='') then // ZDesigner ZD421 PILA
begin
lSQL:= 'SELECT TOP(1) TiskFronta FROM ' + tblTiskDef + ' WHERE FormDefID=' + datModul.idTiskForm.ToString;
lSQL:= lSQL + ' AND (LoginName IS NULL OR LoginName=SUSER_SNAME()) ORDER BY ISNULL(LoginName, N'''') DESC';
datModul.tiskarnaNazev:= helUtils.getHeliosStrVal(Helios, '', lSQL);
end;
if not(helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM ' + tblTiskDef + ' WHERE TiskDoSouboru=1 AND FormDefID=' + datModul.idTiskForm.ToString)) then
if (helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 AS A FROM ' + tblTiskDef + ' WHERE FormDefID=' + datModul.idTiskForm.ToString + ' AND Implicitni=0'))
and (datModul.tiskarnaNazev<>'') then
if not(dm.IsPrinterActiveFrmId(datModul.tiskarnaNazev, datModul.idTiskForm)) then
begin
Helios.Error('Tiskárna nenalezena nebo "' + datModul.tiskarnaNazev + '" není aktivní');
// Exit;
end;
end;
// zkusi zrusit probihajici tiskove joby
defPrintName:= Printer.Printers[Printer.PrinterIndex];
if (datModul.tiskarnaNazev<>'') then
defPrintName:= datModul.tiskarnaNazev;
if (defPrintName<>'') then
begin
vPO.dwFlags:= PRINTER_OPTION_NO_CACHE;
vPO.cbSize:= SizeOf(vPO);
if OpenPrinter2(PChar(defPrintName), @hPrinter, nil, @vPO) then
try
// Získání seznamu úloh
EnumJobs(hPrinter, 0, 255, 1, @JobInfo, SizeOf(JobInfo), JobsReturned, ix);
if (JobsReturned>0) then
for ix:=0 to JobsReturned - 1 do
begin
// Zrušení jednotlivých úloh
SetJob(hPrinter, JobInfo[ix].JobId, 0, nil, JOB_CONTROL_CANCEL);
end;
finally
ClosePrinter(hPrinter);
end;
end;
idMD:= dm.tblPila.FieldByName('colIDPlanH').AsInteger;
dm.tblPila.RecNo:= frontaPila.ItemIndex + 1; // index TControlListu je zero based
// dotaz na pocet stitku pri ks>1
i:= dm.tblPila.FieldByName('colIDPrKVazby').AsInteger;
idVPr:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDPrikaz FROM ' + tblPrKVaz + ' WHERE IDOdchylkyDo IS NULL AND ID=' + i.ToString);
dokl:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT Doklad FROM ' + tblPrKVaz + ' WHERE IDOdchylkyDo IS NULL AND ID=' + i.ToString);
ii:= dm.tblPila.FieldByName('colIDPrKVazbyAlter').AsInteger;
if (ii>0) then
begin
idKZx:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT nizsi FROM ' + tblPrKVaz + ' WHERE ID=' + ii.ToString);
if (idKZx<>datModul.idKmenMaterialPila) then
ii:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblPrKVaz + ' WHERE nizsi=' + datModul.idKmenMaterialPila.ToString + ' AND IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString);
end;
idKZx:= 0;
ii:= 0;
if (i>0) then
idKZx:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT nizsi FROM ' + tblPrKVaz + ' WHERE ID=' + i.ToString + ' AND IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString);
if (idKZx>0) then
if (idKZx<>datModul.idKmenMaterialPila) then
ii:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblPrKVaz + ' WHERE nizsi=' + datModul.idKmenMaterialPila.ToString + ' AND IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString);
if (ii>0) and (i<>ii) then
begin
i:= ii;
dm.tblPila.Edit;
dm.tblPila.FieldByName('colIDPrKVazby').AsInteger:= i;
dm.tblPila.Post;
end;
oper:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Operace FROM ' + tblPrKVaz + ' WHERE ID=' + i.ToString);
if (oper='') then
begin
lSQL:= 'SELECT COUNT(ID) FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString + ' AND pracoviste=' + datModul.idPracovistePila.ToString;
if (helUtils.getHeliosIntVal(Helios, 0, lSQL)=1) then
oper:= helUtils.getHeliosStrVal(Helios, '', lSQL.Replace('COUNT(ID)', 'operace'));
if (oper<>'') then
Helios.ExecSQL('UPDATE ' + tblPrKVaz + ' SET Operace=N' + oper.QuotedString + ' WHERE ID=' + i.ToString + ' AND ISNULL(Operace,N'''')<>N' + oper.QuotedString);
end;
delka:= dm.tblPila.FieldByName('colDelka').AsExtended;
ks:= dm.tblPila.FieldByName('colKs').AsExtended;
idKmenTisk:= datModul.idMatDavkaKmen;
if (datModul.idMatDavkaKmen<>datModul.idKmenMaterialPila) then
begin
lSQL:= 'SELECT ID FROM ' + tblPrKVaz + ' WHERE IDOdchylkyDo IS NULL AND nizsi=' + datModul.idKmenMaterialPila.ToString + ' AND IDPrikaz=' + idVPr.ToString;
i3:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
if (i3=0) then
begin
lSQL:= 'DECLARE @i INT' + CRLF + 'EXEC @i=dbo.hp_NewPozadavek_TabPrKVazby @IDPrikaz=' + idVpr.ToString + ', @IDKmenZbozi=' + datModul.idKmenMaterialPila.ToString;
lSQL:= lSQL + ', @Mnozstvi=' + (helUtils.RoundToEX(delka, -4)/1000).ToString.Replace(',', '.');
lSQL:= lSQL + ', @Mnoz_zad=' + (helUtils.RoundToEX(delka * ks, -4)/1000).ToString.Replace(',', '.') + ', @Operace=N' + oper.QuotedString;
lSQL:= lSQL + ', @Alt_K_Dokladu=' + dokl.ToString + CRLF + 'SELECT @i';
i3:= helUtils.getHeliosIntVal(Helios, 0, lSQL);
end;
if (i3>0) then
begin
i:= i3;
dm.tblPila.Edit;
dm.tblPila.FieldByName('colIDPrKVazby').AsInteger:= i;
dm.tblPila.Post;
idKmenTisk:= datModul.idKmenMaterialPila;
end;
end;
i2:= dm.tblPila.FieldByName('colIDPolozka').AsInteger;
Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET IdPrKVazby=' + i.ToString + ' WHERE ID=' + i2.ToString);
lSQL:= 'DROP TABLE IF EXISTS #TabPilaMatDavkaPolTisk' + CRLF;
lSQL:= lSQL + 'CREATE TABLE #TabPilaMatDavkaPolTisk (ID INT IDENTITY(1,1) NOT NULL, IDPrKVazba INT, IDKmenZbozi INT, Sarze NVARCHAR(100), DelkaM NUMERIC(19,6) DEFAULT 0.0 )' + CRLF;
lSQL:= lSQL + 'INSERT #TabPilaMatDavkaPolTisk (IDPrKVazba, IDKmenZbozi, Sarze, DelkaM)';
lSQL:= lSQL + ' SELECT ' + i.ToString + ', ' + idKmenTisk.ToString + ', N' + lblPila1Sarze.Caption.QuotedString + ', ' + (helUtils.RoundToEX(delka, -4)/1000).ToString.Replace(',', '.');
// Helios.ExecSQL(lSQL);
{
try
if (DirectoryExists('C:\Temp')) then
begin
sTemp:= '<$PF_WhereSys>TabPrKVazby.ID=' + i.ToString + '</$PF_WhereSys><$PF_TiskDoSouboru>1</$PF_TiskDoSouboru>';
sTemp:= sTemp + '<$PF_DoSouboruCesta>C:\Temp</$PF_DoSouboruCesta><$PF_IDTypDoSouboru>3</$PF_IDTypDoSouboru>';
Helios.PrintForm3 (bidPrKVaz, datModul.idTiskForm, sTemp);
end;
finally
end;
}
// tisk
Helios.ExecSQL ('UPDATE ' + tblPrKVaz + ' SET Prednastaveno=0 WHERE IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString);
Helios.ExecSQL ('UPDATE ' + tblPrKVaz + ' SET Prednastaveno=1 WHERE IDOdchylkyDo IS NULL AND ID=' + i.ToString);
if (helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM ' + tblPlgInfo + ' WHERE NazevSys=N''PluginRemotePrint''')) then
begin
try
tiskarnaPila:= datModul.tiskarnaNazev;
if (datModul.tiskarnaNazev='') then
begin
tiskarnaPila:= helUtils.getHeliosStrVal (Helios, '', 'SELECT TOP(1) Nazev FROM dbo.GTabRPSeznamTiskaren WHERE LOWER(Nazev) LIKE N''%pila%'' ORDER BY Nazev');
datModul.tiskarnaNazev:= tiskarnaPila;
end;
if (tiskarnaPila<>'') then
begin
lSQL:= 'DECLARE @u NVARCHAR(80)=SUSER_SNAME(); EXEC dbo.GEP_RP_NewPozadavekNaTisk @Uzivatel=@u, @Popis=N''Tisk štítku pila'', @BrowseID=11050, @TiskID=' + datModul.idTiskForm.ToString
+ ', @Filtr=N''TabPrKVazby.ID=' + i.ToString + ''', @Tiskarna=N' + tiskarnaPila.QuotedString + ', @PocetKopii=1';
{
lSQL:= 'INSERT dbo.GTabRPSeznamPozadavku (Typ, Uzivatel, Popis, BrowseID, Filtr, Tiskarna)'
+' SELECT 0, SUSER_SNAME(), N''Tisk štítku pila'', ' + datModul.idTiskForm.ToString + ', N''TabPrKVazby.ID=' + i.ToString + ''', N'
}
Helios.ExecSQL (lSQL);
end;
finally
end;
end;
try
if not(datModul.tiskJenPlgRP) then
try
if (Helios.PrintForm3 (bidPrKVaz, datModul.idTiskForm, 'TabPrKVazby.ID=' + i.ToString)) then
begin
lSQL:= 'INSERT ' + tblRezPredpisTisky + ' (MimoEvidenci, IDRezaciPredpisR, IDKmenMaterial, Sarze, CisloZboziMat, DeviceID, IDPila, IDPrikaz, IDPrKVazby, OperacePrP,IDPredpisdavkyPlan)';
lSQL:= lSQL + ' SELECT 1, ' + i2.ToString + ', ' + datModul.idKmenMaterialPila.ToString + ', N' + IfThen(lblPila1Sarze.Caption='', 'ULL', lblPila1Sarze.Caption.QuotedString);
lSQL:= lSQL + ', N' + (datModul.pilaSZ + datModul.pilaRC).QuotedString + ', N' + datModul.devID.QuotedString + ', ' + datModul.idPila.ToString;
lSQL:= lSQL + ', ' + idVPr.ToString + ', ' + i.ToString + ', N' + oper.QuotedString + ', ' + idMD.ToString;
Helios.ExecSQL(lSQL);
Helios.ExecSQL('UPDATE ' + tblRezPredpisPily + ' SET PosledniTisk=GETDATE(), PocetTiskuMimo=PocetTiskuMimo+1 WHERE Aktivni=1 AND LoginName=SUSER_SNAME()');
end;
except on E:Exception do
Helios.Error(#1'Chyba tisku: ' + #1 + E.Message);
end;
finally
end;
Helios.ExecSQL('DROP TABLE IF EXISTS #TabPilaMatDavkaPolTisk');
end;
procedure TformMain.btnAddPilaClick (Sender: TObject);
var i, newPoz, polId: integer;
lSQL, errMsg, cZbo, s: string;
begin
if (cbZamest.ItemIndex<0) then
begin
Helios.Error(#1'Není vybrán zaměstnanec !'#1);
if (cbZamest.CanFocus) then
cbZamest.SetFocus;
Exit;
end;
if (dm.PocetVybranychMaterialuFronty>1) then
begin
Helios.Error(#1'Musíte vybrat jen jeden druh materiálu (reg.číslo) !'#1);
if (cbZamest.CanFocus) then
cbZamest.SetFocus;
Exit;
end;
btnDelPilaOne.Enabled:= true;
i:= 0;
cZbo:= '';
// lSQL:= 'DELETE X FROM (SELECT ID, ROW_NUMBER() OVER (PARTITION BY Pozice) AS Radek FROM ' + tblRezPredpisR + ') X WHERE WHERE JeNovaVetaEditor=0 AND '
dm.tblFronta.DisableControls;
dm.tblFronta.First;
while not(dm.tblFronta.Eof) do
begin
if (dm.tblFronta.FieldByName('colVybran').AsBoolean) then
begin
if not(dm.RadekFrontyUzNaPile(dm.tblFronta.RecNo, false)) and not(dm.RadekFrontyUzNaPile(dm.tblFronta.RecNo, true)) then
begin
// PILA
if (pgCtrl.ActivePage=shPila) then
begin
digitTimer.Enabled:= true;
btnTiskStitku.Enabled:= true;
if (datModul.idHlavPila=0) then
begin
s:= helUtils.GetClientComputerName(1);
lSQL:= 'INSERT ' + tblRezPredpis + ' (JePlan, DeviceID, OsCislo, JeNovaVetaEditor, CompName) SELECT 0, N' + datModul.devID.QuotedString;
lSQL:= lSQL + ', ' + cisZam.ToString + ', 1, N' + s.QuotedString + '; SELECT SCOPE_IDENTITY()';
datModul.idHlavPila:= helUtils.getHeliosIntVal(Helios, 0, lSQL);
end;
newPoz:= dm.MaxPoziceTab (dm.tblPila) + 10;
dm.tblPila.Append;
if (dm.CopyRecord (dm.tblFronta, dm.tblPila, dm.tblFronta.RecNo)) then
begin
if (cZbo='') then
cZbo:= dm.tblPila.FieldByName('colCisloZboziMat').AsString;
if (cZbo<>'') and (datModul.idKmenMaterialPila=0) then
datModul.idKmenMaterialPila:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblKZ + ' WHERE CisloZbozi=N' + cZbo.QuotedString);
dm.tblPila.FieldByName('colIDKmenMat').AsInteger:= datModul.idKmenMaterialPila;
dm.tblPila.FieldByName('colIDHlavicka').AsInteger:= datModul.idHlavPila;
dm.tblPila.FieldByName('colPozice').AsInteger:= newPoz;
dm.tblPila.FieldByName('colTisk').AsBoolean:= false;
dm.tblPila.FieldByName('colPovoleno').AsBoolean:= true;
try
dm.tblFronta.Edit;
dm.tblFronta.FieldByName('colSmazat').AsBoolean:= true;
dm.tblFronta.Post;
polId:= 0;
lSQL:= 'INSERT ' + tblRezPredpisR + ' (IDHlavicka, Pozice, IDPrKVazby, MnozstviKs, Mnozstvi, IDKmenMaterial)';
lSQL:= lSQL + ' SELECT ' + datModul.idHlavPila.ToString + ', ' + newPoz.ToString + ', ' + dm.tblPila.FieldByName('colIDPrKVazby').AsString;
lSQL:= lSQL + ', ' + dm.tblPila.FieldByName('colKs').AsExtended.ToString.Replace(',', '.');
lSQL:= lSQL + ', ' + (dm.tblPila.FieldByName('colDelka').AsExtended/1000).ToString.Replace(',', '.') + ', ' + datModul.idKmenMaterialPila.ToString + CRLF;
lSQL:= lSQL + 'SELECT SCOPE_IDENTITY() AS newid';
with Helios.OpenSQL(lSQL) do
polId:= VarToStr(FieldByNameValues('newid')).ToInteger;
dm.tblPila.FieldByName('colIDPolozka').AsInteger:= polId;
dm.tblPila.Post;
except on E:Exception do
begin
errMsg:= E.Message;
dm.tblPila.Cancel;
end;
end;
end
else
dm.tblPila.Cancel;
end // shPila
else
// PLAN
begin // shPlan
if (datModul.idHlavPlan=0) then
begin
s:= helUtils.GetClientComputerName(1);
lSQL:= 'INSERT ' + tblRezPredpis + ' (JePlan, DeviceID, OsCislo, JeNovaVetaEditor, CompName) SELECT 1, N' + datModul.devID.QuotedString;
lSQL:= lSQL + ', ' + cisZam.ToString + ', 1, N' + s.QuotedString + ' SELECT SCOPE_IDENTITY()';
datModul.idHlavPlan:= helUtils.getHeliosIntVal(Helios, 0, lSQL);
Helios.ExecSQL('UPDATE ' + tblRezPredpis + ' SET IDPlan=' + datModul.idHlavPlan.ToString + ' WHERE ID=' + datModul.idHlavPila.ToString);
end;
if (datModul.idHlavPlan>0) then
begin
newPoz:= dm.MaxPoziceTab (dm.tblPlan) + 10;
dm.tblPlan.Append;
if (dm.CopyRecord (dm.tblFronta, dm.tblPlan, dm.tblFronta.RecNo)) then
begin
if (cZbo='') then
cZbo:= dm.tblPlan.FieldByName('colCisloZboziMat').AsString;
if (cZbo<>'') and (datModul.idKmenMaterialPlan=0) then
datModul.idKmenMaterialPlan:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblKZ + ' WHERE CisloZbozi=N' + cZbo.QuotedString);
dm.tblPlan.FieldByName('colIDKmenMat').AsInteger:= datModul.idKmenMaterialPlan;
dm.tblPlan.FieldByName('colIDHlavicka').AsInteger:= datModul.idHlavPlan;
dm.tblPlan.FieldByName('colPozice').AsInteger:= newPoz;
try
dm.tblFronta.Edit;
dm.tblFronta.FieldByName('colSmazat').AsBoolean:= true;
dm.tblFronta.Post;
polId:= 0;
lSQL:= 'INSERT ' + tblRezPredpisR + ' (IDHlavicka, Pozice, IDPrKVazby, MnozstviKs, Mnozstvi)';
lSQL:= lSQL + ' SELECT ' + datModul.idHlavPlan.ToString + ', ' + newPoz.ToString + ', ' + dm.tblPlan.FieldByName('colIDPrKVazby').AsString;
lSQL:= lSQL + ', ' + dm.tblPlan.FieldByName('colKs').AsExtended.ToString.Replace(',', '.');
lSQL:= lSQL + ', ' + (dm.tblPlan.FieldByName('colDelka').AsExtended/1000).ToString.Replace(',', '.') + CRLF;
lSQL:= lSQL + 'SELECT SCOPE_IDENTITY() AS newid';
with Helios.OpenSQL(lSQL) do
polId:= VarToStr(FieldByNameValues('newid')).ToInteger;
dm.tblPlan.FieldByName('colIDPolozka').AsInteger:= polId;
dm.tblPlan.Post;
except
dm.tblPlan.Cancel;
end;
end
else
dm.tblPlan.Cancel;
btnSrot.Enabled:= false; // (dm.tblPlan.RecordCount>0);
btnPosliNaPilu.Enabled:= (dm.tblPlan.RecordCount>0);
end;
end; // shPlan
end;
end;
dm.tblFronta.Next;
end;
{
with Helios.OpenSQL('SELECT RegCis, Nazev1 FROM ' + tblKZ + ' WHERE CisloZbozi=N' + cZbo.QuotedString) do
if (RecordCount=1) then
begin
if (pgCtrl.ActivePage=shPila) then
begin
if (edtFiltrPila.Text='') then
begin
lblPila1RegCis.Caption:= VarToStr(FieldByNameValues('RegCis'));
lSQL:= 'SELECT k.Nazev1 + N'' '' + ISNULL(ke._Rozmer, N'''') + N'' / '' + ISNULL(ke._S1_X, N'''') + N'' '' + ISNULL(ke._JakostMaterialu, N'''') FROM ' + tblKZ;
lSQL:= lSQL + ' k LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) WHERE k.CisloZbozi=N' + cZbo.QuotedString;
lblPila1Nazev1.Caption:= helUtils.getHeliosStrVal(Helios, '', lSQL);
end;
end
else
begin
if (edtFiltrPlan.Text='') then
begin
lblPlanRegCis.Caption:= VarToStr(FieldByNameValues('RegCis'));
lSQL:= 'SELECT k.Nazev1 + N'' '' + ISNULL(ke._Rozmer, N'''') + N'' / '' + ISNULL(ke._S1_X, N'''') + N'' '' + ISNULL(ke._JakostMaterialu, N'''') FROM ' + tblKZ;
lSQL:= lSQL + ' k LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) WHERE k.CisloZbozi=N' + cZbo.QuotedString;
lblPlanNazev1.Caption:= helUtils.getHeliosStrVal(Helios, '', lSQL);
end;
end;
end;
}
ZapisInfoMaterialPila;
ZapisInfoMaterialPlan;
dm.tblFronta.First;
while not(dm.tblFronta.Eof) do
begin
if (dm.tblFronta.FieldByName('colSmazat').AsBoolean) then
dm.tblFronta.Delete;
dm.tblFronta.Next;
end;
dm.NactiFrontu (idPrac, self);
cbFrontaAll.Checked:= false;
dm.FrontaOdznacitVse;
lblRecSelected.Caption:= 'Výběr: ' + dm.PocetOznacenychVeFronte.ToString + ' / celkem ' + dm.SoucetDelekOznacenychVeFronte.ToString + ' m';
dm.tblFronta.Refresh;
dm.tblFronta.RecNo:= 0;
dm.tblFronta.EnableControls;
btnAddPila.Enabled:= (dm.PocetOznacenychVeFronte>0);
btnDelPila.Enabled:= (dm.tblPila.RecordCount>0) or (dm.tblPlan.RecordCount>0);
btnPilaUp.Enabled:= (dm.tblPila.RecordCount>0);
btnPilaDown.Enabled:= btnPilaUp.Enabled;
btnPlanUp.Enabled:= (dm.tblPlan.RecordCount>0);
btnPlanDown.Enabled:= btnPlanUp.Enabled;
btnSmazFiltryMDClick (Sender);
ctrlFronta.ItemCount:= dm.tblFronta.RecordCount;
ctrlFronta.Invalidate;
frontaPila.ItemCount:= dm.tblPila.RecordCount;
frontaPila.Invalidate;
frontaPlan.ItemCount:= dm.tblPlan.RecordCount;
frontaPlan.Invalidate;
end;
procedure TformMain.btnFiltrMatClick (Sender: TObject);
var s: string;
begin
if (dm.tblFronta.RecordCount>0) then
if (dm.PocetOznacenychVeFronte=1) then
begin
edtFiltrMaterial.Text:= dm.VratMaterialPrvniOznacenyVeFronte;
edtFiltrMaterialExit (Sender);
btnFiltrMat.Enabled:= (dm.PocetOznacenychVeFronte=1);
end;
btnAddPila.Enabled:= (dm.PocetOznacenychVeFronte>0);
end;
procedure TformMain.btnFiltrPilaClick (Sender: TObject);
var kod, sarze, sz, rc: string;
d: byte;
canCont: boolean;
begin
edtFiltrPila.Text:= edtFiltrPila.Text.Trim;
if (edtFiltrPila.Text<>'') then
begin
edtFiltrMaterial.Text:= datModul.pilaSZ + datModul.pilaRC;
dm.tblFronta.Filtered:= false;
dm.tblFronta.Filter:= 'colCisloZboziMat=' + edtFiltrMaterial.Text.ToUpper.QuotedString;
dm.tblFronta.Filtered:= true;
lblRecCount.Caption:= 'Počet: ' + dm.tblFronta.RecordCount.ToString;
ctrlFronta.ItemCount:= dm.tblFronta.RecordCount;
ctrlFronta.Invalidate;
end;
end;
procedure TformMain.btnFiltrPilaDelClick (Sender: TObject);
begin
edtFiltrPila.Text:= '';
lblJsemAlter.Visible:= false;
// btnAddPila.Enabled:= true;
// btnDelPila.Enabled:= true;
// btnDelPilaOne.Enabled:= true;
btnKonecDavky.Enabled:= false;
datModul.idKmenMaterialPila:= 0;
btnZmenaSarze.Visible:= false;
end;
procedure TformMain.btnFiltrPlanClick(Sender: TObject);
var kod, sarze, sz, rc: string;
d: byte;
canCont: boolean;
begin
edtFiltrPlan.Text:= edtFiltrPlan.Text.Trim;
if (edtFiltrPlan.Text<>'') then
begin
edtFiltrMaterial.Text:= datModul.planSZ + datModul.planRC;
dm.tblFronta.Filtered:= false;
dm.tblFronta.Filter:= 'colCisloZboziMat=' + edtFiltrMaterial.Text.ToUpper.QuotedString;
dm.tblFronta.Filtered:= true;
lblRecCount.Caption:= 'Počet: ' + dm.tblFronta.RecordCount.ToString;
ctrlFronta.ItemCount:= dm.tblFronta.RecordCount;
ctrlFronta.Invalidate;
end;
end;
procedure TformMain.btnFrontaDownClick (Sender: TObject);
begin
// SendMessage(ctrlFronta.Handle, WM_VSCROLL, SB_LINEDOWN, 0);
if (ctrlFronta.ItemIndex<ctrlFronta.ItemCount-1) then
ctrlFronta.ItemIndex:= ctrlFronta.ItemIndex + 1;
end;
procedure TformMain.btnFrontaPgDownClick (Sender: TObject);
var i: integer;
OldScrollPos : integer;
begin
OldScrollPos := TRttiContext.Create.GetType(TControlList).GetField('FScrollPos').GetValue(Sender).AsInteger;
TRttiContext.Create.GetType(TControlList).GetField('FScrollPos').SetValue(Sender, OldScrollPos);
// SendMessage(ctrlFronta.Handle, WM_VSCROLL, SB_PAGEDOWN, 0);
i:= Trunc(ctrlFronta.ClientHeight / ctrlFronta.ItemHeight);
if (ctrlFronta.ItemIndex+i <= ctrlFronta.ItemCount) then
ctrlFronta.ItemIndex:= ctrlFronta.ItemIndex + i
else
ctrlFronta.ItemIndex:= ctrlFronta.ItemCount+1;
end;
procedure TformMain.btnFrontaUpClick (Sender: TObject);
var oldPos: integer;
begin
// oldPos:= TRttiContext.Create.GetType(TControlList).GetField('FScrollPos').GetValue(Sender).AsInteger;
// TRttiContext.Create.GetType(TControlList).GetField('FScrollPos').SetValue(Sender, oldPos);
// SendMessage(ctrlFronta.Handle, WM_VSCROLL, SB_LINEUP, 0);
if (ctrlFronta.ItemIndex>0) then
ctrlFronta.ItemIndex:= ctrlFronta.ItemIndex - 1;
end;
procedure TformMain.btnFrontaPgUpClick (Sender: TObject);
var i: integer;
OldScrollPos : integer;
begin
OldScrollPos := TRttiContext.Create.GetType(TControlList).GetField('FScrollPos').GetValue(Sender).AsInteger;
TRttiContext.Create.GetType(TControlList).GetField('FScrollPos').SetValue(Sender, OldScrollPos);
// SendMessage(ctrlFronta.Handle, WM_VSCROLL, SB_PAGEUP, 0);
i:= Trunc(ctrlFronta.ClientHeight / ctrlFronta.ItemHeight);
if (ctrlFronta.ItemIndex-i >= 0) then
ctrlFronta.ItemIndex:= ctrlFronta.ItemIndex - i
else
ctrlFronta.ItemIndex:= 0;
end;
procedure TformMain.btnKonecDavkyClick (Sender: TObject);
var idx, i, i2, idM, pocMezdPrev: integer;
lSQL, tmpString: string;
ks: Extended;
arrIDRozpisR: TArray<integer>;
begin
if (frontaPila.ItemCount>0) and (1=0) then
begin
SetLength(arrIDRozpisR, frontaPila.ItemCount);
lSQL:= 'DROP TABLE IF EXISTS #TabEvidPracePila' + CRLF;
lSQL:= lSQL + 'CREATE TABLE #TabEvidPracePila (ID INT IDENTITY(1,1) NOT NULL, OsCislo INT, IDPolozka INT NOT NULL, Sarze NVARCHAR(100), CasS INT, PocetKs NUMERIC(19,6) DEFAULT 1.0 NOT NULL)';
Helios.ExecSQL (lSQL);
for idx:=0 to frontaPila.ItemCount-1 do
begin
frontaPila.ItemIndex:= idx;
dm.tblPila.RecNo:= idx + 1; // index TControlListu je zero based
// dotaz na pocet stitku pri ks>1
i:= dm.tblPila.FieldByName('colIDPrKVazby').AsInteger;
i2:= dm.tblPila.FieldByName('colIDPolozka').AsInteger;
ks:= dm.tblPila.FieldByName('colKs').AsExtended;
// tisk - VYPNUTY !!!
if (1=0) and (Helios.PrintForm3 (bidPrKVaz, datModul.idTiskFormStitek, 'TabPrKVazby.ID=' + i.ToString)) then
begin
Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET Tisk=1, DatTisku=GETDATE() WHERE ID=' + i2.ToString);
dm.tblPila.Edit;
dm.tblPila.FieldByName('colTisk').AsBoolean:= true;
dm.tblPila.Post;
end;
// evidovat praci ? tj. IDMzdy je null/nulove
// je uz radek v evidenci operaci ?
idM:= 0;
if (i2>0) then
idM:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ISNULL(IdMzdy,0) FROM ' + tblRezPredpisR + ' WHERE ID=' + i2.ToString);
if (idM=0) then
begin
try
lSQL:= 'INSERT #TabEvidPracePila (OsCislo, IDPolozka, Sarze, CasS, PocetKs) SELECT ' + cisZam.ToString + ', ' + i2.ToString + ', N' + lblPila1Sarze.Caption.QuotedString;
lSQL:= lSQL + ', ' + timerPila.ToString + ', ' + ks.ToString.Replace(',', '.');
Helios.ExecSQL (lSQL);
Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET Sarze=N' + lblPila1Sarze.Caption.QuotedString + ' WHERE ID=' + i2.ToString);
arrIDRozpisR[idx]:= i2;
// co tohle bylo ? - nove stale VYPNUTO !!!
if (1=0) and
not(helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM dbo._HDC_Log WHERE DATEDIFF(s, DatPorizeni, GETDATE())<10 AND Typ=10 AND iTemp=' + i2.ToString)) then
begin
dm.tblPila.Edit;
dm.tblPila.FieldByName('colPovoleno').AsBoolean:= false;
dm.tblPila.Post;
btnTiskStitku.Enabled:= false;
if (dm.KolikZbyvaKTisku=0) then
begin
Helios.ExecSQL('UPDATE ' + tblRezPredpis + ' SET DatSplneno=GETDATE(), JeNovaVetaEditor=0 WHERE ID=' + datModul.idHlavPila.ToString);
datModul.idHlavPila:= 0;
dm.tblPila.Clear; // .EmptyDataSet;
frontaPila.ItemCount:= 0;
frontaPila.Invalidate;
digitTimer.Enabled:= false;
VymazUdajePilaNeboPlan (false); // = pila
btnPilaUp.Enabled:= (dm.tblPila.RecordCount>0);
btnPilaDown.Enabled:= btnPilaUp.Enabled;
edtFiltrPila.Text:= '';
end;
end;
except on E:Exception do
Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET Sarze=NULL WHERE ID=' + i2.ToString);
end;
end;
end;
try
// spust proceduru pro zapis prace
lSQL:= 'IF OBJECT_ID(N''dbo.ep_HDC_EvidPracePila'', N''P'') IS NOT NULL EXEC dbo.ep_HDC_EvidPracePila @CelkovyCasS=' + timerPila.ToString + CRLF;
Helios.ExecSQL (lSQL);
Helios.ExecSQL ('DROP TABLE IF EXISTS #TabEvidPracePila');
// po ukonceni davky se smaze fronta a davka se oznaci jako splnena
if (1=1) then
begin
Helios.ExecSQL('UPDATE ' + tblRezPredpis + ' SET DatSplneno=GETDATE(), JeNovaVetaEditor=0 WHERE ID=' + datModul.idHlavPila.ToString);
datModul.idHlavPila:= 0;
dm.tblPila.Clear; // .EmptyDataSet;
frontaPila.ItemCount:= 0;
frontaPila.Invalidate;
digitTimer.Enabled:= false;
VymazUdajePilaNeboPlan (false); // = pila
btnPilaUp.Enabled:= (dm.tblPila.RecordCount>0);
btnPilaDown.Enabled:= btnPilaUp.Enabled;
edtFiltrPila.Text:= '';
end;
except on E:Exception do
Helios.Error(#1'CHYBA'#1 + CRLF + E.Message);
end;
end;
btnFiltrPilaDel.Enabled:= true;
btnAddPila.Enabled:= true;
btnDelPila.Enabled:= true;
btnDelPilaOne.Enabled:= true;
btnKonecDavky.Enabled:= false;
timerPila:= 0;
end;
procedure TformMain.btnAllZamestClick(Sender: TObject);
var i: integer;
begin
if (Helios.Prenos(bidCisZam, 'TabCisZam.ID', oVar1, 'TabCisZam.StavES NOT IN (1,2,3,4)', 'Vyberte zaměstnance', false)) then
begin
i:= VarToStr(oVar1).ToInteger;
NactiZamestnanceDleIDNeboCisla (i, 0);
end;
end;
procedure TformMain.NactiZamestnanceDleIDNeboCisla (id: Integer = 0; cislo: Integer = 0);
begin
if (id>0) then
cislo:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT Cislo FROM ' + tblCZam + ' WHERE ID=' + id.ToString);
if (cislo>0) then
begin
with Helios.OpenSQL('SELECT Jmeno, Prijmeni FROM ' + tblCZam + ' WHERE Cislo=' + cislo.ToString) do
if (RecordCount=1) then
begin
cisZam:= cislo;
idZam:= id;
cbZamest.Items.Clear;
cbZamest.Items.AddObject(FieldByNameValues('Prijmeni') + ' ' + FieldByNameValues('Jmeno'), TZamestnanec.Create (idZam, cisZam, Helios));
cbZamest.ItemIndex:= 0;
end
else
Helios.Error(#1'Zadané osobní číslo neexistuje'#1);
end
else
Helios.Error(#1'Osobní číslo musí být větší než 0'#1);
end;
procedure TformMain.btnCalcClick (Sender: TObject);
var f: TformCalc;
begin
f:= TformCalc.Create(nil);
try
f.mrVal:= 0;
f.retVal:= '';
f.edtNum.Text:= '';
f.pnlAkce:= 1;
f.Hide;
f.ShowModal;
if (f.mrVal<10) then
begin
if not(TryStrToInt(f.retVal, cisZam)) then
cisZam:= 0;
if (cisZam>0) then
NactiZamestnanceDleIDNeboCisla (0, cisZam)
else
Helios.Error(#1'Musíte zadat platné osobní číslo'#1);
end;
finally
f.Free;
end;
end;
procedure TformMain.btnCalcNadobaClick (Sender: TObject);
var f: TformCalc;
cisNadoby: integer;
begin
cisNadoby:= 0;
f:= TformCalc.Create(nil);
try
f.mrVal:= 0;
f.retVal:= '';
f.edtNum.Text:= '';
if (calcTyp=1) then
f.pnlAkce:= 3;
if (calcTyp=2) then
f.pnlAkce:= 4;
f.Hide;
f.ShowModal;
if (f.mrVal<10) then
begin
case calcTyp of
1: begin
if not(TryStrToInt(f.retVal, cisNadoby)) then
cisNadoby:= 0;
if (cisNadoby>0) then
begin
edtFiltrNadoba.Text:= cisNadoby.ToString;
edtFiltrNadobaExit (Sender);
end
else
Helios.Error(#1'Musíte zadat platné číslo nádoby'#1);
end;
2: begin
edtFiltrNazev.Text:= f.retVal;
edtFiltrNazevExit (Sender);
end;
end;
end;
finally
f.Free;
end;
end;
procedure TformMain.btnDelPilaClick (Sender: TObject);
var ids, lSQL: string;
begin
if (pgCtrlMD.ActivePage=shMatDavky) then
begin
lblJsemAlter.Visible:= false;
shPila.Caption:= 'DÁVKA';
Helios.ExecSQL('UPDATE ' + tblRezPredpisPily + ' SET CisloDavky=NULL WHERE LoginName=SUSER_SNAME() AND Aktivni=1');
lSQL:= 'UPDATE ' + tblMatDavkyR + ' SET NaPile=0 WHERE ID IN (SELECT IDPlanMDPol FROM ' + tblRezPredpisR + ' WHERE IDPlanMDPol IS NOT NULL AND IDHlavicka=' + datModul.idHlavPila.ToString + ')';
Helios.ExecSQL(lSQL);
if (dm.tblPila.RecordCount>0) then
if (dm.tblPila.FieldByName('colIDPlanH').AsInteger>0) then
Helios.ExecSQL('UPDATE ' + tblMatDavkyH + ' SET NaPile=0 WHERE ID=' + dm.tblPila.FieldByName('colIDPlanH').AsString);
ids:= dm.IDckaRezPredpisR (dm.tblPila);
try
dm.tblPila.Clear; // TFDMemTable.EmptyDataSet;
Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE Tisk=0 AND ID IN (' + ids + ')');
frontaPila.ItemCount:= dm.tblPila.RecordCount;
finally
end;
Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE DatTisku IS NULL AND Tisk=0 AND IDHlavicka=' + datModul.idHlavPila.ToString);
lSQL:= 'IF NOT EXISTS(SELECT 1 FROM ' + tblRezPredpisR + ' WHERE DatTisku IS NOT NULL AND IDHlavicka=' + datModul.idHlavPila.ToString + ')';
lSQL:= lSQL + ' DELETE FROM ' + tblRezPredpis + ' WHERE ID=' + datModul.idHlavPila.ToString;
Helios.ExecSQL(lSQL);
// lSQL:= 'DELETE FROM ' + tblRezPredpis + ' WHERE ID=' + datModul.idHlavPila.ToString;
// Helios.ExecSQL(lSQL);
datModul.idHlavPila:= 0;
frontaPila.Invalidate;
btnDelPila.Enabled:= (dm.tblPila.RecordCount>0);
btnDelPilaOne.Enabled:= (dm.tblPila.RecordCount>0);
edtFiltrPila.Text:= '';
VymazUdajePilaNeboPlan (false);
timerPila:= 0;
digitTimerTimer(Self);
digitTimer.Enabled:= false;
datModul.idKmenMaterialPila:= 0;
datModul.idMatDavka:= 0;
dm.NactiMaterialoveDavky (self);
ctrlMD.ItemCount:= dm.tblMatDavky.RecordCount;
ctrlMD.Invalidate;
pgCtrlMDChange (Sender);
end
else
begin
if (pgCtrl.ActivePage=shPila) then
begin
shPila.Caption:= 'DÁVKA';
lSQL:= 'UPDATE ' + tblMatDavkyR + ' SET NaPile=0 WHERE ID IN (SELECT IDPlanMDPol FROM ' + tblRezPredpisR + ' WHERE IDPlanMDPol IS NOT NULL AND IDHlavicka=' + datModul.idHlavPila.ToString + ')';
Helios.ExecSQL(lSQL);
ids:= dm.IDckaRezPredpisR(dm.tblPila);
try
dm.tblPila.Clear; // TFDMemTable.EmptyDataSet;
Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE DatTisku IS NULL AND Tisk=0 AND ID IN (' + ids + ')');
frontaPila.ItemCount:= dm.tblPila.RecordCount;
finally
end;
Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE DatTisku IS NULL AND IDHlavicka=' + datModul.idHlavPila.ToString);
lSQL:= 'DELETE FROM ' + tblRezPredpis + ' WHERE ID=' + datModul.idHlavPila.ToString + ' AND ID NOT IN (SELECT IDHlavicka FROM '
+ tblRezPredpisR + ' WHERE IDHlavicka=' + datModul.idHlavPila.ToString + ')';
Helios.ExecSQL(lSQL);
datModul.idHlavPila:= 0;
frontaPila.Invalidate;
btnDelPila.Enabled:= (dm.tblPila.RecordCount>0);
btnDelPilaOne.Enabled:= (dm.tblPila.RecordCount>0);
edtFiltrPila.Text:= '';
VymazUdajePilaNeboPlan (false);
timerPila:= 0;
digitTimerTimer(Self);
digitTimer.Enabled:= false;
datModul.idKmenMaterialPila:= 0;
datModul.idMatDavka:= 0;
dm.NactiMaterialoveDavky (self);
end;
if (pgCtrl.ActivePage=shPlan) then
begin
ids:= dm.IDckaRezPredpisR(dm.tblPlan);
try
dm.tblPlan.Clear; // .EmptyDataSet;
Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE ID IN (' + ids + ')');
frontaPlan.ItemCount:= dm.tblPlan.RecordCount;
finally
end;
Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE IDHlavicka=' + datModul.idHlavPlan.ToString);
Helios.ExecSQL('DELETE FROM ' + tblRezPredpis + ' WHERE ID=' + datModul.idHlavPlan.ToString);
datModul.idHlavPlan:= 0;
frontaPlan.Invalidate;
btnDelPila.Enabled:= (dm.tblPlan.RecordCount>0);
btnPosliNaPilu.Enabled:= (dm.tblPlan.RecordCount>0);
btnDelPilaOne.Enabled:= (dm.tblPlan.RecordCount>0);
datModul.idKmenMaterialPlan:= 0;
end;
end;
btnPilaUp.Enabled:= (dm.tblPila.RecordCount>0);
btnPilaDown.Enabled:= btnPilaUp.Enabled;
ZapisInfoMaterialPlan;
ZapisInfoMaterialPila;
btnTiskStitku.Enabled:= false;
btnTiskBezEvidence.Enabled:= false;
dm.NactiFrontu (idPrac, self);
end;
procedure TformMain.btnDelPilaOneClick (Sender: TObject);
var lSQL: string;
i, ii, idPol, idMD, idMDPlanR: integer;
begin
if (pgCtrl.ActivePage=shPila) then
begin
if (dm.tblPila.RecordCount>0) then
begin
i:= frontaPila.ItemIndex + 1;
dm.tblPila.RecNo:= i;
idMDPlanR:= dm.tblPila.FieldByName('colIDPlanR').AsInteger;
Helios.ExecSQL('UPDATE ' + tblMatDavkyR + ' SET NaPile=0 WHERE ID=' + idMDPlanR.ToString);
idMD:= dm.tblPila.FieldByName('colIDPlanH').AsInteger;
lSQL:= 'IF NOT EXISTS(SELECT 1 FROM ' + tblMatDavkyR + ' WHERE NaPile=1 AND IDHlava=' + idMD.ToString + ') '
+ 'UPDATE ' + tblMatDavkyH + ' SET NaPile=0 WHERE ID=' + idMD.ToString;
Helios.ExecSQL (lSQL);
idPol:= dm.tblPila.FieldByName('colIDPolozka').AsInteger;
dm.tblPila.Delete;
Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE ID=' + idPol.ToString + ' AND Tisk=0');
if (dm.tblPila.RecordCount=0) then
begin
Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE IDHlavicka=' + datModul.idHlavPila.ToString);
Helios.ExecSQL('DELETE FROM ' + tblRezPredpis + ' WHERE ID=' + datModul.idHlavPila.ToString);
end;
dm.PrecislujPoziceFronty (dm.tblPila, true);
frontaPila.ItemCount:= dm.tblPila.RecordCount;
datModul.idHlavPila:= 0;
frontaPila.Invalidate;
btnDelPila.Enabled:= (dm.tblPila.RecordCount>0);
btnDelPilaOne.Enabled:= (dm.tblPila.RecordCount>0);
if (dm.tblPila.RecordCount=0) then
begin
VymazUdajePilaNeboPlan (false);
Helios.ExecSQL('UPDATE ' + tblRezPredpisPily + ' SET CisloDavky=NULL WHERE LoginName=SUSER_SNAME() AND Aktivni=1');
end;
btnPilaUp.Enabled:= (dm.tblPila.RecordCount>0);
btnPilaDown.Enabled:= btnPilaUp.Enabled;
dm.NactiMaterialoveDavky(self);
end;
end
else
begin
if (dm.tblPlan.RecordCount>0) then
begin
i:= frontaPlan.ItemIndex + 1;
idMDPlanR:= dm.tblPila.FieldByName('colIDPlanR').AsInteger;
Helios.ExecSQL('UPDATE ' + tblMatDavkyR + ' SET NaPile=0 WHERE ID=' + idMDPlanR.ToString);
idMD:= dm.tblPila.FieldByName('colIDPlanH').AsInteger;
lSQL:= 'IF NOT EXISTS(SELECT 1 FROM ' + tblMatDavkyR + ' WHERE NaPile=1 AND IDHlava=' + idMD.ToString + ') '
+ 'UPDATE ' + tblMatDavkyH + ' SET NaPile=0 WHERE ID=' + idMD.ToString;
Helios.ExecSQL (lSQL);
idPol:= dm.tblPlan.FieldByName('colIDPolozka').AsInteger;
dm.tblPlan.Delete;
Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE ID=' + idPol.ToString);
if (dm.tblPlan.RecordCount=0) then
begin
Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE IDHlavicka=' + datModul.idHlavPila.ToString);
Helios.ExecSQL('DELETE FROM ' + tblRezPredpis + ' WHERE ID=' + datModul.idHlavPila.ToString);
end;
dm.PrecislujPoziceFronty (dm.tblPlan, true);
frontaPila.ItemCount:= dm.tblPlan.RecordCount;
datModul.idHlavPila:= 0;
frontaPlan.Invalidate;
btnDelPila.Enabled:= (dm.tblPlan.RecordCount>0);
btnDelPilaOne.Enabled:= (dm.tblPlan.RecordCount>0);
if (dm.tblPlan.RecordCount=0) then
VymazUdajePilaNeboPlan (true);
btnPlanUp.Enabled:= (dm.tblPlan.RecordCount>0);
btnPlanDown.Enabled:= btnPlanUp.Enabled;
end;
end;
dm.NactiFrontu (idPrac, self);
end;
procedure TformMain.btnDigitResetClick (Sender: TObject);
begin
timerPila:= 0;
end;
procedure TformMain.btnObrazekClick (Sender: TObject);
var f: TformObrazekKZ;
lSQL: string;
begin
if (dm.PocetOznacenychVeFronte=1) then
begin
f:= TformObrazekKZ.Create(nil);
try
lSQL:= 'SELECT v.ID FROM ' + tblPrVaz + ' vaz INNER JOIN ' + tblKZ + ' v ON (vaz.vyssi=v.ID) WHERE vaz.ID=' + dm.tblFronta.FieldByName('colIDPrKVazby').AsString;
f.idKZ:= helUtils.getHeliosIntVal(Helios, 0, lSQL);
f.Helios:= Helios;
f.ShowModal;
finally
f.Free;
end;
end;
end;
procedure TformMain.btnPila2DelClick (Sender: TObject);
begin
dm.tblPlan.Clear; // .EmptyDataSet;
frontaPlan.Invalidate;
dm.NactiFrontu (idPrac, self);
end;
procedure TformMain.btnPilaDownClick (Sender: TObject);
var oldPos: integer;
s: string;
i, i2, i3: Integer;
begin
// oldPos:= TRttiContext.Create.GetType(TControlList).GetField('FScrollPos').GetValue(Sender).AsInteger;
// TRttiContext.Create.GetType(TControlList).GetField('FScrollPos').SetValue(Sender, oldPos);
// SendMessage(frontaPila.Handle, WM_VSCROLL, SB_LINEDOWN, 0);
if (dm.tblPila.RecordCount>1) then
begin
i:= dm.tblPila.RecNo;
if (dm.tblPila.FieldByName('colPovoleno').AsBoolean) then
begin
dm.tblPila.RecNo:= frontaPila.ItemIndex + 1;
oldPos:= dm.tblPila.FieldByName('colPozice').AsInteger;
if (oldPos<10*dm.tblPila.RecordCount) then // mam za sebou neco
begin
dm.tblPila.Edit;
dm.tblPila.FieldByName('colPozice').AsInteger:= oldPos + 11;
dm.tblPila.FieldByName('colPoziceInt').AsInteger:= dm.tblPila.FieldByName('colPozice').AsInteger;
// prevPos:= dm.tblPila.FieldByName('colPozice').AsInteger;
dm.tblPila.Post;
// dm.tblPila.IndexName:= dm.tblPila.Indexes.Items[0].Name;
// dm.tblPila.Indexes.Items[0].Selected:= true;
dm.PrecislujPoziceFronty (dm.tblPila, true);
dm.tblPila.Refresh;
frontaPila.ItemCount:= dm.tblPila.RecordCount;
frontaPila.Update;
frontaPila.Invalidate;
end;
if (i<dm.tblPila.RecordCount) then
begin
dm.tblPila.RecNo:= i+1;
frontaPila.ItemIndex:= i;
end;
end;
end;
end;
procedure TformMain.btnPilaPgDownClick (Sender: TObject);
begin
SendMessage(frontaPila.Handle, WM_VSCROLL, SB_PAGEDOWN, 0);
end;
procedure TformMain.btnPilaPgUpClick (Sender: TObject);
begin
SendMessage(frontaPila.Handle, WM_VSCROLL, SB_PAGEUP, 0);
end;
procedure TformMain.btnPilaUpClick (Sender: TObject);
var oldPos: integer;
s: string;
i, i2, i3: Integer;
begin
// oldPos:= TRttiContext.Create.GetType(TControlList).GetField('FScrollPos').GetValue(Sender).AsInteger;
//// TRttiContext.Create.GetType(TControlList).GetField('FScrollPos').SetValue(Sender, oldPos);
// SendMessage(frontaPila.Handle, WM_VSCROLL, SB_LINEUP, 0);
if (dm.tblPila.RecordCount>1) then
begin
i:= dm.tblPila.RecNo;
if (dm.tblPila.FieldByName('colPovoleno').AsBoolean) then
begin
dm.tblPila.RecNo:= frontaPila.ItemIndex + 1;
oldPos:= dm.tblPila.FieldByName('colPozice').AsInteger;
if (oldPos>10) then // mam pred sebou neco
begin
dm.tblPila.Prior;
dm.tblPila.Edit;
dm.tblPila.FieldByName('colPozice').AsInteger:= oldPos + 1;
dm.tblPila.FieldByName('colPoziceInt').AsInteger:= dm.tblPila.FieldByName('colPozice').AsInteger;
// prevPos:= dm.tblPila.FieldByName('colPozice').AsInteger;
dm.tblPila.Post;
// dm.tblPila.IndexName:= dm.tblPila.Indexes.Items[0].Name;
// dm.tblPila.Indexes.Items[0].Selected:= true;
dm.PrecislujPoziceFronty (dm.tblPila);
dm.tblPila.Refresh;
frontaPila.ItemCount:= dm.tblPila.RecordCount;
frontaPila.Update;
frontaPila.Invalidate;
if (i>1) then
begin
dm.tblPila.RecNo:= i-1;
if (i-2>=0) then
frontaPila.ItemIndex:= i-2;
end;
end;
end;
end;
end;
procedure TformMain.btnPlanDownClick (Sender: TObject);
var oldPos: integer;
i: integer;
begin
// oldPos:= TRttiContext.Create.GetType(TControlList).GetField('FScrollPos').GetValue(Sender).AsInteger;
// TRttiContext.Create.GetType(TControlList).GetField('FScrollPos').SetValue(Sender, oldPos);
// SendMessage(frontaPlan.Handle, WM_VSCROLL, SB_LINEUP, 0);
if (dm.tblPlan.RecordCount>1) then
begin
i:= dm.tblPlan.RecNo;
dm.tblPlan.RecNo:= frontaPlan.ItemIndex + 1;
oldPos:= dm.tblPlan.FieldByName('colPozice').AsInteger;
if (oldPos<10*dm.tblPlan.RecordCount) then // mam za sebou neco
begin
dm.tblPlan.Edit;
dm.tblPlan.FieldByName('colPozice').AsInteger:= oldPos + 11;
// prevPos:= dm.tblPlan.FieldByName('colPozice').AsInteger;
dm.tblPlan.Post;
// dm.tblPlan.IndexName:= dm.tblPlan.Indexes.Items[0].Name;
// dm.tblPlan.Indexes.Items[0].Selected:= true;
dm.PrecislujPoziceFronty (dm.tblPlan, true);
dm.tblPlan.Refresh;
frontaPlan.ItemCount:= dm.tblPlan.RecordCount;
frontaPlan.Update;
frontaPlan.Invalidate;
end;
if (i<dm.tblPlan.RecordCount) then
begin
dm.tblPlan.RecNo:= i+1;
frontaPlan.ItemIndex:= i;
end;
end;
end;
procedure TformMain.btnPlanPgDownClick (Sender: TObject);
begin
SendMessage(frontaPlan.Handle, WM_VSCROLL, SB_PAGEDOWN, 0);
end;
procedure TformMain.btnPlanPgUpClick (Sender: TObject);
begin
SendMessage(frontaPlan.Handle, WM_VSCROLL, SB_PAGEUP, 0);
end;
procedure TformMain.btnPlanUpClick (Sender: TObject);
var oldPos: integer;
i: integer;
begin
// oldPos:= TRttiContext.Create.GetType(TControlList).GetField('FScrollPos').GetValue(Sender).AsInteger;
// TRttiContext.Create.GetType(TControlList).GetField('FScrollPos').SetValue(Sender, oldPos);
// SendMessage(frontaPlan.Handle, WM_VSCROLL, SB_LINEUP, 0);
if (dm.tblPlan.RecordCount>1) then
begin
i:= dm.tblPlan.RecNo;
dm.tblPlan.RecNo:= frontaPlan.ItemIndex + 1;
oldPos:= dm.tblPlan.FieldByName('colPozice').AsInteger;
if (oldPos>10) then // mam pred sebou neco
begin
dm.tblPlan.Prior;
dm.tblPlan.Edit;
dm.tblPlan.FieldByName('colPozice').AsInteger:= oldPos + 1;
// prevPos:= dm.tblPlan.FieldByName('colPozice').AsInteger;
dm.tblPlan.Post;
// dm.tblPlan.IndexName:= dm.tblPlan.Indexes.Items[0].Name;
// dm.tblPlan.Indexes.Items[0].Selected:= true;
dm.PrecislujPoziceFronty (dm.tblPlan);
dm.tblPlan.Refresh;
frontaPlan.ItemCount:= dm.tblPlan.RecordCount;
frontaPlan.Update;
frontaPlan.Invalidate;
if (i>1) then
begin
dm.tblPlan.RecNo:= i-1;
if (i-2>=0) then
frontaPlan.ItemIndex:= i-2;
end;
end;
end;
end;
procedure TformMain.btnPosliNaPiluClick (Sender: TObject);
var lSQL, czbo, errMsg: string;
i: integer;
m1, m2: Extended;
begin
if (dm.tblPlan.RecordCount=0) then
Exit;
if (dm.tblPila.RecordCount>0) then
Helios.Error(#1'Na pile jsou ještě položky'#1)
else
begin
for i:=1 to dm.tblPlan.RecordCount do
begin
dm.tblPila.Append;
dm.CopyRecord(dm.tblPlan, dm.tblPila, i);
dm.tblPila.FieldByName('colTisk').AsBoolean:= false;
dm.tblPila.FieldByName('colPovoleno').AsBoolean:= true;
dm.tblPila.Post;
end;
czbo:= '';
if (dm.tblPila.RecordCount>0) then
begin
dm.tblPila.First;
czbo:= dm.tblPila.FieldByName('colCisloZboziMat').AsString;
datModul.idKmenMaterialPila:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblKZ + ' WHERE CisloZbozi=N' + czbo.QuotedString);
datModul.idKmenMaterialPlan:= 0;
end;
datModul.idHlavPila:= datModul.idHlavPlan;
Helios.ExecSQL('UPDATE ' + tblRezPredpis + ' SET IdPlan=NULL WHERE IdPlan=' + datModul.idHlavPlan.ToString);
Helios.ExecSQL('UPDATE ' + tblRezPredpis + ' SET JePlan=0 WHERE ID=' + datModul.idHlavPlan.ToString);
datModul.idHlavPlan:= 0;
dm.tblPlan.Clear; // .EmptyDataSet;
frontaPlan.ItemCount:= 0;
frontaPlan.Invalidate;
lblPila1Nazev1.Caption:= lblPlanNazev1.Caption;
lblPila1RegCis.Caption:= lblPlanRegCis.Caption;
lblPila1Skladem.Caption:= lblPlanSkladem.Caption;
lblPila1Sarze.Caption:= lblPlanSarze.Caption;
lblPila1SarzeSkladem.Caption:= lblPlanSarzeSkladem.Caption;
datModul.pilaSZ:= datModul.planSZ;
datModul.pilaRC:= datModul.planRC;
datModul.pilaSarze:= datModul.planSarze;
edtFiltrPlan.Text:= '';
VymazUdajePilaNeboPlan (true);
lSQL:= 'SELECT s.MnozBezVyd FROM ' + tblSS + ' s INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) WHERE k.CisloZbozi=N' + czbo.QuotedString + ' AND s.IDSklad=N' + skladMat.QuotedString;
m1:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
lblPila1Skladem.Caption:= m1.ToString;
kmenStavOK:= (m1>0);
if (kmenStavOK) then
lblPila1Skladem.Font.Color:= clWindowText
else
lblPila1Skladem.Font.Color:= clRed;
if (lblPila1Sarze.Caption<>'') then
begin
lSQL:= 'SELECT vcs.MnozBezVyd FROM ' + tblVyrCS + ' vcs INNER JOIN ' + tblSS + ' s ON (s.ID=vcs.IDStavSkladu) INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) WHERE k.CisloZbozi=N';
lSQL:= lSQL + czbo.QuotedString + ' AND s.IDSklad=N' + skladMat.QuotedString + ' AND vcs.Nazev1=N' + lblPila1Sarze.Caption.QuotedString;
m2:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
lblPila1SarzeSkladem.Caption:= m2.ToString;
sarzeStavOK:= (m2>0);
if (sarzeStavOK) then
lblPila1SarzeSkladem.Font.Color:= clWindowText
else
lblPila1SarzeSkladem.Font.Color:= clRed;
end;
{
materialOK:= true;
if (kmenStavOK=false) or (sarzeStavOK=false) then
begin
if not(kmenStavOK) then
errMsg:= 'POZOR, naskenovaná KARTA není na skladě';
if (lblPila1Sarze.Caption<>'') and not(sarzeStavOK) then
errMsg:= 'POZOR, naskenovaná ŠARŽE není na skladě !';
Helios.Error(#1 + errMsg + #1);
materialOK:= false;
edtFiltrPila.Text:= '';
VymazUdajePilaNeboPlan;
end;
}
pgCtrl.ActivePage:= shPila;
frontaPila.ItemCount:= dm.tblPila.RecordCount;
frontaPila.Invalidate;
timerPila:= 0;
digitTimer.Enabled:= true;
end;
end;
procedure TformMain.btnSmazFiltryClick (Sender: TObject);
begin
dm.tblFronta.Filtered:= false;
edtFiltrNadoba.Text:= '';
edtFiltrMaterial.Text:= '';
edtFiltrNazev.Text:= '';
edtFiltrDN.Text:= '';
edtFiltrPrumer.Text:= '';
edtFiltrProfil.Text:= '';
edtFiltrTloustka.Text:= '';
edtFiltrJakost.Text:= '';
lblFiltrDN.Visible:= false;
lblFiltrPrumer.Visible:= false;
lblFiltrTloustka.Visible:= false;
lblFiltrJakostMat.Visible:= false;
lblFiltrProfil.Visible:= false;
dm.tblFronta.IndexFieldNames:= 'colIDPrKVazby';
lblRecCount.Caption:= 'Počet: ' + dm.tblFronta.RecordCount.ToString;
ctrlFronta.ItemCount:= dm.tblFronta.RecordCount;
ctrlFronta.Invalidate;
lblRecSelected.Caption:= 'Výběr: 0 / celkem 0 m';
dm.FrontaOdznacitVse;
btnFiltrMat.Enabled:= (dm.PocetOznacenychVeFronte=1);
if (frontaPanel.CanFocus) then
frontaPanel.SetFocus;
end;
procedure TformMain.btnSmazFiltryMDClick (Sender: TObject);
begin
edtFiltrMDCislo.Text:= '';
edtFiltrMDDM.Text:= '';
edtFiltrMDRegCisMat.Text:= '';
edtFiltrMDSila.Text:= '';
edtFiltrMDPrumer.Text:= '';
edtFiltrMDRozmer.Text:= '';
edtFiltrMDNormaMAT.Text:= '';
dtFiltrMDDatum.Date:= 0;
dtFiltrMDDatum.Format:= ' ';
edtFiltrMDCisloExit (Sender);
end;
procedure TformMain.btnSrotClick (Sender: TObject);
var lSQL: string;
mnozSrot: Extended;
fC: TformCalc;
begin
mnozSrot:= 0;
fC:= TformCalc.Create(nil);
try
fC.edtNum.Text:= '0';
fC.Hide;
fC.pnlAkce:= 2;
fC.ShowModal;
if (fc.mrVal<10) then
if not(TryStrToFloat(fC.retVal, mnozSrot)) then
mnozSrot:= 0;
finally
fC.Free;
end;
if (mnozSrot>0) then
begin
lSQL:= 'DROP TABLE IF EXISTS #TabEvidPracePilaZbytek' + CRLF;
lSQL:= lSQL + 'CREATE TABLE #TabEvidPracePilaZbytek (IDKmen INT, Sarze NVARCHAR(100), Mnozstvi NUMERIC(19,6) DEFAULT 0.0 NOT NULL)' + CRLF;
lSQL:= lSQL + 'INSERT #TabEvidPracePilaZbytek (IDKmen, Sarze, Mnozstvi) SELECT ' + datModul.pilaKZ.ToString + ', N' + datModul.pilaSarze.QuotedString + ', ' + mnozSkl.ToString.Replace(',','.') + CRLF;
lSQL:= lSQL + 'IF OBJECT_ID(N''dbo.ep_HDC_EvidPracePilaSrot'', N''P'') IS NOT NULL EXEC dbo.ep_HDC_EvidPracePilaSrot' + CRLF;
try
Helios.ExecSQL(lSQL);
except on E:Exception do
Helios.Error(#1'Chyba při zápisu šrotu'#1 + CRLF + E.Message);
end;
end;
end;
procedure TformMain.NactiMnozstviSkladu (pila: Boolean = True; idKZ: Integer = 0; sarze: string = '');
var lSQL: string;
m1, m2: Extended;
begin
m1:= 0;
m2:= 0;
lSQL:= 'SELECT s.Mnozstvi FROM ' + tblSS + ' s INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) WHERE k.ID=' + idKZ.ToString + ' AND s.IDSklad=N' + skladMat.QuotedString;
m1:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
if (pila) then
begin
lblPila1Skladem.Caption:= m1.ToString;
kmenStavOK:= (m1>0);
end
else
lblPlanSkladem.Caption:= m1.ToString;
if (sarze<>'') then
begin
lSQL:= 'SELECT vcs.Mnozstvi FROM ' + tblVyrCS + ' vcs INNER JOIN ' + tblSS + ' s ON (s.ID=vcs.IDStavSkladu) WHERE s.IDKmenZbozi=' + idKZ.ToString + ' AND s.IDSklad=N';
lSQL:= lSQL + skladMat.QuotedString + ' AND vcs.Nazev1=N' + lblPila1Sarze.Caption.QuotedString;
m2:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
if (pila) then
begin
lblPila1SarzeSkladem.Caption:= m2.ToString;
sarzeStavOK:= (m2>0);
end
else
lblPlanSarzeSkladem.Caption:= m2.ToString;
end;
end;
function TformMain.EvidencePrace (idRezRozpisR: integer): integer; // vystup je TabPrikazMzdyAZmetky.ID nebo 0
var lSQL, errMsg: string;
begin
result:= 0;
errMsg:= '';
try
{
lSQL:= 'SET NOCOUNT ON' + CRLF + 'DECLARE @errMsg NVARCHAR(500), @tranPred INT' + CRLF + 'DECLARE @errTab TABLE (LogText NVARCHAR(500) )' + CRLF + 'DROP TABLE IF EXISTS #TabEvidPilaErrors';
lSQL:= lSQL + CRLF + 'CREATE TABLE #TabEvidPilaErrors (ID INT IDENTITY(1,1) NOT NULL, LogText NVARCHAR(500) )' + CRLF + 'DROP TABLE IF EXISTS #TabEvidPracePila' + CRLF;
lSQL:= lSQL + 'CREATE TABLE #TabEvidPracePila (ID INT IDENTITY(1,1) NOT NULL, IDPolozka INT NOT NULL, Sarze NVARCHAR(100), CasS INT, PocetKs NUMERIC(19,6) DEFAULT 1.0 NOT NULL)' + CRLF;
lSQL:= lSQL + 'INSERT #TabEvidPracePila (IDPolozka, Sarze, CasS) SELECT ' + i2.ToString + ', N' + lblPila1Sarze.Caption.QuotedString + ', ' + timerPila.ToString + CRLF;
lSQL:= lSQL + 'UPDATE ' + tblRezPredpisR + ' SET Tisk=1, DatTisku=GETDATE() WHERE ID=' + i2.ToString + CRLF;
lSQL:= lSQL + 'SET @tranPred=@@TRANCOUNT' + CRLF + 'BEGIN TRY' + CRLF + ' IF (@tranPred=0) BEGIN TRAN' + CRLF;
lSQL:= lSQL + ' IF OBJECT_ID(N''dbo.ep_HDC_EvidPracePila'', N''P'') IS NOT NULL EXEC dbo.ep_HDC_EvidPracePila' + CRLF;
lSQL:= lSQL + ' IF (@tranPred=0) AND (@@TRANCOUNT>0) COMMIT TRAN' + CRLF + 'END TRY' + CRLF;
lSQL:= lSQL + 'BEGIN CATCH' + CRLF + ' SET @errMsg = ERROR_MESSAGE()' + CRLF + ' INSERT @errTab (LogText) SELECT LogText FROM #TabEvidPilaErrors' + CRLF;
lSQL:= lSQL + ' IF (@tranPred=0) AND (@@TRANCOUNT>0) ROLLBACK TRAN' + CRLF + ' INSERT dbo._HDC_Log (Typ, LogText, iTemp) SELECT 10, @errMsg, ' + i2.ToString + CRLF;
lSQL:= lSQL + ' INSERT dbo._HDC_Log (Typ, LogText, iTemp) SELECT 10, LogText, ' + i2.ToString + ' FROM @errTab' + CRLF + 'END CATCH';
}
lSQL:= 'SET NOCOUNT ON' + CRLF + 'DECLARE @idMzda INT=0, @errM NVARCHAR(255)=N''''' + CRLF + 'DROP TABLE IF EXISTS #TabEvidPracePila' + CRLF;
lSQL:= lSQL + 'CREATE TABLE #TabEvidPracePila (ID INT IDENTITY(1,1) NOT NULL, OsCislo INT, IDPolozka INT NOT NULL, Sarze NVARCHAR(100), CasS INT, PocetKs NUMERIC(19,6) DEFAULT 1.0 NOT NULL)' + CRLF;
lSQL:= lSQL + 'INSERT #TabEvidPracePila (OsCislo, IDPolozka, Sarze, CasS) SELECT ' + cisZam.ToString + ', ' + idRezRozpisR.ToString + ', N' + lblPila1Sarze.Caption.QuotedString;
lSQL:= lSQL + ', ' + timerPila.ToString + CRLF;
lSQL:= lSQL + 'IF OBJECT_ID(N''dbo.ep_HDC_EvidPracePila'', N''P'') IS NOT NULL EXEC @idMzda=dbo.ep_HDC_EvidPracePila @errMsg=@errM' + CRLF;
lSQL:= lSQL + 'SELECT @idMzda AS IDMzda, @errM AS ErrMsg';
with Helios.OpenSQL(lSQL) do
begin
result:= StrToInt(VarToStr(FieldByNameValues('IDMzda')));
errMsg:= VarToStr(FieldByNameValues('ErrMsg'));
end;
if (errMsg<>'') then
Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET ErrMsg=N' + errMsg.QuotedString + ' WHERE ID=' + idRezRozpisR.ToString);
// Helios.ExecSQL(lSQL);
// result:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT TOP(1) ISNULL(IDMzdy,0) FROM ' + tblRezPredpisR + ' WHERE ID=' + idRezRozpisR.ToString);
if (result>0) then
begin
if not(helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM dbo._HDC_Log WHERE DATEDIFF(s, DatPorizeni, GETDATE())<10 AND Typ=10 AND iTemp=' + idRezRozpisR.ToString)) or (1=1) then
begin
dm.tblPila.Edit;
dm.tblPila.FieldByName('colPovoleno').AsBoolean:= false;
dm.tblPila.FieldByName('colIDMzdy').AsInteger:= result;
dm.tblPila.Post;
btnTiskStitku.Enabled:= false;
if (dm.KolikZbyvaKTisku=0) then
begin
Helios.ExecSQL('UPDATE ' + tblRezPredpis + ' SET DatSplneno=GETDATE(), JeNovaVetaEditor=0 WHERE ID=' + datModul.idHlavPila.ToString);
datModul.idHlavPila:= 0;
datModul.idMatDavka:= 0;
dm.tblPila.Clear; // .EmptyDataSet;
frontaPila.ItemCount:= 0;
frontaPila.Invalidate;
digitTimer.Enabled:= false;
VymazUdajePilaNeboPlan;
btnPilaUp.Enabled:= (dm.tblPila.RecordCount>0);
btnPilaDown.Enabled:= btnPilaUp.Enabled;
btnDelPila.Enabled:= btnPilaUp.Enabled;
btnDelPilaOne.Enabled:= btnPilaUp.Enabled;
edtFiltrPila.Text:= '';
end;
end;
end;
frontaPila.Invalidate;
except on E:Exception do
begin
errMsg:= E.Message;
end;
end;
end;
procedure TformMain.btnTiskStitkuClick (Sender: TObject);
var i, ii, i2, idPredpisH, idPrPost, idM, idKZx, idMD, idMDP, pocMezdPrev, doklOper, idEvP: integer;
lSQL, tmpString, oper, operPlan, altOper, tiskarnaPila: string;
i3, dokl, idKmenTisk, idVPr: integer;
ks, delka: Extended;
tiskOK: boolean;
defPrintName: string;
hPrinter: THandle;
vPO: TPrinterOptions;
JobInfo: array[0..255] of TJobInfo1;
JobsReturned, ix: DWORD;
DocInfo: TDocInfo1;
begin
tiskOK:= false;
if (datModul.idTiskForm>0) then
begin
if (datModul.tiskarnaNazev= '') then // ZDesigner ZD421 PILA
begin
lSQL:= 'SELECT TOP(1) TiskFronta FROM ' + tblTiskDef + ' WHERE FormDefID=' + datModul.idTiskForm.ToString;
lSQL:= lSQL + ' AND (LoginName IS NULL OR LoginName=SUSER_SNAME()) ORDER BY ISNULL(LoginName, N'''') DESC';
datModul.tiskarnaNazev:= helUtils.getHeliosStrVal(Helios, '', lSQL);
end;
if not(helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 AS A FROM ' + tblTiskDef + ' WHERE TiskDoSouboru=1 AND FormDefID=' + datModul.idTiskForm.ToString)) then
if (helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 AS A FROM ' + tblTiskDef + ' WHERE FormDefID=' + datModul.idTiskForm.ToString + ' AND Implicitni=0'))
and (datModul.tiskarnaNazev<>'') then
begin
if not(dm.IsPrinterActiveFrmId(datModul.tiskarnaNazev, datModul.idTiskForm)) then
begin
Helios.Error('Tiskárna nenalezena nebo "' + datModul.tiskarnaNazev + '" není aktivní');
// Exit;
end;
end;
end;
// zkusi zrusit probihajici tiskove joby
defPrintName:= Printer.Printers[Printer.PrinterIndex];
if (datModul.tiskarnaNazev<>'') then
defPrintName:= datModul.tiskarnaNazev;
if (defPrintName<>'') then
begin
vPO.dwFlags:= PRINTER_OPTION_NO_CACHE;
vPO.cbSize:= SizeOf(vPO);
if OpenPrinter2(PChar(defPrintName), @hPrinter, nil, @vPO) then
try
// Získání seznamu úloh
EnumJobs(hPrinter, 0, 255, 1, @JobInfo, SizeOf(JobInfo), JobsReturned, ix);
if (JobsReturned>0) then
for ix:=0 to JobsReturned - 1 do
begin
// Zrušení jednotlivých úloh
SetJob(hPrinter, JobInfo[ix].JobId, 0, nil, JOB_CONTROL_CANCEL);
end;
finally
ClosePrinter(hPrinter);
end;
end;
dm.tblPila.RecNo:= frontaPila.ItemIndex + 1; // index TControlListu je zero based
// dotaz na pocet stitku pri ks>1
idMDP:= dm.tblPila.FieldByName('colIDPlanR').AsInteger;
idMD:= dm.tblPila.FieldByName('colIDPlanH').AsInteger;
operPlan:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Operace FROM ' + tblMatDavkyR + ' WHERE ID=' + idMDP.ToString);
i:= dm.tblPila.FieldByName('colIDPrKVazby').AsInteger;
idVPr:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDPrikaz FROM ' + tblPrKVaz + ' WHERE IDOdchylkyDo IS NULL AND ID=' + i.ToString);
dokl:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT Doklad FROM ' + tblPrKVaz + ' WHERE IDOdchylkyDo IS NULL AND ID=' + i.ToString);
ii:= dm.tblPila.FieldByName('colIDPrKVazbyAlter').AsInteger;
if (ii>0) then
begin
idKZx:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT nizsi FROM ' + tblPrKVaz + ' WHERE ID=' + ii.ToString);
if (idKZx<>datModul.idKmenMaterialPila) then
ii:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT ID FROM ' + tblPrKVaz + ' WHERE nizsi=' + datModul.idKmenMaterialPila.ToString + ' AND IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString);
end;
idKZx:= 0;
if (i>0) and (ii=0) then
idKZx:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT nizsi FROM ' + tblPrKVaz + ' WHERE ID=' + i.ToString + ' AND IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString);
if (idKZx>0) then
if (idKZx<>datModul.idKmenMaterialPila) then
ii:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT ID FROM ' + tblPrKVaz + ' WHERE nizsi=' + datModul.idKmenMaterialPila.ToString + ' AND IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString);
if (ii>0) and (i<>ii) then
begin
Helios.ExecSQL ('UPDATE ' + tblPrKVaz + ' SET Operace=N' + operPlan.QuotedString + ' WHERE ID=' + ii.ToString + ' AND Operace IS NULL');
i:= ii;
dm.tblPila.Edit;
dm.tblPila.FieldByName('colIDPrKVazby').AsInteger:= i;
dm.tblPila.Post;
end;
oper:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Operace FROM ' + tblPrKVaz + ' WHERE ID=' + i.ToString);
if (oper='') then
begin
lSQL:= 'SELECT COUNT(ID) FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString + ' AND pracoviste=' + datModul.idPracovistePila.ToString;
if (helUtils.getHeliosIntVal(Helios, 0, lSQL)=1) then
oper:= helUtils.getHeliosStrVal(Helios, '', lSQL.Replace('COUNT(ID)', 'operace'));
if (oper<>'') then
Helios.ExecSQL('UPDATE ' + tblPrKVaz + ' SET Operace=N' + oper.QuotedString + ' WHERE ID=' + i.ToString + ' AND ISNULL(Operace,N'''')<>N' + oper.QuotedString);
end;
delka:= dm.tblPila.FieldByName('colDelka').AsExtended;
ks:= dm.tblPila.FieldByName('colKs').AsExtended;
idVPr:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDPrikaz FROM ' + tblPrKVaz + ' WHERE IDOdchylkyDo IS NULL AND ID=' + i.ToString);
dokl:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT Doklad FROM ' + tblPrKVaz + ' WHERE IDOdchylkyDo IS NULL AND ID=' + i.ToString);
idKmenTisk:= datModul.idMatDavkaKmen;
if (datModul.idMatDavkaKmen<>datModul.idKmenMaterialPila) then
begin
lSQL:= 'SELECT ID FROM ' + tblPrKVaz + ' WHERE IDOdchylkyDo IS NULL AND nizsi=' + datModul.idKmenMaterialPila.ToString + ' AND IDPrikaz=' + idVPr.ToString;
i3:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
if (i3=0) then
begin
lSQL:= 'DECLARE @i INT' + CRLF + 'EXEC @i=dbo.hp_NewPozadavek_TabPrKVazby @IDPrikaz=' + idVpr.ToString + ', @IDKmenZbozi=' + datModul.idKmenMaterialPila.ToString;
lSQL:= lSQL + ', @Mnozstvi=' + (helUtils.RoundToEX(delka, -4)/1000).ToString.Replace(',', '.');
lSQL:= lSQL + ', @Mnoz_zad=' + (helUtils.RoundToEX(delka * ks, -4)/1000).ToString.Replace(',', '.') + ', @Operace=N' + oper.QuotedString;
lSQL:= lSQL + ', @Alt_K_Dokladu=' + dokl.ToString + CRLF + 'SELECT @i';
i3:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
end;
if (i3>0) then
begin
i:= i3;
dm.tblPila.Edit;
dm.tblPila.FieldByName('colIDPrKVazby').AsInteger:= i;
dm.tblPila.Post;
idKmenTisk:= datModul.idKmenMaterialPila;
end;
end;
i2:= dm.tblPila.FieldByName('colIDPolozka').AsInteger;
idPredpisH:= dm.tblPila.FieldByName('colIDHlavicka').AsInteger;
lSQL:= 'SELECT o.Doklad FROM ' + tblPrKVaz + ' v LEFT JOIN ' + tblPrPost + ' o ON (v.IDPrikaz=o.IDPrikaz AND o.IDOdchylkyDo IS NULL AND v.Operace=o.Operace) WHERE v.ID=' + i.ToString;
doklOper:= helUtils.getHeliosIntVal(Helios, 0, lSQL);
altOper:= helUtils.getHeliosStrVal(Helios, '', lSQL.Replace('o.Doklad ', 'o.Alt '));
lSQL:= 'INSERT ' + tblRezPredpisEvidPrace + ' (IDRezaciPredpisR, IDPlanMD, OsCislo, IDKmenZboziMat, Sarze, CasS) SELECT ' + i2.ToString + ', ' + idMD.ToString;
lSQL:= lSQL + ', ' + cisZam.ToString + ', ' + idKmenTisk.ToString + ', N' + lblPila1Sarze.Caption.QuotedString + ', ' + timerPila.ToString + CRLF + 'SELECT SCOPE_IDENTITY()';
idEvP:= helUtils.getHeliosIntVal(Helios, 0, lSQL);
if (dm.PocetPovolenychPredeMnou(dm.tblPila)=0) then
begin
lSQL:= 'UPDATE ' + tblRezPredpisR + ' SET Sarze=N' + lblPila1Sarze.Caption.QuotedString + ', IDKmenMaterial=' + idKmenTisk.ToString;
lSQL:= lSQL + ', IDPrKVazby=' + i.ToString + ', Operace=N' + oper.QuotedString + ', DokladOper=' + doklOper.ToString + ', AltOper=N' + altOper.QuotedString;
lSQL:= lSQL + ' WHERE ID=' + i2.ToString;
Helios.ExecSQL(lSQL);
Helios.ExecSQL ('UPDATE ' + tblPrKVaz + ' SET Prednastaveno=0 WHERE IDOdchylkyDo IS NULL AND IDPrikaz=' + idVPr.ToString);
Helios.ExecSQL ('UPDATE ' + tblPrKVaz + ' SET Prednastaveno=1 WHERE IDOdchylkyDo IS NULL AND ID=' + i.ToString);
// tisk
if (helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM ' + tblPlgInfo + ' WHERE NazevSys=N''PluginRemotePrint''')) then
begin
try
tiskarnaPila:= datModul.tiskarnaNazev;
if (datModul.tiskarnaNazev='') then
begin
tiskarnaPila:= helUtils.getHeliosStrVal (Helios, '', 'SELECT TOP(1) Nazev FROM dbo.GTabRPSeznamTiskaren WHERE LOWER(Nazev) LIKE N''%pila%'' ORDER BY Nazev');
datModul.tiskarnaNazev:= tiskarnaPila;
end;
if (tiskarnaPila<>'') then
begin
lSQL:= 'DECLARE @u NVARCHAR(80)=SUSER_SNAME(); EXEC dbo.GEP_RP_NewPozadavekNaTisk @Uzivatel=@u, @Popis=N''Tisk štítku pila'', @BrowseID=11050, @TiskID=' + datModul.idTiskForm.ToString
+ ', @Filtr=N''TabPrKVazby.ID=' + i.ToString + ''', @Tiskarna=N' + tiskarnaPila.QuotedString + ', @PocetKopii=1';
{
lSQL:= 'INSERT dbo.GTabRPSeznamPozadavku (Typ, Uzivatel, Popis, BrowseID, Filtr, Tiskarna)'
+' SELECT 0, SUSER_SNAME(), N''Tisk štítku pila'', ' + datModul.idTiskForm.ToString + ', N''TabPrKVazby.ID=' + i.ToString + ''', N' + tiskarnaPila.QuotedString;
}
Helios.ExecSQL (lSQL);
end;
finally
end;
end;
if not(datModul.tiskJenPlgRP) then
begin
if (Helios.PrintForm3 (bidPrKVaz, datModul.idTiskForm, 'TabPrKVazby.ID=' + i.ToString)) then
begin
lSQL:= 'INSERT ' + tblRezPredpisTisky + ' (IDRezaciPredpisR, IDKmenMaterial, Sarze, CisloZboziMat, DeviceID, IDPila, IDPrikaz, IDPrKVazby, OperacePrP, IDPredpisdavkyPlan) SELECT ' + i2.ToString;
lSQL:= lSQL + ', ' + idKmenTisk.ToString + ', N' + IfThen(lblPila1Sarze.Caption='', 'ULL', lblPila1Sarze.Caption.QuotedString) + ', N' + (datModul.pilaSZ + datModul.pilaRC).QuotedString;
lSQL:= lSQL + ', N' + datModul.devID.QuotedString + ', ' + datModul.idPila.ToString + ', ' + idVPr.ToString + ', ' + i.ToString + ', N' + oper.QuotedString + ', ' + idMD.ToString;
Helios.ExecSQL(lSQL);
tiskOK:= true;
Helios.ExecSQL('UPDATE ' + tblRezPredpisPily + ' SET PosledniTisk=GETDATE(), PocetTisku=PocetTisku+1 WHERE Aktivni=1 AND LoginName=SUSER_SNAME()');
Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET Tisk=1, DatTisku=GETDATE() WHERE ID=' + i2.ToString);
dm.tblPila.Edit;
dm.tblPila.FieldByName('colTisk').AsBoolean:= true;
dm.tblPila.Post;
end;
end
else
begin
tiskOK:= true;
Helios.ExecSQL('UPDATE ' + tblRezPredpisPily + ' SET PosledniTisk=GETDATE(), PocetTisku=PocetTisku+1 WHERE Aktivni=1 AND LoginName=SUSER_SNAME()');
Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET Tisk=1, DatTisku=GETDATE() WHERE ID=' + i2.ToString);
dm.tblPila.Edit;
dm.tblPila.FieldByName('colTisk').AsBoolean:= true;
dm.tblPila.Post;
end;
// evidovat praci ? tj. IDMzdy je null/nulove
// je uz radek v evidenci operaci ?
idM:= 0;
if (i2>0) then
idM:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT ISNULL(IdMzdy,0) FROM ' + tblRezPredpisR + ' WHERE ID=' + i2.ToString);
if (idM=0) and (dm.VsePredeMnouMaMzdu (dm.tblPila)) then
begin
try
helUtils.waitStart(nil, 'Generuju výdejku materiálu...');
idM:= EvidencePrace (i2);
helUtils.waitEnd;
finally
end;
if (idM>0) then
begin
Helios.ExecSQL('UPDATE ' + tblRezPredpisEvidPrace + ' SET IDMzdy=' + idM.ToString + ' WHERE ID=' + idEvP.ToString);
Helios.ExecSQL('UPDATE ' + tblMatDavkyR + ' SET Splneno=1, NaPile=0 WHERE ID=' + idMDP.ToString);
Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET IdMzdy=' + idM.ToString + ', DatSplneno=GETDATE() WHERE ID=' + i2.ToString);
dm.tblPila.Edit;
dm.tblPila.FieldByName('colPovoleno').AsBoolean:= false;
dm.tblPila.FieldByName('colIDMzdy').AsInteger:= idM;
dm.tblPila.Post;
btnPilaDownClick (nil);
end;
timerPila:= 0;
end;
// pokud je vse splneno, uzavri Materialovou davku a Rezaci predpis
if (dm.PocetPovolenych (dm.tblPila)=0) then
begin
lSQL:= 'IF NOT EXISTS(SELECT 1 FROM ' + tblRezPredpisR + ' WHERE IDHlavicka=' + idPredpisH.ToString + ' AND (IDMzdy IS NULL OR DatTisku IS NULL))' + CRLF;
lSQL:= lSQL + ' UPDATE ' + tblRezPredpis + ' SET DatSplneno=GETDATE() WHERE ID=' + idPredpisH.ToString;
Helios.ExecSQL(lSQL);
lSQL:= 'IF NOT EXISTS(SELECT 1 FROM ' + tblMatDavkyR + ' WHERE IDHlava=' + idMD.ToString + ' AND Splneno=0)' + CRLF;
lSQL:= lSQL + ' UPDATE ' + tblMatDavkyH + ' SET Splneno=1, NaPile=0 WHERE ID=' + idMD.ToString;
Helios.ExecSQL(lSQL);
Helios.ExecSQL('UPDATE ' + tblRezPredpisPily + ' SET CisloDavky=NULL WHERE LoginName=SUSER_SNAME() AND Aktivni=1');
idMD:= 0;
datModul.idMatDavka:= 0;
datModul.idMatDavkaKmen:= 0;
dm.tblPila.Clear;
btnTiskStitku.Enabled:= false;
btnTiskBezEvidence.Enabled:= false;
VymazUdajePilaNeboPlan (false);
digitTimer.Enabled:= false;
lblTimerPila.Caption:= '00:00';
end;
end
else
Helios.Error (#1'Tisk lze provádět pouze z PRVNÍ povolené položky'#1);
AktualizujFrontuPila;
end;
procedure TformMain.btnZmenaSarzeClick (Sender: TObject);
begin
lblJsemAlter.Visible:= false;
edtFiltrPila.Text:= '';
btnZmenaSarze.Visible:= false;
if (edtFiltrPila.CanFocus) then
edtFiltrPila.SetFocus;
end;
procedure TformMain.edtFiltrDNEnter (Sender: TObject);
var f: TformCalc;
d: integer;
begin
edtFiltrDN.Text:= '';
{
f:= TformCalc.Create(nil);
try
f.mrVal:= 0;
f.retVal:= '';
f.edtNum.Text:= '';
f.pnlAkce:= 5;
f.Hide;
f.ShowModal;
if (f.mrVal<10) then
begin
if (f.retVal<>'') then
edtFiltrDN.Text:= f.retVal;
if (f.retVal='') or (f.retVal='0') then
edtFiltrDN.Text:= '';
end;
edtFiltrMaterialExit (Sender);
finally
f.Free;
end;
if (frontaPlan.CanFocus) then
frontaPlan.SetFocus;
}
end;
procedure TformMain.edtFiltrDNExit (Sender: TObject);
var s: string;
begin
edtFiltrDN.Text:= edtFiltrDN.Text.Trim.ToUpper;
s:= edtFiltrDN.Text;
if (s<>'') and not(s.StartsWith('DN', true)) then
edtFiltrDN.Text:= 'DN' + edtFiltrDN.Text;
lblFiltrDN.Visible:= (edtFiltrDN.Text<>'');
edtFiltrMaterialExit (Sender);
end;
procedure TformMain.edtFiltrDNKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key=VK_RETURN) or (Key=VK_ESCAPE) then
edtFiltrDNExit (Sender);
end;
procedure TformMain.edtFiltrJakostEnter (Sender: TObject);
var f: TformKeyb;
begin
edtFiltrJakost.Text:= '';
if (helUtils.IsAdmin) and (1=0) then
ShowTabTip
else
begin
if not(helUtils.IsPhysicalKeyboardConnected) then
begin
f:= TformKeyb.Create(nil);
try
f.ShowModal;
edtFiltrJakost.Text:= f.text.ToUpper;
if (frontaPlan.CanFocus) then
frontaPlan.SetFocus;
finally
f.Free;
end;
end;
end;
end;
procedure TformMain.edtFiltrJakostExit (Sender: TObject);
begin
edtFiltrJakost.Text:= edtFiltrJakost.Text.Trim.ToUpper;
lblFiltrJakostMat.Visible:= (edtFiltrJakost.Text<>'');
if (frontaPanel.CanFocus) then
frontaPanel.SetFocus;
CloseTabTip;
edtFiltrMaterialExit (Sender);
end;
procedure TformMain.edtFiltrJakostKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key=VK_RETURN) then
begin
Key:= 0;
edtFiltrJakostExit(Sender);
end;
end;
procedure TformMain.edtFiltrMaterialEnter (Sender: TObject);
var f: TformCalc;
f2: TformKeyb;
d: integer;
begin
edtFiltrMaterial.Text:= '';
{
f:= TformCalc.Create(nil);
try
f.mrVal:= 0;
f.retVal:= '';
f.edtNum.Text:= '';
f.pnlAkce:= 4;
f.Hide;
f.ShowModal;
if (f.mrVal<10) then
begin
if (f.retVal<>'') then
edtFiltrMaterial.Text:= f.retVal;
if (f.retVal='') or (f.retVal='0') then
edtFiltrMaterial.Text:= '';
end;
finally
f.Free;
end;
}
if (helUtils.IsAdmin) and (1=0) then
ShowTabTip
else
begin
if not(helUtils.IsPhysicalKeyboardConnected) then
begin
f2:= TformKeyb.Create(nil);
try
f2.ShowModal;
edtFiltrMaterial.Text:= f2.text.ToUpper;
finally
f2.Free;
end;
end;
end;
{
if (frontaPanel.CanFocus) then
frontaPanel.SetFocus;
}
end;
procedure TformMain.edtFiltrMaterialExit (Sender: TObject);
var filtrNew, fMaterial, fNadoba, fNazev, fPrumer, fDN, fJakost, fProfil, fTloustka, fRozmer, fNormaMat: string;
d: integer;
sz, rc, kodMat: string;
begin
if (frontaPanel.CanFocus) then
frontaPanel.SetFocus;
CloseTabTip;
edtFiltrMaterial.Text:= edtFiltrMaterial.Text.Trim;
edtFiltrNadoba.Text:= edtFiltrNadoba.Text.Trim;
edtFiltrNazev.Text:= edtFiltrNazev.Text.Trim;
edtFiltrDN.Text:= edtFiltrDN.Text.Trim;
edtFiltrPrumer.Text:= edtFiltrPrumer.Text.Trim;
edtFiltrProfil.Text:= edtFiltrProfil.Text.Trim;
edtFiltrTloustka.Text:= edtFiltrTloustka.Text.Trim;
edtFiltrJakost.Text:= edtFiltrJakost.Text.Trim;
edtFiltrMDRozmer.Text:= edtFiltrMDRozmer.Text.Trim;
edtFiltrMDNormaMAT.Text:= edtFiltrMDNormaMAT.Text.Trim;
kodMat:= edtFiltrMaterial.Text;
d:= Length(kodMat);
sz:= '';
rc:= '';
if (d=13) then // 010030INT000031910275957
begin
sz:= LeftStr(kodMat, 3);
rc:= MidStr(kodMat, 4, 30);
end;
if (d=13) then
begin
sz:= LeftStr(kodMat, 3);
rc:= MidStr(kodMat, 4, 10);
end
else
if (d>13) and (LeftStr(kodMat,3)='010') then // 010030INT000037610313119
begin
kodMat:= MidStr(kodMat, 4, 100);
sz:= LeftStr(kodMat, 3); // 030
rc:= MidStr(kodMat, 4, 10); // INT0000232
// sarze:= MidStr(kodMat, 16, 50); // 1202106
edtFiltrMaterial.Text:= sz + rc;
end;
if (edtFiltrMaterial.Text<>'') or (edtFiltrNadoba.Text<>'') or (edtFiltrNazev.Text<>'') or (edtFiltrDN.Text<>'')
or (edtFiltrPrumer.Text<>'') or (edtFiltrJakost.Text<>'') or (edtFiltrProfil.Text<>'') or (edtFiltrTloustka.Text<>'')
or (edtFiltrMDRozmer.Text<>'') or (edtFiltrMDNormaMAT.Text<>'') then
begin
dm.FrontaOdznacitVse;
fMaterial:= edtFiltrMaterial.Text;
fNadoba:= edtFiltrNadoba.Text;
fNazev:= edtFiltrNazev.Text;
fPrumer:= edtFiltrPrumer.Text;
fDN:= edtFiltrDN.Text;
fJakost:= edtFiltrJakost.Text;
fProfil:= edtFiltrProfil.Text;
fTloustka:= edtFiltrTloustka.Text;
fRozmer:= edtFiltrMDRozmer.Text.Trim;
fNormaMat:= edtFiltrMDNormaMAT.Text.Trim;
filtrNew:= IfThen(fMaterial<>'', 'UPPER(colCisloZboziMat) LIKE ''%' + fMaterial.ToUpper + '%''', '');
if (fNadoba<>'') then
begin
if (filtrNew<>'') then
filtrNew:= filtrNew + ' AND ';
filtrNew:= filtrNew + 'UPPER(colNadoba) LIKE ''%' + fNadoba.ToUpper + '%''';
end;
if (fNazev<>'') then
begin
if (filtrNew<>'') then
filtrNew:= filtrNew + ' AND ';
filtrNew:= filtrNew + 'UPPER(colNazev1) LIKE ''%' + fNazev.ToUpper + '%''';
end;
if (fPrumer<>'') then
begin
if (filtrNew<>'') then
filtrNew:= filtrNew + ' AND ';
filtrNew:= filtrNew + 'UPPER(colPrumer) LIKE ''' + fPrumer.ToUpper + '''';
end;
if (fDN<>'') then
begin
if (filtrNew<>'') then
filtrNew:= filtrNew + ' AND ';
filtrNew:= filtrNew + 'UPPER(colDN) LIKE ''' + fDN.ToUpper + '''';
end;
if (fTloustka<>'') then
begin
if (filtrNew<>'') then
filtrNew:= filtrNew + ' AND ';
filtrNew:= filtrNew + 'UPPER(colSilaMat) LIKE ''' + fTloustka.ToUpper + '''';
end;
if (fProfil<>'') then
filtrNew:= filtrNew + IfThen(filtrNew<>'', ' AND ', '') + 'UPPER(colRozmer) LIKE ''' + fProfil.ToUpper + '''';
if (fJakost<>'') then
filtrNew:= filtrNew + IfThen(filtrNew<>'', ' AND ', '') + 'UPPER(colJakostMat) LIKE ''' + fJakost.ToUpper + '''';
if (fRozmer<>'') then
filtrNew:= filtrNew + IfThen(filtrNew<>'', ' AND ', '') + 'UPPER(colRozmer) LIKE ''' + fRozmer.ToUpper + '%''';
if (fNormaMat<>'') then
filtrNew:= filtrNew + IfThen(filtrNew<>'', ' AND ', '') + 'UPPER(colNormaMat) LIKE ''%' + fNormaMat.ToUpper + '%''';
dm.tblFronta.Filtered:= false;
dm.tblFronta.Filter:= filtrNew;
dm.tblFronta.Filtered:= true;
end
else
begin
dm.tblFronta.Filter:= '';
dm.tblFronta.Filtered:= true;
dm.tblFronta.Filtered:= false;
end;
lblRecCount.Caption:= 'Počet: ' + dm.tblFronta.RecordCount.ToString;
ctrlFronta.ItemCount:= dm.tblFronta.RecordCount;
ctrlFronta.Invalidate;
lblRecSelected.Caption:= 'Výběr: 0 / celkem 0 m';
dm.FrontaOdznacitVse;
if (frontaPlan.CanFocus) then
frontaPlan.SetFocus;
end;
procedure TformMain.edtFiltrMaterialKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key=VK_RETURN) then
begin
Key:= 0;
edtFiltrJakostExit (Sender);
end;
end;
procedure TformMain.edtFiltrMDCisloExit (Sender: TObject);
var filtrNew: string;
fCislo, fRCMat, fDM, fS1, fDatum, fRozmer, fNormaMat: string;
begin
if (frontaPanel.CanFocus) then
frontaPanel.SetFocus;
CloseTabTip;
edtFiltrMDCislo.Text:= edtFiltrMDCislo.Text.Trim;
fCislo:= edtFiltrMDCislo.Text;
fDatum:= DateToStr(dtFiltrMDDatum.Date);
if (fDatum='30.12.1899') then
fDatum:= '';
fDM:= edtFiltrMDDM.Text.Trim;
fS1:= edtFiltrMDSila.Text.Trim;
fRCMat:= edtFiltrMDRegCisMat.Text.Trim;
fRozmer:= edtFiltrMDRozmer.Text.Trim;
fNormaMat:= edtFiltrMDNormaMAT.Text.Trim;
if (fCislo<>'') or (fDatum<>'') or (fDM<>'') or (fS1<>'') or (fRCMat<>'') or (fRozmer<>'') or (fNormaMat<>'') then
begin
filtrNew:= IfThen(fCislo<>'', 'colCislo=' + fCislo, '');
if (fDatum<>'') then
begin
if (filtrNew<>'') then
filtrNew:= filtrNew + ' AND ';
filtrNew:= filtrNew + 'colPlanVyroby BETWEEN ''' + fDatum + ' 00:00:01'' AND ''' + fDatum + ' 23:59:59''';
end;
if (fDM<>'') then
begin
if (filtrNew<>'') then
filtrNew:= filtrNew + ' AND ';
filtrNew:= filtrNew + 'UPPER(colPrumerDM)=''' + fDM + '''';
end;
if (fRCMat<>'') then
begin
if (filtrNew<>'') then
filtrNew:= filtrNew + ' AND ';
filtrNew:= filtrNew + 'UPPER(colRCMat) LIKE ''%' + fRCMat + '%''';
end;
if (fS1<>'') then
begin
if (filtrNew<>'') then
filtrNew:= filtrNew + ' AND ';
filtrNew:= filtrNew + 'UPPER(colTloustkaS1)=''' + fS1 + '''';
end;
if (fRozmer<>'') then
filtrNew:= filtrNew + IfThen(filtrNew<>'', ' AND ', '') + 'UPPER(colRozmer) LIKE ''' + fRozmer.ToUpper + '%''';
if (fNormaMat<>'') then
filtrNew:= filtrNew + IfThen(filtrNew<>'', ' AND ', '') + 'UPPER(colNormaMat) LIKE ''%' + fNormaMat.ToUpper + '%''';
dm.tblMatDavky.Filtered:= false;
dm.tblMatDavky.Filter:= filtrNew;
dm.tblMatDavky.Filtered:= true;
end
else
begin
dm.tblMatDavky.Filter:= '';
dm.tblMatDavky.Filtered:= true;
dm.tblMatDavky.Filtered:= false;
end;
lblRecCount.Caption:= 'Počet dávek: ' + dm.tblMatDavky.RecordCount.ToString;
ctrlMD.ItemCount:= dm.tblMatDavky.RecordCount;
ctrlMD.Invalidate;
// lblRecSelected.Caption:= 'Výběr: 0 / celkem 0 m';
// dm.FrontaOdznacitVse;
if (frontaPlan.CanFocus) then
frontaPlan.SetFocus;
end;
procedure TformMain.edtFiltrMDCisloKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key=VK_RETURN) then
begin
Key:= 0;
edtFiltrMDCisloExit (Sender);
end;
end;
procedure TformMain.edtFiltrMDDMExit (Sender: TObject);
begin
edtFiltrMDCisloExit (Sender);
end;
procedure TformMain.edtFiltrMDSilaExit(Sender: TObject);
begin
edtFiltrMDCisloExit (Sender);
end;
procedure TformMain.edtFiltrMDSilaKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key=VK_RETURN) then
begin
Key:= 0;
edtFiltrMDCisloExit (Sender);
end;
end;
procedure TformMain.edtFiltrMDDMKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key=VK_RETURN) then
begin
Key:= 0;
edtFiltrMDCisloExit (Sender);
end;
end;
procedure TformMain.edtFiltrMDNormaMatExit (Sender: TObject);
begin
edtFiltrMDCisloExit (Sender);
end;
procedure TformMain.edtFiltrMDNormaMatKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key=VK_RETURN) then
begin
Key:= 0;
edtFiltrMDCisloExit (Sender);
end;
end;
procedure TformMain.edtFiltrMDRegCisMatExit (Sender: TObject);
begin
edtFiltrMDCisloExit (Sender);
end;
procedure TformMain.edtFiltrMDRegCisMatKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key=VK_RETURN) then
begin
Key:= 0;
edtFiltrMDRegCisMatExit (Sender);
end;
end;
procedure TformMain.edtFiltrMDRozmerExit (Sender: TObject);
begin
edtFiltrMDCisloExit (Sender);
end;
procedure TformMain.edtFiltrMDRozmerKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key=VK_RETURN) then
begin
Key:= 0;
edtFiltrMDCisloExit (Sender);
end;
end;
procedure TformMain.edtFiltrNadobaEnter (Sender: TObject);
begin
edtFiltrNadoba.Text:= '';
calcTyp:= 1;
end;
procedure TformMain.edtFiltrNadobaExit (Sender: TObject);
begin
edtFiltrMaterialExit (Sender);
end;
procedure TformMain.edtFiltrNazevEnter (Sender: TObject);
begin
edtFiltrNazev.Text:= '';
calcTyp:= 2;
end;
procedure TformMain.edtFiltrNazevExit (Sender: TObject);
begin
edtFiltrNazev.Text:= edtFiltrNazev.Text.Trim;
edtFiltrMaterialExit (Sender);
end;
procedure TformMain.edtFiltrNazevKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key=VK_RETURN) or (Key=VK_ESCAPE) then
edtFiltrNazevExit (Sender);
end;
procedure TformMain.FormClose (Sender: TObject; var Action: TCloseAction);
var lSQL: string;
begin
if (1=0) AND (datModul.idHlavPila>0) then
begin
lSQL:= 'UPDATE ' + tblRezPredpis + ' SET IDKmenZboMaterial=' + IfThen(datModul.idKmenMaterialPila=0, 'NULL', datModul.idKmenMaterialPila.ToString);
lSQL:= lSQL + ', Sarze=N' + IfThen(datModul.pilaSarze='', 'ULL', datModul.pilaSarze.QuotedString);
lSQL:= lSQL + ' WHERE ID=' + datModul.idHlavPila.ToString;
Helios.ExecSQL(lSQL);
end;
// Helios.ExecSQL('DELETE FROM ' + tblRezPredpisR + ' WHERE LoginName=SUSER_SNAME() AND DatTisku IS NULL AND Tisk=0');
// Helios.ExecSQL('DELETE FROM ' + tblRezPredpis + ' WHERE ID NOT IN (SELECT IDHlavicka FROM ' + tblRezPredpisR + ' WHERE LoginName=SUSER_SNAME())');
if (dm.tblPila.RecordCount=0) then
begin
Helios.ExecSQL('UPDATE ' + tblRezPredpisPily + ' SET CisloDavky=NULL WHERE Aktivni=1 AND LoginName=SUSER_SNAME()');
if (datModul.idHlavPila>0) then
Helios.ExecSQL('DELETE ' + tblRezPredpisPily + ' WHERE ID=' + datModul.idHlavPila.ToString);
end;
if (dm.tblFronta.Active) then
dm.tblFronta.Close;
if (dm.tblPila.Active) then
dm.tblPila.Close;
// FPila.Free;
if (dm.tblPlan.Active) then
dm.tblPlan.Close;
// FPlan.Free;
Action:= TCloseAction.caFree;
end;
procedure TformMain.pgCtrlChange (Sender: TObject);
begin
btnTiskStitku.Enabled:= (pgCtrl.ActivePage=shPila) and (dm.tblPila.RecordCount>0);
if (pgCtrl.ActivePage=shPila) then
begin
btnAddPila.Enabled:= (edtFiltrPila.Text='');
btnDelPila.Enabled:= (dm.tblPila.RecordCount>0) and (edtFiltrPila.Text='');
btnDelPilaOne.Enabled:= (dm.tblPila.RecordCount>0) and (edtFiltrPila.Text='');
end;
if (pgCtrl.ActivePage=shPlan) then
begin
btnAddPila.Enabled:= true;
btnDelPila.Enabled:= (dm.tblPlan.RecordCount>0);
btnDelPilaOne.Enabled:= (dm.tblPlan.RecordCount>0);
end;
end;
procedure TformMain.pgCtrlMDChange (Sender: TObject);
begin
lblRecCount.Caption:= 'Počet: 0';
lblRecSelected.Caption:= 'Výběr: 0 / celkem 0 m';
if (pgCtrlMD.ActivePage=shMatDavky) then
lblRecCount.Caption:= 'Počet dávek: ' + dm.tblMatDavky.RecordCount.ToString
else
lblRecCount.Caption:= 'Počet: ' + dm.tblFronta.RecordCount.ToString;
btnAddPila.Enabled:= not(pgCtrlMD.ActivePage=shMatDavky);
btnAddPila.Enabled:= btnAddPila.Enabled and (dm.tblFronta.RecordCount>0);
end;
procedure TformMain.FormShow (Sender: TObject);
var lSQL: string;
cnt, iId, iMD: integer;
begin
idPrac:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT ID FROM ' + tblCPrac + ' WHERE TRIM(Pracoviste)=N''30'' AND IDTabStrom=N''101001''');
lblRecCount.Caption:= 'Počet: 0';
lblRecSelected.Caption:= 'Výběr: 0 / celkem 0 m';
if (idDP>0) then
begin
datModul.idHlavPila:= idDP;
if (helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 FROM ' + tblRezPredpis + ' WHERE ID=' + idDP.ToString + ' AND IDPlan IS NOT NULL')) then
datModul.idHlavPlan:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDPlan FROM ' + tblRezPredpis + ' WHERE ID=' + idDP.ToString + ' AND IDPlan IS NOT NULL');
end;
pgCtrl.ActivePage:= shPila;
pgCtrlMD.ActivePage:= shMatDavky;
// dm.NactiIkonuProButton (btnTiskStitku, 'XC_X_PRINT');
// dm.NactiIkonuProButton (btnObrazek, 'XC_X_PDFIN');
VymazUdajePilaNeboPlan;
VymazUdajePilaNeboPlan (true);
if (dm.tblPila<>nil) then
begin
if not(dm.tblPila.Active) then
dm.tblPila.Open;
dm.tblPila.Clear; // .EmptyDataSet;
pilaDelkaSum:= 0;
if not(dm.tblPlan.Active) then
dm.tblPlan.Open;
dm.tblPlan.Clear; // .EmptyDataSet;
planDelkaSum:= 0;
// FPila:= TList<TZaznamPily>.Create;
// FPlan:= TList<TZaznamPily>.Create;
NactiPracovnikyPily;
{
helUtils.waitStart(nil, 'Načítám rozpracovaná data...');
NactiRozpracovanePolozky;
helUtils.waitEnd;
}
lSQL:= 'SELECT ID, IDPlanMD FROM ' + tblRezPredpis + ' WHERE Splneno=0 AND IDPlanMD IS NOT NULL AND JePlan=0 AND LoginName=SUSER_SNAME()'; // DeviceID=N' + datModul.devID.QuotedString;
with Helios.OpenSQL(lSQL) do
begin
First;
while not(EOF) do
begin
iID:= VarToStr(FieldByNameValues('ID')).ToInteger;
iMD:= VarToStr(FieldByNameValues('IDPlanMD')).ToInteger;
Helios.ExecSQL ('DELETE FROM ' + tblRezPredpisR + ' WHERE IDHlavicka=' + iID.ToString + ' AND IDPlanMD=' + iMD.ToString);
Helios.ExecSQL ('DELETE FROM ' + tblRezPredpis + ' WHERE ID=' + iID.ToString + ' AND IDPlanMD=' + iMD.ToString);
Helios.ExecSQL ('UPDATE ' + tblMatDavkyR + ' SET NaPile=0 WHERE IDHlava=' + iMD.ToString);
Helios.ExecSQL ('UPDATE ' + tblMatDavkyH + ' SET NaPile=0 WHERE ID=' + iMD.ToString);
Next;
end;
end;
Helios.ExecSQL('SELECT 14 AS DebugStep');
btnKonecDavky.Enabled:= false; // musim nejdriv naskenovat material
dm.NactiMaterialoveDavky (self);
Helios.ExecSQL('SELECT 15 AS DebugStep');
ctrlMD.ItemCount:= dm.tblMatDavky.RecordCount;
dm.NactiFrontu (idPrac, self);
Helios.ExecSQL('SELECT 16 AS DebugStep');
ctrlFronta.ItemCount:= dm.tblFronta.RecordCount;
digitTimer.Enabled:= true;
timerPila:= 0;
dtFiltrMDDatum.Date:= 0;
dtFiltrMDDatum.Format:= ' ';
end;
if (cbZamest.CanFocus) then
cbZamest.SetFocus;
end;
procedure TformMain.frontaPilaAfterDrawItems (ACanvas: TCanvas; ARect: TRect);
begin
// FPila.Count:= frontaPila.ItemCount;
end;
procedure TformMain.frontaPilaBeforeDrawItem (AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState);
var ks, delka: Extended;
idVPr: integer;
lSQL, sz, rc: string;
uhel: Extended;
function NapoctiDelkuPila (AIndex: integer): Extended;
var ii, idx: integer;
begin
result:= 0;
dm.tblPila.DisableControls;
ii:= dm.tblPila.RecNo;
for idx:=1 to AIndex+1 do
begin
dm.tblPila.RecNo:= idx;
result:= Result + dm.tblPila.FieldByName('colKs').AsInteger * dm.tblPila.FieldByName('colDelka').AsExtended;
end;
dm.tblPila.RecNo:= ii;
dm.tblPila.EnableControls;
end;
begin
{ // pokud je povoleno, neni videt vyber polozky v seznamu
// Nastavení barvy pera pro rámeček
ACanvas.Pen.Color:= clBlack;
ACanvas.Pen.Width:= 1; // Šířka rámečku
// Nakreslení rámečku kolem položky
ACanvas.Rectangle(ARect);
}
dm.tblPila.RecNo:= AIndex + 1; // AIndex zero-based
ks:= dm.tblPila.FieldByName('colKs').AsExtended;
delka:= dm.tblPila.FieldByName('colDelka').AsExtended;
pilaDelkaSum:= NapoctiDelkuPila (AIndex);
lblPila1ItemDeleni.Caption:= IfThen(ks>0, ks.ToString + ' x ' + delka.ToString + ' mm ', '');
lblPila1ItemNadoba.Caption:= VarToStr(dm.tblPila.FieldByName('colNadoba').Value).Trim;
lblPila1ItemRadaPrikaz.Caption:= VarToStr(dm.tblPila.FieldByName('colRadaPrikaz').Value).Trim;
lblPilaDelkaSum.Caption:= pilaDelkaSum.ToString + ' mm';
if (dm.tblPila.FieldByName('colPovoleno').AsBoolean) then
lblPila1ItemDeleni.Font.Style:= lblPila1ItemDeleni.Font.Style - [fsStrikeOut]
else
lblPila1ItemDeleni.Font.Style:= lblPila1ItemDeleni.Font.Style + [fsStrikeOut];
lblPozicePilaFronta.Caption:= dm.tblPila.FieldByName('colPozice').AsString;
lblRezatUhelPila.Caption:= '';
sz:= VarToStr(dm.tblPila.FieldByName('colSZPrikaz').Value).Trim;
rc:= VarToStr(dm.tblPila.FieldByName('colRegCisPrikaz').Value).Trim;
if (sz<>'') and (rc<>'') then
begin
lSQL:= 'SELECT TOP(1) Uhel FROM dbo.hvw_ADE_INSERT_VYROBA WHERE SkupZbo=N' + sz.QuotedString + ' AND RegCis=N' + rc.QuotedString + ' AND LastRec=1 AND StavPolozky=N''50''';
uhel:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
if (uhel>1) then
lblRezatUhelPila.Caption:= 'úhel ' + uhel.ToString;
end;
lblRegCisPrikaz2.Caption:= dm.tblPila.FieldByName('colRegCisPrikaz').AsString;
lblPila1ItemNadoba.Font.Style:= lblPila1ItemDeleni.Font.Style;
lblPila1ItemRadaPrikaz.Font.Style:= lblPila1ItemDeleni.Font.Style;
lblPilaDelkaSum.Font.Style:= lblPila1ItemDeleni.Font.Style;
end;
procedure TformMain.frontaPilaItemClick (Sender: TObject);
var i, idKZ: integer;
lSQL, czbo: string;
jeTiskAkt: boolean;
begin
btnTiskStitku.Enabled:= false;
btnTiskBezEvidence.Enabled:= false;
if (edtFiltrPila.Text='') then
begin
Helios.Error(#1'Nejdřív naskenujte MATERIÁL !');
Exit;
end;
if (pilaReqSN) and (lblPila1Sarze.Caption='') then
begin
Helios.Error(#1'Nelze pokračovat, naskenovaný materiál požaduje ŠARŽI !'#1);
end
else
begin
i:= frontaPila.ItemIndex + 1; // zero based
dm.tblPila.RecNo:= i;
czbo:= dm.tblPila.FieldByName('colCisloZboziMat').AsString;
idKZ:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblKZ + ' WHERE CisloZbozi=N' + czbo.QuotedString);
if (lblPila1RegCis.Caption='') and (dm.tblPila.RecordCount>0) then
begin
with Helios.OpenSQL('SELECT RegCis, Nazev1 FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString) do
if (RecordCount=1) then
begin
lblPila1RegCis.Caption:= VarToStr(FieldByNameValues('RegCis'));
lSQL:= 'SELECT k.Nazev1 + N'' '' + ISNULL(ke._Rozmer, N'''') + N'' / '' + ISNULL(ke._S1_X, N'''') + N'' '' + ISNULL(ke._JakostMaterialu, N'''') FROM ' + tblKZ;
lSQL:= lSQL + ' k LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) WHERE k.ID=' + idKZ.ToString;
lblPila1Nazev1.Caption:= helUtils.getHeliosStrVal(Helios, '', lSQL);
end;
end;
btnDelPilaOne.Enabled:= (dm.tblPila.RecordCount>0);
btnDelPila.Enabled:= btnDelPilaOne.Enabled;
if (edtFiltrPila.Text<>'') then
begin
materialOK:= (czbo=datModul.pilaSZ+datModul.pilaRC);
materialOK:= materialOK or dm.NaskenovanyMaterialJeOK (datModul.idKmenMaterialPila);
if not(materialOK) then
Helios.Error(#1'Vybraný/naskenovaný materiál neodpovídá požadavku.'#1)
else
begin
btnTiskBezEvidence.Enabled:= true;
dm.tblPila.RecNo:= frontaPila.ItemIndex + 1;
if (dm.tblPila.FieldByName('colPovoleno').AsBoolean) then
begin
i:= dm.PocetPovolenychPredeMnou (dm.tblPila);
btnTiskStitku.Enabled:= (i=0);
end;
end;
end;
end;
end;
procedure TformMain.frontaPlanAfterDrawItems (ACanvas: TCanvas; ARect: TRect);
begin
// FPlan.Count:= frontaPlan.ItemCount;
end;
procedure TformMain.frontaPlanBeforeDrawItem (AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState);
var ks, delka: Extended;
lSQL, sz, rc: string;
uhel: Extended;
function NapoctiDelkuPlan (AIndex: integer): Extended;
var ii, idx: integer;
begin
result:= 0;
dm.tblPlan.DisableControls;
ii:= dm.tblPlan.RecNo;
for idx:=1 to AIndex+1 do
begin
dm.tblPlan.RecNo:= idx;
result:= Result + dm.tblPlan.FieldByName('colKs').AsInteger * dm.tblPlan.FieldByName('colDelka').AsExtended;
end;
dm.tblPlan.RecNo:= ii;
dm.tblPlan.EnableControls;
end;
begin
dm.tblPlan.RecNo:= AIndex + 1; // AIndex zero-based
ks:= dm.tblPlan.FieldByName('colKs').AsExtended;
delka:= dm.tblPlan.FieldByName('colDelka').AsExtended;
planDelkaSum:= NapoctiDelkuPlan (AIndex);
lblRezatUhelPlan.Caption:= '';
sz:= VarToStr(dm.tblPlan.FieldByName('colSZPrikaz').Value).Trim;
rc:= VarToStr(dm.tblPlan.FieldByName('colRegCisPrikaz').Value).Trim;
if (sz<>'') and (rc<>'') then
begin
lSQL:= 'SELECT TOP(1) Uhel FROM dbo.hvw_ADE_INSERT_VYROBA WHERE SkupZbo=N' + sz.QuotedString + ' AND RegCis=N' + rc.QuotedString + ' AND LastRec=1 AND StavPolozky=N''50''';
uhel:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
if (uhel>1) then
lblRezatUhelPlan.Caption:= 'úhel ' + uhel.ToString;
end;
lblPlanItemDeleni.Caption:= IfThen(ks>0, ks.ToString + ' x ' + delka.ToString + ' mm ', '');
lblPlanItemNadoba.Caption:= VarToStr(dm.tblPlan.FieldByName('colNadoba').Value).Trim;
lblPlanItemRadaPrikaz.Caption:= VarToStr(dm.tblPlan.FieldByName('colRadaPrikaz').Value).Trim;
lblPlanDelkaSum.Caption:= planDelkaSum.ToString + ' mm';
end;
procedure TformMain.Label4MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if (ssShift in Shift) then
begin
ShowMessage('DeviceID: ' + datModul.devID);
if (ssCtrl in Shift) then
Clipboard.AsText:= datModul.devID;
end;
end;
procedure TformMain.lblMaterialSortClick (Sender: TObject);
begin
dm.tblFronta.IndexFieldNames:= 'colRegCis,colNadoba';
dm.tblFronta.First;
ctrlFronta.Invalidate;
end;
procedure TformMain.lblMDCisloZboClick(Sender: TObject);
begin
if (ctrlMD.ItemCount=1) then
ctrlMDItemClick (Sender);
end;
procedure TformMain.lblNadobaSortClick (Sender: TObject);
begin
dm.tblFronta.IndexFieldNames:= 'colNadoba,colRegCis';
dm.tblFronta.First;
ctrlFronta.Invalidate;
end;
procedure TformMain.lblPlanItemDeleniClick (Sender: TObject);
begin
btnDelPilaOne.Enabled:= (dm.tblPlan.RecordCount>0);
end;
end.