<?php

class Sinistro_LiquidacaoController extends Agro_Controller_Action {

	public function init() {
		$this->view->title = 'Liquidação de Processos ';
	}

	public function getModel() {
		return new Sinistro_Model_Liquidacoes();
	}

	public function indexAction() {
		$this->view->back = 'javascript:history.back()';

		$dados = array();
		$dados['PARAMS'] = array();
		$dados['QUADRAS'] = array();

		$ModelLaudosFinais = new Sinistro_Model_LaudosFinais();
		$this->view->form = new Sinistro_Form_Liquidacao();
		
		$dados['PARAMS'] = $this->getRequest()->getParams();

		if ($this->getRequest()->getParam("id_liquidacao")) {
			$Model = $this->getModel();
			$Liquidacao = $Model->find($this->getRequest()->getParam("id_liquidacao"))->current();

			$dados['PARAMS']['ds_observacao'] = $Liquidacao->ds_observacao;
		}

		$dados['QUADRAS'] = $ModelLaudosFinais->getItens($dados['PARAMS']['id_proposta'], $dados['PARAMS']['id_processo'], $dados['PARAMS']['avulsa'], $dados['PARAMS']['id_cobertura']);

		$this->view->dados = $dados;
	}

	public function manualAction() {
		$this->view->back = 'javascript:history.back()';

		$Model = $this->getModel();

		$dados = array();
		$dados['PARAMS'] = $this->getRequest()->getParams();

		if ($this->getRequest()->getParam("id_liquidacao")) {
			$Liquidacao = $Model->find($this->getRequest()->getParam("id_liquidacao")) - current();
			$dados['PARAMS']['ds_observacao'] = $Liquidacao->ds_observacao;
		}

		$dados['QUADRAS'] = $Model->getItensLiquidacaoManual($dados['PARAMS']['id_proposta'], $dados['PARAMS']['id_processo'], $dados['PARAMS']['id_cobertura']);
		
		$this->view->form = new Sinistro_Form_Liquidacao();
		$this->view->dados = $dados;
	}

	public function liquidadosAction() {
		$ModelTipoLiquidacao = new Sinistro_Model_TipoLiquidacao();
		$ModelLiquidacao = new Sinistro_Model_Liquidacoes();
		$ModelProposta = new Seguro_Model_Propostas();

		$this->view->title .= '» Liquidados';

		$params = $this->getRequest()->getParams();
		$dados = $ModelLiquidacao->getLiquidacao($params['id_liquidacao']);

		$Proposta = $ModelProposta->find($dados["id_proposta"])->current();

		$dados["liq_pg"] = $Proposta->isPg();

		$this->view->back = '/sinistro/processo/view/id/' . $dados['id_processo'];

		//Busca os beneficiários
		$Beneficiarios = new Seguro_Model_PropostasBeneficiarios();
		$this->view->beneficiarios = $Beneficiarios->getBeneficiarios($dados['id_proposta']);

		//Busca as datas de encerramento
		$ModelEncerramento = new Sinistro_Model_AvisosEncerramento();
		$dataEncerramento = $ModelEncerramento->getDataEncerramentoItensSegurados($dados['id_proposta']);
		$this->view->dataEncerramento = $dataEncerramento;

		// Busca avisos pelo id da proposta
		$Aviso = new Sinistro_Model_AvisosSinistro();
		$this->view->avisos = $Aviso->getAvisosByProposta($dados['id_proposta'], 'ACEITO');

		// Busca os status de revisão
		$FormRevisao = new Sinistro_Form_LiquidacaoRevisao();
		$FormRevisao->populate($dados);

		$this->view->form = $FormRevisao;

		$this->view->dados = $dados;
	}

	public function liquidadosviewAction() {
		$this->getHelper('layout')->setLayout('popup');

		$ModelLiquidacao = new Sinistro_Model_Liquidacoes();
		$ModelProposta = new Seguro_Model_Propostas();

		$this->view->title .= '» Liquidados';
		$dados = array();

		$params = $this->getRequest()->getParams();
		$dados = $ModelLiquidacao->getLiquidacao($params['id_liquidacao']);

		$this->view->back = '/sinistro/processo/view/id/' . $dados['id_processo'];

		$this->view->dados = $dados;
	}

