All checks were successful
ERP-Deploy-Demo / deploy-demo (push) Successful in 1m24s
52 lines
1.6 KiB
PHP
52 lines
1.6 KiB
PHP
<?php
|
||
|
||
namespace App\Modules\Integration\Controllers;
|
||
|
||
use App\Http\Controllers\Controller;
|
||
use App\Modules\Inventory\Contracts\InventoryServiceInterface;
|
||
use Illuminate\Http\JsonResponse;
|
||
|
||
class InventorySyncController extends Controller
|
||
{
|
||
protected $inventoryService;
|
||
|
||
public function __construct(InventoryServiceInterface $inventoryService)
|
||
{
|
||
$this->inventoryService = $inventoryService;
|
||
}
|
||
|
||
/**
|
||
* 提供外部 POS 查詢指定倉庫的商品庫存餘額
|
||
*
|
||
* @param string $warehouseCode
|
||
* @return JsonResponse
|
||
*/
|
||
public function show(string $warehouseCode): JsonResponse
|
||
{
|
||
// 透過 Service 調用跨模組庫存查詢功能
|
||
$inventoryData = $this->inventoryService->getPosInventoryByWarehouseCode($warehouseCode);
|
||
|
||
// 若回傳 null,表示尋無此倉庫代碼
|
||
if (is_null($inventoryData)) {
|
||
return response()->json([
|
||
'status' => 'error',
|
||
'message' => "Warehouse with code '{$warehouseCode}' not found.",
|
||
], 404);
|
||
}
|
||
|
||
// 以 JSON 格式回傳組合好的商品庫存列表
|
||
return response()->json([
|
||
'status' => 'success',
|
||
'warehouse_code' => $warehouseCode,
|
||
'data' => $inventoryData->map(function ($item) {
|
||
return [
|
||
'external_pos_id' => $item->external_pos_id,
|
||
'product_code' => $item->product_code,
|
||
'product_name' => $item->product_name,
|
||
'quantity' => (float) $item->total_quantity,
|
||
];
|
||
})
|
||
], 200);
|
||
}
|
||
}
|