<?
/**
 * @name Regulacao_Model_LIQ17
 * @author Tonismar R Bernardo
 * @since 23/01/2018
 */
class Regulacao_Model_LIQ18 extends Agro_Db_Table_Abstract {
	protected $_schema = 'sinistro';
	protected $_name = 'tipo_liquidacao';
	protected $_primary = 'id';
	public $_order = 'ds_nome_tipo_liquidacao';
	
	private $_ModelLiquidacoes;
	private $_ModelLiquidacoesItensSeguradosCoberturas;
	private $_ModelLiquidacoesItensSeguradosCoberturasLf;
	private $_ModelPropostaCoberturas;
	private $_ModelItemSegurado;
	private $_ModelLfIS;
	
	public function init(){
		parent::init();
        
        $this->_ModelLiquidacoes = new Sinistro2_Model_Liquidacoes();
        $this->_ModelLiquidacoesItensSeguradosCoberturas = new Sinistro2_Model_LiquidacoesItensSeguradosCoberturas();
		$this->_ModelLiquidacoesItensSeguradosCoberturasLf = new Sinistro2_Model_LiquidacoesItensSeguradosCoberturasLF();
		$this->_ModelPropostaCoberturas = new Seguro_Model_PropostasCoberturas();
		$this->_ModelItemSegurado = new Seguro_Model_ItensSegurados();
		$this->_ModelLfIS = new Sinistro2_Model_LaudosFinaisItensSegurados();
    }
    
    public function liquidar($dados) {
		$result = array("status"=>true, "message"=>"", "execute"=>"");
        $Liq = $this->_ModelLiquidacoes->find($dados["id_liquidacao"])->current();

		try {
            $ItemSegurado = $this->_ModelItemSegurado->find($dados['id_item_segurado'])->current();
            
            $itemLaudoFinal = $dados['laudos'][0];
            $LFIS = $this->_ModelLfIS->getByID($itemLaudoFinal['id_laudo_final_item_segurado']);

            $vl_percent_franquia = $this->_ModelPropostaCoberturas->getFranquiaByPropostaCobertura($dados['id_proposta'], $dados['id_cobertura']);

            $vl_franquia = round($ItemSegurado->vl_lmga * ($vl_percent_franquia / 100), 2);
            // LMGA * 20% * %AR
            
            $vl_indenizacao = ($ItemSegurado->vl_lmga * 0.2) * round(($LFIS->vl_ha_area_replantada / $ItemSegurado->vl_area), 4);

            $LiqCob = $this->_ModelLiquidacoesItensSeguradosCoberturas->save(
                array(
                    "id_liquidacao" 		=> $dados["id_liquidacao"],
                    "id_item_segurado" 		=> $dados["id_item_segurado"],
                    "id_cobertura" 			=> $dados['id_cobertura'],
                    "vl_percent_franquia" 	=> $vl_percent_franquia,
                    "vl_franquia" 			=> $vl_franquia,
                    "vl_indenizacao" 		=> $vl_indenizacao,
                    "vl_prejuizo_total" 	=> $vl_indenizacao
                )
            ); 

            $this->_ModelLiquidacoesItensSeguradosCoberturasLf->save(
                array(
                    'id_usuario_criacao'                        => $Liq->id_usuario_criacao,
                    'id_liquidacoes_itens_segurados_coberturas' => $LiqCob->id,
                    'id_laudo_final_item_segurado'              => $itemLaudoFinal['id_laudo_final_item_segurado'],
                    'vl_prejuizo'                               => $vl_indenizacao
                )
            );


            $result['message'] = 'Liquidação realizada com sucesso.';
        } catch (Exception $e) {
            $result['status'] = false;
            $result['message'] = "Não foi possível realizar a liquidação. \n {$e->getMessage()}";
        }
        return $result;
    }
}
