Purchase Orders (PO)
A Purchase Order is the formal, legally binding commitment to a vendor to supply specified materials at agreed prices, quantities, and delivery terms. POs are the central document in the procure-to-pay cycle — they originate from approved vendor offers (via RFQ), Quick Orders, or Rate Contracts, and drive all downstream activities including material receiving (MRN), vendor billing, and payment.
PO List Grid
The PO list displays all purchase orders created within the selected date range. The default filter period is the last 30 days.
| Column | Description |
|---|---|
| Code | System-generated PO code. Format: PO/{JobCode}/{SeqId} (e.g., PO/MSD44/47632). Links the PO to the job it was raised for. |
| PO Description | Free-text description entered during PO creation (e.g., “PO FOR ARABIAN TECHNICAL MARKETING”). |
| Vendor | Name of the vendor the order was placed with (from Vendor Directory). |
| PO Date | Date the PO was created (DD-MM-YYYY format). |
| Job Code | The project/job code this PO is charged against. |
| Job | Full name of the job (e.g., “Head Office”, “Muscat Sohar Highway”). |
| Net Amount | Total value of line items before order-level tax, freight, and other charges. |
| Gross Amount | Total PO value including all taxes, discount, freight, and other charges. |
| Currency | PO currency (e.g., OMR, INR, AED, USD). |
| Status | Current PO status as a color-coded badge (Draft, Approved, Cancelled). |
Filters
- From / To Date — Filter POs by creation date range (required)
- Search — Free-text search across PO codes, descriptions, vendor names, and job names
- Status — Filter by PO status (Draft, Approved, Cancelled, All)
Row Actions
Each PO row has a dropdown action menu:
| Action | What It Does |
|---|---|
| View | Opens the PO as a printable SSRS report document with full header, line items, terms & conditions, and signature blocks. |
| Items | Opens the PO detail view to see/edit line items, taxes, delivery dates, and payment terms. |
| Details | Expands an inline detail panel below the row showing key PO information. |
| Approve | Submits the PO for approval (only visible for Draft status POs). Triggers the configured approval workflow. |
| Amend | Creates a revised version of an approved PO. Available only for Approved POs. See Amendments. |
| Cancel | Cancels a Draft PO. Approved POs with no MRNs can also be cancelled with proper authorization. |
PO Lifecycle
A Purchase Order moves through distinct phases from creation to final payment. The flowchart below shows all possible paths and status transitions:
Creating a Purchase Order
There are three ways to create a Purchase Order in JobNext. Each addresses a different procurement scenario:
| Creation Path | Source | When to Use | Key Feature |
|---|---|---|---|
| From Vendor Offer | RFQ → Comparative Statement → Selected Offer | Standard procurement: new material needs that go through the full MR → RFQ → Offer evaluation cycle. | Full audit trail from MR to PO. Vendor selection is documented with comparative pricing. |
| From Quick Order | Quick Purchase Order (QPO) → Convert to PO | Urgent purchases, small-value items, or repeat orders where the full RFQ cycle is unnecessary. | Bypasses the RFQ/offer process. QPO is converted to a full PO using omni_sp_scm_ConvertQOToPO. |
| From Rate Contract | Rate Contract → Generate PO | Recurring purchases where rates are pre-negotiated with vendors for a defined period. | Uses pre-agreed rates. No need to negotiate prices for each order. |
Path 1: From Vendor Offer (Standard)
This is the most common path and follows the full procurement cycle:
- Open the Comparative Statement — Navigate to Procurement → RFQ, select the RFQ, and click Comparative Statement from the row actions.
- Select the best offer — Review all vendor offers side-by-side. The system highlights the L1 (lowest) and L2 vendors. Evaluate based on total landed cost, delivery timeline, payment terms, and technical compliance.
-
Click “Create PO” — From the selected offer, click Create PO. The system calls
omni_sp_scm_CreatePurchaseOrderand auto-populates the PO with all data from the offer: vendor details, material specifications, quantities, unit rates, tax rates, FOC quantities, and delivery terms. - Review PO header — Verify the auto-populated header data: PO description, vendor, PO date, currency, exchange rate, expected delivery dates, and billing address.
- Review line items — Check each material line for quantity, rate, discount, tax (Tax 1 + Tax 2), FOC qty, and line notes. Adjust as needed.
- Set payment & delivery terms — Add payment terms, INCOTERMS, delivery location, and terms & conditions. These can be selected from templates or entered manually.
- Attach documents — Optionally attach supporting documents (drawings, specifications, vendor correspondence) to the PO.
- Submit for approval — Save the PO (status: Draft), then click Approve to send it through the configured approval workflow.
When a PO is generated from a vendor offer, the system carries over: vendor ID, all material line items with quantities, unit rates, pre-discount rates, discount percentages, FOC quantities, Tax 1 and Tax 2 rates, freight, and other charges. This eliminates manual entry and ensures consistency with the evaluated offer.
Path 2: From Quick Order
- Create a Quick Purchase Order — Go to Procurement → Quick Orders and create a new QPO with vendor, job, materials, and quantities. See Quick Orders.
- Convert to PO — Once the QPO is reviewed, use the Convert to PO action. The system creates a full PO from the QPO data.
- Review and approve — The converted PO follows the standard approval workflow.
Path 3: From Rate Contract
- Select materials from contract — Go to Procurement → Rate Contract, open the active contract, and select the materials you need to order.
-
Generate PO — Click Generate PO. The system creates a PO with pre-agreed rates from the contract. The
rate_contract_idfield links the PO back to the contract. - Adjust quantities and approve — Enter the required quantities (rates are locked from the contract) and submit for approval.
PO Header Fields
The PO header captures the overall order details. All header fields are stored in the omni_purchase_order_header table.
| Field | Description | Required |
|---|---|---|
| PO Code | Auto-generated. Format: PO/{JobCode}/{SeqId}. Generated by the object sequence system (omni_sp_GetObjectCode). | Auto |
| PO Description | Free-text title describing the order purpose (e.g., “SAFETY ITEMS”, “STRUCTURAL STEEL FOR PHASE 2”). Supports rich text. | Yes |
| Job | The job/project this PO is charged against. Determines the budget that is tracked. | Yes |
| Vendor | The vendor the order is placed with. Must be a registered vendor from the Vendor Directory. | Yes |
| Vendor Offer | The vendor offer this PO was generated from (if applicable). Links to the RFQ/offer chain for traceability. | If from RFQ |
| PO Date | The date of the purchase order. Defaults to today. | Yes |
| PO Currency | The currency in which the order is placed (e.g., OMR, INR, AED, USD). May differ from the job currency. | Yes |
| Job Currency Exchange Rate | Exchange rate from PO currency to job currency. Set to 1.0 when both currencies are the same. Used to convert PO values to job currency for budget tracking. | Yes |
| Expected Ready Date | Date when materials are expected to be ready at the vendor’s facility. | No |
| Expected Ship Date | Date when materials are expected to ship from the vendor. | No |
| Expected Arrival Date | Date when materials are expected to arrive at the delivery location. | No |
| Delivery Location | Address or site where materials should be delivered (free text). | No |
| Billing Address | Company billing address. Selected from the organization’s configured addresses. | No |
| INCOTERMS | International Commercial Terms defining responsibility for shipping and insurance. See INCOTERMS below. | No |
| INCOTERMS Location | The named place associated with the selected INCOTERM (e.g., “Muscat Port”, “Vendor Warehouse, Mumbai”). | No |
| Notes | Internal notes visible only within JobNext (not printed on PO document). | No |
| Attachment | File attachments (drawings, specs, vendor correspondence). Linked to the DMS. | No |
Order-Level Amount Fields
These fields summarize the PO’s financial totals and are computed from line items:
| Field | Description |
|---|---|
| Net Item Amount | Sum of all line-item net amounts (base amount − discount + item taxes). |
| Order Tax % | Order-level tax percentage applied on top of the net item amount (if applicable). |
| Order Tax Amount | Computed order-level tax: Net Item Amount × Order Tax %. |
| Discount | Order-level discount amount (in PO currency). Applied before gross calculation. |
| Freight | Freight / shipping charges added to the order. |
| Other Charges | Any additional charges (handling, packing, insurance, etc.). |
| Order Tax Total | Sum of all tax amounts (line-level + order-level). |
| Gross Amount | Final PO value: Net Items + Order Tax − Discount + Freight + Other Charges. |
PO Line Items (Detail)
Each PO contains one or more line items representing individual materials being ordered. Line items are stored in the omni_purchase_order_detail table.
| Field | Description |
|---|---|
| Material | The material being ordered (from Material Master). Includes material code, name, and specification. |
| UOM | Unit of measurement for this line item (e.g., Kg, Nos, Mtr, Bag, Ltr). |
| Quantity | Number of units being ordered. |
| Basic Rate | Unit price for the material in the PO currency (before tax and discount). |
| Base Amount | Quantity × Basic Rate. The subtotal before adjustments. |
| FOC Qty | Free of Charge quantity — additional units the vendor provides at no cost. Common for bulk orders or promotional offers. |
| Discount % | Line-level discount percentage applied to the base amount. |
| Discount Amount | Computed discount: Base Amount × Discount %. Reduces the taxable amount. |
| Tax 1 (e.g., CGST) | First tax component — selected from the tax master. The rate and amount are stored separately. |
| Tax 2 (e.g., SGST) | Second tax component (dual GST model). For inter-state transactions, Tax 1 = IGST and Tax 2 is not used. |
| Net Amount | Final line amount: Base Amount − Discount + Tax 1 + Tax 2. |
| Inventory Value Rate (Job CCY) | Rate used for inventory valuation, converted to the job currency. This is the rate at which received stock is valued. |
| Qty Received | Total quantity received so far against this line (updated by MRN). Read-only. |
| Qty Accepted | Total quantity accepted (received minus rejected). Read-only. |
| Item Notes | Per-line notes for special instructions (e.g., “Deliver to Gate 3”, “Grade 43C only”). |
JobNext supports a dual tax structure on every line item. For Indian GST, Tax 1 = CGST and Tax 2 = SGST (intra-state), or Tax 1 = IGST with Tax 2 blank (inter-state). For GCC VAT, Tax 1 = VAT with Tax 2 blank. The same structure handles any two-component tax regime.
Payment Terms
Payment terms define when and how the vendor will be paid. Each PO can have one or more payment milestones stored in the omni_purchase_order_paymentterms table.
| Field | Description |
|---|---|
| Payment Days | Number of days after the payment event when payment is due (e.g., Net 30, Net 60). |
| Payment Quantum | Percentage of the PO value to be paid at this milestone (e.g., 50% advance, 50% on delivery). |
| Payment Event | The trigger event for this payment — e.g., “On Order”, “On Delivery”, “On Invoice”, “On Acceptance”. |
| Payment Mode | How payment will be made — e.g., Bank Transfer, Cheque, Cash, Letter of Credit. |
| Discount Days | Early payment discount — if paid within this many days, a discount applies. |
| Discount Percent | The early payment discount percentage if paid within discount days. |
A single PO can have multiple payment milestones. For example: 30% advance on order placement, 60% on delivery and MRN acceptance, and 10% retention released after 90 days. Each milestone generates its own payment voucher when triggered.
Terms & Conditions
POs include standard and custom terms & conditions that define the contractual obligations between the buyer and vendor. Terms are stored in the omni_purchase_order_termsandconditions table.
- Template-based — Select from pre-configured T&C templates defined in the master settings. Each template has a term ID and default text.
- Customizable — The terms text can be edited per PO to add special conditions, modify default clauses, or remove inapplicable terms.
- Printed on PO document — All T&Cs are included in the SSRS PO report document sent to the vendor.
Common T&C categories include:
- Delivery schedule and penalties for late delivery
- Quality inspection and acceptance criteria
- Warranty and guarantee terms
- Liquidated damages for non-performance
- Insurance and liability clauses
- Force majeure conditions
- Dispute resolution and jurisdiction
INCOTERMS
International Commercial Terms (INCOTERMS) define the responsibilities for shipping, insurance, and customs clearance. JobNext supports all 11 standard INCOTERMS 2020:
| Code | Term | Risk Transfers At |
|---|---|---|
| EXW | Ex Works | Vendor’s premises — buyer bears all transport risk |
| FCA | Free Carrier | Named place of delivery (carrier pickup) |
| CPT | Carriage Paid To | Named destination — vendor pays freight |
| CIP | Carriage & Insurance Paid To | Named destination — vendor pays freight + insurance |
| DAP | Delivered At Place | Named destination (unloaded from vehicle) |
| DPU | Delivered at Place Unloaded | Named destination (unloaded by vendor) |
| DDP | Delivered Duty Paid | Named destination — vendor handles all duties/taxes |
| FAS | Free Alongside Ship | Port of shipment (alongside vessel) |
| FOB | Free On Board | Port of shipment (loaded on vessel) |
| CFR | Cost & Freight | Port of destination — vendor pays freight |
| CIF | Cost, Insurance & Freight | Port of destination — vendor pays freight + insurance |
INCOTERMS are essential for international procurement and inter-emirate/inter-state shipments. They determine who pays freight, who insures the cargo, and at what point risk transfers from vendor to buyer. For local purchases where the vendor delivers to your site, DDP or DAP are the most common choices.
Multi-Currency Support
JobNext POs support multi-currency ordering, which is critical for international procurement:
- PO Currency — The currency in which the vendor is paid. Set at the PO header level (e.g., a vendor in India is paid in INR, a GCC vendor in OMR or AED).
- Job Currency — The base currency of the job/project. Used for budget tracking and cost reporting.
- Exchange Rate — The conversion rate from PO currency to job currency. This rate is set at the time of PO creation and used to convert PO values for budget comparison.
- Inventory Valuation — Each line item has an
item_inventory_value_rate_in_jobccyfield, which stores the rate in job currency used for stock valuation when materials are received.
The exchange rate set on the PO is used for budget tracking purposes. If exchange rates fluctuate significantly between PO creation and actual payment, the variance is captured as a foreign exchange gain/loss in the finance module.
Approval Workflow
POs follow the organization’s configured approval workflow. The approval is triggered when a user clicks Approve on a Draft PO (calls omni_sp_scm_ApprovePurchaseOrder).
Approval Hierarchy
- Value-Based — Different approvers based on PO amount thresholds. For example: up to 10,000 = Site Manager, 10,001–100,000 = Procurement Head, above 100,000 = Director.
- Category-Based — Specialized approvers for specific material categories (e.g., structural steel may need engineering sign-off, safety equipment may need HSE approval).
- Multi-Level Sequential — PO passes through multiple approval levels in sequence (e.g., Site Engineer → Procurement Manager → Finance → Management).
What Happens on Approval
- PO status changes from Draft to Approved.
- Approved-by user and timestamp are recorded.
- Approver comments are stored for audit trail.
- The PO becomes available for material receiving (MRN).
- The vendor can view the PO through the Vendor Portal (if enabled).
- The PO value is committed against the job’s material budget.
Rejection
If a PO is rejected during the approval process, it returns to Draft status with reviewer comments. The PO creator can then revise the order (adjust quantities, rates, or terms) and resubmit, or cancel the PO entirely.
PO Statuses
| Status | Badge Color | Description | Allowed Actions |
|---|---|---|---|
| Draft | Blue | PO is being prepared. All fields are editable. Not yet committed or visible to vendor. | Edit, Add/Remove Items, Approve, Cancel, Delete |
| Approved | Green | PO has been approved and dispatched to vendor. Budget is committed. MRN can be created. | View, Amend, Create MRN, Register Bill |
| Cancelled | Red | PO has been cancelled. No further actions are possible. Budget commitment is released. | View only |
Payment Statuses
In addition to the PO document status, the system tracks payment progress:
| Payment Status | Badge Color | Description |
|---|---|---|
| Unpaid | Amber | No payments have been made against this PO. |
| Partially Paid | Blue | Some payment milestones or partial bills have been settled. |
| Paid | Green | All vendor bills against this PO have been fully paid. |
PO Amendments
After a PO is approved, it may need modifications due to changed requirements, vendor negotiations, or scope changes. JobNext handles this through the Amendment process rather than editing the original PO:
-
Initiate Amendment — On an Approved PO, click Amend from the row actions. The system creates a new Draft PO linked to the original via the
original_po_idfield. - Make changes — The amended PO is a full copy of the original. You can modify quantities, add/remove line items, change rates, update delivery dates, or revise terms & conditions.
- Submit for approval — The amended PO goes through the standard approval workflow. Approvers can see what changed from the original.
- Approved amendment replaces original — Once approved, the amended PO becomes the active version. The original PO’s budget commitment is adjusted to reflect the new values.
You cannot amend a PO if materials have already been received (MRN exists) for the affected line items beyond the new requested quantity. The system validates that the amended quantity is not less than the already-received quantity. Received quantities (item_qty_recvd) are carried forward to the amended PO.
Tax Handling
POs support tax at two levels, providing flexibility for various tax regimes:
Line-Level Tax (Per Item)
Each line item can have two independent tax components applied:
- Tax 1 — First tax component (e.g., CGST @ 9%, VAT @ 5%, IGST @ 18%)
- Tax 2 — Second tax component (e.g., SGST @ 9%). Left blank for single-tax regimes.
Tax is computed on the post-discount amount: (Base Amount − Discount) × Tax Rate.
Order-Level Tax
An additional tax can be applied at the PO header level on the aggregate net item amount. This is used for surcharges, cess, or additional duties that apply to the whole order.
The omni_purchase_order_taxes table stores additional order-level tax entries with their individual tax IDs, percentages, and computed amounts.
Delivery Tracking
Three date fields on the PO header let you plan and track delivery milestones:
| Date | Purpose | Example |
|---|---|---|
| Expected Ready Date | When materials will be ready at the vendor’s facility. | Vendor confirms manufacturing will be complete by 15-Mar. |
| Expected Ship Date | When materials will be dispatched from the vendor. | Shipping scheduled for 18-Mar from vendor warehouse. |
| Expected Arrival Date | When materials are expected to arrive at the delivery location. | Expected at site on 25-Mar (7 days transit time). |
Actual delivery is tracked through Material Receipt Notes (MRN). Each MRN records what was actually delivered, the date, and the accepted vs. rejected quantities. Partial deliveries are fully supported — the PO line item’s Qty Received and Qty Accepted fields update incrementally with each MRN.
Downstream Documents
An approved PO drives several downstream activities. Here is the complete chain from PO to payment:
| Step | Document | Module | What Happens |
|---|---|---|---|
| 1 | Material Receipt Note (MRN) | Logistics | Record physical delivery of materials. Accept or reject items. Each MRN references the PO and updates received quantities. Multiple MRNs are allowed per PO (partial deliveries). |
| 2 | Stock Lots | Logistics | On MRN approval, stock lots are automatically created in the warehouse. Lot tracking includes source PO, MRN reference, received date, and inventory value rate. |
| 3 | Vendor Bill | Finance | Register the vendor’s invoice against one or more MRNs. The bill summary SP (omni_sp_finance_GetPOBillSummary) validates bill amounts against PO values and received quantities. |
| 4 | Payment Voucher | Finance | Process payment to the vendor based on the registered bill and payment terms. Creates accounting entries in the ledger (omni_account_voucher_entry). |
Full Traceability
Every Purchase Order maintains a complete audit trail in both directions:
| Direction | Links |
|---|---|
| Backward (Source) |
|
| Forward (Destination) |
|
| Amendment Chain | Amended PO → Original PO (original_po_id). Allows tracking the full revision history of an order. |
PO Document (SSRS Report)
The printable PO document is generated as an SSRS report and contains:
| Section | Contents |
|---|---|
| Header | Company logo, company name and address, PO code, PO date, vendor name and address, job reference, INCOTERMS. |
| Line Items | Material code, description, UOM, quantity, rate, base amount, discount, tax 1, tax 2, net amount. One row per line item. |
| Totals | Net item total, order-level tax, discount, freight, other charges, grand total in PO currency and job currency equivalent. |
| Payment Terms | Payment milestones with event triggers, payment mode, and days. |
| Terms & Conditions | All T&C clauses as numbered list. |
| Delivery Details | Expected dates, delivery location, INCOTERMS location. |
| Continuation Sheet | For POs with many line items, the report uses continuation sheets with running subtotals. |
| Signature Block | Prepared by, checked by, approved by — with name, designation, and date fields. |
JobNext includes multiple PO report templates for different company formats: standard (omni_sp_reports_PO), MTS format (omni_sp_reports_PO_MTS), OIG format (omni_sp_reports_PO_OIG), Oman variant (omni_sp_reports_PO_oman), Turnkey format (omni_sp_reports_PO_turnkey), and Comparative Statement PO (omni_sp_reports_ComparativeStatementPO). The active template is configured per company.
Bulk PO Upload
For legacy data migration or bulk order creation, JobNext supports uploading POs from a spreadsheet via the omni_upload_purchase_order staging table. The upload template includes:
| Column | Description |
|---|---|
| Job Code | The job code this PO belongs to. |
| Legacy PO No | The original PO number from the legacy system. |
| Legacy PO Date | Original PO date. |
| PO Currency | Currency code (e.g., OMR, INR). |
| Exchange Rate | PO-to-job currency exchange rate. |
| Vendor Code | Vendor code from the Vendor Directory. |
| Material Code | Material code from the Material Master. |
| Quantity | Order quantity. |
| UOM Code | Unit of measurement code. |
| Rate | Unit rate in PO currency. |
| Item Tax 1 Code / Tax 2 Code | Tax codes for dual tax components. |
| Freight / Discount / Other Charges | Order-level amounts. |
| PO Title / PO Notes | Description and internal notes. |
| Payment Term Days | Default payment days. |
Budget Control
PO values are tracked against the approved material budget for the job:
- Budget Availability Check — At PO creation, the system checks if sufficient budget exists for the ordered materials. If the PO value exceeds the available budget, the system can either warn or block depending on configuration.
- Budget Commitment — On PO approval, the PO value is committed against the budget. This reduces the “available” budget even before materials are delivered or paid for.
- Budget Burn Tracking — The Material Budget Burn report (
omni_sp_reports_MaterialBudgetBurn) shows estimated vs. ordered vs. received vs. paid amounts, giving real-time visibility into procurement spending. - Variance Analysis — Comparing PO rates against estimate rates reveals procurement efficiency. The system tracks purchase rates vs. budget rates at the material level.
Available Reports
| Report | Description |
|---|---|
| Purchase Order | Formal PO document for the vendor (multiple format variants available). |
| PO Tracking | Track delivery status across all POs — ordered qty vs. received qty vs. pending qty. |
| PO Pending | List of approved POs with pending deliveries (materials not yet received). |
| Material Purchase Rates | Comparison of purchase rates across POs for the same material — useful for rate trend analysis. |
| Material Offer Rates | Historical vendor offer rates for materials — helps in future negotiations. |
| Purchase by Vendor Summary/Detail | Total procurement value grouped by vendor with drill-down to individual POs. |
| Purchase Register | Comprehensive register of all purchase transactions with tax details (GST compliance). |
| Material Budget Burn | Budget vs. actual spending at the material level (estimate → MR → PO → MRN → Bill chain). |
| MR to MRN Tracking | End-to-end procurement tracking from Material Requisition through to receipt. |
| Vendor Liability Summary | Outstanding vendor balances across all POs and bills. |
| Vendor Ageing | Age analysis of unpaid vendor invoices. |
Best Practices
- Always use the standard procurement path for high-value purchases — MR → RFQ → Comparative Statement → PO. This ensures competitive pricing and a complete audit trail. Reserve Quick Orders for genuinely urgent or low-value items.
- Set realistic delivery dates on the PO header. Use all three date fields (Ready, Ship, Arrival) to track the full delivery pipeline, especially for imported materials with long lead times.
- Specify INCOTERMS for international purchases to clearly define shipping responsibility, insurance coverage, and risk transfer points.
- Use multiple payment milestones to protect against non-delivery. Avoid 100% advance payment; instead, structure payments across order, delivery, and acceptance events.
- Review budget impact before approving a PO. Use the Material Budget Burn report to ensure the order fits within the allocated budget for the job.
- Use amendments, not cancellations, when an approved PO needs changes. Amendments preserve the history and maintain the audit trail. Only cancel a PO when it is no longer needed at all.
- Attach supporting documents to the PO — vendor quotation, technical drawings, material test certificates, or approval emails. This provides a complete procurement file for audits.