Purchase Management — Features (Full Detail)

← Back to Purchase Management overview

Features (Full Detail) — Purchase Management

Current version: v1.0.0

Enterprise purchase and procurement management for Perfex CRM

This page explains module capabilities in depth so new users understand what each feature does, why it matters, and how to use it inside Perfex CRM.

Feature catalog (explained)

Every major capability below is explained in plain language — what it is, why it helps, and how to use it.

1. Supplier master with contacts, attachments, ledger, and statement PDF

In plain words: Supplier master with contacts, attachments, ledger, and statement PDF

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Open the list screen for this data, use Import / Export / PDF buttons (or the bulk actions menu), follow the template columns, then verify a few rows after upload.

2. CSV and Excel export

In plain words: CSV and Excel export

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Open the list screen for this data, use Import / Export / PDF buttons (or the bulk actions menu), follow the template columns, then verify a few rows after upload.

3. Opening balance and credit tracking

In plain words: Opening balance and credit tracking

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Open Purchase Management in the admin sidebar, then use the related menu screen for this capability.

4. Draft → submit → approval workflow

In plain words: Draft → submit → approval workflow

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Create a draft record, submit it, then have an approver open the same record and Approve / Reject. Approvers need the approve permission on their role.

5. Line items (catalog or manual when enabled)

In plain words: Line items (catalog or manual when enabled)

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Open Purchase Management in the admin sidebar, then use the related menu screen for this capability.

6. Attachments and convert-to-PO

In plain words: Attachments and convert-to-PO

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Open Purchase Management in the admin sidebar, then use the related menu screen for this capability.

7. RFQ creation from PR or standalone

In plain words: RFQ creation from PR or standalone

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Open Purchase Management in the admin sidebar, then use the related menu screen for this capability.

8. Supplier quotation entry, comparison, and award

In plain words: Supplier quotation entry, comparison, and award

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Open Purchase Management in the admin sidebar, then use the related menu screen for this capability.

9. Email invitation to suppliers

In plain words: Email invitation to suppliers

Why it matters: This reduces manual work so agents can focus on exceptions and high-value customers.

How to use it: Open Purchase Management in the admin sidebar, then use the related menu screen for this capability.

10. RFQ PDF download —

In plain words: RFQ PDF download:

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Open the list screen for this data, use Import / Export / PDF buttons (or the bulk actions menu), follow the template columns, then verify a few rows after upload.

11. Tax, discount, shipping, terms

In plain words: Tax, discount, shipping, terms

Why it matters: This supports compliance, audit readiness, and on-time operations so nothing important is missed.

How to use it: Open Purchase Management in the admin sidebar, then use the related menu screen for this capability.

12. Email with PDF attachment

In plain words: Email with PDF attachment

Why it matters: This reduces manual work so agents can focus on exceptions and high-value customers.

How to use it: Open the list screen for this data, use Import / Export / PDF buttons (or the bulk actions menu), follow the template columns, then verify a few rows after upload.

13. Receipt tracking (partial / full)

In plain words: Receipt tracking (partial / full)

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Open Purchase Management in the admin sidebar, then use the related menu screen for this capability.

14.

In plain words:

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Open Purchase Management in the admin sidebar, then use the related menu screen for this capability.

15. Warehouse integration modes — auto, required, disabled

In plain words: Warehouse integration modes: auto, required, disabled

Why it matters: This keeps stock quantities accurate across warehouses so sales and purchasing decisions stay reliable.

How to use it: Enable credentials in Purchase Management → Settings (API keys, webhooks, sandbox/production). Test with a sample record, then monitor the module log or sync screen.

16. Stock movement hooks for Inventory Management module

In plain words: Stock movement hooks for Inventory Management module

Why it matters: This keeps stock quantities accurate across warehouses so sales and purchasing decisions stay reliable.

How to use it: Open Purchase Management in the admin sidebar, then use the related menu screen for this capability.

17. PDF export

