<?php
class Sinistro_CobrancaessorController extends Agro_Controller_Action {

	public function getModel($tipoVistoria = null) {
		if (strtolower($tipoVistoria) == 'previa' || strtolower($tipoVistoria) == 'prévia') {
			return new Sinistro_Model_CobrancaPreviaEssor();
		} else {
			return new Sinistro_Model_CobrancaPreliminarFinalEssor();
		}
	}

	public function getForm() {
		return new Sinistro_Form_Cobranca();
	}

	public function init() {
		$this->view->title = 'Sinistro » Cobrança';
	}

	public function saveAction(){
		$this->isAjax();
		$dados = array();

		//dados referentes a nota
		$dados['id_cobranca_relatorio'] = $this->getRequest()->getParam('id_cobranca_relatorio');
		//$dados['nr_nota_fiscal'] = $this->getRequest()->getParam('nr_nota_fiscal') ? $this->getRequest()->getParam('nr_nota_fiscal') : null;
		$dados['nota_honorarios'] = $this->getRequest()->getParam('notaValorHonorarios');
		$dados['nota_valor_km'] = $this->getRequest()->getParam('notaValorKm');
		$dados['nota_despesas'] = $this->getRequest()->getParam('notaValorDespesas');
		$dados['tipo_relatorio'] =  $this->getRequest()->getParam('tipoRelatorio');

		$Status = new Sistema_Model_Status();
		$dados['id_status'] = $Status->getId('NAO_ENVIADO','RELATORIO_COBRANCA');

		//dados referentes a vistoria
		$id_cobranca_relatorio_vistoria = $this->getRequest()->getParam('id_cobranca_relatorio_vistoria');
		$vistorias = $this->getRequest()->getParam('id_vistoria');
		$honorarios = $this->getRequest()->getParam('vistoriaHonorarios');
		$kmvalores = $this->getRequest()->getParam('vistoriaKmValor');
		$kmquantidade = $this->getRequest()->getParam('vistoriaKmQuantidade');
		$despesas = $this->getRequest()->getParam('vistoriaTotalDespesas') ? $this->getRequest()->getParam('vistoriaTotalDespesas') : 0;

		//dentro das despesas da vistoria
		$hotel = $this->getRequest()->getParam('vistoriaHotel');
		$alimentacao = $this->getRequest()->getParam('vistoriaAlimentacao');
		$pedagio = $this->getRequest()->getParam('vistoriaPedagio');

		if($dados['tipo_relatorio'] == 'P' || $dados['tipo_relatorio'] == 'Previa' || $dados['tipo_relatorio'] == 'Prévia'){
			$Model = $this->getModel('previa');
		}else{
			$Model = $this->getModel();
		}

		foreach($vistorias as $key => $value){
			$dados['vistorias'][$key]['id_vistoria'] = $value;
			$dados['vistorias'][$key]['id_cobranca_relatorio_vistoria'] = $id_cobranca_relatorio_vistoria[$key];
			$dados['vistorias'][$key]['despesas'] = $despesas[$key];
			$dados['vistorias'][$key]['km_valor'] = $kmvalores[$key];
			$dados['vistorias'][$key]['honorarios'] = $honorarios[$key];
			$dados['vistorias'][$key]['hotel'] = $hotel[$key];
			$dados['vistorias'][$key]['alimentacao'] = $alimentacao[$key];
			$dados['vistorias'][$key]['pedagio'] = $pedagio[$key];
			$dados['vistorias'][$key]['km_quantidade'] = $kmquantidade[$key];
		}

		if($Model->save($dados)){
			$result = "Dados gravados com sucesso!";
		}

		$this->getResponse()->setBody(Zend_Json::encode($result));
	}

	public function listAction() {
		try {
			$this->getHelper('layout')->disableLayout();

			if ($this->getRequest()->getParam('tipo_grupo_produto') == 1 || $this->getRequest()->getParam('tipo_grupo_produto') == 3){
				$Model = $this->getModel('previa');
			} else {
				$Model = $this->getModel();
			}

			$Model->_order = array('id_proposta desc', 'perito', 'id_vistoria DESC');

			$where = $this->getFilter();

			// Habilita ou Desabilita a paginacao pelo combo na tela
			$Rs = $Model->fetchAll($Model->getData($where));
			$this->view->paginator = $Rs;
		} catch (Exception $e) {
		}
	}

