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
+11
View File
@@ -0,0 +1,11 @@
<?php
namespace Modules\Commerce\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
final class Category extends Model
{
protected $table = 'commerce_categories';
protected $guarded = [];
protected function casts(): array { return ['is_active'=>'boolean']; }
}
+11
View File
@@ -0,0 +1,11 @@
<?php
namespace Modules\Commerce\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
final class Customer extends Model
{
protected $table = 'commerce_customers';
protected $guarded = [];
protected function casts(): array { return ['billing_address'=>'array','shipping_address'=>'array']; }
}
@@ -0,0 +1,11 @@
<?php
namespace Modules\Commerce\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
final class InventoryMovement extends Model
{
protected $table = 'commerce_inventory_movements';
protected $guarded = [];
protected function casts(): array { return []; }
}
+11
View File
@@ -0,0 +1,11 @@
<?php
namespace Modules\Commerce\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
final class Order extends Model
{
protected $table = 'commerce_orders';
protected $guarded = [];
protected function casts(): array { return ['subtotal'=>'decimal:2','discount_total'=>'decimal:2','shipping_total'=>'decimal:2','tax_total'=>'decimal:2','grand_total'=>'decimal:2','billing_address'=>'array','shipping_address'=>'array','placed_at'=>'datetime']; }
}
+11
View File
@@ -0,0 +1,11 @@
<?php
namespace Modules\Commerce\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
final class OrderItem extends Model
{
protected $table = 'commerce_order_items';
protected $guarded = [];
protected function casts(): array { return ['unit_price'=>'decimal:2','tax_total'=>'decimal:2','line_total'=>'decimal:2','metadata'=>'array']; }
}
+11
View File
@@ -0,0 +1,11 @@
<?php
namespace Modules\Commerce\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
final class Product extends Model
{
use SoftDeletes;
protected $table = 'commerce_products';
protected $guarded = [];
protected function casts(): array { return ['price'=>'decimal:2','compare_at_price'=>'decimal:2','cost_price'=>'decimal:2','track_inventory'=>'boolean','is_featured'=>'boolean','published_at'=>'datetime','metadata'=>'array']; }
}
@@ -0,0 +1,11 @@
<?php
namespace Modules\Commerce\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
final class ProductVariant extends Model
{
protected $table = 'commerce_product_variants';
protected $guarded = [];
protected function casts(): array { return ['price'=>'decimal:2','options'=>'array','is_active'=>'boolean']; }
}
+11
View File
@@ -0,0 +1,11 @@
<?php
namespace Modules\Commerce\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
final class Promotion extends Model
{
protected $table = 'commerce_promotions';
protected $guarded = [];
protected function casts(): array { return ['value'=>'decimal:2','minimum_order'=>'decimal:2','starts_at'=>'datetime','ends_at'=>'datetime','is_active'=>'boolean','conditions'=>'array']; }
}
+2
View File
@@ -0,0 +1,2 @@
<?php
// Relationship reference: Product belongsTo Category and hasMany ProductVariant; Order hasMany OrderItem and belongsTo Customer.