CaiWuXiTong/modules/EcommerceFinance/Http/Concerns/DecoratesLedgerRemarks.php
qiuxiang e147c90a2c 店铺收款账户账单新增「总账备注」列(按平台+账单项目映射表取值)
- 新增 ec_account_ledger_remarks 映射表与 account-ledger-remarks:import 导入命令(平台/账单项目/总账备注)
- 新增 AccountLedgerRemarkMap:按店铺名前缀识别平台,无前缀时用页签默认平台;缺失匹配保持空白
- 全部账户页签(含淘系支付宝自有列定义)在「店铺/店铺名称」右侧新增「总账备注」列,页面/列设置/导出共用同一份列定义
- 控制器在分页与导出流读取时补齐 payload.ledger_remark,不改动上游账单与共享镜像数据
- 用例:新增 AccountLedgerRemarkMapTest;修正唯品会 JX/MP 列清单断言
2026-10-06 15:42:57 +08:00

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);
}
}