	public function buscadadosAction(){
		$this->isAjax(true);
		$vistorias = $this->getRequest()->getParam('vistorias');
		$tipoVistoria = $this->getRequest()->getParam('tipoVistoria');
		$Model = $this->getModel($tipoVistoria);

		if($vistorias){

			$vistorias = array_reverse($vistorias);

			//busca os dados da View
			foreach ($vistorias as $key => $vistoria){

				$dados[$key] = $Model->buscaDados($vistoria['id']);
				$dados[$key] = $this->preparaDados($dados[$key], $Model);

			}

			//validações
			foreach($dados as $key => $value){

				foreach($dados as $chave => $valor){
					$data1 = substr($dados[$key]['dt_vistoria'],0,10);
					$data2 = substr($valor['dt_vistoria'],0,10);
					$hora1 = substr($dados[$key]['dt_vistoria'],11,8);
					$hora2 = substr($valor['dt_vistoria'],11,8);
					$tipo1 = $dados[$key]['idTipoVistoria'];
					$tipo2 = $valor['idTipoVistoria'];

					//procura a vírgula na string, e ajusta os valores máximos
					$numPeritos = substr_count($dados[$key]['perito'], ',');
					$validaPerito = false;

					if($numPeritos >= 1){

						$auxPeritos = substr_count($valor['perito'], ',');
						if($auxPeritos == $numPeritos){
							$validaPerito = true;
						}

						$dados[$key]['perito'] = split(',', $dados[$key]['perito']);
						sort($dados[$key]['perito'], SORT_STRING);
						$dados[$key]['perito'] = implode(',', $dados[$key]['perito']);

						$valor['perito'] = split(',', $valor['perito']);
						sort($valor['perito'], SORT_STRING);
						$valor['perito'] = implode(',', $valor['perito']);

					}

					//verifica sempre a próxima vistoria
					if($chave-1 == $key){

						//desconsidera vistoria já validada
						if(!$validado[$key]){

							//se é o mesmo perito, valida
							if($dados[$key]['perito'] == $valor['perito'] || $validaPerito){

								//se a vistoria é Preliminar, e o mesmo perito fez uma vistoria Final da mesma proposta
								//dentro de 4 dias, cobrar apenas a Final e desativar preliminar
								if($dados[$key]['id_proposta'] == $valor['id_proposta'] && $dados[$key]['id_vistoria'] != $valor['id_vistoria'] && $dados[$key]['id_cobertura'] == $valor['id_cobertura'] && $dados[$key]['idTipoVistoria'] != $valor['idTipoVistoria']){

									if(Agro_Util::contarDiasEntreDatas($data1, $data2) <= 4 && Agro_Util::contarDiasEntreDatas($data1, $data2) >= -4){
										$dados[$key]['vl_honorarios'] = 0;
										$dados[$key]['vistoriaHonorarios'] = 0;
										$dados[$key]['readonly'] = 'readonly';
									}
								}

							}else{
								//se não é o mesmo perito, bloqueia hotel e refeição
								$dados[$key]['readonlyHotelRefeicao'] = 'readonly';
							}

							//marca a vistoria já validada
							$validado[$key] = true;
						}

					//verifica a última vistoria
					}elseif ($key == $chave && $key == count($vistorias)-1){
						//se ela não teve nenhuma validação, quer dizer q ela é avulsa e bloqueia
						if(!$dados[$key]['readonlyHotelRefeicao'] && !$dados[$key]['readonlyHotel']){
							$dados[$key]['readonlyHotelRefeicao'] = 'readonly';
						}
					}
				}

				//total de honorários na nota
				$notaHonorarios += $dados[$key]['vistoriaHonorarios'];
			}
			//$dados = array_reverse($dados);

			$this->view->dados = $dados;
			$this->view->notaHonorarios = $notaHonorarios;
			$this->view->form = $this->getForm();

		}
	}


