refund settlement判断修正
This commit is contained in:
parent
52e95b487b
commit
8ac886cb15
|
|
@ -90,14 +90,27 @@ async function startRefunding(context, data) {
|
|||
assert(order);
|
||||
// 对settlePlan检查
|
||||
// 未结算的settlePlan的金额总和 = order.paid - order.refunded - order.settled - refunded.price
|
||||
const { settlePlan$order: settlePlans, paid, refunded, settled } = order;
|
||||
const { settlePlan$order: settlePlans, paid, refunded, settled, id: orderId } = order;
|
||||
let settlePlanAmount = 0;
|
||||
settlePlans.forEach((settlePlan) => settlePlanAmount += settlePlan.price);
|
||||
const allowPlanPrice = paid - refunded - settled - data.price;
|
||||
const allowPlanPrice = Math.max((paid - refunded - settled - data.price), 0);
|
||||
if (settlePlanAmount > allowPlanPrice) {
|
||||
throw new settlePlanExceed(settlePlanAmount - allowPlanPrice);
|
||||
}
|
||||
const settlements = settlePlans?.map((plan) => plan.settlement$plan).flat();
|
||||
const settledSettlements = await context.select('settlement', {
|
||||
data: {
|
||||
id: 1,
|
||||
accountId: 1,
|
||||
price: 1,
|
||||
iState: 1,
|
||||
},
|
||||
filter: {
|
||||
iState: 'settled',
|
||||
plan: {
|
||||
orderId,
|
||||
}
|
||||
}
|
||||
}, { forUpdate: true });
|
||||
const { accountOper$entity: opers, } = data;
|
||||
// 对opers检查
|
||||
if (order.settled === (order.paid - order.refunded)) {
|
||||
|
|
@ -111,7 +124,7 @@ async function startRefunding(context, data) {
|
|||
const { type, totalPlus, availPlus, accountId } = data;
|
||||
assert(type === 'refund');
|
||||
assert(totalPlus === availPlus);
|
||||
const settlement = settlements?.find((ele) => ele?.accountId === accountId);
|
||||
const settlement = settledSettlements?.find((ele) => ele?.accountId === accountId);
|
||||
assert(!!settlement, '请从订单分账的相关账户中选择订单退款的account来源');
|
||||
amount += -totalPlus;
|
||||
});
|
||||
|
|
@ -148,7 +161,7 @@ async function startRefunding(context, data) {
|
|||
const { type, totalPlus, availPlus, accountId } = data;
|
||||
assert(type === 'refund');
|
||||
assert(totalPlus === availPlus);
|
||||
const settlement = settlements?.find((ele) => ele?.accountId === accountId);
|
||||
const settlement = settledSettlements?.find((ele) => ele?.accountId === accountId);
|
||||
assert(!!settlement, '请从订单分账的相关账户中选择订单退款的account来源');
|
||||
opersPrice += -totalPlus;
|
||||
});
|
||||
|
|
|
|||
|
|
@ -93,14 +93,27 @@ async function startRefunding(context, data) {
|
|||
(0, assert_1.default)(order);
|
||||
// 对settlePlan检查
|
||||
// 未结算的settlePlan的金额总和 = order.paid - order.refunded - order.settled - refunded.price
|
||||
const { settlePlan$order: settlePlans, paid, refunded, settled } = order;
|
||||
const { settlePlan$order: settlePlans, paid, refunded, settled, id: orderId } = order;
|
||||
let settlePlanAmount = 0;
|
||||
settlePlans.forEach((settlePlan) => settlePlanAmount += settlePlan.price);
|
||||
const allowPlanPrice = paid - refunded - settled - data.price;
|
||||
const allowPlanPrice = Math.max((paid - refunded - settled - data.price), 0);
|
||||
if (settlePlanAmount > allowPlanPrice) {
|
||||
throw new Exception_1.settlePlanExceed(settlePlanAmount - allowPlanPrice);
|
||||
}
|
||||
const settlements = settlePlans?.map((plan) => plan.settlement$plan).flat();
|
||||
const settledSettlements = await context.select('settlement', {
|
||||
data: {
|
||||
id: 1,
|
||||
accountId: 1,
|
||||
price: 1,
|
||||
iState: 1,
|
||||
},
|
||||
filter: {
|
||||
iState: 'settled',
|
||||
plan: {
|
||||
orderId,
|
||||
}
|
||||
}
|
||||
}, { forUpdate: true });
|
||||
const { accountOper$entity: opers, } = data;
|
||||
// 对opers检查
|
||||
if (order.settled === (order.paid - order.refunded)) {
|
||||
|
|
@ -114,7 +127,7 @@ async function startRefunding(context, data) {
|
|||
const { type, totalPlus, availPlus, accountId } = data;
|
||||
(0, assert_1.default)(type === 'refund');
|
||||
(0, assert_1.default)(totalPlus === availPlus);
|
||||
const settlement = settlements?.find((ele) => ele?.accountId === accountId);
|
||||
const settlement = settledSettlements?.find((ele) => ele?.accountId === accountId);
|
||||
(0, assert_1.default)(!!settlement, '请从订单分账的相关账户中选择订单退款的account来源');
|
||||
amount += -totalPlus;
|
||||
});
|
||||
|
|
@ -151,7 +164,7 @@ async function startRefunding(context, data) {
|
|||
const { type, totalPlus, availPlus, accountId } = data;
|
||||
(0, assert_1.default)(type === 'refund');
|
||||
(0, assert_1.default)(totalPlus === availPlus);
|
||||
const settlement = settlements?.find((ele) => ele?.accountId === accountId);
|
||||
const settlement = settledSettlements?.find((ele) => ele?.accountId === accountId);
|
||||
(0, assert_1.default)(!!settlement, '请从订单分账的相关账户中选择订单退款的account来源');
|
||||
opersPrice += -totalPlus;
|
||||
});
|
||||
|
|
|
|||
|
|
@ -96,16 +96,29 @@ async function startRefunding(context: BRC, data: EntityDict['refund']['CreateOp
|
|||
assert(order);
|
||||
// 对settlePlan检查
|
||||
// 未结算的settlePlan的金额总和 = order.paid - order.refunded - order.settled - refunded.price
|
||||
const { settlePlan$order: settlePlans, paid, refunded, settled } = order;
|
||||
const { settlePlan$order: settlePlans, paid, refunded, settled, id: orderId } = order;
|
||||
let settlePlanAmount = 0;
|
||||
settlePlans!.forEach(
|
||||
(settlePlan) => settlePlanAmount += settlePlan.price
|
||||
);
|
||||
const allowPlanPrice = paid - refunded - settled - data.price!
|
||||
const allowPlanPrice = Math.max((paid - refunded - settled - data.price!), 0);
|
||||
if (settlePlanAmount > allowPlanPrice) {
|
||||
throw new settlePlanExceed(settlePlanAmount - allowPlanPrice);
|
||||
}
|
||||
const settlements = settlePlans?.map((plan) => plan.settlement$plan).flat();
|
||||
const settledSettlements = await context.select('settlement', {
|
||||
data: {
|
||||
id: 1,
|
||||
accountId: 1,
|
||||
price: 1,
|
||||
iState: 1,
|
||||
},
|
||||
filter: {
|
||||
iState: 'settled',
|
||||
plan: {
|
||||
orderId,
|
||||
}
|
||||
}
|
||||
}, { forUpdate: true });
|
||||
|
||||
const { accountOper$entity: opers, } = data;
|
||||
// 对opers检查
|
||||
|
|
@ -122,7 +135,7 @@ async function startRefunding(context: BRC, data: EntityDict['refund']['CreateOp
|
|||
assert(type === 'refund');
|
||||
assert(totalPlus === availPlus);
|
||||
|
||||
const settlement = settlements?.find((ele) => ele?.accountId === accountId);
|
||||
const settlement = settledSettlements?.find((ele) => ele?.accountId === accountId);
|
||||
assert(!!settlement, '请从订单分账的相关账户中选择订单退款的account来源');
|
||||
|
||||
amount += -totalPlus!;
|
||||
|
|
@ -162,7 +175,7 @@ async function startRefunding(context: BRC, data: EntityDict['refund']['CreateOp
|
|||
assert(type === 'refund');
|
||||
assert(totalPlus === availPlus);
|
||||
|
||||
const settlement = settlements?.find((ele) => ele?.accountId === accountId);
|
||||
const settlement = settledSettlements?.find((ele) => ele?.accountId === accountId);
|
||||
assert(!!settlement, '请从订单分账的相关账户中选择订单退款的account来源');
|
||||
|
||||
opersPrice += -totalPlus!;
|
||||
|
|
|
|||
Loading…
Reference in New Issue