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.