<?

class Safra13_Lffrutas1granizoController extends Agro_Controller_Action{
	private $_ModelSafras;
	
	public function init() {
 		$this->session = new Zend_Session_Namespace('laudo_final');
		$this->session->idVistoria = $this->session->idRevistoria ? $this->session->idRevistoria : $this->session->idVistoria;
		
		$this->_ModelSafras = new Produto_Model_Safras();
	}
	
	public function formAction() {
		$params = $this->getRequest()->getParams();
		
		$this->view->back = "/sinistro/processo/view/id/{$params['id_processo']}";
		$this->view->title = 'Sinistro » Laudo Final » Frutas » Granizo » Formulário';
		
		$this->session->idVistoria   = $params['id_vistoria'];
		$this->session->idCobertura  = $params['id_cobertura'];
		$this->session->idProposta 	 = $params['id_proposta'];
		$this->session->idProcesso 	 = $params['id_processo'];
		
 		$this->view->idVistoria   = $this->session->idVistoria;
 		$this->view->idRevistoria = $this->session->idRevistoria;
		$this->view->idCobertura  = $this->session->idCobertura;
		$this->view->idProposta   = $this->session->idProposta;
		$this->view->idProcesso   = $this->session->idProcesso;

		if (!$params['id_laudo_final']){
			$this->saveLaudoFinal($params);
			
			$this->_redirect($this->getRequest()->getRequestUri()."/id_laudo_final/".$this->session->idLaudoFinal);
			
		} else {
			$this->session->idLaudoFinal = $params['id_laudo_final'];
			
		}
		
		$this->view->jQuery()->addJavascriptFile('/resources/javascript/sinistro/sinistro_laudo_final.js');
		
		$this->view->idLaudoFinal = $this->session->idLaudoFinal;
		
		$this->view->listDadosItens = array();
		
		$User = Zend_Auth::getInstance()->getIdentity();

		$this->session->userVistoriaMesmaEmpresa = true;
		if ($User->tp_usuario != 'F') {
			$Funcionario = new Sistema_Model_Funcionarios();
			$f = $Funcionario->fetchRow('id_usuario = '.$User->id);
			$idEmpresaUserLogado = $f['id_empresa'];
	
			$VistoriaEmpresa = new Sistema_Model_VistoriasEmpresas();
			$idEmpresaVistoria = $VistoriaEmpresa->getEmpresaByVistoria($this->session->idVistoria);
			
			$this->session->userVistoriaMesmaEmpresa = $idEmpresaUserLogado == $idEmpresaVistoria ? true : false;
		}
		$this->view->userVistoriaMesmaEmpresa = $this->session->userVistoriaMesmaEmpresa;

		$RevistoriaVistoria = new Sistema_Model_RevistoriasVistorias();
		$this->session->hasRevistoria = $RevistoriaVistoria->hasRevistoria($this->session->idVistoria);
		$this->view->hasRevistoria = $this->session->hasRevistoria;
		
		if ($this->getRequest()->isPost()) {
			$this->save($this->getRequest()->getParams());
			
		} else if ($this->session->idLaudoFinal) {
			$this->populaDadosTela();
			
		}

		if ($this->session->idRevistoria) {
			$Revistoria = new Sistema_Model_Revistorias();
			$rs = $Revistoria->find($this->session->idRevistoria)->current();

			$this->view->ds_motivo = $rs['ds_motivo'];
			$this->view->fl_realizada = $rs['fl_realizada'] ? 'S' : 'N';
			$this->view->ds_motivo_nao_realizada = $rs['ds_motivo_nao_realizada'];
		}
	} 

	public function populaDadosTela() {
		$ModelLaudoFinal = new Sinistro_Model_LaudosFinais();
		
		
		$row = $ModelLaudoFinal->find($this->session->idLaudoFinal)->current()->toArray();
		
		
		$this->view->ds_observacao = $row['ds_observacao'];
	}
	
	public function getRow() {
		if ($this->session->idLaudoFinal) {
		    $Safra = new Produto_Model_Safras();
			$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisFrutas1Granizo');
			$Safra = new $nomeModel;
			
			$row = $Safra->getDataLaudoFinal($this->session->idLaudoFinal);

			return $row;
		}
	}

