<?

class Safra13_LfuvageadaController extends Agro_Controller_Action{
    
    public function init() {
        $this->session = new Zend_Session_Namespace('laudo_final');
        $this->session->idVistoria = $this->session->idRevistoria ? $this->session->idRevistoria : $this->session->idVistoria;
        
        $this->view->title = "Sinistro » Laudo Final Uva - Geada";
        
        $this->view->back = "/sinistro/processo/view/id/".$this->getRequest()->getParam('id_processo');
        
    }

    public function formAction() {

        $params = $this->getRequest()->getParams();
        
        $this->view->idRevistoria = $params['id_revistoria'];
        $this->view->idLaudoFinal = $params['id_laudo_final'];
        $this->view->idCobertura = $params['id_cobertura'];
        $this->view->idVistoria = $params['id_vistoria'];
        $this->view->idProposta = $params['id_proposta'];
        $this->view->idProcesso = $params['id_processo'];
        
        $this->session->idRevistoria = $params['id_revistoria'];
        $this->session->idLaudoFinal = $params['id_laudo_final'];
        $this->session->idCobertura = $params['id_cobertura'];
        $this->session->idVistoria = $params['id_vistoria'];
        $this->session->idProposta = $params['id_proposta'];
        $this->session->idProcesso = $params['id_processo'];
        
        if ($params['id_laudo_final']){
            $this->view->idLaudoFinal = $params['id_laudo_final'];
            $this->session->idLaudoFinal = $params['id_laudo_final'];
        
        } else {        
            $this->view->idLaudoFinal = $this->saveRegLaudoFinal($params);
            $this->session->idLaudoFinal = $this->view->idLaudoFinal;
            $this->_redirect($this->getRequest()->getRequestUri()."/id_laudo_final/".$this->view->idLaudoFinal);
        }
        
        if ($this->session->idRevistoria){
            $this->view->title .= " » Formulário de Revistoria";
            
        } else {
            $this->view->title .= " » Formulário";
            
        }

        $this->view->formDadosVistoriaLF = new Sistema_Form_DadosVistoriaLaudoFinal2;
        $this->view->formAssinatura = new Sinistro_Form_AssinaturaLaudoPreliminar;

        $this->view->listDadosItens = array();
        $this->view->vistoriadores = 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;
		
		$this->view->jQuery()->addJavascriptFile('/resources/javascript/sinistro/sinistro_laudo_final.js');
        
        $RevistoriaVistoria = new Sistema_Model_RevistoriasVistorias();
        $this->session->hasRevistoria = $RevistoriaVistoria->hasRevistoria($this->session->idVistoria);
        $this->view->hasRevistoria = $this->session->hasRevistoria;
        
        if ($this->getRequest()->isPost()) {

            
            $errorMsg = '';
            if ($this->getRequest()->getParam('fl_realizada') != 'N') {
                $formAssinatura = $this->view->formAssinatura;
                $forms = array($formAssinatura);
                
                $errorMsg = $this->getAllFormErros($forms, $this->getRequest()->getPost(), array());
            }
            
            if ($errorMsg) {
                
                $this->view->formDadosVistoriaLF->populate($this->getRequest()->getParams());
                $this->view->formAssinatura->populate($this->getRequest()->getParams());
                $this->populaCampos($this->getRequest()->getParams());
                $this->view->showMessage($errorMsg, 'error');
            } else {
                    
                $this->save($this->getRequest()->getParams());
            }
            
        } else if ($this->session->idLaudoFinal) {
            
            $this->populaDadosTela();
            
        }

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

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

    public function populaDadosTela() {
        
        $row = $this->getRow();
        
        if ($row) {
            $this->view->formDadosVistoriaLF->populate($row);
            $this->session->dtInicioVistoria = $row['dt_inicio'];           
            $this->view->formAssinatura->populate($row);
        }

        $VistoriaFuncionario = new Sistema_Model_VistoriasFuncionarios();
        $this->view->vistoriadores = $VistoriaFuncionario->getVistoriadoresByVistoria($this->session->idVistoria);

        $this->view->ds_observacao = $row['ds_observacao'];
    } 

    public function getRow() {
        
        
        if ($this->session->idLaudoFinal) {
            
            $Safra = new Produto_Model_Safras();
            $nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisUvaGeada');
            $Safra = new $nomeModel;
            
            $row = $Safra->getDataLaudoFinal($this->session->idLaudoFinal);

            return $row;
        }
    }

    public function calculapercentuaisAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();
        
        $data = array();

        $Safra = new Produto_Model_Safras();
        $nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisUvaGeadaItensSegurados');
        $Safra13ItemSegurado = new $nomeModel;
    
        $post = $this->getRequest()->getParams();
        
        foreach ($post['itens_segurados'] as $value) {
            $idItem = $value;
            
            $vlMaiorPercentColhidoLF = $Safra13ItemSegurado->getMaiorPercentColhidoLF($this->session->idProposta, $this->session->idCobertura, $idItem, Agro_Util::formatDate($post['dt_inicio'], 'yyyy-MM-dd'));
            $vlMaiorPercentColhidoRevistoria = $Safra13ItemSegurado->getMaiorPercentColhidoRevistoria($this->session->idProposta, $this->session->idCobertura, $idItem, Agro_Util::formatDate($post['dt_inicio'], 'yyyy-MM-dd'));
    
            $percentColhidos = array();
            $percentColhidos[] = $vlMaiorPercentColhidoLF ? $vlMaiorPercentColhidoLF : 0; 
            $percentColhidos[] = $vlMaiorPercentColhidoRevistoria ? $vlMaiorPercentColhidoRevistoria : 0; 
            rsort($percentColhidos);

            $data['error'] = null;
            if ($percentColhidos[0] > $post['vl_percent_colhido-' . $idItem]) {
                $data['error'] = 'O percentual colhido não pode ser menor do que no laudo anterior (' . $percentColhidos[0] . '%) no item ' . $post['numero_item-' . $idItem] . '.';
                break;          
            } else {
                $nrTotalBrotosSCacho = $post['nr_total_brotos_s_cacho-' . $idItem];             
                $nrTotalBrotosCCacho = $post['nr_total_brotos_c_cacho-' . $idItem];             
    
                if ($nrTotalBrotosSCacho != '' && $nrTotalBrotosCCacho != '') {
                    
                    $nrTotalBrotos = $post['nr_total_brotos-' . $idItem];           
                    $vlPercentBrotosSCacho = $post['vl_percent_brotos_s_cacho-' . $idItem];             
    
                    $vlPercentDano = round((($nrTotalBrotos - (($nrTotalBrotos * 25) / 100)) - ($nrTotalBrotosCCacho)) * 100 / ($nrTotalBrotos - (($nrTotalBrotos * 25) / 100)), 2);
                                    
                    $data['itens'][$idItem]['vlPercentDano'] = number_format($vlPercentDano, 2, '.', '');
                }
            }
        }

        $this->getResponse()->setBody(Zend_Json::encode($data));
    }
    
