using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Mgr; using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.CodeTypes; using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Dbas; using Sarand.Net.Standard.Base.Interfaces; using Sarand.Net.Standard.Base.ItemDocs; using Sarand.Net.Standard.Base.ItemOptions; using Sarand.Net.Standard.Base.ReferenceData; using Sarand.Net.Standard.Base.Security; using Sarand.Net.Standard.Base.UpdateLog; using Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; namespace Sarand.BusinessMgr.Net.Standard.Base.App { //======================================================================= public class SbmInternals : SacsDisposable { //------------------------------------------------------------------- // Data members. private readonly SbmSystem system = SbmGlobals.System; private SbmAccountsDfn accountsDfn; // Managers. private SbmAccountMgr accountMgr; private SbmAssetMgr assetMgr; private SbmCommodityMgr commodityMgr; private SbmPriceMgr priceMgr; private SbmTransactionMgr transactionMgr; private SbmStockMgr stockMgr; private SbmProcessMgr processMgr; private SbmDataItemMgr dataItemMgr; // Consoles. private SbmConfigConsole configConsole; private SaSecurityConsole securityConsole; private SaCodeTypeConsole codeTypeConsole; private SaReferenceDataConsole referenceDataConsole; private SaUpdateLogConsole updateLogConsole; private SaInterfaceConsole interfaceConsole; private SaItemDocConsole itemDocConsole; private SaItemOptionConsole itemOptionConsole; // Configurations. private SbmStockControlConfig stockControlConfig; private SbmRequirementCostingConfig requirementCostingConfig; // Currency. private List currencies = null; private List taxCodes = null; private List unitsOfMeasure = null; //------------------------------------------------------------------- // Construction. public SbmInternals(SbmUserContext userContext) { UserContext = userContext; } protected override void Dispose(bool disposing) { if (disposing) { if (accountMgr != null) accountMgr.Dispose(); if (assetMgr != null) assetMgr.Dispose(); if (commodityMgr != null) commodityMgr.Dispose(); if (priceMgr != null) priceMgr.Dispose(); if (transactionMgr != null) transactionMgr.Dispose(); if (stockMgr != null) stockMgr.Dispose(); if (processMgr != null) processMgr.Dispose(); if (dataItemMgr != null) dataItemMgr.Dispose(); if (currencies != null) currencies.ClearAndDispose(); if (taxCodes != null) taxCodes.ClearAndDispose(); if (unitsOfMeasure != null) unitsOfMeasure.ClearAndDispose(); } } //------------------------------------------------------------------- // Session properties. public SbmUserContext UserContext { get; } public SbmSessionContext SessionContext { get { return UserContext.SessionContext; } } public SbmSecurityProfile SecurityProfile { get { return UserContext.SecurityProfile; } } public SbmAccountsDfn AccountsDfn { get { if (accountsDfn == null) accountsDfn = new SbmAccountsDfn(UserContext); { return accountsDfn; } } } public DbUpdateInfo DbUpdateInfo { get { return UserContext.DbUpdateInfo; } } //------------------------------------------------------------------- // Managers. public SbmAccountMgr AccountMgr { get { if (accountMgr == null) accountMgr = system.CreateAccountMgr(UserContext); return accountMgr; } } public SbmAssetMgr AssetMgr { get { if (assetMgr == null) assetMgr = system.CreateAssetMgr(UserContext); return assetMgr; } } public SbmCommodityMgr CommodityMgr { get { if (commodityMgr == null) commodityMgr = system.CreateCommodityMgr(UserContext); return commodityMgr; } } public SbmPriceMgr PriceMgr { get { if (priceMgr == null) priceMgr = system.CreatePriceMgr(UserContext); return priceMgr; } } public SbmTransactionMgr TransactionMgr { get { if (transactionMgr == null) transactionMgr = system.CreateTransactionMgr(UserContext); return transactionMgr; } } public SbmStockMgr StockMgr { get { if (stockMgr == null) stockMgr = system.CreateStockMgr(UserContext); return stockMgr; } } public SbmProcessMgr ProcessMgr { get { if (processMgr == null) processMgr = system.CreateProcessMgr(UserContext); return processMgr; } } public SbmDataItemMgr DataItemMgr { get { if (dataItemMgr == null) dataItemMgr = SbmGlobals.System.CreateDataItemMgr(UserContext); return dataItemMgr; } } //------------------------------------------------------------------- // Consoles. public SbmConfigConsole ConfigConsole { get { if (configConsole == null) configConsole = SbmGlobals.GetConfigConsole(SessionContext); return configConsole; } } public SaSecurityConsole SecurityConsole { get { if (securityConsole == null) securityConsole = SbmGlobals.GetSecurityConsole(UserContext); return securityConsole; } } public SaCodeTypeConsole CodeTypeConsole { get { if (codeTypeConsole == null) codeTypeConsole = SbmGlobals.GetCodeTypeConsole(UserContext); return codeTypeConsole; } } public SaReferenceDataConsole ReferenceDataConsole { get { if (referenceDataConsole == null) referenceDataConsole = SbmGlobals.GetReferenceDataConsole(UserContext); return referenceDataConsole; } } public SaUpdateLogConsole UpdateLogConsole { get { if (updateLogConsole == null) updateLogConsole = SbmGlobals.GetUpdateLogConsole(UserContext); return updateLogConsole; } } public SaInterfaceConsole InterfaceConsole { get { if (interfaceConsole == null) interfaceConsole = SbmGlobals.GetInterfaceConsole(UserContext); return interfaceConsole; } } public SaItemDocConsole ItemDocConsole { get { if (itemDocConsole == null) itemDocConsole = SbmGlobals.GetItemDocConsole(UserContext); return itemDocConsole; } } public SaItemOptionConsole ItemOptionConsole { get { if (itemOptionConsole == null) itemOptionConsole = SbmGlobals.GetItemOptionConsole(UserContext); return itemOptionConsole; } } //------------------------------------------------------------------- // Configurations. public SbmStockControlConfig StockControlConfig { get { if (stockControlConfig == null) stockControlConfig = ConfigConsole.GetStockControlConfig(UserContext); return stockControlConfig; } } public SbmRequirementCostingConfig RequirementCostingConfig { get { if (requirementCostingConfig == null) requirementCostingConfig = ConfigConsole.GetRequirementCostingConfig(UserContext); return requirementCostingConfig; } } //------------------------------------------------------------------- // C u r r e n c i e s //------------------------------------------------------------------- private void populateCurrencies() { if (currencies != null) return; SaCurrency.Params prmCurrency = new SaCurrency.Params(); prmCurrency.StatusCat = SaCurrency.StatusCat.Any; currencies = ReferenceDataConsole.GetCurrencyList(prmCurrency); } public List GetCurrencies() { populateCurrencies(); return currencies; } public SaCurrency GetCurrencyById(SysId currencyId) { if (!SysId.IsValid(currencyId)) return null; populateCurrencies(); return currencies.Find(item => item.Id.Equals(currencyId)); } public SaCurrency GetCurrencyByCode(String currencyCode) { if (StringUtil.IsEmpty(currencyCode)) { return null; } populateCurrencies(); return currencies.Find(item => item.Code.EqualsCI(currencyCode)); } // Currency Decimals. public static byte CurrencyDecimalsDefault { get; } = 2; public byte GetCurrencyDecimalsForCurrencyById(SysId currencyId) { byte currencyDecimals = CurrencyDecimalsDefault; SaCurrency currency = GetCurrencyById(currencyId); if (currency != null) currencyDecimals = (byte)Math.Min(4, Math.Max(0, (int)currency.Decimals)); return currencyDecimals; } //------------------------------------------------------------------- // T a x C o d e s //------------------------------------------------------------------- private void populateTaxCodes() { if (taxCodes != null) return; SaTaxCode.Params prmTaxCode = new SaTaxCode.Params(); prmTaxCode.StatusCat = SaTaxCode.StatusCat.Any; taxCodes = ReferenceDataConsole.GetTaxCodeList(prmTaxCode); } public List GetTaxCodes() { populateTaxCodes(); return taxCodes; } public SaTaxCode GetTaxCodeById(SysId currencyId) { if (!SysId.IsValid(currencyId)) return null; populateTaxCodes(); return taxCodes.Find(item => item.Id.Equals(currencyId)); } //------------------------------------------------------------------- // U n i t s O f M e a s u r e //------------------------------------------------------------------- private void populateUnitsOfMeasure() { if (unitsOfMeasure != null) return; SaUnitMeasure.Params prmUnitMeasure = new SaUnitMeasure.Params(); prmUnitMeasure.StatusCat = SaUnitMeasure.StatusCat.Any; unitsOfMeasure = ReferenceDataConsole.GetUnitMeasureList(prmUnitMeasure); } public List GetUnitsOfMeasure() { populateUnitsOfMeasure(); return unitsOfMeasure; } public SaUnitMeasure GetUnitOfMeasureById(SysId currencyId) { if (!SysId.IsValid(currencyId)) return null; populateUnitsOfMeasure(); return unitsOfMeasure.Find(item => item.Id.Equals(currencyId)); } public SaUnitMeasure GetUnitOfMeasureByType(SaUomCategory uomCategory, SaUomType uomType) { if (uomCategory == 0 || uomType == 0) return null; populateUnitsOfMeasure(); return unitsOfMeasure.Find(item => item.Category == uomCategory && item.UnitType == uomType); } //------------------------------------------------------------------- } //======================================================================= }