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

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.