Files
LOVATO-plugin/frmKanbanBox.pas
2026-04-07 18:23:56 +02:00

229 lines
6.6 KiB
ObjectPascal
Raw Permalink Blame History

unit frmKanbanBox;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, System.StrUtils,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, RzEdit, RzBtnEdt, ddPlugin_TLB,
Vcl.ExtCtrls;
const
tblKanBox = '[dbo].[_TabKanbanBox]';
tblKmen = '[dbo].[TabKmenZbozi]';
type
TformKanbanBox = class(TForm)
selCisloZbozi: TRzButtonEdit;
Label1: TLabel;
Label2: TLabel;
lblID: TEdit;
lblPopis: TLabel;
edtKs: TEdit;
Label3: TLabel;
btnOK: TButton;
btnZrus: TButton;
Label4: TLabel;
edtPozn: TEdit;
colBarva1: TPanel;
colBarva2: TPanel;
procedure FormShow(Sender: TObject);
procedure btnZrusClick(Sender: TObject);
procedure btnOKClick(Sender: TObject);
procedure selCisloZboziButtonClick(Sender: TObject);
procedure edtPoznExit(Sender: TObject);
procedure edtKsExit(Sender: TObject);
procedure selCisloZboziExit(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
procedure NactiKmen(idKZx: Integer); safecall;
public
Helios: IHelios;
idBox: integer;
end;
var
formKanbanBox: TformKanbanBox;
idKZ: integer;
edit: boolean;
mnoz: integer;
implementation
{$R *.dfm}
procedure TformKanbanBox.btnOKClick(Sender: TObject);
var lSQL: string;
jeOK: boolean;
begin
jeOK:= true;
if (edit) then
begin
lSQL:= 'Zmenil=SUSER_SNAME(), DatZmeny=GETDATE(), Poznamka=' + Ifthen(edtPozn.Text='','null','N' + QuotedStr(edtPozn.Text));
jeOK:= true;
end
else
begin
if (idKZ=0) then
begin
jeOK:= false;
selCisloZbozi.SetFocus;
end;
lSQL:= 'idKmenZbozi=' + IntToStr(idKZ) + ',Mnozstvi=' + edtKs.Text + ',Poznamka=' + Ifthen(edtPozn.Text='','null','N' + QuotedStr(edtPozn.Text));
end;
if (jeOK) then
begin
lSQL:= 'UPDATE ' + tblKanBox + ' SET ' + lSQL + ' WHERE id=' + IntToStr(idBox);
try
Helios.ExecSQL(lSQL);
Helios.Refresh(true);
Close;
except on E:Exception do
Helios.Error(#1'Chyba box ' + IntToStR(idBox) + ': '#1 + E.Message);
end;
end
else
Helios.Error(#1'Vypl<70>te v<>echny pot<6F>ebn<62> <20>daje...'#1);
end;
procedure TformKanbanBox.btnZrusClick(Sender: TObject);
begin
with Helios.OpenSQL('SELECT id FROM ' + tblKanBox + ' WHERE Id=' + IntToStr(idBox) + ' AND IdKmenZbozi=0') do
if (RecordCount=1) then
Helios.ExecSQL('DELETE FROM ' + tblKanBox + ' WHERE Id=' + IntToStr(idBox));
with Helios.OpenSQL('SELECT ISNULL(MAX(id),1) FROM ' + tblKanBox) do
Helios.ExecSQL('DBCC CHECKIDENT(_TabKanbanBox, reseed, ' + VarToStr(FieldValues(0)) + ')');
Close;
end;
procedure TformKanbanBox.edtKsExit(Sender: TObject);
begin
edtKs.Text:= Trim(edtKs.Text);
end;
procedure TformKanbanBox.edtPoznExit(Sender: TObject);
begin
edtPozn.Text:= Trim(edtPozn.Text);
end;
procedure TformKanbanBox.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:= caFree;
end;
function RGBtoTColor(strRGB: string): TColor;
var sR,sG,sB: string;
r,g,b: byte;
begin
result:= 0;
strRGB:= StringOfChar('0', 6-Length(strRGB)) + strRGB;
sR:= LeftStr(strRGB,2);
r:= StrToInt('$'+sR);
sG:= MidStr(strRGB,3,2);
g:= StrToInt('$'+sG);
sB:= RightStr(strRGB,2);
b:= StrToInt('$'+sB);
result:= RGB(r,g,b);
end;
procedure TformKanbanBox.FormShow(Sender: TObject);
var lSQL: string;
begin
edit:= false;
selCisloZbozi.Enabled:= false;
edtKs.Enabled:= false;
mnoz:= 0;
if (idBox>0) then
begin
edit:= true;
lSQL:= 'SELECT kz.CisloZbozi, kz.Nazev1, kz.Id, kze._KanbanMnozstvi, b.Poznamka, kze._KanbanBarva,';
lSQL:= lSQL + ' kze._KanbanBarva2 FROM ' + tblKanBox + ' b INNER JOIN ' + tblKmen + ' kz ON (kz.Id=b.IdKmenZbozi) INNER JOIN';
lSQL:= lSQL + ' dbo.TabKmenZbozi_EXT kze ON (kze.Id=kz.Id) WHERE b.Id=' + IntToStr(idBox);
with Helios.OpenSQL(lSQL) do
if (RecordCount>0) then
begin
lblID.Text:= IntToStr(idBox);
selCisloZbozi.Text:= VarToStr(FieldValues(0));
lblPopis.Caption:= VarToStr(FieldValues(1));
idKZ:= StrToInt(VarToStr(FieldValues(2)));
edtKs.Text:= VarToStr(FieldValues(3));
if not(VarIsNull(FieldValues(4))) then
edtPozn.Text:= Trim(VarToStr(FieldValues(4)));
if not(VarIsNull(FieldValues(5))) then
// colBarva1.Color:= RGBtoTColor(IntToHex(StrToInt(VarToStr(FieldValues(5))),2));
colBarva1.Color:= StrToInt(VarToStr(FieldValues(5)));
if not(VarIsNull(FieldValues(6))) then
// colBarva2.Color:= RGBtoTColor(IntToHex(StrToInt(VarToStr(FieldValues(6))),2));
colBarva2.Color:= StrToInt(VarToStr(FieldValues(6)));
end;
end
else
begin
idBox:= 0;
with Helios.OpenSQL('INSERT ' + tblKanBox + ' (Mnozstvi) VALUES (0); SELECT SCOPE_IDENTITY();') do
begin
lblID.Text:= VarToStr(FieldValues(0));
idBox:= StrToInt(lblID.Text);
end;
idKZ:= 0;
lblPopis.Caption:= '';
selCisloZbozi.Enabled:= true;
selCisloZbozi.Text:= '';
end;
end;
procedure TformKanbanBox.NactiKmen(idKZx: Integer);
var lSQL: string;
begin
lSQL:= 'SELECT kz.RegCis, kz.Nazev1, kze._KanbanBarva, kze._KanbanBarva2, kze._KanbanMnozstvi FROM ' + tblKmen + ' kz';
lSQL:= lSQL + ' LEFT JOIN dbo.TabKmenZbozi_EXT kze ON (kze.Id=kz.Id) WHERE kz.Id=' + IntToStr(idKZx);
with Helios.OpenSQL(lSQL) do
begin
selCisloZbozi.Text:= VarToStr(FieldValues(0));
lblPopis.Caption:= VarToStr(FieldValues(1));
if not VarIsNull(FieldValues(2)) then
colBarva1.Color:= StrToInt(VarToStr(FieldValues(2)));
if not VarIsNull(FieldValues(3)) then
colBarva1.Color:= StrToInt(VarToStr(FieldValues(3)));
if not VarIsNull(FieldValues(4)) then
edtKs.Text:= VarToStr(FieldValues(4));
end;
end;
procedure TformKanbanBox.selCisloZboziButtonClick(Sender: TObject);
var oVar: OleVariant;
begin
if Helios.Prenos(2,'TabKmenZbozi.id',oVar,'TabKmenZbozi.Blokovano=0','Vyberte polo<6C>ku',true) then
begin
idKZ:= StrToInt(VarToStr(oVar));
NactiKmen(idKZ);
end;
end;
procedure TformKanbanBox.selCisloZboziExit(Sender: TObject);
begin
selCisloZbozi.Text:= Trim(selCisloZbozi.Text);
if (selCisloZbozi.Text<>'') and (idKZ=0) then
begin
with Helios.OpenSQL('SELECT id FROM ' + tblKmen + ' WHERE RegCis=N' + QuotedStr(selCisloZbozi.Text)) do
if (RecordCount=1) then
begin
idKZ:= StrToInt(VarToStr(FieldValues(0)));
NactiKmen(idKZ);
end;
end;
end;
end.