	public function formdadosquadraAction() {
		$this->getHelper('layout')->disableLayout();
		
		$idItem = $this->getRequest()->getParam('idItem');
		$this->view->idItem = $idItem;
		$this->view->idRevistoria = $this->session->idRevistoria;
		$this->view->idProposta = $this->getRequest()->getParam('idProposta');
		$this->view->idLaudoFinal = $this->session->idLaudoFinal;
		$this->view->hasRevistoria = $this->session->hasRevistoria;
		$this->view->idProcesso  = $this->session->idProcesso;
		$this->view->userVistoriaMesmaEmpresa = $this->session->userVistoriaMesmaEmpresa;

		$this->view->formDadosVistoriaLF = new Sistema_Form_DadosVistoriaLaudoFinal;
		$this->view->formAssinatura = new Sinistro_Form_AssinaturaLaudoPreliminar;
		
		$ItemSegurado = new Seguro_Model_ItensSegurados();
		$this->view->item = $ItemSegurado->getItemSeguradoById($idItem);

		$this->view->vistoriadores = array();

		$this->view->amostraSemDanos = array();
		$this->view->amostraComDanos = array();
    	if ($this->session->idLaudoFinal) {
    		
	    	$Safra = new Produto_Model_Safras();
			$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisFrutas1GranizoItensSegurados');
			$LaudoFinalItemSegurado = new $nomeModel;
			
			$rs = $LaudoFinalItemSegurado->find($this->session->idLaudoFinal, $idItem);
			$timestampVistoria = $rs['dt_vistoria'];

			$this->view->item['vl_area_sinistrada'] = $rs['vl_area_sinistrada'];
			$this->view->item['ds_coordenadas_geograficas'] = $rs['ds_coordenadas_geograficas'];
			$this->view->item['vl_percent_perdas'] = number_format($rs['vl_percent_perdas'], 2, '.', '');
			$this->view->item['vl_percent_colhido'] = $rs['vl_percent_colhido'];
			$this->view->item['ds_observacao'] = $rs['ds_observacao'];

			$arrayVistoria = array();
			$dtVistoria = explode(' ', $timestampVistoria);

			$arrayVistoria['dt_vistoria']  = Agro_Util::formatDate($dtVistoria[0], 'dd/MM/yyyy'); 
			$this->session->dtVistoria = $arrayVistoria['dt_vistoria'];
			$arrayVistoria['hr_vistoria']  = substr($dtVistoria[1], 0, 2);
			$arrayVistoria['min_vistoria'] = substr($dtVistoria[1], 3, 2);
			$this->view->formDadosVistoriaLF->populate($arrayVistoria);
			
			$arrayAssintura = array();
			$arrayAssintura['fl_assinatura_regulador'] = $rs['fl_assinatura_regulador'];
			$arrayAssintura['fl_assinatura_segurado']  = $rs['fl_assinatura_segurado'];
			$this->view->formAssinatura->populate($arrayAssintura);
			
			$this->session->idLaudoFinalItemSegurado = $rs['id_laudo_final_item_segurado'];
			$this->view->idLaudoFinalItemSegurado = $this->session->idLaudoFinalItemSegurado;
			
			if ($this->session->idLaudoFinalItemSegurado) {
				$ItemSeguradoFuncionario = new Sinistro_Model_LaudosFinaisItensSeguradosFuncionarios();
				$this->view->vistoriadores = $ItemSeguradoFuncionario->getVistoriadoresByItemSegurado($this->session->idLaudoFinalItemSegurado);

				if ($this->session->idRevistoria) {
					$ItemRevistoria = new Sinistro_Model_LaudosFinaisItensSeguradosRevistoria();
					$rs = $ItemRevistoria->find($this->session->idLaudoFinalItemSegurado);
					
					$this->view->fl_substitui_laudo_anterior = $rs['fl_substitui_laudo_anterior'] ? 'S' : 'N';
				}
			}

			$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisFrutas1GranizoItensSeguradosAmostras');
			$LaudoFinalItemSeguradoAmostras = new $nomeModel;
			$rs = $LaudoFinalItemSeguradoAmostras->getAmostrasByItem($this->session->idLaudoFinal, $idItem);
	
			if (count($rs) > 0) {
				$aux = array();
				$aux2 = array();
				foreach ($rs as $it) {
					
					$aux[$it['nr_amostra']]['cat1']    = $it['nr_categoria_sem_dano_1'];
					$aux[$it['nr_amostra']]['cat2']    = $it['nr_categoria_sem_dano_2'];
					$aux[$it['nr_amostra']]['cat_des'] = $it['nr_categoria_sem_dano_descarte'];
					
					$aux[$it['nr_amostra']]['total'] = $it['nr_categoria_sem_dano_1'] + 
													   $it['nr_categoria_sem_dano_2'] +
										               $it['nr_categoria_sem_dano_descarte'];
		
					$aux['total_cat1']     += $it['nr_categoria_sem_dano_1']; 
					$aux['total_cat2']     += $it['nr_categoria_sem_dano_2'];
					$aux['total_cat_des'] += $it['nr_categoria_sem_dano_descarte']; 
		
					$aux['total'] += $aux[$it['nr_amostra']]['total'];			
	
					/******************************************************/
						
					$aux2[$it['nr_amostra']]['cat1_1']   = $it['nr_depreciacao_1_1'] ? $it['nr_depreciacao_1_1'] : '';
					$aux2[$it['nr_amostra']]['cat1_2']   = $it['nr_depreciacao_1_2'] ? $it['nr_depreciacao_1_2'] : '';
					$aux2[$it['nr_amostra']]['cat1_des'] = $it['nr_depreciacao_1_descarte'] ? $it['nr_depreciacao_1_descarte'] : '';
					
					$aux2[$it['nr_amostra']]['cat2_2']   = $it['nr_depreciacao_2_2'] ? $it['nr_depreciacao_2_2'] : '';
					$aux2[$it['nr_amostra']]['cat2_des'] = $it['nr_depreciacao_2_descarte'] ? $it['nr_depreciacao_2_descarte'] : '';
					
					$aux2[$it['nr_amostra']]['cat_des']  = $it['nr_depreciacao_descarte_descarte'] ? $it['nr_depreciacao_descarte_descarte'] : '';
	
					$aux2[$it['nr_amostra']]['total'] = $it['nr_depreciacao_1_1'] + 
													    $it['nr_depreciacao_1_2'] +
													    $it['nr_depreciacao_1_descarte'] +
													    $it['nr_depreciacao_2_2'] +
													    $it['nr_depreciacao_2_descarte'] +
													    $it['nr_depreciacao_descarte_descarte'];
		
	
					$aux2['soma_cat1_1']   += $it['nr_depreciacao_1_1'];
					$aux2['soma_cat1_2']   += $it['nr_depreciacao_1_2'];
					$aux2['soma_cat1_des'] += $it['nr_depreciacao_1_descarte'];
					$aux2['soma_cat2_2']   += $it['nr_depreciacao_2_2'];
					$aux2['soma_cat2_des'] += $it['nr_depreciacao_2_descarte'];
					$aux2['soma_cat_des']  += $it['nr_depreciacao_descarte_descarte'];
	
		
					$aux2['total'] += $aux2[$it['nr_amostra']]['total'];			
				}
				$aux2['media_cat1_1']   = $aux2['soma_cat1_1'] * 0;
				$aux2['media_cat1_2']   = $aux2['soma_cat1_2'] * 50;  
				$aux2['media_cat1_des'] = $aux2['soma_cat1_des'] * 100;
				$aux2['media_cat2_2']   = $aux2['soma_cat2_2'] * 0;
				$aux2['media_cat2_des'] = $aux2['soma_cat2_des'] * 50;
				$aux2['media_cat_des']  = $aux2['soma_cat_des'] * 0;
				
				$aux2['total_media'] = $aux2['media_cat1_1'] +
									   $aux2['media_cat1_2'] +  
									   $aux2['media_cat1_des'] +
									   $aux2['media_cat2_2'] +
									   $aux2['media_cat2_des'] +
									   $aux2['media_cat_des'];
				
				$this->view->amostraSemDanos = $aux;
				$this->view->amostraComDanos = $aux2;
			}
    	}
  	}