    public function save(array $post) {
        
        try {
            $Db = Agro_Db_Table_Abstract::getDefaultAdapter();
            $Db->beginTransaction();

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

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

                $VistoriasLaudosFinais->insert($vistoriaLaudo);
            }

            if ($post['fl_realizada'] != 'N') {
                /****************************************************/
                // Tabela safra13.laudos_finais_uva_geada
                /***************************************************/
                $Safra = new Produto_Model_Safras();
                $nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisUvaGeada');
                $LaudoUvaGeada = new $nomeModel;
                $LaudoUvaGeada->delete($idLaudo);
    
                $uvaGeada = array();
                $uvaGeada['id_laudo_final'] = $idLaudo;
                $LaudoUvaGeada->insert($uvaGeada);
    
                /****************************************************/
                // Tabela sistema.vistorias_itens_segurados
                /***************************************************/
                $VistoriaItensSegurados = new Sistema_Model_VistoriasItensSegurados();
                $VistoriaItensSegurados->delete($this->session->idVistoria);
    
                /****************************************************/
                // Tabela sinistro.laudos_finais_itens_segurados
                /***************************************************/
                $SinistroItensSegurados = new Sinistro_Model_LaudosFinaisItensSegurados();
                if ($this->session->idLaudoFinal) {
                    $SinistroItensSegurados->delete($this->session->idLaudoFinal);
                }

                if (is_array($post['itens_segurados']) && count($post['itens_segurados']) > 0) {
                    $Safra = new Produto_Model_Safras();
                    $nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisUvaGeadaItensSegurados');
                    $Safra13ItensSegurados = new $nomeModel;
                    
                    foreach ($post['itens_segurados'] as $value) {
                        
                        $idItem = $value;
                        
                        if ($post['fl_nao_vistoriada-' . $idItem] || (!$post['fl_nao_vistoriada-' . $idItem] && $post['vl_percent_dano-' . $idItem])) {
                        
                            /****************************************************/
                            // Tabela sinistro.vistorias_itens_segurados
                            /***************************************************/
                            $itens = array();
                            $itens['id_vistoria']      = $this->session->idVistoria;
                            $itens['id_item_segurado'] = $idItem;
                            $VistoriaItensSegurados->insert($itens);
                                        
                            $itens = array();
                            $itens['id_laudo_final']    = $idLaudo;
                            $itens['id_item_segurado']  = $idItem;
                            $itens['dt_vistoria']       = Agro_Util::formatDate($this->session->dtInicioVistoria, 'yyyy-MM-dd');
                            $itens['vl_percent_perdas'] = $post['vl_percent_dano-' . $idItem] ? $post['vl_percent_dano-' . $idItem] : null;
                            $itens['vl_percent_colhido']= $post['vl_percent_colhido-' . $idItem];
                            $itens['fl_nao_vistoriada'] = $post['fl_nao_vistoriada-' . $idItem] ? 1 : 0;
                            $itens['id_motivo_quadra_nao_vistoriada'] = $post['id_motivo_quadra_nao_vistoriada-' . $idItem] ? $post['id_motivo_quadra_nao_vistoriada-' . $idItem] : null;
        
                            $idLaudoFinalItemSegurado = $SinistroItensSegurados->insert($itens);    
            
                            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-' . $idItem] == 'S' ? 1 : 0;
                                $ItemRevistoria->insert($itens);
                            }
                            
                            if (!$post['fl_nao_vistoriada-' . $idItem] && $post['vl_percent_dano-' . $idItem]) {
                                /****************************************************/
                                // Tabela safra13.laudos_finais_uva_geada_itens_segurados
                                /***************************************************/
                                $itens = array();
                                $itens['id_laudo_final_item_segurado'] = $idLaudoFinalItemSegurado; 
                                $itens['nr_total_brotos_s_cacho']      = $post['nr_total_brotos_s_cacho-' . $idItem];
                                $itens['nr_total_brotos_c_cacho']      = $post['nr_total_brotos_c_cacho-' . $idItem];
                                $itens['vl_percent_brotos_s_cacho']    = $post['vl_percent_brotos_s_cacho-' . $idItem];
                                $itens['vl_percent_dano']              = $post['vl_percent_dano-' . $idItem];
                                $Safra13ItensSegurados->insert($itens);
                            }
                        }
                    }
                }
            } else {
                if ($this->session->idLaudoFinal) {
                    /****************************************************/
                    // Tabela safra13.laudos_finais_uva_geada
                    /***************************************************/
                    $Safra = new Produto_Model_Safras();
                    $nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisUvaGeada');
                    $LaudoUvaGeada = new $nomeModel;
                    $LaudoUvaGeada->delete($this->session->idLaudoFinal);
    
                    /****************************************************/
                    // Tabela sistema.vistorias_itens_segurados
                    /***************************************************/
                    $VistoriaItensSegurados = new Sistema_Model_VistoriasItensSegurados();
                    $VistoriaItensSegurados->delete($this->session->idVistoria);
        
                    /****************************************************/
                    // Tabela sinistro.laudos_finais_itens_segurados
                    /***************************************************/
                    $SinistroItensSegurados = new Sinistro_Model_LaudosFinaisItensSegurados();
                    $SinistroItensSegurados->delete($this->session->idLaudoFinal);
                }               
            }
            if (!$this->session->idLaudoFinal) {
                $this->session->idLaudoFinal = $idLaudo;
            }
            
