591 lines
21 KiB
ObjectPascal
591 lines
21 KiB
ObjectPascal
unit frmKanbanObj;
|
|
|
|
interface
|
|
|
|
uses
|
|
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
|
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Data.DB, FireDAC.Comp.Client, ddPlugin_TLB,
|
|
FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param,
|
|
FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf,
|
|
FireDAC.Comp.DataSet, Vcl.Grids, Vcl.DBGrids, JvExDBGrids, JvDBGrid;
|
|
|
|
const
|
|
KLF_ACTIVATE = $00000001;
|
|
KLF_SETFORPROCESS = $00000100;
|
|
CRLF = #13#10;
|
|
|
|
type
|
|
TformKanbanObj = class(TForm)
|
|
Label1: TLabel;
|
|
lblPocetPol: TLabel;
|
|
Label2: TLabel;
|
|
lblDodavatel: TLabel;
|
|
ds: TDataSource;
|
|
vTable: TFDMemTable;
|
|
vTableIdPohybu: TIntegerField;
|
|
vTableIdKanbanBox: TIntegerField;
|
|
vTableNazev: TStringField;
|
|
vTableMnozstvi: TSmallintField;
|
|
btnStorno: TButton;
|
|
btnOK: TButton;
|
|
btnGenObj: TButton;
|
|
btnGenKoopOrVPr: TButton; // pøidáno 18.3.2021
|
|
vTableRegCis: TStringField;
|
|
mLog: TMemo;
|
|
Label3: TLabel;
|
|
edtBox: TEdit;
|
|
lblWork: TLabel;
|
|
grdPolozky: TJvDBGrid;
|
|
procedure FormShow (Sender: TObject);
|
|
procedure edtBoxKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
procedure btnStornoClick (Sender: TObject);
|
|
procedure FormClose (Sender: TObject; var Action: TCloseAction);
|
|
procedure btnGenObjClick (Sender: TObject);
|
|
procedure btnGenKoopOrVPrClick(Sender: TObject); // pøidáno 18.3.2021
|
|
procedure btnOKClick (Sender: TObject);
|
|
procedure grdPolozkyKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
private
|
|
function IDPol2Str: string;
|
|
public
|
|
Helios: IHelios;
|
|
idObj: integer;
|
|
btnGenVPrOrKoopText: string; // pøidáno 18.3.2021
|
|
PoslatEmail: integer; // pøidáno 10.6.2022
|
|
TypKooObj: boolean; // pøidáno 10.6.2022
|
|
NadpisTypuKoopObj: String; // pøidáno 10.6.2022
|
|
Zarovnani: string; // pøidáno 10.6.2022
|
|
Cesta: string; // pøidáno 10.6.2022
|
|
Nazev: string // pøidáno 10.6.2022
|
|
end;
|
|
|
|
var
|
|
formKanbanObj: TformKanbanObj;
|
|
cOrg: integer;
|
|
jeGenVydej, jeKoopObj, primaObj: Boolean;
|
|
layName: array[0..KL_NAMELENGTH+1] of Char;
|
|
|
|
jsouGenVPr: Boolean; // pøidáno 18.3.2021
|
|
|
|
implementation
|
|
|
|
uses
|
|
System.StrUtils,
|
|
Globalni;
|
|
|
|
{$R *.dfm}
|
|
|
|
function TformKanbanObj.IDPol2Str: string;
|
|
var tmp: string;
|
|
x: integer;
|
|
begin
|
|
x:= vTable.RecNo;
|
|
grdPolozky.LockDrawing;
|
|
vTable.First;
|
|
tmp:= '';
|
|
while not(vTable.Eof) do
|
|
begin
|
|
if (vTable.Fields.FieldByName('IdPohybu').AsString<>'') then
|
|
tmp:= tmp + vTable.Fields.FieldByName('IdPohybu').AsString + ',';
|
|
vTable.Next;
|
|
end;
|
|
if (RightStr(tmp,1)=',') then
|
|
SetLength(tmp, Length(tmp)-1);
|
|
vTable.RecNo:= x;
|
|
grdPolozky.UnlockDrawing;
|
|
result:= tmp;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TformKanbanObj.grdPolozkyKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
begin
|
|
if (jeGenVydej) then
|
|
Helios.Error(#1'Z objednávky byla vytvoøena výdejka obalù, záznamy nelze mazat.'#1)
|
|
else
|
|
begin
|
|
// pøidáno 18.3.2021
|
|
if (jsouGenVPr) then
|
|
Helios.Error(#1'Z objednávky byly vygenerovány výrobní pøíkazy nebo kooperaèní objednávka, záznamy nelze mazat.'#1)
|
|
else
|
|
begin
|
|
// konec pøidáno 18.3.2021
|
|
if (Key=VK_DELETE) and (vTable.RecordCount>0) then
|
|
if Helios.YesNo('Opravdu chcete z objednávky smazat tento box ?',false) then
|
|
begin
|
|
vTable.Delete;
|
|
lblPocetPol.Caption:= IntToStr(StrToInt(lblPocetPol.Caption)-1);
|
|
grdPolozky.Refresh;
|
|
edtBox.SetFocus;
|
|
end;
|
|
end;
|
|
end; // pøidáno 18.3.2021
|
|
end;
|
|
|
|
|
|
|
|
procedure TformKanbanObj.btnStornoClick(Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformKanbanObj.btnOKClick(Sender: TObject);
|
|
var lSQL, idcka, idKZobal: string;
|
|
x: integer;
|
|
begin
|
|
lblWork.Visible:= true;
|
|
lblWork.Caption:= 'Ukládám položky...';
|
|
|
|
lSQL:= 'DECLARE @i INT; SELECT @i=ISNULL(MAX(id),0) FROM dbo._TabKanbanPohyby;DBCC CHECKIDENT(_TabKanbanPohyby,reseed,@i);';
|
|
Helios.ExecSQL(lSQL);
|
|
|
|
idcka:= IDPol2Str;
|
|
if (idObj>0) then
|
|
begin
|
|
Helios.ExecSQL('DELETE FROM dbo._TabKanbanPohyby WHERE IdKanbanObj=' + IntToStr(idObj) + ' AND Id NOT IN (' + IfThen(idcka='','0',idcka) + ')');
|
|
|
|
x:= vTable.RecNo;
|
|
grdPolozky.BeginUpdate;
|
|
vTable.First;
|
|
while not(vTable.Eof) do
|
|
begin
|
|
if (vTable.Fields.FieldByName('IdPohybu').AsString='') then
|
|
begin
|
|
idKZobal:= '';
|
|
lSQL:= 'SELECT kzO.Id FROM dbo._TabKanbanBox b INNER JOIN dbo.TabKmenZbozi kz ON (kz.Id=b.IdKmenZbozi)';
|
|
lSQL:= lSQL + ' LEFT JOIN dbo.TabKmenZbozi_EXT kze ON (kze.Id=kz.Id) LEFT JOIN dbo.TabKmenZbozi kzO ON';
|
|
lSQL:= lSQL + ' (kzO.CisloZbozi=kze._KanbanObal) WHERE b.Id=' + vTable.Fields.FieldByName('IdKanbanBox').AsString;
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
if not VarIsNull(FieldValues(0)) then
|
|
idKZobal:= VarToStr(FieldValues(0));
|
|
|
|
lSQL:= 'INSERT dbo._TabKanbanPohyby (IDKanbanObj, IDKanbanBox, IdKmenZboziObal) VALUES (';
|
|
lSQL:= lSQL + IntToStr(idObj) + ',' + vTable.Fields.FieldByName('IdKanbanBox').AsString + ',';
|
|
lSQL:= lSQL + IfThen(idKZobal='','null',idKZobal) + ')';
|
|
Helios.ExecSQL(lSQL);
|
|
end;
|
|
vTable.Next;
|
|
end;
|
|
vTable.RecNo:= x;
|
|
grdPolozky.EndUpdate;
|
|
Close;
|
|
|
|
end
|
|
else
|
|
begin
|
|
if (cOrg >=0) then
|
|
begin // pøidáno 18.3.2021
|
|
lSQL:= 'DECLARE @i INT; SELECT @i=ISNULL(MAX(id),0) FROM dbo._TabKanbanObj; DBCC CHECKIDENT(_TabKanbanObj,reseed,@i);';
|
|
Helios.ExecSQL(lSQL);
|
|
lSQL:= 'INSERT dbo._TabKanbanObj (CisloOrgKoop) VALUES (' + IntToStr(cOrg) + '); SELECT SCOPE_IDENTITY()';
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
idObj:= StrToInt(VarToStr(FieldValues(0)));
|
|
|
|
x:= vTable.RecNo;
|
|
grdPolozky.BeginUpdate;
|
|
vTable.First;
|
|
while not(vTable.Eof) do
|
|
begin
|
|
idKZobal:= '';
|
|
lSQL:= 'SELECT kzO.Id FROM dbo._TabKanbanBox b INNER JOIN dbo.TabKmenZbozi kz ON (kz.Id=b.IdKmenZbozi)';
|
|
lSQL:= lSQL + ' LEFT JOIN dbo.TabKmenZbozi_EXT kze ON (kze.Id=kz.Id) LEFT JOIN dbo.TabKmenZbozi kzO ON';
|
|
lSQL:= lSQL + ' (kzO.CisloZbozi=kze._KanbanObal) WHERE b.Id=' + vTable.Fields.FieldByName('IdKanbanBox').AsString;
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
if not VarIsNull(FieldValues(0)) then
|
|
idKZobal:= VarToStr(FieldValues(0));
|
|
|
|
lSQL:= 'INSERT dbo._TabKanbanPohyby (IDKanbanObj, IDKanbanBox, IdKmenZboziObal) VALUES (';
|
|
lSQL:= lSQL + IntToStr(idObj) + ',' + vTable.Fields.FieldByName('IdKanbanBox').AsString + ',';
|
|
lSQL:= lSQL + IfThen(idKZobal='','null',idKZobal) + ')';
|
|
Helios.ExecSQL(lSQL);
|
|
vTable.Next;
|
|
end;
|
|
vTable.RecNo:= x;
|
|
grdPolozky.EndUpdate;
|
|
Close;
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
Close;
|
|
end; // pøidáno 18.3.2021
|
|
end;
|
|
lblWork.Visible:= false;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformKanbanObj.btnGenObjClick (Sender: TObject);
|
|
begin
|
|
btnGenObj.Caption:= 'Probíhá generování...';
|
|
if (primaObj) then
|
|
btnOKClick(Sender);
|
|
try
|
|
Helios.ExecSQL('EXEC dbo.ep_KanbanGenVydejObalu @idKanObj=' + IntToStr(idObj));
|
|
btnGenObj.Caption:= 'Generuj výdejku obalù';
|
|
with Helios.OpenSQL('SELECT IdVydejObalu FROM dbo._TabKanbanObj WHERE Id=' + IntToStr(idObj)) do
|
|
if (RecordCount=1) then
|
|
if not VarIsNull(FieldValues(0)) then
|
|
Helios.PrintForm3(18, 2, 'TabDokladyZbozi.Id=' + VarToStr(FieldValues(0)));
|
|
Close;
|
|
except on E:Exception do
|
|
Helios.Error(#1'Chyba pøi generování výdejky kanban boxù'#1#13#10 + E.Message);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
// pøidáno 18.3.2021
|
|
procedure TformKanbanObj.btnGenKoopOrVPrClick (Sender: TObject);
|
|
var
|
|
IDKoopObj, JeGenKoop : integer;
|
|
Sql : string;
|
|
JmenoSouboruVyg: String;
|
|
begin
|
|
|
|
//if (primaObj) then
|
|
btnOKClick (Sender);
|
|
|
|
with Helios.OpenSQL('SELECT CASE WHEN EXISTS (SELECT 1 FROM dbo._TabKanbanPohyby WHERE IdKanbanObj = ' + IntToStr(idObj) + ' AND IDPrikaz IS NULL) OR NOT EXISTS (SELECT 1 FROM dbo._TabKanbanPohyby WHERE IdKanbanObj = ' + IntToStr(idObj) + ') THEN 1 ELSE 0 END' ) do
|
|
begin
|
|
if VarIsNull(FieldValues(0)) or (VarToStr(FieldValues(0))='0') or (VarToStr(FieldValues(0))='') then begin
|
|
Helios.Error('Výrobní pøíkazy již byly vygenerovány. Nelze je vygenerovat znovu');
|
|
exit;
|
|
end;
|
|
end;
|
|
|
|
with Helios.OpenSQL('SELECT CASE WHEN EXISTS (SELECT 1 FROM dbo._TabKanbanPohyby WHERE IdKanbanObj = ' + IntToStr(idObj) + ') THEN 1 ELSE 0 END' ) do
|
|
begin
|
|
if VarIsNull(FieldValues(0)) or (VarToStr(FieldValues(0))='0') or (VarToStr(FieldValues(0))='') then begin
|
|
Helios.Error('Nejsou zadány žádné položky');
|
|
exit;
|
|
end;
|
|
end;
|
|
|
|
btnGenKoopOrVPr.Caption:= 'Probíhá generování...';
|
|
|
|
try
|
|
//Helios.ExecSQL('EXEC dbo.hpx_NTS_Kanban_GenerujKoopObjNeboVPr @idKanObj=' + IntToStr(idObj)); // zakomentováno 10.6.2022
|
|
|
|
// pøidáno 10.6.2022
|
|
Sql := 'DECLARE @IDKoopObj INT, @VzniklaKoopObj INT; ';
|
|
Sql := Sql + ' EXEC dbo.hpx_NTS_Kanban_GenerujKoopObjNeboVPr_Plugin @idKanObj=' + IntToStr(idObj) + ', @IDKoopObj = @IDKoopObj OUT, @VzniklaKoopObj = @VzniklaKoopObj OUT;';
|
|
Sql := Sql + ' SELECT @IDKoopObj AS IDKoopObj, @VzniklaKoopObj AS VzniklaKoopObj';
|
|
|
|
|
|
with Helios.OpenSQL(Sql) do
|
|
begin
|
|
if not VarIsNull(FieldValues(0)) then IDKoopObj := FieldValues(0) else IDKoopObj := -99;
|
|
if not VarIsNull(FieldValues(1)) then JeGenKoop := FieldValues(1) else JeGenKoop := 0;
|
|
|
|
|
|
end;
|
|
// konec pøidání 10.6.2022
|
|
|
|
btnGenKoopOrVPr.Caption:= btnGenVPrOrKoopText;
|
|
|
|
|
|
//Close; // zakomentováno 10.6.2022
|
|
except on E:Exception do begin
|
|
Helios.Error(#1'Chyba pøi generování kooperaèní objednávky nebo VPø'#1#13#10 + E.Message);
|
|
btnGenKoopOrVPr.Caption:= btnGenVPrOrKoopText; // pøidáno 10.6.2022
|
|
exit; // pøidáno 10.6.2022
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
// pøidáno 10.6.2022
|
|
if (PoslatEmail = 1) and (IDKoopObj > 0) and (JeGenKoop > 0) then begin
|
|
btnGenKoopOrVPr.Caption:= 'Export do xls...';
|
|
|
|
// export do xls
|
|
with Helios.OpenSQL('SELECT id FROM dbo.TabKoopObj WHERE realizovano=0 AND id=' + IntToStr(IDKoopObj)) do begin
|
|
if (RecordCount=0) then begin
|
|
|
|
JmenoSouboruVyg:= ExportKoopObjXls (Helios, IDKoopObj, TypKooObj, NadpisTypuKoopObj, Zarovnani, Cesta, Nazev, 0) ;
|
|
|
|
end else begin
|
|
Helios.Error(#1'Kooperaèní objednávka není realizována, nelze exportovat.'#1 + CRLF + 'Realizujte jí a zkuste to znovu.');
|
|
end;
|
|
end;
|
|
|
|
|
|
// zavolání procedury na poslání e-mailu
|
|
btnGenKoopOrVPr.Caption:= 'Generování e-mailu...';
|
|
|
|
Sql := 'DECLARE @IDExtKom INT = ' + IntToStr(Helios.ExtKomID) + ', @Soubor NVARCHAR(255) = N''' + JmenoSouboruVyg + ''', @Cesta NVARCHAR(255) = N''' + Cesta + ''', @Chyba NVARCHAR(500);';
|
|
Sql := Sql + ' EXEC dbo.hpx_OdeslatKooperacniObjednavkuEmailem_Plugin @IDExtKom , @Soubor = @Soubor, @Cesta = @Cesta, @Chyba = @Chyba OUT, @IDKoopObj = ' + IntToStr(IDKoopObj) + ';' ;
|
|
Sql := Sql + ' SELECT @Chyba; ' ;
|
|
|
|
// Helios.Info(sql);
|
|
|
|
with Helios.OpenSQL(Sql) do
|
|
begin
|
|
if (Not VarIsNull(FieldValues(0))) and (trim(VarToStr(FieldValues(0)))<>'') then begin
|
|
Helios.Error(VarToStr(FieldValues(0)));
|
|
|
|
end;
|
|
end;
|
|
|
|
btnGenKoopOrVPr.Caption:= btnGenVPrOrKoopText;
|
|
end;
|
|
|
|
|
|
Close;
|
|
// konec pøidání 10.6.2022
|
|
|
|
end;
|
|
// konec pøidání 18.3.2021
|
|
|
|
|
|
|
|
procedure TformKanbanObj.edtBoxKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
var lSQL: string;
|
|
idx, idKZ: Integer;
|
|
PridatPolozku: boolean; // pøidáno 18.3.2021
|
|
begin
|
|
edtBox.Text:= Trim(edtBox.Text);
|
|
if (jeKoopObj) then
|
|
begin
|
|
Helios.Error(#1'Byla vytvoøena Kooperaèní objednávka, položky nelze pøidávat.'#1);
|
|
Exit;
|
|
end;
|
|
|
|
// pøidáno 18.3.2021
|
|
if (jsouGenVPr) then
|
|
begin
|
|
Helios.Error(#1'Byly vytvoøeny výrobní pøíkazy, položky nelze pøidávat.'#1);
|
|
Exit;
|
|
end;
|
|
// konec pøidání 18.3.2021
|
|
|
|
if (jeGenVydej) then
|
|
begin
|
|
Helios.Error(#1'Byla vytvoøena výdejka na obaly, položky nelze pøidávat.'#1);
|
|
Exit;
|
|
end;
|
|
if ((Key=VK_TAB) or (Key=VK_RETURN)) and (edtBox.Text<>'') then
|
|
begin
|
|
idx:= vTable.RecNo;
|
|
if not(vTable.Locate('IdKanbanBox', VarArrayOf([edtBox.Text]),[loCaseInsensitive])) then
|
|
begin
|
|
PridatPolozku := true; //pøidáno 18.3.2021
|
|
vTable.RecNo:= idx;
|
|
with Helios.OpenSQL('SELECT id FROM dbo._TabKanbanBox WHERE Id=' + edtBox.Text) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
lSQL:= 'SELECT kz.RegCis, kz.Nazev1, kze._KanbanMnozstvi, kz.Id FROM dbo._TabKanbanBox b';
|
|
lSQL:= lSQL + ' INNER JOIN dbo.TabKmenZbozi kz ON (kz.Id=b.IdKmenZbozi)';
|
|
lSQL:= lSQL + ' LEFT JOIN dbo.TabKmenZbozi_EXT kze ON (kze.Id=kz.Id) WHERE b.Id=' + edtBox.Text;
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
if (cOrg=-99) then // upraveno 18.3.2021
|
|
begin
|
|
idKZ:= StrToInt(VarToStr(FieldValues(3)));
|
|
lSQL:= 'SELECT se._CisloOrg, co.Nazev FROM dbo.TabKmenZbozi kz INNER JOIN dbo.TabStrom s ON (s.Cislo=kz.KmenoveStredisko)';
|
|
lSQL:= lSQL + ' INNER JOIN dbo.TabStrom_EXT se ON (se.Id=s.Id) INNER JOIN dbo.TabCisOrg co ON (co.CisloOrg=se._CisloOrg)';
|
|
lSQL:= lSQL + ' WHERE kz.Id=' + IntToStr(idKZ);
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
cOrg:= StrToInt(VarToStr(FieldValues(0)));
|
|
lblDodavatel.Caption:= VarToStr(FieldValues(1));
|
|
end;
|
|
|
|
// pøidáno 18.3.2021
|
|
end else begin
|
|
idKZ:= StrToInt(VarToStr(FieldValues(3)));
|
|
lSQL:= 'SELECT se._CisloOrg, co.Nazev FROM dbo.TabKmenZbozi kz INNER JOIN dbo.TabStrom s ON (s.Cislo=kz.KmenoveStredisko)';
|
|
lSQL:= lSQL + ' INNER JOIN dbo.TabStrom_EXT se ON (se.Id=s.Id) INNER JOIN dbo.TabCisOrg co ON (co.CisloOrg=se._CisloOrg)';
|
|
lSQL:= lSQL + ' WHERE kz.Id=' + IntToStr(idKZ);
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
if (cOrg <> StrToInt(VarToStr(FieldValues(0)))) then begin
|
|
PridatPolozku := false;
|
|
Helios.Error('Tento kanbanbox patøí jiné organizaci. Nelze pøidat na objednávku.') ;
|
|
if (mLog.Lines.Count=0) then
|
|
mLog.Lines.Append('Kanbanbox patøí jiné organizaci: ' + edtBox.Text)
|
|
else
|
|
mLog.Lines.Insert(0, 'Kanbanbox patøí jiné organizaci: ' + edtBox.Text);
|
|
end;
|
|
|
|
end;
|
|
// konec pøidáno 18.3.2021
|
|
end;
|
|
|
|
if (PridatPolozku) then begin // pøidáno 18.3.2021
|
|
|
|
vTable.Append;
|
|
vTable.Fields.FieldByName('IdKanbanBox').AsString:= edtBox.Text;
|
|
vTable.Fields.FieldByName('RegCis').AsString:= VarToStr(FieldValues(0));
|
|
vTable.Fields.FieldByName('Nazev').AsString:= VarToStr(FieldValues(1));
|
|
vTable.Fields.FieldByName('Mnozstvi').AsInteger:= StrToInt(VarToStr(FieldValues(2)));
|
|
vTable.Post;
|
|
lblPocetPol.Caption:= IntToStr(1 + StrToInt(lblPocetPol.Caption));
|
|
end; // pøidáno 18.3.2021
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
if (mLog.Lines.Count=0) then
|
|
mLog.Lines.Append('Nebyl nalezen kanban box: ' + edtBox.Text)
|
|
else
|
|
mLog.Lines.Insert(0, 'Nebyl nalezen kanban box: ' + edtBox.Text);
|
|
end;
|
|
end
|
|
else
|
|
if (mLog.Lines.Count=0) then
|
|
mLog.Lines.Append('Kanban box je již zadán: ' + edtBox.Text)
|
|
else
|
|
mLog.Lines.Insert(0, 'Kanban box je již zadán: ' + edtBox.Text);
|
|
edtBox.Text:= '';
|
|
edtBox.SetFocus;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformKanbanObj.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
begin
|
|
if (layName[0]<>'') then
|
|
LoadKeyboardLayout(@layName, KLF_ACTIVATE or KLF_SETFORPROCESS);
|
|
if (vTable.Active) then
|
|
vTable.Close;
|
|
Action:= caFree;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformKanbanObj.FormShow(Sender: TObject);
|
|
var lSQL: string;
|
|
begin
|
|
|
|
if GetKeyboardLayoutName(@layName) then
|
|
LoadKeyboardLayout('00020409', KLF_ACTIVATE or KLF_SETFORPROCESS);
|
|
|
|
lblWork.Visible:= false;
|
|
cOrg:= -99; // upraveno 18.3.2021
|
|
jeGenVydej:= false;
|
|
jeKoopObj:= false;
|
|
jsouGenVPr := false; // pøidáno 18.3.2021
|
|
primaObj:= true;
|
|
if not(vTable.Active) then
|
|
vTable.Open;
|
|
vTable.EmptyDataSet;
|
|
Self.Caption:= 'Kanban objednávka';
|
|
edtBox.SetFocus;
|
|
edtBox.Color:= clWindow;
|
|
btnGenObj.Enabled:= true;
|
|
btnGenKoopOrVPr.Enabled:= true; // pøidáno 18.3.2021
|
|
|
|
//pøidáno 18.3.2021
|
|
with Helios.OpenSQL('EXEC dbo.hpx_NTS_Kanban_TextButonuGenVPrNeboKoop') do
|
|
begin
|
|
btnGenVPrOrKoopText:=VarToStr(FieldValues(0));
|
|
btnGenKoopOrVPr.Width := StrToInt(VarToStr(FieldValues(1))) ;
|
|
btnGenKoopOrVPr.Height := StrToInt(VarToStr(FieldValues(2))) ;
|
|
btnGenKoopOrVPr.Top := StrToInt(VarToStr(FieldValues(3))) ;
|
|
btnGenKoopOrVPr.Left := StrToInt(VarToStr(FieldValues(4))) ;
|
|
btnGenKoopOrVPr.Font.Height := StrToInt(VarToStr(FieldValues(5))) ;
|
|
end;
|
|
btnGenKoopOrVPr.Caption := btnGenVPrOrKoopText;
|
|
// konec pøidání 18.3.2021
|
|
|
|
if (idObj>0) then
|
|
begin
|
|
primaObj:= false;
|
|
with Helios.OpenSQL('SELECT CisloOrgKoop, IdVydejObalu, IdKoopObj FROM dbo._TabKanbanObj WHERE Id=' + IntToStr(idObj)) do
|
|
begin
|
|
cOrg:= StrToInt(VarToStr(FieldValues(0)));
|
|
if not VarIsNull(FieldValues(1)) and (VarToStr(FieldValues(1))<>'0') and (VarToStr(FieldValues(1))<>'') then
|
|
jeGenVydej:= true;
|
|
if not VarIsNull(FieldValues(2)) and (VarToStr(FieldValues(2))<>'0') and (VarToStr(FieldValues(2))<>'') then
|
|
jeKoopObj:= true;
|
|
end;
|
|
|
|
// pøidáno 18.3.2021
|
|
with Helios.OpenSQL('SELECT COUNT(1) FROM dbo._TabKanbanPohyby WHERE IdKanbanObj = ' + IntToStr(idObj) + ' AND IDPrikaz IS NOT NULL' ) do
|
|
begin
|
|
if not VarIsNull(FieldValues(0)) and (VarToStr(FieldValues(0))<>'0') and (VarToStr(FieldValues(0))<>'') then
|
|
jsouGenVPr:= true else jsouGenVPr := false;
|
|
end;
|
|
// konec pøidání 18.3.2021
|
|
|
|
if (jeKoopObj) or (jeGenVydej) or (jsouGenVPr) then // upraveno 18.3.2021
|
|
begin
|
|
btnGenObj.Enabled:= false;
|
|
edtBox.Enabled:= false;
|
|
edtBox.Color:= clBtnFace;
|
|
btnStorno.SetFocus;
|
|
if ((jeKoopObj) or (jeGenVydej)) then btnGenKoopOrVPr.Enabled := false;
|
|
|
|
end;
|
|
if (jeKoopObj) then
|
|
begin
|
|
Self.Caption:= Self.Caption + ' (odeslána)';
|
|
mLog.Lines.Insert(0, 'Objednávka byla již odeslána...');
|
|
end
|
|
else
|
|
begin
|
|
if (jeGenVydej) then
|
|
begin
|
|
Self.Caption:= Self.Caption + ' (výdejka obalù)';
|
|
mLog.Lines.Insert(0, 'Byla již vygenerována výdejka obalù...');
|
|
end
|
|
else
|
|
begin
|
|
// pøidáno 18.3.2021
|
|
if (jsouGenVPr) then
|
|
begin
|
|
Self.Caption:= Self.Caption + ' (výrobní pøíkaz)';
|
|
mLog.Lines.Insert(0, 'Byl již vygenerován výrobní pøíkaz...');
|
|
end;
|
|
// konec pøidání 18.3.2021
|
|
end;
|
|
end;
|
|
|
|
with Helios.OpenSQL('SELECT Nazev FROM dbo.TabCisOrg WHERE CisloOrg=' + IntToStr(cOrg)) do
|
|
lblDodavatel.Caption:= VarToStr(FieldValues(0));
|
|
|
|
lSQL:= 'SELECT p.Id, b.Id, kz.RegCis, kz.Nazev1, kze._KanbanMnozstvi FROM dbo._TabKanbanPohyby p';
|
|
lSQL:= lSQL + ' INNER JOIN dbo._TabKanbanBox b ON (p.IdKanbanBox=b.Id)';
|
|
lSQL:= lSQL + ' INNER JOIN dbo.TabKmenZbozi kz ON (kz.Id=b.IdKmenZbozi)';
|
|
lSQL:= lSQL + ' INNER JOIN dbo.TabKmenZbozi_EXT kze ON (kze.Id=kz.Id)';
|
|
lSQL:= lSQL + ' WHERE p.IdKanbanObj=' + IntToStr(idObj) + ' ORDER BY p.Id';
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
lblPocetPol.Caption:= IntToStr(RecordCount);
|
|
grdPolozky.BeginUpdate;
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
vTable.Append;
|
|
vTable.Fields.FieldByName('IdPohybu').AsString:= VarToStr(FieldValues(0));
|
|
vTable.Fields.FieldByName('IdKanbanBox').AsString:= VarToStr(FieldValues(1));
|
|
vTable.Fields.FieldByName('RegCis').AsString:= VarToStr(FieldValues(2));
|
|
vTable.Fields.FieldByName('Nazev').AsString:= VarToStr(FieldValues(3));
|
|
vTable.Fields.FieldByName('Mnozstvi').AsInteger:= StrToInt(VarToStr(FieldValues(4)));
|
|
vTable.Post;
|
|
Next;
|
|
end;
|
|
grdPolozky.EndUpdate;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
end.
|