328 lines
11 KiB
ObjectPascal
328 lines
11 KiB
ObjectPascal
unit frmReklamaceMat;
|
||
|
||
interface
|
||
|
||
uses
|
||
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
||
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Vcl.Buttons, FireDAC.Comp.Client, Vcl.StdCtrls,
|
||
ddPlugin_TLB, Vcl.Menus, 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;
|
||
|
||
const
|
||
sklady: TArray<string> = ['20000101','20000101001','20000104','20000104001','20000106','20000106001','200','20000001001','20000107','20000107001'];
|
||
nazvy: TArray<string> = ['VDST','VDST REKL.','Pikl','Pikl REKL.','PCO','PCO REKL.','LOVATO V','DEMONT<4E><54>','CHD','CHD REKL.'];
|
||
type
|
||
TformReklamaceMat = class(TForm)
|
||
tblMat: TFDMemTable;
|
||
tblCil: TFDMemTable;
|
||
dsMat: TDataSource;
|
||
dsCil: TDataSource;
|
||
mIdSS: TIntegerField;
|
||
mNazev: TStringField;
|
||
mMnoz: TFloatField;
|
||
mSZ: TStringField;
|
||
mRegCis: TStringField;
|
||
cIdSSOld: TIntegerField;
|
||
cIdSSNew: TIntegerField;
|
||
cSZ: TStringField;
|
||
cRegCis: TStringField;
|
||
cNazev: TStringField;
|
||
cMnoz: TFloatField;
|
||
cIdSklad: TStringField;
|
||
cSklad: TStringField;
|
||
cMnozPresun: TFloatField;
|
||
btnOK: TButton;
|
||
btnStorno: TButton;
|
||
pmCil: TPopupMenu;
|
||
pmDelCil: TMenuItem;
|
||
Label1: TLabel;
|
||
Label2: TLabel;
|
||
tblCilcMnozIT: TFloatField;
|
||
gridMat: TJvDBGrid;
|
||
gridCil: TJvDBGrid;
|
||
procedure FormShow(Sender: TObject);
|
||
procedure btnStornoClick(Sender: TObject);
|
||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||
procedure pmDelCilClick(Sender: TObject);
|
||
procedure btnOKClick(Sender: TObject);
|
||
procedure gridMatDblClick(Sender: TObject);
|
||
procedure gridCilDblClick(Sender: TObject);
|
||
private
|
||
procedure ImportStavuSkladu; safecall;
|
||
public
|
||
Helios: IHelios;
|
||
end;
|
||
|
||
var
|
||
formDemontazMat: TformReklamaceMat;
|
||
oVar1: OleVariant;
|
||
vydejky: array[0..7] of integer;
|
||
|
||
implementation
|
||
uses System.StrUtils, helUtils;
|
||
|
||
{$R *.dfm}
|
||
|
||
|
||
procedure TformReklamaceMat.ImportStavuSkladu;
|
||
var lSQL: string;
|
||
begin
|
||
lSQL:= 'SELECT ss.Id,kz.SkupZbo,kz.RegCis,kz.Nazev1,ss.Mnozstvi FROM ' + tblSS + ' ss INNER JOIN ' + tblKZ;
|
||
lSQL:= lSQL + ' kz ON (kz.Id=ss.IdKmenZbozi) WHERE ss.Mnozstvi>0 AND ss.IDSklad=N' + QuotedStr(Helios.Sklad);
|
||
lSQL:= lSQL + ' AND kz.Blokovano=0 AND kz.SkupZbo=N' + QuotedStr('MAT');
|
||
lSQL:= lSQL + ' ORDER BY kz.SkupZbo,kz.RegCis';
|
||
with Helios.OpenSQL(lSQL) do
|
||
if (RecordCount>0) then
|
||
begin
|
||
if not(tblMat.Active) then
|
||
tblMat.Open;
|
||
tblMat.DisableControls;
|
||
First;
|
||
while not(EOF) do
|
||
begin
|
||
tblMat.Append;
|
||
tblMat.FieldByName('mIdSS').AsString:= VarToStr(FieldValues(0));
|
||
tblMat.FieldByName('mSZ').AsString:= VarToStr(FieldValues(1));
|
||
tblMat.FieldByName('mRegCis').AsString:= VarToStr(FieldValues(2));
|
||
tblMat.FieldByName('mNazev').AsString:= VarToStr(FieldValues(3));
|
||
tblMat.FieldByName('mMnoz').AsFloat:= StrToFloat(VarToStr(FieldValues(4)));
|
||
tblMat.Post;
|
||
Next;
|
||
end;
|
||
tblMat.First;
|
||
tblMat.EnableControls;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformReklamaceMat.pmDelCilClick(Sender: TObject);
|
||
begin
|
||
if Helios.YesNo('Opravdu smazat polo<6C>ku ?',false) then
|
||
begin
|
||
tblMat.Append;
|
||
tblMat.FieldByName('mIdSS').AsInteger:= tblCil.FieldByName('cIdSSOld').AsInteger;
|
||
tblMat.FieldByName('mSZ').AsString:= tblCil.FieldByName('cSZ').AsString;
|
||
tblMat.FieldByName('mRegCis').AsString:= tblCil.FieldByName('cRegCis').AsString;
|
||
tblMat.FieldByName('mNazev').AsString:= tblCil.FieldByName('cNazev').AsString;
|
||
tblMat.FieldByName('mMnoz').AsFloat:= tblCil.FieldByName('cMnoz').AsFloat;
|
||
tblMat.Post;
|
||
tblCil.Delete;
|
||
|
||
gridMat.LockDrawing;
|
||
tblMat.IndexFieldNames:= 'mSZ;mRegCis';
|
||
tblmat.Refresh;
|
||
gridMat.UnlockDrawing;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformReklamaceMat.btnOKClick(Sender: TObject);
|
||
var lSQL: string;
|
||
begin
|
||
if (tblCil.RecordCount>0) then
|
||
begin
|
||
tblCil.DisableControls;
|
||
|
||
lSQL:= 'IF OBJECT_ID(N' + QuotedStr('dbo._TabReklamaceMat') + ') IS NOT NULL DROP TABLE dbo._TabReklamaceMat' + CRLF;
|
||
lSQL:= lSQL + 'CREATE TABLE dbo._TabReklamaceMat (IdSSOld INT NOT NULL,IdSSNew INT,SkupZbo NVARCHAR(3),';
|
||
lSQL:= lSQL + 'RegCis NVARCHAR(30),Nazev1 NVARCHAR(100),Mnozstvi NUMERIC(19,6), Sklad NVARCHAR(30),';
|
||
lSQL:= lSQL + 'IdSklad NVARCHAR(20), MnozPrev NUMERIC(19,6), MnozIT NUMERIC(19,6))';
|
||
Helios.ExecSQL(lSQL);
|
||
tblCil.First;
|
||
while not(tblCil.Eof) do
|
||
begin
|
||
lSQL:= 'INSERT dbo._TabReklamaceMat (IdSSOld,SkupZbo,RegCis,Nazev1,Mnozstvi,Sklad,IdSklad,MnozPrev,MnozIT) VALUES (';
|
||
lSQL:= lSQL + tblCil.FieldByName('cIdSSOld').AsString + ',N' + QuotedStr(tblCil.FieldByName('cSZ').AsString);
|
||
lSQL:= lSQL + ',N' + QuotedStr(tblCil.FieldByName('cRegCis').AsString) + ',N' + QuotedStr(tblCil.FieldByName('cNazev').AsString);
|
||
lSQL:= lSQL + ',' + StringReplace(tblCil.FieldByName('cMnoz').AsString,',','.',[rfReplaceAll]);
|
||
lSQL:= lSQL + ',N' + QuotedStr(tblCil.FieldByName('cSklad').AsString) + ',N';
|
||
lSQL:= lSQL + QuotedStr(IfThen(tblCil.FieldByName('cSklad').AsString='DEMONT<4E><54>', '20000001001', tblCil.FieldByName('cIdSklad').AsString));
|
||
lSQL:= lSQL + ',' + IfThen(tblCil.FieldByName('cMnozPresun').AsString='','0',StringReplace(tblCil.FieldByName('cMnozPresun').AsString,',','.',[rfReplaceAll]));
|
||
lSQL:= lSQL + ',' + IfThen(tblCil.FieldByName('cMnozIT').AsString='','0',StringReplace(tblCil.FieldByName('cMnozIT').AsString,',','.',[rfReplaceAll]));
|
||
lSQL:= lSQL + ')';
|
||
try
|
||
Helios.ExecSQL(lSQL);
|
||
except
|
||
end;
|
||
tblCil.Next;
|
||
end;
|
||
|
||
tblCil.EnableControls;
|
||
Helios.ExecSQL('INSERT #TabExtKom(Poznamka) EXEC dbo.ep_ReklamaceMatDilce');
|
||
end;
|
||
Close;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformReklamaceMat.btnStornoClick(Sender: TObject);
|
||
begin
|
||
Close;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformReklamaceMat.FormClose(Sender: TObject; var Action: TCloseAction);
|
||
begin
|
||
if (tblMat.Active) then
|
||
tblMat.Close;
|
||
if (tblCil.Active) then
|
||
tblCil.Close;
|
||
Action:= caFree;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformReklamaceMat.FormShow(Sender: TObject);
|
||
begin
|
||
ImportStavuSkladu;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformReklamaceMat.gridCilDblClick (Sender: TObject);
|
||
var podm: string;
|
||
iR, iC: integer;
|
||
skl, strMn, sql, cisSkl: string;
|
||
jc, mn, mnOld, mnSkl, mnIT: Extended;
|
||
clCol, clRow: integer;
|
||
fldName: string;
|
||
begin
|
||
clCol:= gridCil.MouseCoord (Mouse.CursorPos.X - gridCil.ClientOrigin.X, Mouse.CursorPos.Y - gridCil.ClientOrigin.Y).X;
|
||
clRow:= gridCil.MouseCoord (Mouse.CursorPos.X - gridCil.ClientOrigin.X, Mouse.CursorPos.Y - gridCil.ClientOrigin.Y).X;
|
||
if (clRow>0) and (clCol>0) and (tblCil.RecordCount>0) then
|
||
begin
|
||
fldName:= gridCil.Columns[clCol].FieldName;
|
||
|
||
case helUtils.StringToCaseSelect(fldName, ['cSklad', 'cMnozPresun', 'cMnozIT']) of
|
||
0: begin // cilovy sklad
|
||
skl:= '';
|
||
cisSkl:= '';
|
||
podm:= 'TabStrom.Cislo IN (N' + QuotedStr('200') + ',N' + QuotedStr('20000101') + ',N' + QuotedStr('20000101001');
|
||
podm:= podm + ',N' + QuotedStr('20000104') + ',N' + QuotedStr('20000104001') + ',N' + QuotedStr('20000106');
|
||
podm:= podm + ',N' + QuotedStr('20000106001') + ',N' + QuotedStr('20000001001') + ')';
|
||
if Helios.Prenos(bidStrom,'Cislo',oVar1,podm,'Vyberte c<>lov<6F> sklad',true) then
|
||
cisSkl:= VarToStr(oVar1);
|
||
case sStrIndex(cisSkl,sklady) of
|
||
0: skl:= nazvy[0];
|
||
1: skl:= nazvy[1];
|
||
2: skl:= nazvy[2];
|
||
3: skl:= nazvy[3];
|
||
4: skl:= nazvy[4];
|
||
5: skl:= nazvy[5];
|
||
6: skl:= nazvy[6];
|
||
7: skl:= nazvy[7];
|
||
end;
|
||
if (skl='') then
|
||
skl:= nazvy[7];
|
||
tblCil.Edit;
|
||
tblCil.FieldByName('cSklad').AsString:= skl;
|
||
tblCil.FieldByName('cIdSklad').AsString:= cisSkl;
|
||
tblCil.Post;
|
||
end;
|
||
|
||
1: begin
|
||
jc:= 0;
|
||
mnOld:= tblCil.FieldByName('cMnoz').AsExtended;
|
||
mn:= 0;
|
||
mnSkl:= 0;
|
||
mnIT:= 0;
|
||
|
||
if not(VarIsNull(tblCil.FieldByName('cMnozPresun').AsVariant)) then
|
||
mnSkl:= tblCil.FieldByName('cMnozPresun').AsExtended;
|
||
if not(VarIsNull(tblCil.FieldByName('cMnozIT').AsVariant)) then
|
||
mnIT:= tblCil.FieldByName('cMnozIT').AsExtended;
|
||
|
||
if (mnSkl>0) then
|
||
mn:= mnSkl;
|
||
if (FormMnozstviCena('Mno<6E>stv<74> na vybran<61> sklad',mn,jc,false,false)) then
|
||
begin
|
||
if (mn>=0) then
|
||
begin
|
||
if (mn<=mnOld) then
|
||
begin
|
||
tblCil.DisableControls;
|
||
tblCil.Edit;
|
||
if (mn=0) then
|
||
tblCil.FieldByName('cMnozPresun').AsString:= ''
|
||
else
|
||
tblCil.FieldByName('cMnozPresun').AsExtended:= mn;
|
||
tblCil.Post;
|
||
tblCil.EnableControls;
|
||
end
|
||
else
|
||
Helios.Error(#1'Nelze zadat mno<6E>stv<74> vy<76><79><EFBFBD> ne<6E> demontovan<61>.'#1);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
2: begin
|
||
jc:= 0;
|
||
mnOld:= tblCil.FieldByName('cMnoz').AsExtended;
|
||
mn:= 0;
|
||
mnSkl:= 0;
|
||
mnIT:= 0;
|
||
|
||
if not(VarIsNull(tblCil.FieldByName('cMnozPresun').AsVariant)) then
|
||
mnSkl:= tblCil.FieldByName('cMnozPresun').AsExtended;
|
||
if not(VarIsNull(tblCil.FieldByName('cMnozIT').AsVariant)) then
|
||
mnIT:= tblCil.FieldByName('cMnozIT').AsExtended;
|
||
|
||
if (mnIT>0) then
|
||
mn:= mnIT;
|
||
if (FormMnozstviCena('Mno<6E>stv<74> na v<>dejku IT',mn,jc,false,false)) then
|
||
begin
|
||
if (mn>=0) then
|
||
begin
|
||
if (mn+mnSkl<=mnOld) then
|
||
begin
|
||
tblCil.DisableControls;
|
||
tblCil.Edit;
|
||
if (mn=0) then
|
||
tblCil.FieldByName('cMnozIT').AsString:= ''
|
||
else
|
||
tblCil.FieldByName('cMnozIT').AsExtended:= mn;
|
||
tblCil.Post;
|
||
tblCil.EnableControls;
|
||
end
|
||
else
|
||
Helios.Error(#1'Nelze zadat mno<6E>stv<74> vy<76><79><EFBFBD> ne<6E> demontovan<61>.'#1);
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformReklamaceMat.gridMatDblClick (Sender: TObject);
|
||
begin
|
||
if not(tblMat.Active) then
|
||
tblMat.Open;
|
||
|
||
if (tblMat.RecordCount>0) then
|
||
begin
|
||
if not(tblCil.Active) then
|
||
tblCil.Open;
|
||
tblCil.Append;
|
||
tblCil.FieldByName('cIdSSOld').AsString:= tblMat.FieldByName('mIdSS').AsString;
|
||
tblCil.FieldByName('cSZ').AsString:= tblMat.FieldByName('mSZ').AsString;
|
||
tblCil.FieldByName('cRegCis').AsString:= tblMat.FieldByName('mRegCis').AsString;
|
||
tblCil.FieldByName('cNazev').AsString:= tblMat.FieldByName('mNazev').AsString;
|
||
tblCil.FieldByName('cMnoz').AsFloat:= tblMat.FieldByName('mMnoz').AsFloat;
|
||
if (tblMat.FieldByName('mSZ').AsString='MAT') then
|
||
tblCil.FieldByName('cSklad').AsString:= 'DEMONT<4E><54>';
|
||
tblCil.Post;
|
||
tblMat.Delete;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
end.
|