Word in advanceβ
π Core drop notes structure
In our continuous effort to make our Core Drop more easily digestible, we've made the following changes to its format:
- We try to categorize all drop entries as best we can by the closest common denominator, e.g. Extension point entries, or Services. This will make it a little easier for you to discern what's important to you.
- Although the difference can be subtle, we try and categorize the entries on whether they're new additions π or improvements β
- The introductory text for each entry will be more concise, with Detailed information available via the Expansion bar.
Scriptingβ
Incorporating Subscription name in ReturnableStatusβ
The ReturnableStatus extension point now allows for inserting the name of a subscription.
This will allow you to fine-tune when a customer is allowed to return items based on their specific subscriptions, instead of any subscriptions (which might have been limited to a newsletter).
Script sample
extend ReturnableStatus
if Order.Customer.Subscriptions.HasAny line -> line.Subscription.Name = 'New Black' then
set output.IsReturnable to true
set output.Reason to 'Right away!'
else
set output.IsReturnable to false
set output.ChildrenAreReturnable to false
set output.Reason to 'Can't do that!'
end
In this case, the following rules apply:
- When no customer is added to the order, the IsReturnable = false and "Can't do that!" reason will be applied
- When a customer is added to the order, but doesnβt have the 'New Black' subscription on it, the IsReturnable = false and "Can't do that!β reason will be applied
- When a customer is added with the 'New Black' subscription, the IsReturnable = true and "Right away!β reason will be applied
Resetting coupon usage countβ
The GenerateUserDiscountCoupon extension point now allows for resetting a coupon usage count. Essentially this makes it possible for users to enjoy a certain discount again after a certain amount of days, as specified by you in the script.
Script sample
"Name" = "Generate user discount coupon",
"Dialect" = "Extension",
"IsActive" = "true",
"Source": "extend GenerateUserDiscountCoupon
set discountBackendID to ''
if (IsGenerated = false or DaysSinceLastGenerated > 4) then
set discountBackendID to '{discountBackendID}'
end
output discountBackendID"
In this case:
- DaysSinceLastGenerated = DateNow minus the LastCouponGeneratedOn
- IsGenerated = GeneratedCouponCount != 0 or LastCouponGeneratedOn is set
Private Scriptsβ
We've made some back-end changes that will facilitate the direct creation/editing of scripts outside of the Scripting chapter itself.
Details
In practice, this will allow Admin Suite to offer the following:
- Chapters which supports the linking of scripts will allow for either adding an existing ScriptID (as is currently the case) but also allow for the in-line creation of a new script.
- If you opt for creating a new script, this script will be considered private, which means that it will only live in that specific chapter (read: not be visible in the Scripting overview itself). Edits therefore will only be possible there as well.
- By not being available in the general script overview, this will help prevent edits to scripts which are used for specific purposes
Note that the front-end work is still underway.
Back-end details
- Added IsPrivate on scripts with false as default.
- Added property IsPrivate to
CreateScript
as boolean. GetScripts
automatically filters out private scripts.
Specific topicsβ
π More properties in the TerminalReportβ
The TerminalReport stencil has been expanded with additional properties.
These properties are optional.
Details
You can now optionally include the following three properties:
- "OpeningAmount": "decimal", - the opening amount of the cashdrawer
- "ClosingAmount": "decimal", - the closing amount of the cashdrawer
- "CashDepositsTotalAmount": "decimal" - the total amount of the bank deposits
Keep in mind that these properties are not added by default. In other words: to use them, you need to add these to the templates in production.
β Case managementβ
To streamline the management of case statuses, we've made some slight changes.
Details
- We've reduced the available statuses to:
- New
- InProgress
- Completed
- Cancelled
- Any other status will be marked as IsSystem and not be displayed in the front end
π Product requirements in SFS pack tasksβ
Ship from Store tasks will now be able to include a pack task when the order contains products with requirements. To that end, StartShipFromStoreTask
now returns the giftwraps and service lines.
β Email validationβ
To prevent potential security risks, we are making several back-end changes when it comes to email validation.
Front end changes are still underway.
Details
GetUser
will now return the validation status of a user's email address by means of the EmailAddressValidated property- The validation value will change when it is validated and when an email adress changes
ValidateUserEmailAddress
will now send a 4-character alphanumeric code as a tokenConfirmUserEmailAddressValidation
will validate an email adress when receiving the aforementioned token
Financeβ
β Italy: FiscalID and RecipientCode in uppercaseβ
For the SDI in Italy, the value input for the fields FiscalID and RecipientCode on POS are now by default in uppercase.
β Removal of Payment proofβ
Our support for Payment proofs is no longer necessary due to the move to thermal receipts and as such we are removing its corresponding settings.
Details
PaymentProof:Enabled
PaymentProof:AutoPrint
Propertiesβ
π FulfillmentOrganizationUnitBackendID in GetOrderβ
We've introduced a new property to the GetOrder
service call: FulfillmentOrganizationUnitBackendID.
This property will only be displayed when a FulfillmentOrganizationUnitID is available, which is the case for orders of type Order and Delivery.
π Translatable display values for configurable propertiesβ
We've introduced a new property, ConfigurablePropertyDisplayName, alongside ConfigurableProperty in the GetConfigurableProductDetail
service for configurable properties.
This enables the return of a translated property based on the Accept-Language
, ensuring that the specific content layer receives the appropriate display name.
Sample
You might use EditProductPropertyType
to introduce a new display name.
{
"ID": "color",
"Edits": [
{
"LayerID": 15,
"Content": {
"display_name": "Couleur"
}
}
]
}
This changes the display value for color into Couleur in contentlayer 15 (which is ImportProducts
fr).
When calling GetConfigurableProductDetail
with Accept-Language
: fr, this now returns the translated property that is relevant for this specific content layer:
"Configurable": {
"ProductID": 288,
"Type": 16384,
"Status": 0,
"LogicalLevel": "root",
"ConfigurableProperty": "color",
"ConfigurablePropertyDisplayName": "Couloure",
"Values": [
"Black",
"White"
],
....
The same logic as other content culture mapping / layers applies here, which means that requesting something that is not mapped will fall back to whatever value was defined (if any) on the βculturelessβ ImportProductBase Layer.
π BackendReference in GetOrderβ
When BackendID is used for regular products and bundles in the PushSalesOrder
service, we include it as a BackendReference in the GetOrder
order line.
Servicesβ
π Hide cancelled lines in GetReturnableStatusForOrderβ
To accommodate our front ends in hiding cancelled order lines from a return order overview, we've added a new parameter to the GetReturnableStatusForOrder
service call: HideCancelledLines.
For now this property is set to false, but our various Apps will include this in upcoming releases.
π Filtering for CountryIDs in ListAddressBookβ
To facilitate the pre-filling of default addresses for registered customers, we've added an additional property to ListAddressBook
: CountryIDs.
This way, a front end will soon be able to pre-fill a saved address if the customer is ordering in the same country as the saved address.
π NameOrBackendID propertyβ
Multiple services now also include the NameOrBackendID field, which will allow for filtering on both Name and BackendID at the same time, making it easier to use filters on a front end.
Included services
ListOrganizationUnitSets
ListOrganizationUnitSummaries
ListOrganizationUnits
ListOrganizationUnitsDetailed
β Performance improvementsβ
We've introduced various small improvements to services.
Details
GetApplicationConfigurationβ
Changes made to App settings will now be returned immediately in the response of GetApplicationConfiguration
.
ListEmployeesForOrganizationUnitβ
The ListEmployeesForOrganizationUnit
service call has been made considerably more efficient and faster. This will especially help when choosing a different SoldBy user in the POS.
limit_large response warning headersβ
To remind users not to use List
services in ways they're not meant to, we are now including limit_large response warnings headers when using a page size at or above 500.
Making GetShoppingCart stickyβ
We've made GetShoppingCart
a little more sticky to prevent situations where it could be spammed. It will now return the same, newly generated order for one minute.
Transition to ListCouponsByQueryβ
In step 6 of a discount, namely coupons, the service being called is now ListCouponsByQuery
instead of the GetDiscountCoupons
.
Fixesβ
- Add some safeguards to prevent the possible creation of scripts that would loop recursively.
- Scheduled task details will now properly display its new information after being updated.
- We've made improvements to our ElasticSearch queries, allowing for more consistent results.
- We made sure that even if you entered a (valid) IP address for a device that was configured as a mock device, EVA will not try to reach that IP address.
- The EVA Pay mail for repair orders that need to be shipped and have an open amount will now be triggered properly.
Deprecationsβ
β‘ Removed from typingsβ
These deprecations are now halfway through their deprecation timeline. As of now, these services and/or fields will no longer be exposed by our typings.
- LowΒ PriceListID is deprecated and will be removed in 2.0.728: PriceListAdjustment shouldn't be moved from one pricelist to another.
- UpdatePriceListAdjustment.PriceListID
Release dates may varyβ
The exact date for deploying a Core release to production environments may vary. See How we handle Core releases for more details.