In plain words: PDF export

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Open the list screen for this data, use Import / Export / PDF buttons (or the bulk actions menu), follow the template columns, then verify a few rows after upload.

18. Three-way match (PO qty/price vs GRN received qty)

In plain words: Three-way match (PO qty/price vs GRN received qty)

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Open Purchase Management in the admin sidebar, then use the related menu screen for this capability.

19. Partial billing support

In plain words: Partial billing support

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Open Purchase Management in the admin sidebar, then use the related menu screen for this capability.

20. Approve / reject / cancel workflow

In plain words: Approve / reject / cancel workflow

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Create a draft record, submit it, then have an approver open the same record and Approve / Reject. Approvers need the approve permission on their role.

21. Multi-bill split allocations (on-account supported)

In plain words: Multi-bill split allocations (on-account supported)

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Open Purchase Management in the admin sidebar, then use the related menu screen for this capability.

22. Void reverses all allocations and bill balances

In plain words: Void reverses all allocations and bill balances

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Open Purchase Management in the admin sidebar, then use the related menu screen for this capability.

23. Payment receipt PDF

In plain words: Payment receipt PDF

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Open the list screen for this data, use Import / Export / PDF buttons (or the bulk actions menu), follow the template columns, then verify a few rows after upload.

24. Purchase return documents with approval workflow

In plain words: Purchase return documents with approval workflow

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Create a draft record, submit it, then have an approver open the same record and Approve / Reject. Approvers need the approve permission on their role.

25. Multi-level approval (configurable staff per level)

In plain words: Multi-level approval (configurable staff per level)

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Configure under Purchase Management → Settings, and assign staff access from Setup → Staff → Roles.

26. Delegation sync across PR, PO, Bill, Return

In plain words: Delegation sync across PR, PO, Bill, Return

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Enable credentials in Purchase Management → Settings (API keys, webhooks, sandbox/production). Test with a sample record, then monitor the module log or sync screen.

27. Dedicated approvals inbox

In plain words: Dedicated approvals inbox

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Create a draft record, submit it, then have an approver open the same record and Approve / Reject. Approvers need the approve permission on their role.

28. KPI dashboard and top suppliers widget

In plain words: KPI dashboard and top suppliers widget

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Go to Purchase Management → Reports / Dashboard (or the matching analytics screen), set filters (date, status, warehouse, staff), then run or export the report.

29. 13 report types with CSV, Excel, and PDF export

In plain words: 13 report types with CSV, Excel, and PDF export

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Go to Purchase Management → Reports / Dashboard (or the matching analytics screen), set filters (date, status, warehouse, staff), then run or export the report.

30. Supplier statement and aging

In plain words: Supplier statement and aging

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Open Purchase Management in the admin sidebar, then use the related menu screen for this capability.

31. Destructive actions require POST (+ CSRF for module URLs)

In plain words: Destructive actions require POST (+ CSRF for module URLs)

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Open Purchase Management in the admin sidebar, then use the related menu screen for this capability.

32. Upload MIME and rel_type validation

In plain words: Upload MIME and rel_type validation

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Open Purchase Management in the admin sidebar, then use the related menu screen for this capability.

33. Export rate limiting

In plain words: Export rate limiting

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Open the list screen for this data, use Import / Export / PDF buttons (or the bulk actions menu), follow the template columns, then verify a few rows after upload.

34. No generic admin bypass on assigned approval steps

In plain words: No generic admin bypass on assigned approval steps

Why it matters: This helps your team complete the work faster with fewer mistakes and a clear audit trail inside Perfex CRM.

How to use it: Create a draft record, submit it, then have an approver open the same record and Approve / Reject. Approvers need the approve permission on their role.

Screens map — what each menu is for

These are the admin screens registered by Purchase Management. Click a name in the Knowledge Base for a full how-to, or open the path in admin.

