unit frmUnit5; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ddPlugin_TLB, helUtils, Dialogs, StdCtrls, Mask, RzEdit, RzCmboBx, RzButton, RzPanel, Vcl.Buttons, RzBtnEdt; type TformKartyZbozi = class(TForm) GroupBox1: TGroupBox; Label1: TLabel; Label2: TLabel; selSZ: TRzButtonEdit; edtRC: TRzEdit; edtNazev1: TRzEdit; Label3: TLabel; Label4: TLabel; Label5: TLabel; edtSKP: TRzEdit; cbMJ: TRzComboBox; edtNazev2: TRzEdit; Label6: TLabel; btnOK: TBitBtn; btnCancel: TBitBtn; GroupBox2: TGroupBox; Label7: TLabel; Label8: TLabel; cbDPH: TComboBox; edtHmot: TRzNumericEdit; edtBal: TRzEdit; Label9: TLabel; Label10: TLabel; selDodavatel: TRzButtonEdit; Label11: TLabel; edtUmist: TRzEdit; procedure FormShow(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure selSZButtonClick(Sender: TObject); procedure selSZKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure edtRCKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure btnUpClick(Sender: TObject); procedure btnDownClick(Sender: TObject); procedure btnOKClick(Sender: TObject); procedure btnCancelClick(Sender: TObject); procedure selDodavatelButtonClick(Sender: TObject); private helParams: THeliosParams; procedure NastavEdity; procedure NulujForm; procedure NactiKartu; public Helios: IHelios; idKZ: Integer; end; var formKartyZbozi: TformKartyZbozi; oVar1,oVar2: OleVariant; cisDod: ShortString; implementation uses System.StrUtils; {$R *.dfm} procedure TformKartyZbozi.NactiKartu; var polKZ: IHeQuery; mj: ShortString; lSQL: WideString; begin if idKZ>0 then begin lSQL:= 'SELECT * FROM ' + tblKZ + ' WHERE id=' + IntToStr(idKZ); polKZ:= Helios.OpenSQL(lSQL); if polKZ.RecordCount>0 then begin selSZ.Text:= VarToStr(polKZ.FieldByNameValues('SkupZbo')); edtRC.Text:= VarToStr(polKZ.FieldByNameValues('RegCis')); edtNazev1.Text:= VarToStr(polKZ.FieldByNameValues('Nazev1')); edtNazev2.Text:= VarToStr(polKZ.FieldByNameValues('Nazev2')); edtSKP.Text:= VarToStr(polKZ.FieldByNameValues('SKP')); edtBal.Text:= VarToStr(polKZ.FieldByNameValues('BaleniTXT')); if VarIsNull(polKZ.FieldByNameValues('MJevidence')) then mj:= '(není)' else mj:= VarToStr(polKZ.FieldByNameValues('MJevidence')); cbMJ.ItemIndex:= cbMJ.Items.IndexOf(mj); if VarIsNull(polKZ.FieldByNameValues('SazbaDPHVystup')) then mj:= '(není)' else mj:= VarToStr(polKZ.FieldByNameValues('SazbaDPHVystup')); cbDPH.ItemIndex:= cbDPH.Items.IndexOf(mj); edtHmot.Value:= StrToFloat(VarToStr(polKZ.FieldByNameValues('Hmotnost'))); with Helios.OpenSQL('SELECT _UmisteniVyroba FROM ' + tblKZe + ' WHERE id=' + IntToStr(idKZ)) do if RecordCount=1 then begin if not VarIsNull(FieldValues(0)) then edtUmist.Text:= VarToStr(FieldValues(0)) else edtUmist.Text:= ''; end; end; end; end; procedure TformKartyZbozi.NastavEdity; var idx: integer; begin for idx:=0 to ComponentCount-1 do begin if (Self.Components[idx] is TRzEdit) then (Self.Components[idx] as TRzEdit).FocusColor:= helParams.colBg; end; end; procedure TformKartyZbozi.NulujForm; var idx: integer; begin for idx:=0 to ComponentCount-1 do begin if (Self.Components[idx] is TRzEdit) then (Self.Components[idx] as TRzEdit).Text:= ''; end; edtHmot.Value:= 0; end; procedure TformKartyZbozi.selDodavatelButtonClick(Sender: TObject); begin if Helios.Prenos(bidCisOrg,'CisloOrg',oVar1,'','Organizace',True) then begin cisDod:= VarToStr(oVar1); with Helios.OpenSQL('SELECT Nazev FROM ' + tblCOrg + ' WHERE CisloOrg=' + cisDod) do if RecordCount=1 then selDodavatel.Text:= VarToStr(FieldValues(0)); end; end; procedure TformKartyZbozi.selSZButtonClick(Sender: TObject); begin if Helios.Prenos(bidSZ,'SkupZbo',oVar1,'','Vyberte skupinu zboží',true) then begin selSZ.Text:= VarToStr(oVar1); edtRC.SetFocus; end; end; procedure TformKartyZbozi.selSZKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key<>Ord(32) then if Length(selSZ.Text)=3 then edtRC.SetFocus; end; procedure TformKartyZbozi.btnCancelClick(Sender: TObject); begin Close; end; procedure TformKartyZbozi.btnDownClick(Sender: TObject); begin if not Helios.QueryBrowse.EOF then Helios.QueryBrowse.Next; end; procedure TformKartyZbozi.btnOKClick(Sender: TObject); var lSQL: WideString; begin if idKZ>0 then begin lSQL:= 'UPDATE ' + tblKZ + ' SET Nazev1=N' + QuotedStr(edtNazev1.Text) + ',Nazev2=N' + QuotedStr(edtNazev2.Text); lSQL:= lSQL + ',BaleniTXT=N' + QuotedStr(edtBal.Text) + ',SKP=N' + QuotedStr(edtSKP.Text); if cbMJ.ItemIndex=0 then lSQL:= lSQL + ',MJevidence=null' else lSQL:= lSQL + ',MJevidence=N' + QuotedStr(cbMJ.Text); lSQL:= lSQL + ',Aktualni_Dodavatel='; if cisDod<>'' then lSQL:= lSQL + cisDod else lSQL:= lSQL + 'null'; lSQL:= lSQL + ',SkupZbo=N' + QuotedStr(selSZ.Text); lSQL:= lSQL + ',RegCis=N' + QuotedStr(edtRC.Text) + ',Hmotnost=' + StringReplace(edtHmot.Text,',','.',[rfReplaceAll]); if cbDPH.ItemIndex=0 then lSQL:= lSQL + ',SazbaDPHVystup=null' else lSQL:= lSQL + ',SazbaDPHVystup=' + cbDPH.Text; lSQL:= lSQL + ' WHERE id=' + IntToStr(idKZ); lSQL:= lSQL + CRLF + 'IF EXISTS(SELECT Id FROM ' + tblKZe + ' WHERE id=' + IntToStr(idKZ) + ') '; lSQL:= lSQL + 'UPDATE ' + tblKZe + ' SET _UmisteniVyroba=N' + QuotedStr(edtUmist.Text) + ' WHERE id=' + IntToStr(idKZ); lSQL:= lSQL + CRLF + ' ELSE INSERT INTO ' + tblKZe + ' (id,_UmisteniVyroba) VALUES(' + IntToStr(idKZ) + ',N' + QuotedStr(edtUmist.Text) + ')'; end else begin lSQL:= 'INSERT INTO ' + tblKZ + ' (SkupZbo,RegCis,Nazev1,Nazev2,SKP,MJevidence,BaleniTXT,SazbaDPHVystup,Hmotnost,DruhSkladu,Aktualni_Dodavatel)'; lSQL:= lSQL + ' VALUES (N' + QuotedStr(selSZ.Text); lSQL:= lSQL + ',N' + QuotedStr(edtRC.Text) + ',N' + QuotedStr(edtNazev1.Text) + ',N' + QuotedStr(edtNazev2.Text); lSQL:= lSQL + ',N' + QuotedStr(edtSKP.Text) + ','; if cbMJ.ItemIndex=0 then lSQL:= lSQL + 'null' else lSQL:= lSQL + 'N' + QuotedStr(cbMJ.Text); lSQL:= lSQL + ',N' + QuotedStr(edtBal.Text) + ','; if cbDPH.ItemIndex=0 then lSQL:= lSQL + 'null' else lSQL:= lSQL + cbDPH.Text; lSQL:= lSQL + ',' + StringReplace(edtHmot.Text,',','.',[rfReplaceAll]) + ',1,'; if cisDod<>'' then lSQL:= lSQL + cisDod else lSQL:= lSQL + 'null'; lSQL:= lSQL + ')'; lSQL:= lSQL + CRLF + 'INSERT INTO ' + tblKZe + ' (id,_UmisteniVyroba) VALUES(SCOPE_IDENTITY(),N' + QuotedStr(edtUmist.Text) + ')'; end; try Helios.ExecSQL(lSQL); except on E:Exception do Helios.Error(#1'Nelze uložit novou/aktualizovanou kartu.'#1 + CRLF + E.Message); end; Close; end; procedure TformKartyZbozi.btnUpClick(Sender: TObject); begin if not Helios.QueryBrowse.BOF then Helios.QueryBrowse.Prev; end; procedure TformKartyZbozi.edtRCKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); var iCislo: integer; lSQL: WideString; begin edtRC.Text:= UpperCase(edtRC.Text); if LeftStr(edtRC.Text,4)='POL_' then if Length(edtRC.Text)=8 then begin lSQL:= 'SELECT TOP(1) RegCis FROM ' + tblKZ + ' WHERE SkupZbo=N' + QuotedStr(selSZ.Text) + ' AND RegCis LIKE '; lSQL:= lSQL + QuotedStr(edtRC.Text + '%') + ' ORDER BY RegCis DESC'; with Helios.OpenSQL(lSQL) do if RecordCount>0 then iCislo:= 1 + StrToInt(MidStr(FieldValues(0),9,10)) else iCislo:= 1; edtRC.Text:= edtRC.Text + StringOfChar('0', 3 - Length(IntToStr(iCislo))) + IntToStr(iCislo); edtNazev1.SetFocus; end; end; procedure TformKartyZbozi.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:= caFree; end; procedure TformKartyZbozi.FormShow(Sender: TObject); var lSQL: WideString; begin UseLatestCommonDialogs:= True; Self.Icon.Handle:= Helios.MainApplicationIconHandle; Self.Font.Name:= Helios.Font; Self.Font.Height:= Helios.FontHeight; NactiParametryHeliosu(Helios, helParams); if helParams.podbarveni then NastavEdity; lSQL:= 'SELECT d.Sazba FROM ' + tblDPH + ' d INNER JOIN ' + tblDPHDef + ' df ON (d.id=df.IdDPH) WHERE df.Platnost=0'; lSQL:= lSQL + ' AND df.Blokovano=0 AND df.IdObdobi=' + IntToStr(Helios.Obdobi) + ' ORDER BY d.Sazba'; with Helios.OpenSQL(lSQL) do if RecordCount>0 then begin cbDPH.Clear; cbDPH.Items.Add('(není)'); First; while not(EOF) do begin cbDPH.Items.Add(VarToStr(FieldValues(0))); Next; end; cbDPH.ItemIndex:= 0; end; with Helios.OpenSQL('SELECT kod FROM TabMJ ORDER BY kod') do if RecordCount>0 then begin First; cbMJ.Clear; cbMJ.Items.Add('(není)'); while not(EOF) do begin cbMJ.Items.Add(VarToStr(FieldValues(0))); Next; end; cbMJ.ItemIndex:= 0; end; if idKZ=0 then begin Self.Caption:= ' Nová karta zboží'; NulujForm; end else NactiKartu; end; end.