feat(dashboard,medusa): Draft order detail (#6703)
**What** - Adds draft order details page - Adds Shipping and Billing address forms to both draft order and order pages - Adds Email form to both draft order and order pages - Adds transfer ownership form to draft order, order and customer pages - Update Combobox component allowing it to work with async data (`useInfiniteQuery`) **@medusajs/medusa** - Include country as a default relation of draft order addresses
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import { FulfillmentStatus, PaymentStatus } from "@medusajs/medusa"
|
||||
import { TFunction } from "i18next"
|
||||
|
||||
export const getOrderPaymentStatus = (
|
||||
t: TFunction<"translation">,
|
||||
status: PaymentStatus
|
||||
) => {
|
||||
const [label, color] = {
|
||||
not_paid: [t("orders.payment.status.notPaid"), "red"],
|
||||
awaiting: [t("orders.payment.status.awaiting"), "orange"],
|
||||
captured: [t("orders.payment.status.captured"), "green"],
|
||||
refunded: [t("orders.payment.status.refunded"), "green"],
|
||||
partially_refunded: [
|
||||
t("orders.payment.status.partiallyRefunded"),
|
||||
"orange",
|
||||
],
|
||||
canceled: [t("orders.payment.status.canceled"), "red"],
|
||||
requires_action: [t("orders.payment.status.requiresAction"), "orange"],
|
||||
}[status] as [string, "red" | "orange" | "green"]
|
||||
|
||||
return { label, color }
|
||||
}
|
||||
|
||||
export const getOrderFulfillmentStatus = (
|
||||
t: TFunction<"translation">,
|
||||
status: FulfillmentStatus
|
||||
) => {
|
||||
const [label, color] = {
|
||||
not_fulfilled: [t("orders.fulfillment.status.notFulfilled"), "red"],
|
||||
partially_fulfilled: [
|
||||
t("orders.fulfillment.status.partiallyFulfilled"),
|
||||
"orange",
|
||||
],
|
||||
fulfilled: [t("orders.fulfillment.status.fulfilled"), "green"],
|
||||
partially_shipped: [
|
||||
t("orders.fulfillment.status.partiallyShipped"),
|
||||
"orange",
|
||||
],
|
||||
shipped: [t("orders.fulfillment.status.shipped"), "green"],
|
||||
partially_returned: [
|
||||
t("orders.fulfillment.status.partiallyReturned"),
|
||||
"orange",
|
||||
],
|
||||
returned: [t("orders.fulfillment.status.returned"), "green"],
|
||||
canceled: [t("orders.fulfillment.status.canceled"), "red"],
|
||||
requires_action: [t("orders.fulfillment.status.requiresAction"), "orange"],
|
||||
}[status] as [string, "red" | "orange" | "green"]
|
||||
|
||||
return { label, color }
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
import i18n from "i18next"
|
||||
import { z } from "zod"
|
||||
|
||||
export const AddressSchema = z.object({
|
||||
first_name: z.string().min(1),
|
||||
last_name: z.string().min(1),
|
||||
company: z.string().optional(),
|
||||
address_1: z.string().min(1),
|
||||
address_2: z.string().optional(),
|
||||
city: z.string().min(1),
|
||||
postal_code: z.string().min(1),
|
||||
province: z.string().optional(),
|
||||
country_code: z.string().min(1),
|
||||
phone: z.string().optional(),
|
||||
})
|
||||
|
||||
export const EmailSchema = z.object({
|
||||
email: z.string().email(),
|
||||
})
|
||||
|
||||
export const TransferOwnershipSchema = z
|
||||
.object({
|
||||
current_owner_id: z.string().min(1),
|
||||
new_owner_id: z
|
||||
.string()
|
||||
.min(1, i18n.t("transferOwnership.validation.required")),
|
||||
})
|
||||
.superRefine((data, ctx) => {
|
||||
if (data.current_owner_id === data.new_owner_id) {
|
||||
return ctx.addIssue({
|
||||
code: z.ZodIssueCode.custom,
|
||||
path: ["new_owner_id"],
|
||||
message: i18n.t("transferOwnership.validation.mustBeDifferent"),
|
||||
})
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user