Show / Hide Table of Contents

Class QuoteConnectorExtender

Base class that allows 3rd party modules to extend the SuperOffice Quote Connector without directly linking to the specific version of the QuoteConnector.dll

This class is made to make it easier to make some installation specific changes to a connector without directly linking to the connector itself.

Just inherit QuoteConnectorExtender and override the function you need to change or extend the functionality. IQuoteConnector
Inheritance
object
QuoteConnectorExtender
Implements
IQuoteConnector
IDisposable
Inherited Members
object.ToString()
object.Equals(object)
object.Equals(object, object)
object.ReferenceEquals(object, object)
object.GetHashCode()
object.GetType()
object.MemberwiseClone()
Namespace: SuperOffice.CRM
Assembly: SuperOffice.Plugins.dll
Syntax
public class QuoteConnectorExtender : IQuoteConnector, IDisposable
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

Constructors

QuoteConnectorExtender(IServiceProvider)

Default Constructor of the extender. Extend the SuperOfficeQuoteConnector in "SuperOffice.QuoteConnector.Dll".

Declaration
public QuoteConnectorExtender(IServiceProvider serviceProvider)
Parameters
Type Name Description
IServiceProvider serviceProvider
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

QuoteConnectorExtender(string)

Constructor of the extender.

Declaration
public QuoteConnectorExtender(string nameOfPluginToExtend)
Parameters
Type Name Description
string nameOfPluginToExtend

Relative or absolute path to the assembly, Ex: "C:\Program Files (x86)\SuperOffice\Plugins\MyConnector.dll"

Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

Fields

_connector

The connector that the extender extends.

Declaration
protected IQuoteConnector _connector
Field Value
Type Description
IQuoteConnector
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

Properties

CRMConnectionId

Return the id of this connector. CRMConnectionId

Declaration
public virtual int CRMConnectionId { get; set; }
Property Value
Type Description
int
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

ConnectorName

Returns the ConnectorName from the attribute

Declaration
protected string ConnectorName { get; }
Property Value
Type Description
string
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

NextConnectorKeyname

Concatenates the ConnectorName and "_NextConnectorKey"

Declaration
protected string NextConnectorKeyname { get; }
Property Value
Type Description
string
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

Methods

CanProvideCapability(string)

Will call the base connector's CanProvideCapability(string) unless you override this method.

Declaration
public virtual bool CanProvideCapability(string capabilityName)
Parameters
Type Name Description
string capabilityName

Name of the capability, see CRMQuoteConnectorCapabilities

Returns
Type Description
bool

List of what the connector can do

Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

Dispose()

Base class that allows 3rd party modules to extend the SuperOffice Quote Connector without directly linking to the specific version of the QuoteConnector.dll

This class is made to make it easier to make some installation specific changes to a connector without directly linking to the connector itself.

Just inherit QuoteConnectorExtender and override the function you need to change or extend the functionality. IQuoteConnector
Declaration
public void Dispose()
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

FindProductAsync(QuoteAlternativeContextInfo, string, string, string, CancellationToken)

Will call the base connector's FindProductAsync(QuoteAlternativeContextInfo, string, string, string, CancellationToken) unless you override this method.

Declaration
public virtual Task<ProductInfo[]> FindProductAsync(QuoteAlternativeContextInfo context, string currencyCode, string userinput, string priceListKey, CancellationToken cancellationToken = default)
Parameters
Type Name Description
QuoteAlternativeContextInfo context
string currencyCode
string userinput
string priceListKey
CancellationToken cancellationToken
Returns
Type Description
Task<ProductInfo[]>
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

GetActivePriceLists(string)

Will call the base connector's GetActivePriceLists(string) unless you override this method.

Declaration
public virtual PriceListInfo[] GetActivePriceLists(string isoCurrencyCode)
Parameters
Type Name Description
string isoCurrencyCode
Returns
Type Description
PriceListInfo[]
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

