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.
Breakingโ
No breaking changes.
Extension pointsโ
๐ Properties in EventExport extension pointโ
The extension point EventExport now has two additional properties available for use in its script:
- Order.SoldToOrganizationUnitID
- Order.Type
By using these properties you can indicate to export the event or not based on if an order was shipped from store.
Example script
extend EventExport
set export to false
if Order.SoldToOrganizationUnit.Type = 'Shop'
then set export to true
end
output export
๐ Properties to differentiate orders in extension pointsโ
We have introduced two new properties to specific extension points to help differentiate between the two:
- Order.SoldFromOrganizationUnit.IsShop
- Order.SoldFromOrganizationUnit.IsWebShop
By using these properties, you can indicate whether it is a store order or a webshop order.
These properties are autocompleted in scripts extending types ReturnableStatus, OrdersMonitor, OrganizationUnitCustomFieldEligibility, OrderCustomFieldEligibility, and StockNotification.
Example script
extend ReturnableStatus
if Order.SoldFromOrganizationUnit.IsWebShop then
// Condition
end
๐ ShowMessage in BarcodeResult extension pointโ
We've added an additional action to the possible results when parsing barcodes via the BarcodeResult extension point.
This action, called ShowMessage, will allow you to display a custom message upon scanning a specific barcode format.
For samples, please see Sample scripts.
โ Handling conflicting outputs in ReturnableStatus extension pointโ
The ReturnableStatus script now better handles conflicting results.
Detailed information
The ReturnableStatus script, which is used to indicate whether an order can be returned (read: refunded) with or without its products, theoretically allows you to configure both order lines which need the product to be returned and lines which do not need to be returned.
Since it's not possible to differentiate this between order lines in EVA (either all products are returned, or none), this means we have to override some of the outputs configured on order line.
EVA will do this according to the following logic:
- Both a return with and without products can always be created by employees, but it will be overwritten by EVA if ReturnWithoutProducts is set to a conflicting value;
- if one order line in the script has ReturnWithoutProducts: 1 (without products), while another has ReturnWithoutProducts: 2 (with products), EVA will override and the order will force products to be returned (regardless of which line is being refunded).
Repairsโ
๐ Repair task sub type: Pickupโ
We've added a new sub type for the Repair task: Pickup. This new type will only be created when the setting called UserTasks:EnablePickupRepairUserTasks
is specifically set to true.
For more information, see Pickup.
๐ Repair is ready: templatesโ
We've added two new templates for messaging your customer the repair is ready and will either be shipped or can be picked up. You can use RepairShipped and RepairReadyForPickup respectively.
The former is triggered whenever a shipping method is not pickup and its open amount is zero, while the latter is sent whenever a repair is ready and indicated to be picked up (see also the entry above).
Propertiesโ
๐ Foreign currency and auto confirmโ
A few payment parameters, namely ForeignCurrencyID, ForeignAmount, and AutoConfirm have been added to the PushSalesOrder service under the order Payments object.
๐ Color coding for custom statusesโ
We've done the back-end work for assigning a color to a custom order status by adding the Color property to CreateOrderCustomStatus
.
The available options will be: grey, green, yellow, blue, red and white. You will soon be able to specify these colors when creating or updating custom order statuses in Admin Suite.
๐ Currency on purchase order linesโ
A new property Currency has been added to the AddPurchaseOrderLines
service.
The addition has been made to accomodate scenarios where the currency of the organization unit receiving the purchase order is different from the sender i.e. resulting in proper cost calculations. The applied conversion rate will be based on the currency conversion rate specified in the OU if configured. Alternatively, the rate applied will be based on the real time rate pulled from Fixer.io.
๐ LayerID of the attached discountโ
The PrefigureDiscountResult, available on the response of both SearchProducts
(-> SearchProductsOptions
) and PrefigureDiscounts
, will now return the LayerID of the attached discount.
This will allow you to check at a glance if a discount's requirements were met, but when the discount wasn't applied because of another discount's application within the same layer.
โ Showing products affected by discountsโ
The property EligibleProductIDs in the response of the PrefigureDiscounts
call now shows the affected products.
โ TotalAmountInTax in invoicesโ
Invoices now use the TotalAmount from the invoice lines instead of the order lines.
This means the TotalAmountInTax now matches the UnitPriceInTax * QuantityInvoiced on (non-certified) invoices
Servicesโ
๐ List settlements serviceโ
A new service called ListPaymentTransactionSettlements has been added to list all settlement transactions.
๐ ListBlobsForStencilsโ
We've added a new service called ListBlobsForStencils
.
This will be used to replace ListBlobs
(which is slated for deprecation in C2.0.722 (2024-01-02)) and will filter on blobs with the category "template_media".
โ PushUsers_Asyncโ
The service PushUsers_Async
can now optionally accept any user entries which are correct, while displaying those entries resulting in errors. Set IgnoreErrors to true to make use of this.
โ Promotion visibility for partners/franchisersโ
We now ensure stores cannot see/interact with discounts from stores they don't have rights to. This is based on users' visibility groups and their edit rights on the OUs connected to the discount.
For more information, expand the following section.
Detailed changes to corresponding CRUD services
- Users can only see discounts they have rights to according to their visibility group;
- Users can only edit discounts if they have edit rights on all the OUs that are part of the set that is connected to the discount;
- Layers is free for all however: they aren't set-bound, so if you have privileges, then you can go wild.
The discount itself doesn't (and will never) care about VG's; if your OU is within the set that is connected to the discount, it will be included in the calculation and applied when possible.
This is all achieved by adding visibility checks to the discount management services (create
, update
, list
/getByID
, archive
, duplicate
) based on the OrganizationUnitSet on the discount.
โ Fallback destination for certain templatesโ
Even when you have no AsyncRequestCompleted templates configured on your environment, EVA will now send you the necessary (standard) email messages regardless. These are emails for Stock replenishment downloads for example.
โ Handling deleted users with async processingโ
We now impersonate deleted users in edge cases where async processing would fail due to a user having been deleted in the meantime.
Settingsโ
๐ Asynchronous calls to RT server in Italyโ
In Italy, the option to perform asynchronous calls to the RT server during the checkout process is now available by means of a setting called UseAsyncSigning
. More on this here
This is an experimental setting that should only be used in cases where the RT servers are hosted outside the physical stores in a server farm, and upon New Black's advisory. If not handled correctly, there are risks of being not compliant.
โ Logic for preselecting OU for returnsโ
We've altered the logic for prefilling the return OU field in Admin Suite: EVA can now optionally prefill the field with the OU the employee is currently logged into.
Detailed information
The return order's Return on original OU checkbox can be preconfigured for its users based on the following App setting: App:Returns:PrefilledOrganizationUnit
.
Possible values:
- true - the checkbox will be preselected (to return on the original OU);
- false - the checkbox will be unselected;
- current - it will be unselected with the dropdown prefilled with the OU you are currently signed into.
Additionally, the filtering of the list of available return OUs will now depend on the RequireLoginFunctionality parameter. When it is set to true, the property StockOrganizationUnits will be filtered based on the user's login rights. When set to false, it remains unfiltered. If your currently logged-in OU is on that list, it can be pre-filled (based on the App setting).
โ Pincode synchronizationโ
We've improved the way the setting LoginWithIdentificationPin:Method
handles your chosen PIN method. This will solve an issue where the pincode would be forgotten when restarting the Suite Apps.
Detailed information
Now, when the LoginWithIdentificationPin:Method is set to 3 (IP-method + Secure token), we will first attempt to match an OU based on the IP address.
If no match is found, we will then try matching using an app token. This ensures that when you log in again, the pincode is retained between apps.
Fixesโ
- The recent changes to prettify (return) order export responses from Arvato needed a fix to work properly.
CreateZonedCycleCounts
would not return a result inCreated
orUpdated
whenever this was called through the async-message process.- Fix broken
ListUserRequirements
query with UserType filter. - Properly allow for deleting an unused role set.
- Filtering stations by DeviceType should only show stations with a non-deleted device of that type.
- Creating a Cash expense will no longer lead to the event exports sending out an event with ID 0.
- We fixed an issue where
AvailableShippingMethods
would sometimes respond that a customer would have to pay a shipping cost, while they shouldn't. - We fixed an issue where employees did not receive the assigned functionalities when they logged in at stores within Visibility Groups through SSO.
PrintFullStockCountLabels
will no longer return "Unable to find a device".this was due to
ListStationsForOrganizationUnit
returning stations without a thermal printerListPriceListOrganizationUnits
will now properly return the OUs for the price list.
Deprecationsโ
โก Removed from typingsโ
These deprecations and requirements are halfway to coming into effect. With these deprecations, the following services and/or fields are no longer be exposed by our typings. Failing to enter the mentioned required fields after the specified core release, will mean the services will no longer work.
Deprecatedโ
Mediumโ
- Mediumย ID is deprecated and will be removed in 2.0.721: Replaced by
InvoiceExportIDs
so that multiple invoice exports can be retried at once..- RetryInvoiceExport.ID
Requiredโ
Mediumโ
- Mediumย Field InvoiceExportIDs is required and will be enforced as such in 2.0.721.
- RetryInvoiceExport.InvoiceExportIDs
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.