ADD: Warehouse inventory management system
- Add WarehouseItem model with bilingual names (FA/EN) and bilingual counting units - Add WarehouseItemTransaction model for IN/OUT movements with reason and actor - Add WarehouseItemStock model for denormalized per-(item×warehouse) running balance - Add warehouseItemService with full CRUD, atomic stock updates via $inc, negative stock guard, and aggregation queries for per-item/per-warehouse/total stock - Add warehouseItemController and REST routes at /api/warehouse-items - Add warehouseService, warehouseController, warehouseRoutes for warehouse location CRUD at /api/warehouses - Register both route groups in routerEndpoints.js
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
const catchAsync = require('../../globalErrorHandler/catchAsync')
|
||||
const warehouseService = require('./warehouseService')
|
||||
|
||||
exports.createWarehouse = catchAsync(async (req, res, next) => {
|
||||
const warehouse = await warehouseService.createWarehouse(req.body)
|
||||
res.status(201).json({ status: 'success', data: warehouse })
|
||||
})
|
||||
|
||||
exports.listWarehouses = catchAsync(async (req, res, next) => {
|
||||
const warehouses = await warehouseService.listWarehouses(req.query)
|
||||
res.status(200).json({ status: 'success', results: warehouses.length, data: warehouses })
|
||||
})
|
||||
|
||||
exports.getWarehouse = catchAsync(async (req, res, next) => {
|
||||
const warehouse = await warehouseService.getWarehouse(req.params.warehouseId)
|
||||
res.status(200).json({ status: 'success', data: warehouse })
|
||||
})
|
||||
|
||||
exports.updateWarehouse = catchAsync(async (req, res, next) => {
|
||||
const warehouse = await warehouseService.updateWarehouse(req.params.warehouseId, req.body)
|
||||
res.status(200).json({ status: 'success', data: warehouse })
|
||||
})
|
||||
|
||||
exports.deleteWarehouse = catchAsync(async (req, res, next) => {
|
||||
await warehouseService.deleteWarehouse(req.params.warehouseId)
|
||||
res.status(200).json({ status: 'success', data: null })
|
||||
})
|
||||
Reference in New Issue
Block a user