	public function preparaDados($dados, $Model, $semValor = true){

		//tipo da vistoria
		$dados['idTipoVistoria'] = $Model->getTipoVistoria($dados['tp_vistoria']);

		//busca o grupo de vistoria
		$grupoVistoria = $Model->getGrupoVistoria($dados['id_cultura'], Agro_Util::formatDate($dados['dt_vistoria'], Zend_Date::DATES), $dados['ds_chave_cobertura'], $dados['ds_nome_cultura'], $dados['id_estado'], 181);

		if($dados['idTipoVistoria'] == 3){//prévia
			$temPreliminar = false;

			//área total dos ítens vistoriados
			$dados['itensAreaTotal'] = $this->getItensAreaTotal($dados);

			//variedades e itens
			$itensVariedades = $this->getItensVariedade($dados);
			$dados['itens'] = $itensVariedades['itens'];
			$dados['variedade'] = $itensVariedades['variedade'];

		}else{//preliminar ou final

			//vistoria final com área 0(evento_nao_constatado) recebe valor de preliminar quando a cobertura não possui laudo preliminar
			$ProdutoCobertura = new Produto_Model_ProdutosCoberturas();
			$VistoriasAvisos = new Sinistro_Model_VistoriasAvisos();
			$temPreliminar = $ProdutoCobertura->getFlVistoriaPreliminar($dados['id_produto'], $dados['id_cobertura']);
			$preliminarDispensada = $VistoriasAvisos->checkPreliminarDispensadaByIdVistoria($dados['id_vistoria']);

			//área total dos ítens vistoriados
			$dados['itensAreaTotal'] = $dados['vl_area_vistoriada'];
		}

		//valor total dos honorarios da vistoria
		$dados['grupoVistoria'] = $grupoVistoria;
		$dados['itensAreaTotal'] = $dados['itensAreaTotal'];
		
		if(!$dados['vistoriaHonorarios'] && $semValor){
			
			if($dados['itensAreaTotal'] > 0){
				$valorVistoria = $Model->getValorVistoria($dados);
	
				//se a flag de multiplicar é true, multiplica o total da área pelo valor da vistoria
				if($valorVistoria['fl_multiplica_area'] === true){
					$dados['vistoriaHonorarios'] = ($dados['itensAreaTotal'] * $valorVistoria['vl_custo_vistoria']);
				}else{
					if($dados['evento_nao_constatado']){
						$dados['itensAreaTotal']     = 0;
						$dados['vistoriaHonorarios'] = $valorVistoria['vl_custo_vistoria'];
					}else{
						$dados['vistoriaHonorarios'] = $valorVistoria['vl_custo_vistoria'];
					}
				}
			} else {
				$dados['itensAreaTotal']     = 0;
				$dados['vistoriaHonorarios'] = 150;				
			}
		}

		//dados do grupo utilizados para validação no JS (id, valores máximos de hospedagem e refeição)
		$dados['grupoVistoria'] = $grupoVistoria;

		return $dados;
	}

	//functions
	public function getItensVariedade($dados){
		$Model = $this->getModel($dados['tp_vistoria']);
		return $Model->getItensVariedade($dados['id_vistoria'], $dados['ds_safra']);
	}

	public function getItensAreaTotal($dados){
		$Model = $this->getModel('previa');
		return $Model->getAreaTotalVistoriada($dados['id_vistoria'],$dados['ds_safra']);
	}
	//

	public function getvalorkmvistoriaAction(){
		$this->isAjax();
		$Model = $this->getModel();

		$valorKm = $Model->getValorKmVistoria($this->getRequest()->getParam('id_grupo_vistoria'));

		$this->getResponse()->setBody(Zend_Json::encode($valorKm));
	}

	public function relatoriosgeradosAction(){
		$this->view->form = $this->getForm();
	}

	public function listrelatoriosgeradosAction(){
		$this->isAjax(true);
		$Model = $this->getModel();

		if($this->getRequest()->getParam('tipo_cobranca') == 1){
			$Model = $this->getModel('previa');
		}else{
			$Model = $this->getModel();
		}

		$this->view->dados = $Model->getRelatoriosGerados($this->getFilterGerados());
	}

