fix: 淘系微信期初余额暂置为零 #985
@ -62,7 +62,8 @@ class TaobaoWechatAccountBills extends Controller
|
||||
|
||||
$alipaySummary = null;
|
||||
try {
|
||||
// 微信账单没有余额列,期初和期末统一取同一筛选条件下淘系支付宝的账户汇总。
|
||||
// 微信账单没有余额列;期初待各店铺6月期末余额录入,暂时固定为0,
|
||||
// 期末仍按现有口径取同一筛选条件下淘系支付宝的账户余额。
|
||||
$alipaySummary = $alipayRepository->summary($filters);
|
||||
} catch (RuntimeException $exception) {
|
||||
if ($exception->getMessage() !== 'taobao_alipay_authoritative_bills_not_ready') {
|
||||
@ -71,9 +72,9 @@ class TaobaoWechatAccountBills extends Controller
|
||||
}
|
||||
|
||||
$data['summary'] = array_merge($data['summary'], [
|
||||
'opening_balance' => $alipaySummary['opening_balance'] ?? null,
|
||||
'opening_balance_date' => $alipaySummary['opening_balance_date'] ?? null,
|
||||
'opening_balance_source' => $alipaySummary['opening_balance_source'] ?? null,
|
||||
'opening_balance' => 0,
|
||||
'opening_balance_date' => null,
|
||||
'opening_balance_source' => 'pending_june_ending',
|
||||
'balance' => $alipaySummary['balance'] ?? null,
|
||||
'balance_source' => $alipaySummary === null ? 'unavailable' : 'taobao_alipay',
|
||||
]);
|
||||
@ -88,9 +89,9 @@ class TaobaoWechatAccountBills extends Controller
|
||||
return [
|
||||
'income' => 0,
|
||||
'expense' => 0,
|
||||
'opening_balance' => null,
|
||||
'opening_balance' => 0,
|
||||
'opening_balance_date' => null,
|
||||
'opening_balance_source' => null,
|
||||
'opening_balance_source' => 'pending_june_ending',
|
||||
'balance' => null,
|
||||
'balance_source' => 'unavailable',
|
||||
'count' => 0,
|
||||
|
||||
@ -318,9 +318,11 @@ export default {
|
||||
if(this.billType==='taobao-wechat'){
|
||||
const openingSource=this.summary.opening_balance_source;
|
||||
const openingDate=this.summary.opening_balance_date;
|
||||
const openingNote=openingSource==='first_row_estimate'
|
||||
const openingNote=openingSource==='pending_june_ending'
|
||||
?'待录入各店铺6月期末余额'
|
||||
:(openingSource==='first_row_estimate'
|
||||
?'首月按淘系支付宝首笔余额倒推'
|
||||
:(openingDate?`截至 ${openingDate} 淘系支付宝最后一笔`:'淘系支付宝上月最后一笔');
|
||||
:(openingDate?`截至 ${openingDate} 淘系支付宝最后一笔`:'淘系支付宝上月最后一笔'));
|
||||
const balanceNote=this.summary.balance_source==='unavailable'?'淘系支付宝余额暂不可用':'同淘系支付宝账户';
|
||||
return [
|
||||
{label:'期初余额',value:this.moneyWan(this.summary.opening_balance),note:openingNote,className:''},
|
||||
|
||||
@ -68,13 +68,48 @@ class TaobaoWechatReceivingBillsTest extends FeatureTestCase
|
||||
->assertJsonPath('data.0.payload.entry_type', '收入')
|
||||
->assertJsonPath('columns.title', '淘系微信账户')
|
||||
->assertJsonPath('summary.count', 41)
|
||||
->assertJsonPath('summary.opening_balance', 230)
|
||||
->assertJsonPath('summary.opening_balance_date', '2026-08-31')
|
||||
->assertJsonPath('summary.opening_balance_source', 'previous_period')
|
||||
->assertJsonPath('summary.opening_balance', 0)
|
||||
->assertJsonPath('summary.opening_balance_date', null)
|
||||
->assertJsonPath('summary.opening_balance_source', 'pending_june_ending')
|
||||
->assertJsonPath('summary.balance', 525)
|
||||
->assertJsonPath('summary.balance_source', 'taobao_alipay');
|
||||
}
|
||||
|
||||
public function test_opening_balance_stays_zero_when_alipay_summary_is_unavailable(): void
|
||||
{
|
||||
$this->allowPage();
|
||||
$repository = Mockery::mock(TaobaoWechatSettlementBillRepository::class);
|
||||
$repository->shouldReceive('paginateAccountBills')->once()->andReturn([
|
||||
'current_page' => 1,
|
||||
'last_page' => 1,
|
||||
'per_page' => 20,
|
||||
'total' => 1,
|
||||
'data' => [],
|
||||
'summary' => ['income' => 10.0, 'expense' => 2.0, 'balance' => 8.0, 'count' => 1],
|
||||
]);
|
||||
$this->app->instance(TaobaoWechatSettlementBillRepository::class, $repository);
|
||||
|
||||
$alipayRepository = Mockery::mock(TaobaoAlipaySettlementBillRepository::class);
|
||||
$alipayRepository->shouldReceive('summary')->once()->andThrow(
|
||||
new RuntimeException('taobao_alipay_authoritative_bills_not_ready')
|
||||
);
|
||||
$this->app->instance(TaobaoAlipaySettlementBillRepository::class, $alipayRepository);
|
||||
|
||||
$this->withExceptionHandling()
|
||||
->loginAs()
|
||||
->getJson(route('ecommerce-finance.account-bills.index', [
|
||||
'bill_type' => 'taobao-wechat',
|
||||
'start' => '2026-11-01',
|
||||
'end' => '2026-11-30',
|
||||
]))
|
||||
->assertOk()
|
||||
->assertJsonPath('summary.opening_balance', 0)
|
||||
->assertJsonPath('summary.opening_balance_date', null)
|
||||
->assertJsonPath('summary.opening_balance_source', 'pending_june_ending')
|
||||
->assertJsonPath('summary.balance', null)
|
||||
->assertJsonPath('summary.balance_source', 'unavailable');
|
||||
}
|
||||
|
||||
public function test_filter_options_and_selected_column_export_use_the_same_mirror(): void
|
||||
{
|
||||
$this->allowPage();
|
||||
|
||||
@ -90,6 +90,7 @@ class AccountBillsTableTest extends TestCase
|
||||
$this->assertStringContainsString("if(this.billType==='taobao-wechat')", $source);
|
||||
$this->assertStringContainsString("label:'期初余额'", $source);
|
||||
$this->assertStringContainsString("label:'期末余额(最新)'", $source);
|
||||
$this->assertStringContainsString('待录入各店铺6月期末余额', $source);
|
||||
$this->assertStringContainsString("this.summary.balance_source==='unavailable'?'淘系支付宝余额暂不可用':'同淘系支付宝账户'", $source);
|
||||
$this->assertLessThan(
|
||||
strpos($source, "label:'收入合计'"),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user