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.