1437 lines
54 KiB
ObjectPascal
1437 lines
54 KiB
ObjectPascal
unit frmPlan;
|
||
|
||
interface
|
||
|
||
uses
|
||
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms,
|
||
Vcl.Dialogs, JvExDBGrids, JvDBGrid, JvStringGrid, Vcl.ExtCtrls, Data.DB, Vcl.Grids, Vcl.DBGrids, JvExGrids,
|
||
ddPlugin_TLB, Vcl.StdCtrls, Vcl.NumberBox, Vcl.Buttons, RzDBGrid, JvExStdCtrls, JvCheckBox,
|
||
JvExButtons, JvBitBtn, Vcl.Mask;
|
||
|
||
type
|
||
TformPlan = class(TForm)
|
||
pnl1: TGridPanel;
|
||
grdKalendar: TJvDBGrid;
|
||
grdRozpis: TJvDBGrid;
|
||
grd2: TGridPanel;
|
||
sgCas: TJvStringGrid;
|
||
pnl2: TGridPanel;
|
||
pnl3: TGridPanel;
|
||
Label1: TLabel;
|
||
Label2: TLabel;
|
||
NumberBox1: TNumberBox;
|
||
Label3: TLabel;
|
||
nHodPlanZacatek: TNumberBox;
|
||
Label4: TLabel;
|
||
Label5: TLabel;
|
||
edtVyrobniZakazka: TEdit;
|
||
edtUdrzba: TEdit;
|
||
grd7: TGridPanel;
|
||
Label6: TLabel;
|
||
Label7: TLabel;
|
||
Label8: TLabel;
|
||
Label9: TLabel;
|
||
Label10: TLabel;
|
||
Label12: TLabel;
|
||
lblOznaceni: TLabel;
|
||
edtVyrobaKs: TNumberBox;
|
||
edtVyrobaKA: TNumberBox;
|
||
edtVyrobaPal: TNumberBox;
|
||
edtKsZaHod: TNumberBox;
|
||
edtHodUdrzba: TNumberBox;
|
||
Label13: TLabel;
|
||
edtMJZakazka: TEdit;
|
||
btnPridatZakazku: TBitBtn;
|
||
btnUdrzba: TBitBtn;
|
||
grd4: TGridPanel;
|
||
grd5: TGridPanel;
|
||
grd9: TGridPanel;
|
||
grd6: TGridPanel;
|
||
btnKontrolaVyrobene: TBitBtn;
|
||
Label14: TLabel;
|
||
edtVyrobekCislo: TEdit;
|
||
edtVyrobekNazev: TEdit;
|
||
edtRozpisKsVKA: TNumberBox;
|
||
edtRozpisKAnaPal: TNumberBox;
|
||
Label15: TLabel;
|
||
Label16: TLabel;
|
||
Label17: TLabel;
|
||
Label18: TLabel;
|
||
Label19: TLabel;
|
||
Label20: TLabel;
|
||
Label21: TLabel;
|
||
Label22: TLabel;
|
||
lblRozpisCelkemKs: TLabel;
|
||
edtZakazka: TEdit;
|
||
lblRozpisPalet: TLabel;
|
||
lblRozpisMJ: TLabel;
|
||
chbU: TJvCheckBox;
|
||
chbF: TJvCheckBox;
|
||
chbT: TJvCheckBox;
|
||
chbPL: TJvCheckBox;
|
||
GridPanel1: TGridPanel;
|
||
GridPanel3: TGridPanel;
|
||
btnZrusitZakazku: TJvBitBtn;
|
||
btnRezervacePL: TJvBitBtn;
|
||
btnFixovatZakazku: TJvBitBtn;
|
||
edtCisloZakNaPL: TLabeledEdit;
|
||
Label11: TLabel;
|
||
edtRozpisPalet1: TNumberBox;
|
||
edtRozpisPalet2: TNumberBox;
|
||
btnKonec: TButton;
|
||
procedure FormShow (Sender: TObject);
|
||
procedure sgCasDrawCell (Sender: TObject; ACol, ARow: LongInt; Rect: TRect; State: TGridDrawState);
|
||
procedure sgCasSelectCell (Sender: TObject; ACol, ARow: LongInt; var CanSelect: Boolean);
|
||
procedure grdRozpisDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
|
||
procedure grdKalendarTitleClick (Column: TColumn);
|
||
procedure grdRozpisTitleClick (Column: TColumn);
|
||
procedure FormResize (Sender: TObject);
|
||
procedure grdKalendarDrawColumnTitle (Sender: TObject; ACanvas: TCanvas; ARect: TRect;
|
||
AColumn: TColumn; var ASortMarker: TJvDBGridBitmap; IsDown: Boolean; var Offset: Integer;
|
||
var DefaultDrawText, DefaultDrawSortMarker: Boolean);
|
||
procedure grdKalendarDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
|
||
procedure edtVyrobniZakazkaDblClick (Sender: TObject);
|
||
procedure grdRozpisCellClick (Column: TColumn);
|
||
procedure btnPridatZakazkuClick (Sender: TObject);
|
||
procedure edtUdrzbaDblClick (Sender: TObject);
|
||
procedure btnUdrzbaClick (Sender: TObject);
|
||
procedure grdKalendarCellClick (Column: TColumn);
|
||
procedure FormClose (Sender: TObject; var Action: TCloseAction);
|
||
procedure FormDestroy (Sender: TObject);
|
||
procedure btnRezervacePLClick (Sender: TObject);
|
||
procedure sgCasDblClick (Sender: TObject);
|
||
procedure grdRozpisMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||
procedure btnFixovatZakazkuClick(Sender: TObject);
|
||
procedure btnZrusitZakazkuClick(Sender: TObject);
|
||
procedure edtZakazkaDblClick(Sender: TObject);
|
||
procedure btnKonecClick(Sender: TObject);
|
||
procedure grdRozpisDblClick(Sender: TObject);
|
||
procedure btnKontrolaVyrobeneClick(Sender: TObject);
|
||
private
|
||
function TestPrikazuPredZrusenimZakazky (idPrikaz: integer): boolean;
|
||
procedure ResizeGrids;
|
||
procedure NulujUdajeVyrobku;
|
||
procedure NactiDataGridu;
|
||
public
|
||
Helios: IHelios;
|
||
procedure RozpadPrikazuNaDavkyKP (datum: string=''; hodinaOd: integer=-1; arrID: TArray<integer>=nil);
|
||
end;
|
||
|
||
|
||
implementation
|
||
uses System.DateUtils, System.StrUtils, System.Math,
|
||
frmKmen, frmZavady, frmVyrobniTyden, frmPlanPaletListy,
|
||
uUtils, datMod2, helUtils;
|
||
{$R *.dfm}
|
||
var
|
||
formPlan: TformPlan;
|
||
g1ColWidthKoefs, g2ColWidthKoefs: TArray<TGridColWidthKoefs>;
|
||
idKmenProPlan, idZakModif, idStroj, ksZaHod: integer;
|
||
idPrPUdrzba: integer;
|
||
idAdVKP, selIdDavka, selIdVPr, selIdPlan: integer;
|
||
rozpisAktDatum: string;
|
||
rozpisAktCasOd: integer;
|
||
kalendarAktStroj: integer;
|
||
kalendarKodStroj: string;
|
||
pressedAlt, pressedShift: boolean;
|
||
|
||
|
||
|
||
procedure TformPlan.ResizeGrids;
|
||
var i, i2: integer;
|
||
begin
|
||
for i:=0 to grdKalendar.Columns.Count-1 do
|
||
for i2:=0 to Length(g1ColWidthKoefs)-1 do
|
||
if SameText(grdKalendar.Columns.Items[i].FieldName, g1ColWidthKoefs[i2].fieldName) then
|
||
grdKalendar.Columns.Items[i].Width:= Trunc(grdKalendar.Width * g1ColWidthKoefs[i2].widthKoef);
|
||
|
||
for i:=0 to grdRozpis.Columns.Count-1 do
|
||
for i2:=0 to Length(g2ColWidthKoefs)-1 do
|
||
if SameText(grdRozpis.Columns.Items[i].FieldName, g2ColWidthKoefs[i2].fieldName) then
|
||
grdRozpis.Columns.Items[i].Width:= Trunc(grdRozpis.Width * g2ColWidthKoefs[i2].widthKoef);
|
||
end;
|
||
|
||
|
||
|
||
|
||
function TformPlan.TestPrikazuPredZrusenimZakazky (idPrikaz: Integer): Boolean;
|
||
begin
|
||
result:= true; // lze zrusit
|
||
|
||
if (helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 FROM ' + tblPMZ + ' WHERE IDPrikaz=' + idPrikaz.ToString)) then
|
||
result:= false;
|
||
|
||
if (result) then
|
||
if (helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 FROM ' + tblDZ + ' WHERE IDPrikaz=' + idPrikaz.ToString)) then
|
||
result:= false;
|
||
|
||
if (result) then
|
||
if (helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 FROM ' + tblPZ + ' WHERE IDPrikaz=' + idPrikaz.ToString)) then
|
||
result:= false;
|
||
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.NulujUdajeVyrobku;
|
||
begin
|
||
edtVyrobniZakazka.Text:= '';
|
||
lblOznaceni.Caption:= '';
|
||
edtVyrobaKs.ValueInt:= 0;
|
||
edtVyrobaKA.ValueInt:= 0;
|
||
edtVyrobaPal.ValueInt:= 0;
|
||
edtKsZaHod.ValueInt:= 0;
|
||
edtMJZakazka.Text:= '';
|
||
|
||
nHodPlanZacatek.Value:= 0;
|
||
|
||
idKmenProPlan:= 0;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformPlan.RozpadPrikazuNaDavkyKP (datum: string=''; hodinaOd: integer=-1; arrID: TArray<integer>=nil);
|
||
var lSQL: string;
|
||
i: integer;
|
||
begin
|
||
if (idAdVKP>0) then
|
||
begin
|
||
helUtils.ReseedTable (Helios, tblAdvKPlanDavky);
|
||
|
||
lSQL:= 'DROP TABLE IF EXISTS #TabPrikazyProKapacPlan' + CRLF + 'CREATE TABLE #TabPrikazyProKapacPlan (ID INT NOT NULL, JeUdrzba BIT NOT NULL DEFAULT 0'
|
||
+ ', DatStart DATETIME, PocetHodin NUMERIC(19,6) NOT NULL DEFAULT 0, IDPrPostup INT)' + CRLF;
|
||
for i:=0 to Length(arrID)-1 do
|
||
if (arrID[i]>0) then
|
||
lSQL:= lSQL + 'INSERT #TabPrikazyProKapacPlan (ID) SELECT ' + arrID[i].ToString + CRLF;
|
||
|
||
lSQL:= lSQL + 'DECLARE @dt DATETIME, @casStart TINYINT' + CRLF;
|
||
if (datum<>'') then
|
||
lSQL:= lSQL + 'SET @dt = CONVERT(datetime, N' + datum.QuotedString + ', 104)' + CRLF;
|
||
if (hodinaOd>=0) then
|
||
lSQL:= lSQL + 'SET @casStart=' + hodinaOd.ToString + CRLF;
|
||
lSQL:= lSQL + 'IF OBJECT_ID(N''dbo.ep_Vyroba_AdvPlan_ZapisDavkyPrikazu'', N''P'') IS NOT NULL' + CRLF + ' EXEC dbo.ep_Vyroba_AdvPlan_ZapisDavkyPrikazu';
|
||
lSQL:= lSQL + ' @datumStart=@dt, @casOd=@casStart';
|
||
Helios.ExecSQL (lSQL);
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.btnFixovatZakazkuClick (Sender: TObject);
|
||
var lSQL, lSQL2, idcka: string;
|
||
jeUdrzba: boolean;
|
||
idLoc: integer;
|
||
begin
|
||
lSQL:= 'SELECT 1 FROM ' + tblVPr + ' vp INNER JOIN ' + tblPrikazRada +' vpr ON (vpr.Rada=vp.Rada) WHERE vpr.nazev LIKE N''%<25>dr<64>b%'' AND vp.ID=' + selIdVPr.ToString;
|
||
jeUdrzba:= helUtils.sqlExistsTestGeneral(Helios, lSQL);
|
||
|
||
lSQL:= '';
|
||
lSQL2:= '';
|
||
|
||
idLoc:= 0;
|
||
if (selIdDavka>0) then
|
||
idLoc:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT _VazbaPlgPlan FROM ' + tblAdvKPlanDavky_E + ' WHERE ID=' + selIdDavka.ToString);
|
||
|
||
if (selIdVPr>0) and (idAdVKP>0) then
|
||
begin
|
||
lSQL:= 'UPDATE ' + tblAdvKPlanDavky + ' SET Zamek=0 WHERE IDAdvKapacPlan=' + idAdVKP.ToString + ' AND IDPrikaz=' + selIdVPr.ToString;
|
||
if (idLoc>0) then
|
||
lSQL:= lSQL + ' AND ID IN (SELECT ID FROM ' + tblAdvKPlanDavky_E + ' WHERE _VazbaPlgPlan=' + idLoc.ToString + ')';
|
||
|
||
lSQL2:= 'SELECT ID FROM ' + tblAdvKPlanDavky + ' WHERE IDAdvKapacPlan=' + idAdVKP.ToString + ' AND IDPrikaz=' + selIdVPr.ToString;
|
||
if (idLoc>0) then
|
||
lSQL2:= lSQL2 + ' AND ID IN (SELECT ID FROM ' + tblAdvKPlanDavky_E + ' WHERE _VazbaPlgPlan=' + idLoc.ToString + ')';
|
||
end;
|
||
|
||
if (jeUdrzba) and (lSQL<>'') then
|
||
begin
|
||
if (chbF.Checked) then
|
||
begin
|
||
if Helios.YesNo('Zru<72>it fixaci ?', false) then
|
||
begin
|
||
Helios.ExecSQL (lSQL);
|
||
lSQL:= 'UPDATE ' + tblAdvKPlanDavky_E + ' SET _DatumFixace=NULL WHERE ID IN (' + lSQL2 + ')';
|
||
Helios.ExecSQL (lSQL);
|
||
chbF.Checked:= false;
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
lSQL:= lSQL.Replace('Zamek=0', 'Zamek=1');
|
||
Helios.ExecSQL (lSQL);
|
||
lSQL:= 'UPDATE ' + tblAdvKPlanDavky_E + ' SET _DatumFixace=GETDATE() WHERE ID IN (' + lSQL2 + ')';
|
||
Helios.ExecSQL (lSQL);
|
||
chbF.Checked:= true;
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
if (edtVyrobekCislo.Text<>'') and (lSQL<>'') then
|
||
begin
|
||
if (chbF.Checked) then
|
||
begin
|
||
if Helios.YesNo('Zru<72>it fixaci ?', false) then
|
||
begin
|
||
Helios.ExecSQL (lSQL);
|
||
lSQL:= 'UPDATE ' + tblAdvKPlanDavky_E + ' SET _DatumFixace=NULL WHERE ID IN (' + lSQL2 + ')';
|
||
Helios.ExecSQL (lSQL);
|
||
chbF.Checked:= false;
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
lSQL:= lSQL.Replace('Zamek=0', 'Zamek=1');
|
||
Helios.ExecSQL (lSQL);
|
||
lSQL:= 'UPDATE ' + tblAdvKPlanDavky_E + ' SET _DatumFixace=GETDATE() WHERE ID IN (' + lSQL2 + ')';
|
||
Helios.ExecSQL (lSQL);
|
||
chbF.Checked:= true;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.btnKonecClick(Sender: TObject);
|
||
begin
|
||
Close;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.btnKontrolaVyrobeneClick(Sender: TObject);
|
||
begin
|
||
if (kalendarAktStroj>0) and (grdKalendar.DataSource.DataSet.RecordCount>0) then
|
||
grdKalendarCellClick (grdKalendar.Columns.Items [uUtils.GetFirstVisibleColIndex(grdKalendar)]);
|
||
end;
|
||
|
||
|
||
|
||
procedure TformPlan.btnPridatZakazkuClick (Sender: TObject);
|
||
var lSQL, kodStroje, planKonec, sz, rc, nazevDilce, radaVPr, prikazVPr, szV, szF, kodModif1, kodModif2: string;
|
||
errMsg: string;
|
||
i, idZakModifTemp: integer;
|
||
idZMDleKodu, idPlan, idPrikaz, idDilce, idZakModif, idKmenPr, idPrikazVyssi, idPrikazFinal: integer;
|
||
arrIdVPr: TArray<integer>;
|
||
canCont, delPrikaz: boolean;
|
||
begin
|
||
if (idKmenProPlan>0) then
|
||
begin
|
||
if ((edtVyrobaKs.ValueInt=0) and (edtVyrobaKA.ValueInt=0) and (edtVyrobaPal.ValueInt=0)) or (edtKsZaHod.ValueInt=0) or (lblOznaceni.Caption.Trim='') then
|
||
Helios.Error(#1'Chyb<79> n<>kter<65> ze z<>kladn<64>ch parametr<74> (po<70>et ks/po<70>et KA/po<70>et PAL/hodnota ks/hod), nem<65><6D>u pokra<72>ovat.'#1)
|
||
else
|
||
begin
|
||
idZMDleKodu:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT ID FROM ' + tblZakazModif + ' WHERE Kod=N' + kalendarKodStroj.QuotedString);
|
||
lSQL:= 'SELECT 1 FROM ' + tblZakazModifDilce + ' WHERE IDKmenZbozi=' + idKmenProPlan.ToString + ' AND IDZakazModif=' + idZMDleKodu.ToString;
|
||
if not(helUtils.sqlExistsTestGeneral (Helios, lSQL)) then
|
||
Helios.Error(#1'Na tento v<>robek a stroj nen<65> zavedena norma. Nelze ulo<6C>it do pl<70>nu.'#1)
|
||
else
|
||
begin
|
||
helUtils.waitStart (btnPridatZakazku.GetParentComponent, 'Z<>pis pl<70>nu a generov<6F>n<EFBFBD> p<><70>kaz<61>...');
|
||
lSQL:= 'DECLARE @eMsg NVARCHAR(500)=N'''', @idPlan INT=0, @datPlanKonec DATETIME=NULL' + CRLF
|
||
+ 'IF OBJECT_ID(''dbo.ep_Vyroba_ZapisDoPlanu'', ''P'') IS NOT NULL EXEC @idPlan=dbo.ep_Vyroba_ZapisDoPlanu @dilec=' + idKmenProPlan.ToString
|
||
+ ', @idZakazModif=' + idZMDleKodu.ToString + ', @datum=N' + rozpisAktDatum.QuotedString + ', @hodinaOd=' + rozpisAktCasOd.ToString
|
||
+ ', @pocetKs=' + edtVyrobaKs.Value.ToString.Replace(',','.') + ', @pocetKA=' + edtVyrobaKA.Value.ToString.Replace(',','.')
|
||
+ ', @pocetPal=' + edtVyrobaPal.Value.ToString.Replace(',','.') + ', @datumPlanKonec=@datPlanKonec OUT, @errMsg=@eMsg OUT' + CRLF
|
||
+ 'SELECT @eMsg AS ErrMsg, @idPlan AS IDPlan, @datPlanKonec AS DatumPlanKonec';
|
||
try
|
||
try
|
||
with Helios.OpenSQL (lSQL) do
|
||
begin
|
||
idPlan:= VarToStr(FieldByNameValues('IDPlan')).ToInteger;
|
||
planKonec:= VarToStr(FieldByNameValues('DatumPlanKonec'));
|
||
if (VarToStr(FieldByNameValues('ErrMsg'))<>'') then
|
||
Helios.Error(#1 + VarToStr(FieldByNameValues('ErrMsg')) + #1)
|
||
else
|
||
begin
|
||
helUtils.ReseedTable (Helios, tblVPr);
|
||
helUtils.ReseedTable (Helios, tblPrPost);
|
||
helUtils.ReseedTable (Helios, tblPrKVaz);
|
||
lSQL:= 'DROP TABLE IF EXISTS #TabPomSeznamVyrPlanuProZaplanovani' + CRLF + 'DROP TABLE IF EXISTS #TabGenVyrPrikazy' + CRLF
|
||
+ 'CREATE TABLE #TabPomSeznamVyrPlanuProZaplanovani (ID INT NOT NULL)' + CRLF + 'CREATE TABLE #TabGenVyrPrikazy (ID INT NOT NULL)' + CRLF
|
||
+ 'INSERT #TabPomSeznamVyrPlanuProZaplanovani (ID) SELECT ' + idPlan.ToString + CRLF
|
||
+ 'EXEC dbo.hp_VyrPlan_ZaplanujSeznam @RadaVyrPrikazu=NULL, @GenPlanovaneVyroby=0, @G_PovolitRespektovaniMnozSS=0' + CRLF
|
||
+ 'SELECT ID FROM #TabGenVyrPrikazy ORDER BY ID DESC';
|
||
with Helios.OpenSQL (lSQL) do
|
||
begin
|
||
idPrikazFinal:= 0;
|
||
|
||
First;
|
||
kodModif1:= '';
|
||
SetLength (arrIdVPr, RecordCount);
|
||
i:= 0;
|
||
while not(EOF) do
|
||
begin
|
||
canCont:= true;
|
||
delPrikaz:= false;
|
||
|
||
idPrikaz:= VarToStr(FieldByNameValues('ID')).ToInteger;
|
||
if (idPrikazFinal=0) and (helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 FROM ' + tblVPr + ' WHERE ID=' + idPrikaz.ToString + ' AND UrovenVnoreni=0')) then
|
||
idPrikazFinal:= idPrikaz;
|
||
|
||
if (kodModif1='') then
|
||
begin
|
||
lSQL:= 'SELECT TOP(1) ISNULL(zm.Kod, N'''') AS KodZakModif FROM ' + tblVPr + ' vp LEFT JOIN ' + tblZakazModif
|
||
+ ' zm ON (zm.ID=vp.IDZakazModif) WHERE vp.ID=' + idPrikaz.ToString + ' AND vp.UrovenVnoreni=0';
|
||
kodModif1:= helUtils.getHeliosStrVal (Helios, '', lSQL);
|
||
end;
|
||
|
||
idZakModif:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDZakazModif FROM ' + tblVPr + ' WHERE ID=' + idPrikaz.ToString);
|
||
if (idZakModif>0) then
|
||
begin
|
||
kodModif2:= helUtils.getHeliosStrVal (Helios, '', 'SELECT Kod FROM ' + tblZakazModif + ' WHERE ID=' + idZakModif.ToString);
|
||
// pokud nejsou stejne modifikace, prikaz smaz
|
||
if (kodModif1<>kodModif2) then
|
||
delPrikaz:= true;
|
||
end;
|
||
|
||
// smaz prikazy, ktere nesly zadat do vyroby, typicky nemaji v TPV kusovnik nebo operace
|
||
idDilce:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDTabKmen FROM ' + tblVPr + ' WHERE ID=' + idPrikaz.ToString);
|
||
lSQL:= 'SELECT 1 FROM ' + tblPostup + ' WHERE dilec=' + idDilce.ToString + IfThen(idZakModif>0, ' AND ZmenaDo IS NULL AND IDZakazModif=' + idZakModif.ToString, '');
|
||
if not(helUtils.sqlExistsTestGeneral(Helios,lSQL)) then
|
||
delPrikaz:= true;
|
||
|
||
lSQL:= 'SELECT 1 FROM ' + tblKVaz + ' WHERE vyssi=' + idDilce.ToString + IfThen(idZakModif>0, ' AND ZmenaDo IS NULL AND IDZakazModif=' + idZakModif.ToString, '');
|
||
if not(helUtils.sqlExistsTestGeneral(Helios,lSQL)) then
|
||
delPrikaz:= true;
|
||
|
||
// mam prikaz smazat ?
|
||
if (delPrikaz) then
|
||
begin
|
||
try
|
||
try
|
||
canCont:= false;
|
||
Helios.ExecSQL('EXEC dbo.hp_TabPrikaz_TriggerBeforeDelete @ID=' + idPrikaz.ToString + ', @PouzeTestPredZrusenimStavuZadano=0');
|
||
Helios.ExecSQL('DELETE FROM ' + tblVPr + ' WHERE ID=' + idPrikaz.ToString);
|
||
except on E:Exception do
|
||
errMsg:= E.Message;
|
||
end
|
||
finally
|
||
end;
|
||
end;
|
||
|
||
if (canCont) then
|
||
begin
|
||
|
||
lSQL:= 'SELECT k.SkupZbo, k.ID AS IDKmen, ISNULL(p.IDPrikazVyssi,0) AS IDPrikazVyssi, ISNULL(kv.SkupZbo,N'''') AS SZv, p.IDPrikazRidici, kf.SkupZbo AS SZFin'
|
||
+ ' FROM ' + tblVPr + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) INNER JOIN ' + tblVPr + ' pf ON (pf.ID=p.IDPrikazRidici)'
|
||
+ ' INNER JOIN ' + tblKZ + ' kf ON (kf.ID=pf.IDTabKmen) LEFT JOIN ' + tblVPr + ' pv ON (pv.ID=p.IDPrikazVyssi)'
|
||
+ ' LEFT JOIN ' + tblKZ + ' kv ON (kv.ID=pv.IDTabKmen) WHERE p.ID=' + idPrikaz.ToString;
|
||
with Helios.OpenSQL (lSQL) do
|
||
begin
|
||
sz:= VarToStr(FieldByNameValues('SkupZbo'));
|
||
szV:= VarToStr(FieldByNameValues('SZv'));
|
||
szF:= VarToStr(FieldByNameValues('SZFin'));
|
||
idKmenPr:= VarToStr(FieldByNameValues('IDKmen')).ToInteger;
|
||
idPrikazVyssi:= VarToStr(FieldByNameValues('IDPrikazVyssi')).ToInteger;
|
||
idPrikazFinal:= VarToStr(FieldByNameValues('IDPrikazRidici')).ToInteger;
|
||
end;
|
||
|
||
{
|
||
lSQL:= 'SELECT 1 FROM ' + tblZakazModifDilce + ' WHERE IDKmenZbozi=' + idKmenPr.ToString;
|
||
if not(helUtils.sqlExistsTestGeneral(Helios, lSQL + ' AND IDZakazModif=' + idZakModif.ToString)) then
|
||
if (1=helUtils.SQLGetRowCount(Helios, lSQL.Replace(' 1 ', ' ID '))) then
|
||
begin
|
||
idZakModifTemp:= helUtils.getHeliosIntVal (Helios, 0, lSQL.Replace(' 1 ', ' IDZakazModif '));
|
||
if (idZakModifTemp>0) then
|
||
Helios.ExecSQL('UPDATE ' + tblVPr + ' SET IDZakazModif=' + idZakModifTemp.ToString + ' WHERE ID=' + idPrikaz.ToString);
|
||
end;
|
||
}
|
||
|
||
try
|
||
lSQL:= 'DECLARE @iChyba INT' + CRLF + 'EXEC @iChyba=dbo.hp_ZadaniPrikazuDoVyroby @IDPrikaz=' + idPrikaz.ToString;
|
||
Helios.ExecSQL (lSQL);
|
||
except on E:Exception do
|
||
begin
|
||
radaVPr:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Rada FROM ' + tblVPr + ' WHERE ID=' + idPrikaz.ToString);
|
||
prikazVPr:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Prikaz FROM ' + tblVPr + ' WHERE ID=' + idPrikaz.ToString);
|
||
rc:= helUtils.getHeliosStrVal(Helios, '', 'SELECT RegCis FROM ' + tblKZ+ ' WHERE ID=' + idKmenPr.ToString);
|
||
nazevDilce:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev1 FROM ' + tblKZ+ ' WHERE ID=' + idKmenPr.ToString);
|
||
Helios.Error('Chyba: ' + E.Message + CRLF + '(p<><70>kaz ' + radaVPr + '/' + prikazVPr + ', d<>lec ' + sz + ' ' + rc + ' / ' + nazevDilce + ' )');
|
||
end;
|
||
end;
|
||
// do pole dej jen prikaz finalu
|
||
if (idKmenPr=idKmenProPlan) then
|
||
begin
|
||
arrIdVPr[i]:= idPrikaz;
|
||
if (helUtils.SQLObjectExists (Helios, tblVPrE)) then
|
||
begin
|
||
lSQL:= 'IF NOT EXISTS (SELECT 1 FROM ' + tblVPrE + ' WHERE ID=' + idPrikaz.ToString + ') INSERT ' + tblVPrE + ' (ID) SELECT ' + idPrikaz.ToString;
|
||
Helios.ExecSQL (lSQL);
|
||
Helios.ExecSQL ('UPDATE ' + tblVPrE + ' SET _PlanUkonceni=CONVERT(datetime, N' + planKonec.QuotedString + ', 104) WHERE ID=' + idPrikaz.ToString);
|
||
lSQL:= 'UPDATE ' + tblVPrE + ' SET _PlanZahajeni=CONVERT(datetime, N' + (rozpisAktDatum + ' ' + rozpisAktCasOd.ToString + ':00:00').QuotedString
|
||
+ ', 104) WHERE ID=' + idPrikaz.ToString;
|
||
Helios.ExecSQL (lSQL);
|
||
end;
|
||
Inc(i);
|
||
end;
|
||
end;
|
||
|
||
Next;
|
||
end;
|
||
end;
|
||
|
||
if (edtKsZaHod.ValueInt>0) and (Length(arrIdVPr)>0) then
|
||
begin
|
||
helUtils.ReseedTable (Helios, tblAdvKPlanDavky);
|
||
RozpadPrikazuNaDavkyKP (rozpisAktDatum, rozpisAktCasOd, arrIdVPr);
|
||
end;
|
||
end;
|
||
end;
|
||
except on E:Exception do
|
||
Helios.Error('Chyba: ' + E.Message);
|
||
end;
|
||
finally
|
||
end;
|
||
|
||
helUtils.waitEnd;
|
||
end;
|
||
|
||
NactiDataGridu;
|
||
|
||
grdKalendar.DataSource.DataSet.DisableControls;
|
||
if (grdKalendar.DataSource.DataSet.Locate('colIDStroj', VarArrayOf([kalendarAktStroj]), [loPartialKey])) then
|
||
begin
|
||
grdKalendar.Refresh;
|
||
grdKalendarCellClick (grdKalendar.Columns.Items [uUtils.GetFirstVisibleColIndex(grdKalendar)]);
|
||
end;
|
||
grdKalendar.DataSource.DataSet.EnableControls;
|
||
|
||
// NulujUdajeVyrobku;
|
||
// dm2.NactiDavkyPlanu (self, kalendarAktStroj);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.btnRezervacePLClick (Sender: TObject);
|
||
var lSQL, radaVPr, sk, mj, noveVC: string;
|
||
idKZ: integer;
|
||
i: integer;
|
||
mnozVPr, mnozPal, pocVC, koef: extended;
|
||
begin
|
||
i:= 0;
|
||
if (selIdVPr>0) then
|
||
begin
|
||
sk:= '';
|
||
mj:= '';
|
||
idKZ:= 0;
|
||
mnozVPr:= 0;
|
||
mnozPal:= 0;
|
||
edtCisloZakNaPL.Text:= edtCisloZakNaPL.Text.Trim;
|
||
|
||
lSQL:= 'SELECT p.Rada, p.kusy_zad, k.SkupZbo, k.MJEvidence, p.IdTabKmen FROM ' + tblVPr + ' p INNER JOIN '
|
||
+ tblKZ + ' k ON (k.ID=p.IdTabKmen) WHERE p.ID=' + selIdVPr.ToString;
|
||
with Helios.OpenSQL (lSQL) do
|
||
if (RecordCount=1) then
|
||
begin
|
||
mj:= VarToStr(FieldByNameValues('MJEvidence'));
|
||
mnozVPr:= FieldByNameValues('kusy_zad');
|
||
sk:= VarToStr(FieldByNameValues('SkupZbo'));
|
||
idKZ:= VarToStr(FieldByNameValues('IdTabKmen')).ToInteger;
|
||
end;
|
||
|
||
mj:= mj.ToLower;
|
||
if (mj='pal') then
|
||
mnozPal:= mnozVPr;
|
||
|
||
koef:= 0;
|
||
if (mj='ka') then
|
||
koef:= dm2.VratPrepocetMJ (idKZ, mj, 'Pal', 'PocetHlavni');
|
||
|
||
if (koef<>0) then
|
||
mnozPal:= System.Math.Floor(mnozVPr/koef);
|
||
|
||
pocVC:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT COUNT(ID) FROM ' + tblPrikazVC + ' WHERE IDPrikaz=' + selIdVPr.ToString);
|
||
|
||
if (pocVC<mnozPal) then
|
||
if (Helios.YesNo(#1'Chcete rezervovat <20><>sla pro Paletov<6F> listy ?'#1, false)) then
|
||
begin
|
||
for i:=1 to Trunc(mnozPal-pocVC) do
|
||
begin
|
||
lSQL:= 'SELECT dbo.ef_Vyroba_VratNovyPaletovyList (DEFAULT, DEFAULT, DEFAULT, DEFAULT)';
|
||
noveVC:= helUtils.getHeliosStrVal (Helios, '', lSQL);
|
||
if (noveVC<>'') then
|
||
begin
|
||
lSQL:= 'IF NOT EXISTS(SELECT 1 FROM ' + tblPrikazVC + ' WHERE IDPrikaz=' + selIdVPr.ToString + ' AND VyrCislo=N' + noveVC.QuotedString + ')'
|
||
+ ' INSERT ' + tblPrikazVC + ' (IDPrikaz, VyrCislo, Popis, Mnozstvi) SELECT ' + selIdVPr.ToString + ', N' + noveVC.QuotedString
|
||
+ ', N' + edtCisloZakNaPL.Text.QuotedString + ', ' + edtRozpisKAnaPal.Value.ToString.Replace(',','.');
|
||
Helios.ExecSQL (lSQL);
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
chbPL.Checked:= (i>0);
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.btnUdrzbaClick (Sender: TObject);
|
||
var lSQL: string;
|
||
aktStr: integer;
|
||
begin
|
||
if (idPrPUdrzba>0) then
|
||
begin
|
||
if (edtHodUdrzba.ValueInt=0) and (edtUdrzba.Text.Trim='') then
|
||
Helios.Error (#1'Chyb<79> n<>kter<65> ze z<>kladn<64>ch parametr<74>, nem<65><6D>u pokra<72>ovat.'#1)
|
||
else
|
||
begin
|
||
lSQL:= 'DROP TABLE IF EXISTS #TabPrikazyProKapacPlan' + CRLF + 'CREATE TABLE #TabPrikazyProKapacPlan (ID INT NOT NULL, JeUdrzba BIT NOT NULL DEFAULT 0'
|
||
+ ', DatStart DATETIME, PocetHodin NUMERIC(19,6) NOT NULL DEFAULT 0, IDPrPostup INT)' + CRLF
|
||
+ 'INSERT #TabPrikazyProKapacPlan (ID, JeUdrzba, PocetHodin, IDPrPostup) SELECT 0, 1, ' + edtHodUdrzba.ValueInt.ToString + ', ' + idPrPUdrzba.ToString + CRLF;
|
||
lSQL:= lSQL + 'DECLARE @dt DATETIME, @casStart TINYINT' + CRLF;
|
||
if (rozpisAktDatum<>'') then
|
||
lSQL:= lSQL + 'SET @dt = CONVERT(datetime, N' + rozpisAktDatum.QuotedString + ', 104)' + CRLF;
|
||
if (rozpisAktCasOd>=0) then
|
||
lSQL:= lSQL + 'SET @casStart=' + rozpisAktCasOd.ToString + CRLF;
|
||
lSQL:= lSQL + 'IF OBJECT_ID(N''dbo.ep_Vyroba_AdvPlan_ZapisDavkyPrikazu'', N''P'') IS NOT NULL' + CRLF + ' EXEC dbo.ep_Vyroba_AdvPlan_ZapisDavkyPrikazu';
|
||
lSQL:= lSQL + ' @datumStart=@dt, @casOd=@casStart';
|
||
try
|
||
Helios.ExecSQL (lSQL);
|
||
except
|
||
end;
|
||
|
||
aktStr:= kalendarAktStroj;
|
||
grdKalendar.DataSource.DataSet.DisableControls;
|
||
NactiDataGridu;
|
||
if (grdKalendar.DataSource.DataSet.RecordCount>0) then
|
||
if (grdKalendar.DataSource.DataSet.Locate('colIDStroj', VarArrayOf([aktStr]), [])) then
|
||
grdKalendarCellClick (grdKalendar.Columns.Items [uUtils.GetFirstVisibleColIndex(grdKalendar)]);
|
||
grdKalendar.DataSource.DataSet.EnableControls;
|
||
end;
|
||
idPrPUdrzba:= 0;
|
||
selIdDavka:= 0;
|
||
selIdPlan:= 0;
|
||
selIdVPr:= 0;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.btnZrusitZakazkuClick (Sender: TObject);
|
||
var lSQL, lSQL2, errMsg: string;
|
||
idLoc, aktStr: integer;
|
||
jeUdrzba: boolean;
|
||
begin
|
||
lSQL:= 'SELECT 1 FROM ' + tblVPr + ' vp INNER JOIN ' + tblPrikazRada +' vpr ON (vpr.Rada=vp.Rada) WHERE vpr.nazev LIKE N''%<25>dr<64>b%'' AND vp.ID=' + selIdVPr.ToString;
|
||
jeUdrzba:= helUtils.sqlExistsTestGeneral(Helios, lSQL);
|
||
|
||
idLoc:= 0;
|
||
if (selIdDavka>0) then
|
||
idLoc:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT _VazbaPlgPlan FROM ' + tblAdvKPlanDavky_E + ' WHERE ID=' + selIdDavka.ToString);
|
||
|
||
|
||
if (jeUdrzba) then
|
||
begin
|
||
if (chbF.Checked) then
|
||
Helios.Error(#1'Fixovan<61> <20>dr<64>ba nelze zru<72>it'#1)
|
||
else
|
||
begin
|
||
if Helios.YesNo('Opravdu zru<72>it <20>dr<64>bu ?', false) then
|
||
begin
|
||
lSQL:= 'DECLARE @em NVARCHAR(500)=N''''' + CRLF + 'IF OBJECT_ID(N''dbo.ep_Vyroba_ZrusZakazkuPlanuDleFinPrikazu'', N''P'') IS NOT NULL'
|
||
+ ' EXEC dbo.ep_Vyroba_ZrusZakazkuPlanuDleFinPrikazu @idAdvKP=' + idAdVKP.ToString + ', @idVPrFin=' + selIdVPr.ToString + ', @idStroj=' + kalendarAktStroj.ToString
|
||
+ ', @jeUdrzba=1, @idSadaDavek=' + IfThen(idLoc=0, 'NULL', idLoc.ToString) + ', @errorMsg=@em OUT' + CRLF + 'SELECT @em AS ErrMsg';
|
||
try
|
||
with Helios.OpenSQL (lSQL) do
|
||
begin
|
||
First;
|
||
errMsg:= VarToStr(FieldByNameValues('ErrMsg'));
|
||
end;
|
||
// Helios.ExecSQL('DELETE FROM ' + tblPlan + ' WHERE ID=' + selIdPlan.ToString);
|
||
except on E:Exception do
|
||
errMsg:= 'CHYBA: ' + E.Message;
|
||
end;
|
||
end;
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
if (chbF.Checked) then
|
||
Helios.Error(#1'Fixovan<61> zak<61>zka nelze zru<72>it'#1)
|
||
else
|
||
begin
|
||
if not(TestPrikazuPredZrusenimZakazky(selIdVPr)) then
|
||
Helios.Error(#1'Zak<61>zka nelze zru<72>it, p<><70>kaz u<> byl pou<6F>it<69> (odveden materi<72>l/evidov<6F>na pr<70>ce...)'#1)
|
||
else
|
||
begin
|
||
if (edtVyrobekCislo.Text<>'') and (selIdVPr>0) and (idAdVKP>0) then
|
||
if Helios.YesNo('Opravdu zru<72>it zak<61>zku ?', false) then
|
||
begin
|
||
lSQL:= 'DECLARE @em NVARCHAR(500)=N''''' + CRLF + 'IF OBJECT_ID(N''dbo.ep_Vyroba_ZrusZakazkuPlanuDleFinPrikazu'', N''P'') IS NOT NULL'
|
||
+ ' EXEC dbo.ep_Vyroba_ZrusZakazkuPlanuDleFinPrikazu @idAdvKP=' + idAdVKP.ToString + ', @idVPrFin=' + selIdVPr.ToString
|
||
+ ', @idStroj=' + kalendarAktStroj.ToString + ', @idSadaDavek=' + IfThen(idLoc=0, 'NULL', idLoc.ToString) + ', @errorMsg=@em OUT' + CRLF + 'SELECT @em AS ErrMsg';
|
||
try
|
||
with Helios.OpenSQL (lSQL) do
|
||
begin
|
||
First;
|
||
errMsg:= VarToStr(FieldByNameValues('ErrMsg'));
|
||
end;
|
||
// Helios.ExecSQL('DELETE FROM ' + tblPlan + ' WHERE ID=' + selIdPlan.ToString);
|
||
except on E:Exception do
|
||
errMsg:= 'CHYBA: ' + E.Message;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
helUtils.ReseedTable (Helios, tblAdvKPlanDavky);
|
||
helUtils.ReseedTable (Helios, tblPrKVaz);
|
||
helUtils.ReseedTable (Helios, tblPrPost);
|
||
helUtils.ReseedTable (Helios, tblVPr);
|
||
helUtils.ReseedTable (Helios, tblPlan);
|
||
|
||
aktStr:= kalendarAktStroj;
|
||
NactiDataGridu;
|
||
if (grdKalendar.DataSource.DataSet.RecordCount>0) then
|
||
if (grdKalendar.DataSource.DataSet.Locate('colIDStroj', VarArrayOf([aktStr]), [])) then
|
||
grdKalendarCellClick (grdKalendar.Columns.Items[ uUtils.GetFirstVisibleColIndex (grdKalendar)]);
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.edtUdrzbaDblClick (Sender: TObject);
|
||
var f: TformZavady;
|
||
begin
|
||
f:= TformZavady.Create (nil);
|
||
try
|
||
f.Helios:= Helios;
|
||
f.kodModif:= kalendarKodStroj;
|
||
helUtils.waitStart (nil, 'Na<4E><61>t<EFBFBD>m data...');
|
||
f.ShowModal;
|
||
if (f.retVal=10) then
|
||
begin
|
||
idPrPUdrzba:= f.idPrP;
|
||
edtUdrzba.Text:= f.Nazev;
|
||
edtVyrobniZakazka.Text:= '';
|
||
edtVyrobaKs.Value:= 0;
|
||
edtVyrobaKA.Value:= 0;
|
||
edtVyrobaPal.Value:= 0;
|
||
edtKsZaHod.Value:= 0;
|
||
idKmenProPlan:= 0;
|
||
idZakModif:= 0;
|
||
lblOznaceni.Caption:= '';
|
||
edtMJZakazka.Text:= '';
|
||
if (edtHodUdrzba.CanFocus) then
|
||
edtHodUdrzba.SetFocus;
|
||
end;
|
||
finally
|
||
f.Free;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.edtVyrobniZakazkaDblClick (Sender: TObject);
|
||
var f: TformKmen;
|
||
lSQL, kodZakModif, operace: string;
|
||
idPostup: integer;
|
||
begin
|
||
idKmenProPlan:= 0;
|
||
f:= TformKmen.Create (nil);
|
||
try
|
||
f.Helios:= Helios;
|
||
f.filtrKodStroj:= kalendarKodStroj;
|
||
helUtils.waitStart (nil, 'Na<4E><61>t<EFBFBD>m data...');
|
||
f.ShowModal;
|
||
if (f.retVal=10) then
|
||
begin
|
||
edtUdrzba.Text:= '';
|
||
idPrPUdrzba:= 0;
|
||
edtHodUdrzba.Value:= 0;
|
||
|
||
|
||
idKmenProPlan:= f.idKmen;
|
||
with Helios.OpenSQL ('SELECT SkupZbo,RegCis,Nazev1,MJEvidence FROM ' + tblKZ + ' WHERE ID=' + idKmenProPlan.ToString) do
|
||
begin
|
||
edtVyrobniZakazka.Text:= VarToStr(FieldByNameValues('Nazev1')).Trim;
|
||
lblOznaceni.Caption:= VarToStr(FieldByNameValues('SkupZbo')).Trim + ' ' + VarToStr(FieldByNameValues('RegCis')).Trim;
|
||
edtMJZakazka.Text:= VarToStr(FieldByNameValues('MJEvidence'));
|
||
end;
|
||
|
||
idZakModif:= f.idZakModif;
|
||
kodZakModif:= helUtils.getHeliosStrVal (Helios, '', 'SELECT Kod FROM ' + tblZakazModif + ' WHERE ID=' + idZakModif.ToString);
|
||
ksZaHod:= 0;
|
||
idStroj:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT ID FROM ' + tblCStroju + ' WHERE Blokovano=0 AND Kod=N' + kodZakModif.QuotedString);
|
||
if (idStroj>0) then
|
||
ksZaHod:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT ISNULL(_KapacitaKsZaHod,0) AS KsZaHod FROM ' + tblCStrojuE + ' WHERE ID=' + idStroj.ToString);
|
||
|
||
operace:= '';
|
||
if (kalendarKodStroj.IndexOf('COKO-K')>=0) then
|
||
operace:= 'M<><4D>en<65>';
|
||
if (kalendarKodStroj.IndexOf('COKO-T')>=0) then
|
||
operace:= 'Pol<6F>v<EFBFBD>n<EFBFBD>';
|
||
|
||
idPostup:= 0;
|
||
if (operace<>'') then
|
||
begin
|
||
lSQL:= 'SELECT ID FROM ' + tblPostup + ' WHERE IDZakazModif=' + idZakModif.ToString + ' AND Dilec=' + idKmenProPlan.ToString
|
||
+ ' AND ZmenaDo IS NULL AND typ<2 AND nazev=N' + operace.QuotedString;
|
||
idPostup:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
|
||
end;
|
||
if (idPostup>0) then
|
||
ksZaHod:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT ISNULL(_RychlostOperKsHod,0) AS KsZaHod FROM ' + tblPostupE + ' WHERE ID=' + idPostup.ToString);
|
||
|
||
|
||
if (kalendarKodStroj.IndexOf('PRO1')>=0) or (kalendarKodStroj.IndexOf('PRO2')>=0) or (kalendarKodStroj.IndexOf('WJ')>=0)
|
||
or (kalendarKodStroj.IndexOf('EWA65')>=0)
|
||
then
|
||
if (helUtils.SQLColumnExists (Helios, tblZakazModifE, '_TypModifikace')) then
|
||
if (helUtils.getHeliosStrVal(Helios, '', 'SELECT ISNULL(_TypModifikace, N'''') AS Typ FROM ' + tblZakazModifE + ' WHERE ID=' + idZakModif.ToString)='PECENI') then
|
||
begin
|
||
end;
|
||
|
||
|
||
edtKsZaHod.ValueInt:= ksZaHod;
|
||
|
||
edtVyrobaKs.ValueInt:= 0;
|
||
edtVyrobaKA.ValueInt:= 0;
|
||
edtVyrobaPal.ValueInt:= 0;
|
||
|
||
if (edtVyrobaPal.CanFocus) then
|
||
edtVyrobaPal.SetFocus;
|
||
|
||
end;
|
||
finally
|
||
f.Free;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.edtZakazkaDblClick (Sender: TObject);
|
||
begin
|
||
grdRozpisDblClick (Sender);
|
||
{
|
||
if (edtZakazka.Text='') then
|
||
Helios.Error(#1'Vyberte zak<61>zku k zobrazen<65> p<>irazen<65>ch paletov<6F>ch list<73>'#1)
|
||
else
|
||
begin
|
||
|
||
end;
|
||
}
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.FormClose (Sender: TObject; var Action: TCloseAction);
|
||
begin
|
||
Helios.ExecSQL ('DROP TABLE IF EXISTS #TabPrikazyProKapacPlan');
|
||
|
||
Action:= TCloseAction.caFree;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.FormResize (Sender: TObject);
|
||
begin
|
||
grdKalendar.Columns.Items[ uUtils.FindColIndexByColName (grdKalendar, 'colStroj')].Width:= Trunc(grdKalendar.Width * 0.38);
|
||
grdKalendar.Columns.Items[ uUtils.FindColIndexByColName (grdKalendar, 'colNe')].Width:= Trunc(grdKalendar.Width * 0.078);
|
||
grdKalendar.Columns.Items[ uUtils.FindColIndexByColName (grdKalendar, 'colPo')].Width:= Trunc(grdKalendar.Width * 0.078);
|
||
grdKalendar.Columns.Items[ uUtils.FindColIndexByColName (grdKalendar, 'colUt')].Width:= Trunc(grdKalendar.Width * 0.078);
|
||
grdKalendar.Columns.Items[ uUtils.FindColIndexByColName (grdKalendar, 'colSt')].Width:= Trunc(grdKalendar.Width * 0.078);
|
||
grdKalendar.Columns.Items[ uUtils.FindColIndexByColName (grdKalendar, 'colCt')].Width:= Trunc(grdKalendar.Width * 0.078);
|
||
grdKalendar.Columns.Items[ uUtils.FindColIndexByColName (grdKalendar, 'colPa')].Width:= Trunc(grdKalendar.Width * 0.078);
|
||
grdKalendar.Columns.Items[ uUtils.FindColIndexByColName (grdKalendar, 'colSo')].Width:= Trunc(grdKalendar.Width * 0.078);
|
||
|
||
grdRozpis.Columns.Items[ uUtils.FindColIndexByColName (grdRozpis, 'colDatum')].Width:= Trunc(grdRozpis.Width * 0.12);
|
||
grdRozpis.Columns.Items[ uUtils.FindColIndexByColName (grdRozpis, 'colHodOd')].Width:= Trunc(grdRozpis.Width * 0.037);
|
||
grdRozpis.Columns.Items[ uUtils.FindColIndexByColName (grdRozpis, 'colHodDo')].Width:= Trunc(grdRozpis.Width * 0.037);
|
||
grdRozpis.Columns.Items[ uUtils.FindColIndexByColName (grdRozpis, 'colSkupZbo')].Width:= Trunc(grdRozpis.Width * 0.05);
|
||
grdRozpis.Columns.Items[ uUtils.FindColIndexByColName (grdRozpis, 'colRegCis')].Width:= Trunc(grdRozpis.Width * 0.12);
|
||
grdRozpis.Columns.Items[ uUtils.FindColIndexByColName (grdRozpis, 'colNazev')].Width:= Trunc(grdRozpis.Width * 0.30);
|
||
grdRozpis.Columns.Items[ uUtils.FindColIndexByColName (grdRozpis, 'colPrikaz')].Width:= Trunc(grdRozpis.Width * 0.11);
|
||
grdRozpis.Columns.Items[ uUtils.FindColIndexByColName (grdRozpis, 'colMnoz')].Width:= Trunc(grdRozpis.Width * 0.07);
|
||
grdRozpis.Columns.Items[ uUtils.FindColIndexByColName (grdRozpis, 'colMnozHotovo')].Width:= Trunc(grdRozpis.Width * 0.08);
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.FormShow (Sender: TObject);
|
||
var i, i2, gWidth: integer;
|
||
d, h: string;
|
||
pomHandle: THandle;
|
||
begin
|
||
// vytvor data modul
|
||
if not(Assigned(datMod2.dm2)) then
|
||
datMod2.dm2:= Tdm2.Create(self);
|
||
|
||
|
||
|
||
|
||
pomHandle:= THandle(Helios.MainApplicationHandle);
|
||
if (pomHandle<>Application.Handle) then
|
||
Application.Handle:= pomHandle;
|
||
|
||
pomHandle:= THandle(Helios.MainApplicationIconHandle);
|
||
if (pomHandle<>Application.Icon.Handle) then
|
||
Application.Icon.Handle:= pomHandle;
|
||
|
||
with Application.DefaultFont do
|
||
begin
|
||
Name:= Helios.Font;
|
||
Height:= Helios.FontHeight;
|
||
Charset:= Helios.Charset;
|
||
|
||
Screen.MenuFont.Charset:= Charset;
|
||
Screen.MenuFont.Name:= Name;
|
||
Screen.MenuFont.Height:= Height;
|
||
end;
|
||
|
||
|
||
SetWindowLong(btnKontrolaVyrobene.Handle, GWL_STYLE, GetWindowLong((btnKontrolaVyrobene as TWinControl).Handle, GWL_STYLE) or BS_MULTILINE);
|
||
|
||
|
||
|
||
idAdvKP:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT ID FROM ' + tblAdvKPlan + ' WHERE Kod=N''99''');
|
||
datMod2.idAdvKPl:= idAdvKP;
|
||
|
||
datMod2.bidPalety:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT DPBID FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_Vyroba_Palety''');
|
||
|
||
|
||
|
||
if not(dm2.vtKalendar.Active) then
|
||
dm2.vtKalendar.Open;
|
||
|
||
if not(dm2.vtRozpis.Active) then
|
||
dm2.vtRozpis.Open;
|
||
|
||
if not(dm2.vtKmen.Active) then
|
||
dm2.vtKmen.Open;
|
||
|
||
if not(dm2.vtZavady.Active) then
|
||
dm2.vtZavady.Open;
|
||
|
||
|
||
|
||
// uloz koeficienty pro sirku sloupcu gridu
|
||
grdKalendar.Columns.Items[ uUtils.FindColIndexByColName (grdKalendar, 'colIDStroj') ].Visible:= false;
|
||
grdKalendar.Columns.Items[ uUtils.FindColIndexByColName (grdKalendar, 'colKodStroj') ].Visible:= false;
|
||
SetLength (g1ColWidthKoefs, uUtils.GetVisibleColsCount (grdKalendar) );
|
||
gWidth:= uUtils.ColWidthSum (grdKalendar, true);
|
||
i2:= 0;
|
||
for i:=0 to grdKalendar.Columns.Count-1 do
|
||
begin
|
||
if (grdKalendar.Columns.Items[i].Visible) then
|
||
begin
|
||
g1ColWidthKoefs[i2].fieldName:= grdKalendar.Columns.Items[i].FieldName;
|
||
g1ColWidthKoefs[i2].widthKoef:= grdKalendar.Columns.Items[i].Width / gWidth;
|
||
Inc (i2);
|
||
end;
|
||
end;
|
||
|
||
grdRozpis.Columns.Items[ uUtils.FindColIndexByColName (grdRozpis, 'colID') ].Visible:= false;
|
||
grdRozpis.Columns.Items[ uUtils.FindColIndexByColName (grdRozpis, 'colIdPrikaz') ].Visible:= false;
|
||
grdRozpis.Columns.Items[ uUtils.FindColIndexByColName (grdRozpis, 'colIdKmen') ].Visible:= false;
|
||
grdRozpis.Columns.Items[ uUtils.FindColIndexByColName (grdRozpis, 'colJeUdrzba') ].Visible:= false;
|
||
SetLength (g2ColWidthKoefs, uUtils.GetVisibleColsCount (grdRozpis) );
|
||
gWidth:= uUtils.ColWidthSum (grdRozpis, true);
|
||
i2:= 0;
|
||
for i:=0 to grdRozpis.Columns.Count-1 do
|
||
begin
|
||
if (grdRozpis.Columns.Items[i].Visible) then
|
||
begin
|
||
g2ColWidthKoefs[i2].fieldName:= grdRozpis.Columns.Items[i].FieldName;
|
||
g2ColWidthKoefs[i2].widthKoef:= grdRozpis.Columns.Items[i].Width / gWidth;
|
||
Inc (i2);
|
||
end;
|
||
end;
|
||
|
||
// ResizeGrids; // resize gridy podle koeficientu
|
||
|
||
|
||
sgCas.Alignment:= taCenter;
|
||
|
||
sgCas.ColAlignments[0]:= taCenter;
|
||
sgCas.Cells[0,0]:= 'Rok';
|
||
sgCas.Cells[0,1]:= YearOf(Now).ToString;
|
||
|
||
sgCas.ColAlignments[1]:= taCenter;
|
||
sgCas.Cells[1,0]:= 'T<>den';
|
||
sgCas.Cells[1,1]:= WeekOfTheYear(Now).ToString;
|
||
|
||
sgCas.ColAlignments[2]:= taCenter;
|
||
sgCas.Cells[2,0]:= 'Od';
|
||
sgCas.Cells[2,1]:= FormatDateTime('dd.mm.yyyy', IncDay(StartOfTheWeek(Now), -1));
|
||
|
||
|
||
sgCas.ColAlignments[3]:= taCenter;
|
||
sgCas.Cells[3,0]:= 'Do';
|
||
sgCas.Cells[3,1]:= FormatDateTime('dd.mm.yyyy', IncDay(EndOfTheWeek(Now), -1));
|
||
|
||
|
||
selIdVPr:= 0;
|
||
NactiDataGridu;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.NactiDataGridu;
|
||
var d: string;
|
||
begin
|
||
NulujUdajeVyrobku;
|
||
|
||
if (Assigned(datMod2.dm2)) then
|
||
begin
|
||
dm2.Helios:= Helios;
|
||
|
||
if (dm2.vtKalendar<>nil) then
|
||
if (dm2.vtKalendar.Active) then
|
||
dm2.vtKalendar.Open;
|
||
|
||
Screen.Cursor:= crHourGlass;
|
||
grdKalendar.DataSource.DataSet.DisableControls;
|
||
grdKalendar.LockDrawing;
|
||
dm2.NactiKalendar (self, 0); // idStroj
|
||
grdKalendar.DataSource.DataSet.First;
|
||
grdKalendar.UnlockDrawing;
|
||
grdKalendar.DataSource.DataSet.EnableControls;
|
||
|
||
grdKalendarCellClick (grdKalendar.Columns.Items[ uUtils.GetFirstVisibleColIndex (grdKalendar)]);
|
||
|
||
dm2.GenerujRozpis (0);
|
||
if (dm2.vtRozpis<>nil) then
|
||
if (dm2.vtRozpis.Active) then
|
||
dm2.vtRozpis.Open;
|
||
grdRozpis.LockDrawing;
|
||
dm2.NactiRozpis (self);
|
||
d:= FormatDateTime('dd.mm.yyyy', Now);
|
||
// h:= FormatDateTime('hh', Now);
|
||
grdRozpis.DataSource.DataSet.Locate ('colDatum;colHodOd', VarArrayOf([d, 0]), [loCaseInsensitive]);
|
||
|
||
grdRozpis.UnlockDrawing;
|
||
Screen.Cursor:= crDefault;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.grdKalendarCellClick (Column: TColumn);
|
||
begin
|
||
kalendarAktStroj:= dm2.vtKalendar.FieldByName('colIDStroj').AsInteger;
|
||
kalendarKodStroj:= dm2.vtKalendar.FieldByName('colKodStroj').AsString;
|
||
|
||
if (dm2.vtRozpis.Active) then
|
||
begin
|
||
Screen.Cursor:= crHourGlass;
|
||
grdRozpis.LockDrawing;
|
||
|
||
dm2.VymazRozpis (self);
|
||
dm2.NactiDavkyPlanu (self, kalendarAktStroj);
|
||
|
||
grdRozpis.UnlockDrawing;
|
||
Screen.Cursor:= crDefault;
|
||
end;
|
||
|
||
|
||
selIdVPr:= 0;
|
||
selIdDavka:= 0;
|
||
selIdPlan:= 0;
|
||
idPrPUdrzba:= 0;
|
||
|
||
// polozky na detailu rozpisu
|
||
edtZakazka.Text:= '';
|
||
edtVyrobekCislo.Text:= '';
|
||
edtVyrobekNazev.Text:= '';
|
||
lblRozpisCelkemKs.Caption:= '';
|
||
lblRozpisPalet.Caption:= '';
|
||
lblRozpisMJ.Caption:= '';
|
||
edtCisloZakNaPL.Text:= '';
|
||
chbPL.Checked:= false;
|
||
chbT.Checked:= false;
|
||
chbF.Checked:= false;
|
||
chbU.Checked:= false;
|
||
|
||
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.grdKalendarDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
|
||
begin
|
||
if (gdSelected in State) then
|
||
grdKalendar.Canvas.Font.Color:= clBlack;
|
||
|
||
if (Assigned(Column.Field) and not(SameText(Column.FieldName, 'colStroj'))) then
|
||
begin
|
||
if (Column.Field.AsInteger=0) then
|
||
grdKalendar.Canvas.Brush.Color:= $00C6FECF; // RGB CFFEC6 - svetle zelena
|
||
|
||
if (Column.Field.AsInteger>0) and (Column.Field.AsInteger<=23) then
|
||
grdKalendar.Canvas.Brush.Color:= $0085FCF4; // RGB F4FC85 - svetle zluta
|
||
|
||
if (Column.Field.AsInteger=24) then
|
||
grdKalendar.Canvas.Brush.Color:= $00BEC2FD; // RGB FDC2BE - divna cervena
|
||
end;
|
||
|
||
grdKalendar.DefaultDrawColumnCell (Rect, DataCol, Column, State);
|
||
end;
|
||
|
||
|
||
|
||
procedure TformPlan.grdKalendarDrawColumnTitle (Sender: TObject; ACanvas: TCanvas; ARect: TRect;
|
||
AColumn: TColumn; var ASortMarker: TJvDBGridBitmap; IsDown: Boolean; var Offset: Integer;
|
||
var DefaultDrawText, DefaultDrawSortMarker: Boolean);
|
||
begin
|
||
ACanvas.Brush.Color:= $00B8C4C8; // RGB C8C4B8 - seda
|
||
DefaultDrawText:= true;
|
||
DefaultDrawSortMarker:= true;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.grdKalendarTitleClick (Column: TColumn);
|
||
begin
|
||
Helios.Info (Column.FieldName + ' >> koef. ' + (Column.Width/grdKalendar.Width).ToString );
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.grdRozpisCellClick (Column: TColumn);
|
||
var lSQL, mjEvid, radaPrikaz, podm: string;
|
||
idKZ, aStrojBak, jeUdrzba, idLoc: integer;
|
||
mnozKs, ksNaPal: Extended;
|
||
oVar: OleVariant;
|
||
arrID: TArray<integer>;
|
||
begin
|
||
rozpisAktCasOd:= dm2.vtRozpis.FieldByName('colHodOd').AsInteger;
|
||
nHodPlanZacatek.ValueInt:= rozpisAktCasOd;
|
||
rozpisAktDatum:= dm2.vtRozpis.FieldByName('colDatum').AsString;
|
||
|
||
if (idAdVKP=0) and (datMod2.idAdvKPl>0) then
|
||
idAdVKP:= datMod2.idAdvKPl;
|
||
|
||
jeUdrzba:= dm2.vtRozpis.FieldByName('colJeUdrzba').AsInteger;
|
||
|
||
selIdPlan:= dm2.vtRozpis.FieldByName('colIDPlan').AsInteger;
|
||
selIdVPr:= dm2.vtRozpis.FieldByName('colIdPrikaz').AsInteger;
|
||
selIdDavka:= dm2.vtRozpis.FieldByName('colID').AsInteger;
|
||
idLoc:= 0;
|
||
if (selIdDavka>0) then
|
||
idLoc:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT _VazbaPlgPlan FROM ' + tblAdvKPlanDavky_E + ' WHERE ID=' + selIdDavka.ToString);
|
||
|
||
|
||
btnKontrolaVyrobene.Enabled:= (jeUdrzba=0);
|
||
btnRezervacePL.Enabled:= btnKontrolaVyrobene.Enabled;
|
||
edtCisloZakNaPL.Enabled:= btnKontrolaVyrobene.Enabled;
|
||
btnZrusitZakazku.Caption:= 'Zru<72>it zak<61>zku';
|
||
btnFixovatZakazku.Caption:= 'Fixovat zak<61>zku';
|
||
|
||
if (jeUdrzba=0) then
|
||
begin
|
||
chbPL.Checked:= helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 FROM ' + tblPrikazVC + ' WHERE IDPrikaz=' + selIdVPr.ToString);
|
||
lSQL:= 'SELECT 1 FROM ' + tblAdvKPlanDavky + ' WHERE Zamek=1 AND IDAdvKapacPlan=' + idAdVKP.ToString + ' AND IDPrikaz=' + selIdVPr.ToString;
|
||
if (idLoc>0) then
|
||
lSQL:= lSQL + ' AND ID IN (SELECT ID FROM ' + tblAdvKPlanDavky_E + ' WHERE _VazbaPlgPlan=' + idLoc.ToString + ')';
|
||
chbF.Checked:= helUtils.sqlExistsTestGeneral (Helios, lSQL);
|
||
|
||
btnKontrolaVyrobene.Enabled:= (selIdVPr>0);
|
||
btnRezervacePL.Enabled:= btnKontrolaVyrobene.Enabled;
|
||
edtCisloZakNaPL.Enabled:= btnKontrolaVyrobene.Enabled;
|
||
btnZrusitZakazku.Enabled:= btnKontrolaVyrobene.Enabled;
|
||
btnFixovatZakazku.Enabled:= btnKontrolaVyrobene.Enabled;
|
||
edtZakazka.Enabled:= btnKontrolaVyrobene.Enabled;
|
||
|
||
if (chbPL.Checked) then
|
||
begin
|
||
btnRezervacePL.Enabled:= false;
|
||
btnRezervacePL.Enabled:= false;
|
||
end;
|
||
|
||
end;
|
||
|
||
|
||
if (jeUdrzba=1) then
|
||
begin
|
||
edtZakazka.Enabled:= false;
|
||
btnZrusitZakazku.Enabled:= true;
|
||
btnFixovatZakazku.Enabled:= btnZrusitZakazku.Enabled;
|
||
|
||
btnZrusitZakazku.Caption:= 'Zru<72>it <20>dr<64>bu';
|
||
btnFixovatZakazku.Caption:= 'Fixovat <20>dr<64>bu';
|
||
|
||
edtVyrobekCislo.Text:= '';
|
||
edtVyrobekNazev.Text:= dm2.vtRozpis.FieldByName('colNazev').AsString;
|
||
// edtZakazka.Text:= dm2.vtRozpis.FieldByName('colPrikaz').AsString;
|
||
edtZakazka.Text:= '';
|
||
lblRozpisCelkemKs.Caption:= '';
|
||
lblRozpisPalet.Caption:= '';
|
||
edtRozpisPalet1.Value:= 0;
|
||
edtRozpisKsVKA.Value:= 0;
|
||
edtRozpisKAnaPal.Value:= 0;
|
||
chbPL.Checked:= false;
|
||
chbT.Checked:= false;
|
||
chbU.Checked:= false;
|
||
lSQL:= 'SELECT 1 FROM ' + tblAdvKPlanDavky + ' WHERE Zamek=1 AND IDAdvKapacPlan=' + idAdVKP.ToString + ' AND IDPrikaz=' + selIdVPr.ToString;
|
||
if (idLoc>0) then
|
||
lSQL:= lSQL + ' AND ID IN (SELECT ID FROM ' + tblAdvKPlanDavky_E + ' WHERE _VazbaPlgPlan=' + idLoc.ToString + ')';
|
||
chbF.Checked:= helUtils.sqlExistsTestGeneral (Helios, lSQL);
|
||
end
|
||
else
|
||
begin // jeUdrzba=0
|
||
idKZ:= dm2.vtRozpis.FieldByName('colIdKmen').AsInteger;
|
||
|
||
mjEvid:= helUtils.getHeliosStrVal (Helios, '', 'SELECT MJEvidence FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString);
|
||
edtVyrobekCislo.Text:= dm2.vtRozpis.FieldByName('colSkupZbo').AsString + ' ' + dm2.vtRozpis.FieldByName('colRegCis').AsString;
|
||
edtVyrobekNazev.Text:= dm2.vtRozpis.FieldByName('colNazev').AsString;
|
||
|
||
edtRozpisKsVKA.Value:= 0;
|
||
edtRozpisKAnaPal.Value:= 0;
|
||
|
||
if (System.SysUtils.SameText(mjEvid, 'ka')) then
|
||
begin
|
||
edtRozpisKsVKA.Value:= dm2.VratPrepocetMJ (idKZ, 'KA', 'ks', 'PocetOdvozene');
|
||
edtRozpisKAnaPal.Value:= dm2.VratPrepocetMJ (idKZ, 'KA', 'pal', 'PocetHlavni');
|
||
end;
|
||
|
||
edtZakazka.Text:= dm2.vtRozpis.FieldByName('colPrikaz').AsString;
|
||
selIdVPr:= dm2.vtRozpis.FieldByName('colIdPrikaz').AsInteger;
|
||
radaPrikaz:= helUtils.getHeliosStrVal (Helios, '', 'SELECT RadaPrikaz FROM ' + tblPrikaz + ' WHERE ID=' + selIdVPr.ToString);
|
||
|
||
lSQL:= 'SELECT SUM(de._MnozstviKs) FROM ' + tblAdvKPlanDavky + ' d INNER JOIN ' + tblAdvKPlanDavky_E + ' de ON (de.ID=d.ID) WHERE d.IDPrikaz=' + selIdVPr.ToString
|
||
+ ' AND d.IdAdvKapacPlan=' + idAdVKP.ToString;
|
||
mnozKs:= helUtils.getHeliosFloatVal (Helios, 0, lSQL);
|
||
lblRozpisCelkemKs.Caption:= mnozKs.ToString;
|
||
|
||
|
||
edtRozpisPalet1.Value:= 0;
|
||
lblRozpisPalet.Caption:= '';
|
||
ksNaPal:= edtRozpisKsVKA.Value * edtRozpisKAnaPal.Value;
|
||
if (ksNaPal<>0) then
|
||
begin
|
||
lblRozpisPalet.Caption:= (mnozKs/ksNaPal).ToString;
|
||
edtRozpisPalet1.Value:= (mnozKs/ksNaPal);
|
||
end;
|
||
|
||
|
||
chbT.Checked:= false;
|
||
chbU.Checked:= false;
|
||
chbPL.Checked:= helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 FROM ' + tblPrikazVC + ' WHERE IDPrikaz=' + selIdVPr.ToString);
|
||
// chbF.Checked:= helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 FROM ' + tblAdvKPlanDavky + ' WHERE Zamek=1 AND IDAdvKapacPlan=' + idAdVKP.ToString + ' AND IDPrikaz=' + selIdVPr.ToString);
|
||
lSQL:= 'SELECT 1 FROM ' + tblAdvKPlanDavky + ' WHERE Zamek=1 AND IDAdvKapacPlan=' + idAdVKP.ToString + ' AND IDPrikaz=' + selIdVPr.ToString;
|
||
if (idLoc>0) then
|
||
lSQL:= lSQL + ' AND ID IN (SELECT ID FROM ' + tblAdvKPlanDavky_E + ' WHERE _VazbaPlgPlan=' + idLoc.ToString + ')';
|
||
chbF.Checked:= helUtils.sqlExistsTestGeneral (Helios, lSQL);
|
||
|
||
|
||
if (pressedAlt) and (pressedShift) then
|
||
begin
|
||
aStrojBak:= kalendarAktStroj;
|
||
podm:= 'TabPrikaz.StavPrikazu=30 AND TabPrikaz.IDZakazModif=(SELECT ID FROM ' + tblZakazModif + ' WHERE Kod=N' + kalendarKodStroj.QuotedString + ')';
|
||
podm:= podm + ' AND TabPrikaz.IDTabKmen NOT IN (SELECT ID FROM ' + tblKZ + ' WHERE SkupZbo=N''701'' OR Sluzba=1)';
|
||
podm:= podm + ' AND TabPrikaz.ID NOT IN (SELECT IDPrikaz FROM ' + tblAdvKPlanDavky + ' WHERE IDStroje=' + kalendarAktStroj.ToString + ')';
|
||
podm:= podm + ' AND TabPrikaz.Rada NOT IN (SELECT Rada FROM ' + tblPrikazRada + ' WHERE nazev LIKE N''%<25>dr<64>b%'')';
|
||
if (Helios.Prenos (bidVyrPrik, 'TabPrikaz.ID', oVar, podm, 'Vyberte p<><70>kaz', false)) then
|
||
begin
|
||
selIdVPr:= oVar;
|
||
SetLength(arrID, 1);
|
||
arrID[0]:= selIdVPr;
|
||
RozpadPrikazuNaDavkyKP (rozpisAktDatum, rozpisAktCasOd, arrID);
|
||
|
||
NactiDataGridu;
|
||
grdKalendar.DataSource.DataSet.Locate('colIDStroj', VarArrayOf ([aStrojBak]), []);
|
||
|
||
Screen.Cursor:= crHourGlass;
|
||
grdRozpis.LockDrawing;
|
||
|
||
dm2.VymazRozpis (self);
|
||
kalendarAktStroj:= aStrojBak;
|
||
dm2.NactiDavkyPlanu (self, kalendarAktStroj);
|
||
|
||
grdRozpis.UnlockDrawing;
|
||
Screen.Cursor:= crDefault;
|
||
end;
|
||
end;
|
||
end; // jeUdrzba=0
|
||
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.grdRozpisDblClick (Sender: TObject);
|
||
var f: TformPlanPaletListy;
|
||
begin
|
||
edtVyrobekCislo.Text:= edtVyrobekCislo.Text.Trim;
|
||
if (edtVyrobekCislo.Text<>'') then
|
||
begin
|
||
f:= TformPlanPaletListy.Create(self);
|
||
try
|
||
f.Helios:= Helios;
|
||
f.cisloZbo:= edtVyrobekCislo.Text;
|
||
f.cisloPrikazu:= edtZakazka.Text;
|
||
f.nazev:= edtVyrobekNazev.Text;
|
||
f.idPrikaz:= grdRozpis.DataSource.DataSet.FieldByName('colIDPrikaz').AsInteger;
|
||
f.ksVKA:= edtRozpisKsVKA.ValueInt;
|
||
f.KAnaPal:= edtRozpisKAnaPal.ValueInt;
|
||
f.ShowModal;
|
||
finally
|
||
FreeAndNil (f);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.grdRozpisDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
|
||
begin
|
||
if (not(gdSelected in State)) then
|
||
TJvDBGrid(Sender).Canvas.Brush.Color:= $00E0E4E5; // RGB E5E4E0
|
||
|
||
if (Column.FieldName='colMnozHotovo') then
|
||
begin
|
||
if (gdSelected in State) then
|
||
TJvDBGrid(Sender).Canvas.Font.Color:= clBlack;
|
||
TJvDBGrid(Sender).Canvas.Brush.Color:= $00C7FCF9; // RGB F9FCC7
|
||
end;
|
||
|
||
TJvDBGrid(Sender).DefaultDrawColumnCell (Rect, DataCol, Column, State);
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.grdRozpisMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||
begin
|
||
pressedShift:= (Shift * [ssShift, ssAlt, ssCtrl] = [ssShift]);
|
||
pressedAlt:= (Shift * [ssShift, ssAlt, ssCtrl] = [ssAlt]);
|
||
if (Shift * [ssShift, ssAlt, ssCtrl] = [ssShift] + [ssAlt]) then
|
||
begin
|
||
pressedShift:= true;
|
||
pressedAlt:= true;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.grdRozpisTitleClick (Column: TColumn);
|
||
begin
|
||
Helios.Info (Column.FieldName + ' >> koef. ' + (Column.Width/grdRozpis.Width).ToString );
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.sgCasDblClick (Sender: TObject);
|
||
var f: TformVyberTydne;
|
||
begin
|
||
if (sgCas.Col=1) and (sgCas.Row=1) then
|
||
begin
|
||
f:= TformVyberTydne.Create (nil);
|
||
try
|
||
if (sgCas.Cells[0,1]<>'') then
|
||
f.rok:= sgCas.Cells[0,1].ToInteger;
|
||
if (sgCas.Cells[1,1]<>'') then
|
||
f.tyden:= sgCas.Cells[1,1].ToInteger;
|
||
f.retVal:= 0;
|
||
f.ShowModal;
|
||
if (f.retVal=10) then
|
||
begin
|
||
sgCas.Cells[0,1]:= f.rok.ToString;
|
||
sgCas.Cells[1,1]:= f.tyden.ToString;
|
||
sgCas.Cells[2,1]:= f.datOd;
|
||
sgCas.Cells[3,1]:= f.datDo;
|
||
sgCas.Invalidate;
|
||
NactiDataGridu;
|
||
end;
|
||
finally
|
||
f.Free;
|
||
end;
|
||
end;
|
||
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.sgCasDrawCell (Sender: TObject; ACol, ARow: LongInt; Rect: TRect; State: TGridDrawState);
|
||
var mamBarvu: boolean;
|
||
s: string;
|
||
TextFormat: TTextFormatFlags;
|
||
tW, tH, x, y: Integer;
|
||
begin
|
||
mamBarvu:= false;
|
||
with Sender as TJvStringGrid do
|
||
begin
|
||
s:= Cells[ACol, ARow];
|
||
tW:= Canvas.TextWidth (s);
|
||
tH:= Canvas.TextHeight (s);
|
||
x:= Rect.Left + (Rect.Width - tW) div 2;
|
||
y:= Rect.Top + (Rect.Height - tH) div 2;
|
||
|
||
Canvas.Brush.Color := Color; // Set to grid background color
|
||
Canvas.FillRect(Rect);
|
||
|
||
if (ARow=0) then
|
||
begin
|
||
Canvas.Brush.Color:= $00B8C4C8; // Set your desired color - RGB C8C4B8 - seda
|
||
mamBarvu:= true;
|
||
end
|
||
else
|
||
if (ACol=1) then
|
||
begin
|
||
Canvas.Brush.Color:= $C6FECF; // Set your desired color here
|
||
mamBarvu:= true;
|
||
end
|
||
else
|
||
begin
|
||
Canvas.Brush.Color:= $E5E4DF;
|
||
mamBarvu:= true;
|
||
end;
|
||
|
||
if (mamBarvu) then
|
||
begin
|
||
Canvas.FillRect(Rect); // Fill the cell background (clear cell)
|
||
Canvas.TextOut(x, y, s); // Draw the cell text
|
||
end;
|
||
|
||
DefaultDrawCell (ACol, ARow, Rect, State);
|
||
// Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, Cells[ACol, ARow]);
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.sgCasSelectCell (Sender: TObject; ACol, ARow: LongInt; var CanSelect: Boolean);
|
||
begin
|
||
CanSelect:= ((ACol=1) and (ARow=1));
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformPlan.FormDestroy (Sender: TObject);
|
||
begin
|
||
if (datMod2.dm2<>nil) then
|
||
FreeAndNil (datMod2.dm2);
|
||
end;
|
||
|
||
|
||
end.
|