<?php

class Sinistro_Model_CobrancaRelatorio extends Agro_Db_Table_Abstract {
	protected $_schema = 'sinistro';
	protected $_name = 'cobranca_relatorio';
	protected $_primary = 'id';

	public function getNota($empresa, $nf) {
		$Select = $this->select()->setIntegrityCheck(false);
		$Select->from(array('e' => 'sistema.vistorias_empresas'));
		$Select->join(array('v' => 'sinistro.cobranca_relatorio_vistorias'), 'e.id_vistoria = v.id_vistoria');
		$Select->join(array('c' => 'sinistro.cobranca_relatorio'), 'c.id = v.id_cobranca_relatorio');
		$Select->join(array('vp' => 'sinistro.vistorias_processos'), 'vp.id_vistoria = v.id_vistoria', false);
		$Select->join(array('p' => 'sinistro.processos'), 'p.id = vp.id_processo', false);
		$Select->join(array('prop' => 'seguro.propostas'), 'prop.id = p.id_proposta', false);
		$Select->join(array('prod' => 'produto.produtos'), 'prod.id = prop.id_produto', false);
		$Select->join(array('s' => 'produto.safras'), 's.id = prod.id_safra', false);
		$Select->where('e.id_empresa = ?', $empresa);
		$Select->where('e.fl_ativo = true');
		$Select->where('c.nr_nota_fiscal = ?', $nf);

		return $this->fetchAll($Select);
	}

	public function geraObservacao($params,$view=false) {
		$Rs = $this->getNota($params['id_empresa'], $params['numero']);
		$Vistorias = new Sistema_Model_Vistorias();
		$return = array();

		if ($Rs->count()) {
			foreach ($Rs as $i => $Row) {

				$Vistoria = $Vistorias->find($Row->id_vistoria)->current();
				
				if($Vistoria){
				
					$quadras = $Vistoria->quadras_observacoes();
	
					if($view == true){
					    $return[$Row->id_vistoria]  = "<input type='checkbox' checked name='vistoria[]' value='".$Row->id_vistoria."'>\n";
					    $return[$Row->id_vistoria] .= "Processo: {$quadras['processo']}\nCobertura: {$quadras['cobertura']}\n";
					}
					
					$return[$Row->id_vistoria] .= "Recebido em: {$params['data']}\nNota Fiscal Nº.: {$params['numero']}\nQuadras: {$quadras['quadras']}\nVariedade: {$quadras['variedades']}\nData da Vistoria: ".Agro_Util::formatDate($quadras['dt_vistoria'])."\nTipo: {$quadras['tipo']}";
					
				}
			}
		}

		return $return;
	}

	public function getProcessos($vistoria) {
		return Zend_Db_Table_Abstract::getDefaultAdapter()->fetchAll("select id_processo from sinistro.vistorias_processos where id_vistoria = $vistoria");
	}

	public function addObservacao($processo, $obs) {

		return Zend_Db_Table_Abstract::getDefaultAdapter()->query("insert into sinistro.processos_observacoes
		(id_usuario_criacao, id_processo, ds_observacao)
		values
		(".$this->_user->id.", $processo, '".$obs."');
		");
	}
	
	public function alterarNota($values){
		try {
			$this->getDefaultAdapter()->beginTransaction();
			
			$Log = new Sinistro_Model_CobrancaRelatorioLogAlteracaoNotas();
			
			$Row = $this->getRow($values["id"]);
			
			$nr_nota_antiga = $Row->nr_nota_fiscal;
			
			$Row->nr_nota_fiscal = $values["nr_nota_fiscal"];
			
			$Row->save();
			
			$log = array(
				"id_cobranca_relatorio" => $values["id"],
				"nr_nota_antiga"		=> $nr_nota_antiga,
			 	"nr_nota_nova" => $values["nr_nota_fiscal"]
			);
			
			if ($Log->save($log)){
				$this->getDefaultAdapter()->commit();
				return true;
				
			} else {
				$this->getDefaultAdapter()->rollBack();
				$this->setMessage($Log->getMessages());
				return false;
			}
			
		} catch (Exception $e) {
			$this->getDefaultAdapter()->rollBack();
			$this->setMessage($e->getMessage());
			return false;
		}
	}
}