1064 lines
50 KiB
C#
1064 lines
50 KiB
C#
using Sarand.BusinessMgr.Net.Standard.Base.App;
|
|
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
|
|
using Sarand.Net.Standard.Base.App;
|
|
using Sarand.Net.Standard.Base.Bus;
|
|
using Sarand.Net.Standard.Base.Core;
|
|
using Sarand.Net.Standard.Base.Dbas;
|
|
using Sarand.Net.Standard.Base.ReferenceData;
|
|
using Sarand.Net.Standard.Base.Utils;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
|
{
|
|
//=======================================================================
|
|
partial class SbmCommodityMgr
|
|
{
|
|
public object StringList { get; private set; }
|
|
|
|
//*******************************************************************
|
|
// C o m m o d i t i e s
|
|
//*******************************************************************
|
|
// Utilities.
|
|
public bool IsValidCode(String code)
|
|
{
|
|
if (StringUtil.IsEmpty(code)) return false;
|
|
if (code != code.Trim(' ')) return false;
|
|
return true;
|
|
}
|
|
|
|
// Commodity interface rules.
|
|
public bool AllowColumnImport(SbmCommodity.Column column)
|
|
{
|
|
switch (column)
|
|
{
|
|
//case SbmCommodity.Column.Id:
|
|
//case SbmCommodity.Column.AffIdOwner:
|
|
//case SbmCommodity.Column.Type:
|
|
case SbmCommodity.Column.Code:
|
|
case SbmCommodity.Column.DescBrief:
|
|
case SbmCommodity.Column.DescOrder:
|
|
case SbmCommodity.Column.DescDetail:
|
|
case SbmCommodity.Column.DrawingNo:
|
|
case SbmCommodity.Column.DrawingIssue:
|
|
case SbmCommodity.Column.ImagePath:
|
|
case SbmCommodity.Column.Category1Code:
|
|
case SbmCommodity.Column.Category2Code:
|
|
case SbmCommodity.Column.Category3Code:
|
|
case SbmCommodity.Column.Location:
|
|
case SbmCommodity.Column.Department:
|
|
case SbmCommodity.Column.CatalogRef:
|
|
case SbmCommodity.Column.Weight:
|
|
case SbmCommodity.Column.Weight_UomId:
|
|
case SbmCommodity.Column.Length:
|
|
case SbmCommodity.Column.Length_UomId:
|
|
case SbmCommodity.Column.Volume:
|
|
case SbmCommodity.Column.Volume_UomId:
|
|
case SbmCommodity.Column.Density:
|
|
case SbmCommodity.Column.Density_UomId:
|
|
case SbmCommodity.Column.BoxQuantity:
|
|
case SbmCommodity.Column.BoxQuantity_UomId:
|
|
case SbmCommodity.Column.Dimensions:
|
|
case SbmCommodity.Column.SpecSummary:
|
|
case SbmCommodity.Column.NominalCode:
|
|
case SbmCommodity.Column.NominalCodePurchase:
|
|
case SbmCommodity.Column.ICNTariffCode:
|
|
//case SbmCommodity.Column.TimeProd:
|
|
//case SbmCommodity.Column.UomIdTimeProd:
|
|
//case SbmCommodity.Column.RangeCode:
|
|
//case SbmCommodity.Column.ColourCode:
|
|
//case SbmCommodity.Column.SourceCode:
|
|
//case SbmCommodity.Column.SupplyMethodCode:
|
|
//case SbmCommodity.Column.HandlingCode:
|
|
//case SbmCommodity.Column.DeliveryCode:
|
|
case SbmCommodity.Column.MaterialCode:
|
|
case SbmCommodity.Column.FinishCode:
|
|
case SbmCommodity.Column.PromotionCode:
|
|
case SbmCommodity.Column.AssociationIdSupplier:
|
|
case SbmCommodity.Column.Supplier_Ref:
|
|
case SbmCommodity.Column.CostPrice:
|
|
case SbmCommodity.Column.PlaceOfOrigin:
|
|
case SbmCommodity.Column.MaterialCost:
|
|
case SbmCommodity.Column.MaterialCurrencyId:
|
|
case SbmCommodity.Column.ExWorksCost:
|
|
case SbmCommodity.Column.ExWorksCurrencyId:
|
|
case SbmCommodity.Column.ReorderLevel:
|
|
case SbmCommodity.Column.ReorderQty:
|
|
//case SbmCommodity.Column.QtyOnOrder:
|
|
case SbmCommodity.Column.AssociationIdCustomer:
|
|
case SbmCommodity.Column.SalesPrice:
|
|
case SbmCommodity.Column.RetailPrice:
|
|
case SbmCommodity.Column.RetailPricePlanned:
|
|
case SbmCommodity.Column.UomIdSale:
|
|
case SbmCommodity.Column.CarriageCostIndicative:
|
|
//case SbmCommodity.Column.CarriageCostIndicative_Fmt:
|
|
case SbmCommodity.Column.MinOrderQty:
|
|
case SbmCommodity.Column.PackQty:
|
|
case SbmCommodity.Column.TaxCodeId:
|
|
//case SbmCommodity.Column.LastOrderDate:
|
|
//case SbmCommodity.Column.LastOrderQty:
|
|
//case SbmCommodity.Column.QtyInStock:
|
|
//case SbmCommodity.Column.QtyAllocated:
|
|
//case SbmCommodity.Column.FreeStock:
|
|
//case SbmCommodity.Column.StockTakeDate:
|
|
//case SbmCommodity.Column.StockTakeQty:
|
|
//case SbmCommodity.Column.OrderQtyDecimals:
|
|
case SbmCommodity.Column.CommodityIdSalesProj:
|
|
//case SbmCommodity.Column.SalesProjMonthlyProp:
|
|
case SbmCommodity.Column.SalesProj_Annual:
|
|
case SbmCommodity.Column.SalesProjMonth01:
|
|
case SbmCommodity.Column.SalesProjMonth02:
|
|
case SbmCommodity.Column.SalesProjMonth03:
|
|
case SbmCommodity.Column.SalesProjMonth04:
|
|
case SbmCommodity.Column.SalesProjMonth05:
|
|
case SbmCommodity.Column.SalesProjMonth06:
|
|
case SbmCommodity.Column.SalesProjMonth07:
|
|
case SbmCommodity.Column.SalesProjMonth08:
|
|
case SbmCommodity.Column.SalesProjMonth09:
|
|
case SbmCommodity.Column.SalesProjMonth10:
|
|
case SbmCommodity.Column.SalesProjMonth11:
|
|
case SbmCommodity.Column.SalesProjMonth12:
|
|
case SbmCommodity.Column.Notes:
|
|
//case SbmCommodity.Column.Flags:
|
|
//case SbmCommodity.Column.Status:
|
|
//case SbmCommodity.Column.CreateOn:
|
|
//case SbmCommodity.Column.CreateBy:
|
|
//case SbmCommodity.Column.CreateHost:
|
|
//case SbmCommodity.Column.UpdateOn:
|
|
//case SbmCommodity.Column.UpdateBy:
|
|
//case SbmCommodity.Column.UpdateHost:
|
|
return true;//return ConfigConsole.DisplayAttribute(column);
|
|
}
|
|
return false;
|
|
}
|
|
public String GetColumnCode(SbmCommodity.Column column)
|
|
{
|
|
switch (column)
|
|
{
|
|
case SbmCommodity.Column.Type:
|
|
case SbmCommodity.Column.Type_Code:
|
|
case SbmCommodity.Column.Type_Desc:
|
|
return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_Type, "Type");
|
|
case SbmCommodity.Column.Code: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_Code, "Code");
|
|
case SbmCommodity.Column.DescBrief: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_DescBrief, "Brief description");
|
|
case SbmCommodity.Column.DescOrder: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_DescOrder, "Order description");
|
|
case SbmCommodity.Column.DescDetail: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_DescDetail, "Detail description");
|
|
case SbmCommodity.Column.DrawingNo: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_DrawingNo, "Drawing no");
|
|
case SbmCommodity.Column.DrawingIssue: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_DrawingIssue, "Drawing issue");
|
|
case SbmCommodity.Column.ImagePath: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_ImagePath, "Image path");
|
|
case SbmCommodity.Column.Category1Code: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_Category, "Category");
|
|
case SbmCommodity.Column.Location: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_Location, "Location");
|
|
case SbmCommodity.Column.Department: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_Department, "Department");
|
|
case SbmCommodity.Column.CatalogRef: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_CatalogRef, "Catalog ref");
|
|
case SbmCommodity.Column.Weight: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_Weight, "Weight");
|
|
case SbmCommodity.Column.Weight_UomId: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_UomIdWeight, "Weight unit");
|
|
case SbmCommodity.Column.Length: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_Length, "Length");
|
|
case SbmCommodity.Column.Length_UomId: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_UomIdLength, "Length unit");
|
|
case SbmCommodity.Column.Volume: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_Volume, "Volume");
|
|
case SbmCommodity.Column.Volume_UomId: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_UomIdVolume, "Volume unit");
|
|
case SbmCommodity.Column.Density: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_Density, "Density");
|
|
case SbmCommodity.Column.Density_UomId: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_UomIdDensity, "Density unit");
|
|
case SbmCommodity.Column.BoxQuantity: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_BoxQuantity, "Box quantity");
|
|
case SbmCommodity.Column.BoxQuantity_UomId: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_UomIdBox, "Box unit");
|
|
case SbmCommodity.Column.Dimensions: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_Dimensions, "Dimensions");
|
|
case SbmCommodity.Column.SpecSummary: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_SpecSummary, "Specification");
|
|
case SbmCommodity.Column.NominalCode: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_NominalCode, "Nominal code - sales");
|
|
case SbmCommodity.Column.NominalCodePurchase: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_NominalCodePurchase, "Nominal code - purchase");
|
|
case SbmCommodity.Column.ICNTariffCode: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_ICNTariffCode, "ICN Tariff code");
|
|
case SbmCommodity.Column.MaterialCode: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_MaterialCode, "Material");
|
|
case SbmCommodity.Column.FinishCode: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_FinishCode, "Finish");
|
|
case SbmCommodity.Column.PromotionCode: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_PromotionCode, "Promotion");
|
|
case SbmCommodity.Column.AssociationIdSupplier: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_AssIdSupplier, "Supplier");
|
|
case SbmCommodity.Column.Supplier_Ref: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_SupplierRef, "Supplier ref");
|
|
case SbmCommodity.Column.CostPrice: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_CostPrice, "Cost price");
|
|
case SbmCommodity.Column.PlaceOfOrigin: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_PlaceOfOrigin, "Place of origin");
|
|
case SbmCommodity.Column.MaterialCost: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_MaterialCost, "Material cost");
|
|
case SbmCommodity.Column.MaterialCurrencyId: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_CurrencyIdMaterial, "Material currency");
|
|
case SbmCommodity.Column.ExWorksCost: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_ExWorksCost, "Ex-works cost");
|
|
case SbmCommodity.Column.ExWorksCurrencyId: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_CurrencyIdExWorks, "Ex-works currency");
|
|
case SbmCommodity.Column.ReorderLevel: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_ReorderLevel, "Reorder level");
|
|
case SbmCommodity.Column.ReorderQty: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_ReorderQty, "Reorder qty");
|
|
case SbmCommodity.Column.AssociationIdCustomer: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_AssIdCustomer, "Customer");
|
|
case SbmCommodity.Column.SalesPrice: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_SalesPrice, "Sales price");
|
|
case SbmCommodity.Column.RetailPrice: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_RetailPrice, "Retail price");
|
|
case SbmCommodity.Column.RetailPricePlanned: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_RetailPricePlanned, "Retail price planned");
|
|
case SbmCommodity.Column.UomIdSale: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_UomIdSale, "Sale unit");
|
|
case SbmCommodity.Column.PackQty: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_PackQty, "Pack qty - sale");
|
|
case SbmCommodity.Column.TaxCodeId: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_TaxCodeId, "Tax code");
|
|
case SbmCommodity.Column.SalesProj_Annual: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_SalesProjAnnual, "Projected annual sales");
|
|
case SbmCommodity.Column.SalesProjMonth01: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth01, "Projected sales - Jan");
|
|
case SbmCommodity.Column.SalesProjMonth02: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth02, "Projected sales - Feb");
|
|
case SbmCommodity.Column.SalesProjMonth03: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth03, "Projected sales - Mar");
|
|
case SbmCommodity.Column.SalesProjMonth04: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth04, "Projected sales - Apr");
|
|
case SbmCommodity.Column.SalesProjMonth05: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth05, "Projected sales - May");
|
|
case SbmCommodity.Column.SalesProjMonth06: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth06, "Projected sales - Jun");
|
|
case SbmCommodity.Column.SalesProjMonth07: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth07, "Projected sales - Jul");
|
|
case SbmCommodity.Column.SalesProjMonth08: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth08, "Projected sales - Aug");
|
|
case SbmCommodity.Column.SalesProjMonth09: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth09, "Projected sales - Sep");
|
|
case SbmCommodity.Column.SalesProjMonth10: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth10, "Projected sales - Oct");
|
|
case SbmCommodity.Column.SalesProjMonth11: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth11, "Projected sales - Nov");
|
|
case SbmCommodity.Column.SalesProjMonth12: return GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth12, "Projected sales - Dec");
|
|
}
|
|
return "";
|
|
}
|
|
// Image Paths.
|
|
public String GetImagePathPrefix()
|
|
{
|
|
String prefix = "";
|
|
if (AccountsDfn.IsItemTypeManagedByAccounts(Sbm.ItemType.Commodity))
|
|
{
|
|
if (AccountsDfn.IsUsingSageInterface())
|
|
prefix = "%SAGE%\\";
|
|
}
|
|
return prefix;
|
|
}
|
|
public String GetActualImagePath(String imagePath)
|
|
{
|
|
//SATRACE("SapCommodityMgr::GetActualImagePath '"+imagePath+"'\n");
|
|
if (StringUtil.IsEmpty(imagePath)) return imagePath;
|
|
String imagePathPrefix = GetImagePathPrefix();
|
|
String cmdImagePath = imagePath;
|
|
if (cmdImagePath.Left(imagePathPrefix.Length) == imagePathPrefix)
|
|
{
|
|
String imageFolder = "";
|
|
if (AccountsDfn.IsItemTypeManagedByAccounts(Sbm.ItemType.Commodity))
|
|
{
|
|
if (AccountsDfn.IsUsingSageInterface())
|
|
imageFolder = AccountsDfn.GetImageFolder(Sbm.InterfaceType_Accounts.SageLine50);
|
|
}
|
|
//ToDo SaSystem::GETPATHDELIM in SbmCmdMgr need to be created inorder to work
|
|
cmdImagePath = imageFolder + /*SaSystem::GetPathDelim(imageFolder) +*/ cmdImagePath.Right(cmdImagePath.Length - imagePathPrefix.Length);
|
|
}
|
|
#if _DEBUG_XXX
|
|
if (!sCmdImagePath.IsEmpty())
|
|
{
|
|
SATRACE("GetActualImagePath Path = '" + cmdImagePath + "'\n");
|
|
}
|
|
#endif
|
|
return cmdImagePath;
|
|
}
|
|
|
|
public String GetStandardImagePath(String commodityCode)
|
|
{
|
|
// Using organisation configuration image folder.
|
|
if (StringUtil.IsEmpty(commodityCode)) return commodityCode;
|
|
String path = "";
|
|
if (!StringUtil.IsEmpty(commodityCode))
|
|
{
|
|
String folder = UserContext.GetOwnerOption_Folder(Sbm.OrgOption_Folder.CommodityImage);
|
|
path = GetImagePath(folder, commodityCode);
|
|
}
|
|
return path;
|
|
}
|
|
public String GetBarcodeImagePath(String commodityCode)
|
|
{
|
|
// Using organisation configuration barcode image folder.
|
|
if (StringUtil.IsEmpty(commodityCode)) return commodityCode;
|
|
String path = "";
|
|
if (!StringUtil.IsEmpty(commodityCode))
|
|
{
|
|
String folder = UserContext.GetOwnerOption_Folder(Sbm.OrgOption_Folder.CommodityBarcodeImage);
|
|
path = GetImagePath(folder, commodityCode);
|
|
}
|
|
return path;
|
|
}
|
|
|
|
public String GetImagePath(String folder, String filenamePrefix)
|
|
{
|
|
String path = "";
|
|
//SATRACE("SapCommodityMgr::GetImagePath Locating image file '"+sFilenamePrefix+"' in folder '"+sFolder+"'\n");
|
|
if (!folder.IsEmpty() && Directory.Exists(folder) && !filenamePrefix.IsEmpty())
|
|
{
|
|
List<String> imageExtensions = StringListUtil.Split("jpg,jpeg,gif,png,tif,eps", ",");
|
|
foreach (String imageExtension in imageExtensions)
|
|
{
|
|
//ToDo SaSystem::GETPATHDELIM in SbmCmdMgr need to be created inorder to work
|
|
path = folder + /*SaSystem::GetPathDelim(folder) +*/ filenamePrefix + "." + imageExtension;
|
|
#if _DEBUG
|
|
if (Sys_Fn::FileExists(path))
|
|
{
|
|
SATRACE("GetImagePath Found image file: " + path + "\n");
|
|
}
|
|
#endif
|
|
if (!Directory.Exists(path)) path.IsEmpty();
|
|
}
|
|
}
|
|
return path;
|
|
}
|
|
|
|
public abstract List<Sbm.CommodityType> GetCommodityTypesInUse();
|
|
public abstract Sbm.CommodityType GetTypeForCommodityId(SysId commodityId);
|
|
public abstract double GetCostPriceForCommodityId(SysId commodityId);
|
|
public abstract List<SysIdString> GetSalesTemplateCommmodities();
|
|
public abstract bool UpdateReferencesToSalesTemplate(SbmCommodity commodity);
|
|
|
|
public abstract String BuildSalesQuantityQuery(DateTime earliest, DateTime latest, bool completeOrders, String tableAliasCommodity);// Sales Quantity Query.
|
|
public abstract String BuildAllocatedStockQuery(List<SysId> locIds);// Allocated Stock Query.
|
|
public abstract String BuildCurrentStockQuery(List<SysId> locIds);// Currency Stock Query.
|
|
public abstract String BuildPlannedStockMovementsQuery(DateTime earliest, DateTime latest, SbmCommodity.Params prmCmd, bool intoStock, bool provisional, String tableAliasCommodity);// Stock Movements Query.
|
|
public abstract void PopulateLocationIdLists();// Populate LocationId Lists.
|
|
|
|
//-------------------------------------------------------------------
|
|
// Retrieve individual commodities.
|
|
//-------------------------------------------------------------------
|
|
// Commodity exists.
|
|
public bool CommodityExistsById(SysId commodityId)
|
|
{
|
|
ClearErrorState();
|
|
if (!SysId.IsValid(commodityId)) return false;
|
|
SbmCommodity.Params prmCommodity = new SbmCommodity.Params();
|
|
prmCommodity.IncludedIds.Add(commodityId);
|
|
prmCommodity.StatusCat = SbmCommodity.StatusCat.Any;
|
|
return GetCommodityCount(prmCommodity) == 1;
|
|
}
|
|
public bool CommodityExistsByCode(String code)
|
|
{
|
|
ClearErrorState();
|
|
if (StringUtil.IsEmpty(code)) return false;
|
|
SbmCommodity.Params prmCommodity = new SbmCommodity.Params();
|
|
prmCommodity.CodeFull = code;
|
|
prmCommodity.StatusCat = SbmCommodity.StatusCat.NotDeleted;
|
|
return GetCommodityCount(prmCommodity) == 1;
|
|
}
|
|
|
|
public bool CommodityExistsByCodeIssue(String code, String issue)
|
|
{
|
|
ClearErrorState();
|
|
if (StringUtil.IsEmpty(code) && StringUtil.IsEmpty(issue)) return false;
|
|
SbmCommodity.Params prmCommodity = new SbmCommodity.Params();
|
|
prmCommodity.CodeFull = code;
|
|
prmCommodity.DrawingIssueFull = issue;
|
|
prmCommodity.StatusCat = SbmCommodity.StatusCat.NotDeleted;
|
|
return GetCommodityCount(prmCommodity) == 1;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Get commodities.
|
|
public abstract SbmCommodity GetCommodity(SbmCommodity.Params prm);
|
|
|
|
public SbmCommodity GetCommodityById(SysId commodityId)
|
|
{
|
|
ClearErrorState();
|
|
if (!SysId.IsValid(commodityId)) return null;
|
|
SbmCommodity.Params prmCommodity = new SbmCommodity.Params();
|
|
prmCommodity.IncludedIds.Add(commodityId);
|
|
prmCommodity.StatusCat = SbmCommodity.StatusCat.Any;
|
|
return GetCommodity(prmCommodity);
|
|
}
|
|
public SbmCommodity GetCommodityCurrentByCode(String code)
|
|
{
|
|
ClearErrorState();
|
|
SbmCommodity commodity = null;
|
|
if (StringUtil.IsEmpty(code)) return commodity;
|
|
SbmCommodity.Params prmCommodity = new SbmCommodity.Params();
|
|
prmCommodity.CodeFull = code;
|
|
prmCommodity.StatusCat = SbmCommodity.StatusCat.NotDeleted;
|
|
return GetCommodity(prmCommodity);
|
|
}
|
|
public SbmCommodity GetCommodityByCodeIssue(String code, String issue)
|
|
{
|
|
ClearErrorState();
|
|
SbmCommodity commodity = null;
|
|
if (StringUtil.IsEmpty(code) && StringUtil.IsEmpty(issue)) return commodity;
|
|
SbmCommodity.Params prmCommodity = new SbmCommodity.Params();
|
|
prmCommodity.CodeFull = code;
|
|
prmCommodity.DrawingIssueFull = issue;
|
|
prmCommodity.StatusCat = SbmCommodity.StatusCat.NotDeleted;
|
|
return GetCommodity(prmCommodity);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Create commodities.
|
|
public abstract SbmCommodity CreateCommodity(SysId affIdOwner, Sbm.CommodityType commodityType, String code);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Validate Commodity data.
|
|
public bool IsValidCommodity(SbmCommodity commodity)
|
|
{
|
|
ClearErrorState();
|
|
if (commodity == null) return SetErrorState(ErrorMessage.ItemNotSpecified);
|
|
return IsValidCommodityData(commodity.GetData(), new SbmCommodity.ErrField());
|
|
}
|
|
public virtual bool IsValidCommodityData(SbmCommodity.Data data, SbmCommodity.ErrField errField)
|
|
{
|
|
ClearErrorState();
|
|
//Validate the identity.
|
|
if (errField.AffiliateIdOwner != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.AffiliateIdOwner))
|
|
{
|
|
errField.AffiliateIdOwner = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("invalid owner");
|
|
}
|
|
if (errField.CommodityType != SacsHierarchyItem.ValidValue.Ignore && (int)data.CommodityType < 1)
|
|
{
|
|
errField.CommodityType = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("invalid type");
|
|
}
|
|
|
|
// Validate the text attributes.
|
|
if (errField.Code != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Code, "code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Code), true))
|
|
{
|
|
errField.Code = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description brief", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_DescBrief), true))
|
|
{
|
|
errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.DescOrder != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescOrder, "description order", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_DescOrder)))
|
|
{
|
|
errField.DescOrder = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.DescDetail != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescDetail, "description detail", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_DescDetail)))
|
|
{
|
|
errField.DescDetail = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.DrawingNumber != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DrawingNumber, "drawing no", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_DrawingNo)))
|
|
{
|
|
errField.DrawingNumber = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.DrawingIssue != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DrawingIssue, "drawing issue", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_DrawingIssue)))
|
|
{
|
|
errField.DrawingIssue = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.ImagePath != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ImagePath, "image path", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_ImagePath)))
|
|
{
|
|
errField.ImagePath = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Category1 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Category1, "category1", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Category)))
|
|
{
|
|
errField.Category1 = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Category2 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Category2, "category2", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Category2)))
|
|
{
|
|
errField.Category2 = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Category3 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Category3, "category3", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Category3)))
|
|
{
|
|
errField.Category3 = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Location != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Location, "location", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Location)))
|
|
{
|
|
errField.Location = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Department != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Department, "department", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Department)))
|
|
{
|
|
errField.Department = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.CatalogRef != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.CatalogRef, "catalog ref", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_CatalogRef)))
|
|
{
|
|
errField.CatalogRef = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Dimensions != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Dimensions, "dimensions", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Dimensions)))
|
|
{
|
|
errField.Dimensions = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.SpecSummary != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.SpecSummary, "spec summary", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_SpecSummary)))
|
|
{
|
|
errField.SpecSummary = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.MaterialCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.MaterialCode, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_MaterialCode, "material code"),
|
|
(long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_MaterialCode)))
|
|
{
|
|
errField.MaterialCode = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.FinishCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.FinishCode, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_FinishCode, "finish code"),
|
|
(long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_FinishCode)))
|
|
{
|
|
errField.FinishCode = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.PromotionCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PromotionCode, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_PromotionCode, "promotion code"), (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_PromotionCode)))
|
|
{
|
|
errField.PromotionCode = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.ICNTariffCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ICNTariffCode, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_ICNTariffCode, "ICN tariff code"), (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_ICNTariffCode)))
|
|
{
|
|
errField.ICNTariffCode = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.NominalCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.NominalCode, "nominal code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_NominalCode)))
|
|
{
|
|
errField.NominalCode = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.NominalCodePurchase != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.NominalCodePurchase, "nominal code purchase", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_NominalCodePurchase)))
|
|
{
|
|
errField.NominalCodePurchase = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.SupplierRef != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.SupplierRef, "supplier ref", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_SupplierRef)))
|
|
{
|
|
errField.SupplierRef = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.PlaceOfOrigin != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PlaceOfOrigin, "place of origin", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_PlaceOfOrigin)))
|
|
{
|
|
errField.PlaceOfOrigin = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Notes)))
|
|
{
|
|
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Status != SacsHierarchyItem.ValidValue.Ignore)
|
|
{
|
|
if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Status), true, true))
|
|
{
|
|
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (!SbmCommodity.ValidStatuses.Contains(data.Status))
|
|
{
|
|
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState(ErrorMessage.InvalidStatus);
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Commodity database interface.
|
|
public abstract bool InsertCommodity(SbmCommodity commodity, DbUpdateInfo dbUpdateInfo);
|
|
public abstract bool UpdateCommodity(SbmCommodity commodity, DbUpdateInfo dbUpdateInfo);
|
|
public virtual bool CommodityCanBeDeleted(SbmCommodity commodity)
|
|
{
|
|
ClearErrorState();
|
|
return true;
|
|
}
|
|
public abstract bool DeleteCommodity(SbmCommodity commodity, DbUpdateInfo dbUpdateInfo);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Commodity list.
|
|
public abstract ColumnDfn GetCommodityColumnDfn(SbmCommodity.Column columnId, String caption = "", int width = 0);
|
|
public abstract List<String> GetCommodityQueryFilter(SbmCommodity.Params prm);
|
|
public abstract long GetCommodityCount(SbmCommodity.Params prm);
|
|
public abstract List<SbmCommodity> GetCommodityList(SbmCommodity.Params prm);
|
|
public abstract DbResultSet ExecuteCommodityQuery(List<ColumnDfn> columns, SbmCommodity.Params prm);
|
|
public abstract Task<DbResultSet> ExecuteCommodityQueryAsync(List<ColumnDfn> columns, SbmCommodity.Params prm);
|
|
|
|
//-------------------------------------------------------------------
|
|
// D a t a V a l u e s
|
|
//-------------------------------------------------------------------
|
|
/// <summary>
|
|
/// Extract and format result set data value where specific handling is required.
|
|
/// <para>Where response is an invalid data value, format value using column.FormatValue(values).</para>
|
|
/// </summary>
|
|
public DataValue GetCommodityDataValue(ColumnDfn column, NamedValue.Map values)
|
|
{
|
|
DataValue value = new DataValue();
|
|
switch ((SbmCommodity.Column)column.Id)
|
|
{
|
|
//---------------------------------------------------------------
|
|
// Commodity TypeDesc.
|
|
case SbmCommodity.Column.Type_Code:
|
|
case SbmCommodity.Column.Type_Desc:
|
|
{
|
|
Sbm.CommodityType commodityType = (Sbm.CommodityType)values.GetValue(column.DataName).AsLong();
|
|
if (column.Id == (int)SbmCommodity.Column.Type_Desc)
|
|
value = new DataValue(CommodityTypes.GetDescForType(commodityType, ((int)commodityType).ToString()));
|
|
else
|
|
value = new DataValue(CommodityTypes.GetCodeForType(commodityType, ((int)commodityType).ToString()));
|
|
break;
|
|
}
|
|
|
|
// Category Desc.
|
|
case SbmCommodity.Column.Category1_Desc:
|
|
case SbmCommodity.Column.Category2_Desc:
|
|
case SbmCommodity.Column.Category3_Desc:
|
|
{
|
|
String categoryCode = values.GetValue(column.DataName).ToString();
|
|
value = new DataValue(GetCodeTypeCodeDesc(Sbm.ApplCodeType.CommodityCategory, categoryCode));
|
|
break;
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Weight units.
|
|
case SbmCommodity.Column.Weight_Unit:
|
|
{
|
|
String valWeight = "";
|
|
SysId unitId = new SysId(StringUtil.ToInt(values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Id).DataName).ToString()));
|
|
SaUnitMeasure uom = FindUnitOfMeasureById(unitId);
|
|
if (uom != null)
|
|
valWeight = uom.Abbr;
|
|
value = new DataValue(valWeight);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.Weight_ValueUnits:
|
|
{
|
|
String valWeight = "";
|
|
double weight = values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Weight).DataName).ToNumeric();
|
|
if (weight > 0.0)
|
|
{
|
|
#if _DEBUG_XXX
|
|
values.Dump(::afxDump);
|
|
#endif
|
|
SysId unitId = new SysId(StringUtil.ToInt(values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Weight_UomId).DataName).ToString()));
|
|
SaUnitMeasure uom = FindUnitOfMeasureById(unitId);
|
|
valWeight = StringUtil.FormatNumeric(weight, (ushort)WeightDecimals, 0, ',');
|
|
if (uom != null)
|
|
valWeight += " " + uom.Abbr;
|
|
}
|
|
|
|
value = new DataValue(valWeight);
|
|
break;
|
|
}
|
|
|
|
// Length units.
|
|
case SbmCommodity.Column.Length_Unit:
|
|
{
|
|
String valLength;
|
|
SysId unitId = new SysId(StringUtil.ToInt(values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Length_UomId).DataName).ToString()));
|
|
SaUnitMeasure uom = FindUnitOfMeasureById(unitId);
|
|
if (uom != null)
|
|
valLength = uom.Abbr;
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.Length_ValueUnits:
|
|
{
|
|
String valLength = "";
|
|
double length = values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Length).DataName).ToNumeric();
|
|
if (length > 0.0)
|
|
{
|
|
#if _DEBUG_XXX
|
|
values.Dump(::afxDump);
|
|
#endif
|
|
SysId unitId = new SysId(StringUtil.ToInt(values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Length_UomId).DataName).ToString()));
|
|
SaUnitMeasure uom = FindUnitOfMeasureById(unitId);
|
|
valLength = StringUtil.FormatNumeric(length, (ushort)LengthDecimals, 0, ',');
|
|
if (uom != null)
|
|
valLength += " " + uom.Abbr;
|
|
}
|
|
value = new DataValue(valLength);
|
|
break;
|
|
}
|
|
|
|
// Volume units:
|
|
case SbmCommodity.Column.Volume_Unit:
|
|
{
|
|
String volVolume;
|
|
SysId unitId = new SysId(StringUtil.ToInt(values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Volume_UomId).DataName).ToString()));
|
|
SaUnitMeasure uom = FindUnitOfMeasureById(unitId);
|
|
if (uom != null)
|
|
volVolume = uom.Abbr;
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.Volume_ValueUnits:
|
|
{
|
|
String valVolume = "";
|
|
double volume = values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Volume).DataName).ToNumeric();
|
|
if (volume > 0.0)
|
|
{
|
|
#if _DEBUG_XXX
|
|
lValue.Dump(::afxDump);
|
|
#endif
|
|
SysId unitId = new SysId(StringUtil.ToInt(values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Volume_UomId).DataName).ToString()));
|
|
SaUnitMeasure uom = FindUnitOfMeasureById(unitId);
|
|
valVolume = StringUtil.FormatNumeric(volume, (ushort)VolumeDecimals, 0, ',');
|
|
if (uom != null)
|
|
valVolume += " " + uom.Abbr;
|
|
}
|
|
value = new DataValue(valVolume);
|
|
break;
|
|
}
|
|
|
|
// Density units.
|
|
case SbmCommodity.Column.Density_Unit:
|
|
{
|
|
String valDensity;
|
|
SysId unitId = new SysId(StringUtil.ToInt(values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Density_UomId).DataName).ToString()));
|
|
SaUnitMeasure uom = FindUnitOfMeasureById(unitId);
|
|
if (uom != null)
|
|
valDensity = uom.Abbr;
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.Density_ValueUnits:
|
|
{
|
|
String valDensity = "";
|
|
double density = values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Density).DataName).ToNumeric();
|
|
if (density > 0.0)
|
|
{
|
|
#if _DEBUG_XXX
|
|
values.Dump(::afxDump);
|
|
#endif
|
|
SysId unitId = new SysId(StringUtil.ToInt(values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Density_UomId).DataName).ToString()));
|
|
SaUnitMeasure uom = FindUnitOfMeasureById(unitId);
|
|
valDensity = StringUtil.FormatNumeric(density, (ushort)DensityDecimals, 0, ',');
|
|
if (uom != null)
|
|
valDensity += " " + uom.Abbr;
|
|
}
|
|
value = new DataValue(valDensity);
|
|
break;
|
|
}
|
|
|
|
// BoxQty units.
|
|
case SbmCommodity.Column.BoxQuantity_Unit:
|
|
{
|
|
String valBox = "";
|
|
SysId unitId = new SysId(StringUtil.ToInt(values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.BoxQuantity_UomId).DataName).ToString()));
|
|
SaUnitMeasure uom = FindUnitOfMeasureById(unitId);
|
|
if (uom != null)
|
|
valBox = uom.Abbr;
|
|
value = new DataValue(valBox);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.BoxQuantity_ValueUnits:
|
|
{
|
|
String valBox = "";
|
|
double box = values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.BoxQuantity).DataName).ToNumeric();
|
|
if (box > 0.0)
|
|
{
|
|
#if _DEBUG_XXX
|
|
values.Dump(::afxDump);
|
|
#endif
|
|
SysId unitId = new SysId(StringUtil.ToInt(values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.BoxQuantity_UomId).DataName).ToString()));
|
|
SaUnitMeasure uom = FindUnitOfMeasureById(unitId);
|
|
valBox = StringUtil.FormatNumeric(box, (ushort)BoxQuantityDecimals, 0, ',');
|
|
if (uom != null)
|
|
valBox += " " + uom.Abbr;
|
|
}
|
|
value = new DataValue(valBox);
|
|
break;
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Commodity Codings Description.
|
|
case SbmCommodity.Column.RangeDesc:
|
|
{
|
|
String rangeCode = values.GetValue(column.DataName).ToString();
|
|
value = new DataValue(GetCodeTypeCodeDesc(Sbm.ApplCodeType.CommodityRange, rangeCode));
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.ColourDesc:
|
|
{
|
|
String colourCode = values.GetValue(column.DataName).ToString();
|
|
value = new DataValue(GetCodeTypeCodeDesc(Sbm.ApplCodeType.CommodityColour, colourCode));
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.SourceDesc:
|
|
{
|
|
String sourceCode = values.GetValue(column.DataName).ToString();
|
|
value = new DataValue(GetCodeTypeCodeDesc(Sbm.ApplCodeType.CommoditySource, sourceCode));
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.SupplyMethodDesc:
|
|
{
|
|
String supplyMethodCode = values.GetValue(column.DataName).ToString();
|
|
value = new DataValue(GetCodeTypeCodeDesc(Sbm.ApplCodeType.CommoditySupplyMethod, supplyMethodCode));
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.HandlingDesc:
|
|
{
|
|
String handlingCode = values.GetValue(column.DataName).ToString();
|
|
value = new DataValue(GetCodeTypeCodeDesc(Sbm.ApplCodeType.CommodityHandling, handlingCode));
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.DeliveryDesc:
|
|
{
|
|
String deliveryCode = values.GetValue(column.DataName).ToString();
|
|
value = new DataValue(GetCodeTypeCodeDesc(Sbm.ApplCodeType.CommodityDelivery, deliveryCode));
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.MaterialDesc:
|
|
{
|
|
String materialCode = values.GetValue(column.DataName).ToString();
|
|
value = new DataValue(GetCodeTypeCodeDesc(Sbm.ApplCodeType.CommodityMaterial, materialCode));
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.FinishDesc:
|
|
{
|
|
String finishCode = values.GetValue(column.DataName).ToString();
|
|
value = new DataValue(GetCodeTypeCodeDesc(Sbm.ApplCodeType.CommodityFinish, finishCode));
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.PromotionDesc:
|
|
{
|
|
String promotionCode = values.GetValue(column.DataName).ToString();
|
|
value = new DataValue(GetCodeTypeCodeDesc(Sbm.ApplCodeType.CommodityPromotion, promotionCode));
|
|
break;
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Commodity Formatted Currency Values.
|
|
case SbmCommodity.Column.CostPrice_Fmt:
|
|
{
|
|
String valFormat = "";
|
|
double amount = values.GetValue(column.DataName).ToNumeric();
|
|
if (Math.Abs(amount) > 0.001 || column.ShowZeroValues)
|
|
{
|
|
valFormat = StringUtil.FormatNumeric(amount, 2, 0, ',');
|
|
SaCurrency currency = GetDefaultCurrency();
|
|
if (currency != null) valFormat = currency.FormatAmount((decimal)amount);
|
|
}
|
|
value = new DataValue(valFormat);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.SalesPrice_Fmt:
|
|
{
|
|
String valFormat = "";
|
|
double amount = values.GetValue(column.DataName).ToNumeric();
|
|
if (Math.Abs(amount) > 0.001 || column.ShowZeroValues)
|
|
{
|
|
valFormat = StringUtil.FormatNumeric(amount, 2, 0, ',');
|
|
SaCurrency currency = GetDefaultCurrency();
|
|
if (currency != null) valFormat = currency.FormatAmount((decimal)amount);
|
|
}
|
|
value = new DataValue(valFormat);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.RetailPrice_Fmt:
|
|
{
|
|
String valFormat = "";
|
|
double amount = values.GetValue(column.DataName).ToNumeric();
|
|
if (Math.Abs(amount) > 0.001 || column.ShowZeroValues)
|
|
{
|
|
valFormat = StringUtil.FormatNumeric(amount, 2, 0, ',');
|
|
SaCurrency currency = GetDefaultCurrency();
|
|
if (currency != null) valFormat = currency.FormatAmount((decimal)amount);
|
|
}
|
|
value = new DataValue(valFormat);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.RetailPricePlanned_Fmt:
|
|
{
|
|
String valFormat = "";
|
|
double amount = values.GetValue(column.DataName).ToNumeric();
|
|
if (Math.Abs(amount) > 0.001 || column.ShowZeroValues)
|
|
{
|
|
valFormat = StringUtil.FormatNumeric(amount, 2, 0, ',');
|
|
SaCurrency currency = GetDefaultCurrency();
|
|
if (currency != null) valFormat = currency.FormatAmount((decimal)amount);
|
|
}
|
|
value = new DataValue(valFormat);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.CarriageCostIndicative_Fmt:
|
|
{
|
|
String valFormat = "";
|
|
double amount = values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.CarriageCostIndicative).DataName).ToNumeric();
|
|
if (Math.Abs(amount) > 0.001 || column.ShowZeroValues)
|
|
{
|
|
valFormat = StringUtil.FormatNumeric(amount, 2, 0, ',');
|
|
SaCurrency currency = GetDefaultCurrency();
|
|
if (currency != null) valFormat = currency.FormatAmount((decimal)amount);
|
|
}
|
|
value = new DataValue(valFormat);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.GrossPrice_Fmt:
|
|
{
|
|
String valFormat = "";
|
|
double amount = values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.GrossPrice).DataName).ToNumeric();
|
|
if (Math.Abs(amount) > 0.001 || column.ShowZeroValues)
|
|
{
|
|
valFormat = StringUtil.FormatNumeric(amount, 2, 0, ',');
|
|
SaCurrency currency = GetDefaultCurrency();
|
|
if (currency != null) valFormat = currency.FormatAmount((decimal)amount);
|
|
}
|
|
value = new DataValue(valFormat);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.MaterialCost_Fmt:
|
|
{
|
|
String valFormat = "";
|
|
double materialCost = values.GetValue(column.DataName).ToNumeric();
|
|
if (Math.Abs(materialCost) > 0.001 || column.ShowZeroValues)
|
|
{
|
|
valFormat = StringUtil.FormatNumeric(materialCost, 2, 0, ',');
|
|
SaCurrency currency = GetCurrency(new SysId(StringUtil.ToInt(values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.MaterialCurrencyId).DataName).ToString())));
|
|
currency = GetDefaultCurrency();
|
|
if (currency != null) valFormat = currency.FormatAmount((decimal)materialCost);
|
|
}
|
|
value = new DataValue(valFormat);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.ExWorksCost_Fmt:
|
|
{
|
|
String valFormat = "";
|
|
double exWorksCost = values.GetValue(column.DataName).ToNumeric();
|
|
if (Math.Abs(exWorksCost) > 0.001 || column.ShowZeroValues)
|
|
{
|
|
valFormat = StringUtil.FormatNumeric(exWorksCost, 2, 0, ',');
|
|
SaCurrency currency = GetCurrency(new SysId(StringUtil.ToInt(values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.ExWorksCurrencyId).DataName).ToString())));
|
|
currency = GetDefaultCurrency();
|
|
if (currency != null) valFormat = currency.FormatAmount((decimal)exWorksCost);
|
|
}
|
|
value = new DataValue(valFormat);
|
|
break;
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Customer Definition.
|
|
/*case SbmCommodity.Column.Cust_ProductCode:
|
|
case SbmCommodity.Column.Cust_AmountRetail:*/
|
|
case SbmCommodity.Column.Cust_AmountRetail_Fmt:
|
|
{
|
|
String valFormat = "";
|
|
double custAmountRetail = values.GetValue(column.DataName).ToNumeric();
|
|
if (Math.Abs(custAmountRetail) > 0.001 || column.ShowZeroValues)
|
|
{
|
|
valFormat = StringUtil.FormatNumeric(custAmountRetail, 2, 0, ',');
|
|
SaCurrency currency = GetCurrency(new SysId(StringUtil.ToInt(values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Cust_CurrencyIdRetail).DataName).ToString())));
|
|
if (currency == null) currency = GetDefaultCurrency();
|
|
if (currency != null) valFormat = currency.FormatAmount((decimal)custAmountRetail);
|
|
}
|
|
value = new DataValue(valFormat);
|
|
break;
|
|
}
|
|
//case SbmCommodity.Column.Cust_CurrencyIdRetail:
|
|
case SbmCommodity.Column.Cust_CurrencyIdRetail_Code:
|
|
case SbmCommodity.Column.Cust_CurrencyIdRetail_Symbol:
|
|
{
|
|
String valFormat = "";
|
|
SaCurrency currency = GetCurrency(new SysId(StringUtil.ToInt(values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Cust_CurrencyIdRetail).DataName).ToString())));
|
|
currency = GetDefaultCurrency();
|
|
if (currency != null)
|
|
{
|
|
if (column.Id == (int)SbmCommodity.Column.Cust_CurrencyIdRetail_Code) valFormat = currency.Code;
|
|
else if (column.Id == (int)SbmCommodity.Column.Cust_CurrencyIdRetail_Symbol) valFormat = currency.Symbol;
|
|
}
|
|
value = new DataValue(valFormat);
|
|
break;
|
|
}
|
|
/*case SbmCommodity.Column.Cust_PromotionCode:
|
|
case SbmCommodity.Column.Cust_PromotionDesc:
|
|
break;*/
|
|
|
|
//---------------------------------------------------------------
|
|
// Stock Bays.
|
|
case SbmCommodity.Column.Stock_Bays:
|
|
{
|
|
String stockBay = values.GetValue(column.DataName).ToString();
|
|
stockBay.Replace(",,", ",").Replace(",,", ",").Trim(',').Replace(",", ", ");
|
|
value = new DataValue(stockBay);
|
|
break;
|
|
}
|
|
// Stock NextDue.
|
|
case SbmCommodity.Column.Stock_NextDue_Date:
|
|
case SbmCommodity.Column.Stock_NextDue_Quantity:
|
|
{
|
|
// Next stock movement arrival expected and quantity.
|
|
DateTime stockCommodity = values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Stock_NextDue_Commodity_Date).DataName).AsDate();
|
|
DateTime stockContainer = values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Stock_NextDue_Container_Date).DataName).AsDate();
|
|
double stockCmd = values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Stock_NextDue_Commodity_Quantity).DataName).ToNumeric();
|
|
double stockContain = values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Stock_NextDue_Container_Quantity).DataName).ToNumeric();
|
|
|
|
// Only need the earliest date and corresponding quantity.
|
|
DateTime dtStock = DateTime.MinValue;
|
|
double fStock = 0;
|
|
if (DateUtil.IsValid(stockCommodity))
|
|
{
|
|
dtStock = stockCommodity;
|
|
fStock = stockCmd;
|
|
}
|
|
if (DateUtil.IsValid(stockContainer))
|
|
{
|
|
if (!DateUtil.IsValid(dtStock) || stockContainer < dtStock)
|
|
{
|
|
// Container movement earlier than commodity movement (or no commodity movement).
|
|
dtStock = stockContainer;
|
|
fStock = stockContain;
|
|
}
|
|
else if (stockContainer == dtStock)
|
|
{
|
|
// Container movement on same date as commodity movement - combine quantities.
|
|
fStock += stockContain;
|
|
}
|
|
}
|
|
if (column.Id == (int)SbmCommodity.Column.Stock_NextDue_Date)
|
|
value = new DataValue(dtStock);
|
|
else if (column.Id == (int)SbmCommodity.Column.Stock_NextDue_Quantity)
|
|
value = new DataValue(fStock);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.Stock_Available:
|
|
case SbmCommodity.Column.Stock_Available_MinZero:
|
|
{
|
|
// Database query doesn't do the calculation.
|
|
double stockLevel = values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Stock_CurrentLevel).DataName).ToNumeric();
|
|
double allocated = values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Stock_Allocated).DataName).ToNumeric();
|
|
double available = stockLevel - allocated;
|
|
if (column.Id == (int)SbmCommodity.Column.Stock_Available_MinZero)
|
|
value = new DataValue(Math.Max(0.0, available));
|
|
else value = new DataValue(available);
|
|
break;
|
|
}
|
|
case SbmCommodity.Column.Stock_Available_Sales:
|
|
case SbmCommodity.Column.Stock_Available_Sales_MinZero:
|
|
{
|
|
// Database query doesn't do the calculation.
|
|
double stockLevel = values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Stock_CurrentLevel_Sales).DataName).ToNumeric();
|
|
double allocated = values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Stock_Allocated_Sales).DataName).ToNumeric();
|
|
double available = stockLevel - allocated;
|
|
if (column.Id == (int)SbmCommodity.Column.Stock_Available_Sales_MinZero)
|
|
value = new DataValue(Math.Max(0.0, available));
|
|
else value = new DataValue(available);
|
|
break;
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Commodity Notes.
|
|
case SbmCommodity.Column.Notes:
|
|
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
|
|
break;
|
|
|
|
// Commodity Status.
|
|
case SbmCommodity.Column.Status_Current_Y:
|
|
case SbmCommodity.Column.Status_Current_X:
|
|
case SbmCommodity.Column.Status_Current_Tick:
|
|
{
|
|
SaStatus status = SacsSystem.GetStatusForCode(values.GetValue(column.DataName).ToString());
|
|
bool currentStatus = status == SaStatus.Current;
|
|
if (column.Id == (int)SbmCommodity.Column.Status_Current_Y)
|
|
value = new DataValue(currentStatus ? "Y" : "");
|
|
else if (column.Id == (int)SbmCommodity.Column.Status_Current_X)
|
|
value = new DataValue(currentStatus ? "" : "X");
|
|
else value = new DataValue(currentStatus);
|
|
}
|
|
break;
|
|
case SbmCommodity.Column.Status_Desc:
|
|
case SbmCommodity.Column.Status_Ind:
|
|
{
|
|
SaStatus status = SacsSystem.GetStatusForCode(values.GetValue(column.DataName).ToString());
|
|
if (column.Id == (int)SbmCommodity.Column.Status_Desc)
|
|
value = new DataValue(SacsSystem.GetStatusDesc(status));
|
|
else if (column.Id == (int)SbmCommodity.Column.Status_Ind)
|
|
value = new DataValue(SbmCommodity.GetStatusTriState(status));
|
|
}
|
|
break;
|
|
|
|
// Barcode Images.
|
|
case SbmCommodity.Column.BarcodeImagePath:
|
|
{
|
|
String commodityCode = values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Code).DataName).ToString();
|
|
value = new DataValue(GetBarcodeImagePath(commodityCode));
|
|
break;
|
|
}
|
|
//---------------------------------------------------------------
|
|
}
|
|
return value;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|