<?

class Safra13_LfuvagranizoController extends Agro_Controller_Action{

	private $errorMessage = false;
	
	public function init() {	
		$this->view->title = 'Sinistro » Laudo Final para Uva';
	}

	public function formAction() {
		$this->view->jQuery()->addJavascriptFile('/resources/javascript/sinistro/sinistro_laudo_final.js');
		
		$User = Zend_Auth::getInstance()->getIdentity();
		$Safra = new Produto_Model_Safras();
		
	    $dados = $this->getRequest()->getParams();
        
	    $this->view->title .= ' » Granizo » Formulário';
        $this->view->back = "/sinistro/processo/view/id/{$dados['id_processo']}";
        
        if($dados['id_revistoria']){
            $this->view->title .= ' de Revistoria';
        }
  
        if ($dados['id_laudo_final']){
            $this->view->idLaudoFinal = $dados['id_laudo_final'];
            
        } else {        
            $this->view->idLaudoFinal = $this->saveLaudoFinal($dados);
            $this->_redirect($this->getRequest()->getRequestUri()."/id_laudo_final/".$this->view->idLaudoFinal);
            
        }
		
        $this->view->idVistoria   = $dados['id_vistoria'];
        $this->view->idRevistoria = $dados['id_revistoria'];
        $this->view->idCobertura  = $dados['id_cobertura'];
        $this->view->idProposta   = $dados['id_proposta'];
        $this->view->idProcesso   = $dados['id_processo'];
        
        $this->view->formAssinatura = new Sinistro_Form_AssinaturaLaudoPreliminar;
        $this->view->formAssinatura->fl_assinatura_regulador->setAttrib('id','fl_assinatura_regulador_laudo');
        $this->view->formAssinatura->fl_assinatura_segurado->setAttrib('id','fl_assinatura_segurado_laudo');
        
        $this->view->listDadosQuadra = array();

        $this->view->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($dados['id_vistoria']);
        }
        
        $this->view->userVistoriaMesmaEmpresa = $idEmpresaUserLogado == $idEmpresaVistoria ? true : false;
      
        $nomeForm = $Safra->getSafraForm($dados['id_proposta'],'LFUvaGranizo');
        $this->view->form = new $nomeForm;
        
        /* verifica se a proposta possui a cobertura de proteção fitossanitária contratada */
        $PropostasCoberturas = new Seguro_Model_PropostasCoberturas();
        $this->view->hasCoberturaFitossanitaria = $PropostasCoberturas->hasCoberturaByIdPropostaDsChave($dados['id_proposta'], 'COB_PROTECAO_FITO');

