Search by

shaungbhone / shopper-po

ShaungBhone

Purchase orders and auditable receiving for Laravel Shopper 2.12.

Package info

github.com/ShaungBhone/shopper-po

pkg:composer/shaungbhone/shopper-po

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-11-05 18:24 UTC

This package is auto-updated.

Last update: 2026-11-05 18:50:34 UTC


README

A community add-on for Laravel Shopper that tracks supplier purchase orders and records incoming inventory.

Tests Packagist version MIT license

Purchase orders in the Shopper admin, showing order states, receiving progress, and merchandise subtotals

Install

The add-on requires an existing Laravel Shopper installation with Shopper >=2.12.1 <2.13.0, Laravel 12, and PHP 8.3 or later.

Run these commands from your Shopper application:

composer require shaungbhone/shopper-po:^1.0
php artisan migrate
php artisan optimize:clear

Laravel package discovery registers the add-on with Shopper. Purchase orders share the built-in Orders permissions.

  1. Enable the supplier feature in config/shopper/features.php by setting supplier to \Shopper\Enum\FeatureState::Enabled. Set up an enabled supplier and an inventory location in Shopper.
  2. Manage Orders permissions for each role in Shopper's team settings. Browsing uses browse_orders, viewing uses read_orders, and creating drafts uses add_orders. Editing, placing, cancelling, and closing purchase orders, as well as receiving stock and correcting receipts, require both read_orders and edit_orders.
  3. Open Purchasing → Purchase orders in the Shopper admin.

If you change the supplier feature after clearing the configuration cache, run php artisan optimize:clear again.

For version 1.0.0, follow the installation instructions for that release. When upgrading from 1.0.0, review roles that used dedicated purchase order permissions and grant the appropriate Orders permissions in Shopper.

Use

Create a draft, choose the products and unit costs, and mark the order as ordered when the supplier confirms it. Record partial or final deliveries against the outstanding quantities. Accepted units increase stock at the order's inventory location and appear in Shopper's stock history.

Rejected units can await replacement or be waived. Correct a receipt to fix a receiving mistake and keep an audit trail, or close the order to waive the remaining balance.

New orders use enabled currencies from Shopper's Settings → Currencies, with the store currency selected by default. Existing drafts retain their saved currency if it is later disabled. Amounts follow Shopper's currency precision.

Disable the add-on

Set 'purchase-orders' => false in config/shopper/addons.php and run php artisan optimize:clear. If the file does not exist, create it with a PHP configuration array containing that entry. Disabling the add-on removes its screens from the admin and preserves existing purchase orders and receipts.

Development

From the package checkout:

composer install
npm ci
composer test
npm run format:check

The default suite uses SQLite. See the test workflow for the MySQL and concurrency test settings.

Shopper documents the integration points in its add-on guide.

License

Released under the MIT license.