From d4bdabb866e9f1b5a20cd2ecaf35f0cb16817e67 Mon Sep 17 00:00:00 2001 From: liu <2302563948@qq.com> Date: Wed, 12 Aug 2026 17:30:46 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=8D=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Models/StoreOrderModel.php | 1 + app/Services/PurchaseGenerateService.php | 17 +++++++---------- web/pages/purchase/order.tsx | 4 ++-- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/app/Models/StoreOrderModel.php b/app/Models/StoreOrderModel.php index 2bdbcfc..8d08af7 100644 --- a/app/Models/StoreOrderModel.php +++ b/app/Models/StoreOrderModel.php @@ -44,6 +44,7 @@ class StoreOrderModel extends Model 'tray_num', 'status', 'remark', + 'purchase_id', ]; protected $casts = [ diff --git a/app/Services/PurchaseGenerateService.php b/app/Services/PurchaseGenerateService.php index 038e4c6..66ec60b 100644 --- a/app/Services/PurchaseGenerateService.php +++ b/app/Services/PurchaseGenerateService.php @@ -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' ); diff --git a/web/pages/purchase/order.tsx b/web/pages/purchase/order.tsx index fed76be..ba42676 100644 --- a/web/pages/purchase/order.tsx +++ b/web/pages/purchase/order.tsx @@ -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,