#ScreenAdmin pathGuide
1Dashboardadmin/purchase_managementHow to use
2Suppliersadmin/purchase_management/purchase_management_suppliersHow to use
3Purchase Requestsadmin/purchase_management/purchase_management_requestsHow to use
4RFQ / Quotationsadmin/purchase_management/purchase_management_rfqsHow to use
5Purchase Ordersadmin/purchase_management/purchase_management_ordersHow to use
6Goods Receiptadmin/purchase_management/purchase_management_grnHow to use
7Supplier Billsadmin/purchase_management/purchase_management_billsHow to use
8Paymentsadmin/purchase_management/purchase_management_paymentsHow to use
9Returnsadmin/purchase_management/purchase_management_returnsHow to use
10Approvalsadmin/purchase_management/purchase_management_approvalsHow to use
11Reportsadmin/purchase_management/purchase_management_reportsHow to use
12Settingsadmin/purchase_management/purchase_management_settingsHow to use

Features & workflows from documentation

Features

Suppliers

  • Supplier master with contacts, attachments, ledger, and statement PDF
  • CSV and Excel export
  • Opening balance and credit tracking

Purchase requests (PR)

  • Draft → submit → approval workflow
  • Line items (catalog or manual when enabled)
  • Attachments and convert-to-PO

RFQ & quotations

  • RFQ creation from PR or standalone
  • Supplier quotation entry, comparison, and award
  • Email invitation to suppliers
  • RFQ PDF download

Purchase orders (PO)

  • Tax, discount, shipping, terms
  • Email with PDF attachment
  • Receipt tracking (partial / full)
  • Billing status — PO marked billed only when all lines are fully billed

Goods receipt (GRN)

  • Warehouse integration modes: auto, required, disabled
  • Stock movement hooks for Inventory Management module
  • PDF export

Supplier bills

  • Three-way match (PO qty/price vs GRN received qty)
  • Partial billing support
  • Approve / reject / cancel workflow

Payments

  • Multi-bill split allocations (on-account supported)
  • Void reverses all allocations and bill balances
  • Payment receipt PDF

Returns

  • Purchase return documents with approval workflow
  • PDF export

Approvals

  • Multi-level approval (configurable staff per level)
  • Delegation sync across PR, PO, Bill, Return
  • Dedicated approvals inbox

Dashboard & reports

  • KPI dashboard and top suppliers widget
  • 13 report types with CSV, Excel, and PDF export
  • Supplier statement and aging

Security

  • Destructive actions require POST (+ CSRF for module URLs)
  • Upload MIME and rel_type validation
  • Export rate limiting
  • No generic admin bypass on assigned approval steps

---

Permissions

Feature keyCapabilities
---------------------------
purchase_dashboardview
purchase_suppliersview, create, edit, delete
purchase_requestview, create, edit, delete, approve
purchase_rfqview, create, edit, delete
purchase_orderview, create, edit, delete, approve
purchase_grnview, create, edit, delete
purchase_billview, create, edit, delete, approve
purchase_paymentview, create, edit, delete
purchase_returnview, create, edit, delete, approve
purchase_reportsview, export
purchase_settingsview, edit, manage

Approvals inbox: staff with purchase_dashboard view or document approve permissions (pm_can_access_approvals()).

---

Typical workflow

PR (optional) → RFQ (optional) → PO → GRN → Supplier Bill → Payment
                                      ↘ Return (optional)

Each document type supports draft, approval (when enabled), and status-specific actions. See [docs/DOCUMENTATION.md](docs/DOCUMENTATION.md) for step-by-step usage.

---

Document workflow

Purchase request (PR)

Statuses: draft → submitted → pending_approval → approved / rejected → converted / cancelled

  1. Create PR with line items (catalog items or manual lines if pm_allow_manual_items is enabled).
  2. Upload attachments on the PR view page.
  3. Submit for approval (when pm_require_approval is on and amount exceeds limit).
  4. Approved PR can be converted to PO or used as source for RFQ.

Actions on view: Edit (draft/rejected), Submit, Approve/Reject (inbox), Cancel, Convert to PO.

RFQ

