Purchasing Module — User Guide

Purchasing Module — User Guide

Requisitions, suppliers, and procurement.

ProductVertex ERP
ModulePurchasing (`modules/purchasing`)
AudiencePurchasing clerks, AP staff, and managers who confirm purchase orders and post vendor invoices
FormatHTML + Mermaid diagrams

1. Overview

The Purchasing module supports procure-to-pay on the expense side: purchase order → purchase invoice → Finance accounts payable. Suppliers and vendor payments are managed in Finance. Purchase requisitions exist as a lightweight register today.

Area Capability
Requisitions Numbered request register with free-text status
Orders Draft, confirm, convert to invoice, cancel
Invoices Create standalone or from order; post/unpost to Finance
Suppliers Finance partner sub-ledgers (Vendor type)
Payments Finance payment vouchers with allocations
flowchart LR Ven[Finance vendor] --> PO[Purchase order] PO --> PI[Purchase invoice] PI -->|Post| Fin[Finance JE and AP] Fin --> Pay[Payment voucher] Pay -->|Allocate| PI PR[Requisition register] -.->|Manual process| PO

Compared with Sales: same order/invoice status pattern, but partners are vendors, posting hits AP/expense/input VAT, and Purchasing adds a requisition entity.

Not in this module today: goods receipt, Inventory stock receipt, automatic warehouse posting, or automated requisition approval/convert-to-PO workflow.


2. Getting started

2.1 Prerequisites

flowchart TD A[Finance chart of accounts] --> B[Fiscal year and periods] B --> C[Currencies and rates] C --> D[Vendor partner sub-ledgers] D --> E[Purchasing permissions on roles] E --> F[Create orders and invoices]
  1. Finance chart of accounts ready (typical posting defaults include AP, expense, and input VAT accounts).
  2. Open fiscal year/periods.
  3. Currencies configured.
  4. Vendors created under Finance subsidiary vendors.
  5. Users granted Purchasing permissions (and Finance journal post for invoice posting).

2.2 Main navigation

Menu Path Behavior
Overview /purchasing/overview Overview presentation (prototype metrics)
Suppliers /purchasing/suppliers Redirects to Finance subsidiary vendors
Purchase orders /purchasing/purchase-orders Live purchase orders
Incoming invoices /purchasing/incoming-invoices Live purchase invoices
Supplier payments /purchasing/supplier-payments Redirects to Finance payment vouchers
Purchase requisitions /purchasing/requisitions Live requisition register

3. Suppliers

Suppliers are not owned by Purchasing. They are Finance partner sub-ledgers with partner type Vendor.

Field (Finance) Use in Purchasing
Code / name Shown in order and invoice partner pickers
Contact info Master data in Finance
GL account Optional AP control account override when posting
Active Prefer active vendors only

How to maintain: open Suppliers from the Purchasing menu (goes to Finance) or Finance → Subsidiary ledger — vendors.

When creating a purchase order or invoice, select the vendor from the partner list filtered to Vendor type.


4. Purchase requisitions

The requisition screen is a lightweight register.

Field Meaning
Requisition number Unique per tenant
Status Free-text string (default Draft)
flowchart TD A[Create requisition number] --> B[Optionally set status text] B --> C[Use as internal tracker] C --> D[Create PO manually in Orders]

Current limits:

  • No line items, vendor, dates, or amounts on the entity
  • No submit / approve / reject workflow methods
  • No convert-to-purchase-order action in the API

Use requisitions as an organizational checklist if needed, then create the formal purchase order under Purchase orders.


5. Purchase orders

5.1 Header fields

Field Meaning
Order number Unique per tenant
Partner Vendor sub-ledger
Order date Document date
Fiscal period Accounting period
Currency / exchange rate Document currency
Status Lifecycle state
Subtotal / tax / total Amounts
Notes Free text
Purchase invoice id Set after conversion

There is no formal foreign key from order to requisition in the current model.

5.2 Lines

Line number, description, quantity, unit price, line total (quantity × price), optional expense account.

5.3 Statuses

Status Meaning
Draft Editable / deletable
Confirmed Ready to convert to invoice
Invoiced Converted; cannot cancel
Cancelled Abandoned

5.4 Actions

Action From Rules
Create — Starts as Draft
Update / Delete Draft only Not after confirm
Confirm Draft Requires lines and total greater than zero
Convert to invoice Confirmed Creates Draft invoice; order becomes Invoiced
Cancel Draft or Confirmed Blocked if Invoiced
flowchart TD A[Create Draft PO] --> B[Confirm] B --> C[Confirmed] C --> D[Convert to invoice] D --> E[Order Invoiced] D --> F[Draft Purchase Invoice] A --> G[Cancel] C --> G

Convert defaults: invoice number often PI-{OrderNumber} if not supplied; due date typically invoice date + 30 days; copies vendor, period, currency, rate, notes, lines, and tax.


6. Purchase invoices

6.1 Header fields

Field Meaning
Invoice number Unique
Partner Vendor
Purchase order / requisition Optional links
Invoice date / due date Billing and payment due
Fiscal period / currency / rate Accounting context
Status Lifecycle
Subtotal / tax / total Amounts
Paid amount / open amount Open = Total − Paid
Journal entry Set after post
Notes Free text

