Files
star-erp/app/Modules/Procurement/Contracts/ProcurementServiceInterface.php
sky121113 ad91b08dbc
All checks were successful
ERP-Deploy-Production / deploy-production (push) Successful in 1m9s
ERP-Deploy-Demo / deploy-demo (push) Successful in 1m10s
refactor: 重構 VendorProduct API 與新增進貨單重複檢查前端邏輯
1. 將 VendorProductController 中的 Eloquent 關聯操作改為透過 ProcurementService 使用 DB 操作,解除跨模組 Model 直接依賴。
2. ProcurementService 加入 vendor product 的資料存取方法。
3. 進貨單建立前端 (GoodsReceipt/Create.tsx) 新增重複進貨檢查與警告對話框邏輯。
2026-02-25 11:11:28 +08:00

108 lines
2.6 KiB
PHP

<?php
namespace App\Modules\Procurement\Contracts;
use Illuminate\Support\Collection;
interface ProcurementServiceInterface
{
/**
* Get purchase orders within a date range.
*
* @param string $start
* @param string $end
* @param array $statuses
* @return Collection
*/
public function getPurchaseOrdersByDate(string $start, string $end, array $statuses = ['received', 'completed']): Collection;
/**
* Get purchase orders by multiple IDs.
*
* @param array $ids
* @param array $with
* @return Collection
*/
public function getPurchaseOrdersByIds(array $ids, array $with = []): Collection;
/**
* Get statistics for the dashboard.
*
* @return array
*/
public function getDashboardStats(): array;
/**
* Update received quantity for a PO item.
*
* @param int $poItemId
* @param float $quantity
* @return void
*/
public function updateReceivedQuantity(int $poItemId, float $quantity): void;
/**
* Search pending or partial purchase orders.
*
* @param string $query
* @return Collection
*/
public function searchPendingPurchaseOrders(string $query): Collection;
/**
* Search vendors by name or code.
*
* @param string $query
* @return Collection
*/
public function searchVendors(string $query): Collection;
/**
* 取得所有待進貨的採購單列表(不需搜尋條件)。
* 用於進貨單頁面直接顯示可選擇的採購單。
*
* @return Collection
*/
public function getPendingPurchaseOrders(): Collection;
/**
* 取得所有廠商列表。
*
* @return Collection
*/
public function getAllVendors(): Collection;
/**
* Get vendors by multiple IDs.
*
* @param array $ids
* @return Collection
*/
public function getVendorsByIds(array $ids): Collection;
/**
* 新增供貨商品關聯
*/
public function attachProductToVendor(int $vendorId, int $productId, ?float $lastPrice): void;
/**
* 更新供貨商品價格
*/
public function updateVendorProductPrice(int $vendorId, int $productId, ?float $lastPrice): void;
/**
* 檢查廠商是否已有該供貨商品
*/
public function checkVendorHasProduct(int $vendorId, int $productId): bool;
/**
* 取得供貨商品的價格
*/
public function getVendorProductPrice(int $vendorId, int $productId): ?float;
/**
* 移除供貨商品關聯
*/
public function detachProductFromVendor(int $vendorId, int $productId): void;
}