Ctrl+K

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.

How to View a Purchase Order 0:42
Navigation: Main Menu → ProcurementPurchase Order

PO List Grid

Purchase Orders list showing PO codes, descriptions, vendors, amounts, job codes, and status indicators
Purchase Orders list view with date-range filter and per-row action dropdown.

The PO list displays all purchase orders created within the selected date range. The default filter period is the last 30 days.

ColumnDescription
CodeSystem-generated PO code. Format: PO/{JobCode}/{SeqId} (e.g., PO/MSD44/47632). Links the PO to the job it was raised for.
PO DescriptionFree-text description entered during PO creation (e.g., “PO FOR ARABIAN TECHNICAL MARKETING”).
VendorName of the vendor the order was placed with (from Vendor Directory).
PO DateDate the PO was created (DD-MM-YYYY format).
Job CodeThe project/job code this PO is charged against.
JobFull name of the job (e.g., “Head Office”, “Muscat Sohar Highway”).
Net AmountTotal value of line items before order-level tax, freight, and other charges.
Gross AmountTotal PO value including all taxes, discount, freight, and other charges.
CurrencyPO currency (e.g., OMR, INR, AED, USD).
StatusCurrent 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:

ActionWhat It Does
ViewOpens the PO as a printable SSRS report document with full header, line items, terms & conditions, and signature blocks.
ItemsOpens the PO detail view to see/edit line items, taxes, delivery dates, and payment terms.
DetailsExpands an inline detail panel below the row showing key PO information.
ApproveSubmits the PO for approval (only visible for Draft status POs). Triggers the configured approval workflow.
AmendCreates a revised version of an approved PO. Available only for Approved POs. See Amendments.
CancelCancels 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:

Purchase Order lifecycle flowchart showing creation from three sources, draft, approval decision, MRN receiving, vendor bill, and payment
PO lifecycle: from creation through approval, delivery, billing, and payment.

Creating a Purchase Order

There are three ways to create a Purchase Order in JobNext. Each addresses a different procurement scenario:

How to Create PO from Vendor Offer 0:36
Creation PathSourceWhen to UseKey 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:

  1. Open the Comparative Statement — Navigate to Procurement → RFQ, select the RFQ, and click Comparative Statement from the row actions.
  2. 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.
  3. Click “Create PO” — From the selected offer, click Create PO. The system calls omni_sp_scm_CreatePurchaseOrder and auto-populates the PO with all data from the offer: vendor details, material specifications, quantities, unit rates, tax rates, FOC quantities, and delivery terms.
  4. Review PO header — Verify the auto-populated header data: PO description, vendor, PO date, currency, exchange rate, expected delivery dates, and billing address.
  5. Review line items — Check each material line for quantity, rate, discount, tax (Tax 1 + Tax 2), FOC qty, and line notes. Adjust as needed.
  6. Set payment & delivery terms — Add payment terms, INCOTERMS, delivery location, and terms & conditions. These can be selected from templates or entered manually.
  7. Attach documents — Optionally attach supporting documents (drawings, specifications, vendor correspondence) to the PO.
  8. Submit for approval — Save the PO (status: Draft), then click Approve to send it through the configured approval workflow.
Auto-Population from Offer

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

  1. Create a Quick Purchase Order — Go to Procurement → Quick Orders and create a new QPO with vendor, job, materials, and quantities. See Quick Orders.
  2. Convert to PO — Once the QPO is reviewed, use the Convert to PO action. The system creates a full PO from the QPO data.
  3. Review and approve — The converted PO follows the standard approval workflow.

Path 3: From Rate Contract

  1. Select materials from contract — Go to Procurement → Rate Contract, open the active contract, and select the materials you need to order.
  2. Generate PO — Click Generate PO. The system creates a PO with pre-agreed rates from the contract. The rate_contract_id field links the PO back to the contract.
  3. 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.

