General Info
We currently don’t have a clear way to handle orders with multiple items when only some are returned. This task is about creating a system to correctly manage orders with partial returns.
Currently, if items are partially returned, they are manually removed from the order, making it hard to track the details of the return.
We want to inform only the relevant sellers about partial returns, not everyone involved in the whole order. If there’s a refund, the buyer’s email should only mention the specific product refunded.
Our accounting system should recognize the new total order value after a partial return. All transactions must be easy to trace.
Additionally, we want to keep a record of the date when a partial return happens.
A customer orders several bags or products but later wants to return only some items, not the whole order.
Here’s what SacLab’s sales team should do in the future, once a customer requests a return:
They update the order status to "return requested."
→ This informs all sellers in the order that some items might be returned automatically.
After getting the bag at SacLab HQ, the sales team checks and confirms the return. Then, the admin starts a "partial return" using the "Refund" button in the WooC order.

Admin selects the Bag that got returned (in this case “refund” actually means partially returned). Admin has the option to tick “Restock refunded items”. Admin has the option to set the total amount that gets refunded. Applied coupons are respected in the refunded Total.

For now: Admin only uses “refund € xxx manually”. He doesn’t use “refund € xxx via Paypal/Mollie” yet. However please respect in this task, that we might use this feature “refund € xxx via Paypal/Mollie) in the future.
Refund with individual #yyyyy gets created.

This Partial Return #yyyyy now needs to get synced to Airtable, linked to the existing Order. It must include all changed values/numbers, so we can keep our Bookkeeping precise.
Admin creates a “Refund” within WooC Order. Bags that get returned get Qty “1” by admin. Product Total gets adjusted if needed. Fees get adjusted if needed. Admin fills in “Reason for refund”.
User Story
As an admin on saclab
I want to return only some products inside the order
So that I can inform only specific sellers and track the history of partly returned products in the order
Flowcharts
Partial Return: Detailed Flowchart https://www.figma.com/file/TgwOtWVlp9L1MXdHlQfJxf/Inventory-Management-System—Flowchart?type=whiteboard&node-id=939%3A3572&t=m11UN5urFVx4CwqW-1
Partial Return: Order Flow https://www.figma.com/file/ZJFWFxtCthduYLVW8wJCZr/Partial-Return%3A-Order-flow?type=whiteboard&node-id=0%3A1&t=XdKUB4sHie2dZgEu-1
|
|
Acceptance criteria
|
|
|
01
|
Given: Woocommerce order
When: Open any order
Then: see new names for refund buttons and texts
Rename:
-
Button “Refund” to “Return”
-
Button “Refund € xxx manually” to “Return € xxx manually”
-
Text “Reason for refund” to “Reason for Return”
-
“Refund #yyyyy” “Partial Return #yyyyy”
|
    |
|
02
|
Step 1: Action in WooC by Salesteam
Given: Woocommerce order
When: clicks “Refund xxx manually”
Then:
In WooC:
-
Tag the existing order “partial return [yyyyy] on [date]”
-
“Restock refunded items”:ticked: Product is back to live, with tag "SYB – Returned + DATE”
-
SYB_reservation coupon
-
if the related bag to the coupon gets returned, it gets deducted
-
if the related bag to the coupon stays in the order, it doesn’t get deducted
eMails:
-
email to seller of refunded bag only: your bag has been returned, it’s back online
-
no email to seller of other bag(s) in the order.
Airtable:
-
Create Airtable partial return #yyyyy as an order record
-
Name: yyyyy + [Buyer Name] + Partial Return
-
status “Returned ( 0→1 )”
-
tag “partial return” in new field “tag”
-
linked to the product that got partially returned
-
linked to the order #xxxxx
-
New field “Date Returned” filled
-
New field “Comment” filled with “reason for return” from WooC
-
Fill field “Total” in Airtable partial return #yyyyy with refunded Total (e.g. -2848€) from refunded Products
-
Fill field “MwSt” in Airtable partial return #yyyyy with -MwSt Amount from refunded LCKs
-
Fill field “Discount” in Airtable partial return #yyyyy with -Coupon Amount from refunded coupons
-
Fill field “Fee” in Airtable partial return #yyyyy with -Fee Amount from refunded Fees
-
Update existing Airtable Order
-
New Field “Refunded” filled in order #xxxxx, vaule is synced from WooC
-
New Field filled in order #xxxxx, value is synced from WooC (see screenshot on the right)
-
New Field “tag”: set tag “Order: partially returned”
-
Update existing Airtable Product
-
Fill in “Return Date” of products that got partially returned
-
update the product as if it’s a normal return (setting back to “stock”,…)
-
to built by saclab internally: Bookkeeping view in “Orders”:
|
   |
|
03
|
Step 2: Partial Return gets refunded
The partial return needs to be refunded by saclab via mollie/paypal/banktransfer
Given: Woocommerce order
When: Order gets partially refunded via Mollie/Paypal by saclab
Then:
-
respective amount gets refunded manually via molly/paypal
-
-
-
eMail: Send out email to buyer about refund, only include bag that got partially returned
|
  |
|
04
|
Given: Woocommerce order
When: Order gets partially refunded by saclab via Bank Transfer
Then:
-
manual action: Airtable Order #yyyyy gets status “refunded” manually set by saclab
-
email: Send out email to buyer about refund, only include bags that got partially returned
|
|
|
05
|
Given: Two bags in order, two separate partial refunds get created in WooC, both synced to AirT and linked to initial Order.
When: Refund1 first bag AND refund2 second bag
Then:
-
respective amount gets refunded manually via molly/paypal
-
Refund #zzzz1 and/or #zzzz2 gets created in WooC, not synced to Airtable
-
Airtable: Partial Return #yyyy1 and/or #yyyy2 Status switches to “Refunded” automatically
-
eMail: Send out email to buyer about refund, only include bag1 and/or bag2 that got partially returned
|
|
|
06
|
Given: One bag in order
When:
Then:
-
Refund gets created in WooC, not synced to Airtable
-
existing logic: switch whole order to status “Returned 0 → 1”, set return Date in Airtable, send out email to sellers of whole order,…
|
|