1. 修復倉庫統計數據加總與樣式。 2. 修正可用庫存計算邏輯(排除不可銷售倉庫)。 3. 撥補單商品列表加入批號與效期顯示。 4. 修正撥補單儲存邏輯以支援精確批號轉移。 5. 整合 FEATURES.md 至 README.md。
100 lines
2.4 KiB
PHP
100 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace App\Modules\Inventory\Contracts;
|
|
|
|
interface InventoryServiceInterface
|
|
{
|
|
/**
|
|
* Check if a product has sufficient stock in a specific warehouse.
|
|
*
|
|
* @param int $productId
|
|
* @param int $warehouseId
|
|
* @param float $quantity
|
|
* @return bool
|
|
*/
|
|
public function checkStock(int $productId, int $warehouseId, float $quantity): bool;
|
|
|
|
/**
|
|
* Decrease stock for a product (e.g., when an order is placed).
|
|
*
|
|
* @param int $productId
|
|
* @param int $warehouseId
|
|
* @param float $quantity
|
|
* @param string|null $reason
|
|
* @return void
|
|
*/
|
|
public function decreaseStock(int $productId, int $warehouseId, float $quantity, ?string $reason = null): void;
|
|
|
|
/**
|
|
* Get all active warehouses.
|
|
*
|
|
* @return \Illuminate\Support\Collection
|
|
*/
|
|
public function getAllWarehouses();
|
|
|
|
/**
|
|
* Get multiple products by their IDs.
|
|
*
|
|
* @param array $ids
|
|
* @return \Illuminate\Support\Collection
|
|
*/
|
|
public function getProductsByIds(array $ids);
|
|
|
|
/**
|
|
* Get a specific product by ID.
|
|
*
|
|
* @param int $id
|
|
* @return object|null
|
|
*/
|
|
public function getProduct(int $id);
|
|
|
|
/**
|
|
* Get a specific warehouse by ID.
|
|
*
|
|
* @param int $id
|
|
* @return object|null
|
|
*/
|
|
public function getWarehouse(int $id);
|
|
|
|
/**
|
|
* Get all available inventories in a specific warehouse.
|
|
*
|
|
* @param int $warehouseId
|
|
* @return \Illuminate\Support\Collection
|
|
*/
|
|
public function getInventoriesByWarehouse(int $warehouseId);
|
|
|
|
/**
|
|
* Get all products.
|
|
*
|
|
* @return \Illuminate\Support\Collection
|
|
*/
|
|
public function getAllProducts();
|
|
|
|
/**
|
|
* Get all units.
|
|
*
|
|
* @return \Illuminate\Support\Collection
|
|
*/
|
|
public function getUnits();
|
|
|
|
/**
|
|
* Create a new inventory record (e.g., for finished goods).
|
|
*
|
|
* @param array $data
|
|
* @return object
|
|
*/
|
|
public function createInventoryRecord(array $data);
|
|
|
|
/**
|
|
* Decrease quantity of a specific inventory record.
|
|
*
|
|
* @param int $inventoryId
|
|
* @param float $quantity
|
|
* @param string|null $reason
|
|
* @param string|null $referenceType
|
|
* @param int|string|null $referenceId
|
|
* @return void
|
|
*/
|
|
public function decreaseInventoryQuantity(int $inventoryId, float $quantity, ?string $reason = null, ?string $referenceType = null, $referenceId = null);
|
|
} |