采购单优化
This commit is contained in:
@@ -44,6 +44,7 @@ class StoreOrderModel extends Model
|
||||
'tray_num',
|
||||
'status',
|
||||
'remark',
|
||||
'purchase_id',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
|
||||
@@ -7,19 +7,14 @@ use App\Models\PurchaseOrderModel;
|
||||
use App\Models\StoreOrderItemModel;
|
||||
use App\Models\StoreOrderModel;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Throwable;
|
||||
|
||||
/**
|
||||
* C1 订单汇总生成采购单
|
||||
*
|
||||
* 流程(事务内):
|
||||
* 1. 行锁「已接单」订单(可传 orderIds 只合并指定订单;状态条件天然排除已归集订单,幂等)
|
||||
* 2. 创建采购单头(PO 单号;total_quantity / estimate_amount 取订货明细汇总)
|
||||
* 3. 源订单批量回写 status = 采购中、purchase_id = 采购单ID,
|
||||
* 订货明细同步回写 purchase_id(采购明细直接溯源订货明细,无独立采购明细表)
|
||||
* 订单汇总生成采购单
|
||||
*/
|
||||
class PurchaseGenerateService
|
||||
readonly class PurchaseGenerateService
|
||||
{
|
||||
public function __construct(private readonly BillNumberService $billNumberService)
|
||||
public function __construct(private BillNumberService $billNumberService)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -27,6 +22,8 @@ class PurchaseGenerateService
|
||||
* @param string $date 采购日期(Y-m-d)
|
||||
* @param int $operatorId 制单人(后台系统用户ID)
|
||||
* @param int[] $orderIds 指定合并的门店订单ID(空 = 全部已接单订单)
|
||||
* @return PurchaseOrderModel
|
||||
* @throws Throwable
|
||||
*/
|
||||
public function generate(string $date, int $operatorId, array $orderIds = []): PurchaseOrderModel
|
||||
{
|
||||
@@ -62,7 +59,7 @@ class PurchaseGenerateService
|
||||
'0'
|
||||
);
|
||||
$estimateAmount = $items->reduce(
|
||||
static fn (string $carry, $item): string => bcadd($carry, (string) $item->amount, 2),
|
||||
static fn (string $carry, $item): string => bcadd($carry, bcmul($item->quantity, (string) $item->cost_price, 2), 2),
|
||||
'0'
|
||||
);
|
||||
|
||||
|
||||
@@ -260,7 +260,7 @@ const PurchaseOrderPage: React.FC = () => {
|
||||
render: (_, record) => record.purchase_date,
|
||||
},
|
||||
{
|
||||
title: '预估金额',
|
||||
title: '预估成本',
|
||||
dataIndex: 'estimate_amount',
|
||||
hideInForm: true,
|
||||
hideInSearch: true,
|
||||
@@ -268,7 +268,7 @@ const PurchaseOrderPage: React.FC = () => {
|
||||
render: (_, record) => `¥${record.estimate_amount}`,
|
||||
},
|
||||
{
|
||||
title: '实际金额',
|
||||
title: '实际成本',
|
||||
dataIndex: 'actual_amount',
|
||||
hideInForm: true,
|
||||
hideInSearch: true,
|
||||
|
||||
Reference in New Issue
Block a user