Statuses: draft → sent → closed / cancelled

  1. Create RFQ manually or link from an approved PR.
  2. Add invited suppliers and line items (qty, UOM, specifications).
  3. Send — emails suppliers with quotation link (no PDF attachment; see [ROADMAP.md](ROADMAP.md)).
  4. Enter supplier quotations; use Compare to evaluate; Award winning quotation.
  5. Download PDF from list or view page.

Feature toggle: pm_enable_rfq in settings.

Purchase order (PO)

Statuses: draft → pending_approval → approved → sent → partially_received / fully_received → billed → closed / cancelled

  1. Create from PR, RFQ award, or directly (if pm_allow_po_without_pr).
  2. Set supplier, lines, tax, shipping, payment terms.
  3. Approve and Send — email includes PO PDF attachment.
  4. Create GRN against PO as goods arrive.
  5. PO billing status:

- Partial bill: PO stays at partially_received or fully_received.

- Full bill: All line billed_qty ≥ line quantity → status becomes billed.

GRN (Goods receipt)

Statuses: draft → posted / cancelled

  1. Select PO and received quantities per line.
  2. Warehouse field behaviour depends on pm_warehouse_integration:

- auto — optional warehouse

- required — warehouse mandatory

- disabled — no warehouse validation; no stock sync

  1. Posting updates PO received quantities and may sync inventory (Inventory Management module).

Supplier bill

Statuses: draft → pending_approval → approved → partially_paid / paid / overdue / cancelled

  1. Create from PO (pulls unbilled quantities) or manually.
  2. Three-way match checks PO price/qty vs GRN received qty (unless pm_allow_bill_without_grn).
  3. On approval, PO line billed_qty increases; PO billing status refreshes automatically.
  4. Download bill PDF from list or document view.

Payment

  1. Record payment against one or more approved bills (allocation UI).
  2. On-account payments (no bill allocation) supported.
  3. Void reverses all allocations and restores bill balances/status.
  4. Payment receipt PDF available.

Database: allocations stored in pm_supplier_payment_allocations (migration 101).

Return

Statuses: draft → pending_approval → approved → posted / cancelled

Create return against GRN/bill context. Approval workflow and PDF export supported.

Feature toggle: pm_enable_returns.

---

Module settings

Path: Purchase Management → Settings

Prefix & numbering

SettingDefaultPurpose
---------------------------
pm_supplier_code_prefixSUP-Supplier code
pm_pr_prefixPR-Purchase request
pm_rfq_prefixRFQ-RFQ
pm_po_prefixPO-Purchase order
pm_grn_prefixGRN-Goods receipt
pm_bill_prefixBILL-Supplier bill
pm_payment_prefixPAY-Payment
pm_return_prefixPRN-Return
pm_number_padding6Numeric padding

General

SettingDescription
----------------------
pm_default_currencyDefault document currency
pm_default_payment_termse.g. Net 30
pm_default_taxDefault tax name for lines
pm_required_supplier_fieldsComma-separated required fields
pm_warehouse_integrationauto / required / disabled
pm_terms_conditionsDefault PO terms
pm_pdf_footerFooter text on all module PDFs

Approval

SettingDescription
----------------------
pm_require_approvalEnable approval workflows
pm_approval_amount_limitAmount threshold
pm_approval_level1_staffLevel 1 approver (staff ID)
pm_approval_level2_staffLevel 2 approver
pm_approval_level3_staffLevel 3 approver
pm_approval_routing_modestaff or role
pm_approval_level1_roleLevel 1 Perfex CRM role (when mode = role)
pm_approval_level2_roleLevel 2 Perfex CRM role
pm_approval_level3_roleLevel 3 Perfex CRM role

When role mode is selected, any active staff member with the configured Perfex CRM role can approve that step from the inbox.

API & webhooks

SettingDescription
----------------------
pm_api_enabledEnable REST API
pm_api_keyAPI authentication key
pm_webhook_urlWebhook receiver URL
pm_webhook_secretHMAC signing secret

