Files
BusinessMgr-2019/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_Commodity.cs
T
2024-11-19 09:47:00 +00:00

797 lines
34 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
{
//=======================================================================
// Commodity Manager - Commodity.
//=======================================================================
partial class SbmCommodityMgr
{
//-------------------------------------------------------------------
// Utilities.
public bool IsValidCode(String code)
{
if (StringUtil.IsBlank(code)) return false;
if (code != code.Trim(' ')) return false;
return true;
}
//-------------------------------------------------------------------
// Retrieve individual commodities.
//-------------------------------------------------------------------
// Commodity exists.
public bool CommodityExistsById(SysId commodityId)
{
ClearErrorState();
if (!SysId.IsValid(commodityId)) return false;
SbmCommodity.Params prmCommodity = new SbmCommodity.Params();
prmCommodity.IdsIncluded.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.IdsIncluded.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(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;
}
//-----------------------------------------------------------
// Barcode Images.
case SbmCommodity.Column.BarcodeImagePath:
{
String commodityCode = values.GetValue(GetCommodityColumnDfn(SbmCommodity.Column.Code).DataName).ToString();
value = new DataValue(GetBarcodeImagePath(commodityCode));
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;
//-----------------------------------------------------------
default:
value = values.GetValue(column.DataName);
break;
}
return value;
}
//-------------------------------------------------------------------
}
//=======================================================================
}