<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class SalesProgramTier extends Model
{
    use HasFactory;

    // Menentukan nama tabel secara eksplisit
    protected $table = 'sales_program_tiers';

    // Kolom yang diizinkan untuk diisi secara massal
    protected $fillable = [
        'sales_program_id',
        'min_qty',
        'max_qty',
        'reward_type',
        'reward_value',
        'bonus_product_id',
        'bonus_qty',
        'is_multiple', // TAMBAHAN ENTERPRISE: Mendukung parameter kelipatan (multiplier) dari form Next.js Promo
    ];

    // TAMBAHAN ENTERPRISE: Casts mengubah tipe data secara otomatis agar presisi saat kalkulasi HPP/Diskon di SalesOrderController
    protected $casts = [
        'min_qty' => 'float',
        'max_qty' => 'float',
        'bonus_qty' => 'float',
        'is_multiple' => 'boolean',
    ];

    /**
     * Relasi balik (BelongsTo) ke tabel sales_programs
     */
    public function program()
    {
        return $this->belongsTo(SalesProgram::class, 'sales_program_id');
    }

    /**
     * Relasi (BelongsTo) ke tabel products khusus untuk barang bonus/hadiah
     */
    public function bonusProduct()
    {
        return $this->belongsTo(Product::class, 'bonus_product_id');
    }
}