210 lines
5.0 KiB
ObjectPascal
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.
|