- 新增 ec_account_ledger_remarks 映射表与 account-ledger-remarks:import 导入命令(平台/账单项目/总账备注) - 新增 AccountLedgerRemarkMap:按店铺名前缀识别平台,无前缀时用页签默认平台;缺失匹配保持空白 - 全部账户页签(含淘系支付宝自有列定义)在「店铺/店铺名称」右侧新增「总账备注」列,页面/列设置/导出共用同一份列定义 - 控制器在分页与导出流读取时补齐 payload.ledger_remark,不改动上游账单与共享镜像数据 - 用例:新增 AccountLedgerRemarkMapTest;修正唯品会 JX/MP 列清单断言
49 lines
1.3 KiB
PHP
49 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace Modules\EcommerceFinance\Http\Concerns;
|
|
|
|
use Modules\EcommerceFinance\Services\AccountLedgerRemarkMap;
|
|
|
|
/**
|
|
* 店铺收款账户账单:给每行账单补「总账备注」(按平台 + 账单项目匹配映射表)。
|
|
*
|
|
* 只在读取时补齐,不改动上游账单与镜像数据。
|
|
*/
|
|
trait DecoratesLedgerRemarks
|
|
{
|
|
protected function ledgerRemarkMap(): AccountLedgerRemarkMap
|
|
{
|
|
return app(AccountLedgerRemarkMap::class);
|
|
}
|
|
|
|
/**
|
|
* 分页结果(含 data 行数组)补总账备注。
|
|
*
|
|
* @param array<string,mixed> $data
|
|
* @return array<string,mixed>
|
|
*/
|
|
protected function withLedgerRemarks(array $data, string $tab): array
|
|
{
|
|
if (! empty($data['data']) && is_array($data['data'])) {
|
|
$map = $this->ledgerRemarkMap();
|
|
$data['data'] = array_map(
|
|
static fn (mixed $row): mixed => is_array($row) ? $map->decorate($row, $tab) : $row,
|
|
$data['data'],
|
|
);
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
|
|
/**
|
|
* 导出/流式行补总账备注。
|
|
*
|
|
* @param iterable<int,array<string,mixed>> $rows
|
|
* @return iterable<int,array<string,mixed>>
|
|
*/
|
|
protected function ledgerRemarkRows(iterable $rows, string $tab): iterable
|
|
{
|
|
return $this->ledgerRemarkMap()->decorateAll($rows, $tab);
|
|
}
|
|
}
|