FieldDescriptionRequired
PO CodeAuto-generated. Format: PO/{JobCode}/{SeqId}. Generated by the object sequence system (omni_sp_GetObjectCode).Auto
PO DescriptionFree-text title describing the order purpose (e.g., “SAFETY ITEMS”, “STRUCTURAL STEEL FOR PHASE 2”). Supports rich text.Yes
JobThe job/project this PO is charged against. Determines the budget that is tracked.Yes
VendorThe vendor the order is placed with. Must be a registered vendor from the Vendor Directory.Yes
Vendor OfferThe vendor offer this PO was generated from (if applicable). Links to the RFQ/offer chain for traceability.If from RFQ
PO DateThe date of the purchase order. Defaults to today.Yes
PO CurrencyThe currency in which the order is placed (e.g., OMR, INR, AED, USD). May differ from the job currency.Yes
Job Currency Exchange RateExchange 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 DateDate when materials are expected to be ready at the vendor’s facility.No
Expected Ship DateDate when materials are expected to ship from the vendor.No
Expected Arrival DateDate when materials are expected to arrive at the delivery location.No
Delivery LocationAddress or site where materials should be delivered (free text).No
Billing AddressCompany billing address. Selected from the organization’s configured addresses.No
INCOTERMSInternational Commercial Terms defining responsibility for shipping and insurance. See INCOTERMS below.No
INCOTERMS LocationThe named place associated with the selected INCOTERM (e.g., “Muscat Port”, “Vendor Warehouse, Mumbai”).No
NotesInternal notes visible only within JobNext (not printed on PO document).No
AttachmentFile 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:

FieldDescription
Net Item AmountSum 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 AmountComputed order-level tax: Net Item Amount × Order Tax %.
DiscountOrder-level discount amount (in PO currency). Applied before gross calculation.
FreightFreight / shipping charges added to the order.
Other ChargesAny additional charges (handling, packing, insurance, etc.).
Order Tax TotalSum of all tax amounts (line-level + order-level).
Gross AmountFinal 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.

FieldDescription
MaterialThe material being ordered (from Material Master). Includes material code, name, and specification.
UOMUnit of measurement for this line item (e.g., Kg, Nos, Mtr, Bag, Ltr).
QuantityNumber of units being ordered.
Basic RateUnit price for the material in the PO currency (before tax and discount).
Base AmountQuantity × Basic Rate. The subtotal before adjustments.
FOC QtyFree 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 AmountComputed 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 AmountFinal 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 ReceivedTotal quantity received so far against this line (updated by MRN). Read-only.
Qty AcceptedTotal quantity accepted (received minus rejected). Read-only.
Item NotesPer-line notes for special instructions (e.g., “Deliver to Gate 3”, “Grade 43C only”).
Dual GST Tax Model

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.

FieldDescription
Payment DaysNumber of days after the payment event when payment is due (e.g., Net 30, Net 60).
Payment QuantumPercentage of the PO value to be paid at this milestone (e.g., 50% advance, 50% on delivery).
Payment EventThe trigger event for this payment — e.g., “On Order”, “On Delivery”, “On Invoice”, “On Acceptance”.
Payment ModeHow payment will be made — e.g., Bank Transfer, Cheque, Cash, Letter of Credit.
Discount DaysEarly payment discount — if paid within this many days, a discount applies.
Discount PercentThe early payment discount percentage if paid within discount days.
Multiple Payment Milestones

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:

CodeTermRisk Transfers At
EXWEx WorksVendor’s premises — buyer bears all transport risk
FCAFree CarrierNamed place of delivery (carrier pickup)
CPTCarriage Paid ToNamed destination — vendor pays freight
CIPCarriage & Insurance Paid ToNamed destination — vendor pays freight + insurance
DAPDelivered At PlaceNamed destination (unloaded from vehicle)
DPUDelivered at Place UnloadedNamed destination (unloaded by vendor)
DDPDelivered Duty PaidNamed destination — vendor handles all duties/taxes
FASFree Alongside ShipPort of shipment (alongside vessel)
FOBFree On BoardPort of shipment (loaded on vessel)
CFRCost & FreightPort of destination — vendor pays freight
CIFCost, Insurance & FreightPort of destination — vendor pays freight + insurance
When to Use INCOTERMS

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_jobccy field, which stores the rate in job currency used for stock valuation when materials are received.
Exchange Rate Impact

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).

How to Approve a Purchase Order 0:37

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

  1. PO status changes from Draft to Approved.
  2. Approved-by user and timestamp are recorded.
  3. Approver comments are stored for audit trail.
  4. The PO becomes available for material receiving (MRN).
  5. The vendor can view the PO through the Vendor Portal (if enabled).
  6. 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