        if ($this->getRequest()->isPost()) {
            
            $errorMsg = '';
            if ($this->getRequest()->getParam('fl_realizada') != 'N') {
                $formUvaGranizo = $this->view->form;
                
                $forms = array($formUvaGranizo);
                
                $camposAdicionais = array();
                
                if ($this->getRequest()->getParam('fl_evento_nao_constatado')) {
                	
                    $formUvaGranizo->ds_estadio_cultura->setRequired(false);
                    $formUvaGranizo->ds_aspectos_gerais_cultura->setRequired(false);
                    
                    $formAssinaturas = $this->view->formAssinatura;
                    $forms[] = $formAssinaturas; 
                    
                    if((!$dados['fl_assinatura_regulador'] || !$dados['fl_assinatura_segurado']) && $dados['ds_observacao'] == '') {
                        $camposAdicionais[] = array(
                            'type'    => 'text',
                            'fields'   => 'ds_observacao',
                            'label'   => 'Observações',
                            'message' => 'Informe o motivo pelo qual o laudo não foi assinado nas observações.'
                        );
                    }
                    
                } else {
                    
                    $camposAdicionais[] = array(
                        'type'    => 'text',
                        'fields'   => 'fl_acompanhado_vento',
                        'label'   => 'Acompanhado de Vento',
                        'message' => MSG_ERROR_EMPTY
                    );
                    
                    $camposAdicionais[] = array(
                        'type'    => 'text',
                        'fields'   => 'fl_acompanhado_chuva',
                        'label'   => 'Acompanhado de Chuva',
                        'message' => MSG_ERROR_EMPTY
                    );
                    
                    $camposAdicionais[] = array(
                        'type'    => 'text',
                        'fields'   => 'ds_coordenadas_geograficas',
                        'label'   => 'Coordenadas Geográficas/Sede',
                        'message' => MSG_ERROR_EMPTY
                    );
                    
                    $checkboxes = array('fl_danos_folhas',
                                        'fl_danos_ramos',
                                        'fl_danos_flores',
                                        'fl_danos_frutos',
                                        'fl_danos_vegetacao_adjacente');
                    
                    $camposAdicionais[] = array(
                        'type'    => 'checkbox',
                        'fields'   => $checkboxes,
                        'minCheckeds' => 1,
                        'label'   => 'Houve Danos',
                        'message' => MSG_ERRO_LF_DANOS
                    );
                    $camposAdicionais[] = array(
                        'type'    => 'text',
                        'fields'   => 'fl_area_atingida',
                        'label'   => 'Área atingida',
                        'message' => MSG_ERRO_LP_AREA_ATINGIDA
                    );
                    if ($this->view->hasCoberturaFitossanitaria) {
                        $camposAdicionais[] = array(
                            'type'    => 'text',
                            'fields'   => 'fl_indenizacao_fitossanitaria',
                            'label'   => 'Indenização pela cobertura fitossanitária Pós Granizo',
                            'message' => MSG_ERROR_EMPTY
                        );
                    }
                }
    
                $errorMsg = $this->getAllFormErros($forms, $this->getRequest()->getPost(), $camposAdicionais);
            }
            
            if ($errorMsg) {
                $this->view->form->populate($this->getRequest()->getParams());
                $this->populaCampos($this->getRequest()->getParams());
                $this->view->showMessage($errorMsg, 'error');
            } else {
                try {
                    $this->save($this->getRequest()->getParams());
                    $this->verificaAvisos($dados,'saveLaudo');
                    $this->populaDadosTela($dados);

                    $this->view->showMessage(MSG_SUCCESS, 'success');
                } catch (Exception $e) {
                    
                	$this->populaCampos($this->getRequest()->getParams());
                    
                    if ($this->errorMessage) {
                        $this->view->showMessage($e->getMessage(), 'error');
                        
                    } else {
                        $this->view->showMessage(MSG_ERROR, 'error');
                    }
                }
            }
        } else {
            $this->populaDadosTela($dados);
        }