Feature toggles

SettingDefaultDescription
-------------------------------
pm_enable_purchase_requests1PR module
pm_enable_rfq1RFQ module
pm_enable_returns1Returns module
pm_allow_manual_items1Free-text line items
pm_allow_po_without_pr1Direct PO creation
pm_allow_bill_without_grn0Skip GRN qty check on bills

---

Reports & exports

Path: Purchase Management → Reports

Report keyName
------------------
supplier_statementSupplier statement
supplier_ledgerSupplier ledger
poPurchase orders
grnGoods receipts
pending_receivingPending receiving
billsSupplier bills
paymentsPayments
returnsReturns
by_itemPurchases by item
by_supplierPurchases by supplier
taxTax summary
agingAP aging
approval_historyApproval history

Export formats: CSV, Excel (.xls), PDF — via Pm_export library.

Suppliers list: CSV and Excel export from Suppliers → Export buttons.

Export endpoints use pm_export_rate_limit() to reduce abuse.

---

Integrations

Inventory Management

When pm_warehouse_integration is not disabled and the Inventory Management module is active:

  • GRN post creates stock movements
  • GRN cancel reverses movements

Setting: Settings → Warehouse integration.

Perfex CRM items & taxes

Line items can reference Perfex CRM catalog items (pm_get_items()). Tax rates resolve via pm_resolve_line_tax_rate() and Perfex CRM tax settings.

Email

RFQ send and PO send use pm_send_email(). Both include PDF attachments when sending.

---

REST API & webhooks

Configure under Settings → API & Webhooks.

SettingPurpose
------------------
pm_api_enabledEnable read-only REST API
pm_api_keySend as header X-PM-API-Key
pm_webhook_urlOutbound webhook endpoint
pm_webhook_secretHMAC SHA256 signature in X-PM-Signature

API endpoints

MethodURLDescription
--------------------------
GET/purchase_management/apiAPI info
GET/purchase_management/api/suppliersSupplier list
GET/purchase_management/api/purchase_orders/{id}PO + lines
GET/purchase_management/api/supplier_bills/{id}Bill + lines
GET/purchase_management/api/payments/{id}Payment + allocations

Webhook events

EventWhen
-------------
rfq.sentRFQ emailed to suppliers
supplier_bill.approvedBill approved
supplier_bill.cancelledApproved bill cancelled
supplier_payment.recordedPayment saved
supplier_payment.voidedPayment voided

---

Cron & automation

Hook: after_cron_run → purchase_management_cron_tasks()

  • Overdue bills: Supplier_bill_model::check_overdue_bills() marks approved unpaid bills past due date as overdue.

Ensure Perfex CRM cron is configured and running.

---

Document workflow

Purchase request (PR)

Statuses: draft → submitted → pending_approval → approved / rejected → converted / cancelled

  1. Create PR with line items (catalog items or manual lines if pm_allow_manual_items is enabled).
  2. Upload attachments on the PR view page.
  3. Submit for approval (when pm_require_approval is on and amount exceeds limit).
  4. Approved PR can be converted to PO or used as source for RFQ.

Actions on view: Edit (draft/rejected), Submit, Approve/Reject (inbox), Cancel, Convert to PO.

RFQ

Statuses: draft → sent → closed / cancelled

  1. Create RFQ manually or link from an approved PR.
  2. Add invited suppliers and line items (qty, UOM, specifications).
  3. Send — emails suppliers with quotation link (no PDF attachment; see [ROADMAP.md](ROADMAP.md)).
  4. Enter supplier quotations; use Compare to evaluate; Award winning quotation.
  5. Download PDF from list or view page.

Feature toggle: pm_enable_rfq in settings.

Purchase order (PO)

Statuses: draft → pending_approval → approved → sent → partially_received / fully_received → billed → closed / cancelled

  1. Create from PR, RFQ award, or directly (if pm_allow_po_without_pr).
  2. Set supplier, lines, tax, shipping, payment terms.
  3. Approve and Send — email includes PO PDF attachment.
  4. Create GRN against PO as goods arrive.
  5. PO billing status:

