308 lines
9.5 KiB
ObjectPascal
308 lines
9.5 KiB
ObjectPascal
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<65>)'
|
||
else
|
||
mj:= VarToStr(polKZ.FieldByNameValues('MJevidence'));
|
||
cbMJ.ItemIndex:= cbMJ.Items.IndexOf(mj);
|
||
if VarIsNull(polKZ.FieldByNameValues('SazbaDPHVystup')) then
|
||
mj:= '(nen<65>)'
|
||
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<62><6F>',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<6C>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<65>)');
|
||
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<65>)');
|
||
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<6F> karta zbo<62><6F>';
|
||
NulujForm;
|
||
end
|
||
else
|
||
NactiKartu;
|
||
end;
|
||
|
||
end.
|