diff --git a/app/Datatables/Shop/InvoicesDataTable.php b/app/Datatables/Shop/InvoicesDataTable.php index f7a44200..66c4398d 100644 --- a/app/Datatables/Shop/InvoicesDataTable.php +++ b/app/Datatables/Shop/InvoicesDataTable.php @@ -13,6 +13,7 @@ class InvoicesDataTable extends DataTable public function query(Invoice $model) { + $model = $model->with('customer'); return $this->buildQuery($model); } @@ -26,7 +27,7 @@ class InvoicesDataTable extends DataTable return $invoice->created_at->toDateTimeString(); }) ->editColumn('customer.last_name', function (Invoice $invoice) { - return $invoice->customer->last_name . ' ' . $invoice->customer->first_name; + return ($invoice->customer ?? false) ? $invoice->customer->last_name . ' ' . $invoice->customer->first_name : ''; }) ->rawColumns(['action']); return parent::modifier($datatables); @@ -38,7 +39,7 @@ class InvoicesDataTable extends DataTable Column::make('status'), Column::make('created_at')->title('Date'), - Column::make('customer.last_name'), + Column::make('customer.last_name')->default(''), Column::make('total'), $this->makeColumnButtons(), ]; diff --git a/app/Models/Shop/Invoice.php b/app/Models/Shop/Invoice.php index e9b24d88..187f131f 100644 --- a/app/Models/Shop/Invoice.php +++ b/app/Models/Shop/Invoice.php @@ -3,19 +3,32 @@ namespace App\Models\Shop; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\SoftDeletes; + +use Venturecraft\Revisionable\RevisionableTrait; +use Znck\Eloquent\Traits\BelongsToThrough; class Invoice extends Model { + use BelongsToThrough, RevisionableTrait, SoftDeletes; + protected $guarded = ['id']; protected $table = 'shop_invoices'; + protected $revisionCreationsEnabled = false; + protected $keepRevisionOf = ['status', 'total_taxed', 'shipping', 'total_shipped']; - public function InvoiceItems() + public function payments() { - return $this->hasMany(InvoiceItem::class); + return $this->hasMany(InvoicePayment::class); } - public function Customer() + public function order() { - return $this->belongsTo(Customer::class); + return $this->belongsTo(Order::class); + } + + public function customer() + { + return $this->belongsToThrough(Customer::class, Order::class, null, '', [Customer::class => 'customer_id', Order::class => 'order_id']); } } diff --git a/app/Repositories/Shop/Invoices.php b/app/Repositories/Shop/Invoices.php index 4af55d61..28837bc5 100644 --- a/app/Repositories/Shop/Invoices.php +++ b/app/Repositories/Shop/Invoices.php @@ -65,6 +65,11 @@ class Invoices return $last_ref ? $last_ref->ref + 1 : $ref + 1; } + public static function getStatus($id) + { + return self::statuses()[$id] ?? false; + } + public static function statuses() { return ['En attente', 'Non soldée', 'Soldée'];