<?

class Safra12_LftrigocevadagranizoController extends Agro_Controller_Action{

	private $errorMessage = false;
	
	public function init() {
 		$this->session = new Zend_Session_Namespace('laudo_final');
		$this->session->idVistoria = $this->session->idRevistoria ? $this->session->idRevistoria : $this->session->idVistoria;
	}

	public function formAction() {

 		$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;
		
		$MotivosQuadraNaoVistoriada = new Sinistro_Model_MotivosQuadraNaoVistoriada();
		$this->view->motivos = $MotivosQuadraNaoVistoriada->fetchPairs('id', 'ds_motivo', false, false, 1, false, false);
		
		if(!$this->session->idLaudoFinal) {
			$this->save($this->getRequest()->getParams());
		}
		$this->view->idLaudoFinal = $this->session->idLaudoFinal;
		$Safra = new Produto_Model_Safras();
		$nomeForm = $Safra->getSafraForm($this->view->idProposta,'LFUvaGranizo');
		$this->view->form = new $nomeForm;
		
		$PropostaCorbetura = new Seguro_Model_PropostasCoberturas();
		$this->view->hasCoberturaFitossanitaria = $PropostaCorbetura->hasCoberturaFitossanitariaProposta($this->view->idProposta);
		
		$this->view->listDadosQuadra = 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()) {
			//salva os dados do laudo
			
		} else if ($this->session->idLaudoFinal) {
			//se ja tiver dados do laudo final, popula a tela
			$this->populaQuadrasTela();
		}
		
		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 populaQuadrasTela() {
		$Safra = new Produto_Model_Safras();
		$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisTCGranizo');
		$LaudoFinalTCGranizo = new $nomeModel;
		$arr = array();
		$arr['id_cobertura'] = $this->session->idCobertura;
		$arr['id_processo'] = $this->session->idProcesso;
		$arr['id_laudo_final'] = $this->session->idLaudoFinal;
	
		$this->view->dadosQuadra = $LaudoFinalTCGranizo->getDadosItens($arr);
	}
	
	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();
		
