<?php

declare(strict_types=1);

namespace Kylin\Retail\Models;

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

/**
 * 库存日志
 *
 * 依据 SB/T 10668-2012《零售商供应商公平交易行为规范》：
 * 库存盘点记录可追溯。
 *
 * @property int    $id
 * @property int    $product_id     商品 ID
 * @property string $type           操作类型（in/out/check）
 * @property int    $quantity       数量变化
 * @property int    $before_stock   操作前库存
 * @property int    $after_stock    操作后库存
 * @property string $remark         备注
 * @property string $operated_at    操作时间
 */
class InventoryLog extends BaseModel
{
    protected $table = 'kylin_retail_inventory_logs';

    protected $fillable = [
        'product_id', 'type', 'quantity',
        'before_stock', 'after_stock', 'remark', 'operated_at',
    ];

    protected $casts = [
        'quantity' => 'integer',
        'before_stock' => 'integer',
        'after_stock' => 'integer',
        'operated_at' => 'datetime',
    ];

    public function product(): BelongsTo
    {
        return $this->belongsTo(Product::class, 'product_id');
    }
}