Files
Polanskych-plgPolanskych/frmZamena.pas
2025-09-05 12:22:48 +02:00

163 lines
4.7 KiB
ObjectPascal

unit frmZamena;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, Vcl.NumberBox, ddPlugin_TLB;
type
TformZamena = class(TForm)
Label1: TLabel;
edtKod: TEdit;
btnHledat: TBitBtn;
Label2: TLabel;
lblNazev: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
edtNakup: TNumberBox;
edtMnoz: TNumberBox;
btnOK: TButton;
btnStorno: TButton;
lblStav: TLabel;
procedure btnHledatClick(Sender: TObject);
procedure edtNakupExit(Sender: TObject);
procedure btnOKClick(Sender: TObject);
procedure btnStornoClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure edtKodExit(Sender: TObject);
private
public
Helios: IHelios;
jeTest: boolean;
end;
var
formZamena: TformZamena;
idKZ, idSS: integer;
mj: string;
stav: Extended;
implementation
uses helUtils;
{$R *.dfm}
procedure TformZamena.btnHledatClick(Sender: TObject);
var lSQL: string;
begin
edtKod.Text:= edtKod.Text.Trim;
if (edtKod.Text<>'') then
begin
try
with Helios.OpenSQL('SELECT ID FROM ' + tblKZ + ' WHERE RegCis=N' + edtKod.Text.QuotedString) do
if (RecordCount=1) then
begin
idKZ:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblKZ + ' WHERE RegCis=N' + edtKod.Text.QuotedString);
lblNazev.Caption:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev1 FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString);
mj:= helUtils.getHeliosStrVal(Helios, '', 'SELECT MJEvidence FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString);
stav:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT Mnozstvi FROM ' + tblSS + ' WHERE IDSklad=N' + Helios.Sklad.QuotedString + ' AND IDKmenZbozi=' + idKZ.toString);
lblStav.Caption:= Trim(stav.ToString + ' ' + mj);
lSQL:= 'CASE Mnozstvi WHEN 0 THEN 0 ELSE StavSkladuSouvis/Mnozstvi END';
edtNakup.Value:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT ' + lSQL + ' FROM ' + tblSS + ' WHERE IDSklad=N' + Helios.Sklad.QuotedString + ' AND IDKmenZbozi=' + idKZ.toString);
end
else
begin
stav:= 0;
lblStav.Caption:= '';
lblNazev.Caption:= '';
idKZ:= 0;
if (RecordCount=0) then
Helios.Error(#1'Nebyla nalezena žádná karta'#1)
else
Helios.Error(#1'Zadanému kódu odpovídá víc než 1 karta'#1);
if (edtKod.CanFocus) then
edtKod.SetFocus;
end;
except
end;
end;
end;
procedure TformZamena.btnOKClick(Sender: TObject);
var lSQL: string;
begin
if (edtMnoz.Value<(-1.0*stav)) then
begin
Helios.Error(#1'!! Nelze vydat víc než máte skladem !!'#1);
if (edtMnoz.CanFocus) then
begin
edtMnoz.SetFocus;
Exit;
end;
end;
if (edtMnoz.Value=0) then
Helios.Error(#1'Zadejte množství'#1)
else
if (idKZ=0) then
Helios.Error(#1'Není specifikována karta zboží'#1)
else
begin
lSQL:= 'IF OBJECT_ID(N''tempdb..#TabAppZamena'') IS NOT NULL DROP TABLE #TabAppZamena' + CRLF;
lSQL:= lSQL + 'CREATE TABLE #TabAppZamena (IDKmenZbozi INT, IDSklad NVARCHAR(30) NOT NULL, Mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0.0';
lSQL:= lSQL + ', NakupniCena NUMERIC(19,6) NOT NULL DEFAULT 0.0, UserID INT NOT NULL)' + CRLF;
lSQL:= lSQL + 'INSERT #TabAppZamena (IDKmenZbozi, IDSklad, Mnozstvi, NakupniCena, UserID) SELECT ' + idKZ.ToString + ', N' + Helios.Sklad.QuotedString;
lSQL:= lSQL + ', ' + edtMnoz.Value.ToString.Replace(',', '.') + ', ' + edtNakup.Value.ToString.Replace(',', '.') + ', ' + Helios.UserId.ToString + CRLF;
lSQL:= lSQL + 'IF OBJECT_ID(N''dbo.ep_HDC_App_Zamena'') IS NOT NULL EXEC dbo.ep_HDC_App_Zamena';
try
helUtils.waitStart(nil, 'Generuji doklad...', 0, 255);
Helios.ExecSQL(lSQL);
helUtils.waitEnd;
except on E:Exception do
Helios.Error('Chyba: ' + E.Message);
end;
Close;
end;
end;
procedure TformZamena.btnStornoClick(Sender: TObject);
begin
Close;
end;
procedure TformZamena.edtKodExit(Sender: TObject);
begin
btnHledatClick(Sender);
end;
procedure TformZamena.edtNakupExit(Sender: TObject);
begin
if (edtNakup.Value<=0) then
begin
Helios.Error(#1'!! Nákupní cena musí být větší než 0 !!'#1);
if (edtNakup.CanFocus) then
edtNakup.SetFocus;
end;
end;
procedure TformZamena.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:= caFree;
end;
end.