Update 5.21.0

New: BusinessCollection.Import can now merge matched rows giving preference to either the imported row or existing row.

New: BusinessCollection.Import can now import from multiple line fields to one. If the property is of type MultipleLineText then the system will look for a column in the import ending in Line1, Line2, etc. For example, PostalAddressLine1, PostalAddressLine2 and PostalAddressLine3 will be imported into PostalAddress.

New: BusinessCollection.Import can specify the date format being imported as one of the following:

  • Day Month Year
  • Month Day Year
  • Year Month Day

New: Common.ConvertToDateTime(DateTimeText, GenericDateFormat) has been added to enable manual sorting within the parent group.

New: Group.Position has been added to enable manual sorting within the parent group.

New: All Articles menu item under content management.

New: Many functions on business objects have been modified to return self.

New: All object properties including application and collection now can specify where the Repository is.

Fix: Error when adding a promotion.

Fix: After adding a promotion it returns to the list.

Fix: An object's item and collection properties filter and sort attributes are no longer visible and cannot be edited by the user.

Fix: Group.GetActiveMembershipCount returns an error when Group.MaximumMemberships set.

Fix: The actual error when making a payment is now displayed correctly.

Fix: CollectionClassDefintion.GenerteHTML merge expressions.

Update 5.20.0

New: BusinessCollection.Import will now except JSON and XML.

New: BusinessCollection.Import new excepts two more parameters MatchItemBy which except a unique column name and UpdateMatches which specified whether to skip or update rows that match.

New: JSON and XML exports now include both the ID and FileName along with ToString in a sub-element for Item types. When an item's property is referenced (i.e. Country.Code) then the system will create a sub-element for it. When multiple are grouped together (i.e. Country,Country.Code,Country.Name) then they will be grouped in the same sub-elememt.

New: XML export format now uses the definition name as the element name and ID is a sub-element, not an attribute.

Fix: JSON export now has the correct file extension.

New: BusinessCollection.IsExistingItem and BusinessCollection.Item now except a dictionary of name value pairs. It will first look for FileName and if not available use ID.

New: BusinessCollection.FilterOnIDFileNameOrUniqueValues now except a dictionary or array of dictionary of name value pairs. It will first look for FileName and if not available use ID.

New: Common.XMLToObject converts xml to an array/dictionary the same format as Common.JSONToObject.

Fix: JSON export now has the correct file extension.

Fix: Submit name in defintion inspector.

Update 5.19.0

New: ValueDefinitionAttribute.StoreSessionOnly had been replaced by enumeration ValueDefinitionAttribute.Repository which indicate where the value is stored:

  • Database: stores in a column in the table.
  • More Info: stores the name and value in a JSON column named More Info.
  • Request: stores only for the current request.
  • Session: stores in the user's session state.
  • Application: stores in the application state.

New: JSON table column MoreInfo replaces XML table column CustomProperties to store the custom properties in a name value collection.

New: PaymentMethod.MoreInfo and Email.MoreInfo have been created to store the custom properties from the inherited classes. For example, SecurePayPaymentMethod.MerchantID, OrderEmail.OrderStatus, etc.

New: A table column has been created for each custom property and the following system properties:

  • GatewayPaymentMethod.ReconciliationRequired
  • GatewayPaymentMethod.VerificationRequiredWithStoredPaymentMethod
  • OrderItem.RegularPrice
  • ServiceBooking.AdditionalInformation

New: ClassDefinitionAttribute.BaseType returns one of the following:

  • BusinessApplication
  • BusinessCollection
  • BusinessCollectionItem

New: JavaScript function to create a tabs on the client-side. To use set class="tabs" on the container element. The same element must have a child element of nav, to hold the table of contents, and one or more elements with an id for each content section. For example:

<div class="tabs">
  <nav>
    <ul>
      <li><a href="#content-one"><span>Content Section One</span></a></li>
      <li><a href="#content-two"><span>Content Section Two</span></a></li>
      <li><a href="#content-three"><span>Content Section Three</span></a></li>
    </ul>
  </nav>
  <div id="content-one">Content section one here...</div>
  <div id="content-two">Content section two here...</div>
  <div id="content-three">Content section three here...</div>
</div>

New: Definition inspector has been overhauled with a new look. You can also add a collection class or property directly via the inspector and it will add the table or column in the database if need be.

New: The dashboard shop now lists all products to easily add products to the cart without multiple roundtrips to the server to do so. A client-side search and filter by category have also been added to make it easy for the customer to find what they want fast.

New: ItemTypes.InheritsRank is a calculated column on the table used for sorting.

New: CustomDefinitionNamesStartWith now defaults to underscore if not provided.

New: ValueDefinitionAttribute.SQLDataType returns the data type required to store the property value in an SQL table column. For example, HTML = nvarchar(max), ID = int, Money = decimal(19,3), etc.

Fix: Error in MoneyDefinitionAttribute.FormatValue when round to value is whole number.

Fix: Error in EnumerationDefinitionAttribute.CompareValues when enumeration name passed.

Fix: GetCollection now throws an appropriate error if not found.

Fix: To output of ConvertSiteToXHTMLCompliant.

Fix: To the attributes of the following properties:

  • AutomatedTask.URL
  • AutomatedTask.Duration
  • CourseResult.CompletedOn
  • Email.FromEmailAddress
  • Email.ReplyEmailAddress
  • Email.MergeCollection
  • Email.MergePropertyForRecipient
  • Email.MergeFilterExpression
  • Email.MergeSort
  • Order.DiscountTaxRate
  • Order.FreightTaxRate
  • OrderItem.TaxRate
  • Payment.ProcessingFeeTaxRate
  • PaymentMethod.Currency
  • PaymentMethod.ProcessingFeePercentage
  • Promotion.DiscountRate
  • Subscription.AutoRenewDue
  • Task.URLToRun
  • Task.PercentageComplete
  • TaxRate.Rate
  • User.PasswordLastUpdatedOn