<?php

declare(strict_types=1);

namespace Kylin\Retail\Models;

use Illuminate\Database\Eloquent\Relations\HasMany;
use Kylin\Core\Models\BaseModel;

/**
 * 商品模型
 *
 * 依据《电子商务法》第十四条：商品信息需完整展示。
 * 依据《食品安全法》第五十三条/第六十七条：食品类商品进货记录、标签信息。
 * 依据《价格法》第十三条/第十四条：明码标价。
 *
 * @property int    $id
 * @property string $name           商品名称
 * @property string $barcode        商品条码（EAN-13/UPC-A）
 * @property string $category       商品分类
 * @property int    $price          售价（分）
 * @property int    $cost_price     成本价（分）
 * @property int    $stock          库存数量
 * @property int    $min_stock      最低库存预警
 * @property string $status         状态
 */
class Product extends BaseModel
{
    protected $table = 'kylin_retail_products';

    protected $fillable = [
        'name', 'barcode', 'category',
        'price', 'cost_price', 'stock',
        'min_stock', 'status',
    ];

    protected $casts = [
        'price' => 'integer',
        'cost_price' => 'integer',
        'stock' => 'integer',
        'min_stock' => 'integer',
    ];

    public function orderItems(): HasMany
    {
        return $this->hasMany(OrderItem::class, 'product_id');
    }

    public function inventoryLogs(): HasMany
    {
        return $this->hasMany(InventoryLog::class, 'product_id');
    }
}