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

186 lines
6.2 KiB
ObjectPascal

unit frmUnit13;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Vcl.StdCtrls, FireDAC.Comp.Client, ddPlugin_TLB,
FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS,
FireDAC.Phys.Intf, FireDAC.DApt.Intf, FireDAC.Comp.DataSet, Vcl.Grids, Vcl.DBGrids,
JvExDBGrids, JvDBGrid;
type
TformPrevPrij = class(TForm)
vTab1: TFDMemTable;
ds1: TDataSource;
btnOK: TButton;
btnCancel: TButton;
vTab1idPZ: TIntegerField;
vTab1SZ: TStringField;
vTab1RegCis: TStringField;
vTab1Nazev1: TStringField;
vTab1Mnoz: TFloatField;
vTab1idPZold: TIntegerField;
grdPrijemky: TJvDBGrid;
procedure FormShow (Sender: TObject);
procedure btnCancelClick (Sender: TObject);
procedure btnOKClick (Sender: TObject);
procedure FormClose (Sender: TObject; var Action: TCloseAction);
procedure grdPrijemkyDblClick (Sender: TObject);
procedure grdPrijemkyDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
private
procedure NactiPrijemku;
public
Helios: IHelios;
idDZ: integer;
idDZold: integer;
end;
var
formPrevPrij: TformPrevPrij;
implementation
uses myUtils, helUtils;
{$R *.dfm}
procedure TformPrevPrij.btnCancelClick (Sender: TObject);
begin
Close;
end;
procedure TformPrevPrij.NactiPrijemku;
var sql: string;
c: TCloseAction;
begin
if (idDZ>0) then
begin
with Helios.OpenSQL('SELECT RadaDokladu,CONVERT(nvarchar,PoradoveCislo) FROM ' + tblDZ + ' WHERE id=' + IntToStr(idDZ)) do
begin
sql:= ' Oprava Pøevodky/Pøíjemky : ' + VarHodnota(FieldValues(0),'') + ' ';
sql:= sql + VarHodnota(FieldValues(1),'');
Self.Caption:= sql;
end;
if not vTab1.Active then
vTab1.Open;
sql:= 'SELECT id,SkupZbo,RegCis,Nazev1,Mnozstvi,ISNULL(IdOldPolozka,0) FROM ' + tblPZ;
sql:= sql + ' WHERE IdDoklad=' + IntToStr(idDZ) + ' ORDER BY DatPorizeni';
with Helios.OpenSQL(sql) do
begin
First;
while not(EOF) do
begin
vTab1.Append;
vTab1.FieldByName('idPZ').AsInteger:= VarHodnota(FieldValues(0),0);
vTab1.FieldByName('SZ').AsString:= VarHodnota(FieldValues(1),'');
vTab1.FieldByName('RegCis').AsString:= VarHodnota(FieldValues(2),'');
vTab1.FieldByName('Nazev1').AsString:= VarHodnota(FieldValues(3),'');
vTab1.FieldByName('Mnoz').AsExtended:= VarHodnota(FieldValues(4),0.0);
vTab1.FieldByName('idPZOld').AsInteger:= VarHodnota(FieldValues(5),0);
vTab1.Post;
Next;
end;
vTab1.RecNo:= 1;
end;
end
else
Helios.Error(#1'Nebyla vybrána žádná pøíjemka.'#1);
end;
procedure TformPrevPrij.grdPrijemkyDblClick(Sender: TObject);
var mn: Extended;
begin
if not(VarIsNull(vTab1.FieldByName('Mnoz').Value)) then
mn:= vTab1.FieldByName('Mnoz').AsExtended
else
mn:= 0;
if InputNumeric('Zadejte množství','Nové množství:',mn) then
begin
vTab1.Edit;
vTab1.FieldByName('Mnoz').AsExtended:= mn;
vTab1.Post;
end;
end;
procedure TformPrevPrij.grdPrijemkyDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (gdSelected in State) then
begin
TJvDBGrid(Sender).Canvas.Font.Color:= clWhite;
TJvDBGrid(Sender).Canvas.Brush.Color:= $00FF9933;
end;
TJvDBGrid(Sender).DefaultDrawColumnCell (Rect, DataCol, Column, State);
end;
procedure TformPrevPrij.btnOKClick (Sender: TObject);
var idx: integer;
sql: string;
begin
try
if (vTab1.RecordCount>0) then
begin
idx:= 0;
vTab1.First;
while not(vTab1.Eof) do
begin
sql:= 'UPDATE ' + tblPZ + ' SET Mnozstvi=' + StringReplace(vTab1.FieldByName('Mnoz').AsString,'','',[rfReplaceAll]);
sql:= sql + ' WHERE id=' + vTab1.FieldByName('idPZ').AsString;
Helios.ExecSQL(sql);
sql:= 'UPDATE ' + tblPZ + ' SET CCbezDaniKc=JcBezDaniKc*Mnozstvi,CCsDPHKc=JcBezDaniKc*Mnozstvi,CCbezDaniVal=JcBezDaniKc*Mnozstvi,';
sql:= sql + 'CCsDPHVal=JcBezDaniKc*Mnozstvi,CCbezDaniKcPoS=JcBezDaniKc*Mnozstvi,CCsDPHKcPoS=JcBezDaniKc*Mnozstvi,';
sql:= sql + 'CCbezDaniValPoS=JcBezDaniKc*Mnozstvi,CCsDPHValPoS=JcBezDaniKc*Mnozstvi,CCsSDKc=JcBezDaniKc*Mnozstvi,';
sql:= sql + 'CCsSDVal=JcBezDaniKc*Mnozstvi,BlokovaniEditoru=NULL WHERE id=' + vTab1.FieldByName('idPZ').AsString;
Helios.ExecSQL(sql);
sql:= 'UPDATE ' + tblPZ + ' SET Mnozstvi=' + StringReplace(vTab1.FieldByName('Mnoz').AsString,'','',[rfReplaceAll]);
sql:= sql + ' WHERE id=' + vTab1.FieldByName('idPZold').AsString;
Helios.ExecSQL(sql);
sql:= 'UPDATE ' + tblPZ + ' SET CCbezDaniKc=JcBezDaniKc*Mnozstvi,CCsDPHKc=JcBezDaniKc*Mnozstvi,CCbezDaniVal=JcBezDaniKc*Mnozstvi,';
sql:= sql + 'CCsDPHVal=JcBezDaniKc*Mnozstvi,CCbezDaniKcPoS=JcBezDaniKc*Mnozstvi,CCsDPHKcPoS=JcBezDaniKc*Mnozstvi,';
sql:= sql + 'CCbezDaniValPoS=JcBezDaniKc*Mnozstvi,CCsDPHValPoS=JcBezDaniKc*Mnozstvi,CCsSDKc=JcBezDaniKc*Mnozstvi,';
sql:= sql + 'CCsSDVal=JcBezDaniKc*Mnozstvi,BlokovaniEditoru=NULL WHERE id=' + vTab1.FieldByName('idPZold').AsString;
Helios.ExecSQL(sql);
vTab1.Next;
end;
Helios.ExecSQL('EXEC dbo.hp_VypCenOZPolozek_IDDokladu @IDDoklad=' + IntToStr(idDZ) + ',@AktualizaceSlev=1');
Helios.ExecSQL('UPDATE ' + tblDZ + ' SET BlokovaniEditoru=NULL WHERE id=' + IntToStr(idDZ));
Helios.ExecSQL('EXEC dbo.hp_VypCenOZPolozek_IDDokladu @IDDoklad=' + IntToStr(idDZold) + ',@AktualizaceSlev=1');
Helios.ExecSQL('UPDATE ' + tblDZ + ' SET BlokovaniEditoru=NULL WHERE id=' + IntToStr(idDZold));
end;
Close;
finally
end;
end;
procedure TformPrevPrij.FormClose (Sender: TObject; var Action: TCloseAction);
begin
if (vTab1.Active) then
vTab1.Close;
Helios.Refresh (true);
Action:= caFree;
end;
procedure TformPrevPrij.FormShow(Sender: TObject);
begin
grdPrijemky.Font.Size:= Helios.FontHeight;
grdPrijemky.Font.Name:= Helios.Font;
NactiPrijemku;
end;
end.