feat(domain): add income calculation with commission support
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
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}固定抽成`,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user