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:
2026-08-11 20:09:10 +03:30
parent 0fe799e008
commit a9432b96c0
11 changed files with 653 additions and 6 deletions
+12 -6
View File
@@ -2,24 +2,30 @@ const express = require('express')
const userRoutes = require('../components/user/userRoutes')
const roleRoutes = require('../components/role/roleRoutes')
const permissionRoutes = require('../components/permission/permissionRoutes')
const belongingRoutes = require('../components/belonging/belongingRoutes')
const propertyRoutes = require('../components/property/propertyRoutes')
const propertyStatusRoutes = require('../components/propertyStatus/propertyStatusRoutes')
const categoryRoutes = require('../components/category/categoryRoutes')
const transactionRoutes = require('../components/transaction/transactionRoutes')
// const codeRoutes = require('../components/code/codeRoutes')
// const CRMRoutes = require('../components/pages/crmRoutes')
// const LoginRoute = require('../components/pages/loginRoutes')
const fileRoutes = require('../components/file/fileRoutes')
const featureRoutes = require('../components/feature/featureRoutes')
const warehouseItemRoutes = require('../components/warehouseItem/warehouseItemRoutes')
const warehouseRoutes = require('../components/warehouse/warehouseRoutes')
const routerEndpoints = new express.Router()
routerEndpoints.use('/users', userRoutes)
routerEndpoints.use('/permissions', permissionRoutes)
routerEndpoints.use('/belongings', belongingRoutes)
routerEndpoints.use('/properties', propertyRoutes)
routerEndpoints.use('/belongings', propertyRoutes) // Alias for backward compatibility
routerEndpoints.use('/property-statuses', propertyStatusRoutes)
routerEndpoints.use('/belonging-statuses', propertyStatusRoutes) // Alias for backward compatibility
routerEndpoints.use('/roles', roleRoutes)
routerEndpoints.use('/categories', categoryRoutes)
routerEndpoints.use('/transactions', transactionRoutes)
routerEndpoints.use('/files', fileRoutes)
routerEndpoints.use('/features', featureRoutes)
routerEndpoints.use('/warehouse-items', warehouseItemRoutes)
routerEndpoints.use('/warehouses', warehouseRoutes)
module.exports = routerEndpoints