	public function printAction() {
		$this->getHelper('layout')->setLayout('popup');

		$ModelLiquidacao = new Sinistro_Model_Liquidacoes();
		$ModelProposta = new Seguro_Model_Propostas();

		$this->view->title .= '» Liquidados';
		$dados = array();

		$params = $this->getRequest()->getParams();

		$dados = $ModelLiquidacao->getLiquidacao($params['id_liquidacao']);

		$Proposta = $ModelProposta->find($dados["id_proposta"])->current();
		$dados["liq_pg"] = $Proposta->isPg();

		$ModelProcesso = new Sinistro_Model_Processos();
		$idProcesso = $params['id_processo'];
		$this->view->processo = $ModelProcesso->find($idProcesso)->current();
		$this->view->proposta = $this->view->processo->proposta();
		$this->view->proponente = $this->view->proposta->proponente();

		//Busca os beneficiários
		$Beneficiarios = new Seguro_Model_PropostasBeneficiarios();
		$this->view->beneficiarios = $Beneficiarios->getBeneficiarios($dados['id_proposta']);

		//Busca as datas de encerramento
		$ModelEncerramento = new Sinistro_Model_AvisosEncerramento();
		$dataEncerramento = $ModelEncerramento->getDataEncerramentoItensSegurados($dados['id_proposta']);
		$this->view->dataEncerramento = $dataEncerramento;

		// Busca avisos pelo id da proposta
		$Aviso = new Sinistro_Model_AvisosSinistro();
		$this->view->avisos = $Aviso->getAvisosByProposta($dados['id_proposta'], 'ACEITO');

		$TipoLiquidacao = new Sinistro_Model_TipoLiquidacao();
		if ($dados['id_tipo_liquidacao']) {
			$dados['ds_nome_liquidacao_avulsa'] = $TipoLiquidacao->getNomeLiquidacaoAvulsa($dados['id_tipo_liquidacao']);
		}

		$this->view->dados = $dados;
	}

	public function liquidadosreloadAction() {
		$this->isAjax(true);

		$ModelLiquidacao = new Sinistro_Model_Liquidacoes();
		$dados = array();

		$params = $this->getRequest()->getParams();
		$dados = $ModelLiquidacao->getLiquidacao($params['id_liquidacao']);

		$this->view->back = '/sinistro/processo/view/id/' . $dados['id_processo'];

		$this->view->dados = $dados;
	}

