<?
/**
 * Controller
 * 
 * Laudo final Tipo LF006 / Safra16 - Item Segurado
 * 
 * @author Fernando Nunes
 * @date 16/02/2011
 *
 */
class Safra16_Lf006itemseguradoController extends Agro_Controller_Action{

	public function init() {
		$this->view->title = 'Sinistro » Processos » Laudo Final » Totalização de Perdas';
	}
	
    public function getModel() {
        return new Safra16_Model_Lf006ItensSegurados();
    }   
    
	public function getForm($dados = array()) {
		
	    return new Safra16_Form_Lf006ItemSegurado(array('dados'=>$dados));
	}	
    
    public function formAction() {
        $params = $this->getRequest()->getParams();		
		
        $dadosForm = array();
		$dadosForm['id_laudo_final'] = $params['id_laudo_final'];
		$dadosForm['id_item_segurado'] = $params['id_item_segurado'];
		
		$ModelLaudosFinais = new Sinistro_Model_LaudosFinais();
		$this->view->data['fl_readonly'] = $ModelLaudosFinais->isReadonly($params['id_laudo_final']);		
		$this->view->data['id_laudo_final'] = $params['id_laudo_final'];
		
        $ProcessosEmpresas = new Sinistro_Model_ProcessosEmpresas();
        $dadosForm['id_empresa_vistoriadora'] = $ProcessosEmpresas->getEmpresaByProcesso($params['id_processo']);
        
		$this->view->jQuery()->addJavascriptFile('/resources/javascript/sinistro/laudofinalitemsegurado.js');
        $this->view->jQuery()->addStylesheet('/resources/css/sinistro/laudo.css');
		
        $this->view->back = '/'.$this->_request->module.'/lf006/form/id_laudo_final/'.$params['id_laudo_final']."/id_processo/".$params['id_processo'];
        
        $Model = $this->getModel();
        $Form = $this->getForm($dadosForm);        
        
        if($this->getRequest()->isPost()) {

            $Form->populate($params);

			$dano = $this->calculaDano($params);

            if($Form->isValid($Form->getValues())) {
                
                Agro_Db_Table_Abstract::getDefaultAdapter()->beginTransaction();
                
                $dados = $Form->getValues();

                $dados['dt_vistoria'] = Agro_Util::formatDate($dados['dt_vistoria_data'].' '.$dados['dt_vistoria_hora'].' '.$dados['dt_vistoria_minutos'], 'yyyy-MM-dd HH:mm:ss');
                $dados['vl_percent_perdas'] = $dano;
				
				$dados['vl_percent_brotos_s_cacho'] = (($params['nr_total_brotos_c_cacho'] + $params['nr_total_brotos_s_cacho']) / 4);

                $params['id_laudo_final_item_segurado'] = $Model->save($dados);
    
				if($params['id_laudo_final_item_segurado']) {

                    Zend_Db_Table::getDefaultAdapter()->commit();
                    $this->view->showMessage(MSG_SUCCESS,'success');
                    
                } else {
                    Zend_Db_Table::getDefaultAdapter()->rollback();
                    $this->view->showMessage($Model->getMessages(), 'error');
                }

            } else {
                $this->view->showMessage($this->getAllFormErros(array($Form),$_POST), 'error');
            }
        
        }

        if($params['id_laudo_final_item_segurado']) {
            $dataLf006ItensSegurados = $Model->getDataLaudoFinalItemSegurado($params['id_laudo_final_item_segurado']);
            
            if ($dataLf006ItensSegurados) {
                $params = array_merge($dataLf006ItensSegurados, $params);
            }
        } else {
        	$Form->setReadOnly(true);
		}
		
		//gambi para mostrar o valor na tela após o save
		$params['vl_percent_perdas'] = $params['vl_percent_dano'];
		$this->view->vl_percent_perdas = $params['vl_percent_perdas']; 
		
        $Form->populate($params);
		
		$this->view->form = $Form;

    }
        

    public function calculaDano($data){
    	$nr_brotos = $data['nr_total_brotos_s_cacho'] + $data['nr_total_brotos_c_cacho'];
		$dano = 0;
		
    	if($nr_brotos > 0){
	    	//% Dano = 100% - B/ (A x (100% - C)
			$dano = (1 - $data['nr_total_brotos_c_cacho'] /($nr_brotos * (1 - 0.25)));  		
			$dano = ($dano * 100);
		}

		if($dano < 0){
			$dano = 0;
		}		

    	return $dano;
    }    
    

}
