Files
Rootvin-pluginHDCRTN/frmSarzeVydej.pas
2025-05-21 21:06:33 +02:00

210 lines
5.0 KiB
ObjectPascal

unit frmSarzeVydej;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, ddPlugin_TLB, Vcl.ExtCtrls, Vcl.StdCtrls,
Data.DB, Vcl.Grids, Vcl.DBGrids, JvDBUltimGrid, JvExDBGrids, JvDBGrid,
JvExControls, JvSpeedButton;
type
TformSarzeVydej = class(TForm)
GridPanel1: TGridPanel;
GridPanel2: TGridPanel;
GridPanel3: TGridPanel;
btnOK: TButton;
btnZrusit: TButton;
grdMaterial: TJvDBUltimGrid;
grdSarze: TJvDBUltimGrid;
btnAdd: TJvSpeedButton;
btnDel: TJvSpeedButton;
procedure btnOKClick (Sender: TObject);
procedure btnZrusitClick (Sender: TObject);
procedure FormShow(Sender: TObject);
procedure grdMaterialCellClick(Column: TColumn);
procedure grdSarzeCanEditCell(Grid: TJvDBGrid; Field: TField;
var AllowEdit: Boolean);
procedure btnAddClick(Sender: TObject);
procedure btnDelClick(Sender: TObject);
private
function TestOK: boolean;
public
idVydejka: integer;
sIdPohybuOZ: string;
Helios: IHelios;
mrVal: integer;
retOK: boolean;
end;
var
formSarzeVydej: TformSarzeVydej;
idKZ, idPZ: integer;
implementation
uses System.StrUtils,
datMod, helUtils;
{$R *.dfm}
function TformSarzeVydej.TestOK: Boolean;
var i: integer;
begin
result:= true;
if (dm.vtMaterial.RecordCount>0) then
begin
dm.vtMaterial.DisableControls;
i:= dm.vtMaterial.RecNo;
dm.vtMaterial.First;
while not(dm.vtMaterial.Eof) do
begin
if not(dm.vtMaterial.FieldByName('colMamSarzi').AsBoolean) then
result:= false;
dm.vtMaterial.Next;
end;
dm.vtMaterial.RecNo:= i;
dm.vtMaterial.EnableControls;
end;
end;
procedure TformSarzeVydej.btnAddClick (Sender: TObject);
var s: string;
begin
s:= InputBox ('ŠARŽE', 'Zadejte šarži materiálu:', '').Trim;
if (s<>'') then
begin
if not(dm.vtSarze.Active) then
dm.vtSarze.Open;
dm.vtSarze.Append;
dm.vtSarze.FieldByName('colSarze').AsString:= s;
dm.vtSarze.FieldByName('colMnoz').AsInteger:= 0;
dm.vtSarze.FieldByName('colIDKmen').AsInteger:= idKZ;
dm.vtSarze.FieldByName('colIDPohybOZ').AsInteger:= idPZ;
dm.vtSarze.Post;
dm.vtMaterial.Edit;
dm.vtMaterial.FieldByName('colMamSarzi').AsBoolean:= true;
dm.vtMaterial.Post;
end;
end;
procedure TformSarzeVydej.btnDelClick (Sender: TObject);
var f: string;
begin
if not(dm.vtSarze.Active) then
dm.vtSarze.Open;
if not(dm.vtSarze.IsEmpty) then
dm.vtSarze.Delete;
dm.vtSarze.Refresh;
if (dm.vtSarze.IsEmpty) then
begin
dm.vtMaterial.Edit;
dm.vtMaterial.FieldByName('colMamSarzi').AsBoolean:= false;
dm.vtMaterial.Post;
end;
end;
procedure TformSarzeVydej.btnOKClick (Sender: TObject);
var lSQL, s: string;
idPZ: Integer;
begin
if (dm.vtMaterial.RecordCount>0) then
begin
if (TestOK) then
begin
dm.vtSarze.Filtered:= false;
if not(dm.vtSarze.IsEmpty) then
begin
dm.vtSarze.First;
while not(dm.vtSarze.Eof) do
begin
idPZ:= dm.vtSarze.FieldByName('colIDPohybOZ').AsInteger;
lSQL:= 'INSERT dbo._TabVyroba_VydejMatSarze (IDPohybZbozi, Sarze) SELECT ' + idPZ.ToString + ', N' + dm.vtSarze.FieldByName('colSarze').AsString.Trim.QuotedString;
Helios.ExecSQL(lSQL);
s:= helUtils.getHeliosStrVal(Helios, '', 'SELECT _Vyroba_Sarze FROM ' + tblPZe + ' WHERE ID=' + idPZ.ToString);
s:= s + IfThen(s<>'', ',', '') + dm.vtSarze.FieldByName('colSarze').AsString.Trim;
lSQL:= 'UPDATE ' + tblPZe + ' SET _Vyroba_Sarze=N' + s.QuotedString;
lSQL:= lSQL + ' WHERE ID=' + dm.vtSarze.FieldByName('colIDPohybOZ').AsString + CRLF + 'IF (@@ROWCOUNT=0) INSERT ' + tblPZe + ' (ID, _Vyroba_Sarze)';
lSQL:= lSQL + ' SELECT ' + dm.vtSarze.FieldByName('colIDPohybOZ').AsString + ', N' + s.QuotedString;
Helios.ExecSQL(lSQL);
dm.vtSarze.Next;
end;
end;
mrVal:= 10;
Close;
end;
end
else
begin
mrVal:= 10;
Close;
end;
end;
procedure TformSarzeVydej.btnZrusitClick (Sender: TObject);
begin
mrVal:= 0;
Close;
end;
procedure TformSarzeVydej.FormShow (Sender: TObject);
begin
if (idVydejka>0) or (sIdPohybuOZ<>'') then
begin
dm.NactiMaterialyProSarze (idVydejka, sIdPohybuOZ);
grdMaterial.Invalidate;
end;
end;
procedure TformSarzeVydej.grdMaterialCellClick (Column: TColumn);
begin
idKZ:= dm.vtMaterial.FieldByName('colIDKmen').AsInteger;
idPZ:= dm.vtMaterial.FieldByName('colIDPohyb').AsInteger;
dm.NactiSarzeProMaterial (idKZ, idPZ);
dm.vtSarze.Filter:= 'colIDKmen=' + idKZ.ToString;
dm.vtSarze.Filtered:= true;
grdSarze.Invalidate;
end;
procedure TformSarzeVydej.grdSarzeCanEditCell(Grid: TJvDBGrid; Field: TField; var AllowEdit: Boolean);
begin
AllowEdit:= (Field=dm.vtSarze.FieldByName('colMnoz'));
end;
end.