2018-09-28 12:54:26 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace Webkul\Sales\Models;
|
|
|
|
|
|
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
|
use Webkul\Sales\Contracts\OrderItem as OrderItemContract;
|
2018-10-23 11:45:44 +00:00
|
|
|
use Webkul\Product\Models\Product;
|
2018-09-28 12:54:26 +00:00
|
|
|
|
|
|
|
|
class OrderItem extends Model implements OrderItemContract
|
|
|
|
|
{
|
2018-10-05 06:18:58 +00:00
|
|
|
protected $guarded = ['id', 'child', 'created_at', 'updated_at'];
|
|
|
|
|
|
2018-10-26 04:20:43 +00:00
|
|
|
protected $casts = [
|
|
|
|
|
'additional' => 'array',
|
|
|
|
|
];
|
|
|
|
|
|
2018-10-09 12:02:22 +00:00
|
|
|
/**
|
|
|
|
|
* Get remaining qty for shipping.
|
|
|
|
|
*/
|
2018-12-26 10:00:23 +00:00
|
|
|
public function getQtyToShipAttribute()
|
|
|
|
|
{
|
2018-10-15 10:39:09 +00:00
|
|
|
return $this->qty_ordered - $this->qty_shipped - $this->qty_refunded - $this->qty_canceled;
|
2018-10-09 12:02:22 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get remaining qty for invoice.
|
|
|
|
|
*/
|
2018-12-26 10:00:23 +00:00
|
|
|
public function getQtyToInvoiceAttribute()
|
|
|
|
|
{
|
2018-10-15 10:39:09 +00:00
|
|
|
return $this->qty_ordered - $this->qty_invoiced - $this->qty_canceled;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get remaining qty for cancel.
|
|
|
|
|
*/
|
2018-12-26 10:00:23 +00:00
|
|
|
public function getQtyToCancelAttribute()
|
|
|
|
|
{
|
2018-10-15 10:39:09 +00:00
|
|
|
return $this->qty_ordered - $this->qty_canceled - $this->qty_invoiced;
|
2018-10-09 12:02:22 +00:00
|
|
|
}
|
|
|
|
|
|
2018-09-28 12:54:26 +00:00
|
|
|
/**
|
|
|
|
|
* Get the order record associated with the order item.
|
|
|
|
|
*/
|
|
|
|
|
public function order()
|
|
|
|
|
{
|
|
|
|
|
return $this->belongsTo(OrderProxy::modelClass());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get the order record associated with the order item.
|
|
|
|
|
*/
|
|
|
|
|
public function product()
|
|
|
|
|
{
|
|
|
|
|
return $this->morphTo();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get the child item record associated with the order item.
|
|
|
|
|
*/
|
|
|
|
|
public function child()
|
|
|
|
|
{
|
2018-10-09 12:02:22 +00:00
|
|
|
return $this->hasOne(OrderItemProxy::modelClass(), 'parent_id');
|
2018-09-28 12:54:26 +00:00
|
|
|
}
|
2018-10-05 06:18:58 +00:00
|
|
|
|
2018-10-09 12:02:22 +00:00
|
|
|
/**
|
|
|
|
|
* Get the invoice items record associated with the order item.
|
|
|
|
|
*/
|
2018-12-26 10:00:23 +00:00
|
|
|
public function invoice_items()
|
|
|
|
|
{
|
2018-10-09 12:02:22 +00:00
|
|
|
return $this->hasMany(InvoiceItemProxy::modelClass());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get the shipment items record associated with the order item.
|
|
|
|
|
*/
|
2018-12-26 10:00:23 +00:00
|
|
|
public function shipment_items()
|
|
|
|
|
{
|
2018-10-09 12:02:22 +00:00
|
|
|
return $this->hasMany(ShipmentItemProxy::modelClass());
|
2018-10-05 06:18:58 +00:00
|
|
|
}
|
2018-10-26 04:20:43 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns configurable option html
|
|
|
|
|
*/
|
|
|
|
|
public function getOptionDetailHtml()
|
|
|
|
|
{
|
|
|
|
|
|
2019-01-15 11:54:41 +00:00
|
|
|
if ($this->type == 'configurable' && isset($this->additional['attributes'])) {
|
2018-10-26 04:20:43 +00:00
|
|
|
$labels = [];
|
|
|
|
|
|
2019-01-15 11:54:41 +00:00
|
|
|
foreach ($this->additional['attributes'] as $attribute) {
|
2018-10-26 04:20:43 +00:00
|
|
|
$labels[] = $attribute['attribute_name'] . ' : ' . $attribute['option_label'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return implode(', ', $labels);
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-09-28 12:54:26 +00:00
|
|
|
}
|