Consolidate User Context

This commit is contained in:
2021-08-04 21:32:35 +01:00
parent b8cfd87860
commit afd38cea03
126 changed files with 2240 additions and 634 deletions
@@ -1,4 +1,5 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr;
using Sarand.BusinessMgr.Net.Standard.Dbas.Mgr;
using Sarand.BusinessMgr.Net.Standard.Dbas.Utils;
@@ -45,35 +46,35 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.App
//-------------------------------------------------------------------
// D a t a M a n a g e r s
//-------------------------------------------------------------------
public override SbmAccountMgr CreateAccountMgr(SbmUserContext userContext)
public override SbmAccountMgr CreateAccountMgr(ISbmUserContext userContext)
{
return new SbmAccountMgr_Dbas(userContext);
}
public override SbmAssetMgr CreateAssetMgr(SbmUserContext userContext)
public override SbmAssetMgr CreateAssetMgr(ISbmUserContext userContext)
{
return new SbmAssetMgr_Dbas(userContext);
}
public override SbmCommodityMgr CreateCommodityMgr(SbmUserContext userContext)
public override SbmCommodityMgr CreateCommodityMgr(ISbmUserContext userContext)
{
return new SbmCommodityMgr_Dbas(userContext);
}
public override SbmPriceMgr CreatePriceMgr(SbmUserContext userContext)
public override SbmPriceMgr CreatePriceMgr(ISbmUserContext userContext)
{
return new SbmPriceMgr_Dbas(userContext);
}
public override SbmDataItemMgr CreateDataItemMgr(SbmUserContext userContext)
public override SbmDataItemMgr CreateDataItemMgr(ISbmUserContext userContext)
{
return new SbmDataItemMgr_Dbas(userContext);
}
public override SbmProcessMgr CreateProcessMgr(SbmUserContext userContext)
public override SbmProcessMgr CreateProcessMgr(ISbmUserContext userContext)
{
return new SbmProcessMgr_Dbas(userContext);
}
public override SbmStockMgr CreateStockMgr(SbmUserContext userContext)
public override SbmStockMgr CreateStockMgr(ISbmUserContext userContext)
{
return new SbmStockMgr_Dbas(userContext);
}
public override SbmTransactionMgr CreateTransactionMgr(SbmUserContext userContext)
public override SbmTransactionMgr CreateTransactionMgr(ISbmUserContext userContext)
{
return new SbmTransactionMgr_Dbas(userContext);
}
@@ -1,4 +1,5 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.Net.Standard.Dbas.Base;
using Sarand.Net.Standard.Dbas.CodeTypes;
@@ -9,13 +10,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles
{
//-------------------------------------------------------------------
// Construction.
protected SbmCodeTypeConsole_Dbas(SacsDatabase database) : base(database)
protected SbmCodeTypeConsole_Dbas(ISbmUserContext userContext) : base(SbmGlobals.Application.GetBusMgrDatabase(userContext.SessionContext))
{
UserContext = userContext;
}
//-------------------------------------------------------------------
// Properties.
public SbmUserContext UserContext { get; set; }
public ISbmUserContext UserContext { get; set; }
public SbmSessionContext SessionContext { get { return UserContext.SessionContext; } }
//-------------------------------------------------------------------
@@ -1,4 +1,5 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.Net.Standard.Dbas.Base;
using Sarand.Net.Standard.Dbas.Diary;
@@ -9,13 +10,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles
{
//-------------------------------------------------------------------
// Construction.
protected SbmDiaryConsole_Dbas(SacsDatabase database) : base(database)
protected SbmDiaryConsole_Dbas(ISbmUserContext userContext) : base(SbmGlobals.Application.GetBusMgrDatabase(userContext.SessionContext))
{
UserContext = userContext;
}
//-------------------------------------------------------------------
// Properties.
public SbmUserContext UserContext { get; set; }
public ISbmUserContext UserContext { get; set; }
public SbmSessionContext SessionContext { get { return UserContext.SessionContext; } }
//-------------------------------------------------------------------
@@ -1,4 +1,5 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Interfaces;
@@ -25,7 +26,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles
//-------------------------------------------------------------------
// Construction.
protected SbmInterfaceConsole_Dbas(SbmUserContext userContext) : base(SbmGlobals.Application.GetBusMgrDatabase(userContext.SessionContext) as SacsDatabase)
protected SbmInterfaceConsole_Dbas(ISbmUserContext userContext) : base(SbmGlobals.Application.GetBusMgrDatabase(userContext.SessionContext))
{
UserContext = userContext;
dataItemTypes = SbmSystem.GetCodesOfType(UserContext, Sbm.SystemCode.ItemType);
@@ -44,7 +45,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles
//-------------------------------------------------------------------
// Properties.
public SbmUserContext UserContext { get; }
public ISbmUserContext UserContext { get; }
public SbmSessionContext SessionContext { get { return UserContext.SessionContext; } }
public override short InterfaceDataType { get { return (short)Sbm.ItemType.Interface; } }
// Consoles.
@@ -1,4 +1,5 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.Net.Standard.Dbas.Base;
using Sarand.Net.Standard.Dbas.ItemData;
@@ -9,13 +10,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles
{
//-------------------------------------------------------------------
// Construction.
protected SbmItemDataConsole_Dbas(SacsDatabase database) : base(database)
protected SbmItemDataConsole_Dbas(ISbmUserContext userContext) : base(SbmGlobals.Application.GetBusMgrDatabase(userContext.SessionContext))
{
UserContext = userContext;
}
//-------------------------------------------------------------------
// Properties.
public SbmUserContext UserContext { get; set; }
public ISbmUserContext UserContext { get; set; }
public SbmSessionContext SessionContext { get { return UserContext.SessionContext; } }
//-------------------------------------------------------------------
@@ -1,4 +1,5 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.Net.Standard.Dbas.Base;
using Sarand.Net.Standard.Dbas.ItemDocs;
@@ -9,13 +10,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles
{
//-------------------------------------------------------------------
// Construction.
protected SbmItemDocConsole_Dbas(SacsDatabase database) : base(database)
protected SbmItemDocConsole_Dbas(ISbmUserContext userContext) : base(SbmGlobals.Application.GetBusMgrDatabase(userContext.SessionContext))
{
UserContext = userContext;
}
//-------------------------------------------------------------------
// Properties.
public SbmUserContext UserContext { get; set; }
public ISbmUserContext UserContext { get; set; }
public SbmSessionContext SessionContext { get { return UserContext.SessionContext; } }
//-------------------------------------------------------------------
@@ -1,4 +1,5 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Interfaces;
@@ -21,8 +22,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles
//-------------------------------------------------------------------
// Construction.
protected SbmItemOptionConsole_Dbas(SacsDatabase database) : base(database)
protected SbmItemOptionConsole_Dbas(ISbmUserContext userContext) : base(SbmGlobals.Application.GetBusMgrDatabase(userContext.SessionContext))
{
UserContext = userContext;
}
protected override void Dispose(bool disposing)
{
@@ -36,7 +38,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles
//-------------------------------------------------------------------
// Properties.
public SbmUserContext UserContext { get; set; }
public ISbmUserContext UserContext { get; set; }
public SbmSessionContext SessionContext { get { return UserContext.SessionContext; } }
public override short ItemOptionDataType { get { return (short)Sbm.ItemType.ItemOption; } }
private SbmAccountMgr AccountMgr { get { if (accountMgr == null) accountMgr = SbmGlobals.System.CreateAccountMgr(UserContext); return accountMgr; } }
@@ -1,4 +1,5 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.UpdateLog;
using Sarand.Net.Standard.Dbas.Base;
using Sarand.Net.Standard.Dbas.ReferenceData;
@@ -14,8 +15,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles
//-------------------------------------------------------------------
// Construction.
protected SbmReferenceDataConsole_Dbas(SbmUserContext userContext, SacsDatabase database) :
base(database)
protected SbmReferenceDataConsole_Dbas(ISbmUserContext userContext) :
base(SbmGlobals.Application.GetBusMgrDatabase(userContext.SessionContext))
{
UserContext = userContext;
}
@@ -31,7 +32,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles
//-------------------------------------------------------------------
// Properties.
public SbmSessionContext SessionContext { get; }
public SbmUserContext UserContext { get; }
public ISbmUserContext UserContext { get; }
// Item types.
public override short LanguageItemType { get { return (short)Sbm.ItemDataType.Unknown; } }
public override short RegionItemType { get { return (short)Sbm.ItemDataType.Region; } }
@@ -1,5 +1,6 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
@@ -23,7 +24,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles
//-------------------------------------------------------------------
// Construction.
protected SbmSecurityConsole_Dbas(SbmUserContext userContext, ISacsDatabase database) : base(database)
protected SbmSecurityConsole_Dbas(ISbmUserContext userContext) :
base(SbmGlobals.Application.GetBusMgrDatabase(userContext.SessionContext))
{
UserContext = userContext;
}
@@ -39,7 +41,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles
//-------------------------------------------------------------------
// Properties.
public SbmUserContext UserContext { get; }
public ISbmUserContext UserContext { get; }
public SbmSessionContext SessionContext { get { return UserContext.SessionContext; } }
public override short SecurityItemDataType { get { return (short)Sbm.ItemType.SecurityItem; } }
public override short SecurityLinkDataType { get { return (short)Sbm.ItemType.SecurityLink; } }
@@ -1,4 +1,5 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Security;
@@ -17,7 +18,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles
//-------------------------------------------------------------------
// Construction.
protected SbmUpdateLogConsole_Dbas(SbmUserContext userContext, ISacsDatabase database) : base(database)
protected SbmUpdateLogConsole_Dbas(ISbmUserContext userContext) :
base(SbmGlobals.Application.GetBusMgrDatabase(userContext.SessionContext))
{
UserContext = userContext;
}
@@ -32,7 +34,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles
//-------------------------------------------------------------------
// Properties.
public SbmUserContext UserContext { get; }
public ISbmUserContext UserContext { get; }
public SbmSessionContext SessionContext { get { return UserContext.SessionContext; } }
// Consoles.
public SaSecurityConsole SecurityConsole
@@ -813,7 +813,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
SetAssociationColDfn(columnDfn, "Amount trans max", 90, SbmDbDfn.ColumnIdx.Association_AmountTransMax, ColumnAlignment.Right, DataValue.DataType.Double);
break;
case SbmAssociation.Column.AnnualSalesTarget:
if (UserContext.SecurityProfile.Financial.CanViewFinancials)
if (UserContext.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySales))
{
SetAssociationColDfn(columnDfn, "Annual sales target", 90, SbmDbDfn.ColumnIdx.Association_AnnualSalesTarget, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.NumDecimals = 0;
@@ -1241,21 +1241,21 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
columnDfn.DataName = colAssociation_LastSaleRaised;
break;
case SbmAssociation.Column.Trans_SalesValue_Open: // Net open sales order value.
if (UserContext.SecurityProfile.Financial.CanViewFinancials)
if (UserContext.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySales))
{
SetAssociationColDfn(columnDfn, "Open sales", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.DataName = colAssociation_SalesValueOpen;
}
break;
case SbmAssociation.Column.Trans_SalesValue_Cytd: // Net sales order value closed this calendar year.
if (UserContext.SecurityProfile.Financial.CanViewFinancials)
if (UserContext.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySales))
{
SetAssociationColDfn(columnDfn, "Sales CYTD", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.DataName = colAssociation_SalesValueCytd;
}
break;
case SbmAssociation.Column.Trans_SalesValue_Lcy: // Net sales order value closed last calendar year.
if (UserContext.SecurityProfile.Financial.CanViewFinancials)
if (UserContext.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySales))
{
SetAssociationColDfn(columnDfn, "Sales LCY", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.DataName = colAssociation_SalesValueLcy;
@@ -1839,7 +1839,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
// Retrieve the database.
ClearErrorState();
bool CanManageFinancials = UserContext.SecurityProfile.Financial.CanViewFinancials;
bool CanManageFinancials = UserContext.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySales);
//---------------------------------------------------------------------
// Construct Query.
@@ -1,4 +1,5 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr;
using Sarand.BusinessMgr.Net.Standard.Dbas.Data;
using Sarand.Net.Standard.Base.Dbas;
@@ -15,7 +16,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//-------------------------------------------------------------------
// Construction.
public SbmAccountMgr_Dbas(SbmUserContext userContext) :
public SbmAccountMgr_Dbas(ISbmUserContext userContext) :
base(userContext)
{
db = (SbmGlobals.Application.GetBusMgrDatabase(SessionContext) as SacsDatabase);
@@ -1,4 +1,5 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr;
using Sarand.BusinessMgr.Net.Standard.Dbas.Data;
using Sarand.Net.Standard.Base.Dbas;
@@ -19,7 +20,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//-------------------------------------------------------------------
// Construction.
public SbmAssetMgr_Dbas(SbmUserContext userContext) :
public SbmAssetMgr_Dbas(ISbmUserContext userContext) :
base(userContext)
{
db = (SbmGlobals.Application.GetBusMgrDatabase(SessionContext) as SacsDatabase);
@@ -593,9 +593,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//-------------------------------------------------------------------
// Create Commodity.
public override SbmCommodity CreateCommodity(SysId id, SysId affiliateIdOwner, Sbm.CommodityType commodityType, String code)
public override SbmCommodity CreateCommodity(SysId affiliateIdOwner, Sbm.CommodityType commodityType, String code)
{
return new SbmCommodity_Dbas(Internals, id, affiliateIdOwner, commodityType, code, 0);
return new SbmCommodity_Dbas(Internals, null, affiliateIdOwner, commodityType, code, 0);
}
private SbmCommodity_Dbas CreateCommodity(Commodity_Db dbCommodity)
{
@@ -1068,7 +1068,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Getting Commodity column definition.
public override ColumnDfn GetCommodityColumnDfn(SbmCommodity.Column columnId, string caption = "", int width = 0)
{
bool canViewFinancials = UserContext.SecurityProfile.Financial.CanViewFinancials;
bool canViewSalesFinancials = UserContext.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySales);
bool canViewSupplyFinancials = UserContext.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySupply);
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
switch (columnId)
@@ -1084,9 +1085,15 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
columnDfn.ReadOnly = true;
break;
// Commodity Properties.
case SbmCommodity.Column.Type_Desc:
case SbmCommodity.Column.Type:
SetCommodityColDfn(columnDfn, "Type", 70, SbmDbDfn.ColumnIdx.Commodity_Type, ColumnAlignment.Center, DataValue.DataType.Long);
break;
case SbmCommodity.Column.Type_Code:
SetCommodityColDfn(columnDfn, "Type", 70, SbmDbDfn.ColumnIdx.Commodity_Type, ColumnAlignment.Center);
break;
case SbmCommodity.Column.Type_Desc:
SetCommodityColDfn(columnDfn, "Type", 90, SbmDbDfn.ColumnIdx.Commodity_Type, ColumnAlignment.Center);
break;
case SbmCommodity.Column.Code:
SetCommodityColDfn(columnDfn, "Code", 120, SbmDbDfn.ColumnIdx.Commodity_Code);
if (ConfigConsole != null && AllowConfigOption(Sbm.ConfigOption.CommodityDoubleColumnWidth))
@@ -1318,7 +1325,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
SetCommodityColDfn(columnDfn, "Part number", 90, SbmDbDfn.ColumnIdx.Commodity_SupplierRef, ColumnAlignment.Center);
break;
case SbmCommodity.Column.CostPrice:
if (canViewFinancials)
if (canViewSupplyFinancials)
{
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_CostPrice, "Cost price");
SetCommodityColDfn(columnDfn, label, 70, SbmDbDfn.ColumnIdx.Commodity_CostPrice, ColumnAlignment.Right, DataValue.DataType.Double);
@@ -1327,7 +1334,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
break;
case SbmCommodity.Column.CostPrice_Fmt:
if (canViewFinancials)
if (canViewSupplyFinancials)
{
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_CostPrice, "Cost price");
SetCommodityColDfn(columnDfn, label, 70, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
@@ -1338,7 +1345,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
SetCommodityColDfn(columnDfn, "Place of origin", 90, SbmDbDfn.ColumnIdx.Commodity_PlaceOfOrigin);
break;
case SbmCommodity.Column.MaterialCost:
if (canViewFinancials)
if (canViewSupplyFinancials)
{
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_MaterialCost, "Material cost");
SetCommodityColDfn(columnDfn, label, 80, SbmDbDfn.ColumnIdx.Commodity_MaterialCost, ColumnAlignment.Right, DataValue.DataType.Double, aliasCommodity_CurrencyMaterial, prefixCommodity_CurrencyMaterial);
@@ -1347,7 +1354,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
break;
case SbmCommodity.Column.MaterialCost_Fmt:
if (canViewFinancials)
if (canViewSupplyFinancials)
{
String label = GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_MaterialCost, "Material cost");
SetCommodityColDfn(columnDfn, label, 90, SbmDbDfn.ColumnIdx.Commodity_MaterialCost, ColumnAlignment.Right, DataValue.DataType.String, aliasCommodity_CurrencyMaterial, prefixCommodity_CurrencyMaterial);
@@ -1421,7 +1428,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
SetCommodityColDfn(columnDfn, "Customer", 100, SbmDbDfn.ColumnIdx.Affiliate_Name);
break;
case SbmCommodity.Column.SalesPrice:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetCommodityColDfn(columnDfn, "Sales price", 80, SbmDbDfn.ColumnIdx.Commodity_SalesPrice, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.NumDecimals = CurrencyDecimalsDefault;
@@ -1429,14 +1436,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
break;
case SbmCommodity.Column.SalesPrice_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetCommodityColDfn(columnDfn, "Sales price", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.String);
columnDfn.ShowZeroValues = false;
}
break;
case SbmCommodity.Column.RetailPrice:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetCommodityColDfn(columnDfn, "RRP", 80, SbmDbDfn.ColumnIdx.Commodity_RetailPrice, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.NumDecimals = CurrencyDecimalsDefault;
@@ -1444,14 +1451,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
break;
case SbmCommodity.Column.RetailPrice_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetCommodityColDfn(columnDfn, "RRP", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.String);
columnDfn.ShowZeroValues = false;
}
break;
case SbmCommodity.Column.RetailPricePlanned:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetCommodityColDfn(columnDfn, "Planned RRP", 80, SbmDbDfn.ColumnIdx.Commodity_RetailPricePlanned, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.NumDecimals = CurrencyDecimalsDefault;
@@ -1459,14 +1466,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
break;
case SbmCommodity.Column.RetailPricePlanned_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetCommodityColDfn(columnDfn, "Planned RRP", 90, SbmDbDfn.ColumnIdx.Commodity_RetailPricePlanned, ColumnAlignment.Right, DataValue.DataType.String);
columnDfn.ShowZeroValues = false;
}
break;
case SbmCommodity.Column.GrossPrice:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetCommodityColDfn(columnDfn, "Gross price", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.NumDecimals = CurrencyDecimalsDefault;
@@ -1474,7 +1481,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
break;
case SbmCommodity.Column.GrossPrice_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetCommodityColDfn(columnDfn, "Gross price", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.String);
columnDfn.ShowZeroValues = false;
@@ -1484,7 +1491,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
SetCommodityColDfn(columnDfn, "Unit of Sale", 100, SbmDbDfn.ColumnIdx.UnitMeasure_Single, ColumnAlignment.Center);
break;
case SbmCommodity.Column.CarriageCostIndicative:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetCommodityColDfn(columnDfn, "Carriage cost (ind)", 80, SbmDbDfn.ColumnIdx.Commodity_CarriageCostIndicative, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.NumDecimals = CurrencyDecimalsDefault;
@@ -1492,7 +1499,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
break;
case SbmCommodity.Column.CarriageCostIndicative_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetCommodityColDfn(columnDfn, "Carriage cost (ind)", 90, SbmDbDfn.ColumnIdx.Commodity_CarriageCostIndicative, ColumnAlignment.Right, DataValue.DataType.String);
columnDfn.ShowZeroValues = false;
@@ -2267,23 +2274,41 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
String fn = GetType().Name + ".GetCommodityQueryFilter";
List<String> filter = new List<String>();
//---------------------------------------------------------------
// Common columns.
String colCommodity_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity);
String colCommodity_AffIdOwner = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_AffIdOwner, aliasCommodity);
String colCommodity_Type = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Type, aliasCommodity);
String colCommodity_Code = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Code, aliasCommodity);
String colCommodity_DescBrief = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_DescBrief, aliasCommodity);
String colCommodity_DescDetail = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_DescDetail, aliasCommodity);
String colCommodity_SpecSummary = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SpecSummary, aliasCommodity);
String colCommodity_DrawingNo = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_DrawingNo, aliasCommodity);
String colCommodity_DrawingIssue = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_DrawingIssue, aliasCommodity);
//---------------------------------------------------------------
// Commodity Id.
String includedIds = prm.IncludedIds.Concat(",");
String colCommodity_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity);
if (!includedIds.IsEmpty()) filter.Add(colCommodity_Id + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
if (!excludedIds.IsEmpty()) filter.Add(colCommodity_Id + " NOT IN (" + excludedIds + ")");
//---------------------------------------------------------------
// Owner.
String colCommodity_AffIdOwner = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_AffIdOwner, aliasCommodity);
bool filterByOwner = !prm.IncludedIds.HasValidIds() && !prm.PriceSetIdsIncluded.HasValidIds() && !SysId.IsValid(prm.AssociationIdCustomer) && !SysId.IsValid(prm.AssociationIdCommodityCustomer);
if (filterByOwner) filter.Add(colCommodity_AffIdOwner + "=" + SysId.ToString(AffiliateId_Owner));
// Organisation.
if (SysId.IsValid(prm.AffiliateIdOrganisation))
filter.Add(colCommodity_AffIdOwner + "=" + SysId.ToString(prm.AffiliateIdOrganisation));
else
{
// Must filter by organisation if insufficient alternative filetrs.
if (!prm.IncludedIds.HasValidIds() && !prm.PriceSetIdsIncluded.HasValidIds() && !SysId.IsValid(prm.AssociationIdCustomer) && !SysId.IsValid(prm.AssociationIdCommodityCustomer))
{
if (!SysId.IsValid(AffiliateId_Owner)) throw new NotSupportedException("Commodity query filter - Organisation Id must be specified");
filter.Add(colCommodity_AffIdOwner + "=" + SysId.ToString(AffiliateId_Owner));
}
}
//---------------------------------------------------------------
// Type.
String colCommodity_Type = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Type, aliasCommodity);
if (prm.CommodityType == Sbm.CommodityType.AnyProduct)
filter.Add(colCommodity_Type + " In (" + ((int)Sbm.CommodityType.Stock).ToString() + "," + ((int)Sbm.CommodityType.NonStock).ToString() + ")");
else if ((int)prm.CommodityType > 0)
@@ -2293,7 +2318,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//---------------------------------------------------------------
// Code.
String colCommodity_Code = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Code, aliasCommodity);
if (!StringUtil.IsEmpty(prm.CodeFull))
filter.Add(colCommodity_Code + "='" + DbQuery.FormatForCondition(prm.CodeFull) + "'");
else if (!StringUtil.IsEmpty(prm.CodePartial))
@@ -2307,7 +2331,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Brief Desc.
bool allowEmbeddedTextSearch = true;
bool allowFullTextSearch = true;
String colCommodity_DescBrief = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_DescBrief, aliasCommodity);
if (!StringUtil.IsEmpty(prm.DescBriefFull))
filter.Add(colCommodity_DescBrief + "='" + DbQuery.FormatForCondition(prm.DescBriefFull) + "'");
else if (!StringUtil.IsEmpty(prm.DescBriefPartial))
@@ -2327,7 +2350,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//---------------------------------------------------------------
// DrawingNumber.
String colCommodity_DrawingNo = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_DrawingNo, aliasCommodity);
if (!StringUtil.IsEmpty(prm.DrawingNoFull))
{
filter.Add(colCommodity_DrawingNo + "='" + DbQuery.FormatForCondition(prm.DrawingNoFull) + "'");
@@ -2338,12 +2360,31 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
// DrawingIssue.
String colCommodity_DrawingIssue = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_DrawingIssue, aliasCommodity);
if (!StringUtil.IsEmpty(prm.DrawingIssueFull))
filter.Add(colCommodity_DrawingIssue + "='" + DbQuery.FormatForCondition(prm.DrawingIssueFull) + "'");
else if (!StringUtil.IsEmpty(prm.DrawingIssuePartial))
filter.Add(DbQuery.FormatFn_Left(colCommodity_DrawingIssue, prm.DrawingIssuePartial.Length) + "='" + DbQuery.FormatForCondition(prm.DrawingIssuePartial) + "'");
//---------------------------------------------------------------
// Generic search.
if (!StringUtil.IsEmpty(prm.Search))
{
List<String> searchFilter = new List<string>();
foreach (String rawSearchValue in prm.Search.Split(new char[] { ' ', ',', ';' }))
{
String searchValue = DbQuery.FormatForLike(StringUtil.TrimAll(rawSearchValue));
if (StringUtil.IsEmpty(searchValue)) continue;
List<String> searchValueFilter = new List<string>();
searchValueFilter.Add(colCommodity_Code + " LIKE '%" + searchValue + "%'");
searchValueFilter.Add(colCommodity_DescBrief + " LIKE '%" + searchValue + "%'");
searchValueFilter.Add(colCommodity_DescDetail + " LIKE '%" + searchValue + "%'");
searchValueFilter.Add(colCommodity_SpecSummary + " LIKE '%" + searchValue + "%'");
searchValueFilter.Add(colCommodity_DrawingNo + " LIKE '%" + searchValue + "%'");
searchFilter.Add(searchValueFilter.Concat(" OR ", "(", ")"));
}
filter.AddRange(searchFilter);
}
//---------------------------------------------------------------
// Catalog.
String colCommodity_CatalogRef = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_CatalogRef, aliasCommodity);
@@ -2670,7 +2711,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
ClearErrorState();
PopulateLocationIdLists();
bool canViewFinancials = UserContext.SecurityProfile.Financial.CanViewFinancials;
bool canViewSupplyFinancials = UserContext.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySupply);
bool canViewSalesFinancials = UserContext.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySales);
//---------------------------------------------------------------
// Construct query.
@@ -2693,8 +2735,10 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//---------------------------------------------------------------
// Commodity Properties - add columns as defined in query list.
if (columns.HasId(SbmCommodity.Column.Id)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity));
if (columns.HasId(SbmCommodity.Column.Type_Desc)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Type, aliasCommodity));
if (columns.HasId(SbmCommodity.Column.Id))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Id, aliasCommodity));
if (columns.HasId(SbmCommodity.Column.Type) || columns.HasId(SbmCommodity.Column.Type_Code) || columns.HasId(SbmCommodity.Column.Type_Desc))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Type, aliasCommodity));
if (columns.HasId(SbmCommodity.Column.Code)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_Code, aliasCommodity));
if (columns.HasId(SbmCommodity.Column.DescBrief)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_DescBrief, aliasCommodity));
if (columns.HasId(SbmCommodity.Column.DescDetail)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_DescDetail, aliasCommodity));
@@ -2740,18 +2784,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (columns.HasId(SbmCommodity.Column.NominalCodePurchase)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_NominalCodePurchase, aliasCommodity));
//---------------------------------------------------------------
// Currency (to come).
if (canViewFinancials && (columns.HasId(SbmCommodity.Column.CostPrice_Fmt) ||
columns.HasId(SbmCommodity.Column.SalesPrice_Fmt) ||
columns.HasId(SbmCommodity.Column.RetailPrice_Fmt) ||
columns.HasId(SbmCommodity.Column.RetailPricePlanned_Fmt) ||
columns.HasId(SbmCommodity.Column.GrossPrice_Fmt) ||
columns.HasId(SbmCommodity.Column.CarriageCostIndicative_Fmt)))
if ((canViewSupplyFinancials && (columns.HasId(SbmCommodity.Column.CostPrice_Fmt))) ||
(canViewSalesFinancials && (columns.HasId(SbmCommodity.Column.SalesPrice_Fmt) || columns.HasId(SbmCommodity.Column.RetailPrice_Fmt) || columns.HasId(SbmCommodity.Column.RetailPricePlanned_Fmt) || columns.HasId(SbmCommodity.Column.GrossPrice_Fmt) || columns.HasId(SbmCommodity.Column.CarriageCostIndicative_Fmt))))
{
}
//---------------------------------------------------------------
// Purchasing.
if (columns.HasId(SbmCommodity.Column.Supplier_Ref)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SupplierRef, aliasCommodity));
if (canViewFinancials && (columns.HasId(SbmCommodity.Column.CostPrice) ||
if (canViewSupplyFinancials && (columns.HasId(SbmCommodity.Column.CostPrice) ||
columns.HasId(SbmCommodity.Column.CostPrice_Fmt))) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_CostPrice, aliasCommodity));
if (columns.HasId(SbmCommodity.Column.PlaceOfOrigin)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_PlaceOfOrigin, aliasCommodity));
if (columns.HasId(SbmCommodity.Column.MaterialCost) || columns.HasId(SbmCommodity.Column.MaterialCost_Fmt)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_MaterialCost, aliasCommodity));
@@ -2769,12 +2809,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (columns.HasId(SbmCommodity.Column.QtyOnOrder)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_QtyOnOrder, aliasCommodity));
//---------------------------------------------------------------
// Sales.
if (canViewFinancials && (columns.HasId(SbmCommodity.Column.SalesPrice) ||
if (canViewSalesFinancials && (columns.HasId(SbmCommodity.Column.SalesPrice) ||
columns.HasId(SbmCommodity.Column.SalesPrice_Fmt) ||
columns.HasId(SbmCommodity.Column.GrossPrice) || columns.HasId(SbmCommodity.Column.GrossPrice_Fmt))) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SalesPrice, aliasCommodity));
if (canViewFinancials && (columns.HasId(SbmCommodity.Column.RetailPrice) ||
if (canViewSalesFinancials && (columns.HasId(SbmCommodity.Column.RetailPrice) ||
columns.HasId(SbmCommodity.Column.RetailPrice_Fmt))) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_RetailPrice, aliasCommodity));
if (canViewFinancials && (columns.HasId(SbmCommodity.Column.RetailPricePlanned) ||
if (canViewSalesFinancials && (columns.HasId(SbmCommodity.Column.RetailPricePlanned) ||
columns.HasId(SbmCommodity.Column.RetailPricePlanned_Fmt))) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_RetailPricePlanned, aliasCommodity));
if (columns.HasId(SbmCommodity.Column.CarriageCostIndicative) ||
columns.HasId(SbmCommodity.Column.CarriageCostIndicative_Fmt)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_CarriageCostIndicative, aliasCommodity));
@@ -2973,7 +3013,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.TaxCode_Code, aliasCommodity_TaxCode_Sale), prefixCommodity_TaxCode_Sale + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.TaxCode_Code, false));
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.TaxCode_TaxRate, aliasCommodity_TaxCode_Sale), prefixCommodity_TaxCode_Sale + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.TaxCode_TaxRate, false));
}
if (canViewFinancials && columns.HasId(SbmCommodity.Column.GrossPrice))
if (canViewSalesFinancials && columns.HasId(SbmCommodity.Column.GrossPrice))
{
// Calculate RRP: SalesPrice + TaxRate%
String colCommodity_SalesPrice = "(" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Commodity_SalesPrice, aliasCommodity) + "*(1.0+(" + prefixCommodity_TaxCode_Sale + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.TaxCode_TaxRate, false) + "/100.0)))";
@@ -1,4 +1,5 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr;
using Sarand.BusinessMgr.Net.Standard.Dbas.Data;
using Sarand.Net.Standard.Base.Dbas;
@@ -18,7 +19,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//-------------------------------------------------------------------
// Construction.
public SbmCommodityMgr_Dbas(SbmUserContext userContext) :
public SbmCommodityMgr_Dbas(ISbmUserContext userContext) :
base(userContext)
{
db = (SbmGlobals.Application.GetBusMgrDatabase(SessionContext) as SacsDatabase);
@@ -1,4 +1,5 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr;
using Sarand.BusinessMgr.Net.Standard.Dbas.Data;
using Sarand.Net.Standard.Base.Dbas;
@@ -19,7 +20,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//-------------------------------------------------------------------
// Construction.
public SbmDataItemMgr_Dbas(SbmUserContext userContext) :
public SbmDataItemMgr_Dbas(ISbmUserContext userContext) :
base(userContext)
{
db = (SbmGlobals.Application.GetBusMgrDatabase(SessionContext) as SacsDatabase);
@@ -1,4 +1,5 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr;
using Sarand.BusinessMgr.Net.Standard.Dbas.Data;
using Sarand.Net.Standard.Base.Dbas;
@@ -16,7 +17,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//-------------------------------------------------------------------
// Construction.
public SbmPriceMgr_Dbas(SbmUserContext userContext) :
public SbmPriceMgr_Dbas(ISbmUserContext userContext) :
base(userContext)
{
db = (SbmGlobals.Application.GetBusMgrDatabase(SessionContext) as SacsDatabase);
@@ -1,4 +1,5 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr;
using Sarand.BusinessMgr.Net.Standard.Dbas.Data;
using Sarand.Net.Standard.Base.Dbas;
@@ -20,7 +21,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//-------------------------------------------------------------------
// Construction.
public SbmProcessMgr_Dbas(SbmUserContext userContext) :
public SbmProcessMgr_Dbas(ISbmUserContext userContext) :
base(userContext)
{
db = (SbmGlobals.Application.GetBusMgrDatabase(SessionContext) as SacsDatabase);
@@ -1,4 +1,5 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr;
using Sarand.BusinessMgr.Net.Standard.Dbas.Data;
using Sarand.Net.Standard.Base.Dbas;
@@ -19,7 +20,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//-------------------------------------------------------------------
// Construction.
public SbmStockMgr_Dbas(SbmUserContext userContext) :
public SbmStockMgr_Dbas(ISbmUserContext userContext) :
base(userContext)
{
db = (SbmGlobals.Application.GetBusMgrDatabase(SessionContext) as SacsDatabase);
@@ -970,7 +970,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//---------------------------------------------------------------------
// Construct build database query.
DbQuery query = new DbQuery(db.DbmsType);
bool canViewFinancials = UserContext.SecurityProfile.Financial.CanViewFinancials;
bool canViewSalesFinancials = UserContext.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySales);
//---------------------------------------------------------------------
// Sort Column ~ lColSort?
@@ -1011,7 +1011,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Constituent_Status));
if (ColumnExists(SbmDbDfn.ColumnIdx.Constituent_Notes))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Constituent_Notes));
if (canViewFinancials)
if (canViewSalesFinancials)
{
if (ColumnExists(SbmDbDfn.ColumnIdx.Constituent_UnitCost))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Constituent_UnitCost));
@@ -745,7 +745,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
public override ColumnDfn GetRequirementColumnDfn(SbmRequirement.Column column, string caption = "", int width = 0)
{
bool canViewFinancials = UserContext.SecurityProfile.Financial.CanViewFinancials;
bool canViewSupplyFinancials = UserContext.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySupply);
bool canViewSalesFinancials = UserContext.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySales);
ColumnDfn columnDfn = new ColumnDfn((int)column, caption, width);
switch (column)
{
@@ -864,47 +865,47 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
columnDfn.NumDecimals = (byte)orderQuantityDecimals;
break;
case SbmRequirement.Column.AmountUnit:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetRequirementColDfn(columnDfn, "Unit", 62, SbmDbDfn.ColumnIdx.Requirement_AmountUnit, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.NumDecimals = CurrencyDecimalsDefault;
}
break;
case SbmRequirement.Column.AmountUnit_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Unit", 80, SbmDbDfn.ColumnIdx.Requirement_AmountUnit, ColumnAlignment.Right, DataValue.DataType.String);
break;
case SbmRequirement.Column.AmountAct:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetRequirementColDfn(columnDfn, "Estimate", 62, SbmDbDfn.ColumnIdx.Requirement_AmountAct, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.NumDecimals = CurrencyDecimalsDefault;
}
break;
case SbmRequirement.Column.AmountAct_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Estimate", 80, SbmDbDfn.ColumnIdx.Requirement_AmountAct, ColumnAlignment.Right, DataValue.DataType.String);
break;
case SbmRequirement.Column.AmountUnitNet:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetRequirementColDfn(columnDfn, "Unit", 62, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.NumDecimals = CurrencyDecimalsDefault;
}
break;
case SbmRequirement.Column.AmountUnitNet_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Unit", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.String);
break;
case SbmRequirement.Column.AmountNet:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetRequirementColDfn(columnDfn, "Net", 60, SbmDbDfn.ColumnIdx.Requirement_AmountNet, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.NumDecimals = CurrencyDecimalsDefault;
}
break;
case SbmRequirement.Column.AmountNet_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Net", 80, SbmDbDfn.ColumnIdx.Requirement_AmountNet, ColumnAlignment.Right, DataValue.DataType.String);
break;
case SbmRequirement.Column.TaxCodeId:
@@ -917,38 +918,38 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
SetRequirementColDfn(columnDfn, "Tax%", 50, SbmDbDfn.ColumnIdx.Requirement_TaxRate, ColumnAlignment.Right, DataValue.DataType.Double);
break;
case SbmRequirement.Column.AmountTax:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetRequirementColDfn(columnDfn, "Tax", 60, SbmDbDfn.ColumnIdx.Requirement_AmountTax, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.NumDecimals = CurrencyDecimalsDefault;
}
break;
case SbmRequirement.Column.AmountTax_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Tax", 80, SbmDbDfn.ColumnIdx.Requirement_AmountTax, ColumnAlignment.Right, DataValue.DataType.String);
break;
case SbmRequirement.Column.AmountTot:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetRequirementColDfn(columnDfn, "Total", 60, SbmDbDfn.ColumnIdx.Requirement_AmountTot, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.NumDecimals = CurrencyDecimalsDefault;
}
break;
case SbmRequirement.Column.AmountTot_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Total", 80, SbmDbDfn.ColumnIdx.Requirement_AmountTot, ColumnAlignment.Right, DataValue.DataType.String);
break;
//-----------------------------------------------------------------
// Derived discounts:
case SbmRequirement.Column.PercentDiscountBySalesPrice:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetRequirementColDfn(columnDfn, "Discount % by price", 100, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.NumDecimals = 1;
}
break;
case SbmRequirement.Column.PercentDiscountByRetailPrice:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetRequirementColDfn(columnDfn, "Discount % by RRP", 100, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.NumDecimals = 1;
@@ -993,40 +994,40 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
break;
// Job costing.
case SbmRequirement.Column.CostTotal:
if (canViewFinancials)
if (canViewSupplyFinancials)
SetRequirementColDfn(columnDfn, "Cost", 80, SbmDbDfn.ColumnIdx.Requirement_CostTotal, ColumnAlignment.Right, DataValue.DataType.Double);
break;
case SbmRequirement.Column.CostTotal_Fmt:
if (canViewFinancials)
if (canViewSupplyFinancials)
SetRequirementColDfn(columnDfn, "Cost", 90, SbmDbDfn.ColumnIdx.Requirement_CostTotal, ColumnAlignment.Right);
break;
case SbmRequirement.Column.CostCalculated:
if (canViewFinancials)
if (canViewSupplyFinancials)
SetRequirementColDfn(columnDfn, "Cost calcuated", 90, SbmDbDfn.ColumnIdx.Requirement_CostCalculated, ColumnAlignment.Center, DataValue.DataType.Date);
break;
case SbmRequirement.Column.AmountMargin:
if (canViewFinancials)
if (canViewSupplyFinancials && canViewSalesFinancials)
{
SetRequirementColDfn(columnDfn, "Margin", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.ShowZeroValues = true;
}
break;
case SbmRequirement.Column.AmountMargin_Fmt:
if (canViewFinancials)
if (canViewSupplyFinancials && canViewSalesFinancials)
{
SetRequirementColDfn(columnDfn, "Margin", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
columnDfn.ShowZeroValues = true;
}
break;
case SbmRequirement.Column.PercentMargin:
if (canViewFinancials)
if (canViewSupplyFinancials && canViewSalesFinancials)
{
SetRequirementColDfn(columnDfn, "% Margin", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.ShowZeroValues = true;
}
break;
case SbmRequirement.Column.PercentMargin_Fmt:
if (canViewFinancials)
if (canViewSupplyFinancials && canViewSalesFinancials)
{
SetRequirementColDfn(columnDfn, "% Margin", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
columnDfn.ShowZeroValues = true;
@@ -1160,11 +1161,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
break;
}
case SbmRequirement.Column.Trans_DeliveryAmountNet:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Delivery net.amt", 90, SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountNet, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Transaction, prefixRequirement_Transaction);
break;
case SbmRequirement.Column.Trans_DeliveryAmountNet_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Delivery net.amt", 100, SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountNet, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
break;
case SbmRequirement.Column.Trans_DeliveryTaxCodeId:
@@ -1183,19 +1184,19 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
break;
}
case SbmRequirement.Column.Trans_DeliveryAmountTax:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Delivery tax.amt", 90, SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountTax, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Transaction, prefixRequirement_Transaction);
break;
case SbmRequirement.Column.Trans_DeliveryAmountTax_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Delivery tax.amt", 100, SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountTax, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
break;
case SbmRequirement.Column.Trans_DeliveryAmountTot:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Delivery tot.amt", 90, SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountTot, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Transaction, prefixRequirement_Transaction);
break;
case SbmRequirement.Column.Trans_DeliveryAmountTot_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Delivery tot.amt", 100, SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountTot, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
break;
case SbmRequirement.Column.Trans_DeliveryNominalCode:
@@ -1225,43 +1226,43 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
SetRequirementColDfn(columnDfn, "Currency", 80, SbmDbDfn.ColumnIdx.Currency_Symbol, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_Currency, prefixRequirement_Currency);
break;
case SbmRequirement.Column.Trans_AmountEst:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Trans £ (est)", 80, SbmDbDfn.ColumnIdx.Transaction_AmountEst, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Transaction, prefixRequirement_Transaction);
break;
case SbmRequirement.Column.Trans_AmountEst_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Trans £ (est)", 90, SbmDbDfn.ColumnIdx.Transaction_AmountEst, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
break;
case SbmRequirement.Column.Trans_AmountMax:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Trans £ (max)", 80, SbmDbDfn.ColumnIdx.Transaction_AmountMax, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Transaction, prefixRequirement_Transaction);
break;
case SbmRequirement.Column.Trans_AmountMax_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Trans £ (max)", 90, SbmDbDfn.ColumnIdx.Transaction_AmountMax, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
break;
case SbmRequirement.Column.Trans_AmountNet:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Trans £ (net)", 80, SbmDbDfn.ColumnIdx.Transaction_AmountNet, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Transaction, prefixRequirement_Transaction);
break;
case SbmRequirement.Column.Trans_AmountNet_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Trans £ (net)", 90, SbmDbDfn.ColumnIdx.Transaction_AmountNet, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
break;
case SbmRequirement.Column.Trans_AmountTax:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Trans £ (tax)", 80, SbmDbDfn.ColumnIdx.Transaction_AmountTax, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Transaction, prefixRequirement_Transaction);
break;
case SbmRequirement.Column.Trans_AmountTax_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Trans £ (tax)", 90, SbmDbDfn.ColumnIdx.Transaction_AmountTax, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
break;
case SbmRequirement.Column.Trans_AmountTot:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Trans £ (tot)", 80, SbmDbDfn.ColumnIdx.Transaction_AmountTot, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_Transaction, prefixRequirement_Transaction);
break;
case SbmRequirement.Column.Trans_AmountTot_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Trans £ (tot)", 90, SbmDbDfn.ColumnIdx.Transaction_AmountTot, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_Transaction, prefixRequirement_Transaction);
break;
case SbmRequirement.Column.Trans_TimeEst:
@@ -1314,43 +1315,43 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//-----------------------------------------------------------------
// Transaction cost.
case SbmRequirement.Column.Trans_CostLabourRateHour:
if (canViewFinancials)
if (canViewSupplyFinancials)
SetRequirementColDfn(columnDfn, "Trans labour rate", 80, SbmDbDfn.ColumnIdx.Transaction_CostLabourRateHour, ColumnAlignment.Right, DataValue.DataType.Double);
break;
case SbmRequirement.Column.Trans_CostTotal:
if (canViewFinancials)
if (canViewSupplyFinancials)
{
SetRequirementColDfn(columnDfn, "Trans cost", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.DataName = transCostTotal;
}
break;
case SbmRequirement.Column.Trans_CostTotal_Fmt:
if (canViewFinancials)
if (canViewSupplyFinancials)
SetRequirementColDfn(columnDfn, "Trans cost", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
break;
case SbmRequirement.Column.Trans_AmountMargin:
if (canViewFinancials)
if (canViewSupplyFinancials && canViewSalesFinancials)
{
SetRequirementColDfn(columnDfn, "Trans margin", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.ShowZeroValues = true;
}
break;
case SbmRequirement.Column.Trans_AmountMargin_Fmt:
if (canViewFinancials)
if (canViewSupplyFinancials && canViewSalesFinancials)
{
SetRequirementColDfn(columnDfn, "Trans margin", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
columnDfn.ShowZeroValues = true;
}
break;
case SbmRequirement.Column.Trans_PercentMargin:
if (canViewFinancials)
if (canViewSupplyFinancials && canViewSalesFinancials)
{
SetRequirementColDfn(columnDfn, "Trans % Margin", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.ShowZeroValues = true;
}
break;
case SbmRequirement.Column.Trans_PercentMargin_Fmt:
if (canViewFinancials)
if (canViewSupplyFinancials && canViewSalesFinancials)
{
SetRequirementColDfn(columnDfn, "Trans % Margin", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
columnDfn.ShowZeroValues = true;
@@ -1629,11 +1630,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
SetRequirementColDfn(columnDfn, "Customer product", 90, SbmDbDfn.ColumnIdx.CommodityCustomer_ProductCode, ColumnAlignment.Center, DataValue.DataType.String, aliasRequirement_CommodityCustomer, prefixRequirement_CommodityCustomer);
break;
case SbmRequirement.Column.Cmd_Cust_RetailPrice:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Customer retail", 80, SbmDbDfn.ColumnIdx.CommodityCustomer_AmountRetail, ColumnAlignment.Right, DataValue.DataType.Double, aliasRequirement_CommodityCustomer, prefixRequirement_CommodityCustomer);
break;
case SbmRequirement.Column.Cmd_Cust_RetailPrice_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
SetRequirementColDfn(columnDfn, "Customer retail", 80, SbmDbDfn.ColumnIdx.CommodityCustomer_AmountRetail, ColumnAlignment.Right, DataValue.DataType.String, aliasRequirement_CommodityCustomer, prefixRequirement_CommodityCustomer);
break;
case SbmRequirement.Column.Cmd_Cust_CurrencyIdRetail:
@@ -2196,7 +2197,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//------------------------------------------------------------------
// Construct build database query.
DbQuery query = new DbQuery(db.DbmsType);
bool canViewFinancials = UserContext.SecurityProfile.Financial.CanViewFinancials;
bool canViewSupplyFinancials = UserContext.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySupply);
bool canViewSalesFinancials = UserContext.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySales);
// Columns required.
bool requirementPromotionReq = columns.HasId((int)SbmRequirement.Column.PromotionCode) || columns.HasId((int)SbmRequirement.Column.PromotionDesc) || columns.HasId((int)SbmRequirement.Column.Promotion_AltText);
@@ -2228,7 +2230,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (columns.HasId((int)SbmRequirement.Column.Quantity) || columns.HasId((int)SbmRequirement.Column.AmountUnitNet))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_Quantity, aliasRequirement));
if (columns.HasId((int)SbmRequirement.Column.QuantityProd)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_QuantityProd, aliasRequirement));
if (canViewFinancials)
if (canViewSalesFinancials)
{
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_AmountUnit, aliasRequirement));
if (columns.HasId((int)SbmRequirement.Column.AmountAct) || columns.HasId((int)SbmRequirement.Column.AmountAct_Fmt)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_AmountAct, aliasRequirement));
@@ -2274,7 +2276,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (requiresReqColTimeAct) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TimeAct, aliasRequirement));
if (requiresReqColTimeTot) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_TimeTot, aliasRequirement));
// Job costing.
if (CostColumnsAreAvailable() && canViewFinancials)
if (CostColumnsAreAvailable() && canViewSupplyFinancials)
{
if (columns.HasId((int)SbmRequirement.Column.CostTotal) || columns.HasId((int)SbmRequirement.Column.CostTotal_Fmt) || columns.HasId((int)SbmRequirement.Column.AmountMargin) || columns.HasId((int)SbmRequirement.Column.AmountMargin_Fmt) || columns.HasId((int)SbmRequirement.Column.PercentMargin) || columns.HasId((int)SbmRequirement.Column.PercentMargin_Fmt))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Requirement_CostTotal, aliasRequirement));
@@ -2471,7 +2473,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryDepartment)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_DeliveryDepartment);
if (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryTaxCodeId)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_TaxCodeIdDelivery);
transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_CurrencyId); // May be required for formatted requirement columns (or transaction currency columns).
if (canViewFinancials)
if (canViewSalesFinancials)
{
if (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAmountNet) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAmountNet_Fmt)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountNet);
if (columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAmountTax) || columns.HasId((int)SbmRequirement.Column.Trans_DeliveryAmountTax_Fmt)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountTax);
@@ -2486,7 +2488,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (columns.HasId((int)SbmRequirement.Column.Trans_TimeEst)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_TimeEst);
if (columns.HasId((int)SbmRequirement.Column.Trans_TimeAct)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_TimeAct);
if (columns.HasId((int)SbmRequirement.Column.Trans_TimeTot)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_TimeTot);
if (canViewFinancials && columns.HasId((int)SbmRequirement.Column.Trans_CostLabourRateHour))
if (canViewSupplyFinancials && columns.HasId((int)SbmRequirement.Column.Trans_CostLabourRateHour))
transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_CostLabourRateHour);
if (columns.HasId((int)SbmRequirement.Column.Trans_Notes)) transactionCols.Add(SbmDbDfn.ColumnIdx.Transaction_Notes);
if (columns.HasId((int)SbmRequirement.Column.Trans_Flags) || columns.HasId((int)SbmRequirement.Column.Trans_AllocationInd) || columns.HasId((int)SbmRequirement.Column.Trans_AllocationInd_YP) || columns.HasId((int)SbmRequirement.Column.Trans_ReplacementOrder_Tick) || columns.HasId((int)SbmRequirement.Column.Trans_ReplacementOrder_Y))
@@ -2547,7 +2549,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//------------------------------------------------------------------
// Transaction cost.
if (hasTransCostCols && canViewFinancials)
if (hasTransCostCols && canViewSupplyFinancials)
{
// Build sub query to calculate the total cost total across all items.
String aliasRequirement_RequirementCost = "ReqCst";
@@ -2790,7 +2792,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Add the columns.
List<SbmDbDfn.ColumnIdx> commodityCustomerCols = new List<SbmDbDfn.ColumnIdx>();
commodityCustomerCols.Add(SbmDbDfn.ColumnIdx.CommodityCustomer_ProductCode);
if (canViewFinancials)
if (canViewSalesFinancials)
commodityCustomerCols.Add(SbmDbDfn.ColumnIdx.CommodityCustomer_AmountRetail);
commodityCustomerCols.Add(SbmDbDfn.ColumnIdx.CommodityCustomer_CurrencyIdRetail);
commodityCustomerCols.Add(SbmDbDfn.ColumnIdx.CommodityCustomer_PromotionCode);
@@ -810,7 +810,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
public override ColumnDfn GetTransactionColumnDfn(SbmTransaction.Column column, string caption = "", int width = 0)
{
bool canViewFinancials = UserContext.SecurityProfile.Financial.CanViewFinancials;
bool canViewSupplyFinancials = UserContext.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySupply);
bool canViewSalesFinancials = UserContext.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySales);
ColumnDfn columnDfn = new ColumnDfn((int)column, caption, width);
switch (column)
{
@@ -909,11 +910,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
SetTransactionColDfn(columnDfn, "Stock picker", 120, SbmDbDfn.ColumnIdx.Transaction_StockPickerCode, ColumnAlignment.Center);
break;
case SbmTransaction.Column.DeliveryAmountNet:
if (canViewFinancials)
if (canViewSalesFinancials)
SetTransactionColDfn(columnDfn, "Delivery net amount", 90, SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountNet, ColumnAlignment.Center, DataValue.DataType.Double);
break;
case SbmTransaction.Column.DeliveryAmountNet_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
SetTransactionColDfn(columnDfn, "Delivery net amount", 90, SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountNet, ColumnAlignment.Center, DataValue.DataType.String);
break;
case SbmTransaction.Column.DeliveryTaxCodeId:
@@ -926,19 +927,19 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
SetTransactionColDfn(columnDfn, "Delivery tax rate", 90, SbmDbDfn.ColumnIdx.TaxCode_TaxRate, ColumnAlignment.Center, DataValue.DataType.Double, aliasTransaction_DeliveryTaxcode, prefixTransaction_DeliveryTaxcode);
break;
case SbmTransaction.Column.DeliveryAmountTax:
if (canViewFinancials)
if (canViewSalesFinancials)
SetTransactionColDfn(columnDfn, "Delivery tax amount", 90, SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountTax, ColumnAlignment.Right, DataValue.DataType.Double);
break;
case SbmTransaction.Column.DeliveryAmountTax_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
SetTransactionColDfn(columnDfn, "Delivery tax amount", 90, SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountTax, ColumnAlignment.Right, DataValue.DataType.String);
break;
case SbmTransaction.Column.DeliveryAmountTot:
if (canViewFinancials)
if (canViewSalesFinancials)
SetTransactionColDfn(columnDfn, "Delivery total amount", 90, SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountTot, ColumnAlignment.Right, DataValue.DataType.Double);
break;
case SbmTransaction.Column.DeliveryAmountTot_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
SetTransactionColDfn(columnDfn, "Delivery total amount", 90, SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountTot, ColumnAlignment.Right, DataValue.DataType.String);
break;
case SbmTransaction.Column.DeliveryNominalCode:
@@ -957,61 +958,61 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
SetTransactionColDfn(columnDfn, "Currency", 79, SbmDbDfn.ColumnIdx.Currency_Symbol, ColumnAlignment.Center, DataValue.DataType.String, aliasTransaction_Currency, prefixTransaction_Currency);
break;
case SbmTransaction.Column.AmountEst:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetTransactionColDfn(columnDfn, "Amount(est)", 75, SbmDbDfn.ColumnIdx.Transaction_AmountEst, ColumnAlignment.Right, DataValue.DataType.Double);
}
break;
case SbmTransaction.Column.AmountEst_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetTransactionColDfn(columnDfn, "Amount(est)", 80, SbmDbDfn.ColumnIdx.Transaction_AmountEst, ColumnAlignment.Right, DataValue.DataType.String);
}
break;
case SbmTransaction.Column.AmountMax:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetTransactionColDfn(columnDfn, "Amount(max)", 75, SbmDbDfn.ColumnIdx.Transaction_AmountMax, ColumnAlignment.Right, DataValue.DataType.Double);
}
break;
case SbmTransaction.Column.AmountMax_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetTransactionColDfn(columnDfn, "Amount(max)", 80, SbmDbDfn.ColumnIdx.Transaction_AmountMax, ColumnAlignment.Right, DataValue.DataType.String);
}
break;
case SbmTransaction.Column.AmountNet:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetTransactionColDfn(columnDfn, "Net", 60, SbmDbDfn.ColumnIdx.Transaction_AmountNet, ColumnAlignment.Right, DataValue.DataType.Double);
}
break;
case SbmTransaction.Column.AmountNet_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetTransactionColDfn(columnDfn, "Net", 80, SbmDbDfn.ColumnIdx.Transaction_AmountNet, ColumnAlignment.Right, DataValue.DataType.String);
}
break;
case SbmTransaction.Column.AmountTax:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetTransactionColDfn(columnDfn, "Tax", 60, SbmDbDfn.ColumnIdx.Transaction_AmountTax, ColumnAlignment.Right, DataValue.DataType.Double);
}
break;
case SbmTransaction.Column.AmountTax_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetTransactionColDfn(columnDfn, "Tax", 80, SbmDbDfn.ColumnIdx.Transaction_AmountTax, ColumnAlignment.Right, DataValue.DataType.String);
}
break;
case SbmTransaction.Column.AmountTot:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetTransactionColDfn(columnDfn, "Total", 60, SbmDbDfn.ColumnIdx.Transaction_AmountTot, ColumnAlignment.Right, DataValue.DataType.Double);
}
break;
case SbmTransaction.Column.AmountTot_Fmt:
if (canViewFinancials)
if (canViewSalesFinancials)
{
SetTransactionColDfn(columnDfn, "Total", 80, SbmDbDfn.ColumnIdx.Transaction_AmountTot, ColumnAlignment.Right, DataValue.DataType.String);
}
@@ -1029,39 +1030,39 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
SetTransactionColDfn(columnDfn, "Labour rate", 90, SbmDbDfn.ColumnIdx.Transaction_CostLabourRateHour, ColumnAlignment.Right, DataValue.DataType.Double);
break;
case SbmTransaction.Column.CostTotal:
if (canViewFinancials)
if (canViewSupplyFinancials)
{
SetTransactionColDfn(columnDfn, "Total cost", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.DataName = colNameCostTotal;
}
break;
case SbmTransaction.Column.CostTotal_Fmt:
if (canViewFinancials)
if (canViewSupplyFinancials)
SetTransactionColDfn(columnDfn, "Total cost", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
break;
case SbmTransaction.Column.AmountMargin:
if (canViewFinancials)
if (canViewSupplyFinancials && canViewSalesFinancials)
{
SetTransactionColDfn(columnDfn, "Margin", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.ShowZeroValues = true;
}
break;
case SbmTransaction.Column.AmountMargin_Fmt:
if (canViewFinancials)
if (canViewSupplyFinancials && canViewSalesFinancials)
{
SetTransactionColDfn(columnDfn, "Margin", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
columnDfn.ShowZeroValues = true;
}
break;
case SbmTransaction.Column.PercentMargin:
if (canViewFinancials)
if (canViewSupplyFinancials && canViewSalesFinancials)
{
SetTransactionColDfn(columnDfn, "% Margin", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Double);
columnDfn.ShowZeroValues = true;
}
break;
case SbmTransaction.Column.PercentMargin_Fmt:
if (canViewFinancials)
if (canViewSupplyFinancials && canViewSalesFinancials)
{
SetTransactionColDfn(columnDfn, "% Margin", 90, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
columnDfn.ShowZeroValues = true;
@@ -1756,7 +1757,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
ClearErrorState();
bool canViewFinancials = UserContext.SecurityProfile.Financial.CanViewFinancials;
bool canViewSupplyFinancials = UserContext.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySupply);
bool canViewSalesFinancials = UserContext.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySales);
//---------------------------------------------------------------------
// Construct build database query.
DbQuery query = new DbQuery(db.DbmsType);
@@ -1790,23 +1792,26 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_DeliveryBookInCode, aliasTransaction));
if (columns.HasId((int)SbmTransaction.Column.StockPickerCode) || columns.HasId((int)SbmTransaction.Column.StockPicker))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_StockPickerCode, aliasTransaction));
if (canViewFinancials && (columns.HasId((int)SbmTransaction.Column.DeliveryAmountNet) || columns.HasId((int)SbmTransaction.Column.DeliveryAmountNet_Fmt)))
if (canViewSalesFinancials && (columns.HasId((int)SbmTransaction.Column.DeliveryAmountNet) || columns.HasId((int)SbmTransaction.Column.DeliveryAmountNet_Fmt)))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountNet, aliasTransaction));
if (columns.HasId((int)SbmTransaction.Column.DeliveryTaxCodeId)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_TaxCodeIdDelivery));
if (canViewFinancials && (columns.HasId((int)SbmTransaction.Column.DeliveryAmountTax) || columns.HasId((int)SbmTransaction.Column.DeliveryAmountTax_Fmt)))
if (canViewSalesFinancials && (columns.HasId((int)SbmTransaction.Column.DeliveryAmountTax) || columns.HasId((int)SbmTransaction.Column.DeliveryAmountTax_Fmt)))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountTax, aliasTransaction));
if (canViewFinancials && (columns.HasId((int)SbmTransaction.Column.DeliveryAmountTot) || columns.HasId((int)SbmTransaction.Column.DeliveryAmountTot_Fmt)))
if (canViewSalesFinancials && (columns.HasId((int)SbmTransaction.Column.DeliveryAmountTot) || columns.HasId((int)SbmTransaction.Column.DeliveryAmountTot_Fmt)))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_DeliveryAmountTot, aliasTransaction));
if (columns.HasId((int)SbmTransaction.Column.DeliveryNominalCode)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_DeliveryNominalCode, aliasTransaction));
if (columns.HasId((int)SbmTransaction.Column.DeliveryDepartment)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_DeliveryDepartment, aliasTransaction));
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_CurrencyId, aliasTransaction));
if (canViewFinancials)
if (canViewSalesFinancials)
{
if (columns.HasId((int)SbmTransaction.Column.AmountEst) || columns.HasId((int)SbmTransaction.Column.AmountEst_Fmt)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_AmountEst, aliasTransaction));
if (columns.HasId((int)SbmTransaction.Column.AmountMax) || columns.HasId((int)SbmTransaction.Column.AmountMax_Fmt)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_AmountMax, aliasTransaction));
if (columns.HasId((int)SbmTransaction.Column.AmountNet) || columns.HasId((int)SbmTransaction.Column.AmountNet_Fmt)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_AmountNet, aliasTransaction));
if (columns.HasId((int)SbmTransaction.Column.AmountTax) || columns.HasId((int)SbmTransaction.Column.AmountTax_Fmt)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_AmountTax, aliasTransaction));
if (columns.HasId((int)SbmTransaction.Column.AmountTot) || columns.HasId((int)SbmTransaction.Column.AmountTot_Fmt)) query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_AmountTot, aliasTransaction));
}
if (canViewSupplyFinancials)
{
if (ColumnExists(SbmDbDfn.ColumnIdx.Transaction_CostLabourRateHour) && columns.HasId((int)SbmTransaction.Column.CostLabourRateHour))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_CostLabourRateHour, aliasTransaction));
}
@@ -1822,6 +1827,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Flags, aliasTransaction));
if (columns.HasId((int)SbmTransaction.Column.Status) || columns.HasId((int)SbmTransaction.Column.Status_Desc) || columns.HasId((int)SbmTransaction.Column.Status_Ind) || columns.HasId((int)SbmTransaction.Column.Status_OnHold_Tick) || columns.HasId((int)SbmTransaction.Column.Status_OnHold_Cross) || columns.HasId((int)SbmTransaction.Column.Status_OnHold_Y))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Status, aliasTransaction));
//---------------------------------------------------------------------
// Association - Owner Aff - Target Affiliate - Target Address
bool hasAssocCols = false;
@@ -1,5 +1,6 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr;
using Sarand.BusinessMgr.Net.Standard.Dbas.Data;
using Sarand.Net.Standard.Base.App;
@@ -33,7 +34,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//-------------------------------------------------------------------
// Construction.
public SbmTransactionMgr_Dbas(SbmUserContext userContext) :
public SbmTransactionMgr_Dbas(ISbmUserContext userContext) :
base(userContext)
{
db = (SbmGlobals.Application.GetBusMgrDatabase(SessionContext) as SacsDatabase);