后台订单导出客服天天用,勾字段往外抛没问题。财务盯着要的是成本价、毛利、毛利率——默认勾选项里没有。SKU 上倒是躺着 cost_price。所以这不是「系统不会导出」,是导出增强。写成从零做导出,读者一对官网就穿帮。穿帮很疼。
客户怎么提的
财务小姑娘把 Excel 甩过来:「你们导出缺三列,我每次 VLOOKUP,手要断了。」你要是回「导出不是有吗」,她下一句就是抄送老板。别回。
我改哪
导出组装行数据的地方追加字段。勾选列表同步加三个可选项,默认不勾——普通客服一导出全是内部数,更麻烦。
能直接粘的加列
<?php
function appendCostColumns(array $row, array $sku, array $item): array
{
$cost = (float)($item['cost_price_snapshot'] ?? $sku['cost_price'] ?? 0);
$price = (float)($item['price'] ?? $row['price'] ?? 0);
$qty = (int)($item['quantity'] ?? 1);
$gross = round(($price - $cost) * $qty, 2);
$row['cost_price'] = $cost;
$row['gross'] = $gross;
$row['gross_rate'] = $price > 0
? round(($price - $cost) / $price * 100, 2) . '%'
: '-';
return $row;
}
表头映射别忘:成本价 / 毛利 / 毛利率。漏表头,财务打开一脸问号。问号会变成电话。
坑就一个,但很深
订单当时价和现在 SKU 成本可能已经变了。财务要「下单时成本」还是「当前成本」?问清楚。写进需求文档一行字就行。我一般下单时把成本快照进 order_item 扩展字段,导出读快照。读现价,对账那天你会被骂。骂完还得重导。
权限:只有财务角色能勾成本列。毛利这东西,不是人人都该看见。店员看见毛利,心里会盘算很多事。你懂的。
导出行数大的时候别 N+1 查 SKU。先把本页/本批 sku_id 收齐,一次查出成本 map。慢导出比缺列更容易挨骂。缺列能补,超时会重。
财务要的其实不是三列
她要的是少加班。你加三列,她少开两小时 Excel。这账比你重构导出模块好听。别一上来重构导出框架。增强列。先活。
有一次我偷懒导出读了当前成本,月底对账差了一大截——中间调过价。财务盯着我说:你是不是觉得我看不出来。我看出来了。脸热。后来快照。快照救命。
导出文件名带日期和操作人。别全叫 orders.xlsx。群里五个文件,哪个是真的,吵半小时。半小时够你把文件名改好了。