StatusBadge ColorDescriptionAllowed 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 StatusBadge ColorDescription
UnpaidAmberNo payments have been made against this PO.
Partially PaidBlueSome payment milestones or partial bills have been settled.
PaidGreenAll 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:

How to Amend a Purchase Order 0:37
  1. 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_id field.
  2. 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.
  3. Submit for approval — The amended PO goes through the standard approval workflow. Approvers can see what changed from the original.
  4. 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.
Amendment Constraints

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:

DatePurposeExample
Expected Ready DateWhen materials will be ready at the vendor’s facility.Vendor confirms manufacturing will be complete by 15-Mar.
Expected Ship DateWhen materials will be dispatched from the vendor.Shipping scheduled for 18-Mar from vendor warehouse.
Expected Arrival DateWhen 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:

StepDocumentModuleWhat 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:

DirectionLinks
Backward (Source)
  • PO → Vendor Offer (vendor_offer_id)
  • Offer → RFQ → Material Requisition (MR)
  • MR → Job Estimate / Budget
  • Or: PO → Quick Order (Source_PKID)
  • Or: PO → Rate Contract (rate_contract_id)
Forward (Destination)
  • PO → MRN(s) (material receipts)
  • MRN → Stock Lots (inventory)
  • PO → Vendor Bill(s) (invoicing)
  • Bill → Payment Voucher(s) (settlement)
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:

SectionContents
HeaderCompany logo, company name and address, PO code, PO date, vendor name and address, job reference, INCOTERMS.
Line ItemsMaterial code, description, UOM, quantity, rate, base amount, discount, tax 1, tax 2, net amount. One row per line item.
TotalsNet item total, order-level tax, discount, freight, other charges, grand total in PO currency and job currency equivalent.
Payment TermsPayment milestones with event triggers, payment mode, and days.
Terms & ConditionsAll T&C clauses as numbered list.
Delivery DetailsExpected dates, delivery location, INCOTERMS location.
Continuation SheetFor POs with many line items, the report uses continuation sheets with running subtotals.
Signature BlockPrepared by, checked by, approved by — with name, designation, and date fields.
Report Variants

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:

ColumnDescription
Job CodeThe job code this PO belongs to.
Legacy PO NoThe original PO number from the legacy system.
Legacy PO DateOriginal PO date.
PO CurrencyCurrency code (e.g., OMR, INR).
Exchange RatePO-to-job currency exchange rate.
Vendor CodeVendor code from the Vendor Directory.
Material CodeMaterial code from the Material Master.
QuantityOrder quantity.
UOM CodeUnit of measurement code.
RateUnit rate in PO currency.
Item Tax 1 Code / Tax 2 CodeTax codes for dual tax components.
Freight / Discount / Other ChargesOrder-level amounts.
PO Title / PO NotesDescription and internal notes.
Payment Term DaysDefault 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

ReportDescription
Purchase OrderFormal PO document for the vendor (multiple format variants available).
PO TrackingTrack delivery status across all POs — ordered qty vs. received qty vs. pending qty.
PO PendingList of approved POs with pending deliveries (materials not yet received).
Material Purchase RatesComparison of purchase rates across POs for the same material — useful for rate trend analysis.
Material Offer RatesHistorical vendor offer rates for materials — helps in future negotiations.
Purchase by Vendor Summary/DetailTotal procurement value grouped by vendor with drill-down to individual POs.
Purchase RegisterComprehensive register of all purchase transactions with tax details (GST compliance).
Material Budget BurnBudget vs. actual spending at the material level (estimate → MR → PO → MRN → Bill chain).
MR to MRN TrackingEnd-to-end procurement tracking from Material Requisition through to receipt.
Vendor Liability SummaryOutstanding vendor balances across all POs and bills.
Vendor AgeingAge analysis of unpaid vendor invoices.

Best Practices

  1. 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.
  2. 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.
  3. Specify INCOTERMS for international purchases to clearly define shipping responsibility, insurance coverage, and risk transfer points.
  4. Use multiple payment milestones to protect against non-delivery. Avoid 100% advance payment; instead, structure payments across order, delivery, and acceptance events.
  5. 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.
  6. 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.
  7. Attach supporting documents to the PO — vendor quotation, technical drawings, material test certificates, or approval emails. This provides a complete procurement file for audits.