- Partial bill: PO stays at partially_received or fully_received.

- Full bill: All line billed_qty ≥ line quantity → status becomes billed.

GRN (Goods receipt)

Statuses: draft → posted / cancelled

  1. Select PO and received quantities per line.
  2. Warehouse field behaviour depends on pm_warehouse_integration:

- auto — optional warehouse

- required — warehouse mandatory

- disabled — no warehouse validation; no stock sync

  1. Posting updates PO received quantities and may sync inventory (Inventory Management module).

Supplier bill

Statuses: draft → pending_approval → approved → partially_paid / paid / overdue / cancelled

  1. Create from PO (pulls unbilled quantities) or manually.
  2. Three-way match checks PO price/qty vs GRN received qty (unless pm_allow_bill_without_grn).
  3. On approval, PO line billed_qty increases; PO billing status refreshes automatically.
  4. Download bill PDF from list or document view.

Payment

  1. Record payment against one or more approved bills (allocation UI).
  2. On-account payments (no bill allocation) supported.
  3. Void reverses all allocations and restores bill balances/status.
  4. Payment receipt PDF available.

Database: allocations stored in pm_supplier_payment_allocations (migration 101).

Return

Statuses: draft → pending_approval → approved → posted / cancelled

Create return against GRN/bill context. Approval workflow and PDF export supported.

Feature toggle: pm_enable_returns.

---

Module settings

Path: Purchase Management → Settings

Prefix & numbering

SettingDefaultPurpose
---------------------------
pm_supplier_code_prefixSUP-Supplier code
pm_pr_prefixPR-Purchase request
pm_rfq_prefixRFQ-RFQ
pm_po_prefixPO-Purchase order
pm_grn_prefixGRN-Goods receipt
pm_bill_prefixBILL-Supplier bill
pm_payment_prefixPAY-Payment
pm_return_prefixPRN-Return
pm_number_padding6Numeric padding

General

SettingDescription
----------------------
pm_default_currencyDefault document currency
pm_default_payment_termse.g. Net 30
pm_default_taxDefault tax name for lines
pm_required_supplier_fieldsComma-separated required fields
pm_warehouse_integrationauto / required / disabled
pm_terms_conditionsDefault PO terms
pm_pdf_footerFooter text on all module PDFs

Approval

SettingDescription
----------------------
pm_require_approvalEnable approval workflows
pm_approval_amount_limitAmount threshold
pm_approval_level1_staffLevel 1 approver (staff ID)
pm_approval_level2_staffLevel 2 approver
pm_approval_level3_staffLevel 3 approver
pm_approval_routing_modestaff or role
pm_approval_level1_roleLevel 1 Perfex CRM role (when mode = role)
pm_approval_level2_roleLevel 2 Perfex CRM role
pm_approval_level3_roleLevel 3 Perfex CRM role

When role mode is selected, any active staff member with the configured Perfex CRM role can approve that step from the inbox.

API & webhooks

SettingDescription
----------------------
pm_api_enabledEnable REST API
pm_api_keyAPI authentication key
pm_webhook_urlWebhook receiver URL
pm_webhook_secretHMAC signing secret

Feature toggles

SettingDefaultDescription
-------------------------------
pm_enable_purchase_requests1PR module
pm_enable_rfq1RFQ module
pm_enable_returns1Returns module
pm_allow_manual_items1Free-text line items
pm_allow_po_without_pr1Direct PO creation
pm_allow_bill_without_grn0Skip GRN qty check on bills

---

Reports & exports

Path: Purchase Management → Reports

Report keyName
------------------
supplier_statementSupplier statement
supplier_ledgerSupplier ledger
poPurchase orders
grnGoods receipts
pending_receivingPending receiving
billsSupplier bills
paymentsPayments
returnsReturns
by_itemPurchases by item
by_supplierPurchases by supplier
taxTax summary
agingAP aging
approval_historyApproval history

