34 lines
873 B
TypeScript
34 lines
873 B
TypeScript
import type { Shop } from "@/lib/types"
|
|
|
|
type ShopCommission = Pick<Shop, "commissionType" | "commissionValue">
|
|
|
|
export interface IncomeCalculation {
|
|
income: number
|
|
commissionLabel: string
|
|
}
|
|
|
|
function roundCurrency(amount: number) {
|
|
return Number(amount.toFixed(2))
|
|
}
|
|
|
|
export function calculateOrderIncome(totalPrice: number, shop?: ShopCommission): IncomeCalculation {
|
|
if (!shop) {
|
|
return {
|
|
income: roundCurrency(totalPrice),
|
|
commissionLabel: "独立接单无抽成",
|
|
}
|
|
}
|
|
|
|
if (shop.commissionType === "percentage") {
|
|
return {
|
|
income: roundCurrency(totalPrice * (1 - shop.commissionValue / 100)),
|
|
commissionLabel: `扣除${shop.commissionValue}%抽成`,
|
|
}
|
|
}
|
|
|
|
return {
|
|
income: roundCurrency(Math.max(0, totalPrice - shop.commissionValue)),
|
|
commissionLabel: `扣除¥${shop.commissionValue}固定抽成`,
|
|
}
|
|
}
|