feat(revenue): immediate commission credit with independent withdrawable pool
Aligns affiliate commission with the reference theme: commission is credited to a dedicated COMMISSION asset pool the moment an order is paid, removing the 7-day settlement freeze, the settlement cron, and the settlement_days setting. - Ledger: add AssetType::COMMISSION (isolated from the recharge balance wallet) - CommissionLedger: credit-on-record + opportunistic debt repayment; refunds claw back the full commission from the pool, carrying any shortfall as debt (aksrt_commission_debt) that future commission pays down first - Withdrawal: make asset-aware via a source discriminator (commission vs balance); each pool keeps independent daily limits, pending gate, and reject-refund. Balance withdrawal (recharge + creator income) is unchanged - Fix pay_rebate_self_s: honor self-commission at purchase time - Revenue card: show pool balance + 累计/已提现 (drop 待结算), debt when present - Schema 2.0.0 -> 2.1.0: add commission_debt, drop freeze columns
This commit is contained in:
@@ -135,7 +135,7 @@ test('core asset paths never use floating-point money helpers', () => {
|
||||
test('points orders bypass cash commissions and purchase dead paths stay removed', () => {
|
||||
const commission = fs.readFileSync(path.join(root, 'src', 'Payment', 'CommissionLedger.php'), 'utf8')
|
||||
const paidStart = commission.indexOf('public function record_paid_order')
|
||||
const paidEnd = commission.indexOf('public function settle_due', paidStart)
|
||||
const paidEnd = commission.indexOf('private function credit_commission', paidStart)
|
||||
const paidMethod = commission.slice(paidStart, paidEnd)
|
||||
const pointsGuard = paidMethod.indexOf('AssetType::POINTS->value')
|
||||
const affiliateGuard = paidMethod.indexOf('Settings::affiliate_enabled()')
|
||||
|
||||
Reference in New Issue
Block a user