Export formats: CSV, Excel (.xls), PDF — via Pm_export library.

Suppliers list: CSV and Excel export from Suppliers → Export buttons.

Export endpoints use pm_export_rate_limit() to reduce abuse.

---

Integrations

Inventory Management

When pm_warehouse_integration is not disabled and the Inventory Management module is active:

  • GRN post creates stock movements
  • GRN cancel reverses movements

Setting: Settings → Warehouse integration.

Perfex CRM items & taxes

Line items can reference Perfex CRM catalog items (pm_get_items()). Tax rates resolve via pm_resolve_line_tax_rate() and Perfex CRM tax settings.

Email

RFQ send and PO send use pm_send_email(). Both include PDF attachments when sending.

---

REST API & webhooks

Configure under Settings → API & Webhooks.

SettingPurpose
------------------
pm_api_enabledEnable read-only REST API
pm_api_keySend as header X-PM-API-Key
pm_webhook_urlOutbound webhook endpoint
pm_webhook_secretHMAC SHA256 signature in X-PM-Signature

API endpoints

MethodURLDescription
--------------------------
GET/purchase_management/apiAPI info
GET/purchase_management/api/suppliersSupplier list
GET/purchase_management/api/purchase_orders/{id}PO + lines
GET/purchase_management/api/supplier_bills/{id}Bill + lines
GET/purchase_management/api/payments/{id}Payment + allocations

Webhook events

EventWhen
-------------
rfq.sentRFQ emailed to suppliers
supplier_bill.approvedBill approved
supplier_bill.cancelledApproved bill cancelled
supplier_payment.recordedPayment saved
supplier_payment.voidedPayment voided

---

Cron & automation

Hook: after_cron_run → purchase_management_cron_tasks()

  • Overdue bills: Supplier_bill_model::check_overdue_bills() marks approved unpaid bills past due date as overdue.

Ensure Perfex CRM cron is configured and running.

---

Listing highlights

Item Title

Purchase Management — Enterprise Procurement & P2P Module for Perfex CRM

Short Description (max ~160 chars)

Full procure-to-pay for Perfex CRM: suppliers, PR, RFQ, PO, GRN, bills, payments, returns, approvals, reports, REST API & webhooks.

Full Description

Paste HTML from:

codecanyon_submission/html_description/description.html

Tags

Paste from codecanyon_submission/copy/05_tags.txt

Category

PHP Scripts > Add-ons > Perfex CRM

Screenshots Checklist (capture from demo)

  1. Dashboard
  2. Suppliers
  3. Purchase request
  4. RFQ / quotations
  5. Purchase order
  6. GRN
  7. Supplier bill
  8. Payment
  9. Approvals
  10. Reports / Settings

Release ZIP

Run from project root:

bash modules/purchase_management/build_release.sh
bash modules/purchase_management/codecanyon_submission/build_submission_assets.sh

Outputs:

  • releases/codecanyon/purchase_management-v1.0.0-codecanyon.zip (Main File)
  • releases/codecanyon/purchase_management-v1.0.0-screenshots.zip (after you add UI screenshots)
  • releases/codecanyon/purchase_management_submission/ (copy of form assets)

Pre-Submission Checklist

  • [ ] Demo site live with sample procurement data
  • [ ] 6–10 real screenshots captured
  • [ ] Thumbnail 80×80 and preview 590×300 uploaded
  • [ ] Support enabled on Envato profile
  • [ ] Item price tier selected
  • [ ] Tested fresh install on clean Perfex CRM 2.3+/3.x
  • [ ] Uninstall tested (all pm_* tables + options + uploads removed)

Official HTML documentation (feature sections)

Requirements

ComponentMinimum
Perfex CRM2.3.0+ (tested on 3.x)
PHP7.4+ (recommended 8.1+)
MySQL / MariaDB5.7+ / 10.3+
PHP extensionsmysqli, json, mbstring, curl
Perfex CRM cronRequired for overdue bill checks