	public function liquidarAction() {
		$this->isAjax();

		$ModelProdutoCobertura = new Produto_Model_ProdutosCoberturas();
		$ModelLaudosFinais     = new Sinistro_Model_LaudosFinais();
		$ModelProposta         = new Seguro_Model_Propostas();
		$ModelSafras           = new Produto_Model_Safras();
		$ModelProduto          = new Produto_Model_Produtos();
		$ModelLiquidacaoStatus = new Sinistro_Model_LiquidacoesStatus();
		$LiqCob                = new Sinistro_Model_LiquidacoesItensSeguradosCoberturas();

		$return = array();

		$params = $this->getRequest()->getParams();

		try {
			$Proposta = $ModelProposta->find($params['id_proposta'])->current();

			$params['ds_chave_produto'] = $ModelProduto->getChaveProdutoById($Proposta->id_produto);
			
			if ($params['id_item_segurado']) {
				
				if($params['tp_liquidacao']){
					
					if ($params['id_cobertura']) {
						$TipoLiquidacao = $ModelProdutoCobertura->getTipoLiquidacao($Proposta->id_produto, $params['id_cobertura']);
					} else {
						$TipoLiquidacao = $ModelProdutoCobertura->getTipoLiquidacao($Proposta->id_produto, $Proposta->coberturaPrincipal());
					}
	
					$Liquidacoes = new Sinistro_Model_Liquidacoes();
	
					$params['id_liquidacao'] = $Liquidacoes->save(
							array(
								'id_liquidacao'      => $params['id_liquidacao'],
								'id_processo'        => $params['id_processo'],
								'tp_liquidacao'      => $params['tp_liquidacao'],
								'ds_observacao'      => $params['ds_observacao'],
								'id_tipo_liquidacao' => $TipoLiquidacao['id_tipo_liquidacao']
							)
					);
	
					$model = $ModelSafras->getSafraModel($params['id_proposta'], $TipoLiquidacao['ds_chave']);
					$Liquidacao = new $model();
	
					foreach ($params['id_item_segurado'] as $item_segurado) {
	
						$newParams = $params;
						$newParams['id_item_segurado'] = $item_segurado;
	
						$newParams['laudos'] = array();
						$newParams['laudos'] = $ModelLaudosFinais->getLaudos($params['id_processo'], $params['id_proposta'], $item_segurado, $params['avulsa'], false, $params['id_cobertura']);
	
						$return = $Liquidacao->liquidar($newParams);
	
						$return['id_liquidacao'] = $params['id_liquidacao'];
						$return['id_proposta']   = $params['id_proposta'];
						$return['id_processo']   = $params['id_processo'];
					}
					
					if (!$return['status']) {
						$ModelLiquidacaoStatus->delete($params['id_liquidacao'], "id_liquidacao");
						$Liquidacoes->delete($params['id_liquidacao']);
					}
				}else{
					$return['status'] = false;
					$return['message'] = "Selecione o tipo da liquidação!";
				}
			} else {
				$return['status'] = false;
				$return['message'] = "Selecione ao menos uma quadra para liquidar!";
			}
		} catch (Exception $e) {
			$return['status'] = false;
			$return['message'] = "Não foi possível liquidar. \nErro: {$e->getMessage()}";
		}

		$this->getResponse()->setBody(Zend_Json::encode($return));
	}

	public function liquidarmanualAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();

		$ModelProdutoCobertura = new Produto_Model_ProdutosCoberturas();
		$ModelLaudosFinais = new Sinistro_Model_LaudosFinais();
		$ModelProposta = new Seguro_Model_Propostas();
		$ModelSafras = new Produto_Model_Safras();
		$ModelProduto = new Produto_Model_Produtos();
		$ModelCoberturas = new Produto_Model_Coberturas();

		$return = array();

		$params = $this->getRequest()->getParams();

		$Proposta = $ModelProposta->find($params['id_proposta'])->current();

		$params['ds_chave_produto'] = $ModelProduto->getChaveProdutoById($Proposta->id_produto);

		if ($params['id_item_segurado']) {
			
			if($params['tp_liquidacao']){
			
				$valid = true;
				$message = array();
	
				foreach ($params['id_item_segurado'] as $item_segurado) {
	
					foreach ($params["coberturas-$item_segurado"] as $cobertura) {
						if (!$params["vl_prejuizo_total-$item_segurado-$cobertura"]) {
							$message[] = "- Item Segurado $item_segurado cobertura {$ModelCoberturas->getNameById($cobertura)}, prencher Prejuízo.";
						}
	
						if (!$params["vl_indenizacao-$item_segurado-$cobertura"]) {
							$message[] = "- Item Segurado $item_segurado cobertura {$ModelCoberturas->getNameById($cobertura)}, prencher Indenização.";
						}
					}
				}
	
				if (array_count_values($message)) {
					$valid = false;
					$return['status'] = false;
					$return['message'] = "É nessário preencher os seguintes valores: \n" . implode("\n", $message);
				}
	
				if ($valid) {
	
					if ($params['avulsa']) {
						$TipoLiquidacao = $ModelProdutoCobertura->getTipoLiquidacao($Proposta->id_produto, $params['id_cobertura']);
					} else {
						$TipoLiquidacao = $ModelProdutoCobertura->getTipoLiquidacao($Proposta->id_produto, $Proposta->coberturaPrincipal());
					}
	
					$Liquidacoes = new Sinistro_Model_Liquidacoes();
	
					$params['id_liquidacao'] = $Liquidacoes->save(
							array(
								'id_liquidacao' => $params['id_liquidacao'],
								'id_processo' => $params['id_processo'],
								'tp_liquidacao' => $params['tp_liquidacao'],
								'ds_observacao' => $params['ds_observacao'],
								'id_tipo_liquidacao' => 5
							)
					);
	
					$model = $ModelSafras->getSafraModel($params['id_proposta'], "LIQ05");
					$Liquidacao = new $model();
	
					foreach ($params['id_item_segurado'] as $item_segurado) {
	
						$newParams = $params;
						$newParams['id_item_segurado'] = $item_segurado;
	
						$return = $Liquidacao->liquidar($newParams);
	
						$return['id_liquidacao'] = $params['id_liquidacao'];
						$return['id_proposta'] = $params['id_proposta'];
						$return['id_processo'] = $params['id_processo'];
					}
	
					if (!$return['status']) {
						$Liquidacoes->delete($params['id_liquidacao']);
					}
				}
			}else{
				$return['status'] = false;
				$return['message'] = "Selecione o tipo da liquidação!";
			}
		} else {
			$return['status'] = false;
			$return['message'] = "Selecione ao menos uma quadra para liquidar!";
		}