	public function buscadadosnotafiscalAction(){
		$this->isAjax(true);
		$tipoVistoria = $this->getRequest()->getParam('tp_vistoria');

		$Model = ($tipoVistoria == 'P' ? $this->getModel('previa') : $this->getModel());

		$dados = $Model->buscaDadosNotaFiscal($this->getRequest()->getParam('id'));

		foreach ($dados as $key => $value){
			$dados[$key] = $this->preparaDados($dados[$key], $Model, false);

			foreach($dados as $chave => $valor){
				$data = substr($dados[$key]['dt_vistoria'],0,10);
				$hora = substr($dados[$key]['dt_vistoria'],11,8);

				if($dados[$key]['vistoriaHonorarios'] == 0){
					$dados[$key]['readonly'] = 'readonly';
				}

				//utilizados no html
				$notaHonorarios = $dados[$key]['vl_total_honorarios'];
				$notaDespesas = $dados[$key]['vl_total_despesas'];
				$notaKmCusto = $dados[$key]['vl_total_quilometragem'];

			}
		}



		$this->view->notaHonorarios = $notaHonorarios;
		$this->view->notaDespesas = $notaDespesas;
		$this->view->notaKmCusto = $notaKmCusto;

		$this->view->form = $this->getForm();
		$this->view->form->nr_nota_fiscal->setValue($dados[0]['nr_nota_fiscal']);

		$this->view->dados = $dados;

	}

	public function transmiterelatorioAction(){
		$this->isAjax();
		$ModelStatus = new Sinistro_Model_CobrancaRelatorioStatus();
		$dados['id_cobranca_relatorio'] = $this->getRequest()->getParam('id');

		$Status = new Sistema_Model_Status();
		$dados['id_status'] = $Status->getId('ENVIADO_EM_ANALISE','RELATORIO_COBRANCA');

		if($ModelStatus->save($dados)){
			$result = "Relatório transmitido com sucesso!";
		}else{
			$result = "Erro ao transmitir relatório!";
		}
		$this->getResponse()->setBody(Zend_Json::encode($result));
	}

	public function devolverelatorioAction(){
		$this->isAjax();
		$ModelStatus = new Sinistro_Model_CobrancaRelatorioStatus();
		$dados['id_cobranca_relatorio'] = $this->getRequest()->getParam('id');

		$Status = new Sistema_Model_Status();
		$dados['id_status'] = $Status->getId('NAO_ENVIADO','RELATORIO_COBRANCA');

		if($ModelStatus->save($dados)){
			$result = "Relatório devolvido com sucesso!";
		}else{
			$result = "Erro ao devolver relatório!";
		}
		$this->getResponse()->setBody(Zend_Json::encode($result));
	}

	public function solicitarnfAction(){
		$this->isAjax();
		$ModelStatus = new Sinistro_Model_CobrancaRelatorioStatus();
		$dados['id_cobranca_relatorio'] = $this->getRequest()->getParam('id');

		$Status = new Sistema_Model_Status();
		$dados['id_status'] = $Status->getId('CONFERIDO_AGUARDA_NF','RELATORIO_COBRANCA');

		if($ModelStatus->save($dados)){
			$result = "Relatório aguardando NF!";
		}else{
			$result = "Erro ao devolver relatório!";
		}
		$this->getResponse()->setBody(Zend_Json::encode($result));
	}

	public function viewAction(){
		$this->getHelper('layout')->setLayout('popup');
		$tipoVistoria = $this->getRequest()->getParam('tipovistoria');

		if($tipoVistoria == 'P'){
			$Model = $this->getModel('previa');
		}else{
			$Model = $this->getModel();
		}

		$dados = $Model->buscaDadosNotaFiscal($this->getRequest()->getParam('id'));

		foreach ($dados as $key => $value){
			$dados[$key] = $this->preparaDados($dados[$key], $Model);

			//se a vistoria é Preliminar, e o mesmo perito fez uma vistoria Final da mesma proposta dentro de 4 dias, cobrar apenas a Final
			foreach($dados as $chave => $valor){

				//utilizados no html
				$notaHonorarios = $dados[$key]['vl_total_honorarios'];
				$notaDespesas = $dados[$key]['vl_total_despesas'];
				$notaKmCusto = $dados[$key]['vl_total_quilometragem'];
			}

			//somatório
			$notaKmRodada += $dados[$key]['vl_quilometragem'];
			$notaPedagio += $dados[$key]['vl_pedagio'];
			$notaHotel += $dados[$key]['vl_hotel'];
			$notaAlimentacao += $dados[$key]['vl_alimentacao'];
		}

		$this->view->notaHonorarios = $notaHonorarios;
		$this->view->notaDespesas = $notaDespesas;
		$this->view->notaKmCusto = $notaKmCusto;
		$this->view->notaKmRodada = $notaKmRodada;
		$this->view->notaPedagio = $notaPedagio;
		$this->view->notaHotel = $notaHotel;
		$this->view->notaAlimentacao = $notaAlimentacao;
		$this->view->notaTotalDespesasEKm = $notaDespesas+$notaKmCusto;

		$this->view->id = $this->getRequest()->getParam('id');
		$this->view->tipoRelatorio = $this->getRequest()->getParam('tipo');
		$this->view->dados = $dados;

	}

