Prvni verze na Git
This commit is contained in:
327
frmReklamaceMat.pas
Normal file
327
frmReklamaceMat.pas
Normal file
@ -0,0 +1,327 @@
|
||||
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.
|
||||
Reference in New Issue
Block a user