Commerce administration dashboard

* Product catalogue
* Product categories
* Physical, digital, service, and bundle product types
* Product variants and option storage
* SKU management
* Product publishing states
* Pricing and comparison pricing
* Inventory quantities
* Low-stock thresholds
* Inventory movement history
* Customer records and addresses
* Orders and order items
* Payment and fulfilment statuses
* Payment transaction storage
* Promotions and coupon codes
* Shipping methods
* Tax rates
* Payment, shipping, tax, and inventory provider contracts
* Default manual payment provider
* Default flat-rate shipping provider
* Public product REST API
* Administration navigation
* Commerce permissions
* Module registration
* Module boot tests
This commit is contained in:
Mark Gregory
2026-07-24 12:24:12 +01:00
parent 44684c93e5
commit 86f2bc75aa
31 changed files with 272 additions and 0 deletions
@@ -0,0 +1,4 @@
<?php
namespace Modules\Commerce\Services;
use Modules\Commerce\Contracts\TaxProvider;
final class ConfiguredTaxProvider implements TaxProvider { public function calculate(float $subtotal,array $address=[]): float { return config('commerce.prices_include_tax') ? 0.0 : round($subtotal * 0.2,2); } }
@@ -0,0 +1,14 @@
<?php
namespace Modules\Commerce\Services;
use Illuminate\Support\Facades\DB;
use Modules\Commerce\Contracts\InventoryProvider;
use Modules\Commerce\Models\InventoryMovement;
use Modules\Commerce\Models\Product;
final class DatabaseInventoryProvider implements InventoryProvider
{
public function adjust(Product $product, int $quantity, string $reason, ?int $userId = null): void
{
DB::transaction(function () use ($product,$quantity,$reason,$userId) { $product->increment('stock_quantity',$quantity); InventoryMovement::create(['product_id'=>$product->id,'quantity'=>$quantity,'reason'=>$reason,'created_by'=>$userId]); });
}
public function available(Product $product): int { return max(0,(int)$product->stock_quantity); }
}
@@ -0,0 +1,4 @@
<?php
namespace Modules\Commerce\Services;
use Modules\Commerce\Contracts\ShippingProvider;
final class FlatRateShippingProvider implements ShippingProvider { public function quote(array $address,float $subtotal): float { return $subtotal >= 50 ? 0.0 : 4.95; } }
@@ -0,0 +1,6 @@
<?php
namespace Modules\Commerce\Services;
use Modules\Commerce\Contracts\PaymentProvider;
use Modules\Commerce\Models\Order;
final class ManualPaymentProvider implements PaymentProvider
{ public function charge(Order $order,array $data=[]): array { return ['status'=>'pending','provider'=>'manual','reference'=>null]; } public function refund(Order $order,float $amount): array { return ['status'=>'pending','provider'=>'manual','amount'=>$amount]; } }