<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

class StockAuditItem extends Model
{
    protected $fillable = [
        'audit_id',
        'product_id',
        'variant_id',
        'system_qty',
        'physical_qty',
        'difference_qty',
    ];

    protected function casts(): array
    {
        return [
            'system_qty' => 'decimal:2',
            'physical_qty' => 'decimal:2',
            'difference_qty' => 'decimal:2',
        ];
    }

    public function audit(): BelongsTo
    {
        return $this->belongsTo(StockAudit::class, 'audit_id');
    }

    public function product(): BelongsTo
    {
        return $this->belongsTo(Product::class, 'product_id');
    }

    /**
     * Variant product row (when this item is for a variant child).
     */
    public function variant(): BelongsTo
    {
        return $this->belongsTo(Product::class, 'variant_id');
    }

    /**
     * Product row id to use for stock update (variant child id or single product id).
     */
    public function getEffectiveProductIdAttribute(): ?int
    {
        return $this->variant_id ?? $this->product_id;
    }
}
