Material Requisition
A Material Requisition (MR) is the formal request from a project site for materials needed during execution. MRs are the starting point of the procurement cycle — they link material needs back to the job budget and drive the downstream RFQ, Purchase Order, and Material Receipt processes.
MR Header Fields
Each MR is stored in omni_mr_header (23 columns):
| Field | DB Column | Type | Description |
|---|---|---|---|
| MR Code | mr_code | varchar | Auto-generated unique requisition number |
| Description | mr_desc | varchar | Purpose or description of the requisition |
| MR Date | mr_date | datetime | Date the requisition was raised |
| Job | job_id | int (FK) | The project requesting materials |
| Authorised By | authorised_by / authorised_on | int / datetime | Approver and approval timestamp |
| Authorised Notes | authorised_notes | varchar | Comments from the approver |
| Is Collated | is_collated_mr | bit | Whether this MR was merged from multiple individual MRs |
| Collated To | collated_to_mr_id | int (FK) | Parent MR ID if this MR was collated into another |
| Filled from Stock | is_filled_from_stock | bit | Materials fulfilled from existing inventory (no purchase needed) |
| Stock Transfer | is_stock_transfer | bit | Inter-site transfer (source job specified in transfer_source_job_id) |
| Is Cancelled | is_cancelled | bit | Soft-delete flag |
| Attachment | attachment / dms_document_id | varchar / int | Supporting documents attached to the MR |
MR Detail Fields
Each line item in the MR is stored in omni_mr_detail (11 columns):
| Field | DB Column | Type | Description |
|---|---|---|---|
| Material | material_id | int (FK) | Material from the Material Master catalog |
| UOM | item_uom | int (FK) | Unit of measure for the material |
| Quantity | item_qty | money | Quantity requested |
| Rate | item_rate | money | Estimated unit rate (optional, from last purchase or rate contract) |
| Value | item_value | money | Estimated total: qty × rate |
| Discount % | item_discount_percent | float | Expected discount percentage |
| Notes | notes | varchar | Line-item specific notes or specifications |
Creating a Material Requisition
- Navigate to the Job and click Material Requisition (or access from Operations → Material Requisition)
- Click Add MR
- Fill in the MR header:
- Job — select the project
- MR Date — date of the request
- Description — purpose of the requisition
- Add material line items:
- Select Material from the Material Master dropdown
- Enter Quantity needed
- Optionally enter estimated Rate and any Notes
- Attach supporting documents if required
- Click Submit to send for approval
Budget Check: When an MR is submitted, the system checks the requested materials against the approved estimate budget. If the MR would exceed the budget, a warning is raised for the approver.
MR Approval
After submission, the MR goes through the configured approval workflow:
| Action | Result |
|---|---|
| Approve | MR is authorized. Proceeds to procurement or stock fulfillment. |
| Reject | MR is sent back to the requester with notes. Can be revised and resubmitted. |
Fulfillment Options
Once approved, there are three ways to fulfill an MR:
| Option | When to Use | Next Step |
|---|---|---|
| Fill from Stock | Materials are available in the project or central warehouse | Material Issue from stock → delivered to site |
| Stock Transfer | Materials are available at another project site | Inter-site transfer (transfer_source_job_id set) |
| Procure (RFQ → PO) | Materials need to be purchased from vendors | RFQ → Purchase Order → MRN |
Collated MRs: Multiple small MRs from the same or different jobs can be collated into a single combined MR. This enables bulk procurement, better vendor negotiation, and reduced purchase order overhead. Use the
is_collated_mr flag to identify collated MRs.
MR Lifecycle
| State | Description | Actions |
|---|---|---|
| Draft | MR created, items being added | Edit, add items, submit |
| Submitted | Sent for approval | Approve, reject |
| Approved | Authorized for fulfillment | Fill from stock, create RFQ, stock transfer |
| In Process | RFQ/PO raised, procurement in progress | Track PO status, receive materials |
| Fulfilled | All items received or issued | View only |
| Cancelled | MR no longer needed (is_cancelled = 1) | View only (audit trail preserved) |
Integration with Other Modules
| Module | How MR Connects |
|---|---|
| Estimates | MR quantities checked against material budget from approved estimates |
| Procurement (SCM) | Approved MR triggers RFQ → PO cycle in the Procurement module |
| Logistics | Stock fulfillment via Material Issue; procurement via MRN |
| Finance | PO and MRN generate accounting voucher entries for cost tracking |
| Dashboard | MR status and material spend visible on Job Dashboard KPIs |
Important: MRs should always be raised against the correct job. The material budget validation, cost tracking, and reporting all depend on accurate job assignment. Cross-job material transfers use the Stock Transfer option with the source job specified.