<?php

class Produto_Model_ValidacoesSubvencaoComercial extends Agro_Db_Table_Abstract {
	protected $_schema = 'produto';
	protected $_name = 'validacoes_limites_subvencao_comercial';
	protected $_primary = 'id';
	public $_paginator = false;
	public $_order = 'ds_ano';
	
	
	public function save(array $data) {
		$Row = $this->getRow($data['id']);
		
		$Row->id_usuario = $data['id_usuario'];
		$Row->vl_limite_subvencao = ($data['vl_limite_subvencao'] ? Agro_Util::formatCurrencyDb($data['vl_limite_subvencao']) : 0);
		$Row->ds_ano = $data['ds_ano'];
		$Row->fl_ativo = ($data['fl_ativo'] ? 1 : 0);

		return $Row->save();
	}

	public function getData($where) {
		$sql = "
			select
				vls.*,
				f.ds_nome_funcionario
			from
				produto.validacoes_limites_subvencao_comercial vls,
				sistema.usuarios u,
				sistema.funcionarios f
			where
				    vls.id_usuario = u.id
				and f.id_usuario = u.id";
		
		if (is_array($where)) {
			foreach ($where as $clause) {
				$field = $clause['field'];
				$operator = $clause['operator'];
				$value = $clause['value'];
				$sql .= " and  $field $operator $value ";
			}
		} elseif ($where != '') {
			$sql .= " and $where";
		}
		
		$sql .= ' order by vls.ds_ano desc, f.ds_nome_funcionario';
		
		return $this->_db->fetchAll($sql);
	}
	
	public function verifica_limite_cadastrado($idComercial, $dsAno, $id) {
	    if($id){ $where = " and id <> $id"; }
		return Agro_Db_Table_Abstract::getDefaultAdapter()->fetchOne("select id from produto.validacoes_limites_subvencao_comercial where id_usuario = {$idComercial} and ds_ano='{$dsAno}' $where");
	}
	
	public function limite_subvencao_liberado_ano($idComercial, $dsAno) {
		return Agro_Db_Table_Abstract::getDefaultAdapter()->fetchOne("select vl_limite_subvencao from produto.validacoes_limites_subvencao_comercial where id_usuario = {$idComercial} and fl_ativo = true and ds_ano='{$dsAno}'");
	}
	
	public function limite_subvencao_cadastrado($idComercial, $dsAno, $idValidacao) {
	    if($idValidacao){
	        $filtro = " and id <> {$idValidacao}";
	    }
		return Agro_Db_Table_Abstract::getDefaultAdapter()->fetchOne("select sum(vl_limite_subvencao) from produto.validacoes_limites_subvencao_grupos where id_usuario = {$idComercial} and fl_ativo = true and ds_ano='{$dsAno}' $filtro");
	}
	
}