	public function formquadrasnaosalvasAction() {
		$this->getHelper('layout')->disableLayout();
		
		$idItem = $this->getRequest()->getParam('idItem');
		
    	$Safra = new Produto_Model_Safras();
		$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisFrutas1GranizoItensSegurados');
		$ItensFrutas1Granizo = new $nomeModel;
		
		if ($this->session->idRevistoria) {
			$this->view->itensSegurados = $ItensFrutas1Granizo->getItensRevistoriadosNaoSalvos($this->session->idProposta, $idItem, $this->session->idRevistoria);
		} else {
			$this->view->itensSegurados = $ItensFrutas1Granizo->getItensNaoSalvos($this->session->idProposta, $idItem, $this->session->idVistoria);
		}
	}

	public function calculapercentuaisAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		
		$result = array("status"=>true, "message"=>"Operação realizada com sucesso");
		
		try {
			$data = array();
			$amostras = array();
			$percentuais = array();
			
			$params = $this->getRequest()->getParams();
			
			$NomeModel = $this->_ModelSafras->getSafraModel($this->session->idProposta,'LaudosFinaisFrutas1GranizoItensSegurados');
			$ItemSeguradoEspecializacao = new $NomeModel;
			
			
			$data['total_cat1'] = 0;		 	
				$data['total_cat2'] = 0;		 	
				$data['total_cat3'] = 0;		 	
				$data['total_cat_des'] = 0;		 	
		
				for ($i = 1; $i < 12; $i++) {
				 	
				 	$val_cat1_1 = $this->getRequest()->getParam('cat1_1-' . $i) ? $this->getRequest()->getParam('cat1_1-' . $i) : 0;
				 	$val_cat1_2 = $this->getRequest()->getParam('cat1_2-' . $i) ? $this->getRequest()->getParam('cat1_2-' . $i) : 0;
				 	$val_cat1_des = $this->getRequest()->getParam('cat1_des-' . $i) ? $this->getRequest()->getParam('cat1_des-' . $i) : 0;
		
				 	$val_cat2_2 = $this->getRequest()->getParam('cat2_2-' . $i) ? $this->getRequest()->getParam('cat2_2-' . $i) : 0;
				 	$val_cat2_des = $this->getRequest()->getParam('cat2_des-' . $i) ? $this->getRequest()->getParam('cat2_des-' . $i) : 0;
		
				 	$val_cat_des = $this->getRequest()->getParam('cat_des-' . $i) ? $this->getRequest()->getParam('cat_des-' . $i) : 0;
		
					//=================================================================/
				
					$amostras[$i]['nr_amostra'] = $i;
					
				 	$data['cat1'][$i] = $val_cat1_1 +  
				 						$val_cat1_2 + 
				 						$val_cat1_des;
					$data['total_cat1'] += $data['cat1'][$i];	
		
					$amostras[$i]['cat1_1'] = $val_cat1_1;	 	
					$amostras[$i]['cat1_2'] = $val_cat1_2;	 	
					$amostras[$i]['cat1_des'] = $val_cat1_des;	 	
					$amostras[$i]['total_cat1'] = $data['cat1'][$i];	 	
					//===================================================================/
		
				 	$data['cat2'][$i] = $val_cat2_2 + 
				 						$val_cat2_des;
					$data['total_cat2'] += $data['cat2'][$i];		 	
		
					$amostras[$i]['cat2_2'] = $val_cat2_2;	 	
					$amostras[$i]['cat2_des'] = $val_cat2_des;	 	
					$amostras[$i]['total_cat2'] = $data['cat2'][$i];	 	
					//====================================================================/
		
				 	$data['cat_des'][$i] = $val_cat_des;
					$data['total_cat_des'] += $data['cat_des'][$i];	
		
					$amostras[$i]['cat_des'] = $val_cat_des;	 	
					$amostras[$i]['total_cat_des'] = $data['cat_des'][$i];	 	
					//====================================================================/
					
					$data['tot_amostra'][$i] = $val_cat1_1 +  
						 					   $val_cat1_2 + 
						 					   $val_cat1_des +
						 					   $val_cat2_2 + 
						 					   $val_cat2_des +
						 					   $val_cat_des;
					
					$data['total_amostra_categoria'] += $data['tot_amostra'][$i];
					$data['totais'] += $data['tot_amostra'][$i];
					
					$data['soma_cat1_1']   += $val_cat1_1;
					$data['soma_cat1_2']   += $val_cat1_2;  
					$data['soma_cat1_des'] += $val_cat1_des;
					$data['soma_cat2_2']   += $val_cat2_2;
					$data['soma_cat2_des'] += $val_cat2_des;
					$data['soma_cat_des']  += $val_cat_des;
				}
		
				$data['media_cat1_1']   = $data['soma_cat1_1'] * 0;
				$data['media_cat1_2']   = $data['soma_cat1_2'] * 50;  
				$data['media_cat1_des'] = $data['soma_cat1_des'] * 100;
				$data['media_cat2_2']   = $data['soma_cat2_2'] * 0;
				$data['media_cat2_des'] = $data['soma_cat2_des'] * 50;
				$data['media_cat_des']  = $data['soma_cat_des'] * 0;
				
				$data['total_media'] = $data['media_cat1_1'] +
									   $data['media_cat1_2'] +  
									   $data['media_cat1_des'] +
									   $data['media_cat2_2'] +
									   $data['media_cat2_des'] +
							   		   $data['media_cat_des'];
		
				$vlDano = ($data['total_media'] / $data['totais']);
				$data['totalDano'] = number_format(Agro_Util::round($vlDano, 2), 2, '.', '') . '%';
				$percentuais['totalDano'] = number_format(Agro_Util::round($vlDano, 2), 2, '.', '');

				try {
					$ret = $this->saveItensSegurados($this->getRequest()->getParams(), $amostras, $percentuais);	
				} catch (Exception $e) {
					die($e);
				}
				
				
				if (is_array($ret)) {
					$data['arrayIdsItens'] = $ret;
			
				} else {
					$result["status"] = false;
					$result["message"] = "Desculpe-nos. Não foi possível realizar a operação.\n\nErro: $ret";
					
				}

				$result['data'] = $data;
				
		
		} catch (Exception $e) {
			$result["status"] = false;
			$result["message"] = "Desculpe-nos. Não foi possível realizar a operação.\n\nErro: {$e->getMessage()}";
			
		}
		