6.2 Lines

Same shape as order lines. Optional expense account per line overrides the default expense account when posting.

6.3 Statuses

Status Meaning
Draft Editable / deletable / cancellable
Posted Posted to Finance; open AP
Partially paid Some payments allocated
Paid Fully allocated
Cancelled Abandoned (from Draft)

6.4 Create paths

  1. From order — Convert confirmed purchase order.
  2. Standalone — Create invoice directly (optional order/requisition ids on the DTO).

6.5 Actions

Action Rules
Create / Update / Delete Draft only for update/delete
Post Draft with total greater than zero → Finance JE + AP open item → Posted
Unpost Reverse Finance posting → Draft; blocked if payments exist
Cancel Draft only
flowchart TD A[Draft invoice] --> B[Post] B --> C[Posted] C --> D[Finance payment allocations] D --> E{Fully paid} E -->|No| F[Partially Paid] E -->|Yes| G[Paid] C --> H[Unpost if no payments] H --> A A --> I[Cancel]

6.6 Tax and amounts

Tax amount is maintained on the invoice header. On post, if tax is greater than zero, Finance debits the input VAT account. Total should equal subtotal + tax. Finance validates amount consistency within a small tolerance.


7. Supplier payments

Payments are not entered in Purchasing. Use Finance payment vouchers:

  1. Open Supplier payments from Purchasing (redirects to Finance payment vouchers) or Finance directly.
  2. Create a Payment for the vendor and treasury account.
  3. Allocate to the posted purchase invoice open item.
  4. Invoice paid/open amounts and status update via Finance allocation.

Unposting a payment allocation reverts the invoice payment amounts.

flowchart TD A[Posted Purchase Invoice] --> B[Finance Payment voucher] B --> C[Allocate to invoice] C --> D[PaidAmount increases] D --> E[Status PartiallyPaid or Paid]

8. Overview screen

/purchasing/overview provides a purchasing overview for navigation and summary presentation. Treat operational truth as the live Purchase orders, Incoming invoices, and Requisitions lists plus Finance vendor/payment screens.


9. Permissions summary

Permission group: Purchasing.

Permission Typical use
Requisitions List/create/update/delete requisition register
Orders List and view purchase orders
Orders.Create Create orders
Orders.Update Confirm, cancel, convert to invoice
Orders.Delete Delete draft orders
Invoices List and view invoices
Invoices.Create Create invoices / convert
Invoices.Update Update, unpost, cancel
Invoices.Delete Delete draft invoices
Invoices.Post Post invoice to Finance

Posting also requires Finance ability to post journal entries. Convert needs both order update and invoice create rights. Ensure roles that use Incoming invoices have Invoices permissions, not only Requisitions/Orders.


10. Integration with Finance

flowchart TB subgraph Purchasing PR[Requisition] O[Purchase Order] I[Purchase Invoice] end subgraph Finance V[Vendor PartnerSubLedger] JE[Journal Entry] SL[AP Sub-ledger transaction] PV[Payment voucher] end V --> O V --> I O -->|Convert| I I -->|Post| JE I -->|Post| SL PV -->|Allocate| I PR -.-> O
Event Finance effect
Invoice Post Debit expense (and input VAT if tax), credit AP; create vendor sub-ledger invoice open item; store journal entry id
Invoice Unpost Reverse posting if no payments applied
Payment allocation Increases PaidAmount; may set PartiallyPaid / Paid
Vendor master Maintained only in Finance

Default posting accounts are configured in Finance posting services (AP, expense, input VAT), with optional overrides from vendor GL account or invoice line expense account.


Appendix A — Quick procedures

A.1 Order to pay

  1. Ensure vendor exists in Finance.
  2. Create purchase order → Confirm.
  3. Convert to invoice.
  4. Post the invoice.
  5. Create Finance payment and allocate to the invoice until Paid.

A.2 Standalone vendor invoice

  1. Create Draft purchase invoice with lines, tax, and totals.
  2. Post.
  3. Pay via Finance payment allocations.

A.3 Correct a posted invoice before payment

  1. Ensure PaidAmount is still zero.
  2. Unpost → Draft.
  3. Edit and post again, or cancel the draft if abandoning.

A.4 Use a requisition as a tracker

  1. Create a requisition with a clear number.
  2. Update status text per your internal process.
  3. Create the purchase order separately when ready to buy.

Appendix B — Operating notes

Topic Guidance
Inventory / GRN No goods receipt or stock posting from Purchasing in the current module
Requisitions Register only; no automated convert to PO
Multi-line UI Create dialogs may focus on simple line entry; use capabilities exposed in your build
Invoice cancel Available in API for Draft; confirm UI button availability in your build
Menu vs route policy Incoming invoices route requires Purchasing.Invoices
Overview Use for orientation; rely on Orders/Invoices/Finance for transactions

Appendix C — Document control

Item Value
Title Purchasing Module User Guide
Source of truth modules/purchasing and frontend/src/app/modules/purchasing
Format Markdown + Mermaid (PDF edition embeds rendered figures)
Screenshots Not included (by design)

This guide describes functional capabilities of the Purchasing module as implemented in the Vertex ERP codebase. UI labels may appear in English or Arabic depending on language settings.