		$this->getResponse()->setBody(Zend_Json::encode($return));
	}

	public function deleteliquidacaoAction() {
		$this->isAjax();

		if ($this->getRequest()->getParam('id_proposta') && $this->getRequest()->getParam('id_processo')) {
			if (is_array($this->getRequest()->getParam('liquidacoes'))) {
				$ModelLiquidacao = new Sinistro_Model_Liquidacoes();

				try {
					foreach ($this->getRequest()->getParam('liquidacoes') as $idLiquidacao) {
						$ModelLiquidacao->delete($idLiquidacao);
					}

					$return = array('status' => true, 'message' => MSG_SUCCESS);
				} catch (Exception $e) {
					$return = array('status' => false, 'message' => $e->getMessage());
				}
			} else {
				$return = array('status' => false, 'message' => 'Selecione ao menos uma quadra para liquidar');
			}
		} else {
			$return = array('status' => false, 'message' => 'Informe os dados ...');
		}

		$this->getResponse()->setBody(Zend_Json::encode($return));
	}

	public function atualizastatusliquidacaoAction() {
		$this->isAjax();

		if ($this->getRequest()->getParam('id') && $this->getRequest()->getParam('id_status')) {
			try {
				$Model         = $this->getModel();
				$LiqCob        = new Sinistro_Model_LiquidacoesItensSeguradosCoberturas();
				$ModelProposta = new Seguro_Model_Propostas();

				/*
				 * Distribui o valor TOTAL DA INDENIZAÇÃO entre os Beneficiaros da Proposta e Segurado
				 * Esses valores separados serão utilizados posteriormente pela Seguradora, para efetuar os pagamentos
				*/
				$idProposta      = $Model->getPropostaByLiquidacao($this->getRequest()->getParam('id'));
				$idCobertura     = $this->getRequest()->getParam('id_cobertura');
				$Proposta        = $ModelProposta->find($idProposta)->current();				
				$vlIndenizacao   = $LiqCob->getTotalIndenizacao($this->getRequest()->getParam('id'));				
				$Beneficiarios   = $Proposta->beneficiarios();
				$Proponente      = $Proposta->proponente();
				$ModelLiqPrevPag = new Nobre_Model_LiquidacoesPagamentoBeneficiarios();
				
				$count = 1;

				if(is_array($Beneficiarios) && ($idCobertura <> '16' && $idCobertura <> '5' && $idCobertura <> '11')){
					foreach($Beneficiarios as $benef){
						$somaBenef += $benef['vl_limite_beneficio'];
					}
						
					foreach($Beneficiarios as $benef){
						if($benef['ds_tipo_conta'] == 's'){
							$ds_nome_beneficiario = $benef['ds_nome_banco'];
						} else {
							$ds_nome_beneficiario = $benef['ds_nome_beneficiarios'];
						}
							
						if($count == 1){
							$percentBenef = round(($benef['vl_limite_beneficio'] / $somaBenef),4);
						} else {
							$percentBenef = 1 - $percentBenef;
						}
							
						$vlBenef = round(min($benef['vl_limite_beneficio'], ($vlIndenizacao * $percentBenef)),2);
							
						if($arBenef[$idProposta][$benef['nr_cpf_cnpj']] + $vlBenef > $benef['vl_limite_beneficio']){
							$vlBenef = $benef['vl_limite_beneficio'] - $arBenef[$idProposta][$benef['nr_cpf_cnpj']];
						}
							
						$totalBenef += ($vlBenef > 0 ? $vlBenef : '0.0');
							
						$arr[$count]['ds_nome_beneficiario']     = $ds_nome_beneficiario;
						$arr[$count]['ds_cpf_cnpj_beneficiario'] = $benef['nr_cpf_cnpj'];
						$arr[$count]['ds_valor_beneficiario']    = ($vlBenef > 0 ? $vlBenef : '0.0');
							
						$arBenef[$idProposta][$benef['nr_cpf_cnpj']] += $vlBenef;
							
						$count++;
					}
						
					$difBenef = $vlIndenizacao - $totalBenef;
					if($difBenef > 0.01 ){
						$arr[$count]['ds_nome_beneficiario']     = $Proponente['ds_nome_proponente'];
						$arr[$count]['ds_cpf_cnpj_beneficiario'] = $Proponente['cpf_cnpj'];
						$arr[$count]['ds_valor_beneficiario']    = $difBenef;
					}
						
				} else {
					$arr[$count]['ds_nome_beneficiario']     = $Proponente['ds_nome_proponente'];
					$arr[$count]['ds_cpf_cnpj_beneficiario'] = $Proponente['cpf_cnpj'];
					$arr[$count]['ds_valor_beneficiario']    = $vlIndenizacao['vl_indenizacao'];
				}

				$ModelLiqPrevPag->deleteInformacoesPagamento($this->getRequest()->getParam('id'));
				foreach($arr as $chave => $pagamento){
					$dados['id_liquidacao']            = $this->getRequest()->getParam('id');
					$dados['cpf_cnpj']                 = $pagamento['ds_cpf_cnpj_beneficiario'];
					$dados['ds_nome_beneficiario']     = $pagamento['ds_nome_beneficiario'];
					$dados['cd_liquidacao_seguradora'] = '99999';
					$dados['vl_estimado_pagamento']    = $pagamento['ds_valor_beneficiario'];
					$ModelLiqPrevPag->save($dados);
				}
				
				//$return = array('status' => 'liberar', 'message' => MSG_SUCCESS);
				

				if ($Model->atualizaStatusLiquidacao($this->getRequest()->getParam('id'), $this->getRequest()->getParam('id_status'))) {
					if ($this->getRequest()->getParam('id_status') == Agro_Util::getIdStatus("ENVIADA_SEGURADORA")) {
						$return = array('status' => 'liberar', 'message' => MSG_SUCCESS);
					} elseif ($this->getRequest()->getParam('id_status') == Agro_Util::getIdStatus("AGUARDANDO_ENVIO_SEGURADORA")) {
						$return = array('status' => 'desfazer', 'message' => MSG_SUCCESS);
					}
				}

			} catch (Exception $e) {
				$return = array('status' => false, 'message' => $e->getMessage());
			}

			$this->getResponse()->setBody(Zend_Json::encode($return));
		}
	}

	public function listaliquidacoesAction() {
		$this->isAjax(true);
		$Model = $this->getModel();
		$dados = array();

		if ($this->getRequest()->getParam('id_proposta') && $this->getRequest()->getParam('id_processo')) {
			$dados = $Model->getListaLiquidacoes($this->getRequest()->getParam('id_proposta'), $this->getRequest()->getParam('id_processo'))->toArray();
			$dados[0]['status'] = $Model->getStatusLiquidacao($dados[0]['id']);
		}

		$this->view->dados = $dados;
	}

	public function listaliquidacaopagtoAction() {
		$this->isAjax(true);
		$Model = $this->getModel();
		$dados = array();

		if ($this->getRequest()->getParam('id_liquidacao')) {
			$dados = $Model->getPagtoLiquidacao($this->getRequest()->getParam('id_liquidacao'))->toArray();
			if (count($dados)) {
				$dados[0]['status'] = $Model->getStatusLiquidacao($dados[0]['id']);
			}
		}
		$dados[0]['arquivo'] = $Model->getArquivoLiquidacao($dados[0]['id']);

		$this->view->dados = $dados;
	}

	public function deleteitemseguradocoberturaAction() {
		$this->isAjax();
		$Model = $this->getModel();
		if ($this->getRequest()->getParam('id_liquidacao') && $this->getRequest()->getParam('id_item_segurado')) {
			if ($Model->deleteItemSeguradoCobertura($this->getRequest()->getParam('id_liquidacao'), $this->getRequest()->getParam('id_item_segurado'))) {
				$return['status'] = true;
				;
				$return['id_proposta'] = $this->getRequest()->getParam('id_proposta');
				$return['id_processo'] = $this->getRequest()->getParam('id_processo');
				$return['id_liquidacao'] = $this->getRequest()->getParam('id_liquidacao');
				$return['id_cobertura'] = $this->getRequest()->getParam('id_cobertura');
				$return['avulso'] = 0;
				//$this->_forward("index", "liquidacao", "sinistro", array("id_proposta" => $this->getRequest()->getParam('id_proposta'),"id_processo" => $this->getRequest()->getParam('id_processo'), "id_cobertura" => $this->getRequest()->getParam('id_cobertura'), "avulsa" => 0));
			}
		} else {
			$return['message'] = 'Erro ao excluir a quadra.';
		}
		$this->getResponse()->setBody(Zend_Json::encode($return));
	}

	public function savefileliquidacaoAction() {
		$this->isAjax();
		$adapter = new Zend_File_Transfer_Adapter_Http();

		$Processo = new Sinistro_Model_Processos();
		$RowProcesso = $Processo->find($this->getRequest()->getParam('id_processo'));

		if ($_FILES) {
			$extensao = strtolower(end(explode('.', $_FILES['arquivoLiquidacao']['name'])));
			$tempFile = $_FILES['arquivoLiquidacao']['tmp_name'];
			$nomeArquivo = $this->getRequest()->getParam('id_liquidacao') . "_" . $RowProcesso[0]['id_proposta'] . "_LIQUIDACAO." . $extensao;
			$target = PATH_LIQUIDACAO . "/" . $nomeArquivo;

			$adapter->addFilter('Rename', array(
				'source' => $tempFile,
				'target' => $target,
				'overwrite' => true)
			);

			if ($adapter->receive()) {
				$LiquidacaoArquivos = new Sinistro_Model_Liquidacoes();
				if ($LiquidacaoArquivos->saveArquivoLiquidacao($nomeArquivo, $this->getRequest()->getParam('id_liquidacao'))) {

					$target = APPLICATION_PATH . '/upload_files/sinistro_processo/' . $nomeArquivo;

					// Faz o upload do arquivo
					$adapter->addFilter('Rename', array(
						'source' => $tempFile,
						'target' => $target,
						'overwrite' => true)
					);
					$adapter->receive();

					// Salva registro na tabela processos_arquivos
					$ProcessoArquivo = new Sinistro_Model_ProcessosArquivos();
					$id = $ProcessoArquivo->nextSequenceId();

					$data = array();
					$data['id'] = $id;
					$data['id_processo'] = $this->getRequest()->getParam('id_processo');
					$data['id_tipo_arquivo'] = 18; //LIQUIDACAO
					$data['ds_nome_arquivo'] = $nomeArquivo;

					$ProcessoArquivo->insert($data);

					$this->_redirect('/sinistro/processo/view/id/' . $this->getRequest()->getParam('id_processo'));
				}
			} else {
				die('Não foi possível salvar o arquivo.');
			}
		}
	}

	public function listahistoricostatusAction() {
		$this->isAjax(true);
		$Model = new Sinistro_Model_LiquidacoesStatus();
		$dados = $Model->listaHistoricoStatus($this->getRequest()->getParam('id_liquidacao'));
		$this->view->dados = $dados;
	}

	public function getarquivosliquidacaoAction() {
		$this->isAjax(true);
		$Model = new Sinistro_Model_Liquidacoes();
		$dados = $Model->getArquivoLiquidacao($this->getRequest()->getParam('id_liquidacao'));

		$this->view->dados = $dados;
	}

	public function deletearquivoliquidacaoAction() {
		$this->isAjax();
		$sanitizedPath = APPLICATION_PATH . "/upload_files/" . $this->getRequest()->getParam('path') . "/" . $this->getRequest()->getParam('nome');

		if (file_exists($sanitizedPath) && unlink($sanitizedPath)) {
			$Model = $this->getModel();
			$Model->deleteArquivoLiquidacao($this->getRequest()->getParam('id'));
			$return['message'] = 'Arquivo excluído com sucesso!';
		}
		$this->getResponse()->setBody(Zend_Json::encode($return));
	}

	
	public function confirmaexclusaoAction() {
		$this->isAjax(true);
		
		$this->view->form = new Sinistro_Form_LiquidacaoExclusao();
		$this->view->dados = $this->getRequest()->getParams();
		
	}

	public function deleteAction() {
		$this->isAjax();

		$Model = $this->getModel();
		$dados = $this->getRequest()->getParams();

		Zend_Db_Table::getDefaultAdapter()->beginTransaction();

		try {
			
			$adapter = new Zend_File_Transfer_Adapter_Http();
	
			if ($_FILES) {
				$extensao = strtolower(end(explode('.', $_FILES['ds_arquivo']['name'])));
				$tempFile = $_FILES['ds_arquivo']['tmp_name'];
				$dados['ds_nome_arquivo'] = $dados['id_proposta'] . "_". $dados['id_liquidacao'] .".". $extensao;
				$target = APPLICATION_PATH."/upload_files/sinistro_processo/" . $dados['ds_nome_arquivo'];
	
				$adapter->addFilter('Rename', array(
					'source' => $tempFile,
					'target' => $target,
					'overwrite' => true)
				);

				if (!$adapter->receive()) {
					die('Não foi possível salvar o arquivo.');
				}
			}			

			if ($Model->beforeDelete($dados)) {
				$return['message'] = "Liquidação excluída com sucesso!";
				Zend_Db_Table::getDefaultAdapter()->commit();				
				
			} else {
				$return['message'] = "Erro ao excluir liquidação!\nErro: {$Model->getMessage()}";
				Zend_Db_Table::getDefaultAdapter()->rollBack();
			}
		} catch (Exception $e) {
			$return['message'] = "Erro ao excluir liquidação!\nErro: {$e->getMessage()}";
			Zend_Db_Table::getDefaultAdapter()->rollBack();
		}

		$this->getResponse()->setBody(Zend_Json::encode($return));
	}
	
	public function observacaostatusAction(){
		$this->isAjax(true);
		$this->view->dados = $this->getRequest()->getParams();
	}
	
	
	public function savestatusliquidacaoAction(){

		$this->isAjax();
		$dados = $this->getRequest()->getParams();

		$Model = $this->getModel();

		try {
			if ($Model->save($dados)) {
				$return['message'] = "Status alterado com sucesso!";

			} else {
				$return['message'] = "Erro ao alterar status!\nErro: {$Model->getMessage()}";

			}
		} catch (Exception $e) {
			$return['message'] = "Erro ao alterar status!\nErro: {$e->getMessage()}";

		}

		$this->getResponse()->setBody(Zend_Json::encode($return));
		
	}
	
	//Atualiza a observação da liquidação
	public function updateobservacaoAction() {
		$this->isAjax();
		$Model = $this->getModel();
		
		try {
			$Row = $Model->find($this->getRequest()->getParam('id_liquidacao'))->current();
			$Row->ds_observacao = $this->getRequest()->getParam('ds_observacao');
			$Row->save();
			$return['message'] = "Observação alterada com sucesso!";
		} catch (Exception $e) {
			$return['message'] = "Erro ao alterar a observação!\nErro: {$e->getMessage()}";
		}
		
		$this->getResponse()->setBody(Zend_Json::encode($return));
	}

}