GetAddresses(QuoteAlternativeContextInfo)

Gets two addresses:

  • the invoice address - [0].

  • the delivery address - [1].

Declaration
public virtual AddressInfo[] GetAddresses(QuoteAlternativeContextInfo context)
Parameters
Type Name Description
QuoteAlternativeContextInfo context
Returns
Type Description
AddressInfo[]

Returns null if no address was found.

Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

GetAllPriceLists(string)

Will call the base connector's GetAllPriceLists(string) unless you override this method.

Declaration
public virtual PriceListInfo[] GetAllPriceLists(string isoCurrencyCode)
Parameters
Type Name Description
string isoCurrencyCode
Returns
Type Description
PriceListInfo[]
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

GetCapabilities()

Will call the base connector's GetCapabilities() unless you override this method.

Declaration
public virtual Dictionary<string, bool> GetCapabilities()
Returns
Type Description
Dictionary<string, bool>

List of what the connector can do

Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

GetConfigurationFields()

Will call the base connector's GetConfigurationFields() unless you override this method.

Declaration
public virtual Dictionary<string, FieldMetadataInfo> GetConfigurationFields()
Returns
Type Description
Dictionary<string, FieldMetadataInfo>
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

GetNumberOfActivePriceLists(string)

Will call the base connector's GetNumberOfActivePriceLists(string) unless you override this method.

Declaration
public virtual int GetNumberOfActivePriceLists(string isoCurrencyCode)
Parameters
Type Name Description
string isoCurrencyCode
Returns
Type Description
int
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

GetNumberOfProductImages(string)

Will call the base connector's GetNumberOfProductImages(string) unless you override this method.

Declaration
public virtual int GetNumberOfProductImages(string erpProductKey)
Parameters
Type Name Description
string erpProductKey
Returns
Type Description
int
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

GetOrderState(QuoteAlternativeContextInfo)

Calls the base class's implementation of GetOrderState(QuoteAlternativeContextInfo) unless you override this method.

Declaration
public virtual OrderResponseInfo GetOrderState(QuoteAlternativeContextInfo context)
Parameters
Type Name Description
QuoteAlternativeContextInfo context

The alternative to place and order for

Returns
Type Description
OrderResponseInfo

An updated alternative. Fill in the delivered quantity, change the state or reason flags on quote lines to reflect the state of the order in the ERP system.

Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

GetProduct(QuoteAlternativeContextInfo, string)

Will call the base connector's GetProduct(QuoteAlternativeContextInfo, string) unless you override this method.

Declaration
public virtual ProductInfo GetProduct(QuoteAlternativeContextInfo context, string erpProductKey)
Parameters
Type Name Description
QuoteAlternativeContextInfo context
string erpProductKey
Returns
Type Description
ProductInfo
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

GetProductImage(string, int)

Will call the base connector's GetProductImage(string, int) unless you override this method.

Declaration
public virtual string GetProductImage(string erpProductKey, int rank)
Parameters
Type Name Description
string erpProductKey
int rank
Returns
Type Description
string
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

GetProducts(QuoteAlternativeContextInfo, string[])

Will call the base connector's GetProducts(QuoteAlternativeContextInfo, string[]) unless you override this method.

Declaration
public virtual ProductInfo[] GetProducts(QuoteAlternativeContextInfo context, string[] erpProductKeys)
Parameters
Type Name Description
QuoteAlternativeContextInfo context
string[] erpProductKeys
Returns
Type Description
ProductInfo[]
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

GetQuoteLinesFromProduct(QuoteAlternativeContextInfo, string)

Will call the base connector's GetQuoteLinesFromProduct(QuoteAlternativeContextInfo, string) unless you override this method.

Declaration
public virtual QuoteLineInfo[] GetQuoteLinesFromProduct(QuoteAlternativeContextInfo context, string erpProductKey)
Parameters
Type Name Description
QuoteAlternativeContextInfo context
string erpProductKey
Returns
Type Description
QuoteLineInfo[]
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

