feat: add Wangshang bank to account flow summary

Adds a separate Wangshang bank view to account flow summary and excludes Wangshang accounts from the bank-account view.
This commit is contained in:
shanshi 2026-11-11 19:36:25 +08:00
parent 739fff215a
commit be1eabfd16
3 changed files with 28 additions and 3 deletions

View File

@ -88,7 +88,7 @@ class FinanceLedgerPageData
$openingDate = (string) config('finance_ledger.opening_date', '2026-10-17');
$transactionView = $this->transactionView();
$requestedFlowView = trim((string) request('flows_view', 'summary'));
$flowView = in_array($requestedFlowView, ['summary', 'bank', 'non_store', 'daily'], true)
$flowView = in_array($requestedFlowView, ['summary', 'bank', 'non_store', 'wangshang', 'daily'], true)
? $requestedFlowView
: 'summary';
$requestedAccountView = trim((string) request('accounts_view', 'all'));
@ -663,7 +663,7 @@ class FinanceLedgerPageData
$this->db()->table('fin_accounts as a'),
'a.account_short',
);
$this->applyAccountCategoryScope($accountQuery, $view, 'a.account_short', 'a.account_type');
$this->applyAccountCategoryScope($accountQuery, $view, 'a.account_short', 'a.account_type', true);
foreach (['flows_company' => 'a.company_name', 'flows_account' => 'a.account_short'] as $param => $column) {
$value = trim((string) request($param, ''));
if ($value !== '') {

View File

@ -1092,6 +1092,7 @@
<a class="ledger-subtab {{ $flowView === 'summary' ? 'is-active' : '' }}" href="{{ $flowViewUrl('summary') }}" @if ($flowView === 'summary') aria-current="page" @endif>账户汇总</a>
<a class="ledger-subtab {{ $flowView === 'bank' ? 'is-active' : '' }}" href="{{ $flowViewUrl('bank') }}" @if ($flowView === 'bank') aria-current="page" @endif>银行账户</a>
<a class="ledger-subtab {{ $flowView === 'non_store' ? 'is-active' : '' }}" href="{{ $flowViewUrl('non_store') }}" @if ($flowView === 'non_store') aria-current="page" @endif>支付宝</a>
<a class="ledger-subtab {{ $flowView === 'wangshang' ? 'is-active' : '' }}" href="{{ $flowViewUrl('wangshang') }}" @if ($flowView === 'wangshang') aria-current="page" @endif>网商银行</a>
<a class="ledger-subtab {{ $flowView === 'daily' ? 'is-active' : '' }}" href="{{ $flowViewUrl('daily') }}" @if ($flowView === 'daily') aria-current="page" @endif>按日流水</a>
@if ($flowUsesAccountSummary && $canEditAccounts)
<span class="ledger-flow-grid-actions">

View File

@ -463,8 +463,18 @@ class FinanceLedgerHeaderControlsTest extends FeatureTestCase
$this->assertStringContainsString('>2026-10-17</td>', $dailyHtml);
}
public function test_account_flow_summary_separates_bank_accounts_and_alipay_only(): void
public function test_account_flow_summary_separates_bank_accounts_alipay_and_wangshang(): void
{
DB::connection('business_mirror')->table('fin_accounts')->insert([
'company_name' => '丁公司',
'account_short' => '账户丁网商',
'bank_name' => '网商银行',
'account_type' => '公户',
'current_balance' => 0,
'daily_available' => 0,
'blocked_amount' => 0,
]);
$bankHtml = $this->loginAs()->get($this->pageUrl([
'flows_view' => 'bank',
'flows_from' => '2026-10-01',
@ -474,10 +484,12 @@ class FinanceLedgerHeaderControlsTest extends FeatureTestCase
$this->assertStringContainsString('>账户汇总</a>', $bankHtml);
$this->assertStringContainsString('>银行账户</a>', $bankHtml);
$this->assertStringContainsString('>支付宝</a>', $bankHtml);
$this->assertStringContainsString('>网商银行</a>', $bankHtml);
$this->assertStringNotContainsString('>非店铺账户</a>', $bankHtml);
$this->assertStringContainsString('>按日流水</a>', $bankHtml);
$this->assertStringContainsString('data-flow-summary-account="账户甲"', $bankHtml);
$this->assertStringNotContainsString('data-flow-summary-account="账户乙"', $bankHtml);
$this->assertStringNotContainsString('data-flow-summary-account="账户丁网商"', $bankHtml);
$nonStoreHtml = $this->loginAs()->get($this->pageUrl([
'flows_view' => 'non_store',
@ -487,6 +499,18 @@ class FinanceLedgerHeaderControlsTest extends FeatureTestCase
$this->assertStringContainsString('data-flow-summary-account="账户乙"', $nonStoreHtml);
$this->assertStringNotContainsString('data-flow-summary-account="账户甲"', $nonStoreHtml);
$this->assertStringNotContainsString('data-flow-summary-account="账户丁网商"', $nonStoreHtml);
$wangshangHtml = $this->loginAs()->get($this->pageUrl([
'flows_view' => 'wangshang',
'flows_from' => '2026-10-01',
'flows_to' => '2026-10-31',
]))->assertOk()->getContent();
$this->assertStringContainsString('name="flows_view" value="wangshang"', $wangshangHtml);
$this->assertStringContainsString('data-flow-summary-account="账户丁网商"', $wangshangHtml);
$this->assertStringNotContainsString('data-flow-summary-account="账户甲"', $wangshangHtml);
$this->assertStringNotContainsString('data-flow-summary-account="账户乙"', $wangshangHtml);
}
public function test_account_directory_separates_bank_accounts_and_alipay_only(): void