Skip to main content
Arrow Backward IconBack to Overview

Core 2.0.760

October 22, 2024

Released on all test and acceptance environments on October 22, 2024

Will be released to production in EUW and ASE on October 28, 2024*

Will be released to production in CUS on October 29, 2024*


release notes image

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.

  1. 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.
  2. 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 typing TransferredOrder..

๐Ÿ†• 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.

Sample
{
"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
}

๐Ÿ†• 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.

Results sample
{
"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

Sample
    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
Impact descriptions

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.