Front-end
Say we have the following order:
...
FE tech discovery can be found here
Mapping of how delivery fee is set (BE):
Backend discovery
priceOrder
intl-whitelabel-app → priceOrder
intl-whitelabel-graphql → priceOrder
intl-fullfilment-service → priceOrder
...
SNS: dev-plk-delivery-quote-outcome
...
BE Proposal
Enhance this lambda function (dev-plk-delivery-on-apply-quote) to not overwrite discount and service fees with zeroes. It should keep the value from launchdarkly.
Configure launchdarkly to fit business needs enabling FE to show fees and discounts properly.
discount <> 0
serviceFee <> 0
fee <> 0
...
When discount, fee and service fee come to FE, intl-whitelabel-app can be changed to display FREE fees as according to UX (figma). The design screens should be adapted to consider them accordingly. In such case, depending on the launchdarkly config ( fee tier), we may have a different value for fee, service and discount. In principle, to minimize BE impacts, we may continue using a single field for discount. It’s up to the FE display "FREE” for the related use-cases. E.g:
discount == fee + servicefee
discount == fee, but discount < fee+servicefee
discount < fee
Other configurations may not be supported
...
Feature control
As usual the activation of this feature should be done using LD feature flag in both FE and BE. Later it can leverage a new sanity config (toogle) under guest checkout.
Enhancements
Since, in the future, we may have partners who calculates delivery fees not only based on LD, we can have an additional config for FREE delivery fee / FREE delivery service fee, where BE (intl-delivery-service) would override LD values - meaning that discount can be set with the same amount of the fee or fee + service fee.
...
Architecture
...
In partners service, create quote flow calls both in delivery : quote_create and quote_apply
Expand |
---|
title | Integration for store 1111 (zaragoza) - exists dev DELIVERY_QUOTE_CREATE and fallback(DELIVERY_QUOTE) |
---|
|
Code Block |
---|
{
"integrationId": "a6e48415-ff02-44e9-bba3-ae9918e0cac1",
"partnerId": "2acdd610-fad8-4acc-a030-eee340041a8c",
"secret": "$3cr3t",
"stores": [
{
"country": "ES",
"storeId": "005484"
},
{
"country": "ES",
"storeId": "1111"
},
{
"country": "ES",
"storeId": "13769"
},
{
"country": "ES",
"storeId": "2222"
},
{
"country": "ES",
"storeId": "60000"
}
],
"webhooks": [
{
"type": "DELIVERY_CREATE",
"url": "https://euw3-dev-plk-partners-delivery.rbictg.com/api/v1/ES/PLK/orders"
},
{
"type": "DELIVERY_QUOTE_APPLY",
"url": "https://euw3-dev-plk-partners-delivery.rbictg.com/api/v1/ES/PLK/quotes/apply"
},
{
"type": "DELIVERY_QUOTE_CREATE",
"url": "https://euw3-dev-plk-partners-delivery.rbictg.com/api/v1/ES/PLK/quotes"
},
{
"type": "MENU_PRICES_AVAILABILITY_UPDATE",
"url": "https://euw3-dev-plk-mock-partners-integrations.rbictg.com/menu/menu/version?mock_secret=$3cr3t"
},
{
"type": "ORDER_COMMIT",
"url": "https://euw3-dev-plk-mock-partners-integrations.rbictg.com/orders/commit?mock_secret=$3cr3t"
},
{
"type": "ORDER_FIRE",
"url": "https://euw3-dev-plk-mock-partners-integrations.rbictg.com/orders/fire?mock_secret=$3cr3t"
},
{
"type": "ORDER_PRICE",
"url": "https://euw3-dev-plk-mock-partners-integrations.rbictg.com/orders/price?mock_secret=$3cr3t"
},
{
"type": "STORE_SUPPORT_TICKET_EVENT",
"url": "https://euw3-dev-plk-partners-delivery.rbictg.com/api/v1/ES/PLK/complaints"
}
]
} |
|
Expand |
---|
title | Integration for store 3385 (fuenlenbrada) - exists mocked DELIVERY_QUOTE - returning hard coded fee value |
---|
|
Code Block |
---|
{
"integrationId": "e5ef1f71-caa0-4ba8-888f-4d937b64f50f",
"partnerId": "7425a4c0-f5bb-4f10-9bf0-6918b319525a",
"secret": "4b26e43f0d7c7a51fbc6581d33549921",
"stores": [
{
"country": "ES",
"storeId": "3385"
}
],
"webhooks": [
{
"type": "DELIVERY_CREATE",
"url": "https://euw3-dev-plk-mock-partners-integrations.rbictg.com/delivery/create?mock_secret=4b26e43f0d7c7a51fbc6581d33549921"
},
{
"type": "DELIVERY_EVENT",
"url": "https://euw3-dev-plk-mock-partners-integrations.rbictg.com/delivery/events?mock_secret=4b26e43f0d7c7a51fbc6581d33549921"
},
{
"type": "DELIVERY_QUOTE",
"url": "https://euw3-dev-plk-mock-partners-integrations.rbictg.com/delivery/quote?mock_secret=4b26e43f0d7c7a51fbc6581d33549921"
},
{
"type": "GENERAL_SUPPORT_TICKET_EVENT",
"url": "https://euw3-dev-plk-mock-partners-integrations.rbictg.com/tickets/events?mock_secret=4b26e43f0d7c7a51fbc6581d33549921"
},
{
"type": "MENU_EVENT",
"url": "https://euw3-dev-plk-mock-partners-integrations.rbictg.com/menu/events?mock_secret=4b26e43f0d7c7a51fbc6581d33549921"
},
{
"type": "MENU_PRICES_AVAILABILITY_UPDATE",
"url": "https://euw3-dev-plk-mock-partners-integrations.rbictg.com/menu/updated?mock_secret=4b26e43f0d7c7a51fbc6581d33549921"
},
{
"type": "MENU_UPDATED",
"url": "https://euw3-dev-plk-mock-partners-integrations.rbictg.com/menu/updated?mock_secret=4b26e43f0d7c7a51fbc6581d33549921"
},
{
"type": "ORDER_COMMIT",
"url": "https://euw3-dev-plk-mock-partners-integrations.rbictg.com/orders/commit?mock_secret=4b26e43f0d7c7a51fbc6581d33549921"
},
{
"type": "ORDER_EVENT",
"url": "https://euw3-dev-plk-mock-partners-integrations.rbictg.com/orders/events?mock_secret=4b26e43f0d7c7a51fbc6581d33549921"
},
{
"type": "ORDER_FIRE",
"url": "https://euw3-dev-plk-mock-partners-integrations.rbictg.com/orders/fire?mock_secret=4b26e43f0d7c7a51fbc6581d33549921"
},
{
"type": "ORDER_PRICE",
"url": "https://euw3-dev-plk-mock-partners-integrations.rbictg.com/orders/price?mock_secret=4b26e43f0d7c7a51fbc6581d33549921"
},
{
"type": "STORE_HEARTBEAT",
"url": "https://euw3-dev-plk-mock-partners-integrations.rbictg.com/stores/status?mock_secret=4b26e43f0d7c7a51fbc6581d33549921"
},
{
"type": "STORE_SUPPORT_TICKET_EVENT",
"url": "https://euw3-dev-plk-mock-partners-integrations.rbictg.com/tickets/events?mock_secret=4b26e43f0d7c7a51fbc6581d33549921"
},
{
"type": "TICKET_EVENT",
"url": "https://euw3-dev-plk-mock-partners-integrations.rbictg.com/tickets/events?mock_secret=4b26e43f0d7c7a51fbc6581d33549921"
}
]
} |
|
...
Possible existing bugs
During this discovery, strange behaviors were detected. They are detailed here
...