Story 52.2. Partial Return System for Inventory Management

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.

image-20240215-123453.png

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.

image-20240215-123809.png

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.

image-20240215-123835.png

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”

Screenshot 2024-02-15 at 14.04.56.pngScreenshot 2024-02-15 at 14.08.23.pngScreenshot 2024-02-15 at 14.09.01.pngScreenshot 2024-02-15 at 14.09.35.png

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.

    • Respect current logic: The status “return requested” has been set beforehand: Sellers of bags that are not getting partially returned should still receive email “requested return no longer active”, after return period is over.

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 “Net Payment” 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”:

    • recalculate “Total_Bookkeeping” and “MwSt_Bookkeeping” based on order+ partial return “total”

image-20240215-124011.pngScreenshot 2024-02-15 at 18.41.21.pngScreenshot 2024-02-27 at 13.29.41.png

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

  • Refund #zzzzz gets created in WooC, not synced to Airtable

  • Airtable: Partial Return #yyyyy Status switches to “Refunded” automatically

  • eMail: Send out email to buyer about refund, only include bag that got partially returned

Screenshot 2024-02-15 at 14.37.19.pngimage-20240215-133848.png

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: Refund one bag

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,…

Comments

Leave a Reply