163 lines
4.7 KiB
ObjectPascal
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.
|