At a Glance
Module purpose: Multi-level, budget-aware internal demand workflow (Draft→Submitted→Under Review→Approved/Rejected/Sent Back) that hands a vendor-allocated requirement to procurement · Audience: Requestor, Department Head, Budget Controller, Finance, Purchaser, Procurement Manager, Auditor · Key entities/tables:tb_purchase_request,tb_purchase_request_detail, approval history, pricelist allocation, purchase-request/my-approval · Sub-pages: 15


A Purchase Request (PR) is the internal demand document raised by an operating department to authorise the procurement of goods or services before any external commitment is made to a vendor. Each PR has a header — auto-generated reference number, request and required delivery dates, PR type (General Purchase, Market List, Asset), requestor and department, job/cost code, delivery point, description and justification, currency and exchange rate — and one or more item lines that carry the product or free-text description, store location, requested and approved quantities, FOC quantity, unit of measure, estimated unit price, discount, tax treatment, computed line totals, and links to inventory and PO history. The header rolls the lines into subtotal, total discount, total tax, and grand total figures in both transaction and base currencies.
The PR lifecycle is workflow-driven: Draft (editable by the requestor, no budget or stock impact) → Submitted (routed through the approval chain, a soft budget commitment is created) → Under Review (in the hands of one or more approvers) → Approved (cleared for procurement and available for conversion to a purchase order) or Rejected / Sent Back (returned to the requestor with comments). Approval is multi-level and amount-driven — typically department head first, then budget controller, then finance review for high-value PRs, then final procurement sign-off — with delegation-of-authority rules to keep the chain moving when an approver is unavailable. Submitted PRs cannot be voided; cancellation only happens through the workflow reject path, preserving the audit trail.
The PR is the upstream demand signal in the procure-to-pay chain. It captures what is needed, for whom, by when, and roughly how much, then hands an approved, costed, vendor-allocated requirement to procurement. The Allocate Vendor function selects the preferred supplier from the pricelist using a prioritised rule set (vendor rank, then lowest price, then last-receiving history), pulls tax rate and unit price from the pricelist, and the approved PR — with its approved quantities and selected vendor — is then converted into a purchase order to commit externally. Budget is reflected as a soft commitment at submission, hardening into a real commitment only once the PO is raised.
Hospitality procurement runs on tight margins and high-volume, low-value purchases across many cost centres, so the PR is the control point that prevents uncontrolled spend before any external commitment is made. By forcing every purchase intent through a documented, budget-aware, multi-approver workflow — with mandatory requestor, department, delivery date, justification, and unique reference number — the PR enforces spending policy upstream of the vendor and gives finance a forward-looking view of committed spend. Soft-commitment accounting on submission means budget consumption is visible the moment a PR is raised, not just when goods are received, which is what keeps department-level overspend from happening by accident.
The module is also the integration spine for everything downstream. PR data flows into the budget module (availability checks and soft commitments), the inventory module (on-hand, on-order, reorder level, last price visible to the requestor), the vendor module (pricelist lookup, vendor ranking, price comparison), the workflow engine (configurable approval routing and notifications), and the purchase order module (PR-to-PO conversion with full traceability). Document management (comments, attachments, activity log) gives every PR a complete audit trail — who created it, who changed it, who approved or rejected it and when — which is what auditors look for during compliance review and what operators rely on when investigating procurement issues.
Financial accuracy is enforced at the calculation layer rather than left to the UI. Item subtotal, discount, net, tax, and total are each rounded at the line level using banker's rounding with 3 decimals for quantity, 2 decimals for money, and 5 decimals for exchange rates; PR-level totals roll up from rounded line values; cross-currency receipts dual-post with explicit conversion rounding. The system supports tax-inclusive and tax-exclusive pricing, separately-flagged manual adjustments to discount and tax, and tax derivation that varies by allocation path (manual product selection uses the product tax rate, auto-allocation uses the pricelist tax). This rigour is what allows the PR total to reconcile cleanly against the eventual PO and GRN.
Draft status can be voided directly by the requestor. Once submitted, cancellation only happens through the workflow — an approver chooses Reject (terminates the PR with a reason) or Send Back (returns to the requestor for revision and re-submission). Split & Reject lets an approver reject specific lines while approving the rest. The audit trail and soft-commitment reversal are handled automatically by the workflow.| Role | Responsibility |
|---|---|
| Requestor | Hotel or department staff member who initiates the PR. Creates the request, selects PR type, adds items with quantity, unit, estimated price, delivery date, and justification, attaches supporting documents, and submits for approval. Tracks status and responds to send-backs. |
| Department Head / Department Manager | First-level approver in the workflow. Reviews PRs originating from their department, validates business need and budget alignment, adjusts approved quantities if required, and approves, rejects, sends back, or split-rejects individual lines. |
| Budget Controller | Validates submitted PRs against budget availability for the relevant category and cost centre, reviews soft-commitment impact, and approves or escalates PRs that exceed thresholds. |
| Finance Officer / Finance Manager | Reviews financial aspects of the PR — currency, exchange rate, tax treatment, calculation accuracy — for high-value PRs above the configured financial-review threshold, and signs off before procurement conversion. |
| Procurement Officer / Purchaser | Receives approved PRs, validates vendor allocation and pricing against the pricelist, consolidates PRs into purchase orders, and converts approved PRs to POs. Manages vendor follow-up for clarifications. |
| Procurement Manager | Oversees the procurement function, approves high-value or strategically sensitive PRs, manages vendor relationships and ranking, and tunes the Allocate Vendor rules. |
| System Administrator | Configures workflow stages, approval thresholds, delegation rules, PR-type defaults, tax codes, currency rates, and integration with budget, inventory, vendor, and PO modules. Manages user roles and permissions. |
| Auditor | Read-only access to PRs and the activity log to verify policy compliance, segregation of duties, and budget-control adherence during periodic audits. |
Cross-module flow:
Master configuration:
../carmen/docs/purchase-request-management/../carmen-inventory-frontend/../carmen-turborepo-backend-v2/../carmen-turborepo-backend-bruno/../carmen-inventory-frontend-e2e/enum_comment_type user/system tagging.