		$this->getResponse()->setBody(Zend_Json::encode($result));				
	}
	
public function saveItensSegurados(array $post, array $amostras, array $percentuais) {
	
		try {
			$Db = Agro_Db_Table_Abstract::getDefaultAdapter();
			$Db->beginTransaction();

			$idLaudo = $this->session->idLaudoFinal; 
			$arrayIdsItens = array();
			$cont = 1;
			
			
			foreach ($post as $key => $value) {
				
				if ((strpos($key, 'item-') > -1) || ($key == 'idItem')) {

					$idItem = $value;

					///======================================================/
					// Tabela sistema.vistorias_itens_segurados
					///=======================================================/
					//$VistoriaItensSegurados = new Sistema_Model_VistoriasItensSegurados();
					//$VistoriaItensSegurados->delete($this->session->idVistoria, $idItem);
					
					$itens = array();
					$itens['id_vistoria']      = $this->session->idVistoria;
					$itens['id_item_segurado'] = $idItem;
					
					//$VistoriaItensSegurados->save($itens);
					
					//=============================================================/
					// Tabela safra13.laudos_finais_frutas1_granizo_itens_segurados
					//=============================================================/
					
	
					//=============================================================/
					// Tabela safra13.laudos_finais_frutas1_granizo_itens_segurados
					//=============================================================/
					$nomeModel = $this->_ModelSafras->getSafraModel($this->session->idProposta,'LaudosFinaisFrutas1GranizoItensSegurados');
					$Safra13ItensSegurados = new $nomeModel;

					$SinistroItensSegurados = new Sinistro_Model_LaudosFinaisItensSegurados();
					if ($key != 'idItem') {
					   	$rs = $SinistroItensSegurados->find($this->session->idLaudoFinal, $idItem);
					   	if ($rs['fl_nao_vistoriada']) {
						   	$SinistroItensSegurados->delete($this->session->idLaudoFinal, $idItem);
					   	} else {
							$rs = $Safra13ItensSegurados->find($this->session->idLaudoFinal, $idItem);
							if ($rs['id_laudo_final_item_segurado']) {
								$SinistroItensSegurados->deleteItem($rs['id_laudo_final_item_segurado']);
							}
					   	}
					}		
							   	
					$itens = array();
					$itens['id_laudo_final']    = $idLaudo;
					$itens['id_item_segurado']  = $idItem;
					$itens['dt_vistoria']       = Agro_Util::formatDate($this->session->dtVistoria, Zend_Date::W3C);  
					$itens['vl_percent_perdas'] = $percentuais['totalDano'];
					$itens['vl_percent_colhido'] =  $post['vl_percent_colhido'];
					$itens['fl_nao_vistoriada'] = 0;
  					$itens['id_motivo_quadra_nao_vistoriada'] = null;
					$itens['ds_observacao']           = $post['ds_observacao_item'];
					$itens['fl_assinatura_regulador'] = $post['fl_assinatura_regulador'];
					$itens['fl_assinatura_segurado']  = $post['fl_assinatura_segurado'];
  					
					if ($key != 'idItem') {
					   	$idLaudoFinalItemSegurado = $SinistroItensSegurados->insert($itens);
						$arrayIdsItens[$cont]['itemSecundario']['idItemSegurado'] = $idItem;
						$cont++;
					} else {
					   	$idLaudoFinalItemSegurado = $this->session->idLaudoFinalItemSegurado; 
						$SinistroItensSegurados->update($itens, 'id = ' . $this->session->idLaudoFinalItemSegurado);
						$arrayIdsItens[0]['itemPrincipal']['idItemSegurado'] = $idItem;
					}
					//===============================================================/
					// Tabela safra13.laudos_finais_frutas1_granizo_itens_segurados
					//===============================================================/

					$itens = array();
					$itens['id_laudo_final_item_segurado'] = $idLaudoFinalItemSegurado; 
					$itens['vl_area_sinistrada'] = $post['vl_area_sinistrada'] ? $post['vl_area_sinistrada'] : 0;
					$itens['ds_coordenadas_geograficas'] =  $post['ds_coordenadas_geograficas-' . $idItem];
					

					if ($key != 'idItem') {
					   	$Safra13ItensSegurados->insert($itens);
					} else {
					   	$Safra13ItensSegurados->update($itens, 'id_laudo_final_item_segurado = ' . $this->session->idLaudoFinalItemSegurado);
					}

					if ($this->session->idRevistoria) {
						//============================================================/
						// Tabela sinistro.laudos_finais_itens_segurados_revistoria
						//=============================================================/
				    	$ItemRevistoria = new Sinistro_Model_LaudosFinaisItensSeguradosRevistoria();
						
						$itens = array();
						$itens['id_laudo_final_item_segurado'] = $idLaudoFinalItemSegurado; 
						$itens['fl_substitui_laudo_anterior']  = $post['fl_substitui_laudo_anterior'] == 'S' ? 1 : 0;
						if ($key != 'idItem') {
						   	$ItemRevistoria->insert($itens);
						} else {
						   	$ItemRevistoria->update($itens, 'id_laudo_final_item_segurado = ' . $this->session->idLaudoFinalItemSegurado);
						}
					}

					//=========================================================================/
					// Tabela safra13.laudos_finais_frutas1_granizo_itens_segurados_amostras
					//=========================================================================/
			    	$Safra = new Produto_Model_Safras();
					$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisFrutas1GranizoItensSeguradosAmostras');
					$Safra13ItensSeguradosAmostras = new $nomeModel;
					$Safra13ItensSeguradosAmostras->delete($idLaudoFinalItemSegurado);

					foreach ($amostras as $it) {
						
						$itens = array();
						$itens['id_laudo_final_item_segurado']     = $idLaudoFinalItemSegurado;
						$itens['nr_amostra']                       = $it['nr_amostra'];
						$itens['nr_categoria_sem_dano_1']          = $it['total_cat1'];
						$itens['nr_categoria_sem_dano_2']          = $it['total_cat2'];
						$itens['nr_categoria_sem_dano_descarte']   = $it['total_cat_des'];
						$itens['nr_depreciacao_1_1']               = $it['cat1_1'];
						$itens['nr_depreciacao_1_2']               = $it['cat1_2'];
						$itens['nr_depreciacao_1_descarte']        = $it['cat1_des'];
						$itens['nr_depreciacao_2_2']               = $it['cat2_2'];
						$itens['nr_depreciacao_2_descarte']        = $it['cat2_des'];
						$itens['nr_depreciacao_descarte_descarte'] = $it['cat_des'];
						
						$Safra13ItensSeguradosAmostras->insert($itens);
					}					

					if ($key != 'idItem') {
						//====================================================================/
						// Tabela sinistro.laudos_finais_itens_segurados_funcionarios
						//======================================================================/
						$ItensSeguradosFuncionario = new Sinistro_Model_LaudosFinaisItensSeguradosFuncionarios();
						$ItensSeguradosFuncionario->delete($idLaudoFinalItemSegurado);
						
						foreach ($this->session->listFuncionarios as $idFunc) {
							$func = array();
							$func['id_laudo_final_item_segurado'] = $idLaudoFinalItemSegurado;
							$func['id_funcionario']  = $idFunc;
							
						   	$ItensSeguradosFuncionario->insert($func);
						}
					}
					
				}
				
				
			}			
			$Db->commit();

			return $arrayIdsItens;
			
		} catch (Exception $e) {
			$Db->rollBack();
			die($e->getMessage());
		}
	
		
	}
	
	public function saveLaudoFinal(array $post) {
		
		try {
			$Db = Agro_Db_Table_Abstract::getDefaultAdapter();
			$Db->beginTransaction();

			/****************************************************/
			// Tabela sinistro.laudos_finais
			/***************************************************/
			$LaudosFinais = new Sinistro_Model_LaudosFinais();
			$LaudoFinal = $LaudosFinais->createRow();
			
			$LaudoFinal->id_processo = $this->session->idProcesso;
			$LaudoFinal->id_cobertura = $this->session->idCobertura;
  			$LaudoFinal->fl_evento_nao_constatado = 0;
  			$LaudoFinal->ds_observacao = $post['ds_observacao'];
			$LaudoFinal->save();
				
			/****************************************************/
			// Tabela sistema.vistorias_laudos_finais
			/***************************************************/
			$VistoriasLaudosFinais = new Sistema_Model_VistoriasLaudosFinais();
			$Row = $VistoriasLaudosFinais->createRow();
			$Row->id_vistoria = $this->session->idVistoria;
			$Row->id_laudo_final = $LaudoFinal->id;
			$Row->save();

			/****************************************************/
			// Tabela safra13.laudos_finais_frutas1_granizo
			/***************************************************/
	    	$Safra = new Produto_Model_Safras();
			$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisFrutas1Granizo');
			$LaudoFrutas1Granizo = new $nomeModel;

			$Row = $LaudoFrutas1Granizo->createRow();
			$Row->id_laudo_final = $LaudoFinal->id;
			$Row->save();

			if ($this->session->idRevistoria) {
				$Revistoria = new Sistema_Model_Revistorias();			
				$data = array();
				$data['fl_realizada']  = 1; 
			   	$Revistoria->update($data, 'id_vistoria = ' . $this->session->idRevistoria);
			}
			
			$Db->commit();
			
			$this->session->idLaudoFinal = $LaudoFinal->id;
		} catch (Exception $e) {
			$Db->rollBack();
			echo $e->getMessage();
		}
	}

	
	
	public function save(array $post) {
		
		try {
			$Db = Agro_Db_Table_Abstract::getDefaultAdapter();
			$Db->beginTransaction();

			/****************************************************/
			// Tabela sistema.revistorias
			/***************************************************/
			if ($this->session->idRevistoria) {
				$Revistoria = new Sistema_Model_Revistorias();			
				$data = array();
				if ($post['fl_realizada'] == 'S') {
					$data['fl_realizada']  = 1; 
					$data['ds_motivo_nao_realizada'] = '';
				} else {
					$data['fl_realizada']  = 0;
					$data['ds_motivo_nao_realizada'] = $post['ds_motivo_nao_realizada'];
				}
			   	$Revistoria->update($data, 'id_vistoria = ' . $this->session->idRevistoria);
			}

			/****************************************************/
			// Tabela sinistro.laudos_finais
			/***************************************************/
			$LaudosFinais = new Sinistro_Model_LaudosFinais();

			$laudo = array();
			$laudo['id_processo']              = $this->session->idProcesso;
			$laudo['id_cobertura']             = $this->session->idCobertura;
  			$laudo['fl_evento_nao_constatado'] = 0;
			if ($post['fl_realizada'] == 'N') {
	  			$laudo['ds_observacao'] = '';
			} else {
	  		$laudo['ds_observacao'] = $post['ds_observacao'];
			}
  			
  			$idLaudoFinal = null;
			if ($this->session->idLaudoFinal) {
				$LaudosFinais->update($laudo, 'id = ' . $this->session->idLaudoFinal);
				$idLaudoFinal = $this->session->idLaudoFinal;
			} else {
				$idLaudoFinal = $LaudosFinais->insert($laudo); 	
			}
			
			/****************************************************/
			// Tabela sistema.vistorias_laudos_finais
			/***************************************************/
			if (!$this->session->idLaudoFinal) {
				$VistoriasLaudosFinais = new Sistema_Model_VistoriasLaudosFinais();
				$Row = $VistoriasLaudosFinais->createRow();
				$Row->id_vistoria    = $this->session->idVistoria;
				$Row->id_laudo_final = $idLaudoFinal;
				$Row->save();

			 	$this->session->idLaudoFinal = $idLaudoFinal;	
			}
	
			if ($post['fl_realizada'] != 'N') {
				/****************************************************/
				// Tabela safra13.laudos_finais_frutas1_granizo
				/***************************************************/
				$nomeModel = $this->_ModelSafras->getSafraModel($this->session->idProposta,'LaudosFinaisFrutas1Granizo');
				$LaudoFrutas1Granizo = new $nomeModel;
				$LaudoFrutas1Granizo->delete($idLaudoFinal);
				
				$LaudoFrutas1Granizo->insert(
					array(
						"id_laudo_final" => $this->session->idLaudoFinal
					)
				);
				
				if (is_array($post['fl_nao_vistoriada']) && count($post['fl_nao_vistoriada']) > 0) {	
					$VistoriaItensSegurados = new Sistema_Model_VistoriasItensSegurados();
					
					foreach ($post['fl_nao_vistoriada'] as $value) {
						$idItem = $value;
						$idLaudo = $this->session->idLaudoFinal;
						
						/****************************************************/
						// Tabela sistema.vistorias_itens_segurados
						/***************************************************/
						$VistoriaItensSegurados->delete($this->session->idVistoria, $idItem);
						
						$itens = array();
						$itens['id_vistoria']      = $this->session->idVistoria;
						$itens['id_item_segurado'] = $idItem;
						$VistoriaItensSegurados->insert($itens);
						
						/****************************************************/
						// Tabela sinistro.laudos_finais_itens_segurados
						/***************************************************/
						$SinistroItensSegurados = new Sinistro_Model_LaudosFinaisItensSegurados();
						$SinistroItensSegurados->delete($idLaudo, $idItem);
						
						$itens = array();
						$itens['id_laudo_final']    = $idLaudo;
						$itens['id_item_segurado']  = $idItem;
						$itens['vl_percent_perdas'] = null;
						$itens['fl_nao_vistoriada'] = 1;
						$itens['id_motivo_quadra_nao_vistoriada'] = $post['id_motivo_quadra_nao_vistoriada-' . $idItem];
						
					   	$SinistroItensSegurados->insert($itens);
					}
				}
			} else {
				if ($this->session->idLaudoFinal) {
					/****************************************************/
					// Tabela safra13.laudos_finais_frutas1_granizo
					/***************************************************/
			    	$Safra = new Produto_Model_Safras();
					$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisFrutas1Granizo');
					$LaudoFrutas1Granizo = new $nomeModel;
					
					$LaudoFrutas1Granizo->delete($this->session->idLaudoFinal);
					
					$LaudoFrutas1Granizo->insert(
						array(
							"id_laudo_final" => $this->session->idLaudoFinal
						)
					);
					
					/****************************************************/
					// Tabela sistema.vistorias_itens_segurados
					/***************************************************/
					$VistoriaItensSegurados = new Sistema_Model_VistoriasItensSegurados();
					$VistoriaItensSegurados->delete($this->session->idVistoria);
						
					/****************************************************/
					// Tabela sinistro.laudos_finais_itens_segurados
					/***************************************************/
					$SinistroItensSegurados = new Sinistro_Model_LaudosFinaisItensSegurados();
					$SinistroItensSegurados->delete($this->session->idLaudoFinal);
				}				
			}
			
			$Db->commit();

			$this->populaDadosTela();
			if (!$this->view->idLaudoFinal) {
				$this->view->idLaudoFinal = $this->session->idLaudoFinal;
			}
			$this->view->showMessage(MSG_SUCCESS, 'success');
		} catch (Exception $e) {
			$Db->rollBack();
			$this->populaCampos($post);
			$this->view->showMessage(MSG_ERROR, 'error');
			//$this->view->showMessage($e, 'error');
		}
	}

	public function populaCampos($post) {
		
		$VistoriaFuncionario = new Sistema_Model_VistoriasFuncionarios();
		$this->view->vistoriadores = $VistoriaFuncionario->getVistoriadoresByVistoria($post['idVistoria']);

		foreach ($post['itens_segurados'] as $item) {
			$idItem = $item;
		
			if ($post['fl_nao_vistoriada'] && in_array($idItem, $post['fl_nao_vistoriada'])) {
				$this->view->listDadosItens[$idItem]['fl_nao_vistoriada'] = true;
			} else { 
				$this->view->listDadosItens[$idItem]['fl_nao_vistoriada'] = false;
			}
			$this->view->listDadosItens[$idItem]['id_motivo_quadra_nao_vistoriada'] = $post['id_motivo_quadra_nao_vistoriada-' . $idItem];
			$this->view->listDadosItens[$idItem]['vl_percentual_colhido'] = $post['vl_percentual_colhido-' . $idItem];
			$this->view->listDadosItens[$idItem]['vl_percentual_perdas']  = $post['vl_percentual_perdas-' . $idItem];
		}

		$this->view->ds_observacao = $post['ds_observacao'];

		if ($this->session->idRevistoria) {
			$this->view->fl_realizada = $post['fl_realizada'];
			$this->view->ds_motivo_nao_realizada = $post['ds_motivo_nao_realizada'];
		}
	} 

	public function getitenslaudofinalAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		
		$params = $this->getRequest()->getParams(); 
		
		$data = array();		
		$MotivosQuadraNaoVistoriada = new Sinistro_Model_MotivosQuadraNaoVistoriada();
		$motivos = $MotivosQuadraNaoVistoriada->fetchPairs('id', 'ds_motivo');
		
		foreach ($motivos as $key => $value) {
			if (!$key) {
				$combo = '<option value="">Selecione o motivo</option>';
			} else {
				$combo .= '<option value='.$key.'>'.$value.'</option>';
			}
		} 
		
		$data['motivos'] = $combo;
		
		if ($params["id_laudo_final"]) {
			
	    	$Safra = new Produto_Model_Safras();
			$nomeModel = $Safra->getSafraModel($params["id_proposta"],'LaudosFinaisFrutas1GranizoItensSegurados');
			$LaudoItens = new $nomeModel;
			$arrayLaudoItem = $LaudoItens->getItensByLaudo($params["id_laudo_final"]);
			
		
			if (count($arrayLaudoItem) > 0) {
				
				foreach ($arrayLaudoItem as $item) {
					$id = $item['id_item_segurado'];

					$data['itensLaudo'][$id]['fl_nao_vistoriada']               = $item['fl_nao_vistoriada'];
				  	$data['itensLaudo'][$id]['id_motivo_quadra_nao_vistoriada'] = $item['id_motivo_quadra_nao_vistoriada'];
				  	$data['itensLaudo'][$id]['vl_percent_colhido']              = $item['vl_percent_colhido'] ? $item['vl_percent_colhido'] : '';
				  	$data['itensLaudo'][$id]['vl_percent_perdas']               = $item['vl_percent_perdas'] ? number_format($item['vl_percent_perdas'], 2, '.', '') : '';
					$data['itensLaudo'][$id]['vl_area']               		    = $item['vl_area'];
				  	$data['itensLaudo'][$id]['nr_item_segurado']                = $item['nr_item_segurado'];
					$data['itensLaudo'][$id]['ds_item_segurado']                = $item['ds_item_segurado'];
				  	$data['itensLaudo'][$id]['vl_lmga']                         = $item['vl_lmga'];
					$data['itensLaudo'][$id]['ds_nome_variedade']               = $item['ds_nome_variedade'];
				}
			}
			
		} 
			
			
		$LaudoFinal = new Sinistro_Model_LaudosFinais();
		
		if ($params["id_revistoria"]) {
			$data['itensSegurados'] = $LaudoFinal->getItensRevistoria($params["id_proposta"], $params["id_revistoria"]);
			
		} else {
			$data['itensSegurados'] = $LaudoFinal->getItensVisPreliminarLaudoFinal($params["id_proposta"], $params["id_vistoria"]);
		}

		$this->getResponse()->setBody(Zend_Json::encode($data));
	}

	public function savedadosvistoriaAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		
		try {
			
			$result = array("status" => true, "tpError" => 0, "message" => '');
			
			$idItem        = $this->getRequest()->getParam('idItem');
			$dtVistoria    = $this->getRequest()->getParam('dt_vistoria');
			$hrVistoria    = $this->getRequest()->getParam('hr_vistoria');
			$minVistoria   = $this->getRequest()->getParam('min_vistoria');			
			$idVistoriador = $this->getRequest()->getParam('idVistoriador');
			
			$dtVistoria = Agro_Util::formatDate($dtVistoria .' '. $hrVistoria .' '. $minVistoria, 'dd/MM/yyyy HH:mm:ss');
			
			
			
			if (!$this->session->idRevistoria) {				
				$Item = new Sinistro_Model_AvisosEncerramentoItensSegurados();				
				$hasDtEncerramento = $Item->hasDtEncerramentoColheita($this->session->idProposta, Agro_Util::formatDate($this->getRequest()->getParam('dt_vistoria'), 'yyyy-MM-dd'), $idItem);

				if ($hasDtEncerramento) {
					$result['status']  = false;
					$result['tpError'] = 1;
					$result['message'] = 'A data da vistoria é maior que a data de encerramento de colheita.';
					
				} else {
					$data = Agro_Util::formatDate($dtVistoria, 'dd/MM/yyyy');
					$dt = explode('/', $data);
					$dtAnterior15Dias  = date('d/m/Y', mktime(0, 0, 0, $dt[1], ($dt[0] - 15), $dt[2])); 
					$dtPosterior15Dias = date('d/m/Y', mktime(0, 0, 0, $dt[1], ($dt[0] + 15), $dt[2])); 
					$SinistroItensSegurados = new Sinistro_Model_LaudosFinaisItensSegurados();
					$hasDtIntervaloMaior15DiasMesmaVistoria = $SinistroItensSegurados->hasDtVistoriaIntervaloMaior15DiasMesmaVistoria($this->session->idVistoria, $dtAnterior15Dias, $dtPosterior15Dias);
					
					if ($hasDtIntervaloMaior15DiasMesmaVistoria) {
						$result['status']   = false;
						$result['tpError']  = 2;
						$result['message']  = 'A diferença entre a data de vistoria informada para esta quadra e a data ';
						$result['message'] .= 'de vistoria de outra quadra desta mesma vistoria é maior do que 15 dias. ';
						$result['message'] .= 'Talvez seja melhor inserir o laudo desta quadra em outra vistoria.';
						
					} else {
						$hasDtIntervaloMaior15DiasOutrasVistorias = $SinistroItensSegurados->hasDtVistoriaIntervaloMaior15DiasOutrasVistorias($this->session->idVistoria, $dtAnterior15Dias, $dtPosterior15Dias);
						
						if ($hasDtIntervaloMaior15DiasOutrasVistorias) {
							$result['status']  = false;
							$result['tpError'] = 3;
							$result['message'] = 'O laudo desta quadra deve ser inserido em outra vistoria.';
						}					
					}
				}
			}
										
			if ($result['tpError'] != 3) {
				
				if (!$this->session->idLaudoFinal) {
					$this->saveLaudoFinal($this->getRequest()->getParams());
					
				}
				
				$Db = Agro_Db_Table_Abstract::getDefaultAdapter();
				$Db->beginTransaction();

				/****************************************************/
				// Tabela sinistro.laudos_finais_itens_segurados
				/***************************************************/
		    	$Safra = new Produto_Model_Safras();
				$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisFrutas1GranizoItensSegurados');
				$Safra13ItensSegurados = new $nomeModel;

				$SinistroItensSegurados = new Sinistro_Model_LaudosFinaisItensSegurados();
				$itens = array();
				$itens['id_laudo_final']    = $this->session->idLaudoFinal;
				$itens['id_item_segurado']  = $idItem;
				$itens['vl_percent_perdas'] = 0;
				$itens['fl_nao_vistoriada'] = 0;
				$itens['vl_percent_colhido'] = 0;
				$itens['id_motivo_quadra_nao_vistoriada'] = null;
				$itens['dt_vistoria'] = Agro_Util::formatDate($dtVistoria, "yyyy-MM-dd HH:mm:ss");
				$itens['fl_assinatura_regulador'] = 0;
				$itens['fl_assinatura_segurado'] = 0;
				$itens['ds_observacao'] = '';				
				$this->session->dtVistoria = $dtVistoria;

				$rs = $Safra13ItensSegurados->find($this->session->idLaudoFinal, $idItem);
				$idLaudoFinalItemSegurado = '';
			   	if ($rs['id_laudo_final_item_segurado']) {
				   	$SinistroItensSegurados->update($itens, 'id = ' . $rs['id_laudo_final_item_segurado']);
				   	$idLaudoFinalItemSegurado = $rs['id_laudo_final_item_segurado'];
			   	} else {
				   	$SinistroItensSegurados->insert($itens);
				   	$rs = $Safra13ItensSegurados->find($this->session->idLaudoFinal, $idItem);
				   	$idLaudoFinalItemSegurado = $rs['id_laudo_final_item_segurado'];
			   	}

				$Safra13ItensSegurados->delete($idLaudoFinalItemSegurado);
				
				$itens = array();
				$itens['id_laudo_final_item_segurado'] = $idLaudoFinalItemSegurado; 
				$itens['vl_area_sinistrada'] = 0;
				$itens['fl_sinistro_colheita'] = 0;
				$itens['ds_coordenadas_geograficas'] = '';
				$Safra13ItensSegurados->insert($itens);
				
				$this->session->idLaudoFinalItemSegurado = $idLaudoFinalItemSegurado;

				/****************************************************/
				// Tabela sinistro.laudos_finais_itens_segurados_revistoria
				/***************************************************/
		    	$ItemRevistoria = new Sinistro_Model_LaudosFinaisItensSeguradosRevistoria();
				$ItemRevistoria->delete($idLaudoFinalItemSegurado);
				
				$itens = array();
				$itens['id_laudo_final_item_segurado'] = $idLaudoFinalItemSegurado; 
				$itens['fl_substitui_laudo_anterior']  = 1;
				$ItemRevistoria->insert($itens);

				/****************************************************/
				// Tabela sinistro.laudos_finais_itens_segurados_funcionarios
				/***************************************************/
				$ItensSeguradosFuncionario = new Sinistro_Model_LaudosFinaisItensSeguradosFuncionarios();
				$ItensSeguradosFuncionario->delete($idLaudoFinalItemSegurado);
				
				$listFunc = explode(',', $idVistoriador);
				$this->session->listFuncionarios = array();
				foreach ($listFunc as $idFunc) {
					$func = array();
					$func['id_laudo_final_item_segurado'] = $idLaudoFinalItemSegurado;
					$func['id_funcionario']  = $idFunc;
					$this->session->listFuncionarios[] = $idFunc;
					
				   	$ItensSeguradosFuncionario->insert($func);
				}

				$Db->commit();
			}

			$this->getResponse()->setBody(Zend_Json::encode($result));
			
		} catch (Exception $e) {
			if ($Db) {
				$Db->rollback();
			}
			
			print_r("<pre>".$e."</pre>");die;
			
			throw new Exception($e->getMessage());
		}
		
		
	}	
}