From 4bbf0d23674856f2d9fd0a9d137a478bc90b4cdb Mon Sep 17 00:00:00 2001
From: Nicolas Gorga <62995075+NicolasGorga@users.noreply.github.com>
Date: Wed, 12 Nov 2025 11:11:47 -0300
Subject: [PATCH] fix(dashboard): use order version 1 for the initial node of
activity timeline (#13997)
* Add preprocess to version param to validate as number
* Add changeset
* Use the first version of the order as the starting node of activity to show correct total
* Add changeset
* Fetch first order version only if it's not the current version
* Remove conditionally rendered hook, use enable config
---
.changeset/social-donuts-pay.md | 5 ++++
.changeset/tiny-bottles-turn.md | 5 ++++
.../order-activity-section/order-timeline.tsx | 28 +++++++++++++------
.../medusa/src/api/admin/orders/validators.ts | 10 ++++++-
4 files changed, 38 insertions(+), 10 deletions(-)
create mode 100644 .changeset/social-donuts-pay.md
create mode 100644 .changeset/tiny-bottles-turn.md
diff --git a/.changeset/social-donuts-pay.md b/.changeset/social-donuts-pay.md
new file mode 100644
index 0000000000..c204e31503
--- /dev/null
+++ b/.changeset/social-donuts-pay.md
@@ -0,0 +1,5 @@
+---
+"@medusajs/dashboard": patch
+---
+
+fix(dashboard): use order version 1 for the initial node of activity timeline
diff --git a/.changeset/tiny-bottles-turn.md b/.changeset/tiny-bottles-turn.md
new file mode 100644
index 0000000000..a0e1ee0e56
--- /dev/null
+++ b/.changeset/tiny-bottles-turn.md
@@ -0,0 +1,5 @@
+---
+"@medusajs/medusa": patch
+---
+
+fix(medusa): preprocess `version` as number in AdminGetOrdersOrderParams validator
diff --git a/packages/admin/dashboard/src/routes/orders/order-detail/components/order-activity-section/order-timeline.tsx b/packages/admin/dashboard/src/routes/orders/order-detail/components/order-activity-section/order-timeline.tsx
index 652cb065b9..9e6a464966 100644
--- a/packages/admin/dashboard/src/routes/orders/order-detail/components/order-activity-section/order-timeline.tsx
+++ b/packages/admin/dashboard/src/routes/orders/order-detail/components/order-activity-section/order-timeline.tsx
@@ -18,6 +18,7 @@ import { By } from "../../../../../components/common/user-link"
import {
useCancelOrderTransfer,
useCustomer,
+ useOrder,
useOrderChanges,
useOrderLineItems,
} from "../../../../../hooks/api"
@@ -123,6 +124,11 @@ type Activity = {
const useActivityItems = (order: AdminOrder): Activity[] => {
const { t } = useTranslation()
+ const { order: initialOrder = order } = useOrder(order.id, {
+ version: 1,
+ fields: "created_at,total,currency_code",
+ }, { enabled: order.version !== 1})
+
const { order_changes: orderChanges = [] } = useOrderChanges(order.id, {
change_type: [
"edit",
@@ -520,19 +526,23 @@ const useActivityItems = (order: AdminOrder): Activity[] => {
return new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime()
})
- const createdAt = {
- title: t("orders.activity.events.placed.title"),
- timestamp: order.created_at,
- children: (
-
- {getStylizedAmount(order.total, order.currency_code)}
-
- ),
+ if (initialOrder.created_at) {
+ const createdAt = {
+ title: t("orders.activity.events.placed.title"),
+ timestamp: initialOrder.created_at,
+ children: (
+
+ {getStylizedAmount(initialOrder.total, initialOrder.currency_code)}
+
+ ),
+ }
+ sortedActivities.push(createdAt)
}
- return [...sortedActivities, createdAt]
+ return [...sortedActivities]
}, [
order,
+ initialOrder,
payments,
returns,
exchanges,
diff --git a/packages/medusa/src/api/admin/orders/validators.ts b/packages/medusa/src/api/admin/orders/validators.ts
index 9739469af6..e18674ff66 100644
--- a/packages/medusa/src/api/admin/orders/validators.ts
+++ b/packages/medusa/src/api/admin/orders/validators.ts
@@ -9,7 +9,15 @@ import {
export const AdminGetOrdersOrderParams = createSelectParams().merge(
z.object({
- version: z.number().optional(),
+ version: z.preprocess(
+ (val) => {
+ if (val && typeof val === "string") {
+ return parseInt(val)
+ }
+ return val
+ },
+ z.number().optional()
+ )
})
)