Namespace SuperOffice.CRM
Classes
ActivityStatusHelper
This class implements the logic behind the "toggle completed" checkboxes for activities. The public entrypoint ToggleCompleted(string) will toggle the completed status for an activity, i.e., a document, appointment or sale. Appointments may have three state logic enabled through a preference. The changes are saved immediately.
ActorArrayPluginResponse
Extended PluginResponseInfo containing an ErpActor array
ActorPluginResponse
Extended PluginResponseInfo containing an ErpActor object
AddressInfo
Interface providing information about an address.
ApplicationIcon
ApplicationIcons
Return a dictionary of Application-icons with their respective IDs and IMG urls.
This could in theory be sprited, but that's complicating what should be a simple feature for a extremely minimal performance-gain, in a one-time use-case for a CRM admin.
Probably NOT worth it.
ApproveRejectResponseInfo
Response object used by Approve/ Reject quote version methods.
ButtonBarConfigDialogDataHandler
Data fetch/save class for the Configuration dialog for the Button Bar. This is where the user configures which of the standard and user-defined tasks (visible in the popup menu of the Task button) should be visible as separate buttons. The code in this class is also called from the ConfigurationBuilder in order to determine which of the user-defined tasks should also be buttonbar buttons.
CRMQuoteConnectorCapabilities
A list of capabilities that a quote connector can have. These are strings instead of an enum to future proof it, i.e. so that when new capabilities occure , you don't have to recompile your connector if you don't want to.
CRMQuoteConnectorLists
Names of the various lists that the Quote plugins can provide. There is a corresponding Capability for each of these lists. CRMQuoteConnectorCapabilities
ConnectionConfigFieldInfo
A place to store the data the admin user has entered based on the metadata from FieldMetadataInfo.
CustomerService
CustomerServiceUrlResolver
Base implementation of plugin, returning configuration from database.
DateTimeExtensions
ErpActor
Carrier object representing an Actor inside an ERP Connection, used for sending to and from an ERP Connector
ErpConnectorAttribute
Use this attribute to mark a class as an implementation of an ERP Connector. To be recognized by the plugin loader, the class also needs to have a parameterless constructor, and implement IErpConnector. The name field of this attribute is used to identify the plugin when loading/calling it, and should be <Company%gt;.<Plugin> to be unique.
EventHandlerHelper
Utility class for event handling methods.
FacadeHelper
FieldMetadataInfo
This carrier describes a custom field to be added to the config dialog at runtime. It is used to populate the Admin configuration dialog for a connection. Note that this is just a description of the field - it is not the field itself. The GUI will use this info to build the user interface controls. The call to the ERP Connector’s GetConfigurationFields method returns a list of fields and field types. The Admin client builds a dialog with these fields.
FieldMetadataInfoArrayPluginResponse
Extended PluginResponseInfo containing a FieldMetadataInfo objects in an array
FilterDialogDataHandler
Data fetch/save class for the Filter dialog. This class can be used (together with the FilterAssociates, FilterGroups and SelectableListHelper classes to fetch the currently selected groups and associates of the filter dialog, as well as the from and to dates.
ForeignKeyInfo
Interface providing information about a ForeignKey.
FunctionRightStrings
The programmatic, well-known and constant names of functional rights
InMemoryProductProvider
Class where you load up the products and pricelists in memory and use from memory.
ListItemArrayPluginResponse
Extended PluginResponseInfo containing a dictionary of list items (primarykey/displayvalue)
ListItemInfo
One line in a quote list from the ERP connector
ListsHelper
Utility class for lists helper methods.
ListsHelper.ItemRow
ListsHelper.SoListItemDistinctIdComparer
Comparer for SoListItem Used to filter out duplicates in Provider results Comparing on Id
ModuleLicenceProvider
Simple provider for module licences. This provider will return a flat list with one entity for system-level licences, one for site (database)-level licences, and one for user (associate)-level licences. It does not check codekey or other security items.
NetServices
Helper class to update/parse NetServices URLs and store/update the user preferences.
NextDateBase
NextDateInfo
NextDueDate
Standard implementation of the plugin that calculates next due date for sales
NextDueDateInfo
The information needed to update remaining sale rows in a batch update
NextDueDatePluginAttribute
NextMilestone
NextMilestoneDateInfo
NextMilestonePluginAttribute
OrderResponseInfo
Response from a Get order state command
PlaceOrderResponseInfo
Response from a Place order command
PluginResponseInfo
Response object used by plugin/connector actions, to tell the caller how well the call went.
PriceListInfo
A pricelist is basically a collection of products. It can be valid in a time period, and outright deactivated. All prices in the product list is in a specific currency. We have decieded not to separate prices and products , which means that we get a simpler data model, but some redundancy.
ProductDataInfo
Data shared between a product and a quote line.
ProductExtraDataFieldInfo
A way to show some simple extra data on a product, typically to hep the user to identify the correct product. Basically a bucket of additional info that the ERP system would like to store and show in the user interface. Information placed here is shown in the GUI if the “provide-extra-data” capability is true.
ProductInfo
A product is some thing or service that can be sold or leased to a customer.
ProjectGuideUtility
QuoteAlternativeContextInfo
QuoteAlternativeContextInfo contains all the information for communicating with the ERP connector. It contains information about the quote with a single alternative.
QuoteAlternativeInfo
Quote Version is made up of one or more Alternatives. One of 1..n possible alternatives in a Quote Version. The reason we have alternatives is that a quote can say to a customer, “we can solve you problem in two (or more) different ways, with different technology and sideeffects (and price)”. An Alternative may have discounts on the total amount. The Alternative tracks whether the user on the order level entered the Discount %, the Discount amount, the Earning%, Earning amount or the TotalPrice fields so that the discount and earning and total can be re-calculated correctly when Quote Lines are added or changed.
QuoteAlternativeRecalculatedInfo
Describes the changes done while recalculating the quote alternative
QuoteAlternativeResponseInfo
Response with QuoteAlternative and QuoteLine information
QuoteAlternativeWithLinesInfo
Sometimes, when we work in context of an alternative, we need all the alternatives. We then use an array of this class.
QuoteCalculation
Contains helper methods and utilities for implementors of Quote Connectors. Used by the QuoteConnectorBase to handle calculations.
Typically you would call CalculateQuoteAlternativeWithLines(QuoteAlternativeWithLinesInfo) from your connector to get the basic summation and discount calculations done. You could then add anything you were interested in on top of the standard calculations.QuoteConnection
Represent one connection to an ERP system and uses an IQuoteConnector implementation (the real connection) and an QuoteConnectorMediator to wrap the real connection. Has a connection to the CRM database too, and gets data from it when needed.
QuoteConnectionInfo
A Quote Connection is set up in the SuperOffice Admin client. It collects the parameters needed to talk to a single ERP client, and gives it a name and an id.
Quote connections will be stored in the table “QuoteConnection” in the CRM database.
QuoteConnectionManager
Takes care of the connections and serves them to interested parties. All connections are wrapped in a QuoteConnectorMediator, so clients do not have to add their own mediators on top of what the QuoteConnectionManager returns.
QuoteConnectorAttribute
Connector to ERP system
QuoteConnectorBase
A base class with som typical quote functionality: Price calculations from the QuoteCalculation helper class.
QuoteConnectorBase.ConfigNames
Names of different situations that the list price can end up in that the Quote Connector needs to respond to. Used for referring to the configuration settings in the SuperOffice Quote Connector. GetQuoteStatusInfo(string) for usage.
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. IQuoteConnectorQuoteContextInfo
QuoteContextInfo contains all the information for communicating with the ERP connector.
QuoteInfo
A Sale can have a quote, and have then a 1-1 relationship with the QuoteInfo. Read-write Quote information.
QuoteLineInfo
One line in a QuoteAlternative. QuoteLines are mainly information copied from the Products provider. Products information is sometimes edited by the user before being included in the quote , so most information is duplicated from Product rather than referenced directly.
QuoteResponseInfo
Response with Quote, QuoteVersion, QuoteAlternative and QuoteLine information
QuoteSentResponseInfo
Response from a OnAfterSentQuoteVersion command. Adds a URL field to the QuoteVersion context.
QuoteUtility
Translate enums into strings for Quote Version state. Used in building tooltips and lists.
QuoteVersionContextInfo
QuoteAlternativeContextInfo contains all the information for communicating with the ERP connector. It contains information about the quote with a version and all its alternatives.
QuoteVersionInfo
Represent a version of a quote
A quote is divided into one or more versions (or revisions, if you like), so a quote have 1..n QuoteVersions. I.e. a QuoteVersion always have a quote. Even if versioning is disabled, a single version will exist. When versioning is disabled, new versions are not created , but the only one is reused.QuoteVersionRecalculatedInfo
QuoteVersionResponseInfo
Response with Version and Quote Information
QuoteVersionStateExtensions
Extension for the QuoteVersionState enum.
QuoteVersionStatusInfo
QuoteVersionValidatedInfo
Return object from QuoteVersionValidate connector call
RegistryExtensions
ReturnInfo
Return value object for Document Plugin API calls
SaleFilterDialogDataHandler
Data fetch/save class for the Sale Filter dialog.
SaleGuideUtility
SearchRestrictionInfo
This class represents one restriction in an "Advanced Find" supported by an ERP (Sync/Quote) connector
StringArrayPluginResponse
Extended PluginResponseInfo containing a string array
TemporaryDbLock
Locking class for implementing concurrency of relatively quick (within one request) run time operations. using (var lock = new TemporaryDbLock(tableNumber, key) { if (!lock.IsValid) return; // You didn't get the lock, so return or continue. You must check if you actually got the lock.
// you have the lock, do stuff... lock.Update() // Will keep the lock alive, not timing out, while you work. .... }
TemporaryKeyHelper
TimeZoneData
TimeZoneRule
TimeZoneRuleDictionary
TooltipHelper
Utility class for generating tool tips.
UserInfo
Class providing information about the associate (user). This should have been an interface. Sorry about that.
UserInfo2
User info extended with username and custom fields values
UserPreferenceStrings
Helper class that exposes section and key names for the UserPreference table. The top level members of this class are classes that represent sections; use the .Section member to get the actual section name. Inner members represent the keys within each section.. The PreferenceLevel enum contains the values for the DefLevel element of the UserPreference table.
UserPreferenceStrings.AdminImportRules
Preference keys for the mini panel.
UserPreferenceStrings.Archives
UserPreferenceStrings.Associates
Associate preferences like which radiobutton did I select the last time I used this dialog/control or which item did I select last time I used this dropdownlist
UserPreferenceStrings.BulkUpdate
BulkUpdate - Misc
UserPreferenceStrings.CloudServices
Preferences for Cloud Services.
UserPreferenceStrings.Dashboard
UserPreferenceStrings.DataCollection
Data collection (usage statistics) - used for status storage and locking, not intended for user interaction
UserPreferenceStrings.DbOptimizations
Boss mod preferences for database-dependent special optimizations
UserPreferenceStrings.Debug
UserPreferenceStrings.Defaults
Default values
UserPreferenceStrings.DiaryView
Diary
UserPreferenceStrings.DocPluginNames
Doc Plugin Addons: [DocPluginNames] plugin-id = prog.id. The prog.id is requred and matches COM ProgId property of the document plugin class.
UserPreferenceStrings.DocTemplateTypeMap
DocTemplate Type Mapping: [DocTemplateTypeMap] .xyz = .docx
Maps a template's unknown file type to a know file type before tag-substitution logic is run on the templateUserPreferenceStrings.DuplicateSystem
Duplicate system settings
UserPreferenceStrings.ExtraFields
UserPreferenceStrings.FieldLabels
Field labels
UserPreferenceStrings.FieldReplication
Enables replication of user-defined fields at field level instead of record level. This ensures that field changes for the customer are retained, but may affect the performance of the replication process
UserPreferenceStrings.Filter
Filter (these are available only in PointyHairedBossMode in admin and thus cannot be easily edited)
UserPreferenceStrings.FilterDialog
Filter dialog settings, editable through SoAdmin
UserPreferenceStrings.FindResultDialog
Find result dialog
UserPreferenceStrings.Freetext
Freetext
UserPreferenceStrings.Functions
Functions
UserPreferenceStrings.Gdpr
GDPR - Misc
UserPreferenceStrings.HugoAI
UserPreferenceStrings.InApp
In-App
UserPreferenceStrings.MDOList
Grouped and filtered lists
UserPreferenceStrings.Mail
E-mail synchronisation
UserPreferenceStrings.MiniPanel
Preference keys for the mini panel.
UserPreferenceStrings.NetServices
SuperOffice Web Services settings
UserPreferenceStrings.Notification
UserPreferenceStrings.NotificationEmail
UserPreferenceStrings.NotificationSms
UserPreferenceStrings.Numbering
Numbering
UserPreferenceStrings.Person
Person preferences
UserPreferenceStrings.Phone
Phone
UserPreferenceStrings.PocketSection
Preferences for Pocket client.
UserPreferenceStrings.Project
Project preferences
UserPreferenceStrings.QuickLaunchBar
Preference keys for QuickLaunchBar settings
UserPreferenceStrings.Quote
Preference keys for the quote system.
UserPreferenceStrings.ROU
Preference keys Regeneration of StatusMonitors
UserPreferenceStrings.Request
UserPreferenceStrings.RequiredDynamicLoad
Required dynamic load: Add new preference section for NetServer only [RequiredDynamicLoad] name = regexp
UserPreferenceStrings.Sale
Preference keys for sales settings
UserPreferenceStrings.SaleFilterDialog
UserPreferenceStrings.SalesNotification
UserPreferenceStrings.Selection
Selection
UserPreferenceStrings.SentryAddonNames
Sentry Addons: [SentryAddonNames] dummy-name = prog.id. The prog.id is requred and matches ProgId property of the sentry plugin attribute.
UserPreferenceStrings.Sorting
Sorting
UserPreferenceStrings.StandardStartupScreenOptions
UserPreferenceStrings.SuperMode
SuperMode
UserPreferenceStrings.System
System
UserPreferenceStrings.SystemNotification
UserPreferenceStrings.Targets
UserPreferenceStrings.ToolTips
Tooltips in the application
UserPreferenceStrings.Travel
Travel
UserPreferenceStrings.VideoMeetings
UserPreferenceStrings.Visual
Visual effects
UserPreferenceStrings.WebServer
Web server
UserPreferenceStrings.Wizard
Wizard
UserPreferenceStrings.ZFD
Preferences for Zero Footprint Documents
XsrfHelper
Helper class to update/parse XSRF Paths and store/update the user preference.
Interfaces
IAppointmentInfo
Interface providing information about the appointment.
IAppointmentInfo2
IAppointmentInfo3
IConfiguration
Get values from the SuperOffice config section.
IContactInfo
Interface providing information about a contact
IContactInfo2
Interface providing information about a contact with support person info
IContactInfo3
Interface providing information about a contact with extra and udef fields in custom fields info
ICustomerServiceUrlResolver
Interface defining methods to be implemented for getting CS URLs and paths.
IDocumentInfo
Interface providing information about the document.
IDocumentInfo2
IDocumentTemplateInfo
Interface providing information about the document template.
IErpConnector
Interface to be implemented by Connectors in the ERP Integration System; implementations also need to be marked with the ErpConnectorAttribute to be recognized by the loader.
INextDueDatePlugin
Contains the algorithm for calculating the next due date for a given sale or all sales.
INextMilestonePlugin
Contains the algorithm for calculating the next due date for a given sale or all sales.
IPersonInfo
Interface providing information about a person
IPersonInfo2
IPersonInfo3
Interface providing information about a person with extra and udef fields in custom fields info
IPersonInfo4
IProductRegisterCache
SuperOffice has its own simple Product table. This table can be used by the ERP connectors as a cache for ERP data.
This interface will be implemented by SuperOffice. The implementation is passed to all connectors as an initialization parameter.
IProjectInfo
Interface providing information about a project.
IProjectInfo2
Interface providing information about a project with guide and milestones
IProjectInfo3
Interface providing information about a project with extra and udef fields in custom fields info
IQuoteConnector
This is the interface SuperOffice will call to integrate against an ERP system in the realm of quotes and orders. You don't have to implement all functions, use the capabilities to tell SuperOffice what the connector can and cannot do.
If an ERP system does not provide products, or if the ERP system is not available , the searches can be delegated to the built-in SuperOffice product registry by using the SuperOffice IProductRegisterCache object that is provided at startup. Currencies are specified in ISO three letter codes: USD, NOK, SEK, EUR, GBP, etc. See http://www.currency-iso.org/dl_iso_table_a1.xls for details. The user may click the TEST button in the configuration dialog, which calls the TestConnection method.IQuoteConnector2
Enhanced Quote Connector abilities: modify state changes (approvals)
ISaleInfo
Interface providing information about a sale.
ISaleInfo2
ISaleInfo3
Interface providing information about a sale with extra and udef fields in custom fields info
ISelectionInfo
Interface providing information about a selection.
IUserInfo
IUserInfo2
Enums
CustomerService.CsUrlType
ExtraDataFieldTypeInfo
String, int, decimal, image, url, etc. How should the value be interpreted.
FieldAccessInfo
Access restrictions and mandatory status, if any
Note: Enum is mirrored in C++ code, update iEnum.h when it changes
Note #2: Enum is mirrored in data model (Enums.cs), which also needs to be updated if this changes
FieldMetadataTypeInfo
Describes the different widgets that the Connector can use in its configuration dialog.
FilterDialogDataHandler.DefaultFilter
Enum for possible values of the Filter.DefaultFilter preference, which controls behaviour before the first Save has been done.
QuoteAction
QuoteStatusInfo
The state of a quote-alternative or -line
ResponseState
State enum for a response, describes the possible states from totally Ok to Error that an action can return
ReturnType
How should a return value from an API call or command be interpreted by the caller
ValueOverrideInfo
Which field the user changed last. This helps the calulation to calculate the other fields correctly.