Files
lotteryAdmin/src/i18n/locales/en/settlementCenter.json
kang ef8e763551
Some checks failed
lotteryadmin CI / build (push) Has been cancelled
feat(settlement): 优化回水分摊明细展示及分组逻辑
- 新增多语言支持,补充回水分摊相关字段翻译
- 优化回水分摊数据汇总逻辑,合并相同参与方的数据
- 增加分摊占比显示,提升明细信息直观性
- 实现按注单分组的回水明细展开与收起功能
- 使用表格展示汇总数据,提升界面可读性和美观度
- 调整样式和交互细节,增强用户体验
2026-07-02 14:57:55 +08:00

444 lines
17 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"title": "Settlement center",
"subtitle": "Period close, bill confirm, and payments",
"pageGuide": "Credit-line agent periods: site finance opens/closes; bound agents view own bills and record payments as payee only.",
"subtitleList": "Period list: open/close periods; summary columns included — use row actions for bills and bet ledger.",
"period": {
"title": "Period",
"statusCompleted": "Completed",
"pipelineShare": "{{count}} ledger entries",
"billTodo": "Pending {{p}} · Awaiting {{a}}",
"openTitle": "Open period",
"openBtn": "Open period",
"closeNeedLedger": "No ledger activity yet. Complete draw settlement first.",
"closeDialogTitle": "Close period",
"closeDialogDesc": "Summarize {{range}} and generate bills.",
"closeDialogShare": "{{count}} ledger entries",
"closeDialogUnsettled": "{{count}} tickets still unsettled",
"closeDialogIrreversible": "Cannot undo. Use adjustments or reversals to fix errors.",
"closeDialogConfirm": "Close period",
"closeDialogEmpty": "No share ledger this period; closing will not generate bills."
},
"periodDetail": {
"back": "Back to periods",
"notFound": "Period not found or site changed. Go back to the list."
},
"periodTable": {
"title": "Periods",
"statusFilter": "Status",
"range": "Period",
"ledgerCount": "Ledger",
"pending": "Pending",
"awaiting": "Awaiting",
"shareLedger": "Share ledger",
"gameWinLoss": "Win/loss total",
"platformWinLoss": "Platform win/loss",
"agentWinLoss": "Agent win/loss",
"basicRebate": "Rebate total",
"unsettledTickets": "Unsettled tickets",
"openReportHint": "Open period: share/win-loss from in-period ledger; bill count updates after close.",
"viewDetail": "View details",
"processBills": "Process bills",
"close": "Close",
"closeNow": "Close now",
"hasOpen": "Period {{range}} is open. Close it before opening a new one.",
"emptyOpenHint": "No periods yet. Click Open period in the toolbar.",
"emptyReadOnly": "No period records.",
"emptyFiltered": "No rows match the filter. Reset filters.",
"emptyFilteredOpen": "The open period is hidden by the filter. Choose All or Open.",
"readOnlyHint": "Bound agent accounts cannot open or close site periods."
},
"header": {
"subtitle": "Credit-line settlement",
"statusRunning": "Period open",
"statusIdle": "No open period",
"statusCompleted": "Period completed"
},
"subnav": {
"label": "Settlement center navigation"
},
"workbench": {
"viewPeriod": "Period",
"closePreset": "Close · {{label}}",
"closeNoData": "Close failed: no share ledger in period. Run credit game settlement first.",
"openPeriodPipeline": "Open {{range}} · {{share}} share entries"
},
"nav": {
"periods": "Periods",
"pendingWorkbench": "To do",
"allBills": "All bills",
"bills": "Bills",
"operations": "Payments & adjustments",
"aria": "Period views",
"ledger": "Account ledger",
"ledgerAudit": "Ledger audit",
"creditLedger": "Credit ledger",
"playerBills": "Player bills",
"agentBills": "Agent bills",
"pendingConfirm": "Pending confirm",
"awaitingPayment": "Awaiting payment",
"payments": "Payment log",
"adjustments": "Adjust / reverse",
"badDebt": "Bad debt",
"reports": "Period reports"
},
"operations": {
"hint": "Payment registration, bad-debt write-offs, and adjustments. Player credit movements are under Account ledger.",
"adjustmentsTitle": "Adjustments / reversals / bad debt",
"loadFailed": "Failed to load payment and adjustment records",
"operationType": "Operation type",
"filterAllTypes": "All types",
"typePayment": "Payment",
"keyword": "Keyword",
"keywordPh": "Method, reason, proof, payer/payee"
},
"filters": {
"period": "Period",
"statusAll": "All",
"allPeriods": "All periods",
"statusOpen": "Open",
"statusClosed": "Closed",
"statusCompleted": "Completed"
},
"overview": {
"pendingConfirm": "Pending confirm",
"awaitingPayment": "Awaiting payment",
"totalUnpaid": "Total unpaid",
"openPeriod": "Open period",
"creditLedger": "Credit ledger (in period)",
"shareLedger": "Share ledger (in period)",
"pipelineHint": "Bills are created after period close; counts below are in-period activity."
},
"ledger": {
"groupIntro": "In-period money movements: credit holds, bill payments, adjustments, and bad debt. Share bills after close are under Bills.",
"paymentsIntro": "Confirmed bill payments (payment_records). Register from bill detail; this page is the period-wide log.",
"adjustmentsIntro": "Bill adjustments and reversals (settlement_adjustments).",
"badDebtIntro": "Bad debt write-off entries linked to original bills."
},
"creditLedger": {
"periodIntro": "Credit-line bets in this period: bet hold and draw settlement (merged per ticket).",
"emptyPeriod": "No bet ledger entries in this period. Ensure credit players placed bets and draws were settled.",
"intro": "Ledger entries for the selected period.",
"columns": {
"txn": "Txn ID",
"player": "Player",
"reason": "Type",
"ref": "Reference",
"amount": "Amount",
"channel": "Channel",
"status": "Status",
"time": "Time"
},
"channelCredit": "Credit line",
"viewPlayer": "Player detail",
"entryKind": {
"adjustment": "Adjustment"
},
"status": {
"posted": "Posted"
},
"actions": {
"viewPlayer": "Player detail",
"viewBill": "Bill detail",
"confirm": "Confirm bill",
"confirmDesc": "After confirm, the bill moves to awaiting payment.",
"payment": "Record payment",
"adjustment": "Adjust",
"reversal": "Reverse",
"badDebt": "Bad debt"
},
"reason": {
"payment_record": "Bill payment",
"bet": "Bet hold",
"bet_hold": "Bet hold",
"game_settlement": "Draw settlement",
"bill_settlement": "Period payment",
"game_settlement_reversal": "Draw reversal",
"game_settlement_win": "Draw settlement credit",
"bet_hold_release": "Hold release",
"game_settlement_loss": "Draw settlement debit",
"settlement_payout": "Settlement payout",
"settlement_confirm": "Period confirm",
"adjustment": "Adjustment",
"reversal": "Reversal",
"bad_debt": "Bad debt",
"share_ledger": "Share ledger",
"freezeAmount": "Hold {{amount}}"
}
},
"columns": {
"period": "Period",
"type": "Type",
"owner": "Owner",
"counterparty": "Counterparty",
"gross": "Win/loss",
"net": "Net",
"paid": "Paid",
"unpaid": "Unpaid",
"status": "Status",
"billId": "Bill ID",
"payer": "Payer",
"payee": "Payee",
"amount": "Amount",
"method": "Method",
"time": "Time",
"summary": "Summary",
"detail": "Detail",
"adjustmentType": "Type",
"originalBill": "Original bill",
"reason": "Reason",
"badDebtAmount": "Write-off",
"playerAccount": "Player account",
"playerId": "Player ID",
"directAgent": "Direct agent",
"superiorAgent": "Upline agent",
"play": "Play",
"drawNo": "Draw no."
},
"billStatus": {
"pending_confirm": "Pending confirm",
"confirmed": "Awaiting payment",
"partial_paid": "Partial payment",
"settled": "Fully settled",
"overdue": "Overdue",
"reversed": "Reversed"
},
"billType": {
"adjustment": "Adjustment",
"reversal": "Reversal",
"badDebt": "Bad debt write-off"
},
"adjustmentType": {
"adjustment": "Adjustment",
"reversal": "Reversal",
"bad_debt": "Bad debt"
},
"paymentStatus": {
"pending": "Pending",
"confirmed": "Confirmed"
},
"actions": {
"detail": "Detail",
"viewBill": "View bill",
"billDetail": "Bill detail",
"billDetailWithId": "Bill #{{id}}"
},
"billDisplay": {
"settlementFlow": "Who pays whom",
"settlementAmount": "Settlement amount",
"pays": "Pays",
"paysShort": "Pays",
"howAmountWorks": "Breakdown",
"payerLabel": "Payer",
"payeeLabel": "Payee",
"playerBreakdownIntro": "Players settle only with their direct agent: net = win/loss rebate.",
"agentBreakdownIntro": "Start with this period's team win/loss, deduct player rebates and retained shares, then settle the remaining amount with the upline.",
"playerGross": "Game win/loss",
"playerLostHint": "Player lost; owes agent",
"playerWonHint": "Player won; agent owes player",
"playerNet": "Player net payable",
"playerNetReceive": "Agent pays player",
"teamGross": "Team win/loss this period",
"teamGrossHint": "Total for this agent and downline players in this period",
"teamGrossShort": "Team",
"playerGrossShort": "Player",
"teamRebate": "Deduct player rebates",
"teamNet": "Profit available to split",
"rebate": "Rebate",
"agentShareKeep": "This tier keeps",
"agentShareKeepHint": "Amount retained by this tier under the agreed share",
"agentDownlineShare": "Downline agents keep",
"agentDownlineShareHint": "Amount retained by downline agents first (see breakdown below)",
"agentDownlineShareItem": "{{agent}} kept",
"agentNet": "Remit to {{counterparty}}",
"agentNetReceive": "{{counterparty}} owes this tier",
"actionPendingConfirmTitle": "Confirm this bill next",
"actionPendingConfirmDesc": "Confirm the amount and parties, then the bill moves to awaiting payment.",
"actionAwaitingPaymentTitle": "Record payment next",
"actionAwaitingPaymentDesc": "Record offline payment according to the payer/payee direction. Partial payments are allowed.",
"actionSettledTitle": "This bill is fully settled",
"actionSettledDesc": "Review the breakdown and payment history below if needed.",
"actionReviewTitle": "Review this bill status",
"actionReviewDesc": "Use adjustment, reversal, or bad debt actions if the amount or direction is wrong.",
"billOwner": "Bill owner",
"billCounterparty": "Counterparty",
"unpaidPendingConfirm": "Confirm the bill before recording payment",
"unpaidAwaitingPayment": "Record offline payment",
"fullySettled": "Fully settled this period",
"confirmHint": "Confirm the bill before recording payment.",
"advancedActions": "Adjust / bad debt",
"recordReceiptFrom": "Record receipt ({{payer}} → {{payee}})",
"recordPayoutTo": "Record payout ({{payer}} → {{payee}})",
"rebateAllocationsHint": "How rebate is allocated across agent tiers.",
"rebateAllocParticipant": "Participant",
"rebateAllocRate": "Share",
"rebateAllocAmount": "Allocated",
"rebateAllocTotal": "Total",
"rebateAllocTicket": "Ticket",
"showRawRebateAllocations": "Show per-ticket detail ({{count}})",
"hideRawRebateAllocations": "Hide per-ticket detail",
"payment": "Payment",
"flowHint": {
"playerPayAgent": "Player should settle with the direct agent",
"agentPayPlayer": "Direct agent should settle with the player",
"agentPayUpstream": "This agent should settle with upline / platform",
"upstreamPayAgent": "Upline / platform should settle with this agent",
"adjustment": "Adjustment settles separately and keeps the original bill relation",
"badDebt": "Write off unpaid amount and archive it as bad debt",
"reversal": "Reverse the original bill impact according to reversal rules",
"generic": "Apply payment or adjustment based on this bill relation"
},
"hierarchyHint": "One period creates multiple bills: players pay their agent first; each agent keeps share profit and remits the rest upline. Gross win/loss may match across rows while settlement amounts step down."
},
"ledgerPanel": {
"search": "Search",
"searchBtn": "Search",
"reset": "Reset filters",
"refresh": "Refresh page",
"filterAll": "Any",
"playerAccount": "Player account",
"playerAccountPh": "Username or site player ID",
"playerId": "Player ID",
"optional": "Optional",
"billStatus": "Bill status",
"dateRange": "Date range",
"rowPosted": "Posted"
},
"billsPanel": {
"intro": "Share bills after period close. Filter by type or status; open detail to confirm or record payment.",
"confirmOneTitle": "Confirm bill #{{id}}?",
"confirmOneDesc": "After confirm, record offline payment.",
"confirmOneBtn": "Confirm",
"confirmedOne": "Confirmed",
"confirmFailed": "Confirm failed",
"payBtn": "Pay",
"hierarchyHint": "One period creates multiple bills: players pay their agent first; each agent keeps share profit and remits the rest upline. Gross win/loss may match across rows while settlement amounts step down.",
"quickFilter": {
"title": "Which settlement layer do you want to review",
"desc": "Choose player or agent settlement first, then narrow by status or bill id.",
"allTitle": "All bills",
"allHint": "View player, agent, adjustment, and bad debt bills together",
"playerTitle": "Player settlement",
"playerHint": "Credit settlement between players and their direct agent",
"agentTitle": "Agent settlement",
"agentHint": "Tier settlement between agents and their upline / platform"
},
"activeHint": {
"all": "Current focus: all settlement documents in this period",
"player": "Current focus: credit settlement between players and direct agents",
"agent": "Current focus: payments between agents and their upline / platform"
},
"layer": {
"player": "Player vs direct agent",
"agent": "Agent vs upline / platform",
"adjustment": "Settlement adjustment",
"badDebt": "Bad debt archive",
"reversal": "Historical bill reversal",
"generic": "Settlement supporting document"
},
"category": {
"all": "All",
"player": "Player bills",
"agent": "Agent bills",
"pendingConfirm": "Pending confirm",
"awaitingPayment": "Awaiting payment"
},
"billId": "Bill ID",
"ownerKeyword": "Owner / counterparty",
"ownerKeywordPh": "Player account or agent name",
"status": "Bill status",
"billType": "Bill type",
"filterAll": "All statuses",
"filterAllTypes": "All types",
"filterAdjustment": "Adjust / reverse",
"optional": "Optional",
"searchBtn": "Search",
"reset": "Reset",
"refresh": "Refresh",
"clientFilterHint": "Owner filter: showing {{shown}} / {{total}}",
"emptyFiltered": "No bills match the filter. Try All statuses or reset.",
"emptyClosed": "Period closed but no bills. Often no settled credit tickets in range.",
"workbenchEmpty": "No bills need action in this period. Use All bills for settled or historical bills.",
"workbench": {
"pendingTitle": "Bills pending confirm",
"pendingHint": "Confirm the amount and parties first; confirmed bills move to awaiting payment.",
"awaitingTitle": "Bills awaiting payment",
"awaitingHint": "Record offline payment by payer/payee direction. Bills close when fully paid.",
"exceptionTitle": "Exceptions",
"exceptionHint": "Review adjustment, reversal, and bad debt records here."
},
"rowHint": {
"playerOwner": "Player owner",
"agentOwner": "Agent owner",
"adjustmentOwner": "Adjustment owner",
"badDebtOwner": "Bad debt owner",
"reversalOwner": "Reversal owner",
"playerUpline": "Player's upline agent",
"agentUpline": "Settlement upline"
}
},
"panels": {
"overview": {
"title": "Overview"
},
"ledger": {
"title": "Account ledger"
},
"bills": {
"title": "Bills"
},
"creditLedger": {
"title": "Credit ledger"
},
"playerBills": {
"title": "Player bills"
},
"agentBills": {
"title": "Agent bills"
},
"pendingConfirm": {
"title": "Pending confirm"
},
"awaiting": {
"title": "Awaiting payment"
},
"payments": {
"title": "Payment log"
},
"adjustments": {
"title": "Adjust / reverse"
},
"reports": {
"title": "Period reports"
},
"badDebt": {
"title": "Bad debt"
},
"workbench": {
"title": "Workbench"
}
},
"empty": {
"noSite": "Select a site.",
"noPeriods": "Close the current period first.",
"noClosed": "Close a period to generate bills.",
"noBadDebt": "No bad debt records.",
"noCreditLedger": "No ledger entries in this period.",
"billsNeedClose": "Bills are created after period close."
},
"periods": {
"loadFailed": "Failed to load periods"
},
"toast": {
"periodClosed": "Period closed",
"periodClosedUnsettled": "Period closed; {{count}} ticket(s) still unsettled."
},
"errors": {
"loadBills": "Failed to load bills",
"loadPayments": "Failed to load payments",
"loadAdjustments": "Failed to load adjustments",
"loadBadDebt": "Failed to load bad debt records",
"loadCreditLedger": "Failed to load credit ledger"
}
}