Store management, stock ledger, material issues, returns, inter-site transfers, and stock adjustments with real-time tracking.
The Inventory module tracks material movement across project stores. Every receipt (GRN), issue to site, return, transfer, and adjustment is recorded as a stock transaction updating the running stock ledger. Stores are organized per project/location. Inter-Site Transfers (IST) enable material movement between projects with proper documentation.
| Status | Description | Allowed Actions | Next States |
|---|---|---|---|
| Requested | Material issue requested by site engineer | Approve, Reject | Approved |
| Approved | Issue approved by store manager | Issue Material | Issued |
| Issued | Material physically issued from store | Confirm Receipt | Completed |
| Completed | Material received at site, stock updated | — | — |
| In Transit | IST dispatched, pending receipt at destination | Receive, Report Shortage | Received |
| Rejected | Issue request denied due to stock/budget constraints | Revise Qty, Cancel | Requested |
store_id — PK, unique store/warehouseproject_id — FK → project.projectstore_code, store_name — Identifier and display namelocation_id — FK → organization.locationstore_type — main | sub | bonded | scrapis_active — Active/inactive flagledger_id — PK, running stock balance recordstore_id — FK → inventory.storematerial_id — FK → master_data.material_mastercurrent_qty, reserved_qty, available_qty — Balance trackingavg_cost, last_cost — Weighted average and latest unit costreorder_level, max_level — Min/max stock thresholdsissue_id — PK, material issue headerstore_id — FK → inventory.storeproject_id, wbs_id — FK → project scoperequested_by, approved_by — Workflow trackingissue_date, status — Date and lifecycle stateist_id — PK, inter-site transfer headerfrom_store_id, to_store_id — FK → inventory.store (source and destination)transfer_number, transfer_date — Document trackingstatus — Requested → Dispatched → Receivedreceived_date, received_by — Receipt confirmationadjustment_id — PK, stock correction recordstore_id, material_id — FK referencesadjustment_type — surplus | shortage | damage | expiryqty_adjusted, reason — Quantity change with justificationapproved_by — FK → admin.userWhen GRN is approved in Receiving module, stock transaction auto-creates in stock_ledger. Running balance increases. Average cost recalculated using weighted average method.
Site engineer raises material issue request specifying material, quantity, WBS element, and purpose. System checks available stock (current_qty - reserved_qty).
Store manager approves request. Stock deducted from ledger. Issue slip generated with material details, quantity, vehicle number, and receiver signature fields.
Source store creates IST with material list. On dispatch, source stock decreases. On receipt at destination, destination stock increases. Shortages flagged for investigation.
Physical verification reveals surplus/shortage. Store manager creates adjustment entry with justification. Approved adjustments update ledger and post journal entries to finance.
-- Current stock position across all stores for a project SELECT s.store_name, mm.material_code, mm.material_name, mm.uom, sl.current_qty, sl.reserved_qty, sl.available_qty, sl.avg_cost, sl.current_qty * sl.avg_cost AS stock_value FROM inventory.stock_ledger sl JOIN inventory.store s ON s.store_id = sl.store_id JOIN master_data.material_master mm ON mm.material_id = sl.material_id WHERE s.project_id = :project_id AND sl.available_qty > 0 ORDER BY stock_value DESC;