    	if ($this->session->idLaudoFinal) {
    		
	    	$Safra = new Produto_Model_Safras();
			$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisTCGranizoItensSegurados');
			
			$LaudoFinalItemSegurado = new $nomeModel;
			
			$rs = $LaudoFinalItemSegurado->getItemSegurado(array('id_laudo_final' => $this->session->idLaudoFinal,'idItem' => $idItem));
			$rs['ds_observacao_item'] = $rs['ds_observacao'];
			$this->view->dadosQuadra = $rs;
			
			$timestampVistoria = $rs['dt_vistoria'];
			
			$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'];
			$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';
				}
			}
    	}
  	}
  	
	public function dadosquadraAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		
		$dados = $this->getRequest()->getParams();
		
		$dados['id_laudo_final'] = $this->session->idLaudoFinal;
		$Safra = new Produto_Model_Safras();
		$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisTCGranizoItensSegurados');
		$LaudoFinalItemSegurado = new $nomeModel;
		
		$dados['idItem'] = $LaudoFinalItemSegurado->getIdItemSegurado($dados);
		//calcula o que falta
		$dados = $this->calcula($dados);
		$dados['ds_observacao'] = $dados['ds_observacao_item'];
		$ret = $LaudoFinalItemSegurado->saveItens($dados);
		if(!$ret) {
			print_r('ALGO ERRADO ACONTECEU');die;
		}
		
		$perda_final = 0;
		if($dados['fl_espigamento'] == 'antes') {
			//salva o item e as amostras. ANTES
			$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisTCGranizoItensSeguradosAntes');
			$ItemAntes = new $nomeModel;
			$dados['ds_estadio_cultura'] = $dados['ds_estadio_antes'];
			$ret = $ItemAntes->save($dados);
			
			$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisTCGranizoItensSeguradosAntesAmostra');
			$ItemAmostra = new $nomeModel;
			
			for($i = 0; $i < 10; $i++) {
				if( $dados['nr_plantas_stand_inicial_'. $i] != '' ||
					$dados['nr_plantas_destruidas_'. $i] != '' ||
					$dados['nr_perfilhos_destruidos_'. $i] != '') {
						$arr = array();
						$arr['idItem'] = $dados['idItem'];
						$arr['nr_amostra'] = $i;
						$arr['nr_plantas_stand_inicial'] = $dados['nr_plantas_stand_inicial_'. $i];
						$arr['nr_plantas_destruidas'] = $dados['nr_plantas_destruidas_'. $i];
						$arr['nr_perfilhos_destruidos'] = $dados['nr_perfilhos_destruidos_'. $i];
						$ItemAmostra->save($arr);
				}
			}
			$perda_final = $dados['vl_percent_perda_total_espigas_desfolhamento'];
		} else {
			//salva o item e as amostras. APOS
			$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisTCGranizoItensSeguradosApos');
			$ItemAntes = new $nomeModel;
			$dados['ds_estadio_cultura'] = $dados['ds_estadio_apos'];
			$ret = $ItemAntes->save($dados);
			
			$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisTCGranizoItensSeguradosAposAmostra');
			$ItemAmostra = new $nomeModel;
			
			for($i = 0; $i < 10; $i++) {
				if( $dados['vl_percent_media_danos_'. $i] != '' ) {
						$arr = array();
						$arr['idItem'] = $dados['idItem'];
						$arr['nr_amostra'] = $i;
						$arr['vl_percent_media_danos'] = $dados['vl_percent_media_danos_'. $i];
						$ItemAmostra->save($arr);
				}
			}
			$perda_final = $dados['vl_percent_perda'];
		}
		
		
		$ModelItens = new Sinistro_Model_LaudosFinaisItensSegurados();
		$arr = array();
		$arr['vl_percent_perdas'] = $perda_final;
		$arr['vl_percent_colhido'] = $dados['vl_percent_colhido'];
		
		$ModelItens->update($arr, "id = " . $dados['idItem']);
		
		
		$ModelLaudo = new Sinistro_Model_LaudosFinais();
		$dados['id'] = $this->session->idLaudoFinal;
		$ModelLaudo->save($dados);
		
		$result = array();
		$result = array('status' => true);
		$result['message'] = 'Processo realizado com sucesso!';
		$this->getResponse()->setBody(Zend_Json::encode($result));
  	}
  	
  	public function calcula($dados) {
  		if($dados['fl_espigamento'] == 'antes') {
  			$qtd_stand = 0;
  			$media_stand = 0;
  			$qtd_plantas = 0;
  			$media_plantas = 0;
  			$qtd_perfilhos = 0;
  			$media_perfilhos = 0;
  			for($i = 0; $i < 10; $i++) {
  				if($dados['nr_plantas_stand_inicial_'. $i]) {
	  				$qtd_stand += $dados['nr_plantas_stand_inicial_'. $i];
	  				$media_stand++;
	  			}
  				
	  			if($dados['nr_plantas_destruidas_'. $i]) {
	  				$qtd_plantas += $dados['nr_plantas_destruidas_'. $i];
	  				$media_plantas++;
	  			}
  				
	  			if($dados['nr_perfilhos_destruidos_'. $i]) {
	  				$qtd_perfilhos += $dados['nr_perfilhos_destruidos_'. $i];
	  				$media_perfilhos++;
	  			}
  				
  			}
  			
  			$dados['nr_total_plantas_stand_inicial'] = $qtd_stand;
  			if($media_stand > 0 ) {
  				$dados['vl_media_plantas_stand_inicial'] = number_format($qtd_stand / $media_stand, 2);
  			} else {
  				$dados['vl_media_plantas_stand_inicial'] = 0;
  			}
  			$dados['vl_total_espigas_stand_inicial'] = $dados['nr_espigas_planta_stand_inicial'] * $dados['vl_media_plantas_stand_inicial'];
  			
  			$dados['nr_total_plantas_destruidas'] = $qtd_plantas;
  			if($media_plantas > 0){
  				$dados['vl_media_plantas_destruidas'] = number_format($qtd_plantas / $media_plantas, 2);
  			} else {
  				$dados['vl_media_plantas_destruidas'] = 0;
  			}
  			$dados['vl_total_espigas_destruidas'] = $dados['nr_espigas_planta_destruidas'] * $dados['vl_media_plantas_destruidas'];
  			
  			$dados['nr_total_perfilhos_destruidos'] = $qtd_perfilhos;
  			if($media_perfilhos > 0 ) {
  				$dados['vl_media_perfilhos_destruidos'] = number_format($qtd_perfilhos / $media_perfilhos, 2);
  			} else {
  				$dados['vl_media_perfilhos_destruidos'] = 0;
  			}
  			$dados['vl_total_perfilhos_destruidos'] = $dados['vl_media_perfilhos_destruidos'];
  			
  			if($dados['vl_total_espigas_stand_inicial'] != 0) {
  				//Total de espigas perdidas
  				$dados['vl_total_espigas_perdidas'] = $dados['vl_total_perfilhos_destruidos'] +  $dados['vl_total_espigas_destruidas'];
  				//% de perda de espigas
  				$dados['vl_percent_perda_espigas'] = number_format( ($dados['vl_total_espigas_perdidas'] / $dados['vl_total_espigas_stand_inicial'] * 100), 2);
  				//Perda Total (espigas + desfolhamento)
  				$dados['vl_percent_perda_total_espigas_desfolhamento'] = $dados['vl_percent_perda_espigas'] + $dados['vl_percent_desfolhamento'];
  				//CPR
  				$dados['vl_percent_capacidade_produtiva_restante'] = 100 - $dados['vl_percent_perda_total_espigas_desfolhamento'];
  				$dados['vl_percent_perdas'] = $dados['vl_percent_perda_total_espigas_desfolhamento'];  
  			} else {
  				$dados['vl_total_espigas_perdidas'] = 0;
  				$dados['vl_percent_perda_espigas'] = 0;
  				$dados['vl_percent_perda_total_espigas_desfolhamento'] = 0;
  				$dados['vl_percent_capacidade_produtiva_restante'] = 0;
  				$dados['vl_percent_perdas'] = 0;
  			} 
  		} else {
  			
  			//APOS
  			$qtd_danos = 0;
  			$media_danos = 0;
  			for($i = 0; $i<10; $i++) {
  				if($dados['vl_percent_media_danos_'. $i] != '') {
  					$qtd_danos += $dados['vl_percent_media_danos_'. $i];
  					$media_danos++;
  				}
  			}
  			$dados['vl_percent_soma_percentuais'] = $qtd_danos;
  			$dados['nr_amostras'] = $media_danos;
  			if($dados['vl_percent_soma_percentuais'] > 0) {
  				$dados['vl_percent_perda'] = $dados['vl_percent_soma_percentuais'] / $media_danos;
  				$dados['vl_percent_capacidade_produtiva_restante'] = 100 - $dados['vl_percent_perda'];
  				$dados['vl_percent_perdas'] = $dados['vl_percent_perda']; 
  			}
  		}
  		return $dados;
  	}
  	
	public function formquadrasnaosalvasAction() {
		$this->getHelper('layout')->disableLayout();
		
		$idItem = $this->getRequest()->getParam('idItem');
		$idItensSelecionados = $this->getRequest()->getParam('idItensSelecionados');
		
    	$Safra = new Produto_Model_Safras();
		$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisUvaGranizoItensSegurados');
		$ItensUvaGranizo = new $nomeModel;
		if ($this->session->idRevistoria) {
			$this->view->itensSegurados = $ItensUvaGranizo->getItensRevistoriadosNaoSalvos($this->session->idProposta, $idItem, $this->session->idRevistoria, $idItensSelecionados);
		} else {
			if ($idItensSelecionados) {
				$this->view->itensSegurados = $ItensUvaGranizo->getItensNaoSalvos($this->session->idProposta, $idItensSelecionados, $idItem, $this->session->idLaudoFinal);
			} else {
				$this->view->itensSegurados = array();
			}
		}
	}
	
	public function calculapercentuaisAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		
		$data = array();
		$amostras = array();
		$percentuais = array();
		
    	$Safra = new Produto_Model_Safras();
		$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisUvaGranizoItensSegurados');
		$Safra12ItemSegurado = new $nomeModel;
		
		$idItem = $this->getRequest()->getParam('idItem');
		$vlPercentColhido = $this->getRequest()->getParam('vl_percent_colhido');
		
		$vlMaiorPercentColhidoLF = $Safra12ItemSegurado->getMaiorPercentColhidoLF($this->session->idProposta, $this->session->idCobertura, $idItem, $this->session->dtVistoria);
		$vlMaiorPercentColhidoRevistoria = $Safra12ItemSegurado->getMaiorPercentColhidoRevistoria($this->session->idProposta, $this->session->idCobertura, $idItem, $this->session->dtVistoria);
		
		$percentColhidos = array();
		$percentColhidos[] = $vlMaiorPercentColhidoLF ? $vlMaiorPercentColhidoLF : 0; 
		$percentColhidos[] = $vlMaiorPercentColhidoRevistoria ? $vlMaiorPercentColhidoRevistoria : 0; 
		rsort($percentColhidos);
		
		$data['error'] = null;
		if ($percentColhidos[0] > $vlPercentColhido) {
			$data['error'] = 'O percentual colhido não pode ser menor do que no laudo anterior (' . $percentColhidos[0] . '%).'; 			
		} else {
			$percentual_perda_0   = $this->getRequest()->getParam('nr_cachos_percentual_perda_0');
			$percentual_perda_5   = $this->getRequest()->getParam('nr_cachos_percentual_perda_5');
			$percentual_perda_10  = $this->getRequest()->getParam('nr_cachos_percentual_perda_10');
			$percentual_perda_20  = $this->getRequest()->getParam('nr_cachos_percentual_perda_20');
			$percentual_perda_30  = $this->getRequest()->getParam('nr_cachos_percentual_perda_30');
			$percentual_perda_40  = $this->getRequest()->getParam('nr_cachos_percentual_perda_40');
			$percentual_perda_50  = $this->getRequest()->getParam('nr_cachos_percentual_perda_50');
			$percentual_perda_60  = $this->getRequest()->getParam('nr_cachos_percentual_perda_60');
			$percentual_perda_70  = $this->getRequest()->getParam('nr_cachos_percentual_perda_70');
			$percentual_perda_80  = $this->getRequest()->getParam('nr_cachos_percentual_perda_80');
			$percentual_perda_90  = $this->getRequest()->getParam('nr_cachos_percentual_perda_90');
			$percentual_perda_100 = $this->getRequest()->getParam('nr_cachos_percentual_perda_100');
			
			$nr_cachos = ($percentual_perda_0   +
						  $percentual_perda_5   +
						  $percentual_perda_10  +
						  $percentual_perda_20  +
						  $percentual_perda_30  +
						  $percentual_perda_40  +
						  $percentual_perda_50  +
						  $percentual_perda_60  +
						  $percentual_perda_70  +
						  $percentual_perda_80  +
						  $percentual_perda_90  +
						  $percentual_perda_100
						);
			
			$percentual = (($percentual_perda_0   * 0) +
						   ($percentual_perda_5   * 5) +
						   ($percentual_perda_10  * 10) +
						   ($percentual_perda_20  * 20) +
						   ($percentual_perda_30  * 30) +
						   ($percentual_perda_40  * 40) +
						   ($percentual_perda_50  * 50) +
						   ($percentual_perda_60  * 60) +
						   ($percentual_perda_70  * 70) +
						   ($percentual_perda_80  * 80) +
						   ($percentual_perda_90  * 90) +
						   ($percentual_perda_100 * 100)
						  );
	
			$vl_percent_perda = $percentual / $nr_cachos;
			
			$data['nr_cachos']     = $nr_cachos;
			$amostras['nr_cachos'] = $nr_cachos;
			
			$data['percentual_perda']        = number_format($vl_percent_perda, 2, '.', '');
			$percentuais['percentual_perda'] = $data['percentual_perda'];
			
			$ret = $this->saveItensSegurados($this->getRequest()->getParams(), $amostras, $percentuais);
			if ($ret) {
				$data['arrayIdsItens'] = $ret;
			}
		}
		
		$this->getResponse()->setBody(Zend_Json::encode($data));
	}
	
	public function verificaAvisos($step = null) {
		try {
			$Db = Agro_Db_Table_Abstract::getDefaultAdapter();
			$Db->beginTransaction();
			
			$AvisoSinistro = new Sinistro_Model_AvisosSinistro();
			$avisos = $AvisoSinistro->getAvisosByCoberturasSemVistPreliminar($this->session->idProposta, $this->session->idCobertura);
			if (count($avisos) > 0) {
				$ItemSegurado = new Sinistro_Model_LaudosFinaisItensSegurados();
				$rs = $ItemSegurado->getMenorDtVistoria($this->session->idLaudoFinal);
				if ($rs['dt_vistoria']) {
					$dtVistoria = Agro_Util::formatDate($rs['dt_vistoria'], 'yyyyMMdd');
					foreach ($avisos as $it) {
						$dtSinistro = Agro_Util::formatDate($it['dt_sinistro'], 'yyyyMMdd');
						
						if ($it['id_vistoria'] == $this->session->idVistoria) {
							if ($dtVistoria < $dtSinistro) {
								$this->errorMessage = true;
								throw new Exception('A data da vistoria não pode ser anterior a data do sinistro.');
							}
						} else {
							if (!$it['id_vistoria']) {
								if ($dtVistoria >= $dtSinistro) {
									$item = array();
									$item['id_vistoria'] = $this->session->idVistoria;
									$item['id_aviso'] = $it['id_aviso'];
									
									$VistoriaAviso = new Sinistro_Model_VistoriasAvisos();
									$VistoriaAviso->insert($item);
								}
							}
						}
					}
				}
			}
			$Db->commit();
		} catch (Exception $e) {
			$Db->rollBack();
			if ($step == 'saveItem') {
				echo $e->getMessage();
			} else {
				throw new Exception($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 = '';
			$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 safra12.laudos_finais_uva_granizo
			/***************************************************/
	    	$Safra = new Produto_Model_Safras();
			$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisUvaGranizo');
			$LaudoFinalUvaGranizo = new $nomeModel;
			
			$Row = $LaudoFinalUvaGranizo->createRow();
			$Row->id_laudo_final = $LaudoFinal->id;
		  	$Row->fl_acompanhado_vento = 0;
		  	$Row->ds_direcao_evento = '';
		  	$Row->fl_acompanhado_chuva = 0;
			$Row->ds_estadio_cultura = '';
			$Row->ds_aspectos_gerais_cultura = '';
		  	$Row->ds_diametro_medio_granizo = '';	
			$Row->fl_danos_folhas = 0;
			$Row->fl_danos_ramos = 0;
			$Row->fl_danos_flores = 0;
			$Row->fl_danos_frutos = 0;
			$Row->fl_danos_vegetacao_adjacente = 0;
			$Row->fl_indenizacao_fitossanitaria = 0;
		  	$Row->fl_area_atingida = '';
			$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 saveItensSegurados(array $post, array $amostras, array $percentuais) {
		try {
			$Db = Agro_Db_Table_Abstract::getDefaultAdapter();
			$Db->beginTransaction();
			
			$idLaudo = $this->session->idLaudoFinal; 
			$arrayIdsItens = array();
			$cont = 1;
			
	    	$Safra = new Produto_Model_Safras();
			$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisUvaGranizoItensSegurados');
			$Safra12ItensSegurados = new $nomeModel;
			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->insert($itens);
					
					/****************************************************/
					// Tabela sinistro.laudos_finais_itens_segurados
					/***************************************************/
					$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 = $Safra12ItensSegurados->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']          = $this->session->idLaudoFinal;
					$itens['id_item_segurado']        = $idItem;
					$itens['dt_vistoria']             = $this->session->dtVistoria;  
					$itens['vl_percent_perdas']       = $percentuais['percentual_perda'];
					$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;
					}

					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 safra12.laudos_finais_uva_granizo_itens_segurados
					/***************************************************/
					$Safra12ItensSegurados->delete($idLaudoFinalItemSegurado);
					
					$itens = array();
					$itens['id_laudo_final_item_segurado'] = $idLaudoFinalItemSegurado;
					$itens['nr_amostras']                  = $post['nr_amostras'];
				  	$itens['vl_percent_colhido']           = $post['vl_percent_colhido'] ? $post['vl_percent_colhido'] : 0;
					$itens['vl_area_sinistrada']           = $post['vl_area_sinistrada'];
					$itens['nr_cachos_percent_perda_0']    = $post['nr_cachos_percentual_perda_0'] ? $post['nr_cachos_percentual_perda_0'] : 0;
					$itens['nr_cachos_percent_perda_5']    = $post['nr_cachos_percentual_perda_5'] ? $post['nr_cachos_percentual_perda_5'] : 0;
					$itens['nr_cachos_percent_perda_10']   = $post['nr_cachos_percentual_perda_10'] ? $post['nr_cachos_percentual_perda_10'] : 0;
					$itens['nr_cachos_percent_perda_20']   = $post['nr_cachos_percentual_perda_20'] ? $post['nr_cachos_percentual_perda_20'] : 0;
					$itens['nr_cachos_percent_perda_30']   = $post['nr_cachos_percentual_perda_30'] ? $post['nr_cachos_percentual_perda_30'] : 0;
					$itens['nr_cachos_percent_perda_40']   = $post['nr_cachos_percentual_perda_40'] ? $post['nr_cachos_percentual_perda_40'] : 0;
					$itens['nr_cachos_percent_perda_50']   = $post['nr_cachos_percentual_perda_50'] ? $post['nr_cachos_percentual_perda_50'] : 0;
					$itens['nr_cachos_percent_perda_60']   = $post['nr_cachos_percentual_perda_60'] ? $post['nr_cachos_percentual_perda_60'] : 0;
					$itens['nr_cachos_percent_perda_70']   = $post['nr_cachos_percentual_perda_70'] ? $post['nr_cachos_percentual_perda_70'] : 0;
					$itens['nr_cachos_percent_perda_80']   = $post['nr_cachos_percentual_perda_80'] ? $post['nr_cachos_percentual_perda_80'] : 0;
					$itens['nr_cachos_percent_perda_90']   = $post['nr_cachos_percentual_perda_90'] ? $post['nr_cachos_percentual_perda_90'] : 0;
					$itens['nr_cachos_percent_perda_100']  = $post['nr_cachos_percentual_perda_100'] ? $post['nr_cachos_percentual_perda_100'] : 0;
				  	$itens['nr_total_cachos']              = $amostras['nr_cachos'];
				  	
				  	if ($post['fl_floracao'] == "pre") {
					  	$itens['fl_pre_floracao'] = 1;
				  	} else if ($post['fl_floracao'] == "pos") {
					  	$itens['fl_pos_floracao'] = 1;
				  	}

				   	$Safra12ItensSegurados->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();
			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; 
				} 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;
			if ($post['fl_realizada'] == 'N') {
	  			$laudo['fl_evento_nao_constatado'] = 0;
	  			$laudo['ds_observacao']            = '';
			} else {
	  			$laudo['fl_evento_nao_constatado'] = $post['fl_evento_nao_constatado'] ? 1 : 0;
	  			$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') {
				
				if (!$post['fl_evento_nao_constatado']) {
					
					/****************************************************/
					// Tabela sinistro.laudos_finais_itens_segurados
					/***************************************************/
					$SinistroItemSegurado = new Sinistro_Model_LaudosFinaisItensSegurados();
	
			    	$Safra = new Produto_Model_Safras();
					$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisUvaGranizoItensSegurados');
					$Safra12ItensSegurados = new $nomeModel;
					foreach ($post as $key => $value) {
						if (strpos($key, 'fl_indenizacao_fitossanitaria_item-') > -1) {
							$idItem = $value;
							$idLaudo = $this->session->idLaudoFinal;
	
							$item = array();
							$item['fl_indenizacao_fitossanitaria'] = 1;
							
							$rs = $SinistroItemSegurado->find($idLaudo, $idItem);
							$Safra12ItensSegurados->update($item, 'id_laudo_final_item_segurado = ' . $rs['id']);
						}
					}					
					
					if (is_array($post['fl_nao_vistoriada']) && count($post['fl_nao_vistoriada']) > 0) {
						$VistoriaItensSegurados = new Sistema_Model_VistoriasItensSegurados();
						foreach ($post['fl_nao_vistoriada'] as $item) {
							$idItem = $item;
							$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 {
					/****************************************************/
					// Tabela sinistro.laudos_finais_itens_segurados
					/***************************************************/
					$SinistroItensSegurados = new Sinistro_Model_LaudosFinaisItensSegurados();
					$SinistroItensSegurados->delete($this->session->idLaudoFinal);
				}
			} else {
				if ($this->session->idLaudoFinal) {
					
					/****************************************************/
					// Tabela safra12.laudos_finais_uva_granizo
					/***************************************************/
			    	$Safra = new Produto_Model_Safras();
					$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisUvaGranizo');
					$LaudoUvaGranizo = new $nomeModel;
					$LaudoUvaGranizo->delete($this->session->idLaudoFinal);		

					/****************************************************/
					// Tabela sinistro.laudos_finais_itens_segurados
					/***************************************************/
					$SinistroItemSegurado = new Sinistro_Model_LaudosFinaisItensSegurados();
					$SinistroItemSegurado->delete($this->session->idLaudoFinal);
					
					/****************************************************/
					// Tabela sistema.vistorias_itens_segurados
					/***************************************************/
					$VistoriaItensSegurados = new Sistema_Model_VistoriasItensSegurados();
					$VistoriaItensSegurados->delete($this->session->idVistoria);
				}				
			}
						
			$Db->commit();
		} catch (Exception $e) {
			$Db->rollBack();
		}
	}
	
	public function getRow() {
		if ($this->session->idLaudoFinal) {
		    $Safra = new Produto_Model_Safras();
			$nomeModel = $Safra->getSafraModel($this->view->idProposta,'LaudosFinaisUvaGranizo');
			$Safra = new $nomeModel;
			
			$row = $Safra->getDataLaudoFinal($this->session->idLaudoFinal);

			return $row;
		}
	}
	
	public function populaCampos($post) {
		
		if (array_key_exists('fl_evento_nao_constatado', $post)) {
			$this->view->fl_evento_nao_constatado = $post['fl_evento_nao_constatado'];
		} else {
			$this->view->fl_acompanhado_vento      = $post['fl_acompanhado_vento'];
			$this->view->fl_acompanhado_chuva      = $post['fl_acompanhado_chuva'];
			$this->view->ds_direcao_evento         = $post['ds_direcao_evento'];
			$this->view->ds_diametro_medio_granizo = $post['ds_diametro_medio_granizo'];
			$this->view->fl_area_atingida          = $post['fl_area_atingida'];
	
			if (array_key_exists('fl_danos_folhas', $post)) {
				$this->view->fl_danos_folhas = $post['fl_danos_folhas'];
			}
			if (array_key_exists('fl_danos_ramos', $post)) {
				$this->view->fl_danos_ramos = $post['fl_danos_ramos'];
			}
			if (array_key_exists('fl_danos_flores', $post)) {
				$this->view->fl_danos_flores = $post['fl_danos_flores'];
			}
			if (array_key_exists('fl_danos_frutos', $post)) {
				$this->view->fl_danos_frutos = $post['fl_danos_frutos'];
			}
			if (array_key_exists('fl_danos_vegetacao_adjacente', $post)) {
				$this->view->fl_danos_vegetacao_adjacente = $post['fl_danos_vegetacao_adjacente'];
			}
			if (array_key_exists('fl_indenizacao_fitossanitaria', $post)) {
				$this->view->fl_indenizacao_fitossanitaria = $post['fl_indenizacao_fitossanitaria'];
			}
			if (array_key_exists('fl_quadras_indenizacao', $post)) {
				$this->view->fl_quadras_indenizacao = $post['fl_quadras_indenizacao'];
			}
		}
		$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();
		
		$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 ($this->session->idLaudoFinal) {
	    	$Safra = new Produto_Model_Safras();
			$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisTCGranizoItensSegurados');
			$LaudoItens = new $nomeModel;
			$arrayLaudoItem = $LaudoItens->getItensByLaudo($this->session->idLaudoFinal);
			
			if (count($arrayLaudoItem) > 0) {
				foreach ($arrayLaudoItem as $item) {
					$id = $item['id_item_segurado'];
					
					$data['itensLaudo'][$id]['nr_item_segurado'] = $item['nr_item_segurado'];
					$data['itensLaudo'][$id]['ds_item_segurado'] = $item['ds_item_segurado'];
					$data['itensLaudo'][$id]['vl_area'] = $item['vl_area'];
					$data['itensLaudo'][$id]['vl_lmga'] = $item['vl_lmga'];
					$data['itensLaudo'][$id]['ds_nome_variedade'] = $item['ds_nome_variedade'];
					
					$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, '.', '') : '';
				}
			}
		}
		$LaudoFinal = new Sinistro_Model_LaudosFinais();
		if ($this->session->idRevistoria) {
			$data['itensSegurados'] = $LaudoFinal->getItensRevistoria($this->session->idProposta, $this->session->idRevistoria);
		} else {
			$data['itensSegurados'] = $LaudoFinal->getItensDisponiveisLaudoFinal($this->session->idProposta);
		}
		
		$this->getResponse()->setBody(Zend_Json::encode($data));
	}
	
	public function getitensvistoriaAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		
		$LaudoFinal = new Sinistro_Model_LaudosFinais();
		$data = $LaudoFinal->getItensDisponiveisLaudoFinal($this->session->idProposta);
		
		$this->getResponse()->setBody(Zend_Json::encode($data));
	}
	
	
	
	public function setmotivosAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		$Model = new Sinistro_Model_LaudosFinaisItensSegurados();
		$dados = $this->getRequest()->getParams();
		$dados['id_laudo_final'] = $this->session->idLaudoFinal;
		$Model->setMotivo($dados);
		return true;
	}
	
	
	public function savedadosvistoriaAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		try {
			
			$result = array('status' => true);
			
			$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, $dtVistoria, $idItem);
				if ($hasDtEncerramento) {
					$result['status'] = false;
				}
			}
			
			if (!$this->session->idLaudoFinal) {
				$this->saveLaudoFinal($this->getRequest()->getParams());
			}
			$Db = Agro_Db_Table_Abstract::getDefaultAdapter();
			$Db->beginTransaction();
			
			/****************************************************/
			// Tabela sinistro.laudos_finais_itens_segurados
			/***************************************************/
			$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['id_motivo_quadra_nao_vistoriada'] = null;
			$itens['dt_vistoria']       = $dtVistoria;
			$itens['fl_assinatura_regulador'] = 0;
			$itens['fl_assinatura_segurado'] = 0;
			$itens['ds_observacao'] = '';				
			$this->session->dtVistoria = $dtVistoria;
			
		   	$rs = $SinistroItensSegurados->find($this->session->idLaudoFinal, $idItem);
			$idLaudoFinalItemSegurado = '';
		   	if ($rs['id']) {
			   	$SinistroItensSegurados->update($itens, 'id = ' . $rs['id']);
			   	$idLaudoFinalItemSegurado = $rs['id'];
		   	} else {
			   	$idLaudoFinalItemSegurado = $SinistroItensSegurados->insert($itens);
		   	}
			/****************************************************/
			// Tabela safra12.laudos_finais_uva_granizo_itens_segurados
			/***************************************************/
		   	
	    	$Safra = new Produto_Model_Safras();
			$nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisTCGranizoItensSegurados');
			$Safra12ItensSegurados = new $nomeModel;
			$Safra12ItensSegurados->delete($idLaudoFinalItemSegurado);
			
			$itens = array();
			$itens['id_laudo_final_item_segurado'] = $idLaudoFinalItemSegurado; 
			$itens['ds_coordenadas_geograficas'] = 0;
			$itens['vl_percent_area_afetada'] = 0;
			$itens['vl_percent_capacidade_produtiva_restante'] = 0;
  			$itens['vl_area_sinistrada'] = 0;
  			$itens['ds_observacao'] = 0;
  			$itens['fl_espigamento'] = 0;
  			
			$Safra12ItensSegurados->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();
			}
			 echo $e->getMessage();
		}
	}	
}