	public function arquivosAction() {
		$idRelatorio= $this->getRequest()->getParam('id');
		$tipoRelatorio = $this->getRequest()->getParam('tipo');
		$nota = $this->getRequest()->getParam('nota');

		$this->view->id = $idRelatorio;
		$this->view->tp_vistoria = $tipoRelatorio;
		$this->view->nota = $nota;

		$Model = new Sinistro_Model_CobrancaRelatorioArquivos();

		if($this->getRequest()->isPost()) {
			$dados = $this->getRequest()->getParams();

			if($dados['id'] && $_FILES) {
				$this->salvaarquivoAction($idRelatorio);
			}
		}

		$arquivos = $Model->getCobrancaArquivos($idRelatorio);

		$this->view->arquivos = $arquivos;

	}

	public function salvaarquivoAction($idRelatorio) {
		// Inicializa o Adaptador de transferencia de arquivos
		$Adapter = new Zend_File_Transfer_Adapter_Http();
		$Adapter->setDestination(APPLICATION_PATH.'/upload_files/cobranca/');
		$ModelArquivos = new Sinistro_Model_CobrancaRelatorioArquivos();
		// Percorre todos os arquivos postados
		foreach ($Adapter->getFileInfo() as $tipo => $file) {
			if ($file['name'] == '') {
				continue;
			}

			$name = $idRelatorio. $file['name'];
			$arr['ds_nome_arquivo'] = $name;
			$arr['id'] = $idRelatorio;

			$Adapter->addFilter('Rename', array('target' => APPLICATION_PATH . '/upload_files/cobranca/' . $name, 'overwrite' => true));

			if(!$Adapter->receive($file['name'])){
				$this->getResponse()->setBody(Zend_Json::encode('Não foi possível salvar o arquivo!'));
			} else {
				$ModelArquivos->save($arr);
				$this->getResponse()->setBody(Zend_Json::encode('Arquivo salvo com sucesso!'));
			}
		}
	}

	public function deletearquivoAction() {
		$this->isAjax();
		$Model = new Sinistro_Model_CobrancaRelatorioArquivos();
		$result = array();

		try {
			if ($Model->delete($this->getRequest()->getParam('id'))) {
				$result = MSG_SUCCESS;
			} else {
				$result = MSG_ERROR;
			}
		} catch (Exception $e) {
			$result = $this->view->escape(MSG_DELETE_FK_ERROR);
		}

		$this->getResponse()->setBody(Zend_Json::encode($result));

	}

	public function baixanfAction() {
		$this->view->form = new Sinistro_Form_Baixanf();
		$this->view->title .= ' » Baixa de NF';
	}

	public function verificanotaAction() {
		$this->isAjax(true);

		$params = $this->getRequest()->getParams();
		if ($params['id_empresa'] && $params['numero']) {
			$Model = new Sinistro_Model_CobrancaRelatorio();
			$Notas = $Model->getNota($params['id_empresa'], $params['numero']);
			if ($Notas->count()) {
				$this->view->observacao = $Model->geraObservacao($params,true);
			} else {
				$this->getResponse()->setBody('Nota não encontrada.');
			}
		}
	}

