<?php

/**
 * This is the model base class for the table "rdm".
 * DO NOT MODIFY THIS FILE! It is automatically generated by giix.
 * If any changes are necessary, you must set or override the required
 * property or method in class "Rdm".
 *
 * Columns in table "rdm" available as properties of the model,
 * followed by relations of table "rdm" available as properties of the model.
 *
 * @property integer $RDM_IDRDM
 * @property string $RDM_DATA
 * @property integer $RDM_IDREVENDA
 * @property integer $RDM_IDRESPONSAVEL
 * @property integer $RDM_IDREVISADO
 * @property string $RDM_META
 * @property string $RDM_RESULTADO_PREVISTO
 * @property string $RDM_RESULTADO_OBTIDO
 * @property string $RDM_RESULTADO_ACUMULADO_PREVISTO
 * @property string $RDM_RESULTADO_ACUMULADO_OBTIDO
 * @property integer $RDM_STATUS
 *
 * @property Funcionarios $Revisor
 * @property Revendas $Revenda
 * @property Funcionarios $Responsavel
 * @property RdmAtividades[] $Atividades
 * @property RdmCausas[] $Causas
 */
class Rdm extends GxActiveRecord {

    public $RDT_IDRDM;

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

    public function tableName() {
        return 'rdm';
    }

    public static function label($n = 1) {
        return Yii::t('app', 'RDM|RDMs', $n);   
    }

    public static function representingColumn() {
        return 'RDM_DATA';
    }

    protected function beforeSave() {
        if (!parent::beforeSave())
            return false;
        $this->RDM_RESULTADO_PREVISTO = Util::convertdecimal($this->RDM_RESULTADO_PREVISTO);
        $this->RDM_RESULTADO_OBTIDO = Util::convertdecimal($this->RDM_RESULTADO_OBTIDO);
        $this->RDM_RESULTADO_ACUMULADO_PREVISTO = Util::convertdecimal($this->RDM_RESULTADO_ACUMULADO_PREVISTO);
        $this->RDM_RESULTADO_ACUMULADO_OBTIDO = Util::convertdecimal($this->RDM_RESULTADO_ACUMULADO_OBTIDO);
        return true;
    }

    public function behaviors() {
        return array('datetimeI18NBehavior' => array('class' => 'ext.DateTimeI18NBehavior'));
    }

    public function rules() {
        $responsavel = (isset($_POST['Rdm']['RDM_IDRESPONSAVEL'])) ? $_POST['Rdm']['RDM_IDRESPONSAVEL'] : '';
        return array(
            array('RDM_DATA, RDM_IDREVENDA, RDM_IDRESPONSAVEL, RDM_IDREVISADO, RDM_META, RDM_RESULTADO_PREVISTO, RDM_RESULTADO_OBTIDO, RDM_RESULTADO_ACUMULADO_PREVISTO, RDM_RESULTADO_ACUMULADO_OBTIDO, RDM_STATUS', 'required'),
            array('RDM_IDREVENDA, RDM_IDRESPONSAVEL, RDM_IDREVISADO, RDM_STATUS', 'numerical', 'integerOnly' => true),
            array('RDM_RESULTADO_PREVISTO, RDM_RESULTADO_OBTIDO, RDM_RESULTADO_ACUMULADO_PREVISTO, RDM_RESULTADO_ACUMULADO_OBTIDO', 'length', 'max' => 10),
            array('RDM_IDRDM, RDM_DATA, RDM_IDREVENDA, RDM_IDRESPONSAVEL, RDM_IDREVISADO, RDM_META, RDM_RESULTADO_PREVISTO, RDM_RESULTADO_OBTIDO, RDM_RESULTADO_ACUMULADO_PREVISTO, RDM_RESULTADO_ACUMULADO_OBTIDO, RDM_STATUS', 'safe', 'on' => 'search'),
            array('RDM_IDRESPONSAVEL', 'RdmVendedor', 'RDM_IDRESPONSAVEL' => $responsavel, 'on' => 'insert'),
        );
    }

    public function RdmVendedor($attribute, $params) {
        $Rdm = Rdm::model()->findAll("RDM_IDRESPONSAVEL = '" . $_POST['Rdm']['RDM_IDRESPONSAVEL'] . "' and RDM_STATUS <> 5");
        if (!empty($Rdm)) {
            $this->addError($attribute, 'Este vendedor possui um RDM em aberto!');
        }
    }

