← 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.
| # | Screen | Admin path | Guide |
|---|---|---|---|
| 1 | Dashboard | admin/purchase_management | How to use |
| 2 | Suppliers | admin/purchase_management/purchase_management_suppliers | How to use |
| 3 | Purchase Requests | admin/purchase_management/purchase_management_requests | How to use |
| 4 | RFQ / Quotations | admin/purchase_management/purchase_management_rfqs | How to use |
| 5 | Purchase Orders | admin/purchase_management/purchase_management_orders | How to use |
| 6 | Goods Receipt | admin/purchase_management/purchase_management_grn | How to use |
| 7 | Supplier Bills | admin/purchase_management/purchase_management_bills | How to use |
| 8 | Payments | admin/purchase_management/purchase_management_payments | How to use |
| 9 | Returns | admin/purchase_management/purchase_management_returns | How to use |
| 10 | Approvals | admin/purchase_management/purchase_management_approvals | How to use |
| 11 | Reports | admin/purchase_management/purchase_management_reports | How to use |
| 12 | Settings | admin/purchase_management/purchase_management_settings | How 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
billedonly 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_typevalidation - Export rate limiting
- No generic admin bypass on assigned approval steps
---
Permissions
| Feature key | Capabilities |
|---|---|
| ------------- | -------------- |
purchase_dashboard | view |
purchase_suppliers | view, create, edit, delete |
purchase_request | view, create, edit, delete, approve |
purchase_rfq | view, create, edit, delete |
purchase_order | view, create, edit, delete, approve |
purchase_grn | view, create, edit, delete |
purchase_bill | view, create, edit, delete, approve |
purchase_payment | view, create, edit, delete |
purchase_return | view, create, edit, delete, approve |
purchase_reports | view, export |
purchase_settings | view, 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
- Create PR with line items (catalog items or manual lines if
pm_allow_manual_itemsis enabled). - Upload attachments on the PR view page.
- Submit for approval (when
pm_require_approvalis on and amount exceeds limit). - 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
- Create RFQ manually or link from an approved PR.
- Add invited suppliers and line items (qty, UOM, specifications).
- Send — emails suppliers with quotation link (no PDF attachment; see [ROADMAP.md](ROADMAP.md)).
- Enter supplier quotations; use Compare to evaluate; Award winning quotation.
- 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
- Create from PR, RFQ award, or directly (if
pm_allow_po_without_pr). - Set supplier, lines, tax, shipping, payment terms.
- Approve and Send — email includes PO PDF attachment.
- Create GRN against PO as goods arrive.
- 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
- Select PO and received quantities per line.
- Warehouse field behaviour depends on
pm_warehouse_integration:
- auto — optional warehouse
- required — warehouse mandatory
- disabled — no warehouse validation; no stock sync
- Posting updates PO received quantities and may sync inventory (Inventory Management module).
Supplier bill
Statuses: draft → pending_approval → approved → partially_paid / paid / overdue / cancelled
- Create from PO (pulls unbilled quantities) or manually.
- Three-way match checks PO price/qty vs GRN received qty (unless
pm_allow_bill_without_grn). - On approval, PO line
billed_qtyincreases; PO billing status refreshes automatically. - Download bill PDF from list or document view.
Payment
- Record payment against one or more approved bills (allocation UI).
- On-account payments (no bill allocation) supported.
- Void reverses all allocations and restores bill balances/status.
- 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
| Setting | Default | Purpose |
|---|---|---|
| --------- | --------- | --------- |
pm_supplier_code_prefix | SUP- | Supplier code |
pm_pr_prefix | PR- | Purchase request |
pm_rfq_prefix | RFQ- | RFQ |
pm_po_prefix | PO- | Purchase order |
pm_grn_prefix | GRN- | Goods receipt |
pm_bill_prefix | BILL- | Supplier bill |
pm_payment_prefix | PAY- | Payment |
pm_return_prefix | PRN- | Return |
pm_number_padding | 6 | Numeric padding |
General
| Setting | Description |
|---|---|
| --------- | ------------- |
pm_default_currency | Default document currency |
pm_default_payment_terms | e.g. Net 30 |
pm_default_tax | Default tax name for lines |
pm_required_supplier_fields | Comma-separated required fields |
pm_warehouse_integration | auto / required / disabled |
pm_terms_conditions | Default PO terms |
pm_pdf_footer | Footer text on all module PDFs |
Approval
| Setting | Description |
|---|---|
| --------- | ------------- |
pm_require_approval | Enable approval workflows |
pm_approval_amount_limit | Amount threshold |
pm_approval_level1_staff | Level 1 approver (staff ID) |
pm_approval_level2_staff | Level 2 approver |
pm_approval_level3_staff | Level 3 approver |
pm_approval_routing_mode | staff or role |
pm_approval_level1_role | Level 1 Perfex CRM role (when mode = role) |
pm_approval_level2_role | Level 2 Perfex CRM role |
pm_approval_level3_role | Level 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
| Setting | Description |
|---|---|
| --------- | ------------- |
pm_api_enabled | Enable REST API |
pm_api_key | API authentication key |
pm_webhook_url | Webhook receiver URL |
pm_webhook_secret | HMAC signing secret |
Feature toggles
| Setting | Default | Description |
|---|---|---|
| --------- | --------- | ------------- |
pm_enable_purchase_requests | 1 | PR module |
pm_enable_rfq | 1 | RFQ module |
pm_enable_returns | 1 | Returns module |
pm_allow_manual_items | 1 | Free-text line items |
pm_allow_po_without_pr | 1 | Direct PO creation |
pm_allow_bill_without_grn | 0 | Skip GRN qty check on bills |
---
Reports & exports
Path: Purchase Management → Reports
| Report key | Name |
|---|---|
| ------------ | ------ |
supplier_statement | Supplier statement |
supplier_ledger | Supplier ledger |
po | Purchase orders |
grn | Goods receipts |
pending_receiving | Pending receiving |
bills | Supplier bills |
payments | Payments |
returns | Returns |
by_item | Purchases by item |
by_supplier | Purchases by supplier |
tax | Tax summary |
aging | AP aging |
approval_history | Approval 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.
RFQ send and PO send use pm_send_email(). Both include PDF attachments when sending.
---
REST API & webhooks
Configure under Settings → API & Webhooks.
| Setting | Purpose |
|---|---|
| --------- | --------- |
pm_api_enabled | Enable read-only REST API |
pm_api_key | Send as header X-PM-API-Key |
pm_webhook_url | Outbound webhook endpoint |
pm_webhook_secret | HMAC SHA256 signature in X-PM-Signature |
API endpoints
| Method | URL | Description |
|---|---|---|
| -------- | ----- | ------------- |
| GET | /purchase_management/api | API info |
| GET | /purchase_management/api/suppliers | Supplier 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
| Event | When |
|---|---|
| ------- | ------ |
rfq.sent | RFQ emailed to suppliers |
supplier_bill.approved | Bill approved |
supplier_bill.cancelled | Approved bill cancelled |
supplier_payment.recorded | Payment saved |
supplier_payment.voided | Payment 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 asoverdue.
Ensure Perfex CRM cron is configured and running.
---
Document workflow
Purchase request (PR)
Statuses: draft → submitted → pending_approval → approved / rejected → converted / cancelled
- Create PR with line items (catalog items or manual lines if
pm_allow_manual_itemsis enabled). - Upload attachments on the PR view page.
- Submit for approval (when
pm_require_approvalis on and amount exceeds limit). - 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
- Create RFQ manually or link from an approved PR.
- Add invited suppliers and line items (qty, UOM, specifications).
- Send — emails suppliers with quotation link (no PDF attachment; see [ROADMAP.md](ROADMAP.md)).
- Enter supplier quotations; use Compare to evaluate; Award winning quotation.
- 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
- Create from PR, RFQ award, or directly (if
pm_allow_po_without_pr). - Set supplier, lines, tax, shipping, payment terms.
- Approve and Send — email includes PO PDF attachment.
- Create GRN against PO as goods arrive.
- 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
- Select PO and received quantities per line.
- Warehouse field behaviour depends on
pm_warehouse_integration:
- auto — optional warehouse
- required — warehouse mandatory
- disabled — no warehouse validation; no stock sync
- Posting updates PO received quantities and may sync inventory (Inventory Management module).
Supplier bill
Statuses: draft → pending_approval → approved → partially_paid / paid / overdue / cancelled
- Create from PO (pulls unbilled quantities) or manually.
- Three-way match checks PO price/qty vs GRN received qty (unless
pm_allow_bill_without_grn). - On approval, PO line
billed_qtyincreases; PO billing status refreshes automatically. - Download bill PDF from list or document view.
Payment
- Record payment against one or more approved bills (allocation UI).
- On-account payments (no bill allocation) supported.
- Void reverses all allocations and restores bill balances/status.
- 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
| Setting | Default | Purpose |
|---|---|---|
| --------- | --------- | --------- |
pm_supplier_code_prefix | SUP- | Supplier code |
pm_pr_prefix | PR- | Purchase request |
pm_rfq_prefix | RFQ- | RFQ |
pm_po_prefix | PO- | Purchase order |
pm_grn_prefix | GRN- | Goods receipt |
pm_bill_prefix | BILL- | Supplier bill |
pm_payment_prefix | PAY- | Payment |
pm_return_prefix | PRN- | Return |
pm_number_padding | 6 | Numeric padding |
General
| Setting | Description |
|---|---|
| --------- | ------------- |
pm_default_currency | Default document currency |
pm_default_payment_terms | e.g. Net 30 |
pm_default_tax | Default tax name for lines |
pm_required_supplier_fields | Comma-separated required fields |
pm_warehouse_integration | auto / required / disabled |
pm_terms_conditions | Default PO terms |
pm_pdf_footer | Footer text on all module PDFs |
Approval
| Setting | Description |
|---|---|
| --------- | ------------- |
pm_require_approval | Enable approval workflows |
pm_approval_amount_limit | Amount threshold |
pm_approval_level1_staff | Level 1 approver (staff ID) |
pm_approval_level2_staff | Level 2 approver |
pm_approval_level3_staff | Level 3 approver |
pm_approval_routing_mode | staff or role |
pm_approval_level1_role | Level 1 Perfex CRM role (when mode = role) |
pm_approval_level2_role | Level 2 Perfex CRM role |
pm_approval_level3_role | Level 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
| Setting | Description |
|---|---|
| --------- | ------------- |
pm_api_enabled | Enable REST API |
pm_api_key | API authentication key |
pm_webhook_url | Webhook receiver URL |
pm_webhook_secret | HMAC signing secret |
Feature toggles
| Setting | Default | Description |
|---|---|---|
| --------- | --------- | ------------- |
pm_enable_purchase_requests | 1 | PR module |
pm_enable_rfq | 1 | RFQ module |
pm_enable_returns | 1 | Returns module |
pm_allow_manual_items | 1 | Free-text line items |
pm_allow_po_without_pr | 1 | Direct PO creation |
pm_allow_bill_without_grn | 0 | Skip GRN qty check on bills |
---
Reports & exports
Path: Purchase Management → Reports
| Report key | Name |
|---|---|
| ------------ | ------ |
supplier_statement | Supplier statement |
supplier_ledger | Supplier ledger |
po | Purchase orders |
grn | Goods receipts |
pending_receiving | Pending receiving |
bills | Supplier bills |
payments | Payments |
returns | Returns |
by_item | Purchases by item |
by_supplier | Purchases by supplier |
tax | Tax summary |
aging | AP aging |
approval_history | Approval 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.
RFQ send and PO send use pm_send_email(). Both include PDF attachments when sending.
---
REST API & webhooks
Configure under Settings → API & Webhooks.
| Setting | Purpose |
|---|---|
| --------- | --------- |
pm_api_enabled | Enable read-only REST API |
pm_api_key | Send as header X-PM-API-Key |
pm_webhook_url | Outbound webhook endpoint |
pm_webhook_secret | HMAC SHA256 signature in X-PM-Signature |
API endpoints
| Method | URL | Description |
|---|---|---|
| -------- | ----- | ------------- |
| GET | /purchase_management/api | API info |
| GET | /purchase_management/api/suppliers | Supplier 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
| Event | When |
|---|---|
| ------- | ------ |
rfq.sent | RFQ emailed to suppliers |
supplier_bill.approved | Bill approved |
supplier_bill.cancelled | Approved bill cancelled |
supplier_payment.recorded | Payment saved |
supplier_payment.voided | Payment 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 asoverdue.
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)
- Dashboard
- Suppliers
- Purchase request
- RFQ / quotations
- Purchase order
- GRN
- Supplier bill
- Payment
- Approvals
- 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
| Component | Minimum |
|---|---|
| Perfex CRM | 2.3.0+ (tested on 3.x) |
| PHP | 7.4+ (recommended 8.1+) |
| MySQL / MariaDB | 5.7+ / 10.3+ |
| PHP extensions | mysqli, json, mbstring, curl |
| Perfex CRM cron | Required 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.
| Feature | Capabilities |
|---|---|
| Dashboard | view |
| Suppliers | view, create, edit, delete |
| Purchase Requests | view, create, edit, delete, approve |
| RFQ | view, create, edit, delete |
| Purchase Orders | view, create, edit, delete, approve |
| GRN | view, create, edit, delete |
| Supplier Bills | view, create, edit, delete, approve |
| Payments | view, create, edit, delete |
| Returns | view, create, edit, delete, approve |
| Reports | view, export |
| Settings | view, edit, manage |
Key Settings
| Setting | Description |
|---|---|
| Feature toggles | Enable/disable PR, RFQ, returns |
| Approval routing | Staff-based or role-based multi-level approvers |
| Warehouse integration | auto / required / disabled for GRN |
| REST API | Enable + API key (read-only endpoints) |
| Webhooks | Independent 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.
Related: Quick Start · How to Install · FAQ & Tips · Version & Changelog