HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/shop.komma.nl/app/Orders/Product/OrderedProduct.php
<?php

namespace App\Orders\Product;

use App\Shipments\Shipment;
use App\Vat\FinancialProperties;
use App\Vat\HasFinancialPropertiesInterface;
use Komma\KMS\Core\Attributes\Models\Traits\HasThumbnailInterface;
use Komma\KMS\Core\Attributes\Models\Traits\HasThumbnailTrait;
use App\Discounts\DiscountableInterface;
use App\Discounts\Discount;
use App\Orders\Models\Order;
use App\Orders\OrderedProductableInterface;
use App\Orders\ProductGroup\OrderedProductGroup;
use App\Products\Product\Product;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\MorphTo;

/**
 * App\Orders\Product\OrderedProduct
 *
 * @property int $id
 * @property int $orderable_id
 * @property string $orderable_type
 * @property int $product_id
 * @property string $name The name that you can show to a customer. Will be in the language that the product was ordered in
 * @property int $active
 * @property int $price Total price with discounts applied.
 * @property string $vat_scenario_enum The vat_scenario_enum at the moment of ordering. Ase in combination with the vat_percentage column
 * @property int $vat_percentage The vat percentage at the moment of ordering
 * @property string $stock_keeping_unit
 * @property int $quantity Total amount with discounts applied
 * @property int|null $shipment_id
 * @property int $status
 * @property \Illuminate\Support\Carbon|null $created_at
 * @property \Illuminate\Support\Carbon|null $updated_at
 * @property-read Model|\Eloquent $orderable
 * @property-read \Illuminate\Database\Eloquent\Collection|OrderedProductGroup[] $orderedGroups
 * @property-read int|null $ordered_groups_count
 * @property-read Product $product
 * @property-read Shipment|null $shipment
 * @method static \Illuminate\Database\Eloquent\Builder|OrderedProduct newModelQuery()
 * @method static \Illuminate\Database\Eloquent\Builder|OrderedProduct newQuery()
 * @method static \Illuminate\Database\Eloquent\Builder|OrderedProduct query()
 * @method static \Illuminate\Database\Eloquent\Builder|OrderedProduct whereActive($value)
 * @method static \Illuminate\Database\Eloquent\Builder|OrderedProduct whereCreatedAt($value)
 * @method static \Illuminate\Database\Eloquent\Builder|OrderedProduct whereId($value)
 * @method static \Illuminate\Database\Eloquent\Builder|OrderedProduct whereName($value)
 * @method static \Illuminate\Database\Eloquent\Builder|OrderedProduct whereOrderableId($value)
 * @method static \Illuminate\Database\Eloquent\Builder|OrderedProduct whereOrderableType($value)
 * @method static \Illuminate\Database\Eloquent\Builder|OrderedProduct wherePrice($value)
 * @method static \Illuminate\Database\Eloquent\Builder|OrderedProduct whereProductId($value)
 * @method static \Illuminate\Database\Eloquent\Builder|OrderedProduct whereQuantity($value)
 * @method static \Illuminate\Database\Eloquent\Builder|OrderedProduct whereShipmentId($value)
 * @method static \Illuminate\Database\Eloquent\Builder|OrderedProduct whereStatus($value)
 * @method static \Illuminate\Database\Eloquent\Builder|OrderedProduct whereStockKeepingUnit($value)
 * @method static \Illuminate\Database\Eloquent\Builder|OrderedProduct whereUpdatedAt($value)
 * @method static \Illuminate\Database\Eloquent\Builder|OrderedProduct whereVatPercentage($value)
 * @method static \Illuminate\Database\Eloquent\Builder|OrderedProduct whereVatScenarioEnum($value)
 * @mixin \Eloquent
 */
class OrderedProduct extends Model implements HasThumbnailInterface, OrderedProductableInterface, HasFinancialPropertiesInterface
{
    use HasThumbnailTrait;
    use FinancialProperties;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = ['active', 'name', 'price', 'vat_scenario_enum', 'vat_percentage', 'stock_keeping_unit', 'quantity', 'discount', 'status'];

    /**
     * Return the order or product group this ordered product belongs to
     *
     * @see Order
     * @see OrderedProductGroup
     * @return MorphTo
     */
    public function orderable(): MorphTo
    {
        return $this->morphTo();
    }

    public function getPrice(): float
    {
        return $this->price;
    }

    /**
     * Return the product
     *
     * @return BelongsTo
     */
    public function product():BelongsTo
    {
        return $this->belongsTo(Product::class);
    }

    /**
     * Return the groups
     *
     * @return BelongsToMany
     */
    public function orderedGroups()
    {
        return $this->belongsToMany(OrderedProductGroup::class);
    }

    public function shipment() {
        return $this->belongsTo(Shipment::class);
    }
}