<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Comprobante extends Model
{
    protected $table = 'comprobantes';

    protected $guarded = ['id'];

    protected $casts = [
        'fecha' => 'date',
        'fecha_autorizacion' => 'datetime',
        'electronico' => 'boolean',
    ];

    public function orden()
    {
        return $this->belongsTo(Orden::class);
    }

    public function venta()
    {
        return $this->belongsTo(Venta::class);
    }

    public function cliente()
    {
        return $this->belongsTo(Cliente::class);
    }

    public function user()
    {
        return $this->belongsTo(User::class);
    }

    public function getSerieNumeroAttribute(): string
    {
        return $this->serie.'-'.str_pad($this->numero, 6, '0', STR_PAD_LEFT);
    }

    public function getEstadoSriLabelAttribute(): string
    {
        return match ($this->estado_sri) {
            'no_electronico' => 'No electrónico',
            'borrador' => 'Borrador',
            'generado' => 'XML generado',
            'firmado' => 'Firmado',
            'enviado' => 'Enviado al SRI',
            'autorizado' => 'Autorizado',
            'no_autorizado' => 'No autorizado',
            'devuelta' => 'Devuelta (rechazada en recepción)',
            'rechazado' => 'Rechazado',
            'anulado_sri' => 'Anulado',
            default => ucfirst($this->estado_sri ?? ''),
        };
    }

    public function getEstadoSriColorAttribute(): string
    {
        return match ($this->estado_sri) {
            'autorizado' => 'success',
            'enviado', 'generado', 'firmado', 'borrador' => 'warning',
            'no_autorizado', 'devuelta', 'rechazado' => 'danger',
            default => 'info',
        };
    }
}
