<?
/**
 * 
 * Liquidação Manual
 *
 */
class Safra15_Model_LIQ05 extends Agro_Db_Table_Abstract {
	protected $_schema = 'sinistro';
	protected $_name = 'tipo_liquidacao';
	protected $_primary = 'id';
	public $_order = 'ds_nome_tipo_liquidacao';
	
	
	public function liquidar($dados){
		$result = array("status"=>true, "message"=>"", "execute"=>"");
		
		$ModelLiquidacoes = new Sinistro_Model_Liquidacoes();
		
		$ModelItemSegurado = new Seguro_Model_ItensSegurados();
		
		$ModelPropostasCoberturas = new Seguro_Model_PropostasCoberturas();
		
		$ModelLiquidacoesItensSeguradosCoberturas = new Sinistro_Model_LiquidacoesItensSeguradosCoberturas();
		
		$ItemSegurado = $ModelItemSegurado->find($dados['id_item_segurado'])->current();
		
		$this->getAdapter()->beginTransaction();
		
		foreach ($dados["coberturas-".$dados["id_item_segurado"]] as $cobertura){
		
			if (floatval($dados["vl_indenizacao-".$dados["id_item_segurado"]."-$cobertura"]) > floatval($dados["vl_prejuizo_total-".$dados["id_item_segurado"]."-$cobertura"])){
				$this->getAdapter()->rollBack();
				$result['status'] = false;
				$result['message'] = "O valor da indenização não pode ser superio ao prejuizo.";
				
			} else {
				try {
					$vl_percent_franquia = $ModelPropostasCoberturas->getFranquiaByPropostaCobertura($dados['id_proposta'], $dados["id_cobertura"]);
					
					$vl_franquia = round( $ItemSegurado->vl_lmga * ($vl_percent_franquia / 100), 2);
					
					$ModelLiquidacoesItensSeguradosCoberturas->save(
						array(
							"id_liquidacao" 		=> $dados["id_liquidacao"],
							"id_item_segurado" 		=> $dados["id_item_segurado"],
							"id_cobertura" 			=> $cobertura,
							"vl_percent_franquia" 	=> $vl_percent_franquia,
							"vl_franquia" 			=> $vl_franquia,
							"vl_indenizacao" 		=> $dados["vl_indenizacao-{$dados["id_item_segurado"]}-$cobertura"], 
							"vl_prejuizo_total" 	=> $dados["vl_prejuizo_total-{$dados["id_item_segurado"]}-$cobertura"]
						)
					);
					
					$result['message'] = "Liquidação realizada com sucesso";
				} catch (Exception $e) {
					$this->getAdapter()->rollBack();
					$result['status'] = false;
					$result['message'] = "Não foi possível realizar a liquidação. \n {$e->getMessage()}";
				}
			}
		}
		$this->getAdapter()->commit();
		
		return $result; 
	}
}
