<?php

namespace app\models;
use yii\db\ActiveRecord;
use yii\web\ServerErrorHttpException;

use Yii;

/**
 * Este es el modelo para la tabla "documentos_pedido".
 *
 * @property int $id
 * @property int $pedido_id
 * @property string $numero_documento   // CLAC2333 (Correlativo)
 * @property string $tipo_documento     // CLAC, PI, TBS
 * @property string $status_documento   // CLAC GENERADA, CLAC APROBADA, PI ENVIADO
 * @property string|null $nombre_lote
 * @property string|null $nombre_archivo
 * @property string $fecha_creacion
 * @property string|null $fecha_revision_clac
 * @property int|null $usuario_revisor_id
 *
 * @property Pedidos $pedido
 * @property PedidoReportePrecios[] $pedidoReportePrecios
 */
class DocumentosPedido extends \yii\db\ActiveRecord
{
    /**
     * {@inheritdoc}
     */
    public static function tableName()
    {
        return 'documentos_pedido';
    }

    /**
     * {@inheritdoc}
     */
    public function rules()
    {
        return [
            [['pedido_id', 'numero_documento', 'tipo_documento', 'status_documento', 'fecha_creacion'], 'required'],
            [['pedido_id', 'usuario_revisor_id'], 'integer'],
            [['fecha_creacion', 'fecha_revision_clac'], 'safe'],
            [['numero_documento'], 'string', 'max' => 20],
            [['tipo_documento'], 'string', 'max' => 10],
            [['status_documento'], 'string', 'max' => 50],
            [['nombre_lote'], 'string', 'max' => 100],
            [['nombre_archivo'], 'string', 'max' => 255],
            [['numero_documento'], 'unique'],
            
           [['documento_origen_id'], 'exist', 'skipOnError' => true, 'targetClass' => DocumentosPedido::class, 'targetAttribute' => ['documento_origen_id' => 'id']],
            [['pedido_id'], 'exist', 'skipOnError' => true, 'targetClass' => Pedidos::class, 'targetAttribute' => ['pedido_id' => 'id']],
            [['cotizacion_id'], 'exist', 'skipOnError' => true, 'targetClass' => Cotizaciones::class, 'targetAttribute' => ['cotizacion_id' => 'id']],
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID Documento',
            'pedido_id' => 'Pedido ID',
            'numero_documento' => 'Número CLAC',
            'tipo_documento' => 'Tipo Documento',
            'status_documento' => 'Estado de Seguimiento',
            'nombre_lote' => 'Nombre del Lote',
            'nombre_archivo' => 'Archivo PDF',
            'fecha_creacion' => 'Fecha Creación',
            'fecha_revision_clac' => 'Fecha Aprobación CLAC',
            'usuario_revisor_id' => 'Revisor ID',
        ];
    }

    // --- RELACIONES ---

    /**
     * Obtiene el modelo Pedido asociado a este documento.
     */
    public function getPedido()
    {
        return $this->hasOne(Pedidos::class, ['id' => 'pedido_id']);
    }

    /**
     * Obtiene los ítems del reporte asociados a este documento.
     */
    public function getPedidoReportePrecios()
    {
        return $this->hasMany(PedidoReportePrecios::class, ['documento_id' => 'id']);
    }

    public function getDocumentoOrigen()
    {
        return $this->hasOne(DocumentosPedido::class, ['id' => 'documento_origen_id']);
    }

    /**
     * Relación autorreferencial: Obtiene los documentos hijos (PI, Factura) derivados de este.
     */
    public function getDocumentosHijos()
    {
        return $this->hasMany(DocumentosPedido::class, ['documento_origen_id' => 'id']);
    }
}