            $Db->commit();
            
            $this->populaDadosTela();
            if (!$this->view->idLaudoFinal) {
                $this->view->idLaudoFinal = $this->session->idLaudoFinal;
            }
            $this->view->showMessage(MSG_SUCCESS, 'success');
        } catch (Exception $e) {
            $Db->rollBack();
            $this->populaCampos($post);
            $this->view->showMessage(MSG_ERROR."<br><br>".$e->getMessage(), 'error');
        }
    }

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

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

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

    public function getitenslaudofinalAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();
        
        $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,'LaudosFinaisUvaGeadaItensSegurados');
            $LaudoItens = new $nomeModel;
            $arrayLaudoItem = $LaudoItens->getItensByLaudo($this->session->idLaudoFinal);

            if (count($arrayLaudoItem) > 0) {
                foreach ($arrayLaudoItem as $item) {
                    $id = $item['id'];

                    $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_area']                         = $item['vl_area'];
                    $data['itensLaudo'][$id]['nr_item_segurado']                = $item['nr_item_segurado'];
                    $data['itensLaudo'][$id]['ds_item_segurado']                = $item['ds_item_segurado'];
                    $data['itensLaudo'][$id]['ds_nome_variedade']               = $item['ds_nome_variedade'];
                    $data['itensLaudo'][$id]['nr_total_brotos']                 = $item['nr_total_brotos'];
                    $data['itensLaudo'][$id]['nr_total_brotos_c_cacho']         = $item['nr_total_brotos_c_cacho'] ? $item['nr_total_brotos_c_cacho'] : '';
                    $data['itensLaudo'][$id]['nr_total_brotos_s_cacho']         = $item['nr_total_brotos_s_cacho'] ? $item['nr_total_brotos_s_cacho'] : '';
                    $data['itensLaudo'][$id]['vl_percent_dano']                 = $item['vl_percent_dano'] ? $item['vl_percent_dano'] : '';
                    $data['itensLaudo'][$id]['vl_percent_colhido']              = $item['vl_percent_colhido'] ? $item['vl_percent_colhido'] : '';
                    $data['itensLaudo'][$id]['fl_substitui_laudo_anterior']     = $item['fl_substitui_laudo_anterior']; 
                }
            }
        }
        $Safra = new Produto_Model_Safras();
        $nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisUvaGeada');
        $LaudoUvaGeadaItens = new $nomeModel;       
        if ($this->session->idRevistoria) {
            $LaudoFinal = new Sinistro_Model_LaudosFinais();
            $data['itensSegurados'] = $LaudoFinal->getItensRevistoria($this->session->idProposta, $this->session->idRevistoria);
        } else {
            $data['itensSegurados'] = $LaudoUvaGeadaItens->getItensDisponiveisLaudoFinalUvaGeada($this->session->idProposta, $this->session->idVistoria, $this->session->idCobertura);
        }

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

    public function savedadosvistoriaAction() {
        
        $formDadosVistoriaLF = new Sistema_Form_DadosVistoriaLaudoFinal2;
        $forms = array($formDadosVistoriaLF);

        $camposAdicionais[] = array(
            'type'    => 'text',
            'fields'   => 'idProposta',
            'label'   => 'Proposta',
            'message' => 'A Proposta deve ser informada.'
        );

        $camposAdicionais[] = array(
            'type'    => 'text',
            'fields'   => 'idVistoriador',
            'label'   => 'Vistoriadores',
            'message' => MSG_ERRO_LF_VISTORIADOR
        );

        $errorMsg = $this->getAllFormErros($forms, $this->getRequest()->getPost(), $camposAdicionais);

        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();
        
        if ($errorMsg) {
            $post = $this->getRequest()->getPost();
            $this->getResponse()->setBody($errorMsg);
            
        } else {        
            $post = $this->getRequest()->getParams();
            
            $post['dt_vistoria'] = Agro_Util::formatDate($post['dt_vistoria'], 'yyyy-MM-dd');
            
            if (!$this->session->idLaudoFinal) {
                $this->saveLaudoFinal($this->getRequest()->getParams());
            }
        
            $this->saveVistoriaFuncionario($post);
            
            $Safra = new Produto_Model_Safras();
            
            $nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisUvaGeada');
            
            $LaudoUvaGeadaItens = new $nomeModel;
            
            if ($this->session->idRevistoria) {
                $itensSegurados = $LaudoUvaGeadaItens->getItensRevistoria($this->session->idProposta, $this->session->idRevistoria);
                
            } else {
                $itensSegurados = $LaudoUvaGeadaItens->getItensDisponiveisLaudoFinalUvaGeada($this->session->idProposta, $this->session->idVistoria, $this->session->idCobertura);
            }

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

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

            $vistoriador = explode(',', $post['idVistoriador']);
            $VistoriaFuncionarios = new Sistema_Model_VistoriasFuncionarios();
            $VistoriaFuncionarios->delete($post['idVistoria']);
            foreach ($vistoriador as $key => $value) {
                $funcionario = array();
                $funcionario['id_funcionario'] = $value; 
                $funcionario['id_vistoria']    = $post['idVistoria'];
                $VistoriaFuncionarios->insert($funcionario);
            }
            
            /****************************************/
            $vistoria = array();
            $vistoria['dt_inicio']   = Agro_Util::formatDate($post['dt_inicio'], 'yyyyMMdd');
            $this->session->dtInicioVistoria = $post['dt_inicio'];          
            $vistoria['dt_fim']      = Agro_Util::formatDate($post['dt_fim'], 'yyyyMMdd');
            $vistoria['id']          = $post['idVistoria'];
            
            $Vistorias = new Sistema_Model_Vistorias();
            $Vistorias->update($vistoria, 'id = ' . $post['idVistoria']);

            $Db->commit();
        } catch (Exception $e) {
            $Db->rollback();
            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_geada
            /***************************************************/
            $Safra = new Produto_Model_Safras();
            $nomeModel = $Safra->getSafraModel($this->session->idProposta,'LaudosFinaisUvaGeada');
            $LaudosFinaisUvaGeada = new $nomeModel;

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

            if ($this->session->idRevistoria) {
                $Revistoria = new Sistema_Model_Revistorias();          
                $data = array();
                $data['fl_realizada']  = 1; 
                $Revistoria->update($data, 'id_vistoria = ' . $this->session->idRevistoria);
            }

            $Db->commit();

            $this->session->idLaudoFinal = $LaudoFinal->id;
        } catch (Exception $e) {
            $Db->rollBack();
            echo $e->getMessage();
        }
    }
    
    public function saveRegLaudoFinal(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 getcombomotivosquadranaovistoriadaAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();
        
        $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>';
            }
        } 

        $this->getResponse()->setBody($combo);
    }
}