Breakingโ
No breaking changes.
Complianceโ
๐ "To Be Delivered" Label on Invoicesโ
The "To Be Delivered" label has been added to certified stencils PDF invoices for endless aisle orders. This label, translated for each applicable country, appears below each product (orderline) that is scheduled for an endless aisle delivery.
Applicable Countries
- ๐ง๐ญ Bahrain
- ๐ฉ๐ฐ Denmark
- ๐ญ๐ฐ Hong Kong
- ๐ฎ๐ช Ireland
- ๐ฏ๐ด Jordan
- ๐ฒ๐ด Macao
- ๐ณ๐ฑ Netherlands
- ๐ณ๐ฟ New Zealand
- ๐ด๐ฒ Oman
- ๐ฟ๐ฆ South Africa
- ๐จ๐ญ Switzerland
- ๐ฆ๐ช United Arab Emirates
- ๐ฌ๐ง United Kingdom
๐จ๐ฆ Canada
For the purpose of working with Vertex in Canada, a new object is now available on the ThermalReceipt and Invoice templates: TaxDetails.
"TaxDetails": [
{
"OrderLineID": "int",
"Rate": "decimal",
"Amount": "decimal",
"Name": "string",
"Type": "string"
}
๐ฌ๐ง United Kingdom
โ Change in VAT validationโ
The ValidateVatNumber
service now makes use of a regex and modulus-97 algorithm for its VAT validation.
There are two possible outcomes to the service:
- 1 when the VAT number does match
- -1 when it does not match
๐ธ๐ช Sweden
โ Infrasec exclusionsโ
Invoiced sales in Sweden will now be excluded from being sent to Infrasec under specific conditions.
B2B Orders under conditions:
- Excluded if they include a company name, VAT number, and billing address, and are below a certain threshold.
- Endless Aisle orders from B2B clients are also excluded.
E-commerce Orders
โ Document numbering logicโ
Additionally we updated the document numbering logic.
- Receipt & Simplified Invoices: Number 01.
- Invoices: Number 02.
โ Duplicate Receipts for Returns (Yes or No)โ
You can now control whether a duplicate receipt of the original sales transaction is printed alongside the return receipt using a setting. For more details on how this works, see Duplicate Receipt Printing for Return Orders.
LiveGuardโ
โ LiveGuard images - Action may be requiredโ
The LiveGuard engine on the Watchtower will now directly fetch the product images from the CDN if configured.
As a result the CDN url must be reachable from the Watchtower. Please add it to the firewall rules if applicable.
Propertiesโ
๐ TransferredOrder objectโ
We are adding a TransferredOrder object to EVA for marking transfer orders.
This object allows you to use the same properties as for regular orders and can be used to streamline your automation of transfer orders in GR/IR suspense accounts in Cookbook 1.0 and 2.0 recipes.
For an overview of which properties these are, simply press
ctrl-space
while in your Cookbook editor after typingTransferredOrder.
.
๐ Working on pre-ordersโ
The following change is introduced as part of a bigger development - this feature is not ready for use
To facilitate our work on pre-order functionality, we are adding three new properties to enable product scheduling and visibility:
- AnnouncementDate: When product details become available.
- PreSaleDate: When a product is available for pre-order.
- ShipmentDate: When the product is ready for collection or delivery.
Details
Indexing and Searchability
These dates are indexed for fast retrieval and included in the responses of:
SearchProducts
AddProductToOrder
GetProductDetail
These are exposed in the following properties:
assortment_announcement_date
assortment_presale_date
assortment_shipment_date
Data Input
Dates can be set via:
ImportProducts
AssortmentProduct
CRUD services.
๐ IsUsed in discount servicesโ
The following change is introduced as part of a bigger development - this feature is not ready for use
The following services now include the new IsUsed property:
GetLayerGroupedDiscountsByQuery
GetDiscountByID
SearchDiscountsByQueryResponse
This will allow the front end to save a discount even when it's already used via a (to be created) Save as new action.
โ TimeZone in CreateCustomerโ
In order to make the use of the TimeZone property more consistent throughout EVA, the service CreateCustomer
now also accepts it.
Servicesโ
๐ PushCompanyโ
You can now backfill B2B customer data using the new PushCompany
service, which allows for both creating and updating company records.
Additionally we are adding an optional CompanyID property to the PushUser
service to allow for associating users and companies.
Details
The newly introduced asynchronous PushCompany
service enables you to efficiently manage B2B customer data by allowing for both the creation and updating of company records. This service supports partial updates, meaning you can update only specific fields without needing to resend the entire dataset.
Considerations
- Asynchronous Processing:
PushCompany
operates asynchronously, allowing operations to be processed in the background. - Partial Updates: You can update only the fields that have changed, rather than resubmitting the entire company profile. This is particularly useful for maintaining up-to-date records with minimal data transfer.
- Please ensure that the BackendID is unique for each company creation. If the BackendID already exists, it will overwrite the existing company with the included properties.
{
"BackendID": "C-309521",
"Name": "PushCompany Async Update",
"RegistrationNumber": "12345678901234",
"RegistrationCity": "Utrecht",
"RegistrationCountryID": "NL",
"RegistrationCountrySubdivisionID": "NL-UT",
"VatNumber": "VAT1234567819",
"FiscalID": "FISC123434256789",
"EstablishedDate": "2023-06-06",
"VisitorsAddress": {
"CountryID": "NL",
"City": "Utrecht",
"ZipCode": "103GM",
"Address1": "1st street",
"HouseNumber": 5
},
"InvoiceAddress": {
"CountryID": "NL",
"City": "Utrecht",
"ZipCode": "103GM",
"Address1": "1st street",
"HouseNumber": 5
},
"InvoiceEmailAddress": "[email protected]",
"ContactEmailAddress": "[email protected]",
"ContactPhoneNumber": "0635826694",
"AccountHolerName": "Holder Account",
"IBAN": "234234325234234234",
"BIC": "HBUKGB4B",
"LogoID": "507f6278-eb0e-49f2-8397-8706388d1695",
"WasteDisposalNumber": "123123412412411",
"TaxOfficeNumber": "123123412412412",
"EntityType": "some-legal-form",
"SocialCapital": 123123,
"IndustryCode": "some-industry-code"
}
User association
A new optional CompanyID property has been added to the PushUser
service. This allows users to be associated with a company, making it easier to manage user-company relationships.
๐ PushCompaniesโ
Along with the above new service, we are also introducing its big brother: PushCompanies
, to allow for pushing multiple companies at once.
Details
PushCompanies
is an async service with a limit of 1000 per request. It will return an indication of failed and successfully pushed companies.
{
Companies: [ //Basically the same structure as the single-push version
{
"BackendID": "C-309521",
"Name": "PushCompany Async Update",
"RegistrationNumber": "12345678901234",
"RegistrationCity": "Utrecht",
"RegistrationCountryID": "NL",
"RegistrationCountrySubdivisionID": "NL-UT",
"VatNumber": "VAT1234567819",
"FiscalID": "FISC123434256789",
"EstablishedDate": "2023-06-06",
"VisitorsAddress": {
"CountryID": "NL",
"City": "Utrecht",
"ZipCode": "103GM",
"Address1": "1st street",
"HouseNumber": 5
},
"InvoiceAddress": {
"CountryID": "NL",
"City": "Utrecht",
"ZipCode": "103GM",
"Address1": "1st street",
"HouseNumber": 5
},
"InvoiceEmailAddress": "[email protected]",
"ContactEmailAddress": "[email protected]",
"ContactPhoneNumber": "0635826694",
"AccountHolerName": "Holder Account",
"IBAN": "234234325234234234",
"BIC": "HBUKGB4B",
"LogoID": "507f6278-eb0e-49f2-8397-8706388d1695",
"WasteDisposalNumber": "123123412412411",
"TaxOfficeNumber": "123123412412412",
"EntityType": "some-legal-form",
"SocialCapital": 123123,
"IndustryCode": "some-industry-code"
}
],
DisableEventExports: true, // optional
}
{
SuccessfullyAdjustedCompanies: [
{
ID: 11
},
{
ID: 12
},
// ...
],
FailedToAdjustCompanies: [
{
BackendID: "company-backend-id",
ErrorIdentifier: "CompanyErrors:BackendIDAlreadyInUse"
},
// ...
]
}
๐ GetOrderโ
We are adding two new properties to GetOrder
which allow EVA to ascertain whether an order is ready for shipping, and in particular when it comes to order lines of type CarryOut:
- OpenAmountForShipmentOfCarryOut
- OpenAmountForShipment
๐ RebalanceLoyaltyPointsForUsersโ
We are adding a new service to EVA for the purpose of rebalancing the loyalty points for multiple user simultaneously: RebalanceLoyaltyPointsForUsers
Details
This service works in an async manner to acommodate large pushes.
{
"LoyaltyProgramID": 99,
"SuccessfullyAdjustedUsers": [
{
"UserID": 507,
"NewLoyaltyPointBalance": 300
}
],
"FailedToAdjustUsers": [
{
"UserID": 2507,
"KeepPendingPoints": true,
"AdjustmentType": 0,
"Points": 100,
"ErrorIdentifier": "Users:DoesNotExist"
}
],
"Metadata": {
"ExternalIDs": {
"LoyaltyProgram": {
"QA-LOYALTY-6039285023": "99"
},
"User": {
"5000000025": "507"
}
},
"IsAsyncResultAvailable": true
}
}
โ UpdateOrganizationUnitโ
When services touch specific organization units, EVA will now update only those OUs, instead of reloading the entire OU cache. This should speed up the services such as UpdateOrganizationUnit
.
Settingsโ
โ ShippingMethods:UseStrictInterbranchFilteringโ
The new way of restricting what shipping methods will be displayed for what kind of order, as announced in Drop 77 can now be explicitly enabled by setting ShippingMethods:UseStrictInterbranchFiltering
to true.
In practice this means when enabled, an Interbranch type order for example will only have shipping methods available marked with the Delivery type Interbranch.
Other topicsโ
๐ More properties in VertexCalculationRequestโ
To accommodate tax exempt (industrial account) transactions, the VertexCalculationRequest extension point now includes a few new properties.
Details
The changes include the following properties:
- LoyaltyProgram.GroupBackendID
- Order.LoyaltyProgram.GroupName
- Order.LoyaltyProgram.GroupTaxExemptionCode
if Order.HasReturnLines and Order.HasLoyaltyProgram then
if ol.IsPartOfLoyaltyProgram then
if Order.LoyaltyProgram.GroupTaxExemptionCode has value then
set output.LineItem[i].CustomerClassCode to (from TaxExemptionReasons where Code = Order.LoyaltyProgram.GroupTaxExemptionCode select Reason)
end
end
end
โ Case-insensitive AppSettingsโ
The names of AppSettings are now case-insensitive. Additionally we removed some unused AppSettings related to the LiveGuard sync.
Fixesโ
- Fixed an issue where processing the events of a Financial period more often triggered multiple Data lake exports, which resulted in duplicate files in the Financial period blob overview.
ListUserBoughtProducts
now includes the CustomProductID.- Fixed an issue where correction rounding done for a new calculation order was applied on a different line in a return order.
- Loyalty programs can now properly be detached even from cancelled lines.
- We are fixing an issue where duplicate events are published after multiple sequential customer updates in a short time.
- Fixed an issue where when a user re-subscribed to a subscription that they had been subscribed to before, we wouldnโt send a SubscriptionChangedEvent.
- BackendIDs for a deleted loyalty program can now be reused.
- Fixed an issue with partial shipping combined with non-stock products.
note that non-stock products are different from service products
Deprecationsโ
โก Removed from typingsโ
These deprecations and settings 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.
Settingโ
Highestโ
- Highestย Vertex:UseMappingHack is deprecated and will be enforced to False from 2.0.792: This is aย temporaryย hack that will automatically stop working after 2.0.792.
Deprecatedโ
Highโ
- Highย Result.Page.Subject is deprecated and will be removed in 2.0.776: The Subject is now stored in Text.
- ListUserInteractionsResponse.Result.Page.Subject
- Highย Result.Page.Type is deprecated and will be removed in 2.0.776: Use InteractionType instead.
- ListUserInteractionsResponse.Result.Page.Type
- Highย Results.User is deprecated and will be removed in 2.0.776: Use UserID instead.
- ListScriptHistoryResponse.Results.User
- ListScriptsResponse.Results.User
- Highย Text is deprecated and will be removed in 2.0.776: This field is not used and will be deprecated..
- ResendUserInteractionCommunication.Text
- Highย Type is deprecated and will be removed in 2.0.776: Use InteractionType instead.
- GetUserInteractionByIDResponse.Type
- Lowย InitialPageConfig.Filter.Type is deprecated and will be removed in 2.0.764: Useย
Types
ย instead.- ListInvoiceExports.InitialPageConfig.Filter.Type
๐ซ Effectiveโ
These deprecations are now effective. As of now, these services and/or fields are no longer available in EVA and can no longer be used.
Deprecatedโ
Highโ
- Highย EVA.Core.Services.Invoices.GetInvoiceExportByID is deprecated since 2.0.760: Use GetInvoiceExport instead.
- GetInvoiceExportByID
For more details on the impact categories, please see When are changes communicated?.
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.