	public function darbaixaAction() {
		$this->isAjax();
		$result = array();

	    $Model = new Sinistro_Model_CobrancaRelatorio();
		$params = $this->getRequest()->getParams();

		$Model->getDefaultAdapter()->beginTransaction();
		try {
			if ($params['id_empresa'] && $params['numero']) {
				$observacoes = $Model->geraObservacao($params);

				if (is_array($observacoes)) {
					foreach ($observacoes as $vistoria => $observacao) {

					    //verifica se a vistoria foi selecionada na lista de vistorias
					    $fl_insere_obs = false;
					    foreach($params['vistoria'] as $vistoriaSelecionada){
                            if($vistoriaSelecionada == $vistoria){
                                $fl_insere_obs = true;
                            }
                        }

                        //insere observação somente para as vistorias selecionadas
                        if($fl_insere_obs){
    						$processos = $Model->getProcessos($vistoria);
    						if (is_array($processos)) {
    							foreach ($processos as $processo) {
    								$Model->addObservacao($processo['id_processo'], $observacao);
    							}
    						}
                        }
					}
				}
			}
			$result['status'] = true;
			$result['message'] = 'Processo realizado com sucesso.';


			$Model->getDefaultAdapter()->commit();
		} catch (Exception $e) {
		    $result['status'] = false;
		    $result['message'] = 'Erro ao executar processo.';

			$Model->getDefaultAdapter()->rollBack();
		}
		$this->getResponse()->setBody(Zend_Json::encode($result));
	}

	public function confirmaexclusaoAction(){
		$this->isAjax(true);
		$dados = $this->getRequest()->getParams();

		$this->view->dados = $dados;
	}

	public function deleterelatorioAction(){
		$this->isAjax();
		$dados = $this->getRequest()->getParams();

		if($dados['tipo'] == 'P'){
			$Model = $this->getModel('previa');
		}else{
			$Model = $this->getModel();
		}

		try{
			if($Model->deleteRelatorio($dados['id'])){
				$ModelMotivoExclusao = new Sinistro_Model_CobrancaRelatorioMotivoExclusao();
				$ModelMotivoExclusao->save($dados);

				$return['message'] = "Relatório excluído com sucesso!";
			}else{
				$return['message'] = "Erro ao excluir relatório!";
			}

		}catch (Exception $e){
			die($e);
		}

		$this->getResponse()->setBody(Zend_Json::encode($return));
	}

	public function alterarnfAction(){
		$this->isAjax(true);

		$Form = new Sinistro_Form_AlterarNf();

		$Form->populate($this->getRequest()->getParams());

		$this->view->form = $Form;
	}

	public function salvarnfAction(){
		$this->isAjax();

		$Model = new Sinistro_Model_CobrancaRelatorio();
		$params = $this->getRequest()->getParams();
		$return = array("status" => true, "message" => "Alteração realizada com sucesso", "id" => $params["id"], "nf" => $params["nr_nota_fiscal"]);

		$this->isAjax();
		$ModelStatus = new Sinistro_Model_CobrancaRelatorioStatus();
		$dados['id_cobranca_relatorio'] = $this->getRequest()->getParam('id');

		$Status = new Sistema_Model_Status();
		$dados['id_status'] = $Status->getId('CONFERIDO','RELATORIO_COBRANCA');

		if ($params["nr_nota_fiscal"]){
			if (!$Model->alterarNota($params)){
				$return["status"] = false;
				$return["message"] = "Não foi possível alterar a nota.\n\nErro: {$Model->getMessages()}";
			}else{
				$ModelStatus->save($dados);
			}
		}

		$this->getResponse()->setBody(Zend_Json::encode($return));
	}

	public function listarlognfAction(){
		$this->isAjax(true);
		$Model = new Sinistro_Model_CobrancaRelatorioLogAlteracaoNotas();
		$this->view->log = $Model->fetchAll("id_cobranca_relatorio=".$this->getRequest()->getParam("id"), "dt_criacao desc");
	}



