Files
BusinessMgr-2019/SaBusMgrStandardBase/Base/Consoles/SbmSessionConsole.cs
T
2025-03-02 19:08:41 +00:00

640 lines
26 KiB
C#

using Org.BouncyCastle.Asn1.X509;
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.Procs;
using Sarand.Net.Standard.Accounts.QuickBooks.App;
using Sarand.Net.Standard.Accounts.Sage.App;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Interfaces;
using Sarand.Net.Standard.Base.ItemOptions;
using Sarand.Net.Standard.Base.Utils;
using System;
using System.Collections.Generic;
namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles
{
//=======================================================================
/// <summary>
/// Application configuration associated with a specific session.
/// </summary>
public partial class SbmSessionConsole : SacsDisposable, ISbmOrganisationConfig
{
//-------------------------------------------------------------------
// Interface definition.
public class InterfaceDfn
{
public InterfaceDfn()
{
}
public SysId InterfaceId { get; } = new SysId();
public string Context { get; } = "";
public SaInterfaceCategory InterfaceCategory { get; } = SaInterfaceCategory.Unknown;
public short InterfaceType { get; }
public string Code { get; } = "";
public string Caption { get; } = "";
public bool Active { get; }
}
// Sage/Quickbooks interface definition.
public class AccountsInterfaceDfn
{
public SysId AffiliateId_Owner { get; set; } = new SysId(); // Owner for Sage Interface definition.
public SysId InterfaceId { get; set; } = new SysId();
public bool importPurchaseOrder, importSalesOrder, importProductInvoice, importServiceInvoice, importSalesOrderInvoice;
public bool exportPurchaseOrder, exportSalesOrder, exportProductInvoice, exportServiceInvoice, bexport_SalesOrderInvoice;
public AccountsInterfaceDfn()
{
Reset();
}
public void Reset()
{
AffiliateId_Owner = new SysId();
InterfaceId = new SysId();
ClearConfig();
}
public void ClearConfig()
{
importPurchaseOrder = false;
importSalesOrder = false;
importProductInvoice = false;
importServiceInvoice = false;
importSalesOrderInvoice = false;
exportPurchaseOrder = false;
exportSalesOrder = false;
exportProductInvoice = false;
exportServiceInvoice = false;
bexport_SalesOrderInvoice = false;
}
};
//-------------------------------------------------------------------
// Data members.
private class DataMembers
{
public DataMembers(SbmInternals internalsSupplied)
{
this.InternalsSupplied = internalsSupplied;
}
public SbmInternals InternalsSupplied { get; }
public SbmInstanceConfig InstanceConfig { get; set; }
public SbmOrganisationConfig OrganisationConfig { get; set; }
public List<TypeCodeDesc> TransactionTypes_Full { get;set; }
public bool CreateTransaction_PurchaseOrder, CreateTransaction_SalesQuote, CreateTransaction_SalesOrder, CreateTransaction_SalesInvoice;
}
private DataMembers mbr { get; }
private AccountsInterfaceDfn dfnSageInt = new AccountsInterfaceDfn();
private AccountsInterfaceDfn dfnQBooksInt = new AccountsInterfaceDfn();
//-------------------------------------------------------------------
// Construction.
protected SbmSessionConsole(Sbm.SessionConfig sessionConfig, SbmVersion consoleVersion, SbmInternals internals)
{
mbr = new DataMembers(internals);
this.SessionConfig = sessionConfig;
this.AppVersion = new SbmVersion("BusinessMgr", Sbm.Version.GetFullVersion(), SacsSystem.AssemblyBuildAt);
this.ConsoleVersion = consoleVersion;
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
}
}
//-------------------------------------------------------------------
// Properties.
public Sbm.SessionConfig SessionConfig { get; }
public SbmVersion AppVersion { get; }
public SbmVersion ConsoleVersion { get; }
private SbmInternals Internals { get { return mbr.InternalsSupplied; } }
public ISbmUserOrganisationContext UserContext { get { return Internals.UserContext; } }
public SbmSessionContext SessionContext { get { return Internals.SessionContext; } }
public SbmInstanceConfig InstanceConfig { get { if (mbr.InstanceConfig == null) { mbr.InstanceConfig = SbmGlobals.Application.GetInstanceConfig(SessionContext); } return mbr.InstanceConfig; } }
public SbmOrganisationConfig OrganisationConfig { get { if (mbr.OrganisationConfig == null) { mbr.OrganisationConfig = SbmGlobals.Application.GetOrganisationConfig(UserContext); } return mbr.OrganisationConfig; } }
//-------------------------------------------------------------------
// C r e a t e C o n s o l e
//-------------------------------------------------------------------
public static SbmSessionConsole CreateConsole(SbmInternals internals)
{
// Initialise console.
SbmVersion consoleVersion = new SbmVersion("Standard", Sbm.Version.GetFullVersion(), SacsSystem.AssemblyBuildAt);
return new SbmSessionConsole(Sbm.SessionConfig.Generic, consoleVersion, internals);
}
//-------------------------------------------------------------------
// Utilities.
//-------------------------------------------------------------------
// Organisation configuration.
//-------------------------------------------------------------------
public String GetOrganisationOption(Sbm.OrganisationOption option, String context)
{
return OrganisationConfig.GetOrganisationOption(option, context);
}
public String GetOrganisationOption(String optionName, String context)
{
return OrganisationConfig.GetOrganisationOption(optionName, context);
}
public String GetOwnerOption_Value(Sbm.OrgOption_Value value)
{
return OrganisationConfig.GetOwnerOption_Value(value);
}
public String GetOwnerOption_Folder(Sbm.OrgOption_Folder folder)
{
return OrganisationConfig.GetOwnerOption_Folder(folder);
}
public bool GetOwnerOption_AllowOption(Sbm.OrgOption_AllowOption option)
{
return OrganisationConfig.GetOwnerOption_AllowOption(option);
}
public String GetOwnerOption_Caption(Sbm.OrgOption_Caption caption, String defaultValue)
{
return OrganisationConfig.GetOwnerOption_Caption(caption, defaultValue);
}
public bool GetOwnerOption_ShowField(SbmDbDfn.ColumnIdx column)
{
return OrganisationConfig.GetOwnerOption_ShowField(column);
}
public bool GetOwnerOption_ShowColumn(Sbm.OrgOption_ShowColumn column)
{
return OrganisationConfig.GetOwnerOption_ShowColumn(column);
}
public String GetOwnerOption_FieldLabel(SbmDbDfn.ColumnIdx column, String defautValue)
{
return OrganisationConfig.GetOwnerOption_FieldLabel(column, defautValue);
}
public int GetOwnerOption_Minutes(Sbm.OrgOption_Minutes limit, int defautValue)
{
return OrganisationConfig.GetOwnerOption_Minutes(limit, defautValue);
}
public int GetOwnerOption_UpdateLimit(Sbm.OrgOption_PeriodDays limit, int defautValue)
{
return OrganisationConfig.GetOwnerOption_UpdateLimit(limit, defautValue);
}
public int GetOwnerOption_UpdateLimit(Sbm.OrgOption_PeriodWeeks limit, int defautValue)
{
return OrganisationConfig.GetOwnerOption_UpdateLimit(limit, defautValue);
}
public int GetOwnerOption_NumericDecimals(Sbm.OrgOption_NumericDecimals decimals, int defautValue = 2)
{
return OrganisationConfig.GetOwnerOption_NumericDecimals(decimals, defautValue);
}
public Sbm.CommodityType GetOwnerOption_CommodityType(Sbm.OrgOption_CommodityType commodityType)
{
return OrganisationConfig.GetOwnerOption_CommodityType(commodityType);
}
public SysId GetOwnerOption_StockLocation(Sbm.OrgOption_StockLocation stockLocation)
{
return OrganisationConfig.GetOwnerOption_StockLocation(stockLocation);
}
//-------------------------------------------------------------------
// Application.
//-------------------------------------------------------------------
// Application Customisation.
public virtual string GetApplicationCaption(Sbm.CaptionType captionType)
{
return "BusinessMgr";
}
//-------------------------------------------------------------------
// Additional menu options.
public virtual List<CodeDesc> GetAdditionalMenuOptions(Sbm.MenuSection menuSection)
{
return new List<CodeDesc>();
}
public virtual bool DoAdditionalMenuOption(Sbm.MenuSection menuSection, string str)
{
return false;
}
//-------------------------------------------------------------------
// Console view.
public virtual SbmConsoleViewDfn GetConsoleViewDfn()
{
return new SbmConsoleViewDfn();
}
public virtual bool InitialiseConsoleView()
{
return false;
}
//-------------------------------------------------------------------
// Demo Repository restrictions.
/// <summary>
/// Demo application should not display Individual Contacts for User Accounts other than that logged in.
/// </summary>
public bool HideOtherUserContacts()
{
return SessionContext.IsDemoRepository();
}
//-------------------------------------------------------------------
// Application Configuration. - AllowOption.
public virtual bool AllowOption(Sbm.ConfigOption option)
{
switch (option)
{
// Application.
case Sbm.ConfigOption.SystemMenu:
return InstanceConfig.AllowApplicationOption(option, SacsSystem.DebugMode);
// Options allowed by default.
case Sbm.ConfigOption.ConsoleView:
case Sbm.ConfigOption.OrganisationUpdate:
case Sbm.ConfigOption.Contacts:
case Sbm.ConfigOption.Processes:
case Sbm.ConfigOption.Commodities:
case Sbm.ConfigOption.Transactions:
case Sbm.ConfigOption.DiaryView:
case Sbm.ConfigOption.RequirementUpdateInline:
return InstanceConfig.AllowApplicationOption(option, true);
// Commodities.
case Sbm.ConfigOption.CommodityPartialCodeFilter:
if (InstanceConfig.AllowApplicationOption(option, false))
return true;
return OrganisationConfig.GetOwnerOption_AllowOption(Sbm.OrgOption_AllowOption.Commodity_PartialCodeFilter);
// Order Pricing.
case Sbm.ConfigOption.CustomerPriceSet:
case Sbm.ConfigOption.CustomerDiscount:
{
if (InstanceConfig.AllowApplicationOption(option, false))
return true;
return Internals.AccountsConsole.IsUsingSageInterface() && Internals.AccountsConsole.IsAssociationTypeManagedByAccounts(Sbm.AssociationType.Customer) && !Internals.AccountsConsole.UseLocalCustomerPricing();
}
case Sbm.ConfigOption.SupplierPriceSet:
case Sbm.ConfigOption.SupplierDiscount:
{
if (InstanceConfig.AllowApplicationOption(option, false))
return true;
return Internals.AccountsConsole.IsUsingSageInterface() && Internals.AccountsConsole.IsAssociationTypeManagedByAccounts(Sbm.AssociationType.Supplier) && !Internals.AccountsConsole.UseLocalSupplierPricing();
}
default:
// Other options are not allowed by default.
return InstanceConfig.AllowApplicationOption(option, false);
}
}
//-------------------------------------------------------------------
// Application events.
public virtual void OnOpenDatabase()
{
SaLogger.Trace($"{SysUtil.Fn}");
}
//-------------------------------------------------------------------
// O r g a n i s a t i o n
//-------------------------------------------------------------------
// Allows validation of organisation name if required. Default: true.
public virtual bool OwnerIsValid()
{
return true;
}
//-------------------------------------------------------------------
// Organisation Options.
public virtual List<SaItemOptionDfn> GetAdditionalOrganisationOptions()
{
return new List<SaItemOptionDfn>();
}
//-------------------------------------------------------------------
// I t e m s
//-------------------------------------------------------------------
// Item Data Interface.
public virtual bool CanUpdateItemData(ISbmUserOrganisationContext userContext, Sbm.ItemDataType itemDataType)
{
return false;
}
public virtual bool DoUpdateItemData(ISbmUserOrganisationContext userContext, Sbm.ItemDataType itemDataType)
{
return false;
}
public virtual bool CanRemoveItemData(ISbmUserOrganisationContext userContext, Sbm.ItemDataType itemDataType)
{
return false;
}
//-------------------------------------------------------------------
// Update Log.
public virtual bool IsColumnChangeLogged(SbmDbDfn.ColumnIdx column)
{
return InstanceConfig.IsColumnChangeLogged(column, false);
}
//-------------------------------------------------------------------
// Item Events.
public virtual bool OnItemEvent(Sbm.ItemEvent itemEvent, Sbm.ItemType itemType, SysId id)
{
return false;
}
//-------------------------------------------------------------------
// Allowed data component types.
//-------------------------------------------------------------------
// Supported Data Item Types.
// Supported affiliate types (all allowed by default).
public virtual bool AllowAffiliateType(Sbm.AffiliateType type)
{
return InstanceConfig.AllowAffiliateType(type, true);
}
// Supported Association types (all allowed by default).
public virtual bool AllowAssociationType(Sbm.AssociationType type)
{
return InstanceConfig.AllowAssociationType(type, true);
}
//-------------------------------------------------------------------
// D a t a O p t i o n s
//-------------------------------------------------------------------
// Application Configuration. - Display and caption for data attributes.
public virtual bool DisplayAttribute(SbmDbDfn.ColumnIdx column)
{
// Only need to intercept fields that are partnered with other fields to determine display.
switch (column)
{
// Commodity - specification.
case SbmDbDfn.ColumnIdx.Commodity_Weight:
case SbmDbDfn.ColumnIdx.Commodity_UomIdWeight:
return OrganisationConfig.GetOwnerOption_ShowField(SbmDbDfn.ColumnIdx.Commodity_Weight);
case SbmDbDfn.ColumnIdx.Commodity_Length:
case SbmDbDfn.ColumnIdx.Commodity_UomIdLength:
return OrganisationConfig.GetOwnerOption_ShowField(SbmDbDfn.ColumnIdx.Commodity_Length);
case SbmDbDfn.ColumnIdx.Commodity_Volume:
case SbmDbDfn.ColumnIdx.Commodity_UomIdVolume:
return OrganisationConfig.GetOwnerOption_ShowField(SbmDbDfn.ColumnIdx.Commodity_Volume);
case SbmDbDfn.ColumnIdx.Commodity_Density:
case SbmDbDfn.ColumnIdx.Commodity_UomIdDensity:
return OrganisationConfig.GetOwnerOption_ShowField(SbmDbDfn.ColumnIdx.Commodity_Density);
case SbmDbDfn.ColumnIdx.Commodity_BoxQuantity:
case SbmDbDfn.ColumnIdx.Commodity_UomIdBox:
return OrganisationConfig.GetOwnerOption_ShowField(SbmDbDfn.ColumnIdx.Commodity_BoxQuantity);
case SbmDbDfn.ColumnIdx.Commodity_TimeProd:
case SbmDbDfn.ColumnIdx.Commodity_UomIdTimeProd:
return OrganisationConfig.GetOwnerOption_ShowField(SbmDbDfn.ColumnIdx.Commodity_TimeProd);
case SbmDbDfn.ColumnIdx.Commodity_MaterialCost:
case SbmDbDfn.ColumnIdx.Commodity_CurrencyIdMaterial:
return OrganisationConfig.GetOwnerOption_ShowField(SbmDbDfn.ColumnIdx.Commodity_MaterialCost);
case SbmDbDfn.ColumnIdx.Commodity_ExWorksCost:
case SbmDbDfn.ColumnIdx.Commodity_CurrencyIdExWorks:
return OrganisationConfig.GetOwnerOption_ShowField(SbmDbDfn.ColumnIdx.Commodity_ExWorksCost);
case SbmDbDfn.ColumnIdx.Commodity_CommodityIdSalesProj:
case SbmDbDfn.ColumnIdx.Commodity_SalesProjMonthlyProp:
case SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth01:
case SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth02:
case SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth03:
case SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth04:
case SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth05:
case SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth06:
case SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth07:
case SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth08:
case SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth09:
case SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth10:
case SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth11:
case SbmDbDfn.ColumnIdx.Commodity_SalesProjMonth12:
return OrganisationConfig.GetOwnerOption_ShowField(SbmDbDfn.ColumnIdx.Commodity_SalesProjAnnual);
default:
return OrganisationConfig.GetOwnerOption_ShowField(column);
}
}
//-------------------------------------------------------------------
// Alternative data value captions.
public virtual string GetAttributeCaption(SbmDbDfn.ColumnIdx column, string Default)
{
string Caption = "";
if (column != SbmDbDfn.ColumnIdx.Unknown)
{
Caption = OrganisationConfig.GetOwnerOption_FieldLabel(column, Default);
}
if (Caption.IsEmpty()) Caption = Default;
return Caption;
}
// To do - move to InstanceConfig.
// Job Tracking Options.
public virtual string GetDefaultQuoteDescIntro()
{
return "";
}
//-------------------------------------------------------------------
// C o m m o d i t y O p t i o n s
//-------------------------------------------------------------------
// Commodity Management.
public virtual Sbm.CommodityType GetCommodityTypeDefault(Sbm.OrgOption_CommodityType commodityType)
{
// Default = 'Stock'.
return Sbm.CommodityType.Stock;
}
// Clean-up imported data (default no action).
public virtual bool CleanupImportedCommodity(SbmCommodity commodity)
{
return true;
}
//-------------------------------------------------------------------
// Stock Control
public virtual SbmStockControlConfig GetStockControlConfig()
{
SbmStockControlConfig cfgStockControl = new SbmStockControlConfig();
return cfgStockControl;
}
//-------------------------------------------------------------------
// R e p o r t i n g
//-------------------------------------------------------------------
// Available reports (over and above standard).
public virtual List<SbmReport_Base> GetReports(Sbm.View view)
{
return new List<SbmReport_Base>();
}
public virtual bool ItemHasDiaryReports(ItemId itemId)
{
return false;
}
/*
public virtual List<SbmReport_Base> GetDiaryReports(ISbmUserContext userContext, SaDiaryReport.Params &)
{
return null;
}
public virtual List<SbmReport_Base> GetDiaryReportsForItem(ISbmUserContext userContext, ItemId itemId)
{
return null;
}
*/
//-------------------------------------------------------------------
// P r o c e s s e s
//-------------------------------------------------------------------
/// <summary>Processing parameters.</summary>
public enum ProcessParam
{
/// <summary>Dispatch Note report horizontal lines [Bool]</summary>
RptDispatchNoteHorizontalLines = 110,
/// <summary>Sales Invoice report horizontal lines [Bool]</summary>
RptSalesInvoiceHorizontalLines = 111,
}
public virtual DataValue GetDefaultProcessParam(ProcessParam prm)
{
switch (prm)
{
case ProcessParam.RptDispatchNoteHorizontalLines:
case ProcessParam.RptSalesInvoiceHorizontalLines:
return new DataValue(false);
}
return new DataValue();
}
//-------------------------------------------------------------------
// Automated processes.
public virtual bool PerformProcess(Sbm.ProcessType type)
{
return false;
}
// Available data import/export processes (over and above standard).
public virtual List<ISbmProcess_DataImport> GetImportProcesses(Sbm.InterfaceDataType dataType, List<SysId> itemIds)
{
return new List<ISbmProcess_DataImport>();
}
public virtual List<ISbmProcess_DataExport> GetExportProcesses(Sbm.InterfaceDataType dataType, List<SysId> itemIds)
{
return new List<ISbmProcess_DataExport>();
}
//-------------------------------------------------------------------
// Data export Enhancements. eg. for export to accounts.
public class DataExportItemDetails
{
internal DataExportItemDetails(string itemCode, string itemDesc, string itemText)
{
ItemCode = itemCode;
ItemDesc = itemDesc;
ItemText = itemText;
}
public string ItemCode { get; }
public string ItemDesc { get; }
public string ItemText { get; }
};
public virtual DataExportItemDetails GetDataExportInvoiceItemDetails(SbmRequirement requirement)
{
return null;
}
//-------------------------------------------------------------------
// I n t e r f a c e O p t i o n s
//-------------------------------------------------------------------
public virtual bool AllowInterfaces()
{
if (AllowInterfaceCategory(SaInterfaceCategory.Website)) return true;
if (AllowInterfaceCategory(SaInterfaceCategory.Accounts)) return true;
if (AllowInterfaceCategory(SaInterfaceCategory.System)) return true;
if (AllowInterfaceCategory(SaInterfaceCategory.File)) return true;
return false;
}
public virtual bool AllowInterfaceCategory(SaInterfaceCategory interfaceCategory)
{
// By default, only website and file interfaces are allowed.
switch (interfaceCategory)
{
case SaInterfaceCategory.Website:
case SaInterfaceCategory.File:
return InstanceConfig.AllowInterfaceCategory(interfaceCategory, true);
}
return InstanceConfig.AllowInterfaceCategory(interfaceCategory, false);
}
public virtual bool AllowInterface(SaInterfaceCategory interfaceCategory, short interfaceType)
{
if (!AllowInterfaceCategory(interfaceCategory)) return false;
switch (interfaceCategory)
{
case SaInterfaceCategory.Website:
if (interfaceType == (short)Sbm.InterfaceType_Website.WebStore) return true;
if (interfaceType == (short)Sbm.InterfaceType_Website.JoomlaVirtueMart)
//return (SbmGlobals.Application.GetPropertyValue("Interface", "JoomlaVirtueMart").EqualsCI("Allow"));
return false;
break;
// Sbm.InterfaceType_Website.MiMoWeb - Only allowed by derived console.
case SaInterfaceCategory.Accounts:
if (interfaceType == (short)Sbm.InterfaceType_Accounts.SageLine50) return true;
// eSapInterfaceType_Accounts_QuickBooks - Only allowed by derived console.
break;
case SaInterfaceCategory.System:
if (interfaceType == (short)Sbm.InterfaceType_System.MSOutlook)
//return SbmGlobals.Application.GetPropertyValue("Interface", "MSOutlook").EqualsCI("Allow");
return false;
if (interfaceType == (short)Sbm.InterfaceType_System.PostcodeAnywhere)
//return SbmGlobals.Application.GetPropertyValue("Interface", "PostcodeAnywhere").EqualsCI("Allow");
return false;
if (interfaceType == (short)Sbm.InterfaceType_System.Bac)
//return SbmGlobals.Application.GetPropertyValue("Interface", "BacSystem").EqualsCI("Allow");
return false;
if (interfaceType == (short)Sbm.InterfaceType_System.Pvh)
//return SbmGlobals.Application.GetPropertyValue("Interface", "PracticalVanHireSystem").EqualsCI("Allow");
return false;
// Sbm.InterfaceType_System.Cap - Only allowed by derived console.
// Sbm.InterfaceType_System.Hpi - Only allowed by derived console.
break;
case SaInterfaceCategory.File:
if (AllowOption(Sbm.ConfigOption.Transactions))
{
if (interfaceType == (short)Sbm.InterfaceType_File.TransactionImport) return true;
if (interfaceType == (short)Sbm.InterfaceType_File.TransactionExport) return true;
if (interfaceType == (short)Sbm.InterfaceType_File.TransToWord_SalesQuote) return AllowTransactionType(Sbm.TransactionType.SalesQuote);
if (interfaceType == (short)Sbm.InterfaceType_File.TransToWord_SalesOrder) return AllowTransactionType(Sbm.TransactionType.ProformaSalesOrder) || AllowTransactionType(Sbm.TransactionType.SalesOrder);
if (interfaceType == (short)Sbm.InterfaceType_File.TransToWord_SalesDispatch) return AllowTransactionType(Sbm.TransactionType.SalesDispatch);
if (interfaceType == (short)Sbm.InterfaceType_File.TransToWord_SalesInvoice) return AllowTransactionType(Sbm.TransactionType.ProformaSalesInvoice) || AllowTransactionType(Sbm.TransactionType.SalesInvoice);
if (interfaceType == (short)Sbm.InterfaceType_File.TransToWord_PurchaseOrder) return AllowTransactionType(Sbm.TransactionType.ProformaPurchaseOrder) || AllowTransactionType(Sbm.TransactionType.PurchaseOrder);
}
if (AllowOption(Sbm.ConfigOption.Contacts))
{
if (interfaceType == (short)Sbm.InterfaceType_File.AffiliateImport) return true;
if (interfaceType == (short)Sbm.InterfaceType_File.AffiliateExport) return true;
if (interfaceType == (short)Sbm.InterfaceType_File.AssociationImport) return true;
if (interfaceType == (short)Sbm.InterfaceType_File.AssociationExport) return true;
}
if (AllowOption(Sbm.ConfigOption.Commodities))
{
if (interfaceType == (short)Sbm.InterfaceType_File.CommodityImport) return true;
if (interfaceType == (short)Sbm.InterfaceType_File.CommodityExport) return true;
}
if (interfaceType == (short)Sbm.InterfaceType_File.VehicleImport) return AllowOption(Sbm.ConfigOption.Vehicles);
if (interfaceType == (short)Sbm.InterfaceType_File.LeasewayInvoice)
//return SbmGlobals.Application.GetPropertyValue("Interface", "LeasewayInvoice").EqualsCI("Allow");
return false;
break;
}
return false;
}
//-------------------------------------------------------------------
// Interface options.
public virtual List<SaItemOption> GetDefaultInterfaceOptions(InterfaceDfn interfaceDfn)
{
List<SaItemOption> options = new List<SaItemOption>();
//if (SbmGlobals.System != null) options = SbmGlobals.System.GetDefaultInterfaceOptions(interfaceDfn);
return options;
}
public virtual bool ProcessInterface(SaInterface saInterface)
{
return false;
}
//-------------------------------------------------------------------
}
//=======================================================================
}