        if ($dados['id_revistoria']) {
            $Revistoria = new Sistema_Model_Revistorias();
            $rs = $Revistoria->find($dados['id_revistoria'])->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 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 = $post['id_processo'];
            $LaudoFinal->id_cobertura = $post['id_cobertura'];
            $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 = $post['id_vistoria'];
            $Row->id_laudo_final = $LaudoFinal->id;
            $Row->save();

            $Db->commit();
            
            return $LaudoFinal->id;
        } catch (Exception $e) {
            $Db->rollBack();
            echo $e->getMessage();
        }
    }

	public function populaDadosTela($dados) {
        $Safra = new Produto_Model_Safras();
        $nomeModel = $Safra->getSafraModel($dados['id_proposta'],'LaudosFinaisUvaGranizo');
        $Safra = new $nomeModel;
        
        $row = $Safra->getDataLaudoFinal($dados['id_laudo_final']);
        
        if($row) {

    		$this->view->form->populate($row);
    
    		$this->view->fl_evento_nao_constatado = $row['fl_evento_nao_constatado'];
    		$this->view->ds_observacao            = $row['ds_observacao'];
    		
    		if (!$this->view->fl_evento_nao_constatado) {

    			$this->view->fl_acompanhado_vento      = $row['fl_acompanhado_vento'] ? 'S' : 'N';
    			$this->view->fl_acompanhado_chuva      = $row['fl_acompanhado_chuva'] ? 'S' : 'N';
    			$this->view->ds_direcao_evento         = $row['ds_direcao_evento'];
    			$this->view->ds_diametro_medio_granizo = $row['ds_diametro_medio_granizo'];
    
    			$this->view->fl_danos_folhas               = $row['fl_danos_folhas'];
    			$this->view->fl_danos_ramos                = $row['fl_danos_ramos'];
    			$this->view->fl_danos_flores               = $row['fl_danos_flores'];
    			$this->view->fl_danos_frutos               = $row['fl_danos_frutos'];
    			$this->view->fl_danos_vegetacao_adjacente  = $row['fl_danos_vegetacao_adjacente'];
    			$this->view->fl_area_atingida              = $row['fl_area_atingida'];
    			$this->view->fl_indenizacao_fitossanitaria = $row['fl_indenizacao_fitossanitaria'];
    			$this->view->ds_coordenadas_geograficas    = $row['ds_coordenadas_geograficas'];
    
    		} else {
                $arrayAssintura = array();
                $arrayAssintura['fl_assinatura_regulador'] = $row['fl_assinatura_regulador'];
                $arrayAssintura['fl_assinatura_segurado']  = $row['fl_assinatura_segurado'];
                $this->view->formAssinatura->populate($arrayAssintura);    		    
    		}
        }
	}
	
	public function formdadosquadraAction() {
		$this->getHelper('layout')->disableLayout();
		
		$idItem = $this->getRequest()->getParam('idItem');
		$this->view->idItem = $idItem;
		$this->view->idRevistoria = $this->getRequest()->getParam('idRevistoria');
		$this->view->idProposta = $this->getRequest()->getParam('idProposta');
		$this->view->idLaudoFinal = $this->getRequest()->getParam('idLaudoFinal');
		$this->view->idProcesso  = $this->getRequest()->getParam('idProcesso');
		$this->view->idCobertura  = $this->getRequest()->getParam('idCobertura');
		$this->view->idVistoria  = $this->getRequest()->getParam('idVistoria');
		$this->view->userVistoriaMesmaEmpresa = $this->getRequest()->getParam('userVistoriaMesmaEmpresa');
		
		$ModelVistoriasLaudos = new Sistema_Model_VistoriasLaudosFinais();
		$this->view->existeVinculo = $ModelVistoriasLaudos->existeVinculo($this->getRequest()->getParam('idVistoria'), $this->getRequest()->getParam('idLaudoFinal'));
		
		$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();
		
        /* verifica se a proposta possui a cobertura de proteção fitossanitária contratada */
        $PropostasCoberturas = new Seguro_Model_PropostasCoberturas();
        $this->view->hasCoberturaFitossanitaria = $PropostasCoberturas->hasCoberturaByIdPropostaDsChave($this->getRequest()->getParam('idProposta'), 'COB_PROTECAO_FITO');
		
    	if ($this->getRequest()->getParam('idLaudoFinal')) {
    	    
	    	$Safra = new Produto_Model_Safras();
			$nomeModel = $Safra->getSafraModel($this->getRequest()->getParam('idProposta'),'LaudosFinaisUvaGranizoItensSegurados');
			$LaudoFinalItemSegurado = new $nomeModel;
			
			$rs = $LaudoFinalItemSegurado->find($this->getRequest()->getParam('idLaudoFinal'), $idItem);

			$timestampVistoria = $rs['dt_vistoria'];
			$this->view->item['vl_percent_colhido']          = number_format($rs['vl_percent_colhido'], 2, '.', '');
			$this->view->item['vl_percent_perdas']           = number_format($rs['vl_percent_perdas'], 2, '.', '') . '%';
			$this->view->item['nr_amostras']                 = $rs['nr_amostras'];
			$this->view->item['ds_observacao']               = $rs['ds_observacao'];
			$this->view->item['vl_area_sinistrada']          = $rs['vl_area_sinistrada'];
			$this->view->item['nr_cachos_percent_perda_0']   = $rs['nr_cachos_percent_perda_0'] ? $rs['nr_cachos_percent_perda_0'] : '';
		  	$this->view->item['nr_cachos_percent_perda_5']   = $rs['nr_cachos_percent_perda_5'] ? $rs['nr_cachos_percent_perda_5'] : '';
		  	$this->view->item['nr_cachos_percent_perda_10']  = $rs['nr_cachos_percent_perda_10'] ? $rs['nr_cachos_percent_perda_10'] : '';
		  	$this->view->item['nr_cachos_percent_perda_20']  = $rs['nr_cachos_percent_perda_20'] ? $rs['nr_cachos_percent_perda_20'] : '';
		  	$this->view->item['nr_cachos_percent_perda_30']  = $rs['nr_cachos_percent_perda_30'] ? $rs['nr_cachos_percent_perda_30'] : '';
		  	$this->view->item['nr_cachos_percent_perda_40']  = $rs['nr_cachos_percent_perda_40'] ? $rs['nr_cachos_percent_perda_40'] : '';
		  	$this->view->item['nr_cachos_percent_perda_50']  = $rs['nr_cachos_percent_perda_50'] ? $rs['nr_cachos_percent_perda_50'] : '';
		  	$this->view->item['nr_cachos_percent_perda_60']  = $rs['nr_cachos_percent_perda_60'] ? $rs['nr_cachos_percent_perda_60'] : '';
		  	$this->view->item['nr_cachos_percent_perda_70']  = $rs['nr_cachos_percent_perda_70'] ? $rs['nr_cachos_percent_perda_70'] : '';
		  	$this->view->item['nr_cachos_percent_perda_80']  = $rs['nr_cachos_percent_perda_80'] ? $rs['nr_cachos_percent_perda_80'] : '';
		  	$this->view->item['nr_cachos_percent_perda_90']  = $rs['nr_cachos_percent_perda_90'] ? $rs['nr_cachos_percent_perda_90'] : '';
		  	$this->view->item['nr_cachos_percent_perda_100'] = $rs['nr_cachos_percent_perda_100'] ? $rs['nr_cachos_percent_perda_100'] : '';
		  	$this->view->item['nr_total_cachos']             = $rs['nr_total_cachos'];
		  	$this->view->item['fl_pre_floracao']             = $rs['fl_pre_floracao'];
		  	$this->view->item['fl_pos_floracao']             = $rs['fl_pos_floracao'];
		  	$this->view->item['ds_coordenadas_geograficas']  = $rs['ds_coordenadas_geograficas'];
		  	
		  	if($this->view->hasCoberturaFitossanitaria) {
		  	    $this->view->item['fl_indenizacao_fitossanitaria']  = $rs['fl_indenizacao_fitossanitaria'];
		  	}

			$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->view->idLaudoFinalItemSegurado = $rs['id_laudo_final_is'];
			if ($rs['id_laudo_final_is']) {
				$ItemSeguradoFuncionario = new Sinistro_Model_LaudosFinaisItensSeguradosFuncionarios();
				$this->view->vistoriadores = $ItemSeguradoFuncionario->getVistoriadoresByItemSegurado($rs['id_laudo_final_is']);

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

	public function formquadrasnaosalvasAction() {
		$this->getHelper('layout')->disableLayout();
		
		$params = $this->getRequest()->getParams();
		
		$idItem = $this->getRequest()->getParam('idItem');
		$idItensSelecionados = $this->getRequest()->getParam('idItensSelecionados');
		
    	$Safra = new Produto_Model_Safras();
		$nomeModel = $Safra->getSafraModel($params['idProposta'],'LaudosFinaisUvaGranizoItensSegurados');
		$ItensUvaGranizo = new $nomeModel;
		if ($params['idRevistoria']) {
			$this->view->itensSegurados = $ItensUvaGranizo->getItensRevistoriadosNaoSalvos($params['idProposta'], $params['idItem'], $params['idRevistoria'], $params['idItensSelecionados']);
		} else {
			if ($params['idItensSelecionados']) {
				$this->view->itensSegurados = $ItensUvaGranizo->getItensNaoSalvos($params['idProposta'], $params['idItensSelecionados'], $params['idItem'], $params['idLaudoFinal']);
			} else {
				$this->view->itensSegurados = array();
			}
		}
	}

	public function calculapercentuaisAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		
		try {
    		$data = array();
            $amostras = array();
            $percentuais = array();
                
            $Safra = new Produto_Model_Safras();
            $nomeModel = $Safra->getSafraModel($this->getRequest()->getParam('idProposta'),'LaudosFinaisUvaGranizoItensSegurados');
            $Safra13ItemSegurado = new $nomeModel;
            
            $idItem = $this->getRequest()->getParam('idItem');
            $vlPercentColhido = $this->getRequest()->getParam('vl_percent_colhido');
            
            $dtVistoria = Agro_Util::formatDate($this->getRequest()->getParam('dt_vistoria') .' '. $this->getRequest()->getParam('hr_vistoria') .' '. $this->getRequest()->getParam('min_vistoria'), 'yyyy-MM-dd HH:mm:ss');
                       
            $vlMaiorPercentColhidoLF = $Safra13ItemSegurado->getMaiorPercentColhidoLF($this->getRequest()->getParam('idProposta'), $this->getRequest()->getParam('idCobertura'), $idItem, $dtVistoria);
            $vlMaiorPercentColhidoRevistoria = $Safra13ItemSegurado->getMaiorPercentColhidoRevistoria($this->getRequest()->getParam('idProposta'), $this->getRequest()->getParam('idCobertura'), $idItem, $dtVistoria);
    
            $percentColhidos = array();
            $percentColhidos[] = $vlMaiorPercentColhidoLF ? $vlMaiorPercentColhidoLF : 0; 
            $percentColhidos[] = $vlMaiorPercentColhidoRevistoria ? $vlMaiorPercentColhidoRevistoria : 0; 
            rsort($percentColhidos);
    
            $data['error'] = null;
			
            if ($percentColhidos[0] > $vlPercentColhido) {
				$response = array('status' => false, 'msg' => '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;
                }
				$response = array('status' => true, 'msg' => 'Dados salvos e calculados com sucesso!');
            }

		} catch (Exception $e) {
		    $response = array('status' => false, 'msg' => $e->getTraceAsString());    
		}
		
		$this->getResponse()->setBody(Zend_Json::encode($response));
	}

	public function verificaAvisos($dados, $step = null) {

		try {
			$Db = Agro_Db_Table_Abstract::getDefaultAdapter();
			$Db->beginTransaction();

			$AvisoSinistro = new Sinistro_Model_AvisosSinistro();
			$avisos = $AvisoSinistro->getAvisosByCoberturasSemVistPreliminar($dados['id_proposta'], $dados['id_cobertura']);
			if (count($avisos) > 0) {
				$ItemSegurado = new Sinistro_Model_LaudosFinaisItensSegurados();
				$rs = $ItemSegurado->getMenorDtVistoria($dados['id_laudo_final']);
				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'] == $dados['id_vistoria']) {
							if ($dtVistoria < $dtSinistro) {
								$this->errorMessage = true;
								throw new Exception('A data da vistoria não pode ser anterior a data do sinistro.');
							}
						}
					}
				}
			}
			$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 safra13.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) {
		$SinistroItensSegurados = new Sinistro_Model_LaudosFinaisItensSegurados();
		$VistoriaItensSegurados = new Sistema_Model_VistoriasItensSegurados();
		$Safra = new Produto_Model_Safras();
		
		//try {
			Agro_Db_Table_Abstract::getDefaultAdapter()->beginTransaction();
 
			$arrayIdsItens = array();
			$cont = 1;
	
			$nomeModel = $Safra->getSafraModel($post['idProposta'],'LaudosFinaisUvaGranizoItensSegurados');
			$Safra13ItensSegurados = new $nomeModel;
			
			foreach ($post as $key => $idItem) {

				if ((strpos($key, 'item-') > -1) || ($key == 'idItem')) {

					/**
					 * sistema.vistorias_itens_segurados
					 */
					$itens = array();
					$itens['id_vistoria']      = $post['idVistoria'];
					$itens['id_item_segurado'] = $idItem;
					$VistoriaItensSegurados->save($itens);
		
					/**
					 * sinistro.laudos_finais_itens_segurados
					 */
					if ($key != 'idItem') {
						
					   	$rs = $SinistroItensSegurados->find($post['idLaudoFinal'], $idItem);
					   	
					   	if ($rs['fl_nao_vistoriada']) {
						   	$SinistroItensSegurados->delete($post['idLaudoFinal'], $idItem);
						   	
					   	} else {
							$rs = $Safra13ItensSegurados->find($post['idLaudoFinal'], $idItem);
							
							if ($rs['id_laudo_final_item_segurado']) {
								$SinistroItensSegurados->deleteItem($rs['id_laudo_final_item_segurado']);
								
							}
					   	}
					}		
					
					$dtVistoria = Agro_Util::formatDate($this->getRequest()->getParam('dt_vistoria') .' '. $this->getRequest()->getParam('hr_vistoria') .' '. $this->getRequest()->getParam('min_vistoria'), 'yyyy-MM-dd HH:mm:ss');
					
					$itens = array();
					$itens['id_laudo_final']          = $post['idLaudoFinal'];
					$itens['id_item_segurado']        = $idItem;
					$itens['dt_vistoria']             = $dtVistoria;  
					$itens['vl_percent_perdas']       = $percentuais['percentual_perda'];
					$itens['vl_percent_colhido']      = $post['vl_percent_colhido'];
					$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 {
					    $LaudoFinalItemSegurado = $SinistroItensSegurados->find($post['idLaudoFinal'], $idItem);
					    
                        if($LaudoFinalItemSegurado['id']) {
                            $idLaudoFinalItemSegurado = $LaudoFinalItemSegurado['id'];
                        }
                         
						$SinistroItensSegurados->update($itens, 'id = ' . $idLaudoFinalItemSegurado);
						$arrayIdsItens[0]['itemPrincipal']['idItemSegurado'] = $idItem;
					}

					if ($post['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 = ' . $rs['id_laudo_final_item_segurado']);
						}
					}

					/****************************************************/
					// Tabela safra13.laudos_finais_uva_granizo_itens_segurados
					/***************************************************/
					$Safra13ItensSegurados->delete($idLaudoFinalItemSegurado);
					
					$itens = array();
					$itens['id_laudo_final_item_segurado'] = $idLaudoFinalItemSegurado;
					$itens['nr_amostras']                  = $post['nr_amostras'];
					$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'];
				  	$itens['ds_coordenadas_geograficas']   = $post['ds_coordenadas_geograficas'];
				  	
				  	if($post['fl_indenizacao_fitossanitaria'] == 'S') {
				  	    $itens['fl_indenizacao_fitossanitaria'] = true;
				  	}
				  	
				  	if ($post['fl_floracao'] == "pre") {
					  	$itens['fl_pre_floracao'] = 1;
				  	} else if ($post['fl_floracao'] == "pos") {
					  	$itens['fl_pos_floracao'] = 1;
				  	}

				   	$Safra13ItensSegurados->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);
						}
					}
				}
			}
			Agro_Db_Table_Abstract::getDefaultAdapter()->commit();
			
			return $arrayIdsItens;
		//} catch (Exception $e) {
		//	Agro_Db_Table_Abstract::getDefaultAdapter()->rollBack();
		//	echo $e->getTraceAsString();
		//}
	}
	
	public function save(array $post) {
		$Db = Agro_Db_Table_Abstract::getDefaultAdapter(); 
		$Db->beginTransaction();
		
		$SinistroItemSegurado = new Sinistro_Model_LaudosFinaisItensSegurados();
		$LaudosFinais = new Sinistro_Model_LaudosFinais();
		$Safra = new Produto_Model_Safras();
		
		$nomeModel = $Safra->getSafraModel($post['idProposta'],'LaudosFinaisUvaGranizo');
		$Safra13LaudoFinal = new $nomeModel;
		
		$nomeModel = $Safra->getSafraModel($post['idProposta'],'LaudosFinaisUvaGranizoItensSegurados');
		$Safra13ItensSegurados = new $nomeModel;
		
		try {

			/**
			 * sinistro.laudos_finais
			 */
			$laudo = array();
			$laudo['id'] = $post['idLaudoFinal'];
			$laudo['id_proposta'] = $post['idProposta'];
			$laudo['id_processo'] = $post['idProcesso'];
			$laudo['id_cobertura'] = $post['idCobertura'];
			$laudo['id_vistoria'] = $post['idVistoria'];
			
			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;
	  			
	  			if($post['fl_evento_nao_constatado']) {
                    $laudo['fl_assinatura_regulador']  = $post['fl_assinatura_regulador'];
                    $laudo['fl_assinatura_segurado']   = $post['fl_assinatura_segurado'];
                    
	  			} else {
                    $laudo['fl_assinatura_regulador']  = true;
                    $laudo['fl_assinatura_segurado']   = true;
	  			}

	  			$laudo['fl_area_atingida']         = $post['fl_area_atingida'];
	  			$laudo['ds_observacao']            = $post['ds_observacao'];
			}
			
			$laudo['fl_area_atingida'] = $post['fl_area_atingida'];
			
    		if($post['itens_segurados_selecionados']) {
    		    $laudo['itens_segurados_selecionados'] = $post['itens_segurados_selecionados'];
    		}
    		
		    if($post['id_motivo_quadra_nao_vistoriada']) {
    		    $laudo['id_motivo_quadra_nao_vistoriada'] = $post['id_motivo_quadra_nao_vistoriada'];
    		}
			
 			$LaudosFinais->save($laudo);
 			
			if ($post['fl_realizada'] != 'N') {
				
			    if (!$post['fl_evento_nao_constatado'] && $this->getRequest()->isPost()) {
			    	/**
			    	 * sinistro.laudos_finais_itens_segurados
			    	 */
					foreach ($post as $key => $idItem) {
						if (strpos($key, 'fl_indenizacao_fitossanitaria_item-') > -1) {
							
							$item = array();
							$item['fl_indenizacao_fitossanitaria'] = 1;
							
							$rs = $SinistroItemSegurado->find($post['idLaudoFinal'], $idItem);
							$Safra13ItensSegurados->update($item, 'id_laudo_final_item_segurado = ' . $rs['id']);
						}
					}
					
               		$Safra13LaudoFinal->delete($post['idLaudoFinal'], "id_laudo_final");
                	
					$laudo = array();
					$laudo['id_laudo_final']                = $post['idLaudoFinal'];
					$laudo['fl_acompanhado_vento']          = $post['fl_acompanhado_vento'] == 'S' ? 1 : 0;
					$laudo['fl_acompanhado_chuva']          = $post['fl_acompanhado_chuva'] == 'S' ? 1 : 0;
					$laudo['ds_direcao_evento']             = $post['ds_direcao_evento'];
					$laudo['ds_diametro_medio_granizo']     = $post['ds_diametro_medio_granizo'];
					$laudo['ds_coordenadas_geograficas']    = $post['ds_coordenadas_geograficas'];
					$laudo['ds_estadio_cultura']            = $post['ds_estadio_cultura'];
					$laudo['ds_aspectos_gerais_cultura']    = $post['ds_aspectos_gerais_cultura'];
					$laudo['fl_indenizacao_fitossanitaria'] = $post['fl_indenizacao_fitossanitaria'] == 'S' ? 1 : 0;
					$laudo['fl_area_atingida']              = $post['fl_area_atingida'];
					$laudo['fl_danos_folhas']               = $post['fl_danos_folhas'] ? 1 : 0;
					$laudo['fl_danos_ramos']                = $post['fl_danos_ramos'] ? 1 : 0;
					$laudo['fl_danos_flores']               = $post['fl_danos_flores'] ? 1 : 0;
					$laudo['fl_danos_frutos']               = $post['fl_danos_frutos'] ? 1 : 0;
					$laudo['fl_danos_vegetacao_adjacente']  = $post['fl_danos_vegetacao_adjacente'] ? 1 : 0;
					
					$Safra13LaudoFinal->insert($laudo);					
					
				}
			} else {
				if ($post['idLaudoFinal']) {
					/****************************************************/
					// Tabela safra13.laudos_finais_uva_granizo
					/***************************************************/
					$nomeModel = $Safra->getSafraModel($post['idProposta'],'LaudosFinaisUvaGranizo');
					$LaudoUvaGranizo = new $nomeModel;
					$LaudoUvaGranizo->delete($post['idLaudoFinal']);		

					/****************************************************/
					// Tabela sinistro.laudos_finais_itens_segurados
					/***************************************************/
					$SinistroItemSegurado = new Sinistro_Model_LaudosFinaisItensSegurados();
					$SinistroItemSegurado->delete($post['idLaudoFinal']);
					
					/****************************************************/
					// Tabela sistema.vistorias_itens_segurados
					/***************************************************/
					$VistoriaItensSegurados = new Sistema_Model_VistoriasItensSegurados();
					$VistoriaItensSegurados->delete($post['idVistoria']);
				}				
			}

			$Db->commit();
			
		} catch (Exception $e) {
			$this->errorMessage = true;
			$Db->rollBack();
			
			throw new Exception($e->getMessage());
		}
	}

	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'];
			$this->view->ds_coordenadas_geograficas  = $post['ds_coordenadas_geograficas'];
	
			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'];
			}

		}
		$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>';
			}
		}
		$combo .= '<option value="0">Vistoria foi realizada</option>';
		$data['motivos'] = $combo;
		if ($params['id_laudo_final']) {
	    	$Safra = new Produto_Model_Safras();
			$nomeModel = $Safra->getSafraModel($params['id_proposta'],'LaudosFinaisUvaGranizoItensSegurados');
			$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]['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'] != '' ? $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]['fl_indenizacao_fitossanitaria'] = $item['fl_indenizacao_fitossanitaria'];
				}
			}
		}
		$LaudoFinal = new Sinistro_Model_LaudosFinais();
		if ($params['id_revistoria']) {
			$data['itensSegurados'] = $LaudoFinal->getItensRevistoria($params['id_proposta'], $params['id_revistoria']);
		} else {
			$data['itensSegurados'] = $LaudoFinal->getItensDisponiveisLaudoFinal($params['id_proposta']);
		}
		
		$this->getResponse()->setBody(Zend_Json::encode($data));
	}
	
	public function getitensvistoriaAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		
		$params = $this->getRequest()->getParams();

		$LaudoFinal = new Sinistro_Model_LaudosFinais();
		$data = $LaudoFinal->getItensDisponiveisLaudoFinal($params['id_proposta']);

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

	public function savedadosvistoriaAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		
		$params = $this->getRequest()->getParams();
		
		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, 'yyyy-MM-dd HH:mm:ss');
			if ($params['idRevistoria']) {
				$Item = new Sinistro_Model_AvisosEncerramentoItensSegurados();
				$hasDtEncerramento = $Item->hasDtEncerramentoColheita($params['idProposta'], $dtVistoria, $idItem);
				if ($hasDtEncerramento) {
					$result['status'] = false;
				}
			}

			$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']    = $params['idLaudoFinal'];
			$itens['id_item_segurado']  = $idItem;
			$itens['dt_vistoria']       = $dtVistoria;	

            $Safra = new Produto_Model_Safras();
            $nomeModel = $Safra->getSafraModel($params['idProposta'],'LaudosFinaisUvaGranizoItensSegurados');
            $Safra13ItensSegurados = new $nomeModel;
			
		   	$rs = $SinistroItensSegurados->find($params['idLaudoFinal'], $idItem);
			$idLaudoFinalItemSegurado = '';
		   	if ($rs['id']) {
			   	$SinistroItensSegurados->update($itens, 'id = ' . $rs['id']);
			   	$idLaudoFinalItemSegurado = $rs['id'];
		   	} else {
		   	    
                $itens['vl_percent_perdas'] = 0;
                $itens['fl_nao_vistoriada'] = 0;
                $itens['id_motivo_quadra_nao_vistoriada'] = null;
                $itens['fl_assinatura_regulador'] = 0;
                $itens['fl_assinatura_segurado'] = 0;
                $itens['ds_observacao'] = '';
		   	    
			   	$LaudoFinalItemSegurado = $SinistroItensSegurados->insert($itens);
				
				$rs = $SinistroItensSegurados->find($LaudoFinalItemSegurado['id_laudo_final'], $idItem);
				$idLaudoFinalItemSegurado = $rs['id'];

                /****************************************************/
                // Tabela safra13.laudos_finais_uva_granizo_itens_segurados
                /****************************************************/
                $Safra13ItensSegurados->delete($idLaudoFinalItemSegurado);
                $itens = array();
                $itens['id_laudo_final_item_segurado'] = $idLaudoFinalItemSegurado; 
                $itens['nr_amostras'] = 0;
                $itens['vl_area_sinistrada'] = 0;
                
                $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();
			}
			 echo $e->getMessage().'<br>';
			 echo '<pre>';
			 echo $e->getTraceAsString();
			 echo '</pre>';
		}
	}
   
    public function insereitemAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();
        
        $params = $this->getRequest()->getParams();
        
        $Safra = new Produto_Model_Safras();
        $ModelLaudoFinal = new Sinistro_Model_LaudosFinaisItensSegurados();
        
        $nomeModel = $Safra->getSafraModel($params['id_proposta'],'LaudosFinaisUvaGranizoItensSegurados');
        $UvaGranizoItensSegurados = new $nomeModel;
         
        $ModelLaudoFinal->insert(
            array("id_laudo_final"=>$params['id_laudo_final'], 
                  "id_item_segurado"=>$params['id_item_segurado']
            )
        );
        
        return true;
    }
    
    public function deleteitensAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();
        
        $params = $this->getRequest()->getParams(); 
                
        $VistoriaItensSegurados = new Sistema_Model_VistoriasItensSegurados();
        $VistoriaItensSegurados->delete($params['id_vistoria']);
        
        $SinistroItensSegurados = new Sinistro_Model_LaudosFinaisItensSegurados();
        $SinistroItensSegurados->delete($params['id_laudo_final']);
        
        return true;
    }
 
    public function loaditensseguradoslaudofinalAction() {
        $this->getHelper('layout')->disableLayout();
        
        $params = $this->getRequest()->getParams();
        
        $ModelLaudosFinais = new Sinistro_Model_LaudosFinais();
        $this->view->data = array();
        $this->view->data['itens_segurados'] = $ModelLaudosFinais->getItensSeguradosLaudoFinal($params['id_proposta'], $params['id_cobertura'],$params['id_vistoria'], $params['id_laudo_final']);
        $this->view->data['id_laudo_final'] = $params['id_laudo_final'];
        $this->view->data['id_proposta'] = $params['id_proposta'];
        $this->view->data['id_processo'] = $params['id_processo'];
    }
	
}