	public function getFilter() {
		$where = array();

		$where[] = array (
				'field' => 'id_seguradora',
				'operator' => '=',
				'value' => 181
			);

		if ($this->getRequest()->getParam('id_tipo_vistoria')) {
			$where[] = array (
				'field' => 'id_tipo_vistoria',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_tipo_vistoria')
			);
		}

		if ($this->getRequest()->getParam('id_grupo_vistoria')) {
			$where[] = array (
				'field' => 'id_grupo_vistoria',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_grupo_vistoria')
			);
		}

		if ($this->getRequest()->getParam('fl_ativo')) {
			$where[] = array (
				'field' => 'fl_ativo',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('fl_ativo')
			);
		}

		if ($this->getRequest()->getParam('tipo_grupo_produto')) {

			switch($this->getRequest()->getParam('tipo_grupo_produto')){

				//hortifruti preliminar/final
				case '1':
				case '2':
					$where[] = array (
						'field' => 'id_tipo_produto',
						'operator' => '=',
						'value' => 1
					);
					break;

				//graos preliminar/final
				case '3':
				case '4':
					$where[] = array (
						'field' => 'id_tipo_produto',
						'operator' => 'in',
						'value' => '(2,3)'
					);

					break;
			}
		}

		if ($this->getRequest()->getParam('id_cultura')) {
			$where[] = array(
				'field' => 'id_cultura',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_cultura')
			);
		}

		if ($this->getRequest()->getParam('id_estado')) {
			$where[] = array(
				'field' => 'id_estado',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_estado')
			);
		}

		if ($this->getRequest()->getParam('id_status')) {
			$where[] = array(
				'field' => 'cr.id_status',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_status')
			);
		}

		if ($this->getRequest()->getParam('id_empresa')) {
			$where[] = array (
				'field' => 'id_empresa',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_empresa')
			);
		}

		if ($this->getRequest()->getParam('nr_nota_fiscal')) {
			$where[] = array (
				'field' => 'nr_nota_fiscal',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('nr_nota_fiscal')
			);
		}

		return $where;
	}


	public function getFilterGerados() {
		$where = array();

		$where[] = array (
				'field' => 'id_seguradora',
				'operator' => '=',
				'value' => 181
			);

		if ($this->getRequest()->getParam('id_tipo_vistoria')) {
			$where[] = array (
				'field' => 'id_tipo_vistoria',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_tipo_vistoria')
			);
		}

		if ($this->getRequest()->getParam('id_grupo_vistoria')) {
			$where[] = array (
				'field' => 'id_grupo_vistoria',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_grupo_vistoria')
			);
		}

		if ($this->getRequest()->getParam('fl_ativo')) {
			$where[] = array (
				'field' => 'fl_ativo',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('fl_ativo')
			);
		}

		if ($this->getRequest()->getParam('tipo_grupo_produto')) {

			switch($this->getRequest()->getParam('tipo_grupo_produto')){

				//hortifruti preliminar/final
				case '1':
				case '2':
					$where[] = array (
						'field' => 'id_tipo_produto',
						'operator' => '=',
						'value' => 1
					);
					break;

				//graos preliminar/final
				case '3':
				case '4':
					$where[] = array (
						'field' => 'id_tipo_produto',
						'operator' => 'in',
						'value' => '(2,3)'
					);

					break;
			}
		}

		if ($this->getRequest()->getParam('id_cultura')) {
			$where[] = array(
				'field' => 'id_cultura',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_cultura')
			);
		}

		if ($this->getRequest()->getParam('id_estado')) {
			$where[] = array(
				'field' => 'id_estado',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_estado')
			);
		}

		if ($this->getRequest()->getParam('id_status')) {
			$where[] = array(
				'field' => 'cr.id_status',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_status')
			);
		}

		if ($this->getRequest()->getParam('id_empresa')) {
			$where[] = array (
				'field' => 've.id_empresa',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_empresa')
			);
		}

		if ($this->getRequest()->getParam('nr_nota_fiscal')) {
			$where[] = array (
				'field' => 'nr_nota_fiscal',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('nr_nota_fiscal')
			);
		}

		return $where;
	}

	public function enviarseguradoraAction(){
		$this->isAjax();

		$Model = ($this->getRequest()->getParam('tp_vistoria') == 'P' ? $this->getModel('previa') : $this->getModel());
		$dados = $Model->buscaDadosNotaFiscal($this->getRequest()->getParam('id'));

		$Status = new Sistema_Model_Status();
		$dados['id_status'] = $Status->getId('ENVIADO_EM_ANALISE','RELATORIO_COBRANCA');

		if($ModelStatus->save($dados)){
			$result = "Relatório transmitido com sucesso!";
		}else{
			$result = "Erro ao transmitir relatório!";
		}
		$this->getResponse()->setBody(Zend_Json::encode($result));
	}

}