📄 wssecurity.~pas
字号:
end;
function TGuarder.GetPermissionID(const PermissionName: string): Integer;
begin
with TADOCommand.Create(nil) do
try
Connection := CommonData.acnConnection;
CommandText := 'SELECT :ID = ID FROM MSPermission WHERE Name = ''' + PermissionName + '''';
with Parameters[0] do
begin
Direction := pdOutput;
DataType := ftInteger;
Execute;
if not VarIsNull(Value) then Result := Value
else Result := -1;
end;
finally
Free;
end;
end;
procedure TGuarder.RegisterAction(Action: TBasicAction;
PermissionID: Integer);
begin
FActionArray.Add(Integer(Action));
FPmsArray.Add(PermissionID);
end;
procedure TGuarder.RegisterActions(Actions: array of TBasicAction;
PermissionIDs: TIntegerDynArray);
var
I: Integer;
begin
for I := 0 to Length(Actions) do
RegisterAction(Actions[I], PermissionIDs[I]);
end;
procedure TGuarder.RegisterActions(Actions: array of TBasicAction;
PermissionNames: TStringDynArray);
var
I: Integer;
begin
for I := Low(Actions) to High(Actions) do
RegisterAction(Actions[I], GetPermissionID(PermissionNames[I]));
end;
procedure TGuarder.UnRegisterAction(Action: TBasicAction);
var
I: Integer;
begin
I := Integer(Action);
with FActionArray do
begin
I := IndexOf(I);
if I < 0 then
raise Exception.CreateFmt('Action %s has not been registered',
[TBasicAction(Items[I]).Name]);
RemoveItem(I);
end;
FPmsArray.RemoveItem(I)
end;
procedure TGuarder.DoActionExecute(Action: TBasicAction;
var Handled: Boolean);
var
Tmp: Integer;
begin
Tmp := FActionArray.IndexOf(Action);
if Tmp >= 0 then
begin
Handled := (FPmsArray.Items[Tmp] >= 0) and not HasPermission(FPmsArray.Items[Tmp]);
if Handled then raise Exception.Create('操作未被授权,请联系管理员');
end;
if Assigned(FOldAppActionExecute) then FOldAppActionExecute(Action, Handled);
end;
function TGuarder.HasPermission(Action: TBasicAction): Boolean;
var
Tmp: Integer;
begin
Tmp := FActionArray.IndexOf(Action);
if (Tmp >= 0) and (FPmsArray.Items[Tmp] >= 0) then
Result := HasPermission(FPmsArray.Items[Tmp])
else Result := True;
end;
function TGuarder.GetContractSLPrice: string;
var ADSTemp: TADODataSet;
begin
if Connected then { TODO : 直接取得合同单价--MSSysParametar.name }
begin
ADSTemp := TADODataSet.Create(nil);
ADSTemp.Connection := CommonData.acnConnection;
with ADSTemp do
begin
close;
CommandText := 'select * from MSSysParameter where ParaName like '
+ QuotedStr('%合同售价%');
open;
first;
if Fieldbyname('ParaValues').IsNull then
Result := '否'
else Result := Fieldbyname('ParaValues').AsString;
end;
end;
end;
function TGuarder.GetLastadjustSLPrice: string;
var ADSTemp: TADODataSet;
begin
if Connected then { TODO : 直接取得最新销售单价--MSSysParametar.name }
begin
ADSTemp := TADODataSet.Create(nil);
ADSTemp.Connection := CommonData.acnConnection;
with ADSTemp do
begin
close;
CommandText := 'select * from MSSysParameter where ParaName like '
+ QuotedStr('%最新调价%');
open;
first;
if Fieldbyname('ParaValues').IsNull then
Result := '否'
else Result := Fieldbyname('ParaValues').AsString;
end;
end;
end;
function TGuarder.GetLastSLPrice: string;
var ADSTemp: TADODataSet;
begin
if Connected then { TODO : 直接取得最新销售单价--MSSysParametar.name }
begin
ADSTemp := TADODataSet.Create(nil);
ADSTemp.Connection := CommonData.acnConnection;
with ADSTemp do
begin
close;
CommandText := 'select * from MSSysParameter where ParaName like '
+ QuotedStr('%当前客户最新售价%');
open;
first;
if Fieldbyname('ParaValues').IsNull then
Result := '否'
else Result := Fieldbyname('ParaValues').AsString;
end;
end;
end;
function TGuarder.GetUseDiscountSLFlag: string;
var ADSTemp: TADODataSet;
begin
if Connected then { TODO : 直接取得最新销售单价--MSSysParametar.name }
begin
ADSTemp := TADODataSet.Create(nil);
ADSTemp.Connection := CommonData.acnConnection;
with ADSTemp do
begin
close;
CommandText := 'select * from MSSysParameter where ParaName like '
+ QuotedStr('%使用销售折扣%');
open;
first;
if Fieldbyname('ParaValues').IsNull then
Result := '否'
else Result := Fieldbyname('ParaValues').AsString;
end;
end;
end;
function TGuarder.GetFillInPrintFlag: string;
var ADSTemp: TADODataSet;
begin
if Connected then { TODO : 直接取得使用套打功能--MSSysParametar.name }
begin
ADSTemp := TADODataSet.Create(nil);
ADSTemp.Connection := CommonData.acnConnection;
with ADSTemp do
begin
close;
CommandText := 'select * from MSSysParameter where ParaName like '
+ QuotedStr('%票据套打功能%');
open;
first;
if Fieldbyname('ParaValues').IsNull then
Result := '否'
else Result := Fieldbyname('ParaValues').AsString;
end;
end;
end;
function TGuarder.GetRepeatPrintFlag: string;
var ADSTemp: TADODataSet;
begin
if Connected then { TODO : 直接取得使用套打功能--MSSysParametar.name }
begin
ADSTemp := TADODataSet.Create(nil);
ADSTemp.Connection := CommonData.acnConnection;
with ADSTemp do
begin
close;
CommandText := 'select * from MSSysParameter where ParaName like '
+ QuotedStr('%单据重打功能%');
open;
first;
if Fieldbyname('ParaValues').IsNull then
Result := '否'
else Result := Fieldbyname('ParaValues').AsString;
end;
end;
end;
function TGuarder.GetExportCashACReckoningFlag: string;
var ADSTemp: TADODataSet;
begin
if Connected then { TODO : 直接取得使导出对帐单标志--MSSysParametar.name }
begin
ADSTemp := TADODataSet.Create(nil);
ADSTemp.Connection := CommonData.acnConnection;
with ADSTemp do
begin
close;
CommandText := 'select * from MSSysParameter where ParaName like '
+ QuotedStr('%导出对帐单%');
open;
first;
if Fieldbyname('ParaValues').IsNull then
Result := '否'
else Result := Fieldbyname('ParaValues').AsString;
end;
end;
end;
function TGuarder.GetPrintCashACReckoningFlag: string;
var ADSTemp: TADODataSet;
begin
if Connected then { TODO : 直接取得使打印对帐单标志--MSSysParametar.name }
begin
ADSTemp := TADODataSet.Create(nil);
ADSTemp.Connection := CommonData.acnConnection;
with ADSTemp do
begin
close;
CommandText := 'select * from MSSysParameter where ParaName like '
+ QuotedStr('%打印对帐单%');
open;
first;
if Fieldbyname('ParaValues').IsNull then
Result := '否'
else Result := Fieldbyname('ParaValues').AsString;
end;
end;
end;
function TGuarder.GetForeignCurrencyFlag: string;
var ADSTemp: TADODataSet;
begin
if Connected then { TODO : 直接取得外币业务标志--MSSysParametar.name }
begin
ADSTemp := TADODataSet.Create(nil);
ADSTemp.Connection := CommonData.acnConnection;
with ADSTemp do
begin
close;
CommandText := 'select * from MSSysParameter where ParaName like '
+ QuotedStr('%外币业务%');
open;
first;
if Fieldbyname('ParaValues').IsNull then
Result := '否'
else Result := Fieldbyname('ParaValues').AsString;
end;
end;
end;
function TGuarder.GetContractPCPrice: string;
var ADSTemp: TADODataSet;
begin
if Connected then { TODO : 直接取得合同单价--MSSysParametar.name }
begin
ADSTemp := TADODataSet.Create(nil);
ADSTemp.Connection := CommonData.acnConnection;
with ADSTemp do
begin
close;
CommandText := 'select * from MSSysParameter where ParaName like '
+ QuotedStr('%合同进价%');
open;
first;
if Fieldbyname('ParaValues').IsNull then
Result := '否'
else Result := Fieldbyname('ParaValues').AsString;
end;
end;
end;
function TGuarder.GetLastPCPrice: string;
var ADSTemp: TADODataSet;
begin
if Connected then { TODO : 直接取得最新进价--MSSysParametar.name }
begin
ADSTemp := TADODataSet.Create(nil);
ADSTemp.Connection := CommonData.acnConnection;
with ADSTemp do
begin
close;
CommandText := 'select * from MSSysParameter where ParaName like '
+ QuotedStr('%最新进价%');
open;
first;
if Fieldbyname('ParaValues').IsNull then
Result := '否'
else Result := Fieldbyname('ParaValues').AsString;
end;
end;
end;
function TGuarder.GetLastadjustPCPrice: string;
var ADSTemp: TADODataSet;
begin
if Connected then { TODO : 直接取得最新采购调价--MSSysParametar.name }
begin
ADSTemp := TADODataSet.Create(nil);
ADSTemp.Connection := CommonData.acnConnection;
with ADSTemp do
begin
close;
CommandText := 'select * from MSSysParameter where ParaName like '
+ QuotedStr('%最新采购调价%');
open;
first;
if Fieldbyname('ParaValues').IsNull then
Result := '否'
else Result := Fieldbyname('ParaValues').AsString;
end;
end;
end;
initialization
CurrencyString := '';
finalization
if FGuarder <> nil then FreeAndNil(FGuarder);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -