Files
LOVATO-plugin/frmUnit5.pas
2026-04-07 18:23:56 +02:00

308 lines
9.5 KiB
ObjectPascal
Raw Blame History

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.