<?
class Safra14_Model_LIQ03 extends Agro_Db_Table_Abstract {
	protected $_schema = 'sinistro';
	protected $_name = 'tipo_liquidacao';
	protected $_primary = 'id';
	public $_order = 'ds_nome_tipo_liquidacao';
	
	private $_ModelLiquidacoes;
	private $_ModelLiquidacoesItensSegurados;
	private $_ModelLiquidacoesItensSeguradosCoberturas;
	private $_ModelLiquidacoesItensSeguradosCoberturasLf;
	private $_ModelPropostaCoberturas;
	private $_ModelItemSegurado;
	private $_ModelLfIS;
	
	public function init(){
		parent::init();
		
		$this->_ModelLiquidacoes = new Sinistro_Model_Liquidacoes(); 
		$this->_ModelLiquidacoesItensSeguradosCoberturas = new Sinistro_Model_LiquidacoesItensSeguradosCoberturas();
		$this->_ModelLiquidacoesItensSeguradosCoberturasLf = new Sinistro_Model_LiquidacoesItensSeguradosCoberturasLF();
		
		$this->_ModelPropostaCoberturas = new Seguro_Model_PropostasCoberturas();
		$this->_ModelItemSegurado = new Seguro_Model_ItensSegurados();

		$this->_ModelLfIS = new Sinistro_Model_LaudosFinaisItensSegurados();
	}
	
	public function liquidar($dados){

		$result = array("status"=>true, "message"=>"", "execute"=>"");
		
		$ModelLiquidacoes = new Sinistro_Model_Liquidacoes();
		$ModelLiquidacoesItensSegurados = new Sinistro_Model_LiquidacoesLaudosFinaisItensSegurados();
		
		$ModelItemSegurado = new Seguro_Model_ItensSegurados();
		
		$ItemSegurado = $ModelItemSegurado->find($dados['id_item_segurado'])->current();
		
		$this->getAdapter()->beginTransaction();
		
		try {
			$id_liquidacao = $ModelLiquidacoes->save(array("id_processo"=>$dados['id_processo'], "tp_liquidacao"=>"P"));
			
			$danosAnteriores = array();	
			$somatorio = 0;
			
			foreach($dados['laudos'] as $laudo){
				$parcial = 0;
				
				$parcial = ( 1 - ( $laudo['vl_percent_colhido'] / 100 ) );
				
				foreach($danosAnteriores as $dano){
					$parcial = $parcial * ( 1 - ( $dano / 100 ) );
				}
				
				$danosAnteriores[] = $laudo['percentual_dano'];
				
				$parcial = ($parcial * ( $laudo['percentual_dano'] / 100 ));
				
				$somatorio += round(( $parcial * 100), 2);

				$params = array();
				$params['id_liquidacao'] = $id_liquidacao;
				$params['id_laudo_final_item_segurado'] = $laudo['id_laudo_final_item_segurado'];
				$params['vl_prejuizo'] = round( ( ( $ItemSegurado->vl_lmga * $parcial) ), 2 );
			
				$ModelLiquidacoesItensSegurados->save($params);
			}
		
			$result['message'] = "Liquidação realizada com sucesso";
			
			$this->getAdapter()->commit();
			
		} catch (Exception $e) {
			$this->getAdapter()->rollBack();
			$result['status'] = false;
			$result['message'] = "Não foi possível realizar a liquidação. \n {$e->getMessage()}";
			
		}
		
		return $result; 
	
	}	
}

