---
id: JNY-COM-FUL-004
title: Warehouse staff return goods to stock and complete the refund
feature: FEAT-COM-FUL-03
product_area: commerce
module: fulfillment
revision: 1
status: draft
product_intent: proposed
implementation_evidence: observed
supersedes: []
source_sha:
  services-commerce: c8b66a98e2490617aec38ba5c8165dd9bd0a8f9b
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
actor: ACT-COM-010
goal: >-
  Account for returned units, apply their dispositions and finish the return's
  financial work.
capabilities:
  - CAP-COM-FUL-014
  - CAP-COM-FUL-015
  - CAP-COM-FUL-007
screens: []
steps:
  - 'n': 1
    surface: requestCancellation (Orders module)
    action: Request cancellation of shirts that have already left.
    capability: CAP-COM-FUL-014
    expected: The shipped units require return rather than cancellation.
    provenance: test
    source: >-
      services-commerce:modules/shipping/tests/e2e/post-purchase-shipping.e2e.spec.js#refuses
      the cancellation of the shipped shirts: rejected, must_return with
      shipment_handed_off (B9)
  - 'n': 2
    surface: requestReturn (Orders module)
    action: Authorize return with a packed manual-carrier incoming shipment.
    capability: CAP-COM-FUL-015
    expected: Its two-unit parcel is addressed to the warehouse.
    provenance: test
    source: >-
      services-commerce:modules/shipping/tests/e2e/post-purchase-shipping.e2e.spec.js#authorizes
      the return with an RMA carrying a return_label shipment packed at the
      counter: the two shipped units in one parcel, to the warehouse, the label
      the clerk’s (B14)
  - 'n': 3
    surface: receiveReturn
    action: Record arrival of both authorized units.
    capability: CAP-COM-FUL-015
    expected: The return becomes received without adding stock.
    provenance: test
    source: >-
      services-commerce:modules/shipping/tests/e2e/post-purchase-shipping.e2e.spec.js#records
      the receipt of both units against the RMA (the retry under the key answers
      it again): the document received, nothing on the shelf yet
  - 'n': 4
    surface: inspectReturnReceipt
    action: Inspect the received line.
    capability: CAP-COM-FUL-015
    expected: Condition is retained and inspection states advance.
    provenance: test
    source: >-
      services-commerce:modules/shipping/tests/e2e/post-purchase-shipping.e2e.spec.js#inspects
      the line and moves the receipt to inspected and the return to inspecting
  - 'n': 5
    surface: dispositionReturnReceipt
    action: Restock one unit and scrap the other.
    capability: CAP-COM-FUL-015
    expected: One unit returns to the shelf and the receipt becomes dispositioned.
    provenance: test
    source: >-
      services-commerce:modules/shipping/tests/e2e/post-purchase-shipping.e2e.spec.js#dispositions
      one unit restocked and one scrapped in one transaction: the shelf up one,
      the receipt dispositioned, the document completed with the memo and the
      refund for the two (B15, B11)
  - 'n': 6
    surface: financial adjustment (Accounting commands)
    action: Execute the return's credit memo and refund.
    capability: CAP-COM-FUL-007
    expected: The document retains financial references and completes.
    provenance: test
    source: >-
      services-commerce:modules/shipping/tests/e2e/post-purchase-shipping.e2e.spec.js#dispositions
      one unit restocked and one scrapped in one transaction: the shelf up one,
      the receipt dispositioned, the document completed with the memo and the
      refund for the two (B15, B11)
alternates:
  - from_step: 2
    condition: The return is withdrawn before receipt.
    path: Cancel incoming shipment work and pull its parcel.
    outcome: The workflow records no received goods.
    provenance: test
    source: >-
      services-commerce:modules/shipping/tests/integration/services/returns/return-receiving.integration.spec.js#cancels
      the return label shipment (packed at the counter, no label bought yet) and
      pulls its parcel when the return is withdrawn
  - from_step: 5
    condition: A returned unit needs quarantine.
    path: Record its restricted stock treatment without restoring cost.
    outcome: The unit is unavailable for sale.
    provenance: test
    source: >-
      services-commerce:modules/shipping/tests/integration/services/returns/return-receiving.integration.spec.js#quarantines
      the damaged unit: return_restock then quarantine_in at the quarantine
      shelf, no cost restored, and the document completes with every unit back
      on the line
failures:
  - from_step: 6
    condition: The processor declines refund execution.
    path: Retain adjustment failure for operations review.
    outcome: Authorized retry resumes the refund step alone.
    provenance: test
    source: >-
      services-commerce:modules/fulfillment/tests/integration/services/adjustments/adjustment-worker.integration.spec.js#resumes
      from the failed step alone on the retry: only the refund is sent again,
      and completes
  - from_step: 3
    condition: Receipt quantity exceeds return authority.
    path: Reject receiving before creating the receipt.
    outcome: No excess arrival record is stored.
    provenance: test
    source: >-
      services-commerce:modules/shipping/tests/integration/services/returns/return-receiving.integration.spec.js#refuses
      more than the line has left authorized (receipt_exceeds_authorized),
      writing no receipt
rules_in_play:
  - BR-CAP-COM-FUL-014-05
  - BR-CAP-COM-FUL-015-01
  - BR-CAP-COM-FUL-015-03
  - BR-CAP-COM-FUL-015-05
  - BR-CAP-COM-FUL-015-08
  - BR-CAP-COM-FUL-007-02
assertions:
  - id: AS-JNY-COM-FUL-004-01
    statement: Arrival alone adds no stock; disposition supplies the stock treatment.
    provenance: test
    source: >-
      services-commerce:modules/shipping/tests/e2e/post-purchase-shipping.e2e.spec.js#records
      the receipt of both units against the RMA (the retry under the key answers
      it again): the document received, nothing on the shelf yet
  - id: AS-JNY-COM-FUL-004-02
    statement: Restocking restores the returned unit's original cost.
    provenance: test
    source: >-
      services-commerce:modules/shipping/tests/integration/services/returns/return-receiving.integration.spec.js#restocks
      the two units at the bin they shipped from: the return_restock movement
      naming the disposition, on hand up two, the two reliefs reversed at 1500
      with the restore_cogs fact of 3000
  - id: AS-JNY-COM-FUL-004-03
    statement: Completed return work retains its credit memo and refund references.
    provenance: test
    source: >-
      services-commerce:modules/shipping/tests/e2e/post-purchase-shipping.e2e.spec.js#dispositions
      one unit restocked and one scrapped in one transaction: the shelf up one,
      the receipt dispositioned, the document completed with the memo and the
      refund for the two (B15, B11)
e2e_policy: required
e2e_reason: >-
  Service end-to-end evidence connects return documents, physical handling and
  financial execution; the absence of receiving screens leaves browser proof
  open.
evidence:
  - >-
    services-commerce at c8b66a98e2490617aec38ba5c8165dd9bd0a8f9b: the
    end-to-end and integration suites named in the step and assertion sources.
  - >-
    react-console at baf6dae382d6f41dce976c7f848667ccc37e076f: the console pages
    and adapters named in the steps.
---

# Warehouse staff return goods to stock and complete the refund

## Story

Warehouse staff receive an authorized return and inspect its condition before deciding what belongs on the shelf. They restock the usable unit and record scrap for the other. The return then completes its financial work, with any failed refund becoming a separate recovery task.