    public function relations() {
        return array(
            'Revisor'       => array(self::BELONGS_TO, 'Funcionarios', 'RDM_IDREVISADO'),
            'Revenda'       => array(self::BELONGS_TO, 'Revendas', 'RDM_IDREVENDA'),
            'Responsavel'   => array(self::BELONGS_TO, 'Funcionarios', 'RDM_IDRESPONSAVEL'),
            'Atividades'    => array(self::HAS_MANY, 'RdmAtividades', 'RDT_IDRDM'),
            'Causas'        => array(self::HAS_MANY, 'RdmCausas', 'RDC_IDRDM'),
        );
    }

    public function pivotModels() {
        return array(
        );
    }

    public function attributeLabels() {
        return array(
            'RDM_IDRDM'                         => 'Código',
            'RDM_DATA'                          => 'Data',
            'RDM_IDREVENDA'                     => 'Unidade de Negócios',
            'RDM_IDRESPONSAVEL'                 => 'Responsável',
            'RDM_IDREVISADO'                    => 'Revisado por',
            'RDM_META'                          => 'Descrição da Meta no período',
            'RDM_RESULTADO_PREVISTO'            => 'Meta prevista no período',
            'RDM_RESULTADO_OBTIDO'              => 'Resultado obtido no período',
            'RDM_RESULTADO_ACUMULADO_PREVISTO'  => 'Meta acumulada prevista no ciclo',
            'RDM_RESULTADO_ACUMULADO_OBTIDO'    => 'Resultado acumulado obtido no ciclo',
            'RDM_STATUS'                        => 'Status',
            'Revisor'                           => 'Revisado por',
            'Revenda'                           => 'Unidade de Negócios',
            'Responsavel'                       => 'Responsável',
            'Atividades'                        => 'Atividades',
            'Causas'                            => 'Causas',
            'RDM_DESVIO_OBTIDO'                 => 'Desvio no período',
            'RDM_DESVIO_ACUMULADO'              => 'Desvio acumulado no ciclo',
            'RDM_SALDO_OBTIDO'                  => 'Saldo no período',
            'RDM_SALDO_ACUMULADO'               => 'Saldo acumulado no ciclo',
        );
    }

    public function search() {
        $criteria = new CDbCriteria;

        $criteria->compare('RDM_IDRDM', $this->RDM_IDRDM);
        $criteria->compare('RDM_DATA', $this->RDM_DATA, true);
        $criteria->compare('RDM_IDREVENDA', $this->RDM_IDREVENDA);
        $criteria->compare('RDM_IDRESPONSAVEL', $this->RDM_IDRESPONSAVEL);
        $criteria->compare('RDM_IDREVISADO', $this->RDM_IDREVISADO);
        $criteria->compare('RDM_META', $this->RDM_META, true);
        $criteria->compare('RDM_RESULTADO_PREVISTO', $this->RDM_RESULTADO_PREVISTO, true);
        $criteria->compare('RDM_RESULTADO_OBTIDO', $this->RDM_RESULTADO_OBTIDO, true);
        $criteria->compare('RDM_RESULTADO_ACUMULADO_PREVISTO', $this->RDM_RESULTADO_ACUMULADO_PREVISTO, true);
        $criteria->compare('RDM_RESULTADO_ACUMULADO_OBTIDO', $this->RDM_RESULTADO_ACUMULADO_OBTIDO, true);
        $criteria->compare('RDM_STATUS', $this->RDM_STATUS);

        return new CActiveDataProvider($this, array(
            'criteria' => $criteria,
            'sort' => array(
                'defaultOrder' => 'RDM_IDRDM DESC',
            ),
            'pagination' => array(
                'pageSize' => 50,
            )
        ));
    }

    public function isAllowed() {
        if (User::isVendedor() && $this->RDM_IDRESPONSAVEL != User::getId()) {
            return false;
        } elseif (User::isRevenda() && !in_array($this->RDM_IDREVENDA, array_keys(User::getRevendas()))) {
            return false;
        }
        return true;
    }

}