329 lines
12 KiB
ObjectPascal
329 lines
12 KiB
ObjectPascal
unit frmPolozkyMD;
|
|
|
|
interface
|
|
|
|
uses
|
|
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
|
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, ddPlugin_TLB,
|
|
Vcl.ControlList, ES.ControlListControls,
|
|
datModul, Vcl.TitleBarCtrls, Vcl.Grids;
|
|
|
|
type
|
|
TformPolozkyMD = class(TForm)
|
|
Panel1: TPanel;
|
|
btnNaPilu: TButton;
|
|
btnStorno: TButton;
|
|
ctrlPolozkyMD: TControlList;
|
|
lblDeleni: TLabel;
|
|
lblNadoba: TLabel;
|
|
lblRegCisPrikaz: TLabel;
|
|
lblRadaPrikaz: TLabel;
|
|
lblRezatUhel: TLabel;
|
|
Label2: TLabel;
|
|
Label3: TLabel;
|
|
lblNadobaSort: TLabel;
|
|
custTitleBar: TTitleBarPanel;
|
|
Label1: TLabel;
|
|
lblMaterial: TLabel;
|
|
lblRegCis: TLabel;
|
|
Label4: TLabel;
|
|
grdAltMaterial: TStringGrid;
|
|
lblAltMatCapt: TLabel;
|
|
lblSkladem: TLabel;
|
|
lblDelkaCelkem: TLabel;
|
|
Label5: TLabel;
|
|
lblRadaPrikazFin: TLabel;
|
|
lblRegCisPrikazFin: TLabel;
|
|
procedure btnStornoClick (Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure btnNaPiluClick(Sender: TObject);
|
|
procedure ctrlPolozkyMDBeforeDrawItem(AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState);
|
|
procedure FormShow(Sender: TObject);
|
|
procedure grdAltMaterialDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
|
|
procedure grdAltMaterialMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
private
|
|
procedure NactiAlternativy;
|
|
public
|
|
Helios: IHelios;
|
|
idMatDavky: integer;
|
|
mrVal: integer;
|
|
dm: Tdm;
|
|
mForm: TForm;
|
|
selRC: string;
|
|
end;
|
|
|
|
var
|
|
formPolozkyMD: TformPolozkyMD;
|
|
idKZMatDavky: integer;
|
|
idKZ, idKZAlt, idPrKVazby: integer;
|
|
aktR, aktC: integer;
|
|
|
|
implementation
|
|
uses Vcl.Clipbrd, helUtils;
|
|
|
|
{$R *.dfm}
|
|
|
|
|
|
procedure TformPolozkyMD.NactiAlternativy;
|
|
var lSQL, popisMat: string;
|
|
i, idAlt: integer;
|
|
mnozSkl: Extended;
|
|
begin
|
|
lblAltMatCapt.Font.Color:= clWindowText;
|
|
|
|
idKZAlt:= 0;
|
|
idKZ:= idKZMatDavky;
|
|
|
|
|
|
lSQL:= 'SELECT IDKZNahrada FROM ' + tblAlterKZ + ' WHERE IDKmeneZbozi=' + idKZMatDavky.ToString;
|
|
lSQL:= lSQL + ' ORDER BY Priorita';
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
lblAltMatCapt.Visible:= (RecordCount>0);
|
|
grdAltMaterial.Visible:= lblAltMatCapt.Visible;
|
|
Panel1.Top:= lblRegCis.Top + lblRegCis.Height + 5;
|
|
lblDelkaCelkem.Top:= Panel1.Top + Panel1.Height + 5;
|
|
btnNaPilu.Top:= lblDelkaCelkem.Top + lblDelkaCelkem.Height + 10;
|
|
btnStorno.Top:= btnNaPilu.Top;
|
|
|
|
if (RecordCount>0) then
|
|
begin
|
|
lblAltMatCapt.Font.Color:= clRed;
|
|
grdAltMaterial.RowCount:= RecordCount;
|
|
|
|
First;
|
|
i:= 0;
|
|
while not(EOF) do
|
|
begin
|
|
idAlt:= VarToStr(FieldByNameValues('IDKZNahrada')).ToInteger;
|
|
idKZAlt:= idAlt;
|
|
|
|
grdAltMaterial.Cells[0, i]:= helUtils.getHeliosStrVal(Helios, '', 'SELECT RegCis FROM ' + tblKZ + ' WHERE ID=' + idAlt.ToString);
|
|
|
|
lSQL:= 'SELECT ISNULL(_Rozmer, N'''') + N'' '' + ISNULL(_S1_X, N'''') + N'' / '' + ISNULL(_JakostMaterialu, N'''') FROM ' + tblKZe + ' WHERE ID=' + idAlt.ToString;
|
|
lSQL:= 'SELECT ISNULL(_JakostMaterialu, N'''') FROM ' + tblKZe + ' WHERE ID=' + idAlt.ToString;
|
|
popisMat:= helUtils.getHeliosStrVal(Helios, '', lSQL);
|
|
if (popisMat<>'') then
|
|
grdAltMaterial.Cells[1, i]:= ' ' + popisMat
|
|
else
|
|
grdAltMaterial.Cells[1, i]:= ' ' + helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev1 FROM ' + tblKZ + ' WHERE ID=' + idAlt.ToString);
|
|
|
|
lSQL:= 'SELECT Mnozstvi FROM ' + tblSS + ' WHERE IDSklad=N' + datModul.sklMat.QuotedString + ' AND Mnozstvi>0 AND IDKmenZbozi=' + idAlt.ToString;
|
|
mnozSkl:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
|
|
grdAltMaterial.Cells[2, i]:= ' ' + mnozSkl.ToString + ' ' + helUtils.getHeliosStrVal(Helios, '', 'SELECT MJEvidence FROM ' + tblKZ + ' WHERE ID=' + idAlt.ToString);
|
|
|
|
Inc(i);
|
|
Next;
|
|
end;
|
|
|
|
grdAltMaterial.Height:= (grdAltMaterial.DefaultRowHeight * grdAltMaterial.RowCount) + 10;
|
|
Panel1.Top:= grdAltMaterial.Top + grdAltMaterial.Height + 5;
|
|
lblDelkaCelkem.Top:= Panel1.Top + Panel1.Height + 5;
|
|
btnNaPilu.Top:= lblDelkaCelkem.Top + lblDelkaCelkem.Height + 10;
|
|
btnStorno.Top:= btnNaPilu.Top;
|
|
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformPolozkyMD.btnNaPiluClick (Sender: TObject);
|
|
var lSQL, d: string;
|
|
begin
|
|
if not(dm.tblPila.Active) then
|
|
dm.tblPila.Open;
|
|
|
|
d:= helUtils.getHeliosStrVal(Helios, '', 'SELECT CisloDavky FROM ' + tblRezPredpisPily + ' WHERE CisloDavky IS NOT NULL AND LoginName=SUSER_SNAME() AND Aktivni=1');
|
|
|
|
lSQL:= 'SELECT 1 AS A FROM ' + tblMatDavkyH + ' WHERE LoginName=SUSER_SNAME() AND NaPile=1';
|
|
if (helUtils.sqlExistsTestGeneral(Helios, lSQL)) then
|
|
Helios.Error ('Uživatel ' + #1 + datModul.sqlUserName + #1 + ' už má zahájenou dávku č.' + d + ', nelze zpracovat další dávku !')
|
|
else
|
|
begin
|
|
|
|
// dopln vazby na alternativu
|
|
|
|
|
|
mrVal:= 1;
|
|
Close;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPolozkyMD.btnStornoClick (Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPolozkyMD.ctrlPolozkyMDBeforeDrawItem (AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState);
|
|
var lSQL, sz, rc, oper, szFin, rcFin: string;
|
|
uhel, mnoz: Extended;
|
|
idPrKV, idVPr, idKZFin, dokl, idDilec: integer;
|
|
begin
|
|
{ // pokud je povoleno, neni videt vyber polozky v seznamu
|
|
// Nastavení barvy pera pro rámeček
|
|
ACanvas.Pen.Color:= clBlack;
|
|
ACanvas.Pen.Width:= 1; // Šířka rámečku
|
|
// Nakreslení rámečku kolem položky
|
|
ACanvas.Rectangle(ARect);
|
|
}
|
|
|
|
try
|
|
dm.tblPolozkyMD.RecNo:= AIndex + 1; // AIndex zero-based
|
|
// lblMaterial.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colNazev1').Value).Trim;
|
|
// lblPozice.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colPozice').Value).Trim;
|
|
// lblRegCis.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colRegCis').Value) + ' ' + VarToStr(dm.tblPolozkyMD.FieldByName('colRozmer').Value).Trim
|
|
// + '/' + VarToStr(dm.tblPolozkyMD.FieldByName('colSilaMat').Value) + ' ' + VarToStr(dm.tblPolozkyMD.FieldByName('colJakostMat').Value);
|
|
lblDeleni.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colKs').Value) + ' x ' + VarToStr(dm.tblPolozkyMD.FieldByName('colDelka').Value) + ' mm ';
|
|
lblNadoba.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colNadoba').Value);
|
|
lblRegCisPrikaz.Caption:= '' + VarToStr(dm.tblPolozkyMD.FieldByName('colRegCisPrikaz').Value).Trim;
|
|
lblRadaPrikaz.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colRadaPrikaz').Value).Trim;
|
|
// lblPrumer.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colPrumer').Value).Trim;
|
|
// lblTloustka.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colSilaMat').Value).Trim;
|
|
|
|
idPrKV:= dm.tblPolozkyMD.FieldByName('colIDPrKVazby').AsInteger;
|
|
idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDPrikaz FROM ' + tblPrKVaz + ' WHERE ID=' + idPrKV.ToString);
|
|
|
|
with Helios.OpenSQL('SELECT RadaPrikaz, IDTabKmen FROM ' + tblVPr + ' WHERE ID=(SELECT IDPrikazRidici FROM ' + tblVPr + ' WHERE ID=' + idVPr.ToString + ')') do
|
|
if (RecordCount=1) then
|
|
begin
|
|
lblRadaPrikazFin.Caption:= VarToStr(FieldByNameValues('RadaPrikaz'));
|
|
idKZFin:= VarToStr(FieldByNameValues('IDTabKmen')).ToInteger;
|
|
lblRegCisPrikazFin.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT SkupZbo + N'' '' + RegCis FROM ' + tblKZ + ' WHERE ID=' + idKZfin.ToString);
|
|
end;
|
|
|
|
|
|
if (idKZ<>idKZAlt) and (idKZAlt>0) then
|
|
begin
|
|
lSQL:= '';
|
|
|
|
oper:= helUtils.getHeliosStrVal(Helios, '', 'SELECT operace FROM ' + tblPrKVaz + ' WHERE ID=' + idPrKV.ToString);
|
|
dokl:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT Doklad FROM ' + tblPrKVaz + ' WHERE ID=' + idPrKV.ToString);
|
|
idDilec:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT vyssi FROM ' + tblPrKVaz + ' WHERE ID=' + idPrKV.ToString);
|
|
mnoz:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT mnoz_zad FROM ' + tblPrKVaz + ' WHERE ID=' + idPrKV.ToString);
|
|
|
|
lSQL:= 'SELECT 1 FROM ' + tblPrKVaz + ' WHERE IDPrikaz=' + idVPr.ToString + ' AND IDOdchylkyDo IS NULL AND Doklad=' + dokl.ToString + ' AND nizsi=' + idKZAlt.ToString;
|
|
lSQL:= lSQL + ' AND vyssi=' + idDilec.ToString;
|
|
if not(helUtils.sqlExistsTestGeneral(Helios, lSQL)) and (oper<>'') then
|
|
begin
|
|
lSQL:= 'EXEC dbo.hp_NewPozadavek_TabPrKVazby @IDPrikaz=' + idVPr.ToString + ', @IDKmenZbozi=' + idKZAlt.ToString + ', @Operace=N' + oper.QuotedString + ', @Mnozstvi=';
|
|
lSQL:= lSQL + mnoz.ToString.Replace(',', '.') + ', @Mnoz_zad=' + mnoz.ToString.Replace(',', '.') + ', @Alt_K_Dokladu=' + dokl.ToString;
|
|
try
|
|
Helios.ExecSQL (lSQL);
|
|
finally
|
|
end;
|
|
end;
|
|
|
|
end;
|
|
|
|
lblRezatUhel.Caption:= '';
|
|
sz:= VarToStr(dm.tblPolozkyMD.FieldByName('colSZPrikaz').Value).Trim;
|
|
rc:= VarToStr(dm.tblPolozkyMD.FieldByName('colRegCisPrikaz').Value).Trim;
|
|
if (sz<>'') and (rc<>'') then
|
|
begin
|
|
lSQL:= 'SELECT TOP(1) Uhel FROM dbo.hvw_ADE_INSERT_VYROBA WHERE SkupZbo=N' + sz.QuotedString + ' AND RegCis=N' + rc.QuotedString + ' AND LastRec=1 AND StavPolozky=N''50''';
|
|
uhel:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
|
|
if (uhel>1) then
|
|
lblRezatUhel.Caption:= 'úhel ' + uhel.ToString;
|
|
end;
|
|
except
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPolozkyMD.FormCreate (Sender: TObject);
|
|
begin
|
|
mrVal:= 0;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPolozkyMD.FormShow (Sender: TObject);
|
|
var lSQL, c, mj, pr: string;
|
|
begin
|
|
grdAltMaterial.ColWidths[0]:= 150;
|
|
grdAltMaterial.ColWidths[1]:= 130;
|
|
grdAltMaterial.ColWidths[2]:= 110;
|
|
|
|
|
|
idKZMatDavky:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDKmenZboziMat FROM ' + tblMatDavkyH + ' WHERE ID=' + idMatDavky.ToString);
|
|
lSQL:= 'SELECT Mnozstvi FROM ' + tblSS + ' WHERE IDKmenZbozi=' + idKZMatDavky.ToString + ' AND IDSklad=N' + QuotedStr('1030');
|
|
|
|
c:= helUtils.getHeliosStrVal(Helios, '0', lSQL);
|
|
mj:= helUtils.getHeliosStrVal(Helios, '', 'SELECT MJEvidence FROM ' + tblKZ + ' WHERE ID=' + idKZMatDavky.ToString);
|
|
lblSkladem.Caption:= c + ' ' + mj;
|
|
if (c='0') then
|
|
lblSkladem.Font.Color:= clRed
|
|
else
|
|
lblSkladem.Font.Color:= clWindowText;
|
|
|
|
dm.NactiPolozkyMatDavky (idMatDavky, self);
|
|
ctrlPolozkyMD.ItemCount:= dm.tblPolozkyMD.RecordCount;
|
|
|
|
c:= ' Materiálová dávka č. ' + helUtils.getHeliosStrVal(Helios, '', 'SELECT Cislo FROM ' + tblMatDavkyH + ' WHERE ID=' + idMatDavky.ToString);
|
|
{
|
|
if (dm.tblPolozkyMD.RecordCount>0) then
|
|
c:= c + ' / materiál ' + dm.tblPolozkyMD.FieldByName('colSZ').AsString + ' ' + dm.tblPolozkyMD.FieldByName('colRegCis').AsString
|
|
+ ' - ' + dm.tblPolozkyMD.FieldByName('colNazev1').AsString + ' / jakost ' + dm.tblPolozkyMD.FieldByName('colJakostMat').AsString
|
|
+ ' / prumer ' + dm.tblPolozkyMD.FieldByName('colPrumer').AsString;
|
|
}
|
|
self.Caption:= c;
|
|
|
|
dm.tblPolozkyMD.First;
|
|
lblMaterial.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colNazev1').Value).Trim;
|
|
// lblPozice.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colPozice').Value).Trim;
|
|
lblRegCis.Caption:= VarToStr(dm.tblPolozkyMD.FieldByName('colRegCis').Value) + ' ' + VarToStr(dm.tblPolozkyMD.FieldByName('colRozmer').Value).Trim
|
|
+ '/' + VarToStr(dm.tblPolozkyMD.FieldByName('colSilaMat').Value) + ' ' + VarToStr(dm.tblPolozkyMD.FieldByName('colJakostMat').Value);
|
|
|
|
pr:= dm.tblPolozkyMD.FieldByName('colPrumer').AsString;
|
|
if (pr<>'') then
|
|
lblRegCis.Caption:= lblRegCis.Caption + ' / průměr ' + pr;
|
|
|
|
NactiAlternativy;
|
|
|
|
lblDelkaCelkem.Caption:= 'celkem ' + (dm.SumaDelkyMatDavky (idMatDavky)/1000).ToString + ' ' + mj;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TformPolozkyMD.grdAltMaterialDrawCell (Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
|
|
var o: string;
|
|
begin
|
|
grdAltMaterial.Canvas.Font.Color:= clWindowText;
|
|
if (ACol=2) then
|
|
begin
|
|
o:= grdAltMaterial.Cells[ACol, ARow];
|
|
if (o.Trim='0 m') then
|
|
grdAltMaterial.Canvas.Font.Color:= clRed;
|
|
|
|
grdAltMaterial.Canvas.FillRect (Rect);
|
|
grdAltMaterial.Canvas.TextRect(Rect, Rect.Left, Rect.Top-4, o);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformPolozkyMD.grdAltMaterialMouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
begin
|
|
if (ssShift in Shift) then
|
|
begin
|
|
grdAltMaterial.MouseToCell (X, Y, aktC, aktR);
|
|
selRC:= grdAltMaterial.Cells[aktC, aktR].Trim;
|
|
Clipboard.AsText:= selRC;
|
|
end;
|
|
end;
|
|
|
|
end.
|