GetQuoteListAsync(string, CancellationToken)

Will call the base connector's GetQuoteListAsync(string, CancellationToken) unless you override this method.

Declaration
public virtual Task<ListItemInfo[]> GetQuoteListAsync(string quoteListType, CancellationToken cancellationToken = default)
Parameters
Type Name Description
string quoteListType
CancellationToken cancellationToken
Returns
Type Description
Task<ListItemInfo[]>
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

GetSearchResultsAsync(SearchRestrictionInfo[], CancellationToken)

Calls the base class's implementation of IQuoteConnector.GetSearchResults unless you override this method.

Declaration
public virtual IAsyncEnumerable<ProductInfo> GetSearchResultsAsync(SearchRestrictionInfo[] restrictions, CancellationToken cancellationToken = default)
Parameters
Type Name Description
SearchRestrictionInfo[] restrictions

Array of restrictions chosen by the user; see SearchRestrictionInfo for details

CancellationToken cancellationToken
Returns
Type Description
IAsyncEnumerable<ProductInfo>

Array (possibly empty) of hits, populated as fully as reasonably possible (should follow same policy as IProductProvider.FindProducts

Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

GetSearchableFields()

Calls the base class's implementation of GetSearchableFields() unless you override this method.

Declaration
public virtual FieldMetadataInfo[] GetSearchableFields()
Returns
Type Description
FieldMetadataInfo[]

Metadata structures

Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

InitializeConnection(QuoteConnectionInfo, UserInfo, bool, Dictionary<string, string>, IProductRegisterCache)

Will call the base connector's InitializeConnection(QuoteConnectionInfo, UserInfo, bool, Dictionary<string, string>, IProductRegisterCache) unless you override this method.

Declaration
public virtual PluginResponseInfo InitializeConnection(QuoteConnectionInfo connectionData, UserInfo user, bool isOnTravel, Dictionary<string, string> connectionConfigFields, IProductRegisterCache productRegister)
Parameters
Type Name Description
QuoteConnectionInfo connectionData

Information about the connection

UserInfo user

Information about the current user

bool isOnTravel

True if we are currently on travel

Dictionary<string, string> connectionConfigFields

Configuration parameters

IProductRegisterCache productRegister

Interface to call if a product register cache is desired

Returns
Type Description
PluginResponseInfo
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

OnAfterSaveQuote(QuoteAlternativeContextInfo)

Will call the base connector's OnAfterSaveQuote(QuoteAlternativeContextInfo) unless you override this method.

Declaration
public virtual void OnAfterSaveQuote(QuoteAlternativeContextInfo context)
Parameters
Type Name Description
QuoteAlternativeContextInfo context
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

OnAfterSentQuoteVersion(QuoteVersionContextInfo)

Will call the base connector's OnAfterSentQuoteVersion(QuoteVersionContextInfo) unless you override this method.

Declaration
public virtual QuoteSentResponseInfo OnAfterSentQuoteVersion(QuoteVersionContextInfo context)
Parameters
Type Name Description
QuoteVersionContextInfo context
Returns
Type Description
QuoteSentResponseInfo
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

OnBeforeCreateQuote(QuoteAlternativeContextInfo)

Will call the base connector's OnBeforeCreateQuote(QuoteAlternativeContextInfo) unless you override this method.

Declaration
public virtual QuoteResponseInfo OnBeforeCreateQuote(QuoteAlternativeContextInfo context)
Parameters
Type Name Description
QuoteAlternativeContextInfo context
Returns
Type Description
QuoteResponseInfo
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

OnBeforeCreateQuoteAlternative(QuoteAlternativeContextInfo)

Will call the base connector's OnBeforeCreateQuoteAlternative(QuoteAlternativeContextInfo) unless you override this method.

Declaration
public virtual QuoteAlternativeResponseInfo OnBeforeCreateQuoteAlternative(QuoteAlternativeContextInfo context)
Parameters
Type Name Description
QuoteAlternativeContextInfo context
Returns
Type Description
QuoteAlternativeResponseInfo
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

OnBeforeCreateQuoteVersion(QuoteVersionContextInfo)

Will call the base connector's OnBeforeCreateQuote(QuoteAlternativeContextInfo) unless you override this method.

Declaration
public virtual QuoteVersionResponseInfo OnBeforeCreateQuoteVersion(QuoteVersionContextInfo context)
Parameters
Type Name Description
QuoteVersionContextInfo context
Returns
Type Description
QuoteVersionResponseInfo
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

OnBeforeDeleteQuote(QuoteInfo, ISaleInfo, IContactInfo)

Will call the base connector's OnBeforeDeleteQuote(QuoteInfo, ISaleInfo, IContactInfo) unless you override this method.

Declaration
public virtual void OnBeforeDeleteQuote(QuoteInfo quote, ISaleInfo sale, IContactInfo contact)
Parameters
Type Name Description
QuoteInfo quote

Quote that will be deleted

ISaleInfo sale

Sale the quote belongs to

IContactInfo contact

Contact the sale belongs to

Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

OnQuoteLineChangedAsync(QuoteAlternativeContextInfo, QuoteLineInfo, string[], CancellationToken)

Will call the base connector's OnQuoteLineChangedAsync(QuoteAlternativeContextInfo, QuoteLineInfo, string[], CancellationToken) unless you override this method.

Declaration
public virtual Task<QuoteLineInfo> OnQuoteLineChangedAsync(QuoteAlternativeContextInfo context, QuoteLineInfo ql, string[] changedFields, CancellationToken cancellationToken)
Parameters
Type Name Description
QuoteAlternativeContextInfo context
QuoteLineInfo ql
string[] changedFields
CancellationToken cancellationToken
Returns
Type Description
Task<QuoteLineInfo>
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

PlaceOrder(QuoteAlternativeContextInfo)

Calls the base class's implementation of PlaceOrder(QuoteAlternativeContextInfo) unless you override this method.

Declaration
public virtual PlaceOrderResponseInfo PlaceOrder(QuoteAlternativeContextInfo context)
Parameters
Type Name Description
QuoteAlternativeContextInfo context

The alternative to place and order for

Returns
Type Description
PlaceOrderResponseInfo

How it went

Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

RecalculateQuoteAlternativeAsync(QuoteAlternativeContextInfo, CancellationToken)

Will call the base connector's RecalculateQuoteAlternativeAsync(QuoteAlternativeContextInfo, CancellationToken) unless you override this method.

Declaration
public virtual Task<QuoteAlternativeWithLinesInfo> RecalculateQuoteAlternativeAsync(QuoteAlternativeContextInfo context, CancellationToken cancellationToken = default)
Parameters
Type Name Description
QuoteAlternativeContextInfo context
CancellationToken cancellationToken
Returns
Type Description
Task<QuoteAlternativeWithLinesInfo>

Updated

Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

SetConnectorToExtend(string)

Same as constructor

Declaration
protected void SetConnectorToExtend(string nameOfPluginToExtend)
Parameters
Type Name Description
string nameOfPluginToExtend
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

TestConnection(Dictionary<string, string>)

Will call the base connector's TestConnection(Dictionary<string, string>) unless you override this method.

Declaration
public virtual PluginResponseInfo TestConnection(Dictionary<string, string> connectionData)
Parameters
Type Name Description
Dictionary<string, string> connectionData
Returns
Type Description
PluginResponseInfo
Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

UpdateQuoteVersionPricesAsync(QuoteVersionContextInfo, HashSet<string>)

Will call the base connector's UpdateQuoteVersionPricesAsync(QuoteVersionContextInfo, HashSet<string>) unless you override this method.

Declaration
public virtual Task<QuoteVersionResponseInfo> UpdateQuoteVersionPricesAsync(QuoteVersionContextInfo context, HashSet<string> writeableFields)
Parameters
Type Name Description
QuoteVersionContextInfo context

Current quote version

HashSet<string> writeableFields
Returns
Type Description
Task<QuoteVersionResponseInfo>

Updated quote version

Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

ValidateAlternativeAsync(QuoteAlternativeContextInfo, bool, CancellationToken)

Will call the base connector's ValidateAlternativeAsync(QuoteAlternativeContextInfo, bool, CancellationToken) unless you override this method. Does nothing if you are extending a connector that is not based on QuoteConnectorBase.

Declaration
protected virtual Task<QuoteAlternativeWithLinesInfo> ValidateAlternativeAsync(QuoteAlternativeContextInfo context, bool clearOldValues = false, CancellationToken cancellationToken = default)
Parameters
Type Name Description
QuoteAlternativeContextInfo context
bool clearOldValues

Should the function clear out old values for status and reason?

CancellationToken cancellationToken
Returns
Type Description
Task<QuoteAlternativeWithLinesInfo>

A potentially changed alternative AND quotelines

Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

ValidateQuoteLineAsync(QuoteAlternativeContextInfo, QuoteLineInfo, bool, CancellationToken)

Will call the base connector's ValidateQuoteLineAsync(QuoteAlternativeContextInfo, QuoteLineInfo, bool, CancellationToken) unless you override this method. Does nothing if you are extending a connector that is not based on QuoteConnectorBase.

Declaration
protected virtual Task<QuoteLineInfo> ValidateQuoteLineAsync(QuoteAlternativeContextInfo context, QuoteLineInfo ql, bool clearOldValues = false, CancellationToken cancellationToken = default)
Parameters
Type Name Description
QuoteAlternativeContextInfo context
QuoteLineInfo ql
bool clearOldValues

Should the function clear out old values for status and reason?

CancellationToken cancellationToken
Returns
Type Description
Task<QuoteLineInfo>

A potentially changed quoteline

Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

ValidateQuoteVersionAsync(QuoteVersionContextInfo, QuoteAction, CancellationToken)

Will call the base connector's ValidateQuoteVersionAsync(QuoteVersionContextInfo, QuoteAction, CancellationToken) unless you override this method.

Declaration
public virtual Task<QuoteResponseInfo> ValidateQuoteVersionAsync(QuoteVersionContextInfo context, QuoteAction action, CancellationToken cancellationToken = default)
Parameters
Type Name Description
QuoteVersionContextInfo context

The version with it's context

QuoteAction action
CancellationToken cancellationToken
Returns
Type Description
Task<QuoteResponseInfo>

A potentially changed context

Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

ValidateVersionAsync(QuoteVersionContextInfo, QuoteAction, bool, CancellationToken)

Will call the base connector's ValidateVersionAsync(QuoteVersionContextInfo, QuoteAction, bool, CancellationToken) unless you override this method. Does nothing if you are extending a connector that is not based on QuoteConnectorBase.

Declaration
protected virtual Task<QuoteVersionResponseInfo> ValidateVersionAsync(QuoteVersionContextInfo context, QuoteAction action, bool clearOldValues = false, CancellationToken cancellationToken = default)
Parameters
Type Name Description
QuoteVersionContextInfo context
QuoteAction action
bool clearOldValues

Should the function clear out old values for status and reason?

CancellationToken cancellationToken
Returns
Type Description
Task<QuoteVersionResponseInfo>

A potentially changed version with alternative AND quotelines

Remarks

This class will call your interface implementations if they exist, otherwise it will call the inherited

Implements

IQuoteConnector
IDisposable

Extension Methods

EnumUtil.MapEnums<From, To>(From)
Converters.MapEnums<From, To>(From)
© SuperOffice. All rights reserved.
SuperOffice |  Community |  Release Notes |  Privacy |  Site feedback |  Search Docs |  About Docs |  Contribute |  Back to top