<?php

class ConfBeneficiario extends CActiveRecord
{
    public $cuenta_descripcion;

    public function tableName()
    {
        return 'prestamos.beneficiario_cuenta_contable';
    }

    public function rules()
    {
        return [
            ['id_cuenta', 'numerical', 'integerOnly' => true],
            ['cuenta_descripcion', 'safe'],
            ['id_cuenta', 'safe', 'on' => 'search'],
        ];
    }

    public function relations()
    {
        return [
            'cuenta' => [self::BELONGS_TO, 'CuentasConsolidada', 'id_cuenta'],
        ];
    }

    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'id_cuenta' => 'Cuenta contable',
        ];
    }

    public function getCuentaContable()
    {
        if ($this->isNewRecord || is_null($this->id_cuenta)) {
            return '';
        }
        Yii::import('application.modules.contable.models.*');

        $this->cuenta_descripcion = $this->cuenta->codigo_cuenta.'-'.$this->cuenta->descripcion;
    }

    public function setCuentaContable()
    {
        Yii::import('application.modules.contable.models.*');

        $codigo = explode('-', $this->cuenta_descripcion);
        $cuenta = CuentasConsolidada::model()->find('codigo_cuenta=:id', [
            'id' => $codigo[0],
        ]);

        if (! $cuenta) {
            return;
        }

        $this->id_cuenta = $cuenta->id;
    }

    public function search()
    {
        $criteria = new CDbCriteria();
        $criteria->compare('id', $this->id);

        return new CActiveDataProvider($this, [
            'criteria' => $criteria,
        ]);
    }

    public static function model($className = __CLASS__)
    {
        return parent::model($className);
    }

    public static function getCuentaContableBeneficiario()
    {
        $conf = self::model()->findByPk(1);

        if ($conf->id_cuenta == null) {
            throw new Exception('No existe una cuenta contable definida para las retenciones de préstamos indebidos.');
        }

        return $conf->id_cuenta;
    }
}
