1657 lines
50 KiB
ObjectPascal
1657 lines
50 KiB
ObjectPascal
unit frmPekarna;
|
|
|
|
interface
|
|
|
|
uses
|
|
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
|
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Data.DB, Vcl.Grids, Vcl.DBGrids, MemDS,
|
|
Vcl.ComCtrls, Vcl.ControlList, Vcl.StdCtrls, Vcl.Mask,
|
|
ddPlugin_TLB, RzDTP, Vcl.NumberBox, JvExDBGrids, JvDBGrid;
|
|
|
|
const
|
|
CRLF = #13#10;
|
|
tblVyrPozn = '[dbo].[_TabVyroba_PoznamkyVyrobnihoDne]';
|
|
tblCCP1 = '[dbo].[_TabVyroba_KontrolyCCP1]'; // kriticky kontrolni bod
|
|
tblVzorky = '[dbo].[_TabVyroba_Vzorky]';
|
|
tblVzorkyArchiv = '[dbo].[_TabVyroba_VzorkyArchiv]';
|
|
tblOdpadPek = '[dbo].[_TabVyroba_OdpadPekarna]';
|
|
tblCinnostStr = '[dbo].[_TabVyroba_StrojCinnost]';
|
|
tblObjednavky = '[dbo].[_TabVyroba_Objednavky]';
|
|
tblObjednavkyPol = '[dbo].[_TabVyroba_Objednavky_Pol]';
|
|
stredPekarna = 211;
|
|
skladMat = 311;
|
|
skladMouka = 211;
|
|
|
|
type
|
|
TformPekarna = class(TForm)
|
|
GridPanel1: TGridPanel;
|
|
grdPlanDnes: TJvDBGrid;
|
|
GridPanel2: TGridPanel;
|
|
sgInfo: TStringGrid;
|
|
infoTimer: TTimer;
|
|
sgCas: TStringGrid;
|
|
grdStroje: TJvDBGrid;
|
|
Label1: TLabel;
|
|
pgCtrlPlan: TPageControl;
|
|
shPlanDnes: TTabSheet;
|
|
GridPanel3: TGridPanel;
|
|
btnVyrobniDenik: TButton;
|
|
btnObjednavkaMat: TButton;
|
|
btnPolotovar: TButton;
|
|
btnZadaniMimoPlan: TButton;
|
|
btnPrijemNestandard: TButton;
|
|
ledtVyrobniDen: TRzDateTimePicker;
|
|
shPlanZitra: TTabSheet;
|
|
GridPanel5: TGridPanel;
|
|
btnSpravaVzorku: TButton;
|
|
btnMicharna: TButton;
|
|
btnNahledTisky: TButton;
|
|
btnAktualniSarze: TButton;
|
|
shRozpracovanePL: TTabSheet;
|
|
grdPlanZitra: TDBGrid;
|
|
GridPanel6: TGridPanel;
|
|
memVyrobniPoznamka: TMemo;
|
|
GridPanel4: TGridPanel;
|
|
GridPanel7: TGridPanel;
|
|
GridPanel8: TGridPanel;
|
|
GridPanel9: TGridPanel;
|
|
GridPanel10: TGridPanel;
|
|
edtVybranyStroj: TLabeledEdit;
|
|
edtMistr: TLabeledEdit;
|
|
btnKontrolaPeceni: TButton;
|
|
btnNovyVzorek: TButton;
|
|
btnZahajeniVyrobyPalety: TButton;
|
|
Label2: TLabel;
|
|
edtAktVyrobek: TEdit;
|
|
btnUkonceniVyrobyPalety: TButton;
|
|
GridPanel11: TGridPanel;
|
|
Label3: TLabel;
|
|
Label4: TLabel;
|
|
GridPanel12: TGridPanel;
|
|
btnOdpadOprava: TButton;
|
|
Label5: TLabel;
|
|
Label6: TLabel;
|
|
Label7: TLabel;
|
|
Label8: TLabel;
|
|
Label9: TLabel;
|
|
edtOdpadStroj: TEdit;
|
|
edtOdpadMokry: TNumberBox;
|
|
edtOdpadSuchy: TNumberBox;
|
|
edtOdpadPoznamka: TEdit;
|
|
edtOdpadSmena: TEdit;
|
|
GridPanel13: TGridPanel;
|
|
GridPanel14: TGridPanel;
|
|
Label10: TLabel;
|
|
Label11: TLabel;
|
|
timerPrehled: TTimer;
|
|
grdRozpracovane: TJvDBGrid;
|
|
GridPanel15: TGridPanel;
|
|
Label12: TLabel;
|
|
GridPanel16: TGridPanel;
|
|
edtVyraditPaletu: TEdit;
|
|
btnVyraditPaletuZVyroby: TButton;
|
|
edtNazevRozpracVyrobku: TEdit;
|
|
edtRozpracZakazka: TEdit;
|
|
procedure FormResize(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
procedure infoTimerTimer(Sender: TObject);
|
|
procedure sgInfoDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
|
|
procedure sgCasDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
procedure btnPrijemNestandardClick(Sender: TObject);
|
|
procedure grdStrojeCellClick(Column: TColumn);
|
|
procedure memVyrobniPoznamkaExit(Sender: TObject);
|
|
procedure ledtVyrobniDenChange(Sender: TObject);
|
|
procedure edtMistrClick(Sender: TObject);
|
|
procedure btnKontrolaPeceniClick(Sender: TObject);
|
|
procedure btnSpravaVzorkuClick(Sender: TObject);
|
|
procedure btnNovyVzorekClick(Sender: TObject);
|
|
procedure btnZahajeniVyrobyPaletyClick(Sender: TObject);
|
|
procedure btnVyrobniDenikClick(Sender: TObject);
|
|
procedure grdStrojeMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
procedure btnZadaniMimoPlanClick(Sender: TObject);
|
|
procedure btnAktualniSarzeClick(Sender: TObject);
|
|
procedure btnNahledTiskyClick(Sender: TObject);
|
|
procedure grdStrojeDblClick(Sender: TObject);
|
|
procedure btnObjednavkaMatClick(Sender: TObject);
|
|
procedure timerPrehledTimer(Sender: TObject);
|
|
procedure edtOdpadMokryExit (Sender: TObject);
|
|
procedure edtOdpadSuchyExit (Sender: TObject);
|
|
procedure edtOdpadPoznamkaExit (Sender: TObject);
|
|
procedure shRozpracovanePLShow (Sender: TObject);
|
|
procedure shPlanDnesShow (Sender: TObject);
|
|
procedure FormCreate (Sender: TObject);
|
|
procedure grdPlanDnesTitleClick (Column: TColumn);
|
|
procedure btnPolotovarClick (Sender: TObject);
|
|
procedure btnUkonceniVyrobyPaletyClick (Sender: TObject);
|
|
procedure grdPlanDnesDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
|
|
procedure grdStrojeDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
|
|
procedure grdRozpracovaneDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
|
|
procedure btnOdpadOpravaClick (Sender: TObject);
|
|
procedure grdRozpracovaneDblClick (Sender: TObject);
|
|
procedure btnMicharnaClick (Sender: TObject);
|
|
procedure grdRozpracovaneCellClick (Column: TColumn);
|
|
procedure grdPlanDnesCellClick (Column: TColumn);
|
|
procedure grdPlanDnesMouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
procedure grdPlanDnesDblClick (Sender: TObject);
|
|
private
|
|
procedure NactiPoznamkyVyrobnihoDne;
|
|
public
|
|
Helios: IHelios;
|
|
apiMod: boolean;
|
|
apiServer: string;
|
|
runTimerRozprac: boolean;
|
|
end;
|
|
|
|
|
|
implementation
|
|
uses System.DateUtils, System.StrUtils,
|
|
datMod, helUtils, helTabsBIDs,
|
|
frmPrijemNestandard, frmKontrolaCCP1, frmTiskKAStitku, frmZahajeniPalety, frmUkonceniPalety, frmAktSarze,
|
|
frmTiskyNahledy, frmPLZakazky, frmVyrobniDenik, frmPredvyroba, frmVyrobaMimoPlan,// frmZahajeniVyrobyPalety,
|
|
frmVyberCinnostiStroje, frmZasobaObjednavky, frmOdpady, frmPrehledMicharna, frmSpravaVzorku;
|
|
|
|
var
|
|
formPekarna: TformPekarna;
|
|
initOK: Boolean;
|
|
oVar1, oVar2: OleVariant;
|
|
url: string;
|
|
arrStroje: TArray<integer>;
|
|
arrGrdStrojeWidths: TArray<Extended>;
|
|
|
|
clickQry: TStringList;
|
|
lastClick, lastClick2: string;
|
|
|
|
grdStrojeAktRow, grdStrojeAktCol: integer;
|
|
prikazPrerusit: boolean;
|
|
|
|
aktIdStr, aktIdKmen, aktIdPlan, idPrikazPlanDnes, idPrikazRozprac, idPoznamkaVyrbnihoDne: integer;
|
|
aRowStroj, aColStroj: integer;
|
|
aRowPlanDnes, aColPlanDnes: integer;
|
|
|
|
usrId, cisZamMistr, idZamMistr: integer;
|
|
|
|
// TitleOffset: Byte;
|
|
Pt: TPoint;
|
|
Cell: TGridCoord;
|
|
// Column: TColumn;
|
|
|
|
|
|
{$R *.dfm}
|
|
|
|
|
|
function GetDBGridIndexByFieldName (aGrd: TDBGrid; aFld: string): integer;
|
|
var i: integer;
|
|
begin
|
|
result:= -1;
|
|
for i:=0 to aGrd.Columns.Count-1 do
|
|
if (aGrd.Columns.Items[i].FieldName=aFld) then
|
|
result:= i;
|
|
end;
|
|
|
|
|
|
|
|
procedure InsertClickQuery (compName: string);
|
|
begin
|
|
if (clickQry.Count>0) then
|
|
begin
|
|
if (clickQry.Strings[clickQry.Count-1]<>compName) then
|
|
begin
|
|
if (clickQry.Count>1) then
|
|
lastClick2:= clickQry.Strings[clickQry.Count-2]
|
|
else
|
|
lastClick2:= lastClick;
|
|
if (clickQry.Count>2) then
|
|
clickQry.Delete(0);
|
|
clickQry.Add(compName);
|
|
lastClick:= clickQry.Strings[clickQry.Count-1];
|
|
end
|
|
else
|
|
lastClick:= compName;
|
|
end
|
|
else
|
|
begin
|
|
clickQry.Add(compName);
|
|
lastClick:= compName;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformPekarna.btnAktualniSarzeClick (Sender: TObject);
|
|
var f: TformAktSarze;
|
|
begin
|
|
|
|
// click query
|
|
InsertClickQuery ('btnAktualniSarze');
|
|
|
|
f:= TformAktSarze.Create(nil);
|
|
try
|
|
f.Helios:= Helios;
|
|
f.idKmen:= datMod.aktIdKmen;
|
|
f.vyrDen:= ledtVyrobniDen.DateTime;
|
|
f.smena:= sgInfo.Cells[3, 1].ToInteger;
|
|
f.ShowModal;
|
|
finally
|
|
f.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.btnKontrolaPeceniClick (Sender: TObject);
|
|
var f: TformKontrolaCCP1;
|
|
d: TDateTime;
|
|
begin
|
|
|
|
// click query
|
|
InsertClickQuery ('btnKontrolaPeceni');
|
|
|
|
|
|
if (edtMistr.Text='') then
|
|
begin
|
|
Helios.Error(#1'Nejdřív vyberte mistra'#1);
|
|
if (edtMistr.CanFocus) then
|
|
edtMistr.SetFocus;
|
|
end
|
|
else
|
|
begin
|
|
f:= TformKontrolaCCP1.Create (nil);
|
|
try
|
|
f.vyrobniDen:= ledtVyrobniDen.DateTime;
|
|
f.Helios:= Helios;
|
|
dm.NactiCCP1 (f);
|
|
f.ShowModal;
|
|
finally
|
|
f.Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.btnMicharnaClick (Sender: TObject);
|
|
var f: TformPrehledMicharna;
|
|
begin
|
|
|
|
// click query
|
|
InsertClickQuery ('btnMicharna');
|
|
|
|
|
|
|
|
f:= TFormPrehledMicharna.Create(nil);
|
|
try
|
|
f.Helios:= Helios;
|
|
f.ShowModal;
|
|
finally
|
|
f.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.btnNahledTiskyClick (Sender: TObject);
|
|
var f: TformTiskyNahledy;
|
|
begin
|
|
|
|
// click query
|
|
InsertClickQuery ('btnNahledTisky');
|
|
|
|
|
|
f:= TformTiskyNahledy.Create (nil);
|
|
try
|
|
f.idKmen:= datMod.aktIdKmen;
|
|
f.idPrikaz:= datMod.aktIdPrikaz;
|
|
f.idPaleta:= datMod.aktIDPaleta;
|
|
f.Helios:= Helios;
|
|
f.HeliosHandle:= Application.Handle;
|
|
f.ShowModal;
|
|
finally
|
|
f.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.btnNovyVzorekClick (Sender: TObject);
|
|
var lSQL, podm: string;
|
|
aktArchiv, lastArchiv: string;
|
|
i, idArchiv, idVzorek, bid, idF: integer;
|
|
begin
|
|
|
|
// click query
|
|
InsertClickQuery ('btnNovyVzorek');
|
|
|
|
|
|
|
|
if (edtVybranyStroj.Text='') then
|
|
begin
|
|
Helios.Error(#1'Nejprve vyberte stroj.'#1);
|
|
Exit;
|
|
end;
|
|
|
|
if (aktIdKmen=0) then
|
|
begin
|
|
Helios.Error(#1'Na vybraném stroji neprobíhá výroba.'#1);
|
|
Exit;
|
|
end;
|
|
|
|
i:= 0;
|
|
idArchiv:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT TOP(1) ID FROM ' + tblVzorkyArchiv + ' WHERE DatUkonceni IS NULL ORDER BY DatPorizeni');
|
|
if (idArchiv=0) then
|
|
begin
|
|
lastArchiv:= helUtils.getHeliosStrVal(Helios, '', 'SELECT TOP(1) Archiv FROM ' + tblVzorkyArchiv + ' WHERE DatUkonceni IS NOT NULL ORDER BY DatUkonceni DESC');
|
|
if (lastArchiv='') then
|
|
i:= 1
|
|
else
|
|
i:= StrToInt(RightStr(lastArchiv, 4)) + 1;
|
|
aktArchiv:= YearOf(Now).ToString + 'PE' + StringOfChar('0', 4-Length(i.ToString)) + i.ToString;
|
|
lSQL:= 'INSERT ' + tblVzorkyArchiv + ' (Archiv) SELECT N' + aktArchiv.QuotedString + CRLF + 'SELECT SCOPE_IDENTITY() AS newid';
|
|
try
|
|
with Helios.OpenSQL(lSQL) do
|
|
idArchiv:= VarToStr(FieldByNameValues('newid')).ToInteger;
|
|
except
|
|
idArchiv:= 0;
|
|
end;
|
|
end;
|
|
|
|
if (idArchiv>0) then
|
|
begin
|
|
lSQL:= 'INSERT ' + tblVzorky + ' (IDArchiv, IDStroj, IDKmenZbozi, CisloZamMistr) SELECT ' + idArchiv.ToString + ', ' + aktIdStr.ToString + ', ' + aktIdKmen.ToString + ', ' + cisZamMistr.ToString;
|
|
lSQL:= lSQL + CRLF + 'SELECT SCOPE_IDENTITY()';
|
|
try
|
|
idVzorek:= helUtils.getHeliosIntVal(Helios, 0, lSQL);
|
|
Helios.Info(#1'Nový vzorek zapsán.'#1);
|
|
|
|
bid:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT DPBID FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_Vyroba_Vzorky''');
|
|
idF:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblFormDef + ' WHERE Nazev2=N''PEK-4''');
|
|
if (bid>100000) and (idF>0) then
|
|
begin
|
|
podm:= 'hvw_Vyroba_Vzorky.ID=' + idVzorek.ToString;
|
|
Helios.PrintForm3 (bid, idF, podm);
|
|
end;
|
|
|
|
except on E:Exception do
|
|
Helios.Info(#1'Chyba zápisu vzorku: '#1 + E.Message);
|
|
end;
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.btnObjednavkaMatClick (Sender: TObject);
|
|
var podm: string;
|
|
f: TformZasobaObjednavky;
|
|
begin
|
|
|
|
// click query
|
|
InsertClickQuery ('btnObjednavkaMat');
|
|
|
|
{
|
|
podm:= 'TabPohybyZbozi.ID IN (SELECT p.ID FROM ' + tblPZ + ' p INNER JOIN ' + tblDZ + ' d ON (d.ID=p.IDDoklad) WHERE d.IDSklad=N' + skladMat.ToString.QuotedString + ' AND d.DruhPohybuZbo=4';
|
|
podm:= podm + ' AND d.PoradoveCislo>0 AND d.RadaDokladu=N''231'' AND d.Realizovano=0)';
|
|
Helios.OpenBrowse(bidPZ, podm);
|
|
}
|
|
helUtils.waitStart(nil, 'Načítají se data...', 1, 255);
|
|
f:= TformZasobaObjednavky.Create(nil);
|
|
try
|
|
f.Helios:= Helios;
|
|
f.vyrobniDen:= ledtVyrobniDen.DateTime;
|
|
f.ShowModal;
|
|
finally
|
|
f.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.btnPolotovarClick (Sender: TObject);
|
|
var podm, oldSkl: string;
|
|
f: TformPredvyroba;
|
|
begin
|
|
|
|
// click query
|
|
InsertClickQuery ('btnPolotovar');
|
|
|
|
|
|
f:= TformPredvyroba.Create(nil);
|
|
try
|
|
f.Helios:= Helios;
|
|
f.ShowModal;
|
|
finally
|
|
f.Free;
|
|
end;
|
|
{
|
|
oldSkl:= Helios.Sklad;
|
|
Helios.SetSklad('211');
|
|
podm:= 'TabStavSkladu.IDSklad=N''211'' AND TabStavSkladu.IDKmenZbozi IN (SELECT ID FROM ' + tblKZ + ' WHERE Nazev1 LIKE N''%polotovar%'')';
|
|
Helios.OpenBrowse2(bidSS, podm, 609);
|
|
Helios.SetSklad(oldSkl);
|
|
}
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.btnPrijemNestandardClick (Sender: TObject);
|
|
var f: TformPrijemNestandard;
|
|
begin
|
|
|
|
// click query
|
|
InsertClickQuery ('btnPrijemNestandard');
|
|
|
|
|
|
f:= TformPrijemNestandard.Create(nil);
|
|
try
|
|
f.aktIdStroj:= aktIdStr;
|
|
f.Helios:= Helios;
|
|
f.ShowModal;
|
|
finally
|
|
f.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.btnSpravaVzorkuClick (Sender: TObject);
|
|
var f: TformSpravaVzorku;
|
|
begin
|
|
|
|
// click query
|
|
InsertClickQuery ('btnSpravaVzorku');
|
|
|
|
|
|
f:= TformSpravaVzorku.Create(nil);
|
|
try
|
|
f.Helios:= Helios;
|
|
f.ShowModal;
|
|
finally
|
|
f.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.btnUkonceniVyrobyPaletyClick (Sender: TObject);
|
|
var f: TformUkonceniPalety;
|
|
begin
|
|
|
|
// click query
|
|
InsertClickQuery ('btnUkonceniVyrobyPalety');
|
|
|
|
|
|
f:= TformUkonceniPalety.Create(nil);
|
|
try
|
|
f.Helios:= Helios;
|
|
f.prerusit:= prikazPrerusit;
|
|
f.denSmena:= ledtVyrobniDen.DateTime.Format('ddmmyyyy') + '/' + sgInfo.Cells[3, 1].Trim;
|
|
|
|
f.paleta:= dm.vtStroje.FieldByName('fAktPaletList').AsString;
|
|
f.sarze:= dm.vtStroje.FieldByName('fSarze').AsString;
|
|
f.idStroj:= dm.vtStroje.FieldByName('fIDStroj').AsInteger;
|
|
f.idEvEOp:= dm.vtStroje.FieldByName('fIDEvidRozpOper').AsInteger;
|
|
f.idVPr:= dm.vtStroje.FieldByName('fIDPrikaz').AsInteger;
|
|
f.ShowModal;
|
|
finally
|
|
f.Free;
|
|
end;
|
|
dm.NactiStrojeAPraci (self);
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.btnVyrobniDenikClick (Sender: TObject);
|
|
var f: TformVyrobniDenik;
|
|
begin
|
|
|
|
// click query
|
|
InsertClickQuery ('btnVyrobniDenik');
|
|
|
|
|
|
f:= TformVyrobniDenik.Create(nil);
|
|
try
|
|
f.den:= ledtVyrobniDen.DateTime;
|
|
f.Helios:= Helios;
|
|
f.ShowModal;
|
|
finally
|
|
f.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.btnZadaniMimoPlanClick (Sender: TObject);
|
|
var f: TformVyrobaMimoPlan;
|
|
begin
|
|
|
|
// click query
|
|
InsertClickQuery ('btnZadaniMimoPlan');
|
|
|
|
|
|
if (edtMistr.Text='') then
|
|
begin
|
|
Helios.Error(#1'Není vybrán Mistr, nelze pokračovat.'#1);
|
|
Exit;
|
|
end;
|
|
|
|
datMod.bmIdStroj:= datMod.aktIdStroj;
|
|
f:= TformVyrobaMimoPlan.Create (nil);
|
|
try
|
|
helUtils.waitStart(nil, 'Načítají se data...');
|
|
f.Helios:= Helios;
|
|
f.ShowModal;
|
|
finally
|
|
f.Free;
|
|
end;
|
|
helUtils.waitEnd;
|
|
|
|
dm.NactiStrojeAPraci (self);
|
|
if (datMod.bmIdStroj>0) then
|
|
dm.vtStroje.Locate('fIDStroj', VarArrayOf([datMod.bmIdStroj]), [loPartialKey]);
|
|
|
|
dm.NactiPlanStroje (self, datMod.bmIdStroj);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.btnZahajeniVyrobyPaletyClick (Sender: TObject);
|
|
var //f: TformZahajeniVyrobyPalety;
|
|
f2: TformZahajeniPalety;
|
|
idVPr, pocetPal, d: integer;
|
|
lSQL, v, c, msg, a, varJeText: string;
|
|
rc, nazev1, strojNazev: string;
|
|
startNew, startRozprac: boolean;
|
|
vyrTyp: byte;
|
|
begin
|
|
vyrTyp:= 0;
|
|
|
|
// "kontrola rozpracovane vyroby"
|
|
// "Na stroji xxx je ve výrobě x palet(-a) číslo abc. Pokud na ni chcete pracovat, zadejte z Rozpracovanosti. Pokračovat v zadání nové palety ?"
|
|
|
|
startNew:= (lastClick='grdPlanDnes') and (lastClick2='grdStroje');
|
|
startRozprac:= (lastClick='grdRozpracovane') and (lastClick2='grdStroje');
|
|
|
|
// click query
|
|
InsertClickQuery ('grdZahajeniVyrobyPalety');
|
|
|
|
|
|
c:= grdStroje.DataSource.DataSet.FieldByName('fCinnost').AsString;
|
|
if (c<>'Výroba') then
|
|
btnZahajeniVyrobyPalety.Enabled:= true;
|
|
|
|
{
|
|
v:= grdStroje.DataSource.DataSet.FieldByName('fVyrobek').AsString;
|
|
if (v='') then
|
|
Exit;
|
|
}
|
|
|
|
if (edtMistr.Text='') then
|
|
begin
|
|
Helios.Error(#1'Není vybrán Mistr, nelze pokračovat.'#1);
|
|
Exit;
|
|
end;
|
|
|
|
|
|
datMod.bmIdStroj:= datMod.aktIdStroj;
|
|
|
|
idVPr:= 0;
|
|
aktIdKmen:= 0;
|
|
if (grdStroje.DataSource.DataSet.FieldByName('fIDPrikaz').AsString<>'') then
|
|
idVPr:= grdStroje.DataSource.DataSet.FieldByName('fIDPrikaz').AsInteger;
|
|
|
|
|
|
if (idVPr>0) and (c='Výroba') then
|
|
begin
|
|
pocetPal:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT COUNT(ID) FROM ' + tblPalety + ' WHERE IDPrikaz=' + idVPr.ToString);
|
|
varJeText:= 'je';
|
|
if (pocetPal>1) then
|
|
varJeText:= 'jsou';
|
|
|
|
msg:= #1'Na stroji ' + grdStroje.DataSource.DataSet.FieldByName('fStroj').AsString + ' je ve výrobě paleta číslo '#1;
|
|
msg:= msg + grdStroje.DataSource.DataSet.FieldByName('fAktPaletList').AsString + IfThen(pocetPal>1, ' a další ' + (pocetPal-1).ToString + ' následující', '') + CRLF;
|
|
|
|
if (pgCtrlPlan.ActivePage=shPlanDnes) then
|
|
begin
|
|
if (datMod.bmIdPlanDnes>0) and (startNew) then
|
|
begin
|
|
msg:= msg + 'Chcete její výrobu přerušit s evidencí vyrobených kartonů' + CRLF +' a začít vyrábět ' + #1 + grdPlanDnes.DataSource.DataSet.FieldByName('fRegCis').AsString;
|
|
msg:= msg + ' ' + grdPlanDnes.DataSource.DataSet.FieldByName('fVyrobek').AsString + #1 + ' ?';
|
|
if (Helios.YesNo(msg, false)) then
|
|
begin
|
|
Helios.Info('Výroba palety '#1 + grdStroje.DataSource.DataSet.FieldByName('fAktPaletList').AsString + #1' bude přerušena.' + CRLF + 'Při přerušení zadejte počet vyrobených kartonů');
|
|
prikazPrerusit:= true;
|
|
btnUkonceniVyrobyPaletyClick (Sender);
|
|
prikazPrerusit:= false;
|
|
msg:= '';
|
|
end
|
|
else
|
|
Exit;
|
|
end
|
|
else
|
|
if (msg<>'') then
|
|
begin
|
|
Helios.Error(msg);
|
|
msg:= '';
|
|
edtAktVyrobek.Text:= '';
|
|
idVPr:= 0;
|
|
Exit;
|
|
end;
|
|
|
|
vyrTyp:= 1;
|
|
end
|
|
else
|
|
begin
|
|
msg:= msg + 'Pokud na ni chcete pracovat, zadejte z Rozpracovanosti.' + CRLF + 'Pokračovat v zadání nové palety ?'#1;
|
|
if not(Helios.YesNo(msg, false)) then
|
|
Exit;
|
|
end;
|
|
end;
|
|
|
|
if (idVPr=0) and (c<>'Výroba') and (vyrTyp=0) then
|
|
begin
|
|
vyrTyp:= 1;
|
|
end;
|
|
|
|
|
|
|
|
if (vyrTyp=1) and (pgCtrlPlan.ActivePage=shPlanDnes) and (datMod.bmIdPlanDnes>0) then
|
|
idVPr:= datMod.bmIdPlanDnes;
|
|
// if (grdPlanDnes.DataSource.DataSet.FieldByName('fIDPlan').AsString<>'') then
|
|
// idVPr:= grdPlanDnes.DataSource.DataSet.FieldByName('fIDPlan').AsInteger;
|
|
|
|
|
|
if (idVPr>0) then
|
|
aktIdKmen:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDTabKmen FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString);
|
|
|
|
d:= 0;
|
|
a:= '';
|
|
lSQL:= 'SELECT TOP(1) pp.Doklad, pp.Alt FROM ' + tblPrPost + ' pp INNER JOIN ' + tblCPrac + ' p ON (pp.pracoviste=p.Id) INNER JOIN ' + tblCStroju + ' s ON (s.IDPrac=p.ID)';
|
|
lSQL:= lSQL + ' WHERE pp.dilec=' + aktIdKmen.ToString + ' AND pp.Typ=1 AND pp.IDOdchylkyDo IS NULL AND pp.IDPrikaz=' + idVPr.ToString + ' AND s.ID=' + datMod.bmIdStroj.ToString;
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
d:= VarToStr(FieldByNameValues('Doklad')).ToInteger;
|
|
a:= VarToStr(FieldByNameValues('Alt'));
|
|
end;
|
|
|
|
|
|
{
|
|
if (d=0) then
|
|
begin
|
|
strojNazev:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblCStroju + ' WHERE ID=' + datMod.bmIdStroj.ToString);
|
|
with Helios.OpenSQL('SELECT k.RegCis, k.Nazev1 FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IdTabKmen) WHERE p.ID=' + idVPr.ToString) do
|
|
begin
|
|
rc:= VarToStr(FieldByNameValues('RegCis'));
|
|
nazev1:= VarToStr(FieldByNameValues('Nazev1'));
|
|
end;
|
|
Helios.Error('Výroba ' + #1 + nazev1 + ' není určena pro stroj ' + strojNazev + #1);
|
|
idVPr:= 0;
|
|
end;
|
|
}
|
|
|
|
|
|
|
|
if (idVPr>0) then
|
|
begin
|
|
f2:= TformZahajeniPalety.Create(nil);
|
|
try
|
|
f2.Helios:= Helios;
|
|
f2.opakTisky:= false;
|
|
f2.f:= self;
|
|
f2.idPrikaz:= idVPr;
|
|
f2.idStroj:= datMod.bmIdStroj;
|
|
f2.ShowModal;
|
|
finally
|
|
f2.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
{
|
|
helUtils.waitStart(nil, 'Načítají se data příkazů...');
|
|
|
|
f:= TformZahajeniVyrobyPalety.Create(nil);
|
|
try
|
|
f.Helios:= Helios;
|
|
f.ShowModal;
|
|
finally
|
|
f.Free;
|
|
end;
|
|
}
|
|
|
|
dm.NactiStrojeAPraci (self);
|
|
if (datMod.bmIdStroj>0) then
|
|
begin
|
|
dm.vtStroje.Locate('fIDStroj', VarArrayOf([datMod.bmIdStroj]), [loPartialKey]);
|
|
dm.NactiPlanStroje (self, datMod.bmIdStroj);
|
|
end;
|
|
if (datMod.bmIdPlanDnes>0) then
|
|
dm.vtPlanDnes.Locate('fIDPlan', VarArrayOf([datMod.bmIdPlanDnes]), [loPartialKey]);
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.btnOdpadOpravaClick (Sender: TObject);
|
|
var f: TformOdpady;
|
|
begin
|
|
|
|
// click query
|
|
InsertClickQuery ('btnOdpadOprava');
|
|
|
|
|
|
f:= TformOdpady.Create(nil);
|
|
try
|
|
f.Helios:= Helios;
|
|
f.ShowModal;
|
|
finally
|
|
f.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.edtMistrClick (Sender: TObject);
|
|
var podm: string;
|
|
begin
|
|
|
|
// click query
|
|
InsertClickQuery ('edtMistr');
|
|
|
|
|
|
podm:= '';
|
|
if (Helios.Prenos(bidCisZam, 'TabCisZam.Cislo', oVar1, podm, 'Vyberte MISTRA', true)) then
|
|
begin
|
|
cisZamMistr:= VarToStr(oVar1).ToInteger;
|
|
datMod.cisZamMistr:= cisZamMistr;
|
|
idZamMistr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblCisZam + ' WHERE Cislo=' + cisZamMistr.ToString);
|
|
datMod.idZamMistr:= idZamMistr;
|
|
edtMistr.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT PrijmeniJmeno FROM ' + tblCisZam + ' WHERE Cislo=' + cisZamMistr.ToString);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.edtOdpadMokryExit (Sender: TObject);
|
|
var lSQL: string;
|
|
begin
|
|
if (edtOdpadMokry.Modified) or (edtOdpadSuchy.Modified) or (edtOdpadPoznamka.Modified) then
|
|
begin
|
|
lSQL:= 'DECLARE @d DATETIME=GETDATE(), @s TINYINT' + CRLF + 'SELECT @d=Datum, @s=Smena FROM dbo.ef_GetDatumASmenu(@d)' + CRLF;
|
|
lSQL:= lSQL + 'IF NOT EXISTS (SELECT 1 FROM ' + tblOdpadPek + ' WHERE IDStroje=' + aktIdStr.ToString + ' AND Smena=' + edtOdpadSmena.Text + ' AND Datum=@d)' + CRLF;
|
|
lSQL:= lSQL + ' INSERT ' + tblOdpadPek + ' (IDStroje, Smena, Datum) SELECT ' + aktIdStr.ToString + ', ' + edtOdpadSmena.Text + ', @d' + CRLF;
|
|
lSQL:= lSQL + 'UPDATE ' + tblOdpadPek + ' SET OdpadMokry=' + edtOdpadMokry.Value.ToString.Replace(',', '.') + ', OdpadSuchy=' + edtOdpadSuchy.Value.ToString.Replace(',', '.');
|
|
lSQL:= lSQL + ', Poznamka=N' + edtOdpadPoznamka.Text.Trim.QuotedString + ' WHERE IDStroje=' + aktIdStr.ToString + ' AND Smena=' + edtOdpadSmena.Text + ' AND Datum=@d';
|
|
Helios.ExecSQL(lSQL);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.edtOdpadPoznamkaExit (Sender: TObject);
|
|
begin
|
|
edtOdpadMokryExit(Sender);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.edtOdpadSuchyExit (Sender: TObject);
|
|
begin
|
|
edtOdpadMokryExit(Sender);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.FormClose (Sender: TObject; var Action: TCloseAction);
|
|
begin
|
|
memVyrobniPoznamkaExit (Sender);
|
|
|
|
|
|
if (Assigned(datMod.dm)) then
|
|
begin
|
|
if (dm.vtPlanDnes.Active) then
|
|
dm.vtPlanDnes.Close;
|
|
|
|
if (dm.vtPlanZitra.Active) then
|
|
dm.vtPlanZitra.Close;
|
|
|
|
if (dm.vtStroje.Active) then
|
|
dm.vtStroje.Close;
|
|
|
|
if (dm.vtRozpracPL.Active) then
|
|
dm.vtRozpracPL.Close;
|
|
|
|
if (dm.vtVyrobniPozn.Active) then
|
|
dm.vtVyrobniPozn.Close;
|
|
|
|
clickQry.Free;
|
|
|
|
FreeAndNil (datMod.dm);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.FormCreate (Sender: TObject);
|
|
begin
|
|
initOK:= false;
|
|
clickQry:= TStringList.Create;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.FormResize (Sender: TObject);
|
|
var i: integer;
|
|
begin
|
|
sgInfo.ColWidths[0]:= Trunc(0.2 * sgInfo.Width);
|
|
sgInfo.ColWidths[1]:= Trunc(0.2 * sgInfo.Width);
|
|
sgInfo.ColWidths[2]:= Trunc(0.37 * sgInfo.Width);
|
|
sgInfo.ColWidths[3]:= Trunc(0.23 * sgInfo.Width);
|
|
|
|
sgCas.ColWidths[0]:= Trunc(0.5 * sgCas.Width);
|
|
sgCas.ColWidths[1]:= Trunc(0.5 * sgCas.Width);
|
|
|
|
|
|
|
|
// prizpusobeni sirky sloupcu gridu stroju
|
|
{
|
|
grdStroje.Left:= 20;
|
|
grdStroje.Top:= 10;
|
|
grdStroje.Width:= grdStroje.Parent.Width - grdStroje.Left;
|
|
grdStroje.Options:= grdStroje.Options + [dgColumnResize];
|
|
for i:=0 to Length(arrGrdStrojeWidths)-1 do
|
|
grdStroje.Columns[i].Width:= Trunc(arrGrdStrojeWidths[i] * grdStroje.Width);
|
|
grdStroje.Options:= grdStroje.Options - [dgColumnResize];
|
|
grdStroje.Invalidate;
|
|
}
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.NactiPoznamkyVyrobnihoDne;
|
|
var lSQL: string;
|
|
begin
|
|
idPoznamkaVyrbnihoDne:= 0;
|
|
|
|
datMod.vyrobniDen:= ledtVyrobniDen.DateTime;
|
|
|
|
Label1.Caption:= 'Poznámky k výrobnímu dni' + CRLF + DateToStr(ledtVyrobniDen.Date);
|
|
memVyrobniPoznamka.Text:= '';
|
|
|
|
lSQL:= 'SELECT TOP(1) ID FROM ' + tblVyrPozn + ' WHERE VyrobniDen_X=CONVERT(datetime,CONVERT(int,CONVERT(float,CONVERT(datetime,N' + DateTimeToStr(ledtVyrobniDen.DateTime).QuotedString + ',104))))';
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
idPoznamkaVyrbnihoDne:= VarToStr(FieldByNameValues('ID')).ToInteger;
|
|
memVyrobniPoznamka.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Poznamka FROM ' + tblVyrPozn + ' WHERE ID=' + idPoznamkaVyrbnihoDne.ToString);
|
|
end;
|
|
end;
|
|
|
|
|
|
{
|
|
procedure TformPekarna.NactiPlanStroje;
|
|
var lSQL: string;
|
|
begin
|
|
dm.vtPlanDnes.EmptyDataSet;
|
|
if (aktIdStr>0) or (1=1) then
|
|
begin
|
|
{
|
|
lSQL:= 'DECLARE @t1 DATETIME, @t2 DATETIME' + CRLF + 'DROP TABLE IF EXISTS #planDnes' + CRLF;
|
|
lSQL:= lSQL + 'CREATE TABLE #planDnes (ID INT IDENTITY(1,1) NOT NULL, startdatetime DATETIME, enddatetime DATETIME, TrvaniMin TINYINT, CisloZakazky NVARCHAR(30), Prikaz NVARCHAR(20)';
|
|
lSQL:= lSQL + ', IDPrikaz INT, CisloZbozi NVARCHAR(33), Nazev1 NVARCHAR(100), PRIMARY KEY (ID))' + CRLF;
|
|
|
|
lSQL:= lSQL + 'DROP TABLE IF EXISTS #planPrikazyDnes' + CRLF + 'CREATE TABLE #planPrikazyDnes (ID INT NOT NULL)' + CRLF;
|
|
lSQl:= lSQL + 'INSERT #planPrikazyDnes (ID) SELECT DISTINCT(pp.IDPrikaz) FROM ' + tblPrPost + ' pp WHERE pp.IdOdchylkyDo IS NULL AND pp.IDStroje=' + aktIdStr.ToString + ' GROUP BY pp.IDPrikaz' + CRLF;
|
|
|
|
lSQL:= lSQL + 'DECLARE @idVPr INT' + CRLF + 'DECLARE p CURSOR LOCAL FOR SELECT ID FROM #planPrikazyDnes' + CRLF;
|
|
lSQL:= lSQL + 'OPEN p' + CRLF + 'WHILE (1=1)' + CRLF + ' BEGIN' + CRLF + ' FETCH NEXT FROM p INTO @idVPr' + CRLF + ' IF (@@FETCH_STATUS<>0) BREAK' + CRLF;
|
|
|
|
lSQL:= lSQL + ' SET @t1 = (SELECT MIN(X.Cas) FROM (SELECT Cas=KPP.CasOd FROM ' + tblAdvKPlan + ' KP INNER JOIN ' + tblKapacPlanPol;
|
|
lSQL:= lSQL + ' KPP ON (KPP.IDKapacPlan=KP.ID AND KPP.IDPrikaz=@idVPr) WHERE KP.Aktivni=1 UNION ALL ';
|
|
lSQL:= lSQL + 'SELECT Cas=DKP.CCasOd FROM ' + tblAdvKPlan + ' AKP INNER JOIN ' + tblAdvKPlanDavky + ' DKP ON (DKP.IDAdvKapacPlan=AKP.ID AND DKP.IDPrikaz=@idVPr)';
|
|
lSQL:= lSQL + ' WHERE AKP.Aktivni=1) X)' + CRLF;
|
|
|
|
lSQL:= lSQL + ' SET @t1 = (SELECT MAX(X.Cas) FROM (SELECT Cas=KPP.CasDo FROM ' + tblAdvKPlan + ' KP INNER JOIN ' + tblKapacPlanPol;
|
|
lSQL:= lSQL + ' KPP ON (KPP.IDKapacPlan=KP.ID AND KPP.IDPrikaz=@idVPr) WHERE KP.Aktivni=1 UNION ALL ';
|
|
lSQL:= lSQL + 'SELECT Cas=DKP.CCasDo FROM ' + tblAdvKPlan + ' AKP INNER JOIN ' + tblAdvKPlanDavky + ' DKP ON (DKP.IDAdvKapacPlan=AKP.ID AND DKP.IDPrikaz=@idVPr)';
|
|
lSQL:= lSQL + ' WHERE AKP.Aktivni=1) X)' + CRLF;
|
|
|
|
lSQL:= lSQL + ' INSERT #planDnes (IDPrikaz, startdatetime, enddatetime, CisloZakazky, Prikaz, CisloZbozi, Nazev1) SELECT vp.ID, ISNULL(@t1, vp.Plan_zadani), ISNULL(@t2, vp.Plan_ukonceni)';
|
|
lSQL:= lSQL + ', z.CisloZakazky, vp.RadaPrikaz, k.CisloZbozi, k.Nazev1 FROM ' + tblVPr + ' vp INNER JOIN ' + tblPrPost + ' pp ON (pp.IDPrikaz=vp.ID) INNER JOIN ' + tblZak;
|
|
lSQL:= lSQL + ' z ON (z.ID=vp.IDZakazka) INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IDTabKmen) WHERE vp.ID=@idVPr AND pp.IDOdchylkyDo IS NULL AND vp.StavPrikazu=30 AND pp.IDStroje=';
|
|
lSQL:= lSQL + aktIdStr.ToString + CRLF;
|
|
|
|
lSQL:= lSQL + ' END' + CRLF + 'CLOSE p' + CRLF + 'DEALLOCATE p' + CRLF;
|
|
|
|
lSQL:= lSQL + 'SELECT hr.ld AS CasDavky,' + CRLF;
|
|
lSQL:= lSQL + ' 60 - case when e.startdatetime > hr.ld then datepart(minute, e.startdatetime) else 0 END' + CRLF;
|
|
lSQL:= lSQL + ' + case when e.enddatetime < hr.ud then datepart(minute, e.enddatetime)-60 else 0 END AS allocatedminutes' + CRLF;
|
|
lSQL:= lSQL + 'FROM #planDnes AS e' + CRLF;
|
|
lSQL:= lSQL + 'CROSS APPLY' + CRLF;
|
|
lSQL:= lSQL + '(' + CRLF;
|
|
lSQL:= lSQL + ' SELECT' + CRLF;
|
|
lSQL:= lSQL + ' dateadd(hour, datepart(hour,e.startdatetime)+t.rn-1, cast(cast(e.startdatetime AS date) AS datetime)) AS ld,' + CRLF;
|
|
lSQL:= lSQL + ' dateadd(hour, datepart(hour,e.startdatetime)+t.rn, cast(cast(e.startdatetime AS date) AS datetime)) AS ud,' + CRLF;
|
|
lSQL:= lSQL + ' rn' + CRLF;
|
|
lSQL:= lSQL + ' FROM' + CRLF;
|
|
lSQL:= lSQL + ' (' + CRLF;
|
|
lSQL:= lSQL + ' -- a tally, max 100 rows .. max 100 hours duration' + CRLF;
|
|
lSQL:= lSQL + ' SELECT top (1+datediff(hour,e.startdatetime,dateadd(minute, -1, e.enddatetime))) row_number() over(order by @@spid) AS rn' + CRLF;
|
|
lSQL:= lSQL + ' FROM (values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) AS a(n)' + CRLF;
|
|
lSQL:= lSQL + ' CROSS JOIN (values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) AS b(n)' + CRLF;
|
|
lSQL:= lSQL + ' ) AS t' + CRLF;
|
|
lSQL:= lSQL + ') AS hr;';
|
|
}
|
|
{
|
|
|
|
lSQL:= 'SELECT ID FROM ' + tblVPr + ' WHERE StavPrikazu IN (20,30) AND ID NOT IN (SELECT r.IDPrikaz FROM ' + tblRozpracOper + ' h INNER JOIN ' + tblRozpracOperR;
|
|
lSQL:= lSQL + ' r ON (r.IDEvidRozpracOper=h.ID) INNER JOIN ' + tblCPrac + ' pr ON (pr.ID=h.IDPracoviste) WHERE h.Stav<30)';
|
|
|
|
lSQL:= 'SELECT vp.ID, k.ID AS idKZ, k.RegCis, k.Nazev1, dbo.hf_TruncDate(vp.Plan_zadani) AS Plan_zadani, vp.kusy_zad, vp.kusy_zive, vp.kusy_odved,'
|
|
+ ' ISNULL(z.CisloZakazky,N'''') AS CisloZakazky FROM ' + tblVPr + ' vp INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IDTabKmen) LEFT JOIN ' + tblZak
|
|
+ ' z ON (z.ID=vp.IDZakazka) WHERE vp.ID IN (' + lSQL + ') ORDER BY vp.Plan_zadani';
|
|
|
|
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
First;
|
|
if not(dm.vtPlanDnes.Active) then
|
|
dm.vtPlanDnes.Open;
|
|
dm.vtPlanDnes.EmptyDataSet;
|
|
while not(EOF) do // prikazy co nejsou nastartovane, ale zadane do vyroby
|
|
begin
|
|
dm.vtPlanDnes.Append;
|
|
dm.vtPlanDnes.FieldByName('fIDPlan').AsString:= VarToStr(FieldByNameValues('ID'));
|
|
dm.vtPlanDnes.FieldByName('fRegCis').AsString:= VarToStr(FieldByNameValues('RegCis'));
|
|
dm.vtPlanDnes.FieldByName('fVyrobek').AsString:= VarToStr(FieldByNameValues('Nazev1'));
|
|
dm.vtPlanDnes.FieldByName('fHotovo').AsExtended:= VarToStr(FieldByNameValues('kusy_odved')).ToExtended;
|
|
dm.vtPlanDnes.FieldByName('fZakazka').AsString:= VarToStr(FieldByNameValues('CisloZakazky'));
|
|
dm.vtPlanDnes.FieldByName('fDatPlanZadani').AsString:= VarToStr(FieldByNameValues('Plan_zadani'));
|
|
dm.vtPlanDnes.Post;
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
end;
|
|
end;
|
|
}
|
|
|
|
|
|
|
|
procedure TformPekarna.FormShow (Sender: TObject);
|
|
var i: integer;
|
|
lSQL: string;
|
|
begin
|
|
|
|
grdPlanDnes.Font.Height:= Helios.FontHeight;
|
|
grdRozpracovane.Font.Height:= Helios.FontHeight;
|
|
|
|
grdStroje.Font.Height:= Helios.FontHeight;
|
|
pgCtrlPlan.ActivePage:= shPlanDnes;
|
|
|
|
runTimerRozprac:= true;
|
|
|
|
sgInfo.Cells[0, 0]:= 'Rok';
|
|
sgInfo.Cells[1, 0]:= 'Týden';
|
|
sgInfo.Cells[2, 0]:= 'Výrobní den';
|
|
sgInfo.Cells[3, 0]:= 'Směna';
|
|
|
|
sgCas.Cells[0, 0]:= 'Akt. datum';
|
|
sgCas.Cells[1, 0]:= 'čas';
|
|
|
|
ledtVyrobniDen.Date:= Now;
|
|
|
|
if not(Assigned(datMod.dm)) then
|
|
datMod.dm:= Tdm.Create(self);
|
|
|
|
if (Assigned(dm)) then
|
|
begin
|
|
dm.Helios:= Helios;
|
|
|
|
if not(dm.vtPlanDnes.Active) then
|
|
dm.vtPlanDnes.Open;
|
|
dm.vtPlanDnes.EmptyDataSet;
|
|
|
|
if not(dm.vtPlanZitra.Active) then
|
|
dm.vtPlanZitra.Open;
|
|
dm.vtPlanZitra.EmptyDataSet;
|
|
|
|
if not(dm.vtStroje.Active) then
|
|
dm.vtStroje.Open;
|
|
dm.vtStroje.EmptyDataSet;
|
|
|
|
if not(dm.vtRozpracPL.Active) then
|
|
dm.vtRozpracPL.Open;
|
|
dm.vtRozpracPL.EmptyDataSet;
|
|
|
|
if not(dm.vtVyrobniPozn.Active) then
|
|
dm.vtVyrobniPozn.Open;
|
|
dm.vtVyrobniPozn.EmptyDataSet;
|
|
end;
|
|
|
|
|
|
initOK:= true;
|
|
|
|
self.Width:= Trunc(Screen.Monitors[self.Monitor.MonitorNum].WorkareaRect.Width * 0.95);
|
|
self.Height:= Trunc(Screen.Monitors[self.Monitor.MonitorNum].WorkareaRect.Height * 0.95);
|
|
|
|
datMod.compName:= GetEnvironmentVariable('COMPUTERNAME');
|
|
|
|
|
|
// zapis si koeficienty pro sirku sloupcu gridu stroju (pro upravu ve form.resize)
|
|
SetLength(arrGrdStrojeWidths, grdStroje.Columns.Count);
|
|
for i:=0 to Length(arrGrdStrojeWidths)-1 do
|
|
arrGrdStrojeWidths[i]:= grdStroje.Columns.Items[i].Width / grdStroje.Width;
|
|
|
|
|
|
infoTimerTimer (Sender);
|
|
dm.NactiDataPaneluStroje (self, arrStroje); // stroje strediska 211
|
|
if (dm.vtStroje.RecordCount>0) then
|
|
grdStrojeCellClick(grdStroje.Columns.Items[2]);
|
|
|
|
dm.NactiVyrobniPoznamky (self);
|
|
|
|
SetWindowLong(btnZahajeniVyrobyPalety.Handle, GWL_STYLE, GetWindowLong((btnZahajeniVyrobyPalety as TWinControl).Handle, GWL_STYLE) or BS_MULTILINE);
|
|
SetWindowLong(btnUkonceniVyrobyPalety.Handle, GWL_STYLE, GetWindowLong((btnUkonceniVyrobyPalety as TWinControl).Handle, GWL_STYLE) or BS_MULTILINE);
|
|
|
|
dm.NactiStrojeAPraci (self);
|
|
NactiPoznamkyVyrobnihoDne;
|
|
|
|
if (dm.vtStroje.RecordCount>0) then
|
|
dm.vtStroje.RecNo:= 1;
|
|
|
|
self.Caption:= 'PEKÁRNA '; // (obr w: ' + self.Width.ToString + '/h: ' + self.Height.ToString + ')';
|
|
|
|
|
|
usrId:= Helios.UserId;
|
|
cisZamMistr:= 0;
|
|
idZamMistr:= 0;
|
|
if (helUtils.sqlExistsTestGeneral(Helios, 'SELECT ID FROM ' + tblCZam + ' WHERE LoginId=N' + Helios.LoginName.QuotedString)) then
|
|
idZamMistr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblCZam + ' WHERE LoginId=N' + Helios.LoginName.QuotedString);
|
|
if (idZamMistr=0) and (helUtils.getHeliosIntVal(Helios, 0, 'SELECT COUNT(ID) FROM ' + tblCZam)=1) then
|
|
idZamMistr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT TOP(1) ID FROM ' + tblCZam);
|
|
|
|
if (idZamMistr>0) then
|
|
begin
|
|
lSQL:= 'SELECT Cislo, PrijmeniJmeno FROM ' + tblCZam + ' WHERE ID=' + idZamMistr.ToString;
|
|
with Helios.OpenSQL (lSQL) do
|
|
begin
|
|
edtMistr.Text:= VarToStr(FieldByNameValues('PrijmeniJmeno'));
|
|
cisZamMistr:= VarToStr(FieldByNameValues('Cislo')).ToInteger;
|
|
end;
|
|
end;
|
|
datMod.idZamMistr:= idZamMistr;
|
|
datMod.cisZamMistr:= cisZamMistr;
|
|
|
|
|
|
|
|
pgCtrlPlan.ActivePage:= shPlanDnes;
|
|
|
|
datMod.bmIdStroj:= 0;
|
|
if (dm.vtStroje.RecordCount>0) then
|
|
datMod.bmIdStroj:= dm.vtStroje.FieldByName('fIDStroj').AsInteger;
|
|
|
|
dm.NactiPlanStroje (self, datMod.bmIdStroj, true); // dnesni plan (tj. davky kapacitniho planu)
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.grdPlanDnesCellClick (Column: TColumn);
|
|
var c: string;
|
|
begin
|
|
|
|
// click query
|
|
InsertClickQuery ('grdPlanDnes');
|
|
|
|
|
|
aktIdPlan:= 0;
|
|
if (grdPlanDnes.DataSource.DataSet.RecordCount>0) then
|
|
begin
|
|
aktIdPlan:= grdPlanDnes.DataSource.DataSet.FieldByName('fIDPlan').AsInteger; // prikaz
|
|
datMod.bmIdPlanDnes:= aktIdPlan;
|
|
|
|
datMod.aktIdKmenPlan:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IdTabKmen FROM ' + tblPrikaz + ' WHERE ID=' + aktIdPlan.ToString);
|
|
|
|
c:= 'DECLARE @i INT' + CRLF + 'DELETE FROM ' + tblPrikazVC + ' WHERE IDPrikaz=' + aktIdPlan.ToString + ' AND LEFT(VyrCislo,1)=N''0''' + CRLF;
|
|
c:= c + 'SET @i = 1 + ISNULL( (SELECT MAX(ID) FROM ' + tblPrikazVC + '), 0)' + CRLF + 'DBCC CHECKIDENT (' + dm.VratNazevTabulky(tblPrikazVC,false) + ', RESEED, @i)';
|
|
try
|
|
Helios.ExecSQL(c);
|
|
except
|
|
end;
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.grdPlanDnesDblClick (Sender: TObject);
|
|
begin
|
|
// click query
|
|
InsertClickQuery ('grdPlanDnes');
|
|
|
|
|
|
idPrikazPlanDnes:= grdPlanDnes.DataSource.DataSet.FieldByName('fIDPlan').AsInteger;
|
|
|
|
// Helios.ExecSQL('IF OBJECT_ID(N''tempdb..#tmpAutomatSpusteno'') IS NULL CREATE TABLE #tmpAutomatSpusteno(IDAkce INT NOT NULL)');
|
|
// Helios.RunAction2(bidVyrPrik, 'TabPrikaz.ID=' + grdPlanDnes.DataSource.DataSet.FieldByName('fIDPlan').AsString, 'ActionEdit');
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.grdPlanDnesDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
|
|
begin
|
|
if (not(gdSelected in State)) then
|
|
begin
|
|
if (Odd(grdPlanDnes.DataSource.DataSet.RecNo)) then
|
|
TJvDBGrid(Sender).Canvas.Brush.Color:= clWindow
|
|
else
|
|
TJvDBGrid(Sender).Canvas.Brush.Color:= $00E0E0E0;
|
|
end;
|
|
|
|
if (Column.FieldName='fVyrobek') then
|
|
begin
|
|
if (gdSelected in State) then
|
|
TJvDBGrid(Sender).Canvas.Font.Color:= clBlack;
|
|
TJvDBGrid(Sender).Canvas.Brush.Color:= $00D0FEC6;
|
|
end;
|
|
|
|
if (Column.FieldName='fHotovo') then
|
|
begin
|
|
if (gdSelected in State) then
|
|
TJvDBGrid(Sender).Canvas.Font.Color:= clBlack;
|
|
TJvDBGrid(Sender).Canvas.Brush.Color:= $00CAFFFF;
|
|
end;
|
|
|
|
TJvDBGrid(Sender).DefaultDrawColumnCell (Rect, DataCol, Column, State);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.grdPlanDnesMouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
begin
|
|
aRowPlanDnes:= TJvDBGrid(Sender).MouseCoord(X, Y).Y;
|
|
aColPlanDnes:= TJvDBGrid(Sender).MouseCoord(X, Y).X;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.grdPlanDnesTitleClick(Column: TColumn);
|
|
begin
|
|
ShowMessage('col W: ' + Column.Width.ToString);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.grdRozpracovaneCellClick(Column: TColumn);
|
|
var vyradit: Boolean;
|
|
begin
|
|
|
|
// click query
|
|
InsertClickQuery ('grdRozpracovane');
|
|
|
|
|
|
edtNazevRozpracVyrobku.Text:= dm.vtRozpracPL.FieldByName('fVyrobek').AsString;
|
|
edtRozpracZakazka.Text:= dm.vtRozpracPL.FieldByName('fRadaPrikaz').AsString; // VPr
|
|
|
|
datMod.aktIdKmenRozprac:= dm.vtRozpracPL.FieldByName('fIDPrikaz').AsInteger;
|
|
|
|
vyradit:= dm.vtRozpracPL.FieldByName('fColR').AsBoolean;
|
|
Label12.Visible:= vyradit;
|
|
edtVyraditPaletu.Visible:= vyradit;
|
|
edtVyraditPaletu.Text:= dm.vtRozpracPL.FieldByName('fAktPaletList').AsString;
|
|
btnVyraditPaletuZVyroby.Visible:= vyradit;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.grdRozpracovaneDblClick (Sender: TObject);
|
|
begin
|
|
// TitleOffset := Ord(dgTitles in grdRozpracovane.Options);
|
|
Pt := grdRozpracovane.ScreenToClient(Mouse.CursorPos);
|
|
Cell := grdRozpracovane.MouseCoord(Pt.X, Pt.Y);
|
|
|
|
if (Cell.X = GetDBGridIndexByFieldName(grdRozpracovane, 'fAktPaletList')) then
|
|
begin
|
|
// PL je ve výrobě, není co převádět
|
|
|
|
// Nemáme speficikaci pro tento výrobek na stroji 58 ! Nemohu provést převod do výroby !
|
|
|
|
if (Helios.YesNo('Chcete změnit stroj pro výrobu PL ' + #1 + grdRozpracovane.DataSource.DataSet.FieldByName('fAktPaletList').AsString + #1 + ' ?' ,false)) then
|
|
begin
|
|
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.grdRozpracovaneDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
|
|
begin
|
|
if (not(gdSelected in State)) then
|
|
begin
|
|
if (Odd(grdRozpracovane.DataSource.DataSet.RecNo)) then
|
|
TDBGrid(Sender).Canvas.Brush.Color:= clWindow
|
|
else
|
|
TDBGrid(Sender).Canvas.Brush.Color:= $00E0E0E0;
|
|
end;
|
|
|
|
if (Column.FieldName='fAktPaletList') then
|
|
begin
|
|
TDBGrid(Sender).Canvas.Brush.Color:= $00D0FEC6; // zelena
|
|
if (gdSelected in State) then
|
|
TDBGrid(Sender).Canvas.Font.Color:= clBlack; // cerne pismo na zelenem pozadi
|
|
end;
|
|
|
|
TDBGrid(Sender).DefaultDrawColumnCell (Rect, DataCol, Column, State);
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.grdStrojeCellClick (Column: TColumn);
|
|
var lSQL: string;
|
|
aktVyrN1, aktVyrCZbo: string;
|
|
begin
|
|
// click query
|
|
InsertClickQuery ('grdStroje');
|
|
|
|
|
|
aktIdStr:= 0;
|
|
if (grdStroje.DataSource.DataSet.RecordCount>0) then
|
|
begin
|
|
lSQL:= Column.FieldName;
|
|
|
|
aktIdStr:= grdStroje.DataSource.DataSet.FieldByName('fIDStroj').AsInteger;
|
|
datMod.aktIdStroj:= aktIdStr;
|
|
datMod.bmIdStroj:= aktIdStr;
|
|
|
|
edtVybranyStroj.Text:= grdStroje.DataSource.DataSet.FieldByName('fStroj').AsString;
|
|
edtOdpadStroj.Text:= grdStroje.DataSource.DataSet.FieldByName('fStroj').AsString;
|
|
// edtOdpadSmena.Text:= sgCas.Cells[3, 1];
|
|
aktVyrCZbo:= grdStroje.DataSource.DataSet.FieldByName('fCisloZbozi').AsString;
|
|
|
|
aktIdKmen:= grdStroje.DataSource.DataSet.FieldByName('fIDKmen').AsInteger;
|
|
datMod.aktIdKmen:= aktIdKmen;
|
|
|
|
datMod.aktIDPaleta:= grdStroje.DataSource.DataSet.FieldByName('fIDPaleta').AsInteger;
|
|
|
|
datMod.aktIdPrikaz:= grdStroje.DataSource.DataSet.FieldByName('fIDPrikaz').AsInteger;
|
|
datMod.bmIdPrikaz:= datMod.aktIdPrikaz;
|
|
|
|
datMod.aktZakazka:= grdStroje.DataSource.DataSet.FieldByName('fZakazka').AsString; // vyrobni prikaz (RadaPrikaz)
|
|
|
|
aktVyrCZbo:= LeftStr(aktVyrCZbo,3) + ' ' + MidStr(aktVyrCZbo, 4, 30);
|
|
edtAktVyrobek.Text:= aktVyrCZbo + ' ' + dm.vtStroje.FieldByName('fVyrobek').AsString;
|
|
|
|
dm.NactiOdpadStroje (self);
|
|
|
|
|
|
if (pgCtrlPlan.ActivePage=shPlanDnes) then
|
|
begin
|
|
dm.NactiPlanStroje (self, datMod.bmIdStroj);
|
|
aktIdPlan:= 0;
|
|
datMod.bmIdPlanDnes:= aktIdPlan;
|
|
end;
|
|
|
|
{
|
|
if (pgCtrlPlan.ActivePage=shRozpracovanePL) then
|
|
dm.NactiRozpracovane (self);
|
|
}
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.grdStrojeDblClick (Sender: TObject);
|
|
var f: TformTiskKAStitku;
|
|
fPLZakazky: TformPLZakazky;
|
|
fZahPL: TformZahajeniPalety;
|
|
fKonecPL: TformUkonceniPalety;
|
|
fCinn: TformVyberCinnostiStroje;
|
|
s, c, lSQL: string;
|
|
begin
|
|
|
|
// dbl klik nad Cinnosti - zmena (Vyroba, Odstavka, Oprava stroje, Ukonceni zakazky, Zkouska)
|
|
|
|
|
|
// Pt := grdStroje.ScreenToClient(Mouse.CursorPos);
|
|
// Cell := grdStroje.MouseCoord(Pt.X, Pt.Y);
|
|
|
|
// click query
|
|
InsertClickQuery ('grdStroje');
|
|
|
|
|
|
if (grdStrojeAktCol=4) then
|
|
begin
|
|
fZahPL:= TformZahajeniPalety.Create(nil);
|
|
try
|
|
fZahPL.Helios:= Helios;
|
|
fZahPL.idPrikaz:= grdStroje.DataSource.DataSet.FieldByName('fIDPrikaz').AsInteger;
|
|
fZahPL.ShowModal;
|
|
finally
|
|
fZahPL.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
s:= Sender.ClassName;
|
|
if (grdStrojeAktCol=3) then // colVyrobek
|
|
begin
|
|
grdStrojeCellClick (grdStroje.Columns.Items[grdStrojeAktCol-1]);
|
|
f:= TformTiskKAStitku.Create(nil);
|
|
try
|
|
try
|
|
f.Helios:= Helios;
|
|
f.idKmen:= aktIdKmen;
|
|
f.ShowModal;
|
|
except
|
|
end;
|
|
finally
|
|
f.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
if (grdStrojeAktCol=6) then // colZakazka
|
|
begin
|
|
grdStrojeCellClick (grdStroje.Columns.Items[grdStrojeAktCol-1]);
|
|
|
|
s:= grdStroje.DataSource.DataSet.FieldByName('fZakazka').AsString;
|
|
if (1=0) then
|
|
Helios.Error('Nelze identifikovat zakázku.')
|
|
else
|
|
begin
|
|
fPLZakazky:= TformPLZakazky.Create(nil);
|
|
try
|
|
fPLZakazky.Helios:= Helios;
|
|
fPLZakazky.zakazka:= s; // prikaz
|
|
fPLZakazky.idKmen:= grdStroje.DataSource.DataSet.FieldByName('fIDKmen').AsInteger;
|
|
fPLZakazky.ShowModal;
|
|
finally
|
|
fPLZakazky.Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
if (grdStrojeAktCol=7) then // colCinnost
|
|
begin
|
|
grdStrojeCellClick (grdStroje.Columns.Items[grdStrojeAktCol-1]);
|
|
s:= grdStroje.DataSource.DataSet.FieldByName('fZakazka').AsString;
|
|
c:= grdStroje.DataSource.DataSet.FieldByName('fCinnost').AsString;
|
|
|
|
fCinn:= TformVyberCinnostiStroje.Create(nil);
|
|
try
|
|
fCinn.Helios:= Helios;
|
|
fCinn.ShowModal;
|
|
if (fCinn.mrVal=10) then
|
|
if (fCinn.cinnost<>'') then
|
|
begin
|
|
if (c='Výroba') then
|
|
begin
|
|
if (Helios.YesNo('Na stroji probíhá výroba. Pokud budete pokračovat, výroba palety bude ukončena.' + CRLF + 'Chcete pokračovat a zahájit činnost ' + #1+fCinn.cinnost+#1 + ' ?', false)) then
|
|
begin
|
|
// click query
|
|
InsertClickQuery ('btnUkonceniVyrobyPalety');
|
|
fKonecPL:= TformUkonceniPalety.Create (nil);
|
|
try
|
|
fKonecPL.Helios:= Helios;
|
|
fKonecPL.prerusit:= prikazPrerusit;
|
|
fKonecPL.denSmena:= ledtVyrobniDen.DateTime.Format('ddmmyyyy') + '/' + sgInfo.Cells[3, 1].Trim;
|
|
fKonecPL.paleta:= dm.vtStroje.FieldByName('fAktPaletList').AsString;
|
|
fKonecPL.sarze:= dm.vtStroje.FieldByName('fSarze').AsString;
|
|
fKonecPL.idStroj:= dm.vtStroje.FieldByName('fIDStroj').AsInteger;
|
|
fKonecPL.idEvEOp:= dm.vtStroje.FieldByName('fIDEvidRozpOper').AsInteger;
|
|
fKonecPL.idVPr:= dm.vtStroje.FieldByName('fIDPrikaz').AsInteger;
|
|
fKonecPL.ShowModal;
|
|
|
|
lSQL:= 'INSERT ' + tblCinnostStr + ' (IDStroje, Smena, Cinnost) SELECT ' + datMod.aktIdStroj.ToString + ', ' + sgInfo.Cells[3, 1] + ', N' + fCinn.cinnost.QuotedString;
|
|
Helios.ExecSQL(lSQL);
|
|
grdStroje.DataSource.DataSet.Edit;
|
|
grdStroje.DataSource.DataSet.FieldByName('fCinnost').AsString:= fCinn.cinnost;
|
|
grdStroje.DataSource.DataSet.Post;
|
|
|
|
finally
|
|
fKonecPL.Free;
|
|
end;
|
|
dm.NactiStrojeAPraci (self);
|
|
end;
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
lSQL:= 'UPDATE ' + tblCinnostStr + ' SET DatKonec=GETDATE() WHERE ID=(SELECT MAX(ID) FROM ' + tblCinnostStr + ' WHERE IDStroje=' + datMod.aktIdStroj.ToString + ')';
|
|
Helios.ExecSQL(lSQL);
|
|
grdStroje.DataSource.DataSet.Edit;
|
|
grdStroje.DataSource.DataSet.FieldByName('fCinnost').AsString:= fCinn.cinnost;
|
|
grdStroje.DataSource.DataSet.Post;
|
|
end;
|
|
finally
|
|
fCinn.Free;
|
|
end;
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.grdStrojeDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
|
|
begin
|
|
if (not(gdSelected in State)) then
|
|
begin
|
|
if (Odd(grdStroje.DataSource.DataSet.RecNo)) then
|
|
TDBGrid(Sender).Canvas.Brush.Color:= clWindow
|
|
else
|
|
TDBGrid(Sender).Canvas.Brush.Color:= $00E0E0E0;
|
|
end;
|
|
|
|
if (Column.FieldName='fAktPaletList') or (Column.FieldName='fZakazka') or (Column.FieldName='fCinnost') then
|
|
begin
|
|
if (gdSelected in State) then
|
|
TDBGrid(Sender).Canvas.Font.Color:= clBlack;
|
|
TDBGrid(Sender).Canvas.Brush.Color:= $00D0FEC6;
|
|
end;
|
|
|
|
TDBGrid(Sender).DefaultDrawColumnCell (Rect, DataCol, Column, State);
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.grdStrojeMouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
begin
|
|
grdStrojeAktRow:= TJvDBGrid(Sender).MouseCoord(X, Y).Y;
|
|
grdStrojeAktCol:= TJvDBGrid(Sender).MouseCoord(X, Y).X;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.infoTimerTimer (Sender: TObject);
|
|
var h: byte;
|
|
begin
|
|
sgInfo.Cells[0, 1]:= YearOf(Now).ToString; // rok
|
|
sgInfo.Cells[1, 1]:= WeekOfTheYear(Now).ToString; // tyden dle WeekOfTheYear
|
|
sgInfo.Cells[2, 1]:= DateToStr(Now); // vyrobni den
|
|
h:= HourOf(Now);
|
|
if (h<6) or (h>=22) then
|
|
sgInfo.Cells[3, 1]:= '3' // smena
|
|
else
|
|
if (h>=6) and (h<14) then
|
|
sgInfo.Cells[3, 1]:= '1'
|
|
else
|
|
sgInfo.Cells[3, 1]:= '2';
|
|
|
|
edtOdpadSmena.Text:= sgInfo.Cells[3, 1];
|
|
|
|
sgCas.Cells[0, 1]:= DateToStr(Now);
|
|
sgCas.Cells[1, 1]:= FormatDateTime('hh:nn', Now);
|
|
|
|
// ledtVyrobniDen.DateTime:= StrToDateTime(sgInfo.Cells[2, 1]);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TformPekarna.ledtVyrobniDenChange (Sender: TObject);
|
|
begin
|
|
NactiPoznamkyVyrobnihoDne;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.memVyrobniPoznamkaExit (Sender: TObject);
|
|
var lSQL: string;
|
|
begin
|
|
if (memVyrobniPoznamka.Modified) then
|
|
begin
|
|
memVyrobniPoznamka.Text:= memVyrobniPoznamka.Text.Trim;
|
|
if (idPoznamkaVyrbnihoDne>0) then
|
|
begin
|
|
lSQL:= 'UPDATE ' + tblVyrPozn + ' SET Poznamka=N' + IfThen(memVyrobniPoznamka.Text='', 'ULL', memVyrobniPoznamka.Text.QuotedString) + ' WHERE ID=' + idPoznamkaVyrbnihoDne.ToString;
|
|
Helios.ExecSQL(lSQL);
|
|
end
|
|
else
|
|
if (memVyrobniPoznamka.Text<>'') then
|
|
begin
|
|
lSQL:= 'INSERT ' + tblVyrPozn + ' (Poznamka, VyrobniDen) SELECT N' + memVyrobniPoznamka.Text.QuotedString + ', CONVERT(datetime, N' + DateTimeToStr(ledtVyrobniDen.DateTime).QuotedString;
|
|
lSQL:= lSQL + ', 104); SELECT SCOPE_IDENTITY() AS newId';
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
idPoznamkaVyrbnihoDne:= VarToStr(FieldByNameValues('newId')).ToInteger;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.sgCasDrawCell (Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
|
|
begin
|
|
sgInfoDrawCell(Sender, ACol, ARow, Rect, State);
|
|
end;
|
|
|
|
|
|
|
|
procedure TformPekarna.sgInfoDrawCell (Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
|
|
var g: TStringGrid;
|
|
begin
|
|
if (ARow=0) then
|
|
begin
|
|
g:= Sender as TStringGrid;
|
|
g.Canvas.Brush.Color:= $00CAFFFF;
|
|
g.Canvas.FillRect (Rect);
|
|
DrawText(g.Canvas.Handle, g.Cells[ACol, ARow], Length(g.Cells[ACol, ARow]), Rect, DT_CENTER or DT_VCENTER or DT_SINGLELINE);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.shPlanDnesShow (Sender: TObject);
|
|
begin
|
|
if (initOK) then
|
|
dm.NactiPlanStroje(self, datMod.bmIdStroj);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.shRozpracovanePLShow (Sender: TObject);
|
|
begin
|
|
datMod.bmIdPlanDnes:= 0;
|
|
aktIdPlan:= 0;
|
|
if (initOK) then
|
|
begin
|
|
edtNazevRozpracVyrobku.Text:= '';
|
|
edtRozpracZakazka.Text:= '';
|
|
dm.NactiRozpracovane (self, datMod.aktIdStroj);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPekarna.timerPrehledTimer (Sender: TObject);
|
|
var idStrojBak, idPlanDnesBak, idKmenBak: integer;
|
|
begin
|
|
if (runTimerRozprac) then
|
|
begin
|
|
idStrojBak:= aktIdStr;
|
|
idKmenBak:= aktIdKmen;
|
|
idPlanDnesBak:= aktIdPlan;
|
|
dm.NactiStrojeAPraci (self);
|
|
|
|
if (datMod.bmIdStroj>0) then
|
|
if (dm.vtStroje.Locate('fIDStroj', VarArrayOf([datMod.bmIdStroj]), [loPartialKey])) then
|
|
begin
|
|
aktIdStr:= datMod.bmIdStroj;
|
|
aktIdKmen:= dm.vtStroje.FieldByName('fIDPrikaz').AsInteger;
|
|
datMod.aktIdStroj:= datMod.bmIdStroj;
|
|
end;
|
|
|
|
if (datMod.bmIdPlanDnes>0) then
|
|
if (dm.vtPlanDnes.Locate('fIDPlan', VarArrayOf([datMod.bmIdPlanDnes]), [loPartialKey])) then
|
|
begin
|
|
aktIdPlan:= datMod.bmIdPlanDnes;
|
|
end;
|
|
|
|
if (initOK) then
|
|
begin
|
|
dm.NactiRozpracovane (self, datMod.aktIdStroj);
|
|
dm.NactiPlanStroje (self, datMod.bmIdStroj);
|
|
end;
|
|
|
|
runTimerRozprac:= true;
|
|
end;
|
|
end;
|
|
|
|
end.
|