<?php
class Sinistro_CobrancanobreController extends Agro_Controller_Action {

	public function getModel($tipoCobranca = null) {
		if ($tipoCobranca) {
			return new Sinistro_Model_CobrancaPrevia();
		} else {
			return new Sinistro_Model_CobrancaPreliminarFinal();
		}
	}

	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');
		$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');
		$laudos = $this->getRequest()->getParam('id_laudo');
		$honorarios = $this->getRequest()->getParam('vistoriaTotalHonorarios');
		$kmvalores = $this->getRequest()->getParam('vistoriaTotalKmValor');
		$kmquantidade = $this->getRequest()->getParam('vistoriaKmQuantidade');
		$despesas = $this->getRequest()->getParam('vistoriaTotalDespesas') ? $this->getRequest()->getParam('vistoriaTotalDespesas') : 0;
		$redividir = $this->getRequest()->getParam('redividir');

		//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'){

			foreach($laudos as $key => $value){
				$dados['vistorias'][$key]['id_laudo'] = $value;
				foreach($vistorias as $chave => $valor){
					$dados['vistorias'][$chave]['id_vistoria'] = $valor;
				}
				$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];
				$dados['vistorias'][$key]['redividir'] = $redividir[$key];
			}
			$Model = $this->getModel('previa');
		}else{
			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];
				$dados['vistorias'][$key]['redividir'] = $redividir[$key];
			}
			$Model = $this->getModel();
		}

		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();
			}

			$where = $this->getFilter();

			// Habilita ou Desabilita a paginacao pelo combo na tela
			if ($this->getRequest()->getParam("o")) {
				$Model->_order = trim($this->getRequest()->getParam("o") .' '. $this->getRequest()->getParam("s"));
			}

			$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');

		if($tipoVistoria == 'Previa'){
			$Model = $this->getModel('previa');
		}else{
			$Model = $this->getModel();
		}

		$Coberturas = new Produto_Model_Coberturas();

		if($vistorias){
			foreach ($vistorias as $key => $vistoria){

				$dados[$key] = $Model->buscaDados($vistoria[0]);

				foreach($dados as $key => $value){

					//variáveis de apoio
					$dsChaveCobertura = $Coberturas->getChaveById($dados[$key]['id_cobertura']);

					if($tipoVistoria == 'Previa'){
						$temPreliminar = false;
						$dados[$key]['itensAreaTotal'] = $Model->getAreaTotalVistoriada($dados[$key]['id_vistoria'],$dados[$key]['ds_safra']);

					}else{
						//preliminar ou final

						//gambizinha=> 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[$key]['id_produto'], $dados[$key]['id_cobertura']);
						$preliminarDispensada = $VistoriasAvisos->checkPreliminarDispensadaByIdVistoria($dados[$key]['id_vistoria']);						
						
						//área total dos ítens vistoriados
						$dados[$key]['itensAreaTotal'] = $dados[$key]['vl_area_vistoriada'];
					}

					//ajuste para trocar o grupo de vistoria, caso a cultura seja MAÇÃ e a cobertura NÃO SEJA GRANIZO
					if($dados[$key]['ds_nome_cultura'] == 'Maça' && $dsChaveCobertura == "COB_GRANIZO"){
						$idGrupoVistoria = $Model->getGrupoVistoriaEspecial($dados[$key]['dt_vistoria']);
					}else{
						$idGrupoVistoria = $Model->getGrupoVistoria($dados[$key]['id_cultura'], $dados[$key]['dt_vistoria']);

						//se o grupo é 6 ou 8(grãos) temos que verificar se os itens segurados são vistoriados por
						//homem ou por máquina. Se for por máquina, troco o id do grupo pra 7.
						if($idGrupoVistoria['id'] == 6 || $idGrupoVistoria['id'] == 8){

							$Safra = new Produto_Model_Safras();
							$ModelLF = $Safra->getSafraModel($dados[$key]['id_proposta'],'Lf003ItensSegurados');
							$ModelLf003 = new $ModelLF();
							
							$grupoVistoriaRevisado = $ModelLf003->tipoAmostragem($dados[$key]['id_vistoria']);
							$idGrupoVistoria['id'] = $grupoVistoriaRevisado;
						}
					}

					if($idGrupoVistoria['id'] == 0){
						$dados[$key]['vistoriaTotalHonorarios'] = 0;
						$dados[$key]['cobrarPorExcel'] = true;
					}else{

						//auxilia para calcular honorários
						$dados[$key]['id_grupo_vistoria'] = $idGrupoVistoria['id'];

						$idTipoVistoria = $Model->getTipoVistoria($dados[$key]['tp_vistoria']);						
						
						if($dados[$key]['evento_nao_constatado'] && ($idTipoVistoria == 1) && (!$temPreliminar || $preliminarDispensada)){						    
							$valores['idTipoVistoria'] = 2; //final vira preliminar
						}else{
							$valores['idTipoVistoria'] = $idTipoVistoria;
						}

						//valor total dos honorarios da vistoria
						$valores['idGrupoVistoria'] = $idGrupoVistoria;
						$valores['itensAreaTotal'] = $dados[$key]['itensAreaTotal'];

						$valorVistoria = $Model->getValorVistoria($valores);

						//se a flag de multiplicar é true, multiplica o total da área pelo valor da vistoria
						if($valorVistoria['fl_multiplica_area']){
							$dados[$key]['vistoriaTotalHonorarios'] = ($dados[$key]['itensAreaTotal'] * $valorVistoria['vl_custo_vistoria']);
						}else{
							$dados[$key]['vistoriaTotalHonorarios'] = $valorVistoria['vl_custo_vistoria'];
						}
					}
				}

				foreach($dados as $key => $value){
					$proposta    = $value['id_proposta'];
					$tipo        = $value['tp_vistoria'];
					$data        = substr($value['dt_vistoria'],0,10);
					$id_vistoria = $value['id_vistoria'];
					$id_laudo 	 = $value['id_vistoria_previa_laudo'];
					$cobertura   = $value['ds_chave_cobertura'];

					if($tipo == 'Preliminar'){
						foreach($dados as $chave => $valor){
							$verificadata = 0;
							if($key != $chave && $proposta == $valor['id_proposta'] && $id_vistoria != $valor['id_vistoria'] && $verificadata != 1 && $cobertura == $valor['ds_chave_cobertura']){
								if(Agro_Util::contarDiasEntreDatas($data,substr($valor['dt_vistoria'],0,10)) <= 4 && Agro_Util::contarDiasEntreDatas($data,substr($valor['dt_vistoria'],0,10)) >= -4){
									$dados[$key]['vistoriaTotalHonorarios'] = 0;
									$verificadata = 1;
								}
							}
						}
					}

					if($dados[$key]['itensAreaTotal'] == 0){
						$dados[$key]['vistoriaTotalHonorarios'] = 70.00;
					}

				}

				$this->view->dados = $dados;
				$this->view->form = $this->getForm();

			}
		}
	}

	public function getvalorkmvistoriaAction(){
		$this->isAjax();
		$Model = $this->getModel();

		//$idGrupoVistoria = $Model->getGrupoVistoria($this->getRequest()->getParam('id_cultura'),$this->getRequest()->getParam('dt_vistoria'));
		$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('tipoVistoria');

		if($tipoVistoria == 'PREVIA' || $tipoVistoria == 'P' || $tipoVistoria == 'Previa'){
			$Model = $this->getModel('previa');
		}else{
			$Model = $this->getModel();
		}

		$dados = $Model->buscaDadosNotaFiscal($this->getRequest()->getParam('id'));
		
		$retorno = $this->montaDadosNotaEditView($dados, $tipoVistoria); 

		$this->view->form = $this->getForm();
		$this->view->dados = $retorno;

	}

	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 viewAction(){
		$this->getHelper('layout')->setLayout('popup');
		$tipoVistoria = $this->getRequest()->getParam('tipo');

		$Coberturas = new Produto_Model_Coberturas();

		if($tipoVistoria == 'PREVIA' || $tipoVistoria == 'P' || $tipoVistoria == 'Previa'){
			$Model = $this->getModel('previa');
		}else{
			$Model = $this->getModel();
		}

		$dados = $Model->buscaDadosNotaFiscal($this->getRequest()->getParam('id'));

		$retorno = $this->montaDadosNotaEditView($dados, $tipoVistoria);

		$this->view->id = $this->getRequest()->getParam('id');
		$this->view->tipoRelatorio = $this->getRequest()->getParam('tipo');
		$this->view->dados = $retorno;

	}

	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"]);

		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 {
			$return["status"] = false;
			$return["message"] = "É necessário informar a nota.";
		}

		$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 montaDadosNotaEditView($dados, $tipoVistoria){

		if($tipoVistoria == 'PREVIA' || $tipoVistoria == 'P' || $tipoVistoria == 'Previa'){
			$Model = $this->getModel('previa');
		}else{
			$Model = $this->getModel();
		}		
		
		$Coberturas = new Produto_Model_Coberturas();
		
		foreach($dados as $key => $vistoria){

			if($tipoVistoria == 'P'){
				$dados[$key]['itensAreaTotal'] = $Model->getAreaTotalVistoriada($dados[$key]['id_vistoria'],$dados[$key]['ds_safra']);
				$temPreliminar = false;
				$preliminarDispensada = false;
			}else{
				
				//gambizinha=> 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[$key]['id_produto'], $dados[$key]['id_cobertura']);
				$preliminarDispensada = $VistoriasAvisos->checkPreliminarDispensadaByIdVistoria($dados[$key]['id_vistoria']);				
				
				//área total dos ítens vistoriados
				$dados[$key]['itensAreaTotal'] = $dados[$key]['vl_area_vistoriada'];
			}

			//variáveis de apoio
			$dsChaveCobertura = $Coberturas->getChaveById($dados[$key]['id_cobertura']);

			if($dados[$key]['ds_nome_cultura'] == 'Maça' && $dsChaveCobertura == "COB_GRANIZO"){
				$idGrupoVistoria = $Model->getGrupoVistoriaEspecial($dados[$key]['dt_vistoria']);
			}else{

				$idGrupoVistoria = $Model->getGrupoVistoria($dados[$key]['id_cultura'],$dados[$key]['dt_vistoria']);
				//se o grupo é 6 ou 8(grãos) temos que verificar se os itens segurados são vistoriados por
				//homem ou por máquina. Se for por máquina, troco o id do grupo pra 7.

				if($idGrupoVistoria['id'] == 6 || $idGrupoVistoria['id'] == 8){
					
					$Safra = new Produto_Model_Safras();
					$ModelLF = $Safra->getSafraModel($dados[$key]['id_proposta'],'Lf003ItensSegurados');
					$ModelLf003 = new $ModelLF();					

					$grupoVistoriaRevisado = $ModelLf003->tipoAmostragem($dados[$key]['id_vistoria']);
					$idGrupoVistoria['id'] = $grupoVistoriaRevisado;
				}

			}
			
			$idTipoVistoria = $Model->getTipoVistoria($dados[$key]['tp_vistoria']);			
			
			if($dados[$key]['evento_nao_constatado'] && ($idTipoVistoria == 1) && (!$temPreliminar || $preliminarDispensada)){

				$idTipoVistoria = 2; //final vira preliminar

			}

			if($idGrupoVistoria['id'] == 0){
				$dados[$key]['vistoriaTotalHonorarios'] = 0;
				$dados[$key]['cobrarPorExcel'] = true;
			}else{

				//auxilia para calcular honorários
				$dados[$key]['id_grupo_vistoria'] = $idGrupoVistoria['id'];

				//valor total dos honorarios da vistoria
				$valores['idTipoVistoria'] = $idTipoVistoria;
				$valores['idGrupoVistoria'] = $idGrupoVistoria;
				$valores['itensAreaTotal'] = $dados[$key]['itensAreaTotal'];

				$valorVistoria = $Model->getValorVistoria($valores);

				//se a flag de multiplicar é true, multiplica o total da área pelo valor da vistoria
				if($valorVistoria['fl_multiplica_area']){
					$dados[$key]['vistoriaTotalHonorarios'] = ($dados[$key]['itensAreaTotal']*$valorVistoria['vl_custo_vistoria']);
				}else{
					$dados[$key]['vistoriaTotalHonorarios'] = $valorVistoria['vl_custo_vistoria'];
				}
			}
		}

		foreach($dados as $key => $value){
		    
			$proposta    = $value['id_proposta'];
			$tipo        = $value['tp_vistoria'];
			$data        = substr($value['dt_vistoria'],0,10);
			$id_vistoria = $value['id_vistoria'];
			$cobertura   = $value['id_cobertura'];

			if($tipo == 'Preliminar'){
			    foreach($dados as $chave => $valor){
			        $verificadata = 0;
			        if($key != $chave && $proposta == $valor['id_proposta'] && $id_vistoria != $valor['id_vistoria'] && $verificadata != 1 && $cobertura == $valor['id_cobertura']){
			            if(Agro_Util::contarDiasEntreDatas($data,substr($valor['dt_vistoria'],0,10)) <= 4 && Agro_Util::contarDiasEntreDatas($data,substr($valor['dt_vistoria'],0,10)) >= -4){
			                $dados[$key]['vistoriaTotalHonorarios'] = 0;
			                $verificadata = 1;
			            }
			        }
			    }
			}

			if($dados[$key]['itensAreaTotal'] == 0 && $dados[$key]['vistoriaTotalHonorarios'] != 0){
				$dados[$key]['vistoriaTotalHonorarios'] = 70.00;
			}

			$dados[$key]['tipoRelatorio'] = $tipoVistoria;
		}

		return $dados;
	}	

	public function getFilter() {
		$where = array();
		
		$where[] = array (
				'field' => 'id_seguradora',
				'operator' => '=',
				'value' => 6
			);	
		
		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' => 6
			);			
		
		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;
	}

}