Files
opensem/app/Models/Shop/Order.php
Ludovic CANDELLIER ddb4520621 fix shipping
2023-07-16 17:54:44 +02:00

101 lines
2.2 KiB
PHP

<?php
namespace App\Models\Shop;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Venturecraft\Revisionable\RevisionableTrait;
class Order extends Model
{
use RevisionableTrait, SoftDeletes;
protected $guarded = ['id'];
protected $table = 'shop_orders';
protected $revisionCreationsEnabled = false;
protected $keepRevisionOf = ['customer_address_id', 'delivery_id', 'payment_type', 'status'];
public function customer()
{
return $this->belongsTo(Customer::class);
}
public function address()
{
return $this->belongsTo(CustomerAddress::class, 'customer_address_id');
}
public function delivery_address()
{
return $this->belongsTo(CustomerAddress::class, 'customer_delivery_id');
}
public function delivery()
{
return $this->belongsTo(Delivery::class);
}
public function detail()
{
return $this->hasMany(OrderDetail::class);
}
public function invoice()
{
return $this->hasOne(Invoice::class);
}
public function sale_channel()
{
return $this->belongsTo(SaleChannel::class);
}
public function scopeByUUID($query, $uuid)
{
return $query->where('uuid', $uuid);
}
public function scopeByCustomer($query, $customerId)
{
return $query->where('customer_id', $customerId);
}
public function scopeByDelivery($query, $deliveryId)
{
return $query->where('delivery_id', $deliveryId);
}
public function scopePreparation($query)
{
return $query->byStatus(1);
}
public function scopeSended($query)
{
return $query->byStatus(2);
}
public function scopeReceived($query)
{
return $query->byStatus(3);
}
public function scopeByStatus($query, $status)
{
return $query->where('status', $status);
}
public function scopeByPaymentType($query, $paymentType)
{
return $query->where('payment_type', $paymentType);
}
public function scopeByPeriod($query, $start, $end, $field = 'created_at')
{
return $query->whereBetween($field, [$start, $end]);
}
}