spryker-feature / purchasing-control
PurchasingControl module
Package info
github.com/spryker-feature/purchasing-control
pkg:composer/spryker-feature/purchasing-control
202610.0
2026-10-26 15:19 UTC
Requires
- php: >=8.3
- spryker-shop/customer-page-extension: ^1.4.0
- spryker-shop/shop-ui: ^1.108.0 || ^2.0.0
- spryker/acl-merchant-portal-extension: ^1.0.0
- spryker/application: ^3.46.0
- spryker/checkout-extension: ^1.3.0
- spryker/company: ^1.4.0
- spryker/company-business-unit: ^2.0.0
- spryker/company-user: ^2.0.0
- spryker/currency: ^4.0.0
- spryker/customer: ^7.0.0
- spryker/data-import: ^1.0.0
- spryker/glossary: ^3.16.0
- spryker/glossary-storage: ^1.0.0
- spryker/gui: ^5.8.0
- spryker/kernel: ^3.30.0
- spryker/locale: ^4.0.0
- spryker/money: ^2.0.0
- spryker/permission-extension: ^1.0.0
- spryker/propel-orm: ^1.0.0
- spryker/quote: ^2.0.0
- spryker/quote-approval: ^1.5.0
- spryker/quote-extension: ^1.0.0
- spryker/quote-request: ^2.8.0
- spryker/quote-request-agent: ^2.3.0
- spryker/sales: ^11.83.0
- spryker/sales-extension: ^1.15.0
- spryker/store: ^1.35.0
- spryker/symfony: ^3.0.0
- spryker/transfer: ^3.27.0
- spryker/util-date-time: ^1.6.0
- spryker/util-encoding: ^2.0.0
- spryker/util-text: ^1.1.0
- spryker/uuid-behavior: ^1.3.0
- spryker/zed-request: ^3.0.0
Requires (Dev)
Suggests
- spryker-feature/order-experience-management: Enables cost center selection in recurring order approve and schedule edit forms, blocks recurring order checkout for budgets that require approval, and adds the `budgetUuid` field to order intake so an intaken order can be charged against a budget. Install this feature to use the plugins under `Yves/PurchasingControl/Plugin/OrderExperienceManagement` and `Zed/PurchasingControl/Communication/Plugin/OrderExperienceManagement`.
- spryker-shop/company-page: Use this module if you want to display company information on the storefront.
- spryker-shop/customer-page: Use this module if you want to display customer information on the storefront.
- spryker-shop/quote-request-agent-page: Add the module if you want to use QuoteRequestAgentCostCenterSelectorWidget on the agent quote request details and edit pages: ^3.7.0
- spryker-shop/quote-request-page: Add the module if you want to use QuoteRequestCostCenterSelectorWidget on the quote request details and edit pages: ^3.8.0
- spryker/oms: Use OMS to manage order states and processes.
- spryker/router: Use Router when the storefront needs to be able to route to the purchasing control module.
Provides
None
Conflicts
None
Replaces
None
README
The Purchasing Control feature extends Spryker's B2B Company Account and Approval Process with native cost center and budget management. It allows finance teams to define departmental or project-based spending limits, and enforces those limits at checkout alongside Spryker's existing permission-based approval flow.
Features
- Cost Center Management — Create, update, activate, and deactivate cost centers in the Back Office. Link cost centers to business units so assigned buyers are automatically available for selection at checkout.
- Budget Controls — Define budgets per cost center with a total amount, period, currency, and enforcement rule (Block, Warn, or Require Approval).
- Checkout Integration — Buyers select a cost center and budget during checkout. The system displays the remaining budget and validates the order total before proceeding.
- Layered Approval Enforcement — Budget rules run in parallel with Spryker's "Buy up to grand total" permission limits. If either check triggers, the configured action is applied: block the order, warn the buyer, or route it through the approval workflow.
- Budget Lifecycle — Budget balance is consumed on order confirmation and restored on cancellation or return.
- Spend Reporting — Back Office dashboard showing spend vs. budget per cost center, with filtering by time range, cost center, or buyer, and CSV export.
- Audit Log — All cost center, budget, and approval events are recorded with timestamps and actor identity for compliance and finance review.
- Backend API Integration — Orders created through the OrderExperienceManagement Backend API (
POST /orders) can be charged against a budget by passingbudgetUuid; the resulting assignment is reported back asbudgeton order reads.
Validation Outcomes at Checkout
| Condition | Result |
|---|---|
| Within budget and within permission limit | Buyer completes checkout |
| Exceeds budget — Warn rule | Warning shown; buyer proceeds but approval is required |
| Exceeds budget — Require Approval rule | Quote sent for approval |
| Exceeds Buy-up-to permission limit | Quote sent for approval |
| Exceeds budget — Block rule | Checkout blocked; no approval option |
Installation
composer require spryker-feature/purchasing-control