Optional modules: Inventory Management (GRN stock sync), Accounting Pro (AP/GL sync), Supplier Portal (supplier linking).

Zero core modifications

Procure-to-Pay Workflow

PR (optional) → RFQ (optional) → PO → GRN → Supplier Bill → Payment
                                      ↘ Return (optional)

Document statuses

  • PR / PO / Bill / Return: draft → pending approval → approved → (completed/cancelled)
  • RFQ: draft → sent → quotations_received → awarded / cancelled
  • GRN: draft → posted / cancelled

On create/edit forms, use Save Draft or the primary action button (Submit for Approval, Send, Post GRN) to save and trigger the workflow in one step.

Permissions

11 permission groups under Setup → Staff → Permissions → Purchase Management. Admins bypass all checks.

FeatureCapabilities
Dashboardview
Suppliersview, create, edit, delete
Purchase Requestsview, create, edit, delete, approve
RFQview, create, edit, delete
Purchase Ordersview, create, edit, delete, approve
GRNview, create, edit, delete
Supplier Billsview, create, edit, delete, approve
Paymentsview, create, edit, delete
Returnsview, create, edit, delete, approve
Reportsview, export
Settingsview, edit, manage

Key Settings

SettingDescription
Feature togglesEnable/disable PR, RFQ, returns
Approval routingStaff-based or role-based multi-level approvers
Warehouse integrationauto / required / disabled for GRN
REST APIEnable + API key (read-only endpoints)
WebhooksIndependent toggle + HTTPS endpoint URL + HMAC secret

REST API

Read-only API. Enable in Settings, then send header X-PM-API-Key: your-key.

GET /purchase_management/api/suppliers
GET /purchase_management/api/purchase_orders/{id}
GET /purchase_management/api/supplier_bills/{id}
GET /purchase_management/api/payments/{id}

Rate limited (default 60 requests/minute). Returns JSON.

Outbound Webhooks

Enable webhooks separately from the API. Configure a public HTTPS endpoint URL and optional HMAC secret.

Events: rfq.sent, supplier_bill.approved, supplier_bill.cancelled, supplier_payment.recorded, supplier_payment.voided

Payload includes event, timestamp, and payload. Signature in X-PM-Signature header when secret is set.

Module Integrations

  • Inventory Management — GRN posting increases stock; cancellation reverses
  • Accounting Pro — Approved bills and payments sync to accounts payable
  • Supplier Portal — Link PM suppliers to portal accounts (admin-side)

FAQ

Do I need to edit Perfex CRM core files?

No. The module is fully self-contained under /modules/purchase_management/.

What happens when I uninstall?

Uninstall drops all pm_* database tables, removes module options, and deletes uploads/purchase_management/.

How do RFQ supplier invitations work?

Select invited suppliers when creating an RFQ. On send, only invited suppliers receive the email (with PDF). If none selected, all active suppliers with email addresses are notified. Quotations are entered by staff in the admin panel.

Can suppliers submit quotations online?

Staff enter quotations in admin. External supplier self-service is planned for the optional Supplier Portal module.

Staff permissions (from module)

Assign under Setup → Staff → Roles. Each feature can expose different actions:

FeatureActions
Dashboard
purchase_dashboard
view
Suppliers
purchase_suppliers
view, create, edit, delete
Purchase Requests
purchase_request
view, create, edit, delete, approve
RFQ / Quotations
purchase_rfq
view, create, edit, delete
Purchase Orders
purchase_order
view, create, edit, delete, approve
Goods Receipt
purchase_grn
view, create, edit, delete
Supplier Bills
purchase_bill
view, create, edit, delete, approve
Payments
purchase_payment
view, create, edit, delete
Returns
purchase_return
view, create, edit, delete, approve
Reports
purchase_reports
view, export
Settings
purchase_settings
view, edit, manage

Related: Quick Start · How to Install · FAQ & Tips · Version & Changelog

Did you find this article useful?