<?php
require_once 'sistema/controllers/TreinamentoController.php';

use Shuchkin\SimpleXLSXGen;

class Relatorio_SinistroController extends Agro_Controller_Report {

    private $titlesLiquidacao = [
        'id_liquidacao' => 'Liquidação',
        'id_processo' => 'Processo Agro',
        'id_proposta' => 'Proposta',
        'id_sinistro_seguradora' => 'Sinistro Essor',
        'nr_apolice' => 'Apólice',
        'id_aviso' => 'Nros. Avisos',
        'ds_nome_evento' => 'Eventos',
        'ds_nome_proponente' => 'Segurado',
        'cpf_cnpj' => 'CPF/CNPJ',
        'ds_nome_abreviado' => 'Corretor',
        'id_liquidacao' => 'Nr. Liquidação',
        'ds_nome_proponente' => 'Segurado',
        'vl_indenizacao' => 'Valor Estimado de Indenização',
        'ds_nome_cobertura' => 'Cobertura',
        'ds_status' => 'Status',
        'motivos_sem_indenizacao' => 'Motivo sem indenização',
        'ds_nome_produto' => 'Produto',
        'ds_nome_safra' => 'Safra',
        'ds_nome_municipio' => 'Município',
        'ds_sigla' => 'UF',
        'tp_liquidacao' => 'Tipo',
        'dt_base_pagamento' => 'Dt. Base Pagamento',
        'dt_encerramento_colheita' => 'Dt. Encerramento Colheita',
        'dt_aviso_final_replantio' => 'Aviso Final Replantio',
        'ds_nome_beneficiario_1' => 'Beneficiário 1 Nome',
        'ds_cpf_cnpj_beneficiario_1' => 'Beneficiário 1 CPF/CNPJ',
        'ds_valor_beneficiario_1' => 'Beneficiário 1 Valor',
        'nu_conta_corrente_1' => 'Conta',
        'nu_digito_conta_corrente_1' => 'Digito',
        'nu_agencia_1' => 'Agência',
        'nu_digito_agencia_1' => 'Digito',
        'nr_banco_1' => 'Número Banco',
        'ds_tipo_conta_1' => 'Tipo de Conta',
        'fl_conta_conjunta_1' => 'Conta Conjunta',
        'ds_nome_beneficiario_2' => 'Beneficiário 2 Nome',
        'ds_cpf_cnpj_beneficiario_2' => 'Beneficiário 2 CPF/CNPJ',
        'ds_valor_beneficiario_2' => 'Beneficiário 2 Valor',
        'nu_conta_corrente_2' => 'Conta',
        'nu_digito_conta_corrente_2' => 'Digito',
        'nu_agencia_2' => 'Agência',
        'nu_digito_agencia_2' => 'Digito',
        'nr_banco_2' => 'Número Banco',
        'ds_tipo_conta_2' => 'Tipo de Conta',
        'fl_conta_conjunta_2' => 'Conta Conjunta',
        'ds_nome_beneficiario_3' => 'Beneficiário 3 Nome',
        'ds_cpf_cnpj_beneficiario_3' => 'Beneficiário 3 CPF/CNPJ',
        'ds_valor_beneficiario_3' => 'Beneficiário 3 Valor',
        'nu_conta_corrente_3' => 'Conta',
        'nu_digito_conta_corrente_3' => 'Digito',
        'nu_agencia_3' => 'Agência',
        'nu_digito_agencia_3' => 'Digito',
        'nr_banco_3' => 'Número Banco'
    ];

    public function init() {
        $this->view->title = 'Relatórios » Sinistro » Relatórios disponíveis';
        ini_set('memory_limit','2048M');
        ini_set('max_execution_time',360);
    }

    public function processosAction() {

        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();
        $parametros = $this->getRequest()->getParams();

        $modelSinistro = new Relatorio_Model_Sinistro();
        $rs = $modelSinistro->relatorioProcessos($parametros['id_safra'], $parametros['id_produto']);

        $dados = $parametros['tipoRelatorio'] == 'COMPLETO' ? $this->getDadosRelatorioProcessosCompleto($rs) :  $this->getDadosRelatorioProcessos($rs);
        $colunas = $parametros['tipoRelatorio'] == 'COMPLETO' ? $this->getColunasRelatorioProcessosCompleto() :  $this->getColunasRelatorioProcessos();

        $format = array(
            'processo' => array('align' => 'center'),
            'proposta' => array('align' => 'center'),
            'apolice' => array('align' => 'center'),
            'segurado' => array('align' => 'left'),
            'empresa' => array('align' => 'left'),
            'data_abertura' => array('align' => 'center'),
            'produto' => array('align' => 'left')
        );

        switch ($parametros['tipo']) {
            case 'excel':
                $csv = new Agro_Plugin_Rs2Csv();
                $csv->setRecordSet($dados);
                $csv->setType("application/octet-stream");
                $csv->setFileName("relatorio_processos.csv");
                $csv->setDisposition("attachment");
                $csv->setTitles($colunas);
                $csv->setSeparator(";");
                $csv->getCsv();
                break;
            case 'html':
                $html = new Agro_Plugin_Rs2Html();
                $html->setRecordSet($dados);
                $html->setTitles($colunas);
                $html->setFormat($format);
                $html->getHtml();
                break;
        }
    }

    /**
     * Retorna os dados completos do relatório de processos contendo a data de envio do aviso e os nomes dos eventos
     *
     * @param array $rs
     * @return array
     */
    private function getDadosRelatorioProcessosCompleto(array $rs): array
    {
        $modelSinistro = new Relatorio_Model_Sinistro();

        $arr = array();
		$temp  = " CREATE TEMP TABLE nomes_eventos_temp AS ( ";
		$temp .= "	SELECT string_agg(ds_nome_evento::text, ', ') AS ds_eventos, ";
		$temp .= "		   id_aviso ";
		$temp .= "	  FROM produto.eventos ";
		$temp .= "	  JOIN sinistro.avisos_eventos ON avisos_eventos.id_evento = eventos.id ";
		$temp .= "	  GROUP BY id_aviso ); ";

		Agro_Db_Table_Abstract::getDefaultAdapter()->query($temp);

        foreach($rs as $row) {
            $arr[$row['processo']]['processo']               = $row['processo'];
            $arr[$row['processo']]['id_processo_seguradora'] = $row['id_processo_seguradora'];
            $arr[$row['processo']]['proposta']               = $row['proposta'];
            $arr[$row['processo']]['apolice']                = $row['apolice'];
            $arr[$row['processo']]['id_proponente']          = $row['id_proponente'];
            $arr[$row['processo']]['empresa']                = $row['empresa'];
            $arr[$row['processo']]['data_abertura']          = $row['data_abertura'];
            $arr[$row['processo']]['produto']                = $row['produto'];
            $arr[$row['processo']]['status_proposta']        = $row['status_proposta'];
            $arr[$row['processo']]['status_processo']        = $row['status_processo'];
            $arr[$row['processo']]['ds_nome_usuario_responsavel_liquidacao'] = $row['ds_nome_usuario_responsavel_liquidacao'];

            $rsAvisos = $modelSinistro->getAvisoProcessoCompleto($row['id_proposta_original']);
            $i = 1;
            foreach($rsAvisos as $rowAviso) {
                $arr[$row['processo']]['id_aviso_'.$i] = $rowAviso['id'];
                $arr[$row['processo']]['dt_aviso_'.$i] = $rowAviso['dt_sinistro'];
                $arr[$row['processo']]['dt_envio_aviso_'.$i] = $rowAviso['dt_envio_aviso'];
                $arr[$row['processo']]['ds_eventos_'.$i] = $rowAviso['ds_eventos'];
                $i++;
            }
        }

        return $arr;
    }

    /**
     * Retorna as colunas do relatório completo de processos
     *
     * @return array
     */
    private function getColunasRelatorioProcessosCompleto(): array
    {
        return [
            'processo' => 'Processo',
            'id_processo_seguradora' => 'Processo Nobre',
            'proposta' => 'Proposta',
            'apolice' => 'Apólice',
            'id_proponente' => 'ID Segurado',
            'empresa' => 'Empresa',
            'data_abertura' => 'Data de Abertura',
            'produto' => 'Produto',
            'status_proposta' => 'Status Proposta',
            'status_processo' => 'Status Processo',
            'ds_nome_usuario_responsavel_liquidacao' => 'Resp. Liquidação',
            'id_aviso_1' => '1º Aviso',
            'dt_aviso_1' => '1º Data Sinistro',
            'dt_envio_aviso_1' => '1º Data Envio',
            'ds_eventos_1' => '1º Evento',
            'id_aviso_2' => '2º Aviso',
            'dt_aviso_2' => '2º Data Sinistro',
            'dt_envio_aviso_2' => '2º Data Envio',
            'ds_eventos_2' => '2º Evento',
            'id_aviso_3' => '3º Aviso',
            'dt_aviso_3' => '3º Data Sinistro',
            'dt_envio_aviso_3' => '3º Data Envio',
            'ds_eventos_3' => '3º Evento',
            'id_aviso_4' => '4º Aviso',
            'dt_aviso_4' => '4º Data Sinistro',
            'dt_envio_aviso_4' => '4º Data Envio',
            'ds_eventos_4' => '4º Evento',
            'id_aviso_5' => '5º Aviso',
            'dt_aviso_5' => '5º Data Sinistro',
            'dt_envio_aviso_5' => '5º Data Envio',
            'ds_eventos_5' => '5º Evento',
            'id_aviso_6' => '6º Aviso',
            'dt_aviso_6' => '6º Data Sinistro',
            'dt_envio_aviso_6' => '6º Data Envio',
            'ds_eventos_6' => '6º Evento',
            'id_aviso_7' => '7º Aviso',
            'dt_aviso_7' => '7º Data Sinistro',
            'dt_envio_aviso_7' => '7º Data Envio',
            'ds_eventos_7' => '7º Evento',
            'id_aviso_8' => '8º Aviso',
            'dt_aviso_8' => '8º Data Sinistro',
            'dt_envio_aviso_8' => '8º Data Envio',
            'ds_eventos_8' => '8º Evento',
            'id_aviso_9' => '9º Aviso',
            'dt_aviso_9' => '9º Data Sinistro',
            'dt_envio_aviso_9' => '9º Data Envio',
            'ds_eventos_9' => '9º Evento',
            'id_aviso_10' => '10º Aviso',
            'dt_aviso_10' => '10º Data Sinistro',
            'dt_envio_aviso_10' => '10º Data Envio',
            'ds_eventos10' => '10º Evento',
            'id_aviso_11' => '11º Aviso',
            'dt_aviso_11' => '11º Data Sinistro',
            'dt_envio_aviso_11' => '11º Data Envio',
            'ds_eventos11' => '11º Evento',
            'id_aviso_12' => '12º Aviso',
            'dt_aviso_12' => '12º Data Sinistro',
            'dt_envio_aviso_12' => '12º Data Envio',
            'ds_eventos12' => '12º Evento',
        ];
    }

    /**
     * Retorna os dados do relatório de processos
     *
     * @param array $rs
     * @return array
     */
    private function getDadosRelatorioProcessos(array $rs): array
    {
        $modelSinistro = new Relatorio_Model_Sinistro();
        $arr = array();

        foreach($rs as $row) {
            $arr[$row['processo']]['processo']               = $row['processo'];
            $arr[$row['processo']]['id_processo_seguradora'] = $row['id_processo_seguradora'];
            $arr[$row['processo']]['proposta']               = $row['proposta'];
            $arr[$row['processo']]['apolice']                = $row['apolice'];
            $arr[$row['processo']]['id_proponente']          = $row['id_proponente'];
            $arr[$row['processo']]['empresa']                = $row['empresa'];
            $arr[$row['processo']]['data_abertura']          = $row['data_abertura'];
            $arr[$row['processo']]['produto']                = $row['produto'];
            $arr[$row['processo']]['status_proposta']        = $row['status_proposta'];
            $arr[$row['processo']]['status_processo']        = $row['status_processo'];
            $arr[$row['processo']]['ds_nome_usuario_responsavel_liquidacao'] = $row['ds_nome_usuario_responsavel_liquidacao'];

            $rsAvisos = $modelSinistro->getAvisosProcesso($row['id_proposta_original']);
            $i = 1;
            foreach($rsAvisos as $rowAviso) {
                $arr[$row['processo']]['id_aviso_'.$i] = $rowAviso['id'];
                $arr[$row['processo']]['dt_aviso_'.$i] = $rowAviso['dt_sinistro'];
                $i++;
            }
        }

        return $arr;
    }

    private function processarRelatorios($relatorio)
    {
        $arr = array();
        foreach($relatorio as $Row) {

        	$ds_nome_preposto = "-";
        	if($Row['tp_usuario'] == 'P'){
        		$ds_nome_preposto = $Row['ds_nome_preposto'];
        	}

            $arr[$Row['id_aviso']]['id_processo']           = $Row['id_processo'];
            $arr[$Row['id_aviso']]['id_processo_seguradora']= $Row['id_processo_seguradora'];
            $arr[$Row['id_aviso']]['status_processo']       = $Row['status_processo'];
            $arr[$Row['id_aviso']]['id_aviso']              = $Row['id_aviso'];
            $arr[$Row['id_aviso']]['dt_aceitacao']          = $Row['dt_aceitacao'];
            $arr[$Row['id_aviso']]['dt_aceitacao_hora']     = $Row['dt_aceitacao_hora'];
            $arr[$Row['id_aviso']]['ds_usuario_alteracao']  = $Row['ds_usuario_alteracao'];
            $arr[$Row['id_aviso']]['dt_sinistro']           = $Row['dt_sinistro'];
            $arr[$Row['id_aviso']]['dt_criacao']       		= $Row['dt_criacao'];
            $arr[$Row['id_aviso']]['dt_agendamento']		= $Row['dt_agendamento'];
            $arr[$Row['id_aviso']]['id_proposta']           = $Row['id_proposta'];
            $arr[$Row['id_aviso']]['nr_apolice']            = $Row['nr_apolice'];
            $arr[$Row['id_aviso']]['ds_nome_safra']        	= $Row['ds_nome_safra'];
            $arr[$Row['id_aviso']]['ds_nome_usuario']       = $Row['ds_nome_usuario'];
            $arr[$Row['id_aviso']]['ds_nome_proponente']    = $Row['id_preposto'];
            $arr[$Row['id_aviso']]['soma_lmga']             = $Row['soma_lmga'];
            $arr[$Row['id_aviso']]['soma_area']             = $Row['soma_area'];
            $arr[$Row['id_aviso']]['ds_nome_produto']       = $Row['ds_nome_produto'];
            $arr[$Row['id_aviso']]['municipio_propriedade'] = $Row['municipio_propriedade'];
            $arr[$Row['id_aviso']]['uf_propriedade']        = $Row['uf_propriedade'];
            $arr[$Row['id_aviso']]['ds_nome_fantasia']      = $Row['ds_nome_fantasia'];
            $arr[$Row['id_aviso']]['municipio_empresa']     = $Row['municipio_empresa'];
            $arr[$Row['id_aviso']]['uf_empresa']            = $Row['uf_empresa'];
            $arr[$Row['id_aviso']]['ds_chave']              = $Row['ds_chave'];
            $arr[$Row['id_aviso']]['ds_nome_abreviado']     = $Row['ds_nome_abreviado'];
            $arr[$Row['id_aviso']]['ds_nome_preposto']      = $ds_nome_preposto;
            $arr[$Row['id_aviso']]['ds_nome_usuario']       = $Row['ds_nome_abreviado'];
            $arr[$Row['id_aviso']]['empresa_previa']        = $Row['empresa_previa'];
            $arr[$Row['id_aviso']]['ds_evento']             = $Row['ds_eventos'];
            $arr[$Row['id_aviso']]['ds_tipo_recusa']        = $Row['ds_tipo_recusa'];
            $arr[$Row['id_aviso']]['ds_motivo_recusa']      = preg_replace( "/\r|\n/", "",$Row['ds_motivo_recusa']);
            $arr[$Row['id_aviso']]['ds_motivo_cancelamento']= preg_replace( "/\r|\n/", "",$Row['ds_motivo_cancelamento']);
            $arr[$Row['id_aviso']]['fl_transmissao_seguradora']     = ($Row['fl_transmissao_seguradora'] ? 'Sim' : 'Não');
			$arr[$Row['id_aviso']]['fl_ocorrencia_replantio']       = ($Row['fl_ocorrencia_replantio'] ? 'Sim' : 'Não');
			$arr[$Row['id_aviso']]['fl_ocorrencia_queda_parreiral'] = ($Row['fl_ocorrencia_queda_parreiral'] ? 'Sim' : 'Não');
        }

        return $arr;
    }

    public function gerarArquivoCsv($Csv, $recordSet, $titles, $safraNome) {
        $Csv->setRecordSet($recordSet);
        $Csv->setType("application/octet-stream");
        $Csv->setTitles($titles);
        $Csv->setSeparator(";");
        $Csv->saveDailyReport($safraNome);


        $filePath = APPLICATION_PATH . "/upload_files/relatorio/{$Csv->getFileName()}";
        if (!file_exists($filePath) || filesize($filePath) == 0) {
            throw new Exception("O arquivo CSV está vazio ou não foi criado. [Path: {$filePath}]");
        }
        $fileContent = file_get_contents($filePath);
        if ($fileContent === false) {
            throw new Exception("Não foi possível ler o conteúdo do arquivo CSV. [Path: {$filePath}]");
        }

        $attachment = new Zend_Mime_Part($fileContent);
        $attachment->type = mime_content_type($filePath);
        $attachment->disposition = Zend_Mime::DISPOSITION_ATTACHMENT;
        $attachment->encoding = Zend_Mime::ENCODING_BASE64;
        $attachment->filename = basename($filePath);
        return $attachment;
    }

    public function rotinaavisosAction(){
        try{
            $this->getHelper('ViewRenderer')->setNoRender();
            $this->getHelper('layout')->disableLayout();
  
            $safraAtual = (new Produto_Model_Safras())->getSafraAtual();
            $safraAnterior = (new Produto_Model_Safras())->getSafra(($safraAtual['id'] - 1));
    
            $Model = new Relatorio_Model_Sinistro();
            $relatoriosSafraAtual = $Model->relatorioAvisosAutomatico(
              $safraAtual['id'],
              NULL,
              [],
              [],
              NULL
            );
            $relatoriosSafraAnterior = $Model->relatorioAvisosAutomatico(
                $safraAnterior['id'],
                NULL,
                [],
                [],
                NULL
            );
    
            $arr = $this->processarRelatorios($relatoriosSafraAtual);
            $arr2 = $this->processarRelatorios($relatoriosSafraAnterior);
    
            $User = Zend_Auth::getInstance()->getIdentity();
    
            if ($User->tp_usuario == 'V') {
                $titles = array(
                    'id_processo' => 'Processo',
                    'id_processo_seguradora' => 'Processo Seguradora',
                    'status_processo' => 'Status Processo',
                    'id_aviso' => 'Aviso',
                    'dt_aceitacao' => 'Data Aceitação/Recusa',
                    'dt_aceitacao_hora' => 'Data Aceitação (hora)',
                    'ds_usuario_alteracao' => 'Usuário Aceitação',
                    'dt_sinistro' => 'Data Sinistro',
                    'dt_criacao' => 'Data Aviso',
                    'dt_agendamento' => 'Data Agendamento',
                    'id_proposta' => 'Proposta',
                       'nr_apolice' => 'Apólice',
                    'ds_nome_safra' => 'Safra',
                    'ds_nome_proponente' => 'Segurado',
                    'soma_area' => 'Área',
                    'ds_nome_produto' => 'Produto',
                    'municipio_propriedade' => 'Município',
                    'uf_propriedade' => 'UF',
                    'ds_nome_fantasia' => 'Empresa',
                    'ds_chave' => 'Status',
                    'ds_evento' => 'Evento(s)'
                );
            } else {
                $titles = array(
                    'id_processo' => 'Processo',
                    'id_processo_seguradora' => 'Processo Seguradora',
                    'status_processo' => 'Status Processo',
                    'id_aviso' => 'Aviso',
                    'dt_aceitacao' => 'Data Aceitação/Recusa',
                    'dt_aceitacao_hora' => 'Data Aceitação (hora)',
                    'ds_usuario_alteracao' => 'Usuário Última Movimentação',
                    'dt_sinistro' => 'Data Sinistro',
                    'dt_criacao' => 'Data Aviso',
                    'dt_agendamento' => 'Data Agendamento',
                    'ds_nome_usuario' => 'Digitador',
                    'id_proposta' => 'Proposta',
                    'nr_apolice' => 'Apólice',
                    'ds_nome_safra' => 'Safra',
                    'ds_nome_proponente' => 'Segurado',
                    'ds_nome_abreviado' => 'Corretor',
                    'ds_nome_preposto' => 'Sublogin',
                    'soma_lmga' => 'LMGA',
                    'soma_area' => 'Área',
                    'ds_nome_produto' => 'Produto',
                    'municipio_propriedade' => 'Município',
                    'uf_propriedade' => 'UF',
                    'ds_nome_fantasia' => 'Empresa',
                    'municipio_empresa' => 'Mun. Empresa',
                    'uf_empresa' => 'UF Empresa',
                    'empresa_previa' => 'Empresa Prévia',
                    'ds_chave' => 'Status',
                    'ds_evento' => 'Evento(s)',
                    'ds_motivo_recusa' => 'Motivo Recusa',
                    'ds_tipo_recusa' => 'Tipo Recusa',
                    'ds_motivo_cancelamento' => 'Motivo Cancelamento',
                    'fl_transmissao_seguradora' => 'Transmitido?',
                    'fl_ocorrencia_replantio' => 'Replantio?',
                    'fl_ocorrencia_queda_parreiral' => 'Queda Parreiral?'
                );
            }
    
            $format = array(
                'id_processo' => array('align' => 'center'),
                'id_aviso' => array('align' => 'center'),
                'ds_nome_safra' => array('align' => 'center'),
                'dt_aceitacao' => array('align' => 'center'),
                'dt_aceitacao_hora' => array('align' => 'center'),
                'id_proposta' => array('align' => 'center'),
                'ds_nome_proponente' => array('align' => 'left'),
                'soma_lmga' => array('align' => 'right'),
                'soma_area' => array('align' => 'right'),
                'ds_nome_produto' => array('align' => 'left'),
                'municipio_propriedade' => array('align' => 'left'),
                'uf_propriedade' => array('align' => 'center'),
                'ds_nome_fantasia' => array('align' => 'left'),
                'municipio_empresa' => array('align' => 'left'),
                'uf_empresa' => array('align' => 'center'),
                'ds_chave' => array('align' => 'center')
            );
    
            $Csv = new Agro_Plugin_Rs2Csv();
            $anexoSafraAtual = $this->gerarArquivoCsv($Csv, $arr, $titles, $safraAtual['ds_nome_safra']);
            $anexoSafraAnterior = $this->gerarArquivoCsv($Csv, $arr2, $titles, $safraAnterior['ds_nome_safra']);
        
            $agroMail = new Agro_Mail();
            $agroMail->inicioTextoPadrao(false);
            $agroMail->addTo("karina.figueiro@agrobrasilseguros.com.br");
            $agroMail->addTo("karina.silva@agrobrasilseguros.com.br");
            $agroMail->addTo("luana.beck@agrobrasilseguros.com.br");
            $agroMail->addTo("tais.silveira@agrobrasilseguros.com.br");
            $agroMail->addTo("henrique.alves@agrobrasilseguros.com.br");
            $agroMail->addTo("diego.cecagno@agrobrasilseguros.com.br");
            $agroMail->addTo("sinistro@agrobrasilseguros.com.br");
            $agroMail->addTo("rodrigo.steil@agrobrasilseguros.com.br");
            
            $agroMail->setSubject("Relatorios de avisos de sinistros");
            $agroMail->setBody("Bom dia.\nSeguem os arquivos com os relatorios de Avisos de Sinistros da Safra anterior e atual.\nAtenciosamente. ");
            $agroMail->addAttachment($anexoSafraAtual);
            $agroMail->addAttachment($anexoSafraAnterior);
            $agroMail->send();

            return $this->getResponse()->setBody(Zend_Json::encode(['res'=>'Relatórios enviados com sucesso.']));
        }catch(Exception $e){
            return $this->getResponse()->setBody(Zend_Json::encode(['error'=>$e->getMessage()]));
            echo $e->getMessage();
        }
      
    }

    /**
     * Retorna as colunas do relatório de processos
     *
     * @return array
     */
    private function getColunasRelatorioProcessos(): array
    {
        return [
            'processo' => 'Processo',
            'id_processo_seguradora' => 'Processo Nobre',
            'proposta' => 'Proposta',
            'apolice' => 'Apólice',
            'id_proponente' => 'ID Segurado',
            'empresa' => 'Empresa',
            'data_abertura' => 'Data de Abertura',
            'produto' => 'Produto',
            'status_proposta' => 'Status Proposta',
            'status_processo' => 'Status Processo',
            'ds_nome_usuario_responsavel_liquidacao' => 'Resp. Liquidação',
            'id_aviso_1' => '1º Aviso',
            'dt_aviso_1' => '1º Data Sinistro',
            'id_aviso_2' => '2º Aviso',
            'dt_aviso_2' => '2º Data Sinistro',
            'id_aviso_3' => '3º Aviso',
            'dt_aviso_3' => '3º Data Sinistro',
            'id_aviso_4' => '4º Aviso',
            'dt_aviso_4' => '4º Data Sinistro',
            'id_aviso_5' => '5º Aviso',
            'dt_aviso_5' => '5º Data Sinistro',
            'id_aviso_6' => '6º Aviso',
            'dt_aviso_6' => '6º Data Sinistro',
            'id_aviso_7' => '7º Aviso',
            'dt_aviso_7' => '7º Data Sinistro',
            'id_aviso_8' => '8º Aviso',
            'dt_aviso_8' => '8º Data Sinistro',
            'id_aviso_9' => '9º Aviso',
            'dt_aviso_9' => '9º Data Sinistro',
            'id_aviso_10' => '10º Aviso',
            'dt_aviso_10' => '10º Data Sinistro',
            'id_aviso_11' => '11º Aviso',
            'dt_aviso_11' => '11º Data Sinistro',
            'id_aviso_12' => '12º Aviso',
            'dt_aviso_12' => '12º Data Sinistro',
        ];
    }

    public function avisosAction() {

        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $estado = !empty($this->getRequest()->getParam('id_estado')) ? $this->getRequest()->getParam('id_estado') : [];
        $municipio = !empty($this->getRequest()->getParam('id_municipio')) ? $this->getRequest()->getParam('id_municipio') : [];
        $empresa = !empty($this->getRequest()->getParam('id_empresa')) ? $this->getRequest()->getParam('id_empresa') : null;

        $Model = new Relatorio_Model_Sinistro();

        $Rs = $Model->relatorioAvisos(
          $this->getRequest()->getParam('id_safra'),
          $this->getRequest()->getParam('id_produto'),
          $estado,
          $municipio,
          $empresa
        );

        $arr = array();
        foreach($Rs as $Row) {

        	$ds_nome_preposto = "-";
        	if($Row['tp_usuario'] == 'P'){
        		$ds_nome_preposto = $Row['ds_nome_preposto'];

        	}

            $arr[$Row['id_aviso']]['id_processo']           = $Row['id_processo'];
            $arr[$Row['id_aviso']]['id_processo_seguradora']= $Row['id_processo_seguradora'];
            $arr[$Row['id_aviso']]['status_processo']       = $Row['status_processo'];
            $arr[$Row['id_aviso']]['id_aviso']              = $Row['id_aviso'];
            $arr[$Row['id_aviso']]['dt_aceitacao']          = $Row['dt_aceitacao'];
            $arr[$Row['id_aviso']]['dt_aceitacao_hora']     = $Row['dt_aceitacao_hora'];
            $arr[$Row['id_aviso']]['ds_usuario_alteracao']  = $Row['ds_usuario_alteracao'];
            $arr[$Row['id_aviso']]['dt_sinistro']           = $Row['dt_sinistro'];
            $arr[$Row['id_aviso']]['dt_criacao']       		= $Row['dt_criacao'];
            $arr[$Row['id_aviso']]['dt_agendamento']		= $Row['dt_agendamento'];
            $arr[$Row['id_aviso']]['id_proposta']           = $Row['id_proposta'];
            $arr[$Row['id_aviso']]['nr_apolice']            = $Row['nr_apolice'];
            $arr[$Row['id_aviso']]['ds_nome_safra']        	= $Row['ds_nome_safra'];
            $arr[$Row['id_aviso']]['ds_nome_usuario']       = $Row['ds_nome_usuario'];
            $arr[$Row['id_aviso']]['ds_nome_proponente']    = $Row['ds_nome_proponente'];
            $arr[$Row['id_aviso']]['soma_lmga']             = $Row['soma_lmga'];
            $arr[$Row['id_aviso']]['soma_area']             = $Row['soma_area'];
            $arr[$Row['id_aviso']]['ds_nome_produto']       = $Row['ds_nome_produto'];
            $arr[$Row['id_aviso']]['municipio_propriedade'] = $Row['municipio_propriedade'];
            $arr[$Row['id_aviso']]['uf_propriedade']        = $Row['uf_propriedade'];
            $arr[$Row['id_aviso']]['ds_nome_fantasia']      = $Row['ds_nome_fantasia'];
            $arr[$Row['id_aviso']]['municipio_empresa']     = $Row['municipio_empresa'];
            $arr[$Row['id_aviso']]['uf_empresa']            = $Row['uf_empresa'];
            $arr[$Row['id_aviso']]['ds_chave']              = $Row['ds_chave'];
            $arr[$Row['id_aviso']]['ds_nome_abreviado']     = $Row['ds_nome_abreviado'];
            $arr[$Row['id_aviso']]['ds_nome_preposto']      = $ds_nome_preposto;
            $arr[$Row['id_aviso']]['ds_nome_usuario']       = $Row['ds_nome_abreviado'];
            $arr[$Row['id_aviso']]['empresa_previa']        = $Row['empresa_previa'];
            $arr[$Row['id_aviso']]['ds_evento']             = $Row['ds_eventos'];
            $arr[$Row['id_aviso']]['ds_tipo_recusa']        = $Row['ds_tipo_recusa'];
            $arr[$Row['id_aviso']]['ds_motivo_recusa']      = preg_replace( "/\r|\n/", "",$Row['ds_motivo_recusa']);
            $arr[$Row['id_aviso']]['ds_motivo_cancelamento']= preg_replace( "/\r|\n/", "",$Row['ds_motivo_cancelamento']);
            $arr[$Row['id_aviso']]['fl_transmissao_seguradora']     = ($Row['fl_transmissao_seguradora'] ? 'Sim' : 'Não');
			$arr[$Row['id_aviso']]['fl_ocorrencia_replantio']       = ($Row['fl_ocorrencia_replantio'] ? 'Sim' : 'Não');
			$arr[$Row['id_aviso']]['fl_ocorrencia_queda_parreiral'] = ($Row['fl_ocorrencia_queda_parreiral'] ? 'Sim' : 'Não');
        }

        $User = Zend_Auth::getInstance()->getIdentity();

        if ($User->tp_usuario == 'V') {
            $titles = array(
                'id_processo' => 'Processo',
                'id_processo_seguradora' => 'Processo Seguradora',
                'status_processo' => 'Status Processo',
                'id_aviso' => 'Aviso',
                'dt_aceitacao' => 'Data Aceitação/Recusa',
                'dt_aceitacao_hora' => 'Data Aceitação (hora)',
                'ds_usuario_alteracao' => 'Usuário Aceitação',
                'dt_sinistro' => 'Data Sinistro',
				'dt_criacao' => 'Data Aviso',
            	'dt_agendamento' => 'Data Agendamento',
                'id_proposta' => 'Proposta',
           		'nr_apolice' => 'Apólice',
                'ds_nome_safra' => 'Safra',
                'ds_nome_proponente' => 'Segurado',
                'soma_area' => 'Área',
                'ds_nome_produto' => 'Produto',
                'municipio_propriedade' => 'Município',
                'uf_propriedade' => 'UF',
                'ds_nome_fantasia' => 'Empresa',
                'ds_chave' => 'Status',
                'ds_evento' => 'Evento(s)'
            );
        } else {
            $titles = array(
                'id_processo' => 'Processo',
                'id_processo_seguradora' => 'Processo Seguradora',
                'status_processo' => 'Status Processo',
                'id_aviso' => 'Aviso',
                'dt_aceitacao' => 'Data Aceitação/Recusa',
                'dt_aceitacao_hora' => 'Data Aceitação (hora)',
                'ds_usuario_alteracao' => 'Usuário Última Movimentação',
                'dt_sinistro' => 'Data Sinistro',
            	'dt_criacao' => 'Data Aviso',
            	'dt_agendamento' => 'Data Agendamento',
                'ds_nome_usuario' => 'Digitador',
                'id_proposta' => 'Proposta',
            	'nr_apolice' => 'Apólice',
                'ds_nome_safra' => 'Safra',
                'ds_nome_proponente' => 'Segurado',
                'ds_nome_abreviado' => 'Corretor',
            	'ds_nome_preposto' => 'Sublogin',
                'soma_lmga' => 'LMGA',
                'soma_area' => 'Área',
                'ds_nome_produto' => 'Produto',
                'municipio_propriedade' => 'Município',
                'uf_propriedade' => 'UF',
                'ds_nome_fantasia' => 'Empresa',
                'municipio_empresa' => 'Mun. Empresa',
                'uf_empresa' => 'UF Empresa',
                'empresa_previa' => 'Empresa Prévia',
                'ds_chave' => 'Status',
                'ds_evento' => 'Evento(s)',
                'ds_motivo_recusa' => 'Motivo Recusa',
            	'ds_tipo_recusa' => 'Tipo Recusa',
            	'ds_motivo_cancelamento' => 'Motivo Cancelamento',
            	'fl_transmissao_seguradora' => 'Transmitido?',
				'fl_ocorrencia_replantio' => 'Replantio?',
				'fl_ocorrencia_queda_parreiral' => 'Queda Parreiral?'
            );
        }

        $format = array(
            'id_processo' => array('align' => 'center'),
            'id_aviso' => array('align' => 'center'),
            'ds_nome_safra' => array('align' => 'center'),
            'dt_aceitacao' => array('align' => 'center'),
            'dt_aceitacao_hora' => array('align' => 'center'),
            'id_proposta' => array('align' => 'center'),
            'ds_nome_proponente' => array('align' => 'left'),
            'soma_lmga' => array('align' => 'right'),
            'soma_area' => array('align' => 'right'),
            'ds_nome_produto' => array('align' => 'left'),
            'municipio_propriedade' => array('align' => 'left'),
            'uf_propriedade' => array('align' => 'center'),
            'ds_nome_fantasia' => array('align' => 'left'),
            'municipio_empresa' => array('align' => 'left'),
            'uf_empresa' => array('align' => 'center'),
            'ds_chave' => array('align' => 'center')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($arr);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_avisos.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($arr);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function avisosnobreAction() {

    	$this->getHelper('ViewRenderer')->setNoRender();
    	$this->getHelper('layout')->disableLayout();

    	$Model = new Relatorio_Model_Sinistro();
    	$Rs = $Model->relatorioAvisosNobre($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

    	$count = 0;

    	$arr = array();
    	foreach($Rs as $Row) {
    		$arr[$count]['id_proposta']           = $Row['id_proposta'];
    		$arr[$count]['nr_apolice']            = $Row['nr_apolice'];
    		$arr[$count]['ds_nome_cultura']       = $Row['ds_nome_cultura'];
    		$arr[$count]['ds_nome_cobertura']     = $Row['ds_nome_cobertura'];
    		$arr[$count]['nr_item_segurado']      = $Row['nr_item_segurado'];
    		$arr[$count]['id_aviso']              = $Row['id_aviso'];
    		$arr[$count]['dt_sinistro']           = $Row['dt_sinistro'];
    		$arr[$count]['dt_criacao']       		= $Row['dt_criacao'];
    		$arr[$count]['ds_evento']             = $Row['ds_eventos'];
    		$arr[$count]['fl_transmissao_seguradora'] = ($Row['fl_transmissao_seguradora'] ? 'Sim' : 'Não');

    		$count++;
    	}

    	$titles = array(
    			'id_proposta' => 'Proposta',
    			'nr_apolice' => 'Apólice',
    			'ds_nome_cultura' => 'Cultura',
    			'id_aviso' => 'Aviso',
    			'dt_sinistro' => 'Data Sinistro',
    			'dt_criacao' => 'Data Aviso',
    			'ds_evento' => 'Evento(s)',
    			'nr_item_segurado' => 'Item',
    			'ds_nome_cobertura' => 'Cobertura',
    			'fl_transmissao_seguradora' => 'Enviado?'
    		);

    	$format = array(
    			'id_aviso' => array('align' => 'center'),
    			'id_proposta' => array('align' => 'center'),
    			'ds_nome_cultura' => array('align' => 'left'),
    			'ds_nome_cobertura' => array('align' => 'left'),
    			'nr_item_segurado' => array('align' => 'right'),
    			'fl_transmissao_seguradora' => array('align' => 'left')
    	);

    	switch ($this->getRequest()->getParam('tipo')) {
    		case 'excel':
    			$Csv = new Agro_Plugin_Rs2Csv();
    			$Csv->setRecordSet($arr);
    			$Csv->setType("application/octet-stream");
    			$Csv->setFileName("relatorio_avisos_nobre.csv");
    			$Csv->setDisposition("attachment");
    			$Csv->setTitles($titles);
    			$Csv->setSeparator(";");
    			$Csv->getCsv();
    			break;
    		case 'html':
    			$Html = new Agro_Plugin_Rs2Html();
    			$Html->setRecordSet($arr);
    			$Html->setTitles($titles);
    			$Html->setFormat($format);
    			$Html->getHtml();
    			break;
    	}
    }

    public function pendenciaavisoencerramentoAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->relatorioPendenciaAvisoEncerramento($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

        $titles = array(
            'id_proposta' => 'Proposta',
            'segurado' => 'Segurado',
            'processo' => 'Processo',
            'corretor' => 'Corretor',
            'sublogin' => 'Sublogin',
            'cultura' => 'Cultura',
            'ds_nome_municipio' => 'Município',
            'ds_sigla' => 'UF',
            'nr_itens' => 'Nr. Itens',
            'dt_vigencia_fim' => 'Final Vigência'
        );

        $format = array(
            'id_proposta' => array('align' => 'center'),
            'segurado' => array('align' => 'left'),
            'processo' => array('align' => 'center'),
            'corretor' => array('align' => 'left'),
            'sublogin' => array('align' => 'left'),
            'cultura' => array('align' => 'left'),
            'ds_nome_municipio' => array('align' => 'left'),
            'ds_sigla' => array('align' => 'center'),
            'nr_itens' => array('align' => 'center'),
            'dt_vigencia_fim' => array('align' => 'center')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($Rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_pendencia_aviso_encerramento.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($Rs);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }

    }

    public function finalreplantioAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();
        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->relatorioFinalReplantio($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));
        $user = Zend_Auth::getInstance()->getIdentity();

        $titles = array(
            'proposta' => 'Proposta',
            'apolice' => 'Apólice',
            'cultura' => 'Cultura',
            'corretor' => 'Corretor',
            'processo' => 'Processo',
            'empresa' => 'Empresa',
            'item' => 'Item',
            'quadra' => 'Quadra',
            'ds_nome_variedade' => 'Variedade',
            'dt_final_replantio' => 'Data Final Replantio',
            'dt_envio_replantio' => 'Data Envio Replantio'
        );

        $format = array(
            'proposta' => array('align' => 'center'),
            'apolice' => array('align' => 'center'),
            'cultura' => array('align' => 'left'),
            'corretor' => array('align' => 'left'),
            'processo' => array('align' => 'center'),
            'empresa' => array('align' => 'left'),
            'item' => array('align' => 'center'),
            'quadra' => array('align' => 'left'),
            'dt_final_replantio' => array('align' => 'center'),
            'dt_envio_replantio' => array('align' => 'center')
        );

        if (($user->tp_usuario == 'C') || ($user->tp_usuario == 'P')) {
            unset($titles['empresa']);
            unset($format['empresa']);
        }

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($Rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_encerramento.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($Rs);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }        
    }

    public function encerramentocolheitaAction() {

        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->relatorioEncerramentoColheita($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

        $titles = array(
            'proposta' => 'Proposta',
            'apolice' => 'Apólice',
            'cultura' => 'Cultura',
            'corretor' => 'Corretor',
            'processo' => 'Processo',
            'empresa' => 'Empresa',
            'item' => 'Item',
            'quadra' => 'Quadra',
            'ds_nome_variedade' => 'Variedade',
            'lmga' => 'LMGA',
            'data_encerramento' => 'Data de Encerramento',
            'data_envio_encerramento' => 'Envio Encerramento',
            'dt_vigencia_fim' => 'Data Final de Vigência'
        	/*,
            'count_indenizacoes' => 'Indenização (Cob. Principal)?',
            'count_indenizacoes_fito' => 'Indenização (Fito)?',
            'count_indenizacoes_prod_minima' => 'Indenização (Prod. Mínima)?',
            'count_indenizacoes_adicionais' => 'Outros?'*/
        );

        $format = array(
            'proposta' => array('align' => 'center'),
            'apolice' => array('align' => 'center'),
            'cultura' => array('align' => 'left'),
            'corretor' => array('align' => 'left'),
            'processo' => array('align' => 'center'),
            'empresa' => array('align' => 'left'),
            'item' => array('align' => 'center'),
            'quadra' => array('align' => 'left'),
            'lmga' => array('align' => 'right'),
            'data_encerramento' => array('align' => 'center'),
            'data_envio_encerramento' => array('align' => 'center'),
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($Rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_encerramento.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($Rs);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function iniciocolheitapendenteAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->relatorioIncioColheitaPendente($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

        $titles = array(
            'id_proposta' => 'Proposta',
            'segurado' => 'Segurado',
            'processo' => 'Processo',
            'corretor' => 'Corretor',
            'sublogin' => 'Sublogin',
            'cultura' => 'Cultura',
            'ds_nome_municipio' => 'Município',
            'ds_sigla' => 'UF',
            'nr_itens' => 'Nr. Itens'
        );

        $format = array(
            'id_proposta' => array('align' => 'center'),
            'segurado' => array('align' => 'left'),
            'processo' => array('align' => 'center'),
            'corretor' => array('align' => 'left'),
            'sublogin' => array('align' => 'left'),
            'cultura' => array('align' => 'left'),
            'ds_nome_municipio' => array('align' => 'left'),
            'ds_sigla' => array('align' => 'center'),
            'nr_itens' => array('align' => 'center')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($Rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_pendencia_aviso_encerramento.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($Rs);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function iniciocolheitaAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->relatorioInicioColheita($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

        $titles = array(
            'id_proposta' => 'Proposta',
            'id_processo' => 'Processo',
            'ds_nome_proponente' => 'Segurado',
            'ds_sigla' => 'UF',
            'ds_nome_municipio' => 'Município',
            'ds_nome_cultura' => 'Cultura',
            'nr_item_segurado' => 'Item',
            'ds_item_segurado' => 'Quadra',
            'ds_nome_variedade' => 'Variedade',
            'ds_nome_safra' => 'Safra',
            'dt_inicio_colheita' => 'Data Inicio Colheita',
            'dt_criacao' => 'Data do Envio',
            'ds_nome_fantasia' => 'Empresa'
        );

        $format = array(
            'id_proposta' => array('align' => 'center'),
            'id_processo' => array('align' => 'center'),
            'ds_nome_municipio' => array('align' => 'center'),
            'nr_item_segurado' => array('align' => 'center'),
            'dt_inicio_colheita' => array('align' => 'center'),
            'dt_criacao' => array('align' => 'center'),
            'ds_nome_safra' => array('align' => 'center')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($Rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_inicio.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($Rs);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function documentossinistroAction() {

        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->relatorioDocumentosSinistro($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

        $titles = array(
            'id_processo' => 'Processo',
            'id_proposta' => 'Proposta',
            'ds_tipo_arquivo' => 'Tipo Arquivo',
            'dt_criacao' => 'Data Envio',
            'ds_nome_abreviado' => 'Corretor',
            'ds_nome_preposto' => 'Preposto',
            'ds_status' => 'Status',
            'fl_conferido' => 'Conferido?',
        	'dt_revisao_arquivos' => 'Data Revisão Arquivo',
        	'ds_nome_funcionario' => 'Último Revisor',
			'dt_ultimo_documento' => 'Último Doc. Enviado em'
        );

        $format = array(
            'id_processo' => array('align' => 'center'),
            'id_proposta' => array('align' => 'center'),
            'cultura' => array('align' => 'left'),
            'ds_tipo_arquivo' => array('align' => 'left'),
            'dt_criacao' => array('align' => 'center'),
            'ds_nome_abreviado' => array('align' => 'left'),
            'ds_nome_preposto' => array('align' => 'left'),
            'ds_status' => array('align' => 'left')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($Rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_docs_sinistro.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($Rs);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function documentosbeneficiariosAction() {

        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->relatorioDocumentosBeneficiarios($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'), $this->getRequest()->getParam('sinistro'));

		if($Rs['sinistrados']){
	        $titles = array(
                'ds_status' => 'Status Arquivos',
	            'ds_nome_beneficiarios' => 'Nome Beneficiário',
	            'nr_cpf_cnpj' => 'CPF/CNPJ',
	        	'propostas' => 'Propostas',
	            'ds_nome_usuario' => 'Usuário',
              'dt_criacao_pendencia' => 'Data Criação Pendência',
              'usuario_criacao_pendencia' => 'Usuário Pendência'
	        );
		}else{
	        $titles = array(
                'ds_status' => 'Status Arquivos',
	            'ds_nome_beneficiarios' => 'Nome Beneficiário',
	            'nr_cpf_cnpj' => 'CPF/CNPJ',
	            'ds_nome_usuario' => 'Usuário',
              'dt_criacao_pendencia' => 'Data Criação Pendência',
              'usuario_criacao_pendencia' => 'Usuário Pendência'
	        );
		}

        $format = array(
            'ds_nome_beneficiario' => array('align' => 'left'),
            'cpf_cnpj' => array('align' => 'center'),
            'ds_status' => array('align' => 'left')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                foreach($Rs as $key => $value){
					$Rs[$key]['propostas'] = str_replace("<br>", '', $value['propostas']);
            	}

                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($Rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_docs_beneficiarios.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($Rs);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function laudosdigitadosAction() {

        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $model = new Relatorio_Model_Sinistro();
        $rs = $model->relatorioLaudosDigitados($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

        $titles = array(
            'id_processo' => 'Processo',
            'id_proposta' => 'Proposta',
        	'ds_nome_produto' => 'Produto',
            'id_aviso' => 'Aviso',
            'dt_aceitacao' => 'Aceitação Aviso',
            'tp_laudo' => 'Tipo Laudo',
            'nr_item_segurado' => 'Item',
            'dt_agendamento' => 'Agendamento',
            'ds_nome_fantasia' => 'Empresa',
            'dt_digitacao' => 'Data Digitação',
            'dt_vistoria' => 'Data Vistoria',
        	'ds_nome_municipio' => 'Município',
        	'ds_sigla' => 'Estado',
            'fl_transmitido_tablet' => 'Método de Transmissão',
        );

        $format = array(
            'id_processo' => array('align' => 'center'),
            'id_proposta' => array('align' => 'center'),
            'id_aviso' => array('align' => 'center'),
            'dt_aceitacao' => array('align' => 'center'),
            'tp_laudo' => array('align' => 'center'),
            'nr_item_segurado' => array('align' => 'left'),
            'dt_agendamento' => array('align' => 'center'),
            'ds_nome_fantasia' => array('align' => 'left'),
            'dt_digitacao' => array('align' => 'center'),
            'dt_vistoria' => array('align' => 'center'),
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $csv = new Agro_Plugin_Rs2Csv();
                $csv->setRecordSet($rs);
                $csv->setType("application/octet-stream");
                $csv->setFileName("relatorio_laudos_digitados.csv");
                $csv->setDisposition("attachment");
                $csv->setTitles($titles);
                $csv->setSeparator(";");
                $csv->getCsv();
                break;
            case 'html':
                $html = new Agro_Plugin_Rs2Html();
                $html->setRecordSet($rs);
                $html->setTitles($titles);
                $html->setFormat($format);
                $html->getHtml();
                break;
        }
    }

    public function digitacaolaudosfinaisAction() {

        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $model = new Relatorio_Model_Sinistro();
        $rs = $model->relatorioLaudosFinais($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));
  
        $titles = array(
                'id_processo' => 'Processo',
                'id_proposta' => 'Proposta',
                'id_aviso' => 'Aviso',
                'dt_sinistro' => 'Dt. Sinistro',
                'dt_aceitacao' => 'Dt. Aceitação',
                'id_proponente' => 'ID Segurado',
                'ds_nome_municipio' => 'Município',
                'ds_sigla' => 'UF',
                'ds_nome_fantasia' => 'Empresa',
                'ds_nome_safra' => 'Safra',
                'ds_nome_produto' => 'Produto',
                'dt_agendamento' => 'Agendamento',
                'ds_eventos' => 'Evento(s)',
                'ds_nome_cobertura' => 'Cobertura Digitada',
                'id_laudo_final' => 'Id. Laudo',
                'ds_chave' => 'Status',
                'fl_endosso' => 'Endosso?',
                'fl_transmitido_tablet' => 'Método de Transmissão',
                'agronomo_responsavel' => 'Agrônomo responsável',
                'corretor'=> 'Corretor',
                'perito' => 'Perito(s)',
                'dt_vistoria' => 'Data Vistoria'
        );

        $format = array(
                'id_processo' => array('align' => 'center'),
                'id_proposta' => array('align' => 'center'),
                'id_aviso' => array('align' => 'center'),
                'dt_aceitacao' => array('align' => 'center'),
                'ds_nome_fantasia' => array('align' => 'left'),
                'dt_vistoria' => array('align' => 'center'),
                'dt_agendamento' => array('align' => 'center')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $csv = new Agro_Plugin_Rs2Csv();
                $csv->setRecordSet($rs);
                $csv->setType("application/octet-stream");
                $csv->setFileName("relatorio_laudos_finais.csv");
                $csv->setDisposition("attachment");
                $csv->setTitles($titles);
                $csv->setSeparator(";");
                $csv->getCsv();
                break;
            case 'html':
                $html = new Agro_Plugin_Rs2Html();
                $html->setRecordSet($rs);
                $html->setTitles($titles);
                $html->setFormat($format);
                $html->getHtml();
                break;
        }
    }

    public function agendamentospendentesAction() {

        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->relatorioAgendamentosPendentes($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

        $titles = array(
            'id_proposta' => 'Proposta',
            'id_aviso' => 'Aviso',
            'nr_apolice' => 'Apólice',
            'id_proponente' => 'ID Segurado',
            'ds_nome_produto' => 'Produto',
            'ds_nome_cobertura' => 'Cobertura',
            'eventos' => 'Eventos',
            'ds_nome_municipio' => 'Município',
            'ds_sigla' => 'UF',
            'dt_sinistro' => 'Dt. Sinistro',
            'dt_aceitacao' => 'Dt. Aceitação',
            'dt_agendamento_preliminar' => 'Dt. Agendamento Preliminar',
            'dt_vistoria_preliminar' => 'Dt. Vistoria Preliminar',
            'fl_dispensa_preliminar' => 'Vistoria Peliminar Dispensada?',
            'dt_agendamento_final' => 'Dt. Agendamento Final',
            'dt_vistoria_final' => 'Dt. Vistoria Final',
            'ds_nome_fantasia' => 'Empresa Vistoria',
            'ds_status' => 'Status'
        );

        $format = array(
            'id_proposta' => array('align' => 'center'),
            'nr_apolice' => array('align' => 'center'),
            'id_aviso' => array('align' => 'center'),
            'dt_agendamento_preliminar' => array('align' => 'center'),
            'dt_vistoria_preliminar' => array('align' => 'center'),
            'dt_agendamento_final' => array('align' => 'center'),
            'dt_vistoria_final' => array('align' => 'center'),
            'dt_aceitacao' => array('align' => 'center'),
            'dt_sinistro' => array('align' => 'center'),
            'eventos' => array('align' => 'left'),
            'ds_nome_cobertura' => array('align' => 'left'),
            'ds_status' => array('align' => 'center')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($Rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_agendamento.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($Rs);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function laudosfinaispendentesAction() {

        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->relatorioLaudosFinaisPendentes($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

        $count = 0;
        foreach($Rs as $Row) {
            if($Row['id_laudo_final'] > 0) {
                $arVistoria[$Row['id_vistoria']] = true;
            }
        }

        $arr = array();
        foreach($Rs as $Row) {
            $arr[$count]['id_proposta']        = $Row['id_proposta'];
            $arr[$count]['id_processo']        = $Row['id_processo'];
            $arr[$count]['id_aviso']           = $Row['id_aviso'];
            $arr[$count]['dt_sinistro']        = $Row['dt_sinistro'];
            $arr[$count]['dt_aceitacao']       = $Row['dt_aceitacao'];
            $arr[$count]['ds_nome_fantasia']   = $Row['ds_nome_fantasia'];
            $arr[$count]['ds_nome_produto']    = $Row['ds_nome_produto'];
            $arr[$count]['ds_nome_municipio']  = $Row['ds_nome_municipio'];
            $arr[$count]['ds_sigla']           = $Row['ds_sigla'];
            $arr[$count]['id_vistoria']        = $Row['id_vistoria'];
            $arr[$count]['id_proponente']      = $Row['id_proponente'];
            $arr[$count]['nr_item_segurado']   = $Row['nr_item_segurado'];
            $arr[$count]['ds_nome_variedade']  = $Row['ds_nome_variedade'];
            $arr[$count]['dt_agendamento']     = $Row['dt_agendamento'];
            $arr[$count]['ds_nome_cobertura']  = $Row['ds_nome_cobertura'];

            if(!$Row['id_laudo_final'] && $arVistoria[$Row['id_vistoria']] == true) {
                $boItemSinistrado = 'Não';
            }
            elseif(!$Row['id_laudo_final'] && $arVistoria[$Row['id_vistoria']] == false) {
                $boItemSinistrado = '';
            } else {
                $boItemSinistrado = 'Sim';
            }
            $arr[$count]['sinistrado']  = $boItemSinistrado;
            $arr[$count]['digitado']    = $Row['digitado'];
            $arr[$count]['dt_vistoria'] = $Row['dt_vistoria'];

            $count++;
        }

        $titles = array(
            'id_proposta' => 'Proposta',
            'id_processo' => 'Processo',
            'id_aviso' => 'Aviso',
            'dt_aceitacao' => 'Data Aceitação',
            'dt_sinistro' => 'Data Sinistro',
            'ds_nome_fantasia' => 'Empresa',
            'ds_nome_produto' => 'Produto',
            'ds_nome_municipio' => 'Município',
            'ds_sigla' => 'UF',
            'id_proponente' => 'ID Segurado',
            'ds_nome_cobertura' => 'Cobertura',
            'nr_item_segurado' => 'Item',
            'ds_nome_variedade' => 'Variedade',
            'dt_agendamento' => 'Agendamento',
            'id_vistoria' => 'Vistoria',
            'sinistrado' => 'Sinistrado?',
            'digitado' => 'Digitado?',
            'dt_vistoria' => 'Data Vistoria'
        );

        $format = array(
            'id_proposta' => array('align' => 'center'),
            'id_processo' => array('align' => 'center'),
            'id_aviso' => array('align' => 'center'),
            'dt_aceitacao' => array('align' => 'center'),
            'ds_nome_produto' => array('align' => 'left'),
            'ds_nome_municipio' => array('align' => 'left'),
            'ds_sigla' => array('align' => 'center'),
            'ds_nome_variedade' => array('align' => 'left'),
            'ds_nome_proponente' => array('align' => 'left'),
            'ds_nome_fantasia' => array('align' => 'left')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($arr);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_laudos_pendentes.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($arr);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function liquidacoesnobreAction() {

        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->relatorioLiquidacoesNobre($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

        $arr = array();
        $count = 0;
        foreach($Rs as $Row) {
            $arr[$count]['id_processo']            = $Row['id_processo'];
            $arr[$count]['id_processo_seguradora'] = $Row['id_processo_seguradora'];
            $arr[$count]['id_proposta']            = $Row['id_proposta'];
            $arr[$count]['nr_apolice']             = $Row['nr_apolice'];
            $arr[$count]['id_liquidacao']          = $Row['id_liquidacao'];
            $arr[$count]['ds_nome_proponente']     = $Row['ds_nome_proponente'];
            $arr[$count]['vl_indenizacao']         = $Row['vl_indenizacao'];
            $arr[$count]['ds_status']              = $Row['ds_status'];
            $arr[$count]['dt_envio_seguradora']    = $Row['dt_envio_seguradora'];
            $arr[$count]['ds_nome_fantasia']       = $Row['ds_nome_fantasia'];

            $RsPrevisoes = $Model->getPrevisoesPagamento($Row['id_liquidacao']);
            $i = 1;
            foreach($RsPrevisoes as $row2) {
                $fl_subvencao_descontatada = $row2['fl_subvencao_descontada'] ? 'Sim' : 'Nao';

                $arr[$count]['vl_pagamento_'.$i]             = $row2['vl_pagamento'];
                $arr[$count]['dt_pagamento_'.$i]             = $row2['dt_pagamento'];
                $arr[$count]['dt_confirmacao_pagamento_'.$i] = $row2['dt_confirmacao_pagamento'];
                $arr[$count]['fl_subvencao_descontada_'.$i]  = $fl_subvencao_descontatada;
                $i++;
            }
            $count++;
        }

        $titles = array(
            'id_processo' => 'Processo Agro',
            'id_processo_seguradora' => 'Processo Nobre',
            'id_proposta' => 'Proposta',
            'nr_apolice' => 'Apólice',
            'id_liquidacao' => 'Liquidação',
            'ds_nome_proponente' => 'Segurado',
            'ds_nome_fantasia' => 'Vistoria Prévia',
            'vl_indenizacao' => 'Valor Indenização',
            'ds_status' => 'Status',
            'dt_envio_seguradora' => 'Data de liberação para Nobre',
            'dt_pagamento_1' => 'Previsão Pagamento 1',
            'dt_confirmacao_pagamento_1' => 'Data Pagamento 1',
            'vl_pagamento_1' => 'Valor Pago 1',
            'fl_subvencao_descontada_1' => 'Sub. Descontada? 1',
            'dt_pagamento_2' => 'Previsão Pagamento 2',
            'dt_confirmacao_pagamento_2' => 'Data Pagamento 2',
            'vl_pagamento_2' => 'Valor Pago 2',
            'fl_subvencao_descontada_2' => 'Sub. Descontada? 2',
            'dt_pagamento_3' => 'Previsão Pagamento 3',
            'dt_confirmacao_pagamento_3' => 'Data Pagamento 3',
            'vl_pagamento_3' => 'Valor Pago 3',
            'fl_subvencao_descontada_3' => 'Sub. Descontada? 3'
        );

        $format = array(
            'id_processo' => array('align' => 'center'),
            'id_processo_seguradora' => array('align' => 'center'),
            'id_proposta' => array('align' => 'center'),
            'nr_apolice' => array('align' => 'center'),
            'ds_nome_proponente' => array('align' => 'left'),
            'vl_indenizacao' => array('align' => 'right'),
            'dt_pagamento' => array('align' => 'center'),
            'dt_confirmacao_pagamento' => array('align' => 'center'),
            'dt_envio_seguradora' => array('align' => 'center'),
            'ds_status' => array('align' => 'left')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($arr);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_liquidacoes_nobre.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($arr);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function liquidacoesessorAction() {
        ini_set('max_execution_time', 0);
    	$this->getHelper('ViewRenderer')->setNoRender();
    	$this->getHelper('layout')->disableLayout();

    	$Model = new Relatorio_Model_Sinistro();
    	$Rs  = $Model->relatorioLiquidacoesSeguradora(
    	  '',
          $this->getRequest()->getParam('id_produto'),
          false,
          Sinistro2_Model_Liquidacoes::ID_STATUS_ENVIADA_SEGURADORA,
          true
        );

        $format = array(
            'id_liquidacao' => array('align' => 'center'),
            'id_processo' => array('align' => 'center'),
            'id_processo_seguradora' => array('align' => 'center'),
            'id_proposta' => array('align' => 'center'),
            'nr_apolice' => array('align' => 'center'),
            'ds_nome_proponente' => array('align' => 'left'),
            'vl_indenizacao' => array('align' => 'right'),
            'dt_estimada_pagamento' => array('align' => 'center'),
            'dt_confirmacao_pagamento' => array('align' => 'center'),
            'dt_envio_seguradora' => array('align' => 'center'),
            'ds_status' => array('align' => 'left'),
            'principal'=> array('align'=>'center'),
            'ds_nome_usuario_responsavel_liquidacao'=> array('align'=>'center'),
            'dt_ultimo_arquivo_beneficiario' => array('align' => 'left')
        );

        $serviceMontaRelatorioLiquidacao = new Relatorio_Service_Montarelatorioliquidacao();

    	$rs = $serviceMontaRelatorioLiquidacao->executa($Rs, false);

        $serviceMontaRelatorioLiquidacao->gerarRelatorio(
            $rs,
            $this->titlesLiquidacao,
            $this->getRequest()->getParam('tipo'),
            $format
        );
    }

    public function liquidacoespagasessorAction() {
        //alternativa temporária para a geração do relatório
        ini_set('max_execution_time', 0);
    	$this->getHelper('ViewRenderer')->setNoRender();
    	$this->getHelper('layout')->disableLayout();

    	$Model         = new Relatorio_Model_Sinistro();
        $User          = Zend_Auth::getInstance()->getIdentity();
        $flSeguradora  = false;

        $Rs  = $Model->relatorioLiquidacoesSeguradora($this->getRequest()->getParam('id_safra'),
                                                      $this->getRequest()->getParam('id_produto'),
                                                      ($this->getRequest()->getParam('id_tipo_liquidacao') ? $this->getRequest()->getParam('id_tipo_liquidacao') : false),
                                                      ($this->getRequest()->getParam('id_status') ? $this->getRequest()->getParam('id_status') : false),
                                                      $flSeguradora,
                                                      true);

        $beneficiarios  = $Model->beneficiariosRelatorioLiquidacoesSeguradora($this->getRequest()->getParam('id_safra'), $flSeguradora);

        $arr = array();
        $registros = [];

        foreach($Rs as $Row){
            if (!isset($registros[$Row['id_liquidacao']])) {
                $registros[$Row['id_liquidacao']] = $Row;
            } else {
                $registros[$Row['id_liquidacao']]['vl_pagamento'] += $Row['vl_pagamento'];
            }
        }

        foreach($registros as $Row){
    		$arr[$Row['id_liquidacao']]['id_proposta']               = $Row['id_proposta'];
    		$arr[$Row['id_liquidacao']]['id_liquidacao']             = $Row['id_liquidacao'];
    		$arr[$Row['id_liquidacao']]['id_processo_seguradora']    = $Row['id_processo_seguradora'];
    		$arr[$Row['id_liquidacao']]['id_processo']               = $Row['id_processo'];
    		$arr[$Row['id_liquidacao']]['nr_apolice']                = $Row['nr_apolice'];
    		$arr[$Row['id_liquidacao']]['ds_nome_proponente']        = $Row['ds_nome_proponente'];
    		$arr[$Row['id_liquidacao']]['cpf_cnpj']                  = $Row['cpf_cnpj'];
    		$arr[$Row['id_liquidacao']]['ds_nome_abreviado']         = $Row['ds_nome_abreviado'];
    		$arr[$Row['id_liquidacao']]['id_liquidacao']             = $Row['id_liquidacao'];
    		$arr[$Row['id_liquidacao']]['ds_nome_proponente']        = $Row['ds_nome_proponente'];
    		$arr[$Row['id_liquidacao']]['vl_indenizacao']            = round($Row['vl_indenizacao'], 2);
    		$arr[$Row['id_liquidacao']]['ds_status']                 = $Row['ds_status'];
    		$arr[$Row['id_liquidacao']]['dt_envio_seguradora']       = ($User->id_empresa == 20) ? $Row['dt_envio_seguradora'] : null;
    		$arr[$Row['id_liquidacao']]['ds_nome_produto']           = $Row['ds_nome_produto'];
    		$arr[$Row['id_liquidacao']]['ds_nome_safra']             = $Row['ds_nome_safra'];
    		$arr[$Row['id_liquidacao']]['ds_nome_municipio']         = $Row['ds_nome_municipio'];
    		$arr[$Row['id_liquidacao']]['ds_sigla']                  = $Row['ds_sigla'];
    		$arr[$Row['id_liquidacao']]['dt_liquidacao']             = $Row['dt_liquidacao'];
    		$arr[$Row['id_liquidacao']]['vl_pagamento']              = $Row['vl_pagamento'];
    		$arr[$Row['id_liquidacao']]['dt_estimada_pagamento']  	 = Agro_Util::formatDate($Row['dt_estimada_pagamento'], 'dd/MM/yyyy');
    		$arr[$Row['id_liquidacao']]['dt_confirmacao_pagamento']  = Agro_Util::formatDate($Row['dt_confirmacao_pagamento'], 'dd/MM/yyyy');
    		$arr[$Row['id_liquidacao']]['dt_encerramento_colheita']  = $Row['dt_encerramento_colheita'];
    		$arr[$Row['id_liquidacao']]['dt_arquivo']                = $Row['dt_arquivo'];
    		$arr[$Row['id_liquidacao']]['tp_liquidacao']             = $Row['tp_liquidacao'];
    		$arr[$Row['id_liquidacao']]['ds_status_arquivos']        = $Row['ds_status_arquivos'];
            $arr[$Row['id_liquidacao']]['motivos_sem_indenizacao']   = $Row['motivos_sem_indenizacao'];
            $arr[$Row['id_liquidacao']]['ds_nome_usuario_responsavel_liquidacao'] = $Row['ds_nome_usuario_responsavel_liquidacao'];
            $arr[$Row['id_liquidacao']]['cd_identificador_seguradora'] = $Row['cd_identificador_seguradora'];

    		$date = str_replace('/', '-', $Row['dt_arquivo']);
    		$arDatas[$Row['id_liquidacao']][] = date('Y-m-d',strtotime($date));

    		$date = str_replace('/', '-', $Row['dt_encerramento_colheita']);
    		$arDatas[$Row['id_liquidacao']][] = date('Y-m-d',strtotime($date));

            $Beneficiarios = $beneficiarios[$Row['id_proposta_original']];

    		$ds_nome_beneficiario = "";
    		$count                = 1;
    		$percentBenef         = 0;
    		$somaBenef            = 0;
    		$totalBenef           = 0;

    		if(is_array($Beneficiarios) && ($Row['id_cobertura'] <> '16' && $Row['id_cobertura'] <> '5' && $Row['id_cobertura'] <> '31' && $Row['id_cobertura'] <> '30' && $Row['id_cobertura'] <> '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'], ($Row['vl_indenizacao'] * $percentBenef)),2);

    				if($arBenef[$Row['id_proposta']][$benef['nr_cpf_cnpj']] + $vlBenef > $benef['vl_limite_beneficio']){
    					$vlBenef = $benef['vl_limite_beneficio'] - $arBenef[$Row['id_proposta']][$benef['nr_cpf_cnpj']];
    				}

    				$totalBenef += ($vlBenef > 0 ? $vlBenef : '0.0');

    				$arr[$Row['id_liquidacao']]['ds_nome_beneficiario_'.$count]     = $ds_nome_beneficiario;
    				$arr[$Row['id_liquidacao']]['ds_cpf_cnpj_beneficiario_'.$count] = $benef['nr_cpf_cnpj'];
    				$arr[$Row['id_liquidacao']]['ds_status_'.$count]                = $benef['ds_status'];
    				$arr[$Row['id_liquidacao']]['ds_valor_beneficiario_'.$count]    = ($vlBenef > 0 ? $vlBenef : '0.0');
    				$arr[$Row['id_liquidacao']]['nu_conta_corrente_'.$count]        = preg_replace("/[^A-Za-z0-9 ]/", '', $benef['nu_conta_corrente']);
    				$arr[$Row['id_liquidacao']]['nu_digito_conta_corrente_'.$count] = preg_replace("/[^A-Za-z0-9 ]/", '', $benef['nu_digito_conta_corrente']);
    				$arr[$Row['id_liquidacao']]['nu_agencia_'.$count]               = preg_replace("/[^A-Za-z0-9 ]/", '', $benef['nu_agencia']);
    				$arr[$Row['id_liquidacao']]['nu_digito_agencia_'.$count]        = preg_replace("/[^A-Za-z0-9 ]/", '', $benef['nu_digito_agencia']);
    				$arr[$Row['id_liquidacao']]['nr_banco_'.$count]                 = preg_replace("/[^A-Za-z0-9 ]/", '', $benef['nr_banco']);
    				$arr[$Row['id_liquidacao']]['dt_ultimo_arquivo_beneficiario_'.$count]   = $benef['dt_ultimo_arquivo_beneficiario'];

    				$arBenef[$Row['id_proposta']][$benef['nr_cpf_cnpj']] += $vlBenef;

    				if($benef['dt_ultimo_arquivo_beneficiario']){
    					unset($date);
    					$date = str_replace('/', '-', $benef['dt_ultimo_arquivo_beneficiario']);
    					$arDatas[$Row['id_liquidacao']][] = date('Y-m-d',strtotime($date));
    				}

    				$count++;
    			}

    			$difBenef = $Row['vl_indenizacao'] - $totalBenef;
    			if($difBenef > 0.01 ){
    				$arr[$Row['id_liquidacao']]['ds_nome_beneficiario_'.$count]     = $Row['ds_nome_proponente'];
    				$arr[$Row['id_liquidacao']]['ds_cpf_cnpj_beneficiario_'.$count] = $Row['cpf_cnpj'];
    				$arr[$Row['id_liquidacao']]['ds_valor_beneficiario_'.$count]    = round($difBenef, 2);
    				$arr[$Row['id_liquidacao']]['ds_status_'.$count]                = $benef['ds_status'];
    				$arr[$Row['id_liquidacao']]['nu_conta_corrente_'.$count]        = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_conta_corrente']);
    				$arr[$Row['id_liquidacao']]['nu_digito_conta_corrente_'.$count] = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_digito_conta_corrente']);
    				$arr[$Row['id_liquidacao']]['nu_agencia_'.$count]               = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_agencia']);
    				$arr[$Row['id_liquidacao']]['nu_digito_agencia_'.$count]        = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_digito_agencia']);
    				$arr[$Row['id_liquidacao']]['nr_banco_'.$count]                 = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nr_banco']);
    				$arr[$Row['id_liquidacao']]['dt_ultimo_arquivo_beneficiario_'.$count] = $Row['dt_ultimo_arquivo_beneficiario'];

    				if($Row['dt_ultimo_arquivo_beneficiario']){
    					unset($date);
    					$date = str_replace('/', '-', $Row['dt_ultimo_arquivo_beneficiario']);
    					$arDatas[$Row['id_liquidacao']][] = date('Y-m-d',strtotime($date));
    				}
    			}

    		} else {
    			$arr[$Row['id_liquidacao']]['ds_nome_beneficiario_1']     = $Row['ds_nome_proponente'];
    			$arr[$Row['id_liquidacao']]['ds_cpf_cnpj_beneficiario_1'] = $Row['cpf_cnpj'];
    			$arr[$Row['id_liquidacao']]['ds_valor_beneficiario_1']    = round($Row['vl_indenizacao'], 2);
    			$arr[$Row['id_liquidacao']]['ds_status_'.$count]          ='-';
    			$arr[$Row['id_liquidacao']]['nu_conta_corrente_1']        = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_conta_corrente']);
    			$arr[$Row['id_liquidacao']]['nu_digito_conta_corrente_1'] = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_digito_conta_corrente']);
    			$arr[$Row['id_liquidacao']]['nu_agencia_1']               = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_agencia']);
    			$arr[$Row['id_liquidacao']]['nu_digito_agencia_1']        = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_digito_agencia']);
    			$arr[$Row['id_liquidacao']]['nr_banco_1']                 = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nr_banco']);
    			$arr[$Row['id_liquidacao']]['dt_ultimo_arquivo_beneficiario_1'] = $Row['dt_ultimo_arquivo_beneficiario'];

    			if($Row['dt_ultimo_arquivo_beneficiario']){
    				unset($date);
    				$date = str_replace('/', '-', $Row['dt_ultimo_arquivo_beneficiario']);
    				$arDatas[$Row['id_liquidacao']][] = date('Y-m-d',strtotime($date));
    			}
    		}

    		$arr[$Row['id_liquidacao']]['dt_base_pagamento'] = max($arDatas[$Row['id_liquidacao']]);
    		unset($arDatas);
    	}

    	$titles = array(
    			'id_liquidacao' => 'Liquidação',
    			'id_processo' => 'Processo Agro',
    			'id_proposta' => 'Proposta',
    			'nr_apolice' => 'Apólice',
    			'ds_nome_proponente' => 'Segurado',
    			'cpf_cnpj' => 'CPF/CNPJ',
    			'ds_nome_abreviado' => 'Corretor',
    			'id_liquidacao' => 'Nr. Liquidação',
    			'ds_nome_proponente' => 'Segurado',
    			'vl_indenizacao' => 'Valor Estimado de Indenização',
    			'ds_status' => 'Status',
                'motivos_sem_indenizacao' => 'Motivos sem indenização',
    			'ds_nome_produto' => 'Produto',
    			'ds_nome_safra' => 'Safra',
    			'ds_nome_municipio' => 'Município',
    			'ds_sigla' => 'UF',
    			'tp_liquidacao' => 'Tipo',
    			//'dt_base_pagamento' => 'Dt. Base Pagamento',
    			//'dt_encerramento_colheita' => 'Dt. Encerramento Colheita',
    			'vl_pagamento' => 'Valor Pagamento',
    			'dt_estimada_pagamento' => 'Data Estimada Pagamento',
    			'dt_confirmacao_pagamento' => 'Data Pagamento',
    			'ds_nome_beneficiario_1' => 'Beneficiário 1 Nome',
    			'ds_cpf_cnpj_beneficiario_1' => 'Beneficiário 1 CPF/CNPJ',
    			'ds_valor_beneficiario_1' => 'Beneficiário 1 Valor',
    			'nu_conta_corrente_1' => 'Conta',
    			'nu_digito_conta_corrente_1' => 'Digito',
    			'nu_agencia_1' => 'Agência',
    			'nu_digito_agencia_1' => 'Digito',
    			'nr_banco_1' => 'Número Banco',
    			'ds_nome_beneficiario_2' => 'Beneficiário 2 Nome',
    			'ds_cpf_cnpj_beneficiario_2' => 'Beneficiário 2 CPF/CNPJ',
    			'ds_valor_beneficiario_2' => 'Beneficiário 2 Valor',
    			'nu_conta_corrente_2' => 'Conta',
    			'nu_digito_conta_corrente_2' => 'Digito',
    			'nu_agencia_2' => 'Agência',
    			'nu_digito_agencia_2' => 'Digito',
    			'nr_banco_2' => 'Número Banco',
    			'ds_nome_beneficiario_3' => 'Beneficiário 3 Nome',
    			'ds_cpf_cnpj_beneficiario_3' => 'Beneficiário 3 CPF/CNPJ',
    			'ds_valor_beneficiario_3' => 'Beneficiário 3 Valor',
    			'nu_conta_corrente_3' => 'Conta',
    			'nu_digito_conta_corrente_3' => 'Digito',
    			'nu_agencia_3' => 'Agência',
    			'nu_digito_agencia_3' => 'Digito',
    			'nr_banco_3' => 'Número Banco',
    			'cd_identificador_seguradora' => 'Sinistro Essor'
    	);

    	$format = array(
    			'id_liquidacao' => array('align' => 'center'),
    			'id_processo' => array('align' => 'center'),
    			'id_processo_seguradora' => array('align' => 'center'),
    			'id_proposta' => array('align' => 'center'),
    			'nr_apolice' => array('align' => 'center'),
    			'ds_nome_proponente' => array('align' => 'left'),
    			'vl_indenizacao' => array('align' => 'right'),
    			'dt_estimada_pagamento' => array('align' => 'center'),
    			'dt_confirmacao_pagamento' => array('align' => 'center'),
    			'dt_envio_seguradora' => array('align' => 'center'),
    			'ds_status' => array('align' => 'left'),
    			'principal'=> array('align'=>'center'),
    			'ds_nome_usuario_responsavel_liquidacao'=> array('align'=>'center'),
    			'dt_ultimo_arquivo_beneficiario' => array('align' => 'left')
    	);
        // $duration2 = microtime(true)-$time1;
        // $hours2 = (int)($duration2/60/60);
        // $minutes2 = (int)($duration2/60)-$hours2*60;
        // $seconds2 = (int)$duration2-$hours2*60*60-$minutes2*60;

        //         dump($hours2.":".$minutes2.":".$seconds2);
    	switch ($this->getRequest()->getParam('tipo')) {
    		case 'excel':
    			$Csv = new Agro_Plugin_Rs2Csv();
    			$Csv->setRecordSet($arr);
    			$Csv->setType("application/octet-stream");
    			$Csv->setFileName("relatorio_liquidacoes.csv");
    			$Csv->setDisposition("attachment");
    			$Csv->setTitles($titles);
    			$Csv->setSeparator(";");
    			$Csv->getCsv();
    			break;
    		case 'html':
    			$Html = new Agro_Plugin_Rs2Html();
    			$Html->setRecordSet($arr);
    			$Html->setTitles($titles);
    			$Html->setFormat($format);
    			$Html->getHtml();
    			break;
    	}
    }



    public function liquidacoesAction() {
        
        ini_set('max_execution_time', 0);
    	$this->getHelper('ViewRenderer')->setNoRender();
    	$this->getHelper('layout')->disableLayout();

    	$Model         = new Relatorio_Model_Sinistro();
    	$ModelProposta = new Seguro_Model_Propostas();
    	$User          = Zend_Auth::getInstance()->getIdentity();
        $ModelBeneficiarios = new Seguro_Model_PropostasBeneficiarios();
    	$Rs  = $Model->relatorioLiquidacoesSeguradora($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'), ($this->getRequest()->getParam('id_tipo_liquidacao') ? $this->getRequest()->getParam('id_tipo_liquidacao') : false), false);
    	$arr = array();
    	$registros = [];
        
    	foreach ($Rs as $Row) {
    	    if (!isset($registros[$Row['id_liquidacao']])) {
                $registros[$Row['id_liquidacao']] = $Row;
            } else {
                $registros[$Row['id_liquidacao']]['vl_pagamento'] += $Row['vl_pagamento'];
            }
        }

        $sqlValoresItensSegurados = "SELECT sis.vl_area, ";
        $sqlValoresItensSegurados .= "       sis.vl_rendimento_tonelada, ";
        $sqlValoresItensSegurados .= "       sis.vl_lmga, ";
        $sqlValoresItensSegurados .= "       lfis.vl_percent_colhido, ";
        $sqlValoresItensSegurados .= "       lfis.vl_rendimento_final_lavoura, ";
        $sqlValoresItensSegurados .= "       isc.vl_producao_garantida, ";
        $sqlValoresItensSegurados .= "       lisc.id_liquidacao ";
        $sqlValoresItensSegurados .= "FROM seguro.itens_segurados AS sis ";
        $sqlValoresItensSegurados .= "INNER JOIN sinistro.laudos_finais_itens_segurados AS lfis ON sis.id = lfis.id_item_segurado ";
        $sqlValoresItensSegurados .= "INNER JOIN sinistro.liquidacoes_itens_segurados_coberturas_lf AS lisclf ON lfis.id = lisclf.id_laudo_final_item_segurado ";
        $sqlValoresItensSegurados .= "INNER JOIN sinistro.liquidacoes_itens_segurados_coberturas AS lisc ON lisclf.id_liquidacoes_itens_segurados_coberturas = lisc.id ";
        $sqlValoresItensSegurados .= "INNER JOIN seguro.itens_segurados_complemento AS isc ON sis.id = isc.id_item_segurado ";
        $sqlValoresItensSegurados .= "INNER JOIN sinistro.laudos_finais AS lf ON lf.id = lfis.id_laudo_final ";
        $sqlValoresItensSegurados .= "WHERE (lfis.id_motivo_quadra_nao_vistoriada IS NULL ";
        $sqlValoresItensSegurados .= "       OR lfis.id_motivo_quadra_nao_vistoriada IN (1, 2, 3, 4, 7)) ";
        $sqlValoresItensSegurados .= "  AND (lf.id_status <> 207);";

    	$rsValoresItensSegurados = $Model->fetchAll($sqlValoresItensSegurados);
    	$dadosItensLiquidacao = [];

    	foreach ($rsValoresItensSegurados as $registro) {
    	    if (!array_key_exists($registro['id_liquidacao'], $dadosItensLiquidacao)) {
                $dadosItensLiquidacao[$registro['id_liquidacao']] = [];
            }

            $dadosItensLiquidacao[$registro['id_liquidacao']][] = $registro;
        }

        $sqlTotalPagoLiquidacoes = "SELECT p.id AS id_processo, lpp.vl_pagamento ";
        $sqlTotalPagoLiquidacoes .= "FROM sinistro.processos AS p ";
        $sqlTotalPagoLiquidacoes .= "INNER JOIN sinistro.liquidacoes AS l ON l.id_processo = p.id ";
        $sqlTotalPagoLiquidacoes .= "INNER JOIN sinistro.liquidacoes_itens_segurados_coberturas AS lic ON lic.id_liquidacao = l.id ";
        $sqlTotalPagoLiquidacoes .= "INNER JOIN produto.coberturas AS cob ON cob.id = lic.id_cobertura ";
        $sqlTotalPagoLiquidacoes .= "INNER JOIN sinistro.liquidacoes_previsao_pagamento AS lpp ON lpp.id_liquidacao = l.id ";
        $sqlTotalPagoLiquidacoes .= "WHERE (cob.id NOT in(16, 11, 5, 30, 31, 36))";
    	$rsTotalPagoLiquidacoes = $Model->fetchAll($sqlTotalPagoLiquidacoes);
    	$dadosTotalPagosLiquidacoes = [];

    	foreach ($rsTotalPagoLiquidacoes as $registro) {
            if (!array_key_exists($registro['id_processo'], $dadosTotalPagosLiquidacoes)) {
                $dadosTotalPagosLiquidacoes[$registro['id_processo']] = [];
            }

            $dadosTotalPagosLiquidacoes[$registro['id_processo']][] = $registro;
        }
    	foreach($registros as $Row){
    		$arr[$Row['id_liquidacao']]['id_proposta']               = $Row['id_proposta'];
    		$arr[$Row['id_liquidacao']]['id_liquidacao']             = $Row['id_liquidacao'];
    		$arr[$Row['id_liquidacao']]['id_processo_seguradora']    = $Row['id_processo_seguradora'];
    		$arr[$Row['id_liquidacao']]['id_processo']               = $Row['id_processo'];
    		$arr[$Row['id_liquidacao']]['nr_apolice']                = $Row['nr_apolice'];
    		$arr[$Row['id_liquidacao']]['ds_nome_proponente']        = $Row['ds_nome_proponente'];
    		$arr[$Row['id_liquidacao']]['cpf_cnpj']                  = $Row['cpf_cnpj'];
    		$arr[$Row['id_liquidacao']]['ds_nome_abreviado']         = $Row['ds_nome_abreviado'];
    		$arr[$Row['id_liquidacao']]['id_liquidacao']             = $Row['id_liquidacao'];
    		$arr[$Row['id_liquidacao']]['ds_nome_proponente']        = $Row['ds_nome_proponente'];
    		$arr[$Row['id_liquidacao']]['vl_indenizacao']            = round($Row['vl_indenizacao'], 2);
            $arr[$Row['id_liquidacao']]['ds_nome_cobertura']         = $Row['ds_nome_cobertura'];
    		$arr[$Row['id_liquidacao']]['ds_status']                 = $Row['ds_status'];
    		$arr[$Row['id_liquidacao']]['dt_envio_seguradora']       = ($User->id_empresa == 20) ? $Row['dt_envio_seguradora'] : null;
            $arr[$Row['id_liquidacao']]['ds_nome_usuario']           = ($User->id_empresa == 20) ? $Row['ds_nome_usuario'] : null;
    		$arr[$Row['id_liquidacao']]['ds_nome_produto']           = $Row['ds_nome_produto'];
    		$arr[$Row['id_liquidacao']]['ds_nome_safra']             = $Row['ds_nome_safra'];
    		$arr[$Row['id_liquidacao']]['ds_nome_municipio']         = $Row['ds_nome_municipio'];
    		$arr[$Row['id_liquidacao']]['ds_sigla']                  = $Row['ds_sigla'];
    		$arr[$Row['id_liquidacao']]['dt_liquidacao']             = $Row['dt_liquidacao'];
    		$arr[$Row['id_liquidacao']]['vl_pagamento']              = $Row['vl_pagamento'];
    		$arr[$Row['id_liquidacao']]['dt_estimada_pagamento']  	 = Agro_Util::formatDate($Row['dt_estimada_pagamento'], 'dd/MM/yyyy');
    		$arr[$Row['id_liquidacao']]['dt_confirmacao_pagamento']  = Agro_Util::formatDate($Row['dt_confirmacao_pagamento'], 'dd/MM/yyyy');
    		$arr[$Row['id_liquidacao']]['dt_encerramento_colheita']  = $Row['dt_encerramento_colheita'];
    		$arr[$Row['id_liquidacao']]['dt_arquivo']                = $Row['dt_arquivo'];
    		$arr[$Row['id_liquidacao']]['ds_nome_usuario_responsavel_liquidacao']  = $Row['ds_nome_usuario_responsavel_liquidacao'];
    		$arr[$Row['id_liquidacao']]['tp_liquidacao']             = $Row['tp_liquidacao'];
    		$arr[$Row['id_liquidacao']]['ds_status_arquivos']        = $Row['ds_status_arquivos'];
            $arr[$Row['id_liquidacao']]['motivos_sem_indenizacao']   = $Row['motivos_sem_indenizacao'];
            if($Row['id_cobertura'] == 5 || $Row['id_cobertura'] == 30 || $Row['id_cobertura'] == 31 || $Row['id_cobertura'] == 36){
                $arr[$Row['id_liquidacao']]['dt_aviso_final_replantio']  = $Row['dt_aviso_final_replantio'];
            }
            
    		$date = str_replace('/', '-', $Row['dt_arquivo']);
    		$arDatas[$Row['id_liquidacao']][] = date('Y-m-d',strtotime($date));

    		/*
    		 * Se for Cob. de Replantio, utiliza a data de aviso final de replantio como referência e não a data de encerramento de colheita
    		 */
    		if($Row['id_cobertura'] == 5 || $Row['id_cobertura'] == 30 || $Row['id_cobertura'] == 31 || $Row['id_cobertura'] == 36){
    		    $date = str_replace('/', '-', $Row['dt_aviso_final_replantio']);
    		    $arDatas[$Row['id_liquidacao']][] = date('Y-m-d',strtotime($date));
    		} else {
    		    $date = str_replace('/', '-', $Row['dt_encerramento_colheita']);
    		    $arDatas[$Row['id_liquidacao']][] = date('Y-m-d',strtotime($date));
    		}

    		if ($Row['tipo_liquidacao_chave'] === 'LIQ17') {
                $soma_mpa = 0;
                $soma_pgm = 0;
                $soma_lmga = 0;
                $area_total = 0;
                $itens = $dadosItensLiquidacao[$Row['id_liquidacao']];

                foreach ($itens as $quadra) {
                    $rendimento = round(((($quadra['vl_percent_colhido']/100) * $quadra['vl_area'] * $quadra['vl_rendimento_tonelada']) + ((1 - ($quadra['vl_percent_colhido']/100))
                          * $quadra['vl_area'] * $quadra['vl_rendimento_final_lavoura']))/$quadra['vl_area'], 3);

                    $soma_mpa += $rendimento * $quadra['vl_area'];
                    $soma_pgm += $quadra['vl_area'] * $quadra['vl_producao_garantida'];
                    $soma_lmga += $quadra['vl_lmga'];
                    $area_total += $quadra['vl_area'];
                }

                $pmo = ($soma_mpa / $area_total);
                $pgm = $soma_pgm / $area_total;
                $perc_indenizacao = round((($pgm - $pmo) / $pgm), 4);
                $perc_indenizacao = round($perc_indenizacao * 100, 2);
                $perc_indenizacao = $perc_indenizacao < 0 ? 0 : $perc_indenizacao;
                $valorIndenizacao = ($perc_indenizacao/100) * $soma_lmga;

                $arr[$Row['id_liquidacao']]['vl_indenizacao'] = $Row['vl_indenizacao'] = round($valorIndenizacao, 2);
            }

    		$Proposta      = $ModelProposta->find($Row['id_proposta_original'])->current();
    		$Beneficiarios = $Proposta->beneficiariosRelatorio($ModelBeneficiarios);
    		$count                = 1;
    		$percentBenef         = 0;
    		$somaBenef            = 0;
    		$totalBenef           = 0;
            $totalPagoLiquidacoes = 0;

            $valoresItensPagosProcesso = $dadosTotalPagosLiquidacoes[$Row['id_processo']];

            foreach ($valoresItensPagosProcesso as $item) {
                $totalPagoLiquidacoes += $item['vl_pagamento'];
            }

            $totalPagoLiquidacoes = number_format($totalPagoLiquidacoes, 2, '.', '');
            $coberturasInvalidasBeneficiario = [
              Produto_Model_Coberturas::COB_PROTECAO_FITO,
              Produto_Model_Coberturas::COB_QUEDA_PARREIRAL,
              Produto_Model_Coberturas::COB_REPLANTIO,
              Produto_Model_Coberturas::COB_REPLANTIO_SEM_ESTIAGEM,
              Produto_Model_Coberturas::COB_REPLANTIO_EXCESSO_CHUVA,
              Produto_Model_Coberturas::COB_REPLANTIO_GEADA
            ];
            
            if(is_array($Beneficiarios) && !in_array($Row['id_cobertura'], $coberturasInvalidasBeneficiario)) {
    			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'], ($Row['vl_indenizacao'] * $percentBenef)),2);

    				if($arBenef[$Row['id_proposta']][$benef['nr_cpf_cnpj']] + $vlBenef > $benef['vl_limite_beneficio']){
    					$vlBenef = $benef['vl_limite_beneficio'] - $arBenef[$Row['id_proposta']][$benef['nr_cpf_cnpj']];
    				}

    				if ($Row['ds_chave'] === Sinistro2_Model_LiquidacoesStatus::LIQUIDACOES_CHAVE_ENVIADA_SEGURADORA) {
                        if ($totalPagoLiquidacoes >= $somaBenef) {
                            $totalPagoLiquidacoes -= $vlBenef;
                            $vlBenef = 0;
                        } else {
                            $diferencaClausulaTotalPago = $somaBenef - $totalPagoLiquidacoes;
                            $vlBenef = $vlBenef > $diferencaClausulaTotalPago ? $diferencaClausulaTotalPago : $vlBenef;
                        }
                    }

    				$totalBenef += ($vlBenef > 0 ? $vlBenef : '0.0');

    				$arr[$Row['id_liquidacao']]['ds_nome_beneficiario_'.$count]     = $ds_nome_beneficiario;
    				$arr[$Row['id_liquidacao']]['ds_cpf_cnpj_beneficiario_'.$count] = $benef['nr_cpf_cnpj'];
    				$arr[$Row['id_liquidacao']]['ds_status_'.$count]                = $benef['ds_status'];
    				$arr[$Row['id_liquidacao']]['ds_valor_beneficiario_'.$count]    = ($vlBenef > 0 ? $vlBenef : '0.0');
    				$arr[$Row['id_liquidacao']]['nu_conta_corrente_'.$count]        = preg_replace("/[^A-Za-z0-9 ]/", '', $benef['nu_conta_corrente']);
    				$arr[$Row['id_liquidacao']]['nu_digito_conta_corrente_'.$count] = preg_replace("/[^A-Za-z0-9 ]/", '', $benef['nu_digito_conta_corrente']);
    				$arr[$Row['id_liquidacao']]['nu_agencia_'.$count]               = preg_replace("/[^A-Za-z0-9 ]/", '', $benef['nu_agencia']);
    				$arr[$Row['id_liquidacao']]['nu_digito_agencia_'.$count]        = preg_replace("/[^A-Za-z0-9 ]/", '', $benef['nu_digito_agencia']);
    				$arr[$Row['id_liquidacao']]['nr_banco_'.$count]                 = preg_replace("/[^A-Za-z0-9 ]/", '', $benef['nr_banco']);
    				$arr[$Row['id_liquidacao']]['dt_ultimo_arquivo_beneficiario_'.$count]   = $benef['dt_ultimo_arquivo_beneficiario'];
    				if($benef['dt_ultimo_arquivo_beneficiario']){
	    				unset($date);
	    				$date = str_replace('/', '-', $benef['dt_ultimo_arquivo_beneficiario']);
                        //Ajuste pra evitar de trazer data de alteração da documentação quando já tem aviso de encerramento e cálculo de data base [INC-60122]
                        if(strtotime(str_replace('/', '-', $benef['dt_ultimo_arquivo_beneficiario'])) > strtotime(str_replace('/', '-', $Row['dt_encerramento_colheita']))){
                            $date = str_replace('/', '-', $benef['dt_encerramento_colheita']);
                        }
	    				$arDatas[$Row['id_liquidacao']][] = date('Y-m-d',strtotime($date));
    				}

    				$arBenef[$Row['id_proposta']][$benef['nr_cpf_cnpj']] += $vlBenef;

    				$count++;
    			}
                
    			$difBenef = $Row['vl_indenizacao'] - $totalBenef;
    			if($difBenef > 0.01 ){
    				$arr[$Row['id_liquidacao']]['ds_nome_beneficiario_'.$count]     = $Row['ds_nome_proponente'];
    				$arr[$Row['id_liquidacao']]['ds_cpf_cnpj_beneficiario_'.$count] = $Row['cpf_cnpj'];
    				$arr[$Row['id_liquidacao']]['ds_valor_beneficiario_'.$count]    = round($difBenef, 2);
    				$arr[$Row['id_liquidacao']]['ds_status_'.$count]                = $benef['ds_status'];
    				$arr[$Row['id_liquidacao']]['nu_conta_corrente_'.$count]        = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_conta_corrente']);
    				$arr[$Row['id_liquidacao']]['nu_digito_conta_corrente_'.$count] = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_digito_conta_corrente']);
    				$arr[$Row['id_liquidacao']]['nu_agencia_'.$count]               = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_agencia']);
    				$arr[$Row['id_liquidacao']]['nu_digito_agencia_'.$count]        = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_digito_agencia']);
    				$arr[$Row['id_liquidacao']]['nr_banco_'.$count]                 = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nr_banco']);
    				$arr[$Row['id_liquidacao']]['dt_ultimo_arquivo_beneficiario_'.$count] = $Row['dt_ultimo_arquivo_beneficiario'];

    				if($Row['dt_ultimo_arquivo_beneficiario']){
	    				unset($date);
	    				$date = str_replace('/', '-', $Row['dt_ultimo_arquivo_beneficiario']);
	    				$arDatas[$Row['id_liquidacao']][] = date('Y-m-d',strtotime($date));
    				}
    			}

    		} else {
    			$arr[$Row['id_liquidacao']]['ds_nome_beneficiario_1']           = $Row['ds_nome_proponente'];
    			$arr[$Row['id_liquidacao']]['ds_cpf_cnpj_beneficiario_1']       = $Row['cpf_cnpj'];
    			$arr[$Row['id_liquidacao']]['ds_valor_beneficiario_1']          = round($Row['vl_indenizacao'], 2);
    			$arr[$Row['id_liquidacao']]['ds_status_'.$count]                ='-';
    			$arr[$Row['id_liquidacao']]['nu_conta_corrente_1']              = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_conta_corrente']);
    			$arr[$Row['id_liquidacao']]['nu_digito_conta_corrente_1']       = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_digito_conta_corrente']);
    			$arr[$Row['id_liquidacao']]['nu_agencia_1']                     = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_agencia']);
    			$arr[$Row['id_liquidacao']]['nu_digito_agencia_1']              = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_digito_agencia']);
    			$arr[$Row['id_liquidacao']]['nr_banco_1']                       = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nr_banco']);
    			$arr[$Row['id_liquidacao']]['dt_ultimo_arquivo_beneficiario_1'] = $Row['dt_ultimo_arquivo_beneficiario'];
    			if($Row['dt_ultimo_arquivo_beneficiario']){
	    			unset($date);
	    			$date = str_replace('/', '-', $Row['dt_ultimo_arquivo_beneficiario']);
	    			$arDatas[$Row['id_liquidacao']][] = date('Y-m-d',strtotime($date));
    			}
    		}

    		if($Row['ds_chave'] == 'INDENIZACAO_PAGA' || $Row['ds_chave'] == 'ENVIADA_SEGURADORA'){
    			$arr[$Row['id_liquidacao']]['dt_base_pagamento'] = $Row['dt_base_pagamento'];
    		} elseif($Row['ds_chave'] == 'SEM_INDENIZACAO') {
    			//$arr[$Row['id_liquidacao']]['dt_base_pagamento'] = max($Row['dt_encerramento_colheita'], $Row['dt_arquivo']);
    			$arr[$Row['id_liquidacao']]['dt_base_pagamento'] = $Row['dt_base_pagamento'];
    		} else {
    			$arr[$Row['id_liquidacao']]['dt_base_pagamento'] = max($arDatas[$Row['id_liquidacao']]);
    		}

    		unset($arDatas);
    	}
        


    	$titles = array(
    			'id_liquidacao' => 'Liquidação',
    			'id_processo' => 'Processo Agro',
    			'id_processo_seguradora' => 'Processo Seguradora',
    			'id_proposta' => 'Proposta',
    			'nr_apolice' => 'Apólice',
    			'ds_nome_proponente' => 'Segurado',
    			'cpf_cnpj' => 'CPF/CNPJ',
    			'ds_nome_abreviado' => 'Corretor',
    			'id_liquidacao' => 'Nr. Liquidação',
    			'ds_nome_proponente' => 'Segurado',
    			'vl_indenizacao' => 'Valor Estimado de Indenização',
                'ds_nome_cobertura' => 'Cobertura',
    			'ds_status' => 'Status',
                'motivos_sem_indenizacao' => 'Motivo sem indenização',
    			'dt_envio_seguradora' => 'Data de liberação para Seguradora',
                'ds_nome_usuario' => 'Usuário que liberou para Seguradora',
    			'ds_nome_produto' => 'Produto',
    			'ds_nome_safra' => 'Safra',
    			'ds_nome_municipio' => 'Município',
    			'ds_sigla' => 'UF',
    			'dt_liquidacao' => 'Data Liquidação',
    			'principal' => 'Principal',
    			'tp_liquidacao' => 'Tipo',
    			'ds_status_arquivos' => ' Status dos Arquivos',
    			'vl_pagamento' => 'Valor Pagamento',
    			'dt_estimada_pagamento' => 'Data Estimada Pagamento',
    			'dt_confirmacao_pagamento' => 'Data Pagamento',
    			'dt_encerramento_colheita' => 'Encerramento Colheita',
    	        'dt_aviso_final_replantio' => 'Aviso Final Replantio',
    			'dt_arquivo' => 'Dt. Último Arquivo',
    			'dt_base_pagamento' => 'Dt. Base Pagamento',
    			'ds_nome_usuario_responsavel_liquidacao' => 'Resp. Liquidação',
    			'ds_nome_beneficiario_1' => 'Beneficiário 1 Nome',
    			'ds_cpf_cnpj_beneficiario_1' => 'Beneficiário 1 CPF/CNPJ',
    			'ds_valor_beneficiario_1' => 'Beneficiário 1 Valor',
    			'nu_conta_corrente_1' => 'Conta',
    			'nu_digito_conta_corrente_1' => 'Digito',
    			'nu_agencia_1' => 'Agência',
    			'nu_digito_agencia_1' => 'Digito',
    			'nr_banco_1' => 'Número Banco',
    			'ds_status_1' => 'Status Arquivos',
    			'dt_ultimo_arquivo_beneficiario_1' => 'Último Arquivo Beneficiário',
    			'ds_nome_beneficiario_2' => 'Beneficiário 2 Nome',
    			'ds_cpf_cnpj_beneficiario_2' => 'Beneficiário 2 CPF/CNPJ',
    			'ds_valor_beneficiario_2' => 'Beneficiário 2 Valor',
    			'nu_conta_corrente_2' => 'Conta',
    			'nu_digito_conta_corrente_2' => 'Digito',
    			'nu_agencia_2' => 'Agência',
    			'nu_digito_agencia_2' => 'Digito',
    			'nr_banco_2' => 'Número Banco',
    			'ds_status_2' => 'Status Arquivos',
    			'dt_ultimo_arquivo_beneficiario_2' => 'Último Arquivo Beneficiário',
    			'ds_nome_beneficiario_3' => 'Beneficiário 3 Nome',
    			'ds_cpf_cnpj_beneficiario_3' => 'Beneficiário 3 CPF/CNPJ',
    			'ds_valor_beneficiario_3' => 'Beneficiário 3 Valor',
    			'nu_conta_corrente_3' => 'Conta',
    			'nu_digito_conta_corrente_3' => 'Digito',
    			'nu_agencia_3' => 'Agência',
    			'nu_digito_agencia_3' => 'Digito',
    			'nr_banco_3' => 'Número Banco',
    			'ds_status_3' => 'Status Arquivos',
    			'dt_ultimo_arquivo_beneficiario_3' => 'Último Arquivo Beneficiário'
    	);

    	$format = array(
    			'id_liquidacao' => array('align' => 'center'),
    			'id_processo' => array('align' => 'center'),
    			'id_processo_seguradora' => array('align' => 'center'),
    			'id_proposta' => array('align' => 'center'),
    			'nr_apolice' => array('align' => 'center'),
    			'ds_nome_proponente' => array('align' => 'left'),
    			'vl_indenizacao' => array('align' => 'right'),
    			'dt_estimada_pagamento' => array('align' => 'center'),
    			'dt_base_pagamento' => array('align' => 'center'),
    			'dt_confirmacao_pagamento' => array('align' => 'center'),
    			'dt_envio_seguradora' => array('align' => 'center'),
    			'ds_status' => array('align' => 'left'),
    			'principal'=> array('align'=>'center'),
    			'ds_nome_usuario_responsavel_liquidacao'=> array('align'=>'center'),
    			'dt_ultimo_arquivo_beneficiario' => array('align' => 'left')
    	);

    	switch ($this->getRequest()->getParam('tipo')) {
    		case 'excel':
    			$Csv = new Agro_Plugin_Rs2Csv();
    			$Csv->setRecordSet($arr);
    			$Csv->setType("application/octet-stream");
    			$Csv->setFileName("relatorio_liquidacoes.csv");
    			$Csv->setDisposition("attachment");
    			$Csv->setTitles($titles);
    			$Csv->setSeparator(";");
    			$Csv->getCsv();
    			break;
    		case 'html':
    			$Html = new Agro_Plugin_Rs2Html();
    			$Html->setRecordSet($arr);
    			$Html->setTitles($titles);
    			$Html->setFormat($format);
    			$Html->getHtml();
    			break;
    	}
    }

    public function liquidacoesessorimportacaoAction() {
    	$this->getHelper('ViewRenderer')->setNoRender();
    	$this->getHelper('layout')->disableLayout();

    	$Model         = new Relatorio_Model_Sinistro();
    	$ModelProposta = new Seguro_Model_Propostas();

    	$User = Zend_Auth::getInstance()->getIdentity();

    	$Rs  = $Model->relatorioLiquidacoesSeguradora($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'), ($this->getRequest()->getParam('id_tipo_liquidacao') ? $this->getRequest()->getParam('id_tipo_liquidacao') : false), ($User->id_empresa == 20 ? false : true), true);
    	$arr = array();
        
    	$countRow = 0;

    	foreach($Rs as $Row){
    		$arr[$countRow]['fl_importado']              = $Row['fl_relatorio_importacao_seguradora'];
    		$arr[$countRow]['id_proposta']               = $Row['id_proposta'];
    		$arr[$countRow]['tp_liquidacao']             = $Row['tp_liquidacao'];
    		$arr[$countRow]['id_processo']               = $Row['id_processo'];
    		$arr[$countRow]['nr_apolice']                = $Row['nr_apolice'];
    		$arr[$countRow]['cd_identificador_seguradora'] = $Row['cd_identificador_seguradora'];
    		$arr[$countRow]['dt_movimento']              = date('Y-m-d');
    		$arr[$countRow]['id_evento']                 = 11001;
    		$arr[$countRow]['dt_liquidacao']             = $Row['dt_liquidacao'];
    		$arr[$countRow]['dt_base_pagamento']         = $Row['dt_base_pagamento'];

    		$Proposta      = $ModelProposta->get($Row['id_proposta_original']);
    		$Beneficiarios = $Proposta->beneficiariosRelatorio();

    		$ds_nome_beneficiario = "";
    		$count                = 1;
    		$percentBenef         = 0;
    		$somaBenef            = 0;
    		$totalBenef           = 0;

    		if(is_array($Beneficiarios) && ($Row['id_cobertura'] <> '16' && $Row['id_cobertura'] <> '5' && $Row['id_cobertura'] <> '31' && $Row['id_cobertura'] <> '30' && $Row['id_cobertura'] <> '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'], ($Row['vl_indenizacao'] * $percentBenef)),2);

    				if($arBenef[$Row['id_proposta']][$benef['nr_cpf_cnpj']] + $vlBenef > $benef['vl_limite_beneficio']){
    					$vlBenef = $benef['vl_limite_beneficio'] - $arBenef[$Row['id_proposta']][$benef['nr_cpf_cnpj']];
    				}

    				$totalBenef += ($vlBenef > 0 ? $vlBenef : '0.0');

    				if($count == 1){
	    				$arr[$countRow]['ds_nome_beneficiario']      = $ds_nome_beneficiario;
	    				$arr[$countRow]['ds_cpf_cnpj_beneficiario']  = str_replace('.', '', str_replace('/', '', str_replace('-', '', $benef['nr_cpf_cnpj'])));
	    				$arr[$countRow]['ds_valor_beneficiario']     = ($vlBenef > 0 ? $vlBenef : '0.0');
	    				if(strlen($benef['nr_cpf_cnpj']) == 14){
	    					$arr[$countRow]['tp_pessoa'] = 1;
	    				} else {
	    					$arr[$countRow]['tp_pessoa'] = 2;
	    				}
    				} else {
    					$countRow++;
    					$arr[$countRow]['fl_importado']              = $Row['fl_relatorio_importacao_seguradora'];
    					$arr[$countRow]['id_proposta']               = $Row['id_proposta'];
    					$arr[$countRow]['tp_liquidacao']             = $Row['tp_liquidacao'];
    					$arr[$countRow]['id_processo']               = $Row['id_processo'];
    					$arr[$countRow]['dt_movimento']              = date('Y-m-d');
    					$arr[$countRow]['id_evento']                 = 11001;
    					$arr[$countRow]['nr_apolice']                = $Row['nr_apolice'];
    					$arr[$countRow]['cd_identificador_seguradora'] = $Row['cd_identificador_seguradora'];
    					$arr[$countRow]['dt_liquidacao']             = $Row['dt_liquidacao'];
    					$arr[$countRow]['dt_base_pagamento']         = $Row['dt_base_pagamento'];
    					$arr[$countRow]['vl_indenizacao']            = $Row['vl_indenizacao'];
    					$arr[$countRow]['ds_nome_beneficiario']      = $ds_nome_beneficiario;
    					$arr[$countRow]['ds_cpf_cnpj_beneficiario']  = str_replace('.', '', str_replace('/', '', str_replace('-', '', $benef['nr_cpf_cnpj'])));
    					$arr[$countRow]['ds_valor_beneficiario']     = ($vlBenef > 0 ? $vlBenef : '0.0');
    					if(strlen($benef['nr_cpf_cnpj']) == 14){
    						$arr[$countRow]['tp_pessoa'] = 1;
    					} else {
    						$arr[$countRow]['tp_pessoa'] = 2;
    					}
    				}

    				$arr[$countRow]['nu_conta_corrente']        = preg_replace("/[^A-Za-z0-9 ]/", '', $benef['nu_conta_corrente']);
    				$arr[$countRow]['nu_digito_conta_corrente'] = preg_replace("/[^A-Za-z0-9 ]/", '', $benef['nu_digito_conta_corrente']);
    				$arr[$countRow]['nu_agencia']               = preg_replace("/[^A-Za-z0-9 ]/", '', $benef['nu_agencia']);
    				$arr[$countRow]['nu_digito_agencia']        = preg_replace("/[^A-Za-z0-9 ]/", '', $benef['nu_digito_agencia']);
    				$arr[$countRow]['nr_banco']                 = preg_replace("/[^A-Za-z0-9 ]/", '', $benef['nr_banco']);

    				/*
    				1 Cheque
    				2 DOC
    				3 TED
    				4 Transferência
    				5 DARF NORMAL
    				6 Boleto
    				*/
    				switch ($benef['id_forma_pagamento']) {
    					case 1:
    						$arr[$countRow]['id_forma_pagto'] = 3;
    						break;
    					case 2:
    						$arr[$countRow]['id_forma_pagto'] = 1;
    						break;
    					case 3:
    						$arr[$countRow]['id_forma_pagto'] = 7;
    						break;
    					default:
    						$arr[$countRow]['id_forma_pagto'] = 1;
    				}

    				$arBenef[$Row['id_proposta']][$benef['nr_cpf_cnpj']] += $vlBenef;

    				$count++;
    			}

    			$difBenef = $Row['vl_indenizacao'] - $totalBenef;
    			if($difBenef > 0.01 ){
    				$countRow++;
    				$arr[$countRow]['fl_importado']              = $Row['fl_relatorio_importacao_seguradora'];
    				$arr[$countRow]['id_proposta']               = $Row['id_proposta'];
    				$arr[$countRow]['tp_liquidacao']             = $Row['tp_liquidacao'];
    				$arr[$countRow]['id_processo']               = $Row['id_processo'];
    				$arr[$countRow]['nr_apolice']                = $Row['nr_apolice'];
    				$arr[$countRow]['cd_identificador_seguradora'] = $Row['cd_identificador_seguradora'];
    				$arr[$countRow]['dt_movimento']              = date('Y-m-d');
    				$arr[$countRow]['id_evento']                 = 10104;
    				$arr[$countRow]['dt_liquidacao']             = $Row['dt_liquidacao'];
    				$arr[$countRow]['dt_base_pagamento']         = $Row['dt_base_pagamento'];
    				$arr[$countRow]['ds_nome_beneficiario']      = $Row['ds_nome_proponente'];
    				$arr[$countRow]['ds_cpf_cnpj_beneficiario']  = str_replace('.', '', str_replace('/', '', str_replace('-', '', $Row['cpf_cnpj'])));
    				$arr[$countRow]['ds_valor_beneficiario']     = $difBenef;

    				$arr[$countRow]['nu_conta_corrente']        = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_conta_corrente']);
    				$arr[$countRow]['nu_digito_conta_corrente'] = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_digito_conta_corrente']);
    				$arr[$countRow]['nu_agencia']               = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_agencia']);
    				$arr[$countRow]['nu_digito_agencia']        = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_digito_agencia']);
    				$arr[$countRow]['nr_banco']                 = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nr_banco']);
    				/*
    				1 Cheque
    				2 DOC
    				3 TED
    				4 Transferência
    				5 DARF NORMAL
    				6 Boleto
    				*/
    				switch ($Row['id_forma_pagamento']) {
    					case 1:
    						$arr[$countRow]['id_forma_pagto'] = 3;
    						break;
    					case 2:
    						$arr[$countRow]['id_forma_pagto'] = 1;
    						break;
    					case 3:
    						$arr[$countRow]['id_forma_pagto'] = 7;
    						break;
    					default:
    						$arr[$countRow]['id_forma_pagto'] = 1;
    				}


    				if(strlen($Row['cpf_cnpj']) == 14){
    					$arr[$countRow]['tp_pessoa'] = 1;
    				} else {
    					$arr[$countRow]['tp_pessoa'] = 2;
    				}

    			}

    		} else {
    			$arr[$countRow]['ds_nome_beneficiario']     = $Row['ds_nome_proponente'];
    			$arr[$countRow]['ds_cpf_cnpj_beneficiario'] = str_replace('.', '', str_replace('/', '', str_replace('-', '', $Row['cpf_cnpj'])));
    			$arr[$countRow]['ds_valor_beneficiario']    = $Row['vl_indenizacao'];

    			$arr[$countRow]['nu_conta_corrente']        = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_conta_corrente']);
    			$arr[$countRow]['nu_digito_conta_corrente'] = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_digito_conta_corrente']);
    			$arr[$countRow]['nu_agencia']               = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_agencia']);
    			$arr[$countRow]['nu_digito_agencia']        = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nu_digito_agencia']);
    			$arr[$countRow]['nr_banco']                 = preg_replace("/[^A-Za-z0-9 ]/", '', $Row['nr_banco']);
    			/*
    			    1 Cheque
					2 DOC
					3 TED
					4 Transferência
					5 DARF NORMAL
					6 Boleto
    			*/
    			switch ($Row['id_forma_pagamento']) {
    				case 1:
    					$arr[$countRow]['id_forma_pagto'] = 3;
    					break;
    				case 2:
    					$arr[$countRow]['id_forma_pagto'] = 1;
    					break;
   					case 3:
   						$arr[$countRow]['id_forma_pagto'] = 7;
   						break;
    				default:
    					$arr[$countRow]['id_forma_pagto'] = 1;
    			}

    			if(strlen($Row['cpf_cnpj']) == 14){
    				$arr[$countRow]['tp_pessoa'] = 1;
    			} else {
    				$arr[$countRow]['tp_pessoa'] = 2;
    			}

    		}

    		Agro_Db_Table_Abstract::getDefaultAdapter()->query("update sinistro.liquidacoes set fl_relatorio_importacao_seguradora=true where id = {$Row['id_liquidacao']}");

    		$countRow++;
    	}


    	$titles = array(
    			'fl_importado' => 'importado',
    			'nr_apolice' => 'apolice',
    			'cd_identificador_seguradora' => 'aviso',
    			'tp_liquidacao' => 'tp_liquidacao',
    			'dt_movimento' => 'dtMovimento',
    			'id_processo' => 'Processo AgroBrasil',
    			'id_evento' => 'Evento',
    			'ds_valor_beneficiario' => 'valorOperacao',
    			'ds_nome_beneficiario' => 'nomeFavorecido',
    			'tp_pessoa' => 'tipoPessoaFavorecido',
    			'ds_cpf_cnpj_beneficiario' => 'nrCnpjCpfFavorecido',
    			'ds_cpf_cnpj_beneficiario' => 'nrDocumentoFavorecido',
    			'id_forma_pagto' => 'meioPagamento',
    			'nr_banco' => 'nrBanco',
    			'nu_agencia' => 'nrAgencia',
    			'nu_digito_agencia' => 'nrDacAgencia',
    			'nu_conta_corrente' => 'nrContaCorrente',
    			'nu_digito_conta_corrente' => 'nrDacContaCorrente',
    			'dt_base_pagamento' => 'Data Base'
    	);

    	$format = array(
    			'id_liquidacao' => array('align' => 'center'),
    			'id_processo' => array('align' => 'center'),
    			'id_processo_seguradora' => array('align' => 'center'),
    			'id_proposta' => array('align' => 'center'),
    			'nr_apolice' => array('align' => 'center'),
    			'ds_nome_proponente' => array('align' => 'left'),
    			'vl_indenizacao' => array('align' => 'right'),
    			'dt_pagamento' => array('align' => 'center'),
    			'dt_confirmacao_pagamento' => array('align' => 'center'),
    			'dt_envio_seguradora' => array('align' => 'center'),
    			'ds_status' => array('align' => 'left'),
    			'principal'=> array('align'=>'center'),
    			'ds_nome_usuario_responsavel_liquidacao'=> array('align'=>'center')
    	);

    	switch ($this->getRequest()->getParam('tipo')) {
    		case 'excel':
    			$Csv = new Agro_Plugin_Rs2Csv();
    			$Csv->setRecordSet($arr);
    			$Csv->setType("application/octet-stream");
    			$Csv->setFileName("relatorio_liquidacoes_importacao_".date("Y-m-d")."_".date("H:i").".csv");
    			$Csv->setDisposition("attachment");
    			$Csv->setTitles($titles);
    			$Csv->setSeparator(";");
    			$Csv->getCsv();
    			break;
    		case 'html':
    			$Html = new Agro_Plugin_Rs2Html();
    			$Html->setRecordSet($arr);
    			$Html->setTitles($titles);
    			$Html->setFormat($format);
    			$Html->getHtml();
    			break;
    	}
    }

    public function liquidacoesitemAction() {

        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->relatorioLiquidacoesItem($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

        $rsTMP = array_map(function ($item) {
            $item['vl_indenizacao'] = round($item['vl_indenizacao'], 2);
            return $item;
        }, $Rs);

        $Rs = $rsTMP;

        $titles = array(
            'id_processo' => 'Processo Agro',
            'id_processo_seguradora' => 'Processo Nobre',
            'id_proposta' => 'Proposta',
            'nr_apolice' => 'Apólice',
            'ds_nome_produto' => 'Produto',
            'id_proponente' => 'ID Segurado',
            'nr_item_segurado' => 'Item Segurado',
            'vl_area' => 'Área',
            'vl_lmga' => 'LMGA',
            'id_liquidacao' => 'Id Liquidação',
            'dt_liquidacao_hora' => 'Data da Liquidação',
            'vl_prejuizo' => 'Valor Prejuízo',
            'vl_indenizacao' => 'Valor Indenização',
            'vl_franquia' => 'Franquia',
            'ds_status' => 'Status',
            'dt_envio_seguradora' => 'Data de liberação para Nobre',
            'principal'=>'Principal',
            'ds_nome_cobertura'=>'Cobertura',
            'id_cobertura'=>'Id. Cobertura',
            'liquidacao_manual'=>'Manual?',
            'ds_nome_usuario_responsavel_liquidacao' => 'Resp. Liquidação'
        );

        $format = array(
            'id_processo' => array('align' => 'center'),
            'id_processo_seguradora' => array('align' => 'center'),
            'id_proposta' => array('align' => 'center'),
            'nr_apolice' => array('align' => 'center'),
            'ds_nome_proponente' => array('align' => 'left'),
            'nr_item_segurado' => array('align' => 'right'),
            'vl_prejuizo' => array('align' => 'right'),
            'vl_indenizacao' => array('align' => 'right'),
            'dt_envio_seguradora' => array('align' => 'center'),
            'ds_status' => array('align' => 'left'),
            'principal' => array('align' => 'center')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($Rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_liquidacoes_item.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($Rs);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function laudoshortalicasAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->relatorioLaudosHortalicas($this->getRequest()->getParams());

        $titles = array(
            'ds_nome_cultura' => 'Cultura',
            'id_proposta' => 'Proposta',
            'id_item_segurado' => 'Item Segurado',
            'nr_amostra' => 'Amostra',
            'ds_estadio' => 'Estádio',
            'vl_percent_desfolhamento' => '% Desfolhamento',
            'vl_percent_dano_bruto' => '% Dano bruto'
        );

        $format = array(
            'ds_nome_cultura' => array('align' => 'left'),
            'id_proposta' => array('align' => 'center'),
            'id_item_segurado' => array('align' => 'center'),
            'nr_amostra' => array('align' => 'center'),
            'ds_estadio' => array('align' => 'center'),
            'vl_percent_desfolhamento' => array('align' => 'center'),
            'vl_percent_dano_bruto' => array('align' => 'center')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($Rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_encerramento.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($Rs);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    /**
     * Relatório de Sinistralidade
     * Id: 826
     * API > ReportsSinistro > sinistralidade
     * @return void
     */
    public function sinistralidadeAction()
    {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $idSafra = $this->getRequest()->getParam('id_safra');
        $produtos = $this->getRequest()->getParam('id_produto');

        $model = new Relatorio_Model_Sinistro();
        $rs = $model->relatorioSinistralidade($idSafra, $produtos);

        $laudosItensSegurados = [];
        $rsLaudosItensSegurados = $model->getLaudosItensSeguradosNovo($idSafra, $produtos);

        foreach ($rsLaudosItensSegurados as $registro) {
            $laudosItensSegurados["{$registro['id_endosso']}#{$registro['nr_item_segurado']}"][] = $registro;
        }

        if ($this->getRequest()->getParam('fl_chocho') == 1) {
            $titles = array(
                'id_proposta' => 'Proposta',
                'id_processo' => 'Processo',
                'ds_nome_fantasia' => 'Empresa',
                'ds_nome_produto' => 'Produto',
                'ds_nome_municipio' => 'Município',
                'nr_ibge' => 'Nr. IBGE',
                'ds_sigla' => 'UF',
                'ds_nome_cultura' => 'Cultura',
                'nr_item_segurado' => 'Item',
                'ds_item_segurado' => 'Quadra',
                'ds_nome_variedade' => 'Variedade',
                'vl_area' => 'Área',
                'vl_lmga' => 'LMGA',
                'vl_dano_1' => '1 % Dano',
                'vl_dano_chocho_1' => '1 % Dano (Chocho)',
                'vl_colhido_1' => '1 % Colhido',
                'vl_colhido_chocho_1' => '1 % Colhido (Chocho)',
                'dt_vistoria_1' => '1 Dt. Vistoria',
                'dt_laudo_1' => '1 Dt. Laudo',
                'fase_cultura_1' => '1 Fase da Cultura',
                'ds_cobertura_1' => '1 Cobertura',
                'vl_dano_2' => '2 % Dano',
                'vl_dano_chocho_2' => '2 % Dano (Chocho)',
                'vl_colhido_2' => '2 % Colhido',
                'vl_colhido_chocho_2' => '2 % Colhido (Chocho)',
                'dt_vistoria_2' => '2 Dt. Vistoria',
                'dt_laudo_2' => '2 Dt. Laudo',
                'fase_cultura_2' => '2 Fase da Cultura',
                'ds_cobertura_2' => '2 Cobertura',
                'vl_dano_3' => '3 % Dano',
                'vl_dano_chocho_3' => '3 % Dano (Chocho)',
                'vl_colhido_3' => '3 % Colhido',
                'vl_colhido_chocho_3' => '3 % Colhido (Chocho)',
                'dt_vistoria_3' => '3 Dt. Vistoria',
                'dt_laudo_3' => '3 Dt. Laudo',
                'fase_cultura_3' => '3 Fase da Cultura',
                'ds_cobertura_3' => '3 Cobertura',
                'vl_dano_4' => '4 % Dano',
                'vl_dano_chocho_4' => '4 % Dano (Chocho)',
                'vl_colhido_4' => '4 % Colhido',
                'vl_colhido_chocho_4' => '4 % Colhido (Chocho)',
                'dt_vistoria_4' => '4 Dt. Vistoria',
                'dt_laudo_4' => '4 Dt. Laudo',
                'fase_cultura_4' => '4 Fase da Cultura',
                'ds_cobertura_4' => '4 Cobertura',
                'vl_dano_5' => '5 % Dano',
                'vl_dano_chocho_5' => '5 % Dano (Chocho)',
                'vl_colhido_5' => '5 % Colhido',
                'vl_colhido_chocho_5' => '5 % Colhido (Chocho)',
                'dt_vistoria_5' => '5 Dt. Vistoria',
                'dt_laudo_5' => '5 Dt. Laudo',
                'fase_cultura_5' => '5 Fase da Cultura',
                'ds_cobertura_5' => '5 Cobertura',
                'vl_dano_6' => '6 % Dano',
                'vl_dano_chocho_6' => '6 % Dano (Chocho)',
                'vl_colhido_6' => '6 % Colhido',
                'vl_colhido_chocho_6' => '6 % Colhido (Chocho)',
                'dt_vistoria_6' => '6 Dt. Vistoria',
                'dt_laudo_6' => '6 Dt. Laudo',
                'fase_cultura_6' => '6 Fase da Cultura',
                'ds_cobertura_6' => '6 Cobertura',
                'vl_dano_7' => '7 % Dano',
                'vl_dano_chocho_7' => '7 % Dano (Chocho)',
                'vl_colhido_7' => '7 % Colhido',
                'vl_colhido_chocho_7' => '7 % Colhido (Chocho)',
                'dt_vistoria_7' => '7 Dt. Vistoria',
                'dt_laudo_7' => '7 Dt. Laudo',
                'fase_cultura_7' => '7 Fase da Cultura',
                'ds_cobertura_7' => '7 Cobertura',
                'vl_dano_8' => '8 % Dano',
                'vl_dano_chocho_8' => '8 % Dano (Chocho)',
                'vl_colhido_8' => '8 % Colhido',
                'vl_colhido_chocho_8' => '8 % Colhido (Chocho)',
                'dt_vistoria_8' => '8 Dt. Vistoria',
                'dt_laudo_8' => '8 Dt. Laudo',
                'fase_cultura_8' => '8 Fase da Cultura',
                'ds_cobertura_8' => '8 Cobertura'
            );
        } else {
            $titles = array(
                'id_proposta' => 'Proposta',
                'id_processo' => 'Processo',
                'ds_nome_fantasia' => 'Empresa',
                'ds_nome_produto' => 'Produto',
                'ds_nome_municipio' => 'Município',
                'nr_ibge' => 'Nr. IBGE',
                'ds_sigla' => 'UF',
                'ds_nome_cultura' => 'Cultura',
                'nr_item_segurado' => 'Item',
                'ds_item_segurado' => 'Quadra',
                'ds_nome_variedade' => 'Variedade',
                'vl_area' => 'Área',
                'vl_lmga' => 'LMGA',
                'vl_dano_1' => '1 % Dano',
                'vl_colhido_1' => '1 % Colhido',
                'dt_vistoria_1' => '1 Dt. Vistoria',
                'dt_laudo_1' => '1 Dt. Laudo',
                'fase_cultura_1' => '1 Fase da Cultura',
                'ds_cobertura_1' => '1 Cobertura',
                'vl_dano_2' => '2 % Dano',
                'vl_colhido_2' => '2 % Colhido',
                'dt_vistoria_2' => '2 Dt. Vistoria',
                'dt_laudo_2' => '2 Dt. Laudo',
                'fase_cultura_2' => '2 Fase da Cultura',
                'ds_cobertura_2' => '2 Cobertura',
                'vl_dano_3' => '3 % Dano',
                'vl_colhido_3' => '3 % Colhido',
                'dt_vistoria_3' => '3 Dt. Vistoria',
                'dt_laudo_3' => '3 Dt. Laudo',
                'fase_cultura_3' => '3 Fase da Cultura',
                'ds_cobertura_3' => '3 Cobertura',
                'vl_dano_4' => '4 % Dano',
                'vl_colhido_4' => '4 % Colhido',
                'dt_vistoria_4' => '4 Dt. Vistoria',
                'dt_laudo_4' => '4 Dt. Laudo',
                'fase_cultura_4' => '4 Fase da Cultura',
                'ds_cobertura_4' => '4 Cobertura',
                'vl_dano_5' => '5 % Dano',
                'vl_colhido_5' => '5 % Colhido',
                'dt_vistoria_5' => '5 Dt. Vistoria',
                'dt_laudo_5' => '5 Dt. Laudo',
                'fase_cultura_5' => '5 Fase da Cultura',
                'ds_cobertura_5' => '5 Cobertura',
                'vl_dano_6' => '6 % Dano',
                'vl_colhido_6' => '6 % Colhido',
                'dt_vistoria_6' => '6 Dt. Vistoria',
                'dt_laudo_6' => '6 Dt. Laudo',
                'fase_cultura_6' => '6 Fase da Cultura',
                'ds_cobertura_6' => '6 Cobertura',
                'vl_dano_7' => '7 % Dano',
                'vl_colhido_7' => '7 % Colhido',
                'dt_vistoria_7' => '7 Dt. Vistoria',
                'dt_laudo_7' => '7 Dt. Laudo',
                'fase_cultura_7' => '7 Fase da Cultura',
                'ds_cobertura_7' => '7 Cobertura',
                'vl_dano_8' => '8 % Dano',
                'vl_colhido_8' => '8 % Colhido',
                'dt_vistoria_8' => '8 Dt. Vistoria',
                'dt_laudo_8' => '8 Dt. Laudo',
                'fase_cultura_8' => '8 Fase da Cultura',
                'ds_cobertura_8' => '8 Cobertura'
            );
        }

        // Ids motivos de quadra não vistoriada que deverão apresentar resultado '0.00' no relatório.
        // A data de ocorrência do evento está fora do período de cobertura = 12
        // Área colhida = 1
        // Área erradicada = 3
        // Área não atingida / não sinistrada = 7
        // Não emergência das plantas = 5
        // Não semeadura/poda do talhão = 4
        // Segurado dispensa vistoria = 2
        $arrIdsMotivoQuadraNaoVistoriada = [1, 2, 3, 4, 5, 7, 12];
        $arItemSegurado = array();
        $arCobMultirisco = [18, 29, 32];
        $coberturasReplantio = [5, 30, 31];
        $count = 0;
        $motivosTracinho = [
            Sinistro2_Model_MotivosQuadraNaoVistoriada::CONDICOES_CLIMATICAS_DESFAVORAVEIS,
            Sinistro2_Model_MotivosQuadraNaoVistoriada::CULTURA_NAO_ESTA_MADURA,
            Sinistro2_Model_MotivosQuadraNaoVistoriada::ITEM_CONSTA_VISTORIA_DATA_ANTERIOR,
            Sinistro2_Model_MotivosQuadraNaoVistoriada::NAO_REALIZADA_NESTA_VISTORIA,
        ];

        foreach ($rs as $Row) {
            $arItemSegurado[$count]['id_proposta'] = $Row['id_proposta'];
            $arItemSegurado[$count]['id_processo'] = $Row['id_processo'];
            $arItemSegurado[$count]['ds_nome_fantasia'] = $Row['ds_nome_fantasia'];
            $arItemSegurado[$count]['ds_nome_produto'] = $Row['ds_nome_produto'];
            $arItemSegurado[$count]['ds_nome_municipio'] = $Row['ds_nome_municipio'];
            $arItemSegurado[$count]['nr_ibge'] = $Row['nr_ibge'];
            $arItemSegurado[$count]['ds_sigla'] = $Row['ds_sigla'];
            $arItemSegurado[$count]['ds_nome_cultura'] = $Row['ds_nome_cultura'];
            $arItemSegurado[$count]['nr_item_segurado'] = $Row['nr_item_segurado'];
            $arItemSegurado[$count]['ds_item_segurado'] = $Row['ds_item_segurado'];
            $arItemSegurado[$count]['ds_nome_variedade'] = $Row['ds_nome_variedade'];
            $arItemSegurado[$count]['vl_area'] = $Row['vl_area'];
            $arItemSegurado[$count]['vl_lmga'] = $Row['vl_lmga'];

            $i = 1;
            $vistoriasDesconsiderarLaudoEmBranco = [];

            foreach ($laudosItensSegurados["{$Row['id_endosso']}#{$Row['nr_item_segurado']}"] as $row2) {
                //Não mostrar cobertura de Multirisco para nenhuma cultura
                if (in_array($row2['id_cobertura'], $arCobMultirisco)) {
                    continue;
                }

                if ($row2['vl_percent_perdas'] === '0.00'
                    || $row2['vl_percent_perdas'] === 0.00
                    || !empty($row2['vl_percent_perdas'])
                    || isset($row2['vl_percent_perdas'])) {

                    $valorDano = $row2['vl_percent_perdas'];
                }

                if (
                    in_array($row2['id_motivo_quadra_nao_vistoriada'], $arrIdsMotivoQuadraNaoVistoriada)
                    || $row2['vl_percent_perdas'] === NULL
                ) {
                    $valorDano = '0.00';
                }

                if (in_array((int)$row2['id_motivo_quadra_nao_vistoriada'], $motivosTracinho)) {
                    $valorDano = '-';
                }

                if (in_array($row2['id_cobertura'], $coberturasReplantio)) {
                    $valorDano = round(($row2['vl_ha_area_replantada'] / $Row['vl_area']) * 100, 2);
                }

                $arItemSegurado[$count]['vl_dano_' . $i] = $valorDano;
                $arItemSegurado[$count]['vl_colhido_' . $i] = $row2['vl_percent_colhido'];
                $arItemSegurado[$count]['dt_vistoria_' . $i] = $row2['dt_vistoria'];
                $arItemSegurado[$count]['dt_laudo_' . $i] = $row2['dt_criacao'];
                $arItemSegurado[$count]['ds_cobertura_' . $i] = $row2['ds_nome_cobertura'];

                if (in_array($row2['id_cobertura'], $coberturasReplantio)) {
                    $valorDano = round(($row2['vl_ha_area_replantada'] / $Row['vl_area']) * 100, 2);
                    $arItemSegurado[$count]['vl_dano_' . $i] = $valorDano;
                }

                if ($this->getRequest()->getParam('fl_chocho') == 1) {
                    $arItemSegurado[$count]['vl_dano_chocho_' . $i] = $row2['vl_percent_perdas_chocho'];
                    $arItemSegurado[$count]['vl_colhido_chocho_' . $i] = $row2['vl_percent_colhido_chocho'];
                }

                $faseCultura = "";

                // busca exclusiva para Uva de Mesa (Cultura = 80) e Uva de Vinho (Cultura 81)
                if (in_array($Row['id_cultura'], 80, 81) && $row2['id_laudo_final_item_segurado'] > 0) {
                    $rsPosFloracao = $model->getPrePosFloracao($row2['id_laudo_final_item_segurado'], $Row['id_safra']);
                    if ($Row['id_safra'] < 14) {
                        if ($rsPosFloracao[0]['fl_pre_floracao'] == 1 || $rsPosFloracao[0]['fl_pos_floracao'] == 1) {
                            if ($rsPosFloracao[0]['fl_pre_floracao'] == 1) {
                                $faseCultura = "Pré-Floração";
                            }
                            if ($rsPosFloracao[0]['fl_pos_floracao'] == 1) {
                                $faseCultura = "Pós-Floração";
                            }
                        }
                    } else {
                        if ($rsPosFloracao[0]['fl_floracao'] == "pre") {
                            $faseCultura = "Pré-Floração";
                        } else {
                            $faseCultura = "Pós-Floração";
                        }
                    }
                }

                $arItemSegurado[$count]['fase_cultura_' . $i] = $faseCultura;
                $vistoriasDesconsiderarLaudoEmBranco[] = $row2['id'];

                $i++;
            }

            $rsLaudos = $model->getLaudosNaoSinistrados($Row['id_processo']);

            foreach ($rsLaudos as $row2) {
                if (in_array($row2['id'], $vistoriasDesconsiderarLaudoEmBranco)) {
                    continue;
                }

                $arItemSegurado[$count]['vl_dano_' . $i] = '0.00';
                $arItemSegurado[$count]['vl_colhido_' . $i] = '0.00';
                $arItemSegurado[$count]['dt_vistoria_' . $i] = $row2['dt_vistoria'];
                $arItemSegurado[$count]['dt_laudo_' . $i] = $row2['dt_criacao'];
                $arItemSegurado[$count]['ds_cobertura_' . $i] = $row2['ds_nome_cobertura'];
                $arItemSegurado[$count]['fase_cultura_' . $i] = "";

                $i++;
            }

            $count++;
        }

        $format = array(
            'id_proposta' => array('align' => 'center'),
            'id_processo' => array('align' => 'center'),
            'id_aviso' => array('align' => 'center'),
            'dt_aceitacao' => array('align' => 'center'),
            'ds_nome_produto' => array('align' => 'left'),
            'ds_nome_municipio' => array('align' => 'left'),
            'ds_sigla' => array('align' => 'center'),
            'ds_nome_proponente' => array('align' => 'left'),
            'ds_nome_fantasia' => array('align' => 'left')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $csv = new Agro_Plugin_Rs2Csv();
                $csv->setRecordSet($arItemSegurado);
                $csv->setType("application/octet-stream");
                $csv->setFileName("relatorio_sinistralidade.csv");
                $csv->setDisposition("attachment");
                $csv->setTitles($titles);
                $csv->setSeparator(";");
                $csv->getCsv();
                break;
            case 'html':
                $html = new Agro_Plugin_Rs2Html();
                $html->setRecordSet($arItemSegurado);
                $html->setTitles($titles);
                $html->setFormat($format);
                $html->getHtml();
                break;
        }
    }

    /**
     * Relatório de Laudos Finais PG
     * Id: 1092
     * API > ReportsSinistro > sinistralidadepg
     * @return void
     */
    public function sinistralidadepgAction()
    {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $idProduto = $this->getRequest()->getParam('id_produto');
        $idSafra = (int)$this->getRequest()->getParam('id_safra');
        $laudosItensAgrupadosProposta = [];

        $model = new Relatorio_Model_Sinistro();
        $rs = $model->relatorioSinistralidadePG($idSafra, $idProduto);
        $rsLaudosItensSeguradosBySafra = $model->getLaudosItensSeguradosBySafra($idSafra);

        foreach ($rsLaudosItensSeguradosBySafra as $registro) {
            $laudosItensAgrupadosProposta[$registro['id_proposta']][$registro['id_item_segurado']][] = $registro;
        }

        $titles = array(
            'id_proposta_mae' => 'Proposta',
            'id_processo' => 'Processo',
            'ds_nome_fantasia' => 'Empresa',
            'ds_nome_produto' => 'Produto',
            'ds_nome_municipio' => 'Município',
            'nr_ibge' => 'Nr. IBGE',
            'ds_sigla' => 'UF',
            'ds_nome_cultura' => 'Cultura',
            'ds_nome_cobertura' => 'Cobertura',
            'nr_item_segurado' => 'Item',
            'ds_item_segurado' => 'Quadra',
            'ds_nome_variedade' => 'Variedade',
            'vl_area' => 'Área',
            'vl_lmga' => 'LMGA',
            'vl_rendimento_tonelada' => 'PE',
            'vl_producao_garantida' => 'PG',
            'vl_franquia' => 'NC',
            'vl_taxa' => 'Taxa',
            'fl_transmitido_tablet' => 'Método de Transmissão',
        );

        for ($contador = 1; $contador <= 8; $contador++) {
            $colunasRepetidas = [
                "vl_dano_{$contador}" => "{$contador} % PO",
                "vl_colhido_{$contador}" => "{$contador} % Colhido",
                "dt_vistoria_{$contador}" => "{$contador} Dt. Vistoria",
                "dt_laudo_{$contador}" => "{$contador} Dt. Laudo",
                "id_vistoria_{$contador}" => "{$contador} ID Vistoria",
                "fase_cultura_{$contador}" => "{$contador} Fase da Cultura",
                "vl_podres_{$contador}" => "{$contador} % Podres",
                "vl_brotados_{$contador}" => "{$contador} % Brotados",
                "vl_pragas_{$contador}" => "{$contador} % Pragas e outros",
            ];

            $titles = array_merge($titles, $colunasRepetidas);
        }

        $count = 0;
        $arItemSegurado = array();
        $motivosPOIgualPE = [
            Sinistro2_Model_MotivosQuadraNaoVistoriada::AREA_COLHIDA,
            Sinistro2_Model_MotivosQuadraNaoVistoriada::AREA_ERRADICADA,
            Sinistro2_Model_MotivosQuadraNaoVistoriada::AREA_NAO_ATINGIDA,
            Sinistro2_Model_MotivosQuadraNaoVistoriada::COORDENADAS_NAO_COINCIDEM,
            Sinistro2_Model_MotivosQuadraNaoVistoriada::DATA_OCORRENCIA_EVENTO_FORA_PERIODO,
            Sinistro2_Model_MotivosQuadraNaoVistoriada::NAO_EMERGENCIA_PLANTAS,
            Sinistro2_Model_MotivosQuadraNaoVistoriada::NAO_SEMEADURA_TALHAO,
            Sinistro2_Model_MotivosQuadraNaoVistoriada::SEGURADO_DISPENSA_VISTORIA,
        ];

        foreach ($rs as $row) {
            $arItemSegurado[$count]['id_proposta_mae'] = $row['id_proposta_mae'];
            $arItemSegurado[$count]['id_processo'] = $row['id_processo'];
            $arItemSegurado[$count]['ds_nome_fantasia'] = $row['ds_nome_fantasia'];
            $arItemSegurado[$count]['ds_nome_produto'] = $row['ds_nome_produto'];
            $arItemSegurado[$count]['ds_nome_municipio'] = $row['ds_nome_municipio'];
            $arItemSegurado[$count]['nr_ibge'] = $row['nr_ibge'];
            $arItemSegurado[$count]['ds_sigla'] = $row['ds_sigla'];
            $arItemSegurado[$count]['ds_nome_cultura'] = $row['ds_nome_cultura'];
            $arItemSegurado[$count]['ds_nome_cobertura'] = $row['ds_nome_cobertura'];
            $arItemSegurado[$count]['nr_item_segurado'] = $row['nr_item_segurado'];
            $arItemSegurado[$count]['ds_item_segurado'] = $row['ds_item_segurado'];
            $arItemSegurado[$count]['ds_nome_variedade'] = $row['ds_nome_variedade'];
            $arItemSegurado[$count]['vl_area'] = $row['vl_area'];
            $arItemSegurado[$count]['vl_lmga'] = $row['vl_lmga'];
            $arItemSegurado[$count]['vl_rendimento_tonelada'] = $row['vl_rendimento_tonelada'];
            $arItemSegurado[$count]['vl_producao_garantida'] = $row['vl_producao_garantida'];
            $arItemSegurado[$count]['vl_franquia'] = $row['vl_franquia'];
            $arItemSegurado[$count]['vl_taxa'] = $row['vl_taxa'];
            $arItemSegurado[$count]['fl_transmitido_tablet'] = $row['fl_transmitido_tablet'];

            $i = 1;
            $laudosEmBranco = [];

            foreach ($laudosItensAgrupadosProposta[$row['id_proposta']][$row['id_item_segurado']] as $row2) {
                if ($row['id_cobertura'] !== $row2['id_cobertura']) {
                    continue;
                }

                $motivoValidoPOIgualPE = in_array($row2['id_motivo_quadra_nao_vistoriada'], $motivosPOIgualPE);

                $arItemSegurado[$count]['vl_dano_' . $i] = $row2['vl_rendimento_final_lavoura'];
                $arItemSegurado[$count]['dt_vistoria_' . $i] = $row2['dt_vistoria'];
                $arItemSegurado[$count]['dt_laudo_' . $i] = $row2['dt_criacao'];
                $arItemSegurado[$count]['id_vistoria_' . $i] = $row2['id_vistoria'];
                $arItemSegurado[$count]['vl_colhido_' . $i] = $row2['vl_percent_colhido'];
                $arItemSegurado[$count]['vl_podres_' . $i] = $row2['vl_graos_podres'];
                $arItemSegurado[$count]['vl_brotados_' . $i] = $row2['vl_graos_brotados'];
                $arItemSegurado[$count]['vl_pragas_' . $i] = $row2['vl_pragas_doencas_outros'];

                if ($row2['id_motivo_quadra_nao_vistoriada'] === 1) {
                    $arItemSegurado[$count]['vl_colhido_' . $i] = 100;
                }

                if ($motivoValidoPOIgualPE) {
                    $arItemSegurado[$count]['vl_dano_' . $i] = $row['vl_rendimento_tonelada'];
                }

                if (!empty($row2['id_motivo_quadra_nao_vistoriada']) && !$motivoValidoPOIgualPE) {
                    $laudosEmBranco[] = $row2;
                    continue;
                }

                // busca exclusiva para Uva de Mesa (Cultura = 80) e Uva de Vinho (Cultura 81)
                if(in_array($row['id_cultura'], [80, 81]) && $row['id_laudo_final_item_segurado'] > 0) {
                    $rsPosFloracao = $model->getPrePosFloracao($row2['id_laudo_final_item_segurado'], $row['id_safra']);
                    if($row['id_safra'] < 14) {
                        if($rsPosFloracao[0]['fl_pre_floracao'] == 1 || $rsPosFloracao[0]['fl_pos_floracao'] == 1) {
                            if($rsPosFloracao[0]['fl_pre_floracao'] == 1) {
                                $faseCultura = "Pré-Floração";
                            }
                            if($rsPosFloracao[0]['fl_pos_floracao'] == 1) {
                                $faseCultura = "Pós-Floração";
                            }
                        }
                    } else {
                        if($rsPosFloracao[0]['fl_floracao'] == "pre") {
                            $faseCultura = "Pré-Floração";
                        } else {
                            $faseCultura = "Pós-Floração";
                        }
                    }
                } else {
                    $faseCultura = "";
                }

                $arItemSegurado[$count]['fase_cultura_'.$i] = $faseCultura;

                $i++;
            }

            foreach ($laudosEmBranco as $laudo) {
                $arItemSegurado[$count]['vl_dano_' . $i] = '-';
                $arItemSegurado[$count]['dt_vistoria_' . $i] = $laudo['dt_vistoria'];
                $arItemSegurado[$count]['dt_laudo_' . $i] = $laudo['dt_criacao'];
                $arItemSegurado[$count]['id_vistoria_' . $i] = $laudo['id_vistoria'];
                $arItemSegurado[$count]['vl_colhido_' . $i] = '-';
                $arItemSegurado[$count]['vl_podres_' . $i] = '-';
                $arItemSegurado[$count]['vl_brotados_' . $i] = '-';
                $arItemSegurado[$count]['vl_pragas_' . $i] = '-';
                $arItemSegurado[$count]['fase_cultura_'.$i] = '';
                $i++;
            }

            $count++;
        }

        $format = array(
            'id_proposta_mae' => array('align' => 'center'),
            'id_processo' => array('align' => 'center'),
            'id_aviso' => array('align' => 'center'),
            'dt_aceitacao' => array('align' => 'center'),
            'ds_nome_produto' => array('align' => 'left'),
            'ds_nome_municipio' => array('align' => 'left'),
            'ds_sigla' => array('align' => 'center'),
            'ds_nome_proponente' => array('align' => 'left'),
            'ds_nome_fantasia' => array('align' => 'left')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $csv = new Agro_Plugin_Rs2Csv();
                $csv->setRecordSet($arItemSegurado);
                $csv->setType("application/octet-stream");
                $csv->setFileName("relatorio_sinistralidade.csv");
                $csv->setDisposition("attachment");
                $csv->setTitles($titles);
                $csv->setSeparator(";");
                $csv->getCsv();
                break;
            case 'html':
                $html = new Agro_Plugin_Rs2Html();
                $html->setRecordSet($arItemSegurado);
                $html->setTitles($titles);
                $html->setFormat($format);
                $html->getHtml();
                break;
        }
    }

    /**
     * ATENÇÃO!
     * Ao realizar alterações neste relatório, verificar a necessidade de ajustar também na API de Reservas
     * agronet/library/Agro/APIs/Reports/ReportsSinistro.php:vistoriaspreliminares()
     * @return void
     */
    public function vistoriaspreliminaresAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->relatorioVistoriasPreliminares($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));
        
        $titles = array(
            'id_proposta' => 'Proposta',
            'id_processo' => 'Processo',
            'ds_nome_fantasia' => 'Empresa',
            'ds_nome_produto' => 'Produto',
            'ds_nome_municipio' => 'Município',
            'nr_ibge' => 'Nr. IBGE',
            'ds_sigla' => 'UF',
            'ds_nome_cultura' => 'Cultura',
            'nr_item_segurado' => 'Item',
            'ds_item_segurado' => 'Quadra',
            'ds_nome_variedade' => 'Variedade',
            'vl_area' => 'Área',
            'vl_lmga' => 'LMGA',
            'vl_dano_1' => '1 Intensidade',
            'dt_laudo_1' => '1 Dt. Laudo',
        	'ds_nome_cobertura_1' => '1 Cobertura',
        	'id_vistoria_1' => '1 ID Vistoria',
        	'ds_nome_estadio_fenologico_1' => '1 Estadio Fenológico',
        	'tamanho_planta_1' => '1 Tamanho Planta',
        	'eventos_1' => '1 Eventos',
            'vl_dano_2' => '2 Intensidade',
            'dt_laudo_2' => '2 Dt. Laudo',
        	'ds_nome_cobertura_2' => '2 Cobertura',
            'id_vistoria_2' => '2 ID Vistoria',
            'ds_nome_estadio_fenologico_2' => '2 Estadio Fenológico',
            'tamanho_planta_2' => '2 Tamanho Planta',
            'eventos_2' => '2 Eventos',
            'vl_dano_3' => '3 Intensidade',
            'dt_laudo_3' => '3 Dt. Laudo',
        	'ds_nome_cobertura_3' => '3 Cobertura',
            'id_vistoria_3' => '3 ID Vistoria',
            'ds_nome_estadio_fenologico_3' => '3 Estadio Fenológico',
            'tamanho_planta_3' => '3 Tamanho Planta',
            'eventos_3' => '3 Eventos',
            'vl_dano_4' => '4 Intensidade',
            'dt_laudo_4' => '4 Dt. Laudo',
        	'ds_nome_cobertura_4' => '4 Cobertura',
            'id_vistoria_4' => '4 ID Vistoria',
            'ds_nome_estadio_fenologico_4' => '4 Estadio Fenológico',
            'tamanho_planta_4' => '4 Tamanho Planta',
            'eventos_4' => '4 Eventos',
            'vl_dano_5' => '5 Intensidade',
            'dt_laudo_5' => '5 Dt. Laudo',
        	'ds_nome_cobertura_5' => '5 Cobertura',
            'id_vistoria_5' => '5 ID Vistoria',
            'ds_nome_estadio_fenologico_5' => '5 Estadio Fenológico',
            'tamanho_planta_5' => '5 Tamanho Planta',
            'eventos_5' => '5 Eventos',
            'vl_dano_6' => '6 Intensidade',
            'dt_laudo_6' => '6 Dt. Laudo',
        	'ds_nome_cobertura_6' => '6 Cobertura',
            'id_vistoria_6' => '6 ID Vistoria',
            'ds_nome_estadio_fenologico_6' => '6 Estadio Fenológico',
            'tamanho_planta_6' => '6 Tamanho Planta',
            'eventos_6' => '6 Eventos',
            'vl_dano_7' => '7 Intensidade',
            'dt_laudo_7' => '7 Dt. Laudo',
        	'ds_nome_cobertura_7' => '7 Cobertura',
            'id_vistoria_7' => '7 ID Vistoria',
            'ds_nome_estadio_fenologico_7' => '7 Estadio Fenológico',
            'tamanho_planta_7' => '7 Tamanho Planta',
            'eventos_7' => '7 Eventos',
            'vl_dano_8' => '8 Intensidade',
            'dt_laudo_8' => '8 Dt. Laudo',
        	'ds_nome_cobertura_8' => '8 Cobertura',
            'id_vistoria_8' => '8 ID Vistoria',
            'ds_nome_estadio_fenologico_8' => '8 Estadio Fenológico',
            'tamanho_planta_8' => '8 Tamanho Planta',
            'eventos_8' => '8 Eventos',
        );

        $count = 0;
        $arItemSegurado = array();

        foreach($Rs as $Row) {
            $arItemSegurado[$count]['id_proposta']        = $Row['id_proposta'];
            $arItemSegurado[$count]['id_processo']        = $Row['id_processo'];
            $arItemSegurado[$count]['ds_nome_fantasia']   = $Row['ds_nome_fantasia'];
            $arItemSegurado[$count]['ds_nome_produto']    = $Row['ds_nome_produto'];
            $arItemSegurado[$count]['ds_nome_municipio']  = $Row['ds_nome_municipio'];
            $arItemSegurado[$count]['nr_ibge']            = $Row['nr_ibge'];
            $arItemSegurado[$count]['ds_sigla']           = $Row['ds_sigla'];
            $arItemSegurado[$count]['ds_nome_cultura']    = $Row['ds_nome_cultura'];
            $arItemSegurado[$count]['nr_item_segurado']   = $Row['nr_item_segurado'];
            $arItemSegurado[$count]['ds_item_segurado']   = $Row['ds_item_segurado'];
            $arItemSegurado[$count]['ds_nome_variedade']  = $Row['ds_nome_variedade'];
            $arItemSegurado[$count]['vl_area']            = $Row['vl_area'];
            $arItemSegurado[$count]['vl_lmga']            = $Row['vl_lmga'];

            $RsLaudos = $Model->getLaudosPreliminaresItensSegurados($Row['id_item_segurado'], $Row['id_safra']);
            $i = 1;
            
            $intensidadeDefault = '-';

            if (!empty($RsLaudos)) {
                foreach ($RsLaudos as $Row2) {
                    $flagZerarIntensidadeParaReplantio = false;
                    
                    if (!$Row2['fl_dt_evento_em_cobertura'] || $Row2['fl_evento_nao_constatado']) {
                        $intensidadeDefault = '0';
                        $flagZerarIntensidadeParaReplantio = true;
                    }

                    $intensidadeDefault = !Sistema_Model_Status::isStatusLaudoPreliminarCancelado($Row2['id_status'])
                        ? $intensidadeDefault
                        : '-';

                    if (Produto_Model_Coberturas::isReplantio($Row2['id_cobertura']) && $flagZerarIntensidadeParaReplantio) {
                        $Row2['intensidade'] = '0';
                    } else {
                        $Row2['intensidade'] =  Produto_Model_Coberturas::isReplantio($Row2['id_cobertura'])
                            ? 2
                            : $Row2['intensidade'];
                    }
                    
                    $arItemSegurado[$count]['vl_dano_' . $i] = $Row2['intensidade'] ?? $intensidadeDefault;
                    $arItemSegurado[$count]['dt_laudo_' . $i] = $Row2['dt_criacao'];
                    $arItemSegurado[$count]['ds_nome_cobertura_' . $i] = $Row2['ds_nome_cobertura'];
                    $arItemSegurado[$count]['id_vistoria_' . $i] = $Row2['id_vistoria'];
                    $arItemSegurado[$count]['ds_nome_estadio_fenologico_' . $i] = $Row2['ds_nome_estadio_fenologico'];
                    $arItemSegurado[$count]['tamanho_planta_' . $i] = $Row2['tamanho_planta'];
                    $arItemSegurado[$count]['eventos_' . $i] = $Row2['eventos'];
                    $i++;
                }
            } else {
                $RsLaudos = $Model->getLaudosPreliminaresNaoSinistrado($Row['id_processo']);
                $i = 1;
                
                foreach ($RsLaudos as $Row2) {
                    $flagZerarIntensidadeParaReplantio = false;
            
                    if (!$Row2['fl_dt_evento_em_cobertura'] || $Row2['fl_evento_nao_constatado']) {
                        $intensidadeDefault = '0';
                        $flagZerarIntensidadeParaReplantio = true;
                    }
                     
                    $intensidadeDefault = !Sistema_Model_Status::isStatusLaudoPreliminarCancelado($Row2['id_status'])
                        ? $intensidadeDefault
                        : '-';
                    
                    if (Produto_Model_Coberturas::isReplantio($Row2['id_cobertura']) && $flagZerarIntensidadeParaReplantio) {
                        $arItemSegurado[$count]['vl_dano_' . $i] = '0';
                    } else {
                        $arItemSegurado[$count]['vl_dano_' . $i] = Produto_Model_Coberturas::isReplantio($Row2['id_cobertura'])
                            ? 2 
                            : $intensidadeDefault;
                    }

                    $arItemSegurado[$count]['eventos_' . $i] = '';

                    if (!empty($Row2['id_item_segurado'])) {
                        $arItemSegurado[$count]['dt_laudo_' . $i] = $Row2['dt_criacao'];
                        $arItemSegurado[$count]['ds_nome_cobertura_' . $i] = $Row2['ds_nome_cobertura'];
                        $arItemSegurado[$count]['id_vistoria_' . $i] = $Row2['id_vistoria'];
                        $arItemSegurado[$count]['ds_nome_estadio_fenologico_' . $i] = $Row2['ds_nome_estadio_fenologico'];
                        $arItemSegurado[$count]['tamanho_planta_' . $i] = $Row2['tamanho_planta'];
                    } else {
                        $arItemSegurado[$count]['dt_laudo_' . $i] = "-";
                        $arItemSegurado[$count]['ds_nome_cobertura_' . $i] = '';
                        $arItemSegurado[$count]['id_vistoria_' . $i] = '';
                        $arItemSegurado[$count]['ds_nome_estadio_fenologico_' . $i] = '';
                        $arItemSegurado[$count]['tamanho_planta_' . $i] = '';
                    }

                    $i++;
                }
            }

            $count++;
        }
        
        $format = array(
            'id_proposta' => array('align' => 'center'),
            'id_processo' => array('align' => 'center'),
            'id_aviso' => array('align' => 'center'),
            'dt_aceitacao' => array('align' => 'center'),
            'ds_nome_produto' => array('align' => 'left'),
            'ds_nome_municipio' => array('align' => 'left'),
            'ds_sigla' => array('align' => 'center'),
            'ds_nome_proponente' => array('align' => 'left'),
            'ds_nome_fantasia' => array('align' => 'left')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($arItemSegurado);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_preliminares.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($arItemSegurado);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function vistoriaspreliminaresAction_backup() {
    	$this->getHelper('ViewRenderer')->setNoRender();
    	$this->getHelper('layout')->disableLayout();

    	$Model = new Relatorio_Model_Sinistro();
    	$Rs = $Model->relatorioVistoriasPreliminares($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

    	$titles = array(
    			'id_proposta' => 'Proposta',
    			'id_processo' => 'Processo',
    			'ds_nome_fantasia' => 'Empresa',
    			'ds_nome_produto' => 'Produto',
    			'ds_nome_municipio' => 'Município',
    			'nr_ibge' => 'Nr. IBGE',
    			'ds_sigla' => 'UF',
    			'ds_nome_cultura' => 'Cultura',
    			'ds_nome_cobertura' => 'Cobertura',
    			'nr_item_segurado' => 'Item',
    			'ds_item_segurado' => 'Quadra',
    			'ds_nome_variedade' => 'Variedade',
    			'vl_area' => 'Área',
    			'vl_lmga' => 'LMGA',
    			'vl_franquia' => 'Franquia',
    			'vl_taxa' => 'Taxa',
    			'vl_dano_1' => '1 Intensidade',
    			'dt_laudo_1' => '1 Dt. Laudo',
    			'vl_dano_2' => '2 Intensidade',
    			'dt_laudo_2' => '2 Dt. Laudo',
    			'vl_dano_3' => '3 Intensidade',
    			'dt_laudo_3' => '3 Dt. Laudo',
    			'vl_dano_4' => '4 Intensidade',
    			'dt_laudo_4' => '4 Dt. Laudo',
    			'vl_dano_5' => '5 Intensidade',
    			'dt_laudo_5' => '5 Dt. Laudo',
    			'vl_dano_6' => '6 Intensidade',
    			'dt_laudo_6' => '6 Dt. Laudo',
    			'vl_dano_7' => '7 Intensidade',
    			'dt_laudo_7' => '7 Dt. Laudo',
    			'vl_dano_8' => '8 Intensidade',
    			'dt_laudo_8' => '8 Dt. Laudo'
    	);

    	$count = 0;
    	$arItemSegurado = array();
    	foreach($Rs as $Row) {

    		$arItemSegurado[$count]['id_proposta']        = $Row['id_proposta'];
    		$arItemSegurado[$count]['id_processo']        = $Row['id_processo'];
    		$arItemSegurado[$count]['ds_nome_fantasia']   = $Row['ds_nome_fantasia'];
    		$arItemSegurado[$count]['ds_nome_produto']    = $Row['ds_nome_produto'];
    		$arItemSegurado[$count]['ds_nome_municipio']  = $Row['ds_nome_municipio'];
    		$arItemSegurado[$count]['nr_ibge']            = $Row['nr_ibge'];
    		$arItemSegurado[$count]['ds_sigla']           = $Row['ds_sigla'];
    		$arItemSegurado[$count]['ds_nome_cultura']    = $Row['ds_nome_cultura'];
    		$arItemSegurado[$count]['ds_nome_cobertura']  = $Row['ds_nome_cobertura'];
    		$arItemSegurado[$count]['nr_item_segurado']   = $Row['nr_item_segurado'];
    		$arItemSegurado[$count]['ds_item_segurado']   = $Row['ds_item_segurado'];
    		$arItemSegurado[$count]['ds_nome_variedade']  = $Row['ds_nome_variedade'];
    		$arItemSegurado[$count]['vl_area']            = $Row['vl_area'];
    		$arItemSegurado[$count]['vl_lmga']            = $Row['vl_lmga'];
    		$arItemSegurado[$count]['vl_franquia']        = $Row['vl_franquia'];
    		$arItemSegurado[$count]['vl_taxa']            = $Row['vl_taxa'];

    		$RsLaudos = $Model->getLaudosPreliminaresItensSegurados($Row['id_item_segurado'], $Row['id_cobertura'], $Row['id_safra']);
    		$i = 1;

    		if(count($RsLaudos) > 0) {
    			foreach($RsLaudos as $Row2) {
    				$arItemSegurado[$count]['vl_dano_'.$i]  = (!$Row2['intensidade']) ? '0' : $Row2['intensidade'];
    				$arItemSegurado[$count]['dt_laudo_'.$i] = $Row2['dt_criacao'];
    				$i++;
    			}
    		} else {
    			$arItemSegurado[$count]['vl_dano_'.$i]  = '0';
    			$arItemSegurado[$count]['dt_laudo_'.$i] = "-";
    		}

    		$count++;
    	}

    	$format = array(
    			'id_proposta' => array('align' => 'center'),
    			'id_processo' => array('align' => 'center'),
    			'id_aviso' => array('align' => 'center'),
    			'dt_aceitacao' => array('align' => 'center'),
    			'ds_nome_produto' => array('align' => 'left'),
    			'ds_nome_municipio' => array('align' => 'left'),
    			'ds_sigla' => array('align' => 'center'),
    			'ds_nome_proponente' => array('align' => 'left'),
    			'ds_nome_fantasia' => array('align' => 'left')
    	);

    	switch ($this->getRequest()->getParam('tipo')) {
    		case 'excel':
    			$Csv = new Agro_Plugin_Rs2Csv();
    			$Csv->setRecordSet($arItemSegurado);
    			$Csv->setType("application/octet-stream");
    			$Csv->setFileName("relatorio_preliminares.csv");
    			$Csv->setDisposition("attachment");
    			$Csv->setTitles($titles);
    			$Csv->setSeparator(";");
    			$Csv->getCsv();
    			break;
    		case 'html':
    			$Html = new Agro_Plugin_Rs2Html();
    			$Html->setRecordSet($arItemSegurado);
    			$Html->setTitles($titles);
    			$Html->setFormat($format);
    			$Html->getHtml();
    			break;
    	}
    }

    public function indenizacaocoberturaAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();
        
        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->relatorioIndenizacaoCobertura($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

        $rsTMP = array_map(function ($item) {
            $item['indenizacao'] = round($item['indenizacao'], 2);
            return $item;
        }, $Rs);

        $Rs = $rsTMP;

        $titles = array(
            'id_proposta' => 'Proposta',
            'nr_apolice' => 'Apólice',
            'ds_nome_produto' => 'Produto',
            'ds_nome_cultura' => 'Cultura',
            'id_processo' => 'Processo',
            'lmga' => 'LMGA',
            'ds_nome_cobertura' => 'Cobertura',
            'vl_prejuizo' => 'Prejuízo',
            'vl_franquia' => 'Franquia (%)',
            'franquia' => 'Franquia',
            'indenizacao' => 'Indenização',
            'ds_nome_tipo_liquidacao' => 'Tipo',
            'ds_sigla' => 'UF',
			'ds_nome_corretor' => 'Corretor',
			'id_liquidacao' => 'Nº Liquidação',
			'ds_status_liquidacao' => 'Status da liquidação'
        );

        $format = array(
            'id_proposta' => array('align' => 'center'),
            'nr_apolice' => array('align' => 'center'),
            'ds_nome_produto' => array('align' => 'left'),
            'ds_nome_cultura' => array('align' => 'left'),
            'id_processo' => array('align' => 'center'),
            'lmga' => array('align' => 'right'),
            'ds_nome_cobertura' => array('align' => 'left'),
            'vl_prejuizo' => array('align' => 'right'),
            'vl_franquia' => array('align' => 'right'),
            'franquia' => array('align' => 'right'),
            'indenizacao' => array('align' => 'right'),
            'ds_nome_tipo_liquidacao' => array('align' => 'left'),
            'ds_sigla' => array('align' => 'left'),
			'ds_nome_corretor' => array('align' => 'left'),
			'id_liquidacao' => array('align' => 'center'),
			'ds_status_liquidacao' => array('align' => 'left')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($Rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_indenizacao_cobertura.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($Rs);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function indenizacaoitemcoberturaAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $Model = new Relatorio_Model_Sinistro();
        
        $Rs = $Model->relatorioIndenizacaoCoberturaItem($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

        foreach ($Rs as &$row) {
            $row['indenizacao'] = round($row['indenizacao'], 2);

            $row['vl_premio'] = number_format(Agro_Util::round((($row['vl_lmga'] * $row['vl_taxa']) / 100)), 2, '.', '');
        }

        $titles = array(
            'id_proposta' => 'Proposta',
            'nr_apolice' => 'Apólice',
            'ds_nome_produto' => 'Produto',
            'ds_nome_cultura' => 'Cultura',
            'id_processo' => 'Processo',
            'nr_item_segurado' => 'Item',
            'ds_item_segurado' => 'Quadra',
            'vl_lmga' => 'LMGA',
            'vl_area' => 'Área',
            'ds_nome_variedade' => 'Variedade',
            'ds_nome_cobertura' => 'Cobertura',
            'vl_prejuizo' => 'Prejuízo',
            'vl_franquia' => 'Franquia (%)',
            'franquia' => 'Franquia',
            'indenizacao' => 'Indenização',
            'ds_nome_tipo_liquidacao' => 'Tipo',
            'vl_premio' => 'Prêmio'
        );

        $format = array(
            'id_proposta' => array('align' => 'center'),
            'nr_apolice' => array('align' => 'center'),
            'ds_nome_produto' => array('align' => 'left'),
            'ds_nome_cultura' => array('align' => 'left'),
            'id_processo' => array('align' => 'center'),
            'ds_nome_cobertura' => array('align' => 'left'),
            'vl_prejuizo' => array('align' => 'right'),
            'vl_franquia' => array('align' => 'right'),
            'franquia' => array('align' => 'right'),
            'indenizacao' => array('align' => 'right'),
            'ds_nome_tipo_liquidacao' => array('align' => 'left')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($Rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_indenizacao_cobertura_item.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($Rs);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function processospendentesliquidacaoAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $ModelProposta = new Seguro_Model_Propostas();
        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->processosPendentesLiquidacao($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

        $titles = array(
            'id_processo'               => 'Processo',
            'id_proposta' 		        => 'Proposta',
            'nr_apolice' 		        => 'Apólice',
            'ds_nome_safra' 		    => 'Safra',
            'ds_nome_cultura'		    => 'Cultura',
            'ds_nome_produto' 		    => 'Produto',
            'id_proponente' 	        => 'ID Segurado',
            'dt_encerramento_colheita' 	=> 'Data encerramento',
            'dt_envio_encerramento' 	=> 'Data envio',
            'fl_pasta_aberta' 		    => 'Pasta aberta',
            'qtd_quadras_pendentes'     => 'Qtd. quadras pendentes',
            'ds_sigla'                  => 'UF',
            'ds_nome_municipio'         => 'Município',
            'ds_nome_usuario_responsavel_liquidacao' => 'Resp. Liquidação'
        );

        $format = array(
            'id_processo' => array('align' => 'center'),
            'id_proposta' => array('align' => 'center'),
            'nr_apolice' => array('align' => 'center'),
            'ds_nome_safra' => array('align' => 'center'),
            'ds_nome_produto' => array('align' => 'left'),
            'id_proponente' => array('align' => 'left'),
            'ds_nome_cultura' => array('align' => 'left'),
            'dt_encerramento_colheita' => array('align' => 'left'),
            'dt_envio_encerramento' => array('align' => 'left'),
            'fl_pasta_aberta' => array('align' => 'center'),
            'fl_pasta_aberta' => array('align' => 'center'),
            'qtd_quadras_pendentes' => array('align' => 'center'),
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($Rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_processos_pendentes_liquidacao.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($Rs);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function processoscomencerramentocolheitaAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->processosComEncerramentoColheita($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'), $this->getRequest()->getParam('data_limite'));

        $titles = array(
            'id_processo' 					=> 'Processo',
            'id_proposta' 					=> 'Proposta',
            'nr_apolice' 					=> 'Apólice',
            'id_proponente' 			    => 'ID Segurado',
            'vistoriador' 					=> 'Vistoriador',
            'ds_nome_abreviado' 			=> 'Corretor',
            'ds_nome_cultura' 				=> 'Cultura',
            'safra' 						=> 'Safra',
            'produto' 						=> 'Produto',
            'data_encerramento_colheita' 	=> 'Encerramento de colheita',
            'data_envio' 					=> 'Data de envio',
            'fl_pasta_aberta' 				=> 'Pasta aberta',
            'liquidacao'					=> 'Liquidação'
        );

        $format = array(
            'id_processo' => array('align' => 'center'),
            'id_proposta' => array('align' => 'center'),
            'nr_apolice' => array('align' => 'center'),
            'ds_nome_proponente' => array('align' => 'left'),
            'vistoriador' => array('align' => 'left'),
            'ds_nome_abreviado' => array('align' => 'left'),
            'ds_nome_cultura' => array('align' => 'left'),
            'safra' => array('align' => 'center'),
            'produto' => array('align' => 'left'),
            'data_encerramento_colheita' => array('align' => 'left'),
            'data_envio' => array('align' => 'left'),
            'fl_pasta_aberta' => array('align' => 'center'),
            'liquidacao' => array('align' => 'center')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($Rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_processos_com_encerramento_colheita.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($Rs);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function notasfiscaisAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->relatorioNotasFiscais($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

        $titles = array(
            'id_relatorio' 		=> 'Id Relatório',
            'id_proposta' 		=> 'Proposta',
            'id_processo' 		=> 'Processo',
            'nr_nota_fiscal' 	=> 'NF',
            'dt_criacao'    	=> 'Dt. Fechamento',
            'ds_status' 		=> 'Status',
            'ds_nome_produto' 	=> 'Produto',
            'ds_nome_usuario' 	=> 'Usuário',
            'ds_nome_fantasia' 	=> 'Empresa de Vistoria'
        );

        $format = array(
            'id_relatorio' => array('align' => 'center'),
            'id_proposta' => array('align' => 'center'),
            'id_processo' => array('align' => 'center'),
            'dt_criacao' => array('align' => 'center'),
            'ds_nome_usuario' => array('align' => 'left'),
            'ds_nome_fantasia' => array('align' => 'left'),
            'ds_status' => array('align' => 'left'),
            'nr_nota_fiscal' => array('align' => 'right'),
            'ds_nome_produto' => array('align' => 'right')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($Rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_notas_fiscais.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($Rs);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function laudosmacaAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->relatorioLaudosMaca();

        $titles = array(
            'id_proposta' 			=> 'Proposta',
            'nr_item_segurado' 		=> 'Item',
            'vl_lmga' 			    => 'LMGA',
            'vl_area' 			    => 'Área',
            'vl_franquia' 			=> 'Franquia',
            'ds_nome_safra'			=> 'Safra',
            'cat1_cat1' 			=> 'CAT 1_1',
            'cat1_cat2' 			=> 'CAT 1_2',
            'cat1_cat3' 			=> 'CAT 1_3',
            'cat1_industrial' 		=> 'CAT 1_IND',
            'cat2_cat2' 			=> 'CAT 2_2',
            'cat2_cat3' 			=> 'CAT 2_3',
            'cat2_industrial' 		=> 'CAT 2_IND',
            'cat3_cat3' 			=> 'CAT 3_3',
            'cat3_industrial' 	    => 'CAT 3_IND',
            'industrial_industrial' => 'CAT IND_IND',
            'vistoriador_1'         => 'Vistoriador 1',
            'vistoriador_2'         => 'Vistoriador 2'
        );

        $arItemSegurado = array();
        $count = 0;

        foreach($Rs as $Row) {

            $arItemSegurado[$count]['id_proposta']           = $Row['id_proposta'];
            $arItemSegurado[$count]['nr_item_segurado']      = $Row['nr_item_segurado'];
            $arItemSegurado[$count]['vl_lmga']               = $Row['vl_lmga'];
            $arItemSegurado[$count]['vl_area']               = $Row['vl_area'];
            $arItemSegurado[$count]['vl_franquia']           = $Row['vl_franquia'];
            $arItemSegurado[$count]['ds_nome_safra']         = $Row['ds_nome_safra'];
            $arItemSegurado[$count]['cat1_cat1']             = $Row['cat1_cat1'];
            $arItemSegurado[$count]['cat1_cat2']             = $Row['cat1_cat2'];
            $arItemSegurado[$count]['cat1_cat3']             = $Row['cat1_cat3'];
            $arItemSegurado[$count]['cat1_industrial']       = $Row['cat1_industrial'];
            $arItemSegurado[$count]['cat2_cat2']             = $Row['cat2_cat2'];
            $arItemSegurado[$count]['cat2_cat3']             = $Row['cat2_cat3'];
            $arItemSegurado[$count]['cat2_industrial']       = $Row['cat2_industrial'];
            $arItemSegurado[$count]['cat3_cat3']             = $Row['cat3_cat3'];
            $arItemSegurado[$count]['cat3_industrial']       = $Row['cat3_industrial'];
            $arItemSegurado[$count]['industrial_industrial'] = $Row['industrial_industrial'];

            $RsVistoriador = $Model->getVistoriador($Row['id_laudo_final_item_segurado']);
            $i = 1;

            if(count($RsVistoriador) > 0) {
                foreach($RsVistoriador as $Row2) {
                    $arItemSegurado[$count]['vistoriador_'.$i]  = $Row2['ds_nome_usuario'];
                    $i++;
                }
            }

            $count++;
        }

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($arItemSegurado);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_laudos_maca.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($arItemSegurado);
                $Html->setTitles($titles);
                //$Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function sinistrosliquidacoesAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->sinistrosLiquidacoes($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

        $titles = array(
            'ds_nome_produto' 		                => 'Produto',
            'ds_nome_safra' 		                => 'Safra',
            'total_processos' 		                => 'Processos',
            'total_processos_aguardando_liquidacao' => 'Aguardando Liquidação',
            'total_processos_liquidados'    	    => 'Liq. Calculada',
            'total_processos_liquidados_enviados'   => 'Liq. Enviada à Seguradora',
            'total_processos_liquidados_pagos'      => 'Liq. Paga'
        );

        $format = array(
            'ds_nome_produto' => array('align' => 'left'),
            'ds_nome_safra' => array('align' => 'center'),
            'id_processo' => array('align' => 'center'),
            'total_processos' => array('align' => 'right'),
            'total_processos_aguardando_liquidacao' => array('align' => 'right'),
            'total_processos_liquidados' => array('align' => 'right'),
            'total_processos_liquidados_enviados' => array('align' => 'right'),
            'total_processos_liquidados_pagos' => array('align' => 'right')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($Rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_sinistros_x_liquidacoes.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($Rs);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function ajustereservaAction() {
    	$this->getHelper('ViewRenderer')->setNoRender();
    	$this->getHelper('layout')->disableLayout();

    	$Model = new Relatorio_Model_Sinistro();
    	$Rs = $Model->ajustesReservas($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

    	$titles = array(
    			'id_proposta_original' 		  => 'Proposta',
    			'id_proposta_endosso' 		  => 'Proposta Endosso',
    			'nr_apolice' 		          => 'Apólice',
    			'ds_nome_produto'             => 'Produto',
    			'id_cobertura'    	          => 'Id Cobertura',
    			'ds_nome_cobertura'    	      => 'Cobertura',
    			'id_aviso'                    => 'Aviso',
    			'id_aviso_seguradora'         => 'Aviso Seguradora',
    			'vl_reserva'                  => 'Reserva Atual',
    			'vl_indenizacao'              => 'Indenização Paga',
    			'ds_chave'                    => 'Status'
    	);

    	$format = array(
    			'ds_nome_produto' => array('align' => 'left'),
    			'ds_nome_cobertura' => array('align' => 'left'),
    			'nr_apolice' => array('align' => 'center'),
    			'id_aviso' => array('align' => 'center'),
    			'id_proposta_original' => array('align' => 'center'),
    			'id_proposta_endosso' => array('align' => 'center'),
    			'vl_reserva' => array('align' => 'right'),
    			'cd_identificador_seguradora' => array('align' => 'center')
    	);

    	switch ($this->getRequest()->getParam('tipo')) {
    		case 'excel':
    			$Csv = new Agro_Plugin_Rs2Csv();
    			$Csv->setRecordSet($Rs);
    			$Csv->setType("application/octet-stream");
    			$Csv->setFileName("relatorio_reservas.csv");
    			$Csv->setDisposition("attachment");
    			$Csv->setTitles($titles);
    			$Csv->setSeparator(";");
    			$Csv->getCsv();
    			break;
    		case 'html':
    			$Html = new Agro_Plugin_Rs2Html();
    			$Html->setRecordSet($Rs);
    			$Html->setTitles($titles);
    			$Html->setFormat($format);
    			$Html->getHtml();
    			break;
    	}
    }

    public function auditoriaAction() {

        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->relatorioAvisos($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

        $arr = array();
        foreach($Rs as $Row) {
            $arr[$Row['id_aviso']]['id_processo']           = $Row['id_processo'];
            $arr[$Row['id_aviso']]['id_processo_seguradora']= $Row['id_processo_seguradora'];
            $arr[$Row['id_aviso']]['status_processo']       = $Row['status_processo'];
            $arr[$Row['id_aviso']]['id_aviso']              = $Row['id_aviso'];
            $arr[$Row['id_aviso']]['dt_aceitacao']          = $Row['dt_aceitacao'];
            $arr[$Row['id_aviso']]['dt_aceitacao_hora']     = $Row['dt_aceitacao_hora'];
            $arr[$Row['id_aviso']]['dt_sinistro']           = $Row['dt_sinistro'];
            $arr[$Row['id_aviso']]['dt_criacao']            = $Row['dt_criacao'];
            $arr[$Row['id_aviso']]['id_proposta']           = $Row['id_proposta'];
            $arr[$Row['id_aviso']]['ds_nome_safra']        	= $Row['ds_nome_safra'];
            $arr[$Row['id_aviso']]['ds_nome_usuario']       = $Row['ds_nome_usuario'];
            $arr[$Row['id_aviso']]['ds_nome_proponente']    = $Row['ds_nome_proponente'];
            $arr[$Row['id_aviso']]['soma_lmga']             = $Row['soma_lmga'];
            $arr[$Row['id_aviso']]['soma_area']             = $Row['soma_area'];
            $arr[$Row['id_aviso']]['ds_nome_produto']       = $Row['ds_nome_produto'];
            $arr[$Row['id_aviso']]['municipio_propriedade'] = $Row['municipio_propriedade'];
            $arr[$Row['id_aviso']]['uf_propriedade']        = $Row['uf_propriedade'];
            $arr[$Row['id_aviso']]['ds_nome_fantasia']      = $Row['ds_nome_fantasia'];
            $arr[$Row['id_aviso']]['municipio_empresa']     = $Row['municipio_empresa'];
            $arr[$Row['id_aviso']]['uf_empresa']            = $Row['uf_empresa'];
            $arr[$Row['id_aviso']]['ds_chave']              = $Row['ds_chave'];
            $arr[$Row['id_aviso']]['ds_nome_abreviado']     = $Row['ds_nome_abreviado'];
            $arr[$Row['id_aviso']]['empresa_previa']        = $Row['empresa_previa'];

            $Rs_eve = $Model->getEventosAviso($Row['id_aviso']);
            $arEvento = array();
            foreach($Rs_eve as $Row2) {
                $arEvento[] = $Row2['ds_nome_evento'];
            }
            $arr[$Row['id_aviso']]['ds_evento'] =  implode("," , $arEvento);

            $arrProposta['propostas'][] = $Row['id_proposta'];
        }

        $titles = array(
            'id_processo' => 'Processo',
            'id_processo_seguradora' => 'Processo Nobre',
            'status_processo' => 'Status Processo',
            'id_aviso' => 'Aviso',
            'dt_aceitacao' => 'Data Aceitação',
            'dt_aceitacao_hora' => 'Data Aceitação (hora)',
            'dt_sinistro' => 'Data Sinistro',
            'dt_criacao' => 'Data Aviso',
            'ds_nome_usuario' => 'Digitador',
            'id_proposta' => 'Proposta',
            'ds_nome_safra' => 'Safra',
            'ds_nome_proponente' => 'Segurado',
            'ds_nome_abreviado' => 'Corretor',
            'soma_lmga' => 'LMGA',
            'soma_area' => 'Área',
            'ds_nome_produto' => 'Produto',
            'municipio_propriedade' => 'Município',
            'uf_propriedade' => 'UF',
            'ds_nome_fantasia' => 'Empresa',
            'municipio_empresa' => 'Mun. Empresa',
            'uf_empresa' => 'UF Empresa',
            'empresa_previa' => 'Empresa Prévia',
            'ds_chave' => 'Status',
            'ds_evento' => 'Evento(s)'
        );

        $format = array(
            'id_processo' => array('align' => 'center'),
            'id_aviso' => array('align' => 'center'),
            'ds_nome_safra' => array('align' => 'center'),
            'dt_aceitacao' => array('align' => 'center'),
            'dt_aceitacao_hora' => array('align' => 'center'),
            'id_proposta' => array('align' => 'center'),
            'ds_nome_proponente' => array('align' => 'left'),
            'soma_lmga' => array('align' => 'right'),
            'soma_area' => array('align' => 'right'),
            'ds_nome_produto' => array('align' => 'left'),
            'municipio_propriedade' => array('align' => 'left'),
            'uf_propriedade' => array('align' => 'center'),
            'ds_nome_fantasia' => array('align' => 'left'),
            'municipio_empresa' => array('align' => 'left'),
            'uf_empresa' => array('align' => 'center'),
            'ds_chave' => array('align' => 'center')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($arr);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;

            case 'excel':
                $this->_forward('kmlauditoriasinistro', 'scripts', 'default', $arrProposta);
                break;

        }
    }

    public function cobrancaAction() {

    	$this->getHelper('ViewRenderer')->setNoRender();
    	$this->getHelper('layout')->disableLayout();

    	$Model = new Relatorio_Model_Sinistro();
    	$Rs = $Model->relatorioCobranca($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));
        
    	$User = Zend_Auth::getInstance()->getIdentity();

    	//Se for usuario da AgroBrasil
    	if($User->id_empresa == 20){
	    	$titles = array(
	    			'id_proposta' => 'Proposta',
	    			'id_proposta_mae_completo' => 'Proposta Completa',
	    			'nr_apolice' => 'Apólice',
	    			'ds_nome_produto' => 'Produto',
	    			'ds_nome_safra' => 'Safra',
	    			'empresa' => 'Empresa',
	    			'id_relatorio_cobranca' => 'Id Relatorio',
	    			'nr_nota_fiscal' => 'NF',
	    			'ds_chave' => 'Status',
	    			'vl_honorarios' => 'Honorários',
	    			'km_rodado' => 'Km Rodado',
	    			'custo_km_rodado' => 'Custo Quilometragem',
	    			'vl_pedagio' => 'Pedágio',
	    			'vl_hotel' => 'Hotel',
	    			'vl_alimentacao' => 'Alimentação',
	    			'vl_total_despesas' => 'Total Despesas',
	    			'id_vistoria' => 'Id Vistoria',
	    			'ds_tipo' => 'Tipo Vistoria',
	    			'vistoriadores' => 'Vistoriadores',
                    'dt_vistoria' => 'Data Vistoria a Campo',
                    'fl_transmitido_tablet' => 'Método de Transmissão',
	    	);
    	} else {
    		$titles = array(
    				'id_proposta_mae_completo' => 'Proposta Completa',
    				'nr_apolice' => 'Apólice',
    				'vl_honorarios' => 'Honorários',
    				'vl_total_despesas' => 'Total Despesas',
    				'id_vistoria' => 'Id Vistoria',
    				'ds_tipo' => 'Tipo Vistoria',
    				'empresa' => 'Empresa',
    				'nr_nota_fiscal' => 'NF',
                    'dt_vistoria' => 'Data Vistoria a Campo',
                    'fl_transmitido_tablet' => 'Método de Transmissão',
    		);
    	}

    	$format = array(
    			'id_proposta' => array('align' => 'center'),
    			'nr_apolice' => array('align' => 'center'),
    			'id_aviso' => array('align' => 'center'),
    			'dt_agendamento_preliminar' => array('align' => 'center'),
    			'dt_vistoria_preliminar' => array('align' => 'center'),
    			'dt_agendamento_final' => array('align' => 'center'),
    			'dt_vistoria_final' => array('align' => 'center'),
    			'dt_aceitacao' => array('align' => 'center'),
    			'dt_sinistro' => array('align' => 'center'),
    			'eventos' => array('align' => 'left'),
    			'ds_nome_cobertura' => array('align' => 'left'),
    			'vistoriadores' => array('align' => 'left'),
    			'ds_status' => array('align' => 'center'),
                'dt_vistoria' => array('format' => 'data/hora')
    	);

    	switch ($this->getRequest()->getParam('tipo')) {
    		case 'excel':
    			$Csv = new Agro_Plugin_Rs2Csv();
    			$Csv->setRecordSet($Rs);
    			$Csv->setType("application/octet-stream");
    			$Csv->setFileName("cobranca.csv");
    			$Csv->setDisposition("attachment");
    			$Csv->setTitles($titles);
    			$Csv->setSeparator(";");
    			$Csv->getCsv();
    			break;
    		case 'html':
    			$Html = new Agro_Plugin_Rs2Html();
    			$Html->setRecordSet($Rs);
    			$Html->setTitles($titles);
    			$Html->setFormat($format);
    			$Html->getHtml();
    			break;
    	}
    }

    public function processospendentesliquidacaonovoAction() {
        
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $parametros = $this->getRequest()->getParams();
        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->processosPendentesLiquidacaoNovo($parametros['id_safra'], $parametros['id_produto'], $parametros['tipoRelatorio']);

        $configuracoes = [
            'BASICO' => [
                'colunasTitulos' => [
                    'id_processo' => 'Processo',
                    'id_proposta' => 'Proposta',
                    'id_aviso_encerramento' => 'Nº aviso encerramento',
                    'nr_apolice' => 'Apólice',
                    'ds_nome_safra' => 'Safra',
                    'ds_nome_cultura' => 'Cultura',
                    'ds_nome_produto' => 'Produto',
                    'id_proponente' => 'ID Segurado',
                    'dt_encerramento_colheita' => 'Data encerramento',
                    'dt_envio_encerramento' => 'Data envio',
                    'fl_pasta_aberta' => 'Pasta aberta',
                    'qtd_quadras_pendentes' => 'Qtd. quadras pendentes',
                    'ds_beneficiarios' => 'Beneficiarios',
                    'ds_sigla' => 'UF',
                    'ds_nome_municipio' => 'Município',
                    'ds_nome_usuario_responsavel_liquidacao' => 'Resp. Liquidação',
                    'ds_status_cronometro' => 'Status contador',
                    'ds_observacao_cronometro' => 'Observações do contador',
                    'prazo_cronometro' => 'Prazo contador',
                    'dt_previsao_pagamento' => 'Previsão de pagamento',
                ],
                'formatacao' => [
                    'id_processo' => ['align' => 'center'],
                    'id_proposta' => ['align' => 'center'],
                    'id_aviso_encerramento' => ['align' => 'center'],
                    'nr_apolice' => ['align' => 'center'],
                    'ds_nome_safra' => ['align' => 'center'],
                    'ds_nome_produto' => ['align' => 'left'],
                    'ds_nome_proponente' => ['align' => 'left'],
                    'ds_nome_cultura' => ['align' => 'left'],
                    'dt_encerramento_colheita' => ['align' => 'left'],
                    'dt_envio_encerramento' => ['align' => 'left'],
                    'fl_pasta_aberta' => ['align' => 'center'],
                    'qtd_quadras_pendentes' => ['align' => 'center'],
                    'ds_beneficiarios' => ['align' => 'left']
                ]
            ],
            'COMPLETO' => [
                'colunasTitulos' => [
                    'id_proposta' => 'Proposta',
                    'id_aviso_encerramento' => 'Nº Aviso encerramento',
                    'ds_nome_safra' => 'Safra',
                    'ds_nome_cultura' => 'Cultura',
                    'ds_nome_produto' => 'Produto',
                    'id_proponente' => 'ID Segurado',
                    'ds_sigla' => 'UF',
                    'ds_nome_municipio' => 'Município',
                    'dt_encerramento_colheita' => 'Data encerramento',
                    'dt_envio_encerramento' => 'Data envio',
                    'ds_nome_usuario_responsavel_liquidacao' => 'Resp. Liquidação',
                    'ds_observacao' => 'Pendências',
                    'qtd_quadras_pendentes' => 'Qtd. quadras pendentes',
                    'todos_laudos_digitados' => 'Todos os Laudos Digitados',
                    'ds_empresa_vistoria' => 'Empresa de Vistoria',
                    'ds_corretora' => 'Corretora',
                    'dias_aguardando_liquidacao' => 'Dias Aguardando Liquidação',
                    'ds_status_documentacao_processo' => 'Status Documentação Processo',
                    'ultimo_documento_enviado' => 'Último Documento Enviado',
                    'ds_beneficiarios' => 'Beneficiarios',
                    'ds_status_documentacao_beneficiario' => 'Status Documentação Beneficiário',
                    'ultimo_documento_beneficiario' => 'Último Documento Beneficiário',
                    'ds_status_cronometro' => 'Status contador',
                    'ds_observacao_cronometro' => 'Observações do contador',
                    'prazo_cronometro' => 'Prazo contador',
                    'dt_previsao_pagamento' => 'Previsão de pagamento',
                ],
                'formatacao' => [
                    'id_proposta' => ['align' => 'center'],
                    'id_aviso_encerramento' => ['align' => 'center'],
                    'ds_nome_safra' => ['align' => 'center'],
                    'ds_nome_produto' => ['align' => 'left'],
                    'ds_nome_proponente' => ['align' => 'left'],
                    'ds_nome_cultura' => ['align' => 'left'],
                    'dt_encerramento_colheita' => ['align' => 'left'],
                    'dt_envio_encerramento' => ['align' => 'left'],
                    'qtd_quadras_pendentes' => ['align' => 'center'],
                    'todos_laudos_digitados' => ['align' => 'center'],
                    'ds_beneficiarios' => ['align' => 'left'],
                    'ds_status_documentacao_beneficiario' => ['align' => 'left'],
                    'ultimo_documento_beneficiario' => ['align' => 'left'],
                    'ds_sigla' => ['align' => 'left'],
                    'ds_nome_municipio' => ['align' => 'left'],
                    'ds_nome_usuario_responsavel_liquidacao' => ['align' => 'left'],
                    'ds_observacao' => ['align' => "left' style='min-width: 300px;"],
                    'ds_empresa_vistoria' => ['align' => 'left'],
                    'ds_corretora' => ['align' => 'left'],
                    'dias_aguardando_liquidacao' => ['align' => 'center'],
                    'ds_status_documentacao_processo' => ['align' => 'left'],
                    'ultimo_documento_enviado' => ['align' => 'left'],
                ]
            ]
        ];

        if ($parametros['tipoRelatorio'] === 'COMPLETO') {
            $sql = "SELECT sa.ds_chave as ds_chave_status_agendamento ";
            $sql .= "     , slf.ds_chave as ds_chave_status_vistoria ";
            $sql .= "     , sprop.id_proposta_mae ";
            $sql .= "FROM sinistro.processos as proc ";
            $sql .= "         INNER JOIN seguro.propostas sprop ON sprop.id = proc.id_proposta ";
            $sql .= "         INNER JOIN produto.produtos pp ON pp.id = sprop.id_produto ";
            $sql .= "         INNER JOIN produto.produtos_coberturas ppc ON ppc.id_produto = pp.id AND ppc.fl_cobertura_principal is true ";
            $sql .= "         INNER JOIN sinistro.vistorias_processos vp ON vp.id_processo = proc.id ";
            $sql .= "         INNER JOIN sistema.vistorias v ON v.id = vp.id_vistoria ";
            $sql .= "         INNER JOIN sistema.vistorias_coberturas vvc ON vvc.id_vistoria = v.id AND vvc.id_cobertura = ppc.id_cobertura ";
            $sql .= "         INNER JOIN sistema.vistorias_agendamentos vagend ON vagend.id_vistoria = v.id ";
            $sql .= "         INNER JOIN sistema.agendamentos a ON a.id = vagend.id_agendamento ";
            $sql .= "         INNER JOIN sistema.status sa ON sa.id = a.id_status ";
            $sql .= "         LEFT JOIN sistema.vistorias_laudos_finais vlf ON vlf.id_vistoria = v.id ";
            $sql .= "         LEFT JOIN sinistro.laudos_finais lf ON lf.id = vlf.id_laudo_final ";
            $sql .= "         LEFT JOIN sistema.status slf ON slf.id = lf.id_status ";
            $sql .= "WHERE pp.id_safra = {$parametros['id_safra']}";

            $rs = $Model->fetchAll($sql);
            $agendamentosProposta = [];

            foreach ($rs as $registro) {
                $agendamentosProposta[$registro['id_proposta_mae']][] = $registro;
            }

            $modelCronometroRegulacao = new Sinistro2_Model_CronometroRegulacao();
            foreach ($Rs as $indice => $registro) {

                if ($parametros['tipo'] == 'excel') {
                    $Rs[$indice]['ds_observacao'] = str_replace("<br>", ", ", $Rs[$indice]['ds_observacao']);
                    $Rs[$indice]['ds_observacao'] = str_replace(";", "", $Rs[$indice]['ds_observacao']);
                    $Rs[$indice]['ds_observacao'] = preg_replace('/\s/',' ', $Rs[$indice]['ds_observacao']);
                }

                $Rs[$indice]['todos_laudos_digitados'] = 'SIM';
                $statusLaudosNao = [
                    Sinistro2_Model_LaudosFinais::DS_CHAVE_STATUS_ENVIADO_NAO_ASSINADO,
                    Sinistro2_Model_LaudosFinais::DS_CHAVE_STATUS_PENDENTE_ENVIO,
                    Sinistro2_Model_LaudosFinais::DS_CHAVE_STATUS_PENDENTE_LAUDO_FINAL,
                ];

                if (empty($agendamentosProposta[$registro['id_proposta']])) {
                    $Rs[$indice]['todos_laudos_digitados'] = 'NÃO';
                }

                foreach ($agendamentosProposta[$registro['id_proposta']] as $agendamento) {
                    if (in_array($agendamento['ds_chave_status_vistoria'], $statusLaudosNao)) {
                        $Rs[$indice]['todos_laudos_digitados'] = 'NÃO';
                    }

                    if (empty($agendamento['ds_chave_status_vistoria']) && $agendamento['ds_chave_status_agendamento'] === Sistema_Model_Agendamentos::DS_CHAVE_STATUS_AGUARDANDO_DATA) {
                        $Rs[$indice]['todos_laudos_digitados'] = 'NÃO';
                    }
                }

                if (!empty($registro['dt_inicio_cronometro']) && empty($registro['prazo_cronometro'])) {
                    $Rs[$indice]['prazo_cronometro'] = $modelCronometroRegulacao->calcularDiasRegulacaoValida([
                        'dt_inicio' => $registro['dt_inicio_cronometro'],
                        'dt_fim' => $registro['dt_fim_cronometro'],
                        'nr_dias_suspenso' => $registro['nr_dias_suspenso_cronometro'],
                    ]);
                }

                if (empty($registro['id_cronometro'])) {

                    $Rs[$indice]['dt_previsao_pagamento'] = '';
    
                    if (!empty($registro['ds_id_status_documentacao_processo']) && (int)$registro['ds_id_status_documentacao_processo'] !== Seguro_Model_Beneficiarios::ID_STATUS_ARQUIVOS_ANALISE_CONCLUIDA) {
                        continue;
                    }
    
                    if (!empty($registro['ds_id_status_documentacao_beneficiario']) && (int)$registro['ds_id_status_documentacao_beneficiario'] !== Seguro_Model_Beneficiarios::ID_STATUS_ARQUIVOS_ANALISE_CONCLUIDA) {
                        continue;
                    }
    
                    if (empty($registro['data_envio_encerramento_sem_formatacao'])) {
                        continue;
                    }
    
                    $maiorData = $registro['data_envio_encerramento_sem_formatacao'];
    
                    if (!empty($registro['maior_data_arquivos_processo']) && Agro_Util::contarDiasEntreDatas($maiorData, $registro['maior_data_arquivos_processo']) > 0) {
                        $maiorData = $registro['maior_data_arquivos_processo'];
                    }
    
                    if (!empty($registro['maior_data_arquivos_beneficiario']) && Agro_Util::contarDiasEntreDatas($maiorData, $registro['maior_data_arquivos_beneficiario']) > 0) {
                        $maiorData = $registro['maior_data_arquivos_beneficiario'];
                    }
    
                    $Rs[$indice]['dt_previsao_pagamento'] = Agro_Util::formatDate(Agro_Util::somarData($maiorData, 0, 0, 30));
                }
            }
        }

        switch ($parametros['tipo']) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($Rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_processos_pendentes_liquidacao.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($configuracoes[$parametros['tipoRelatorio']]['colunasTitulos']);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($Rs);
                $Html->setTitles($configuracoes[$parametros['tipoRelatorio']]['colunasTitulos']);
                $Html->setFormat($configuracoes[$parametros['tipoRelatorio']]['formatacao']);
                $Html->getHtml();
                break;
        }
    }
    
    public function cobrancageralAction() {

        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $usuarioLogado = Zend_Auth::getInstance()->getIdentity();
        $params = $this->getRequest()->getParams();

        if ($usuarioLogado->id_role == Sistema_Model_Usuarios::PERFIL_SEGURADORA_ESSOR) {
            $params['id_status'] = Sistema_Model_Status::RELATORIO_COBRANCA_CONFERIDO;
        }
        
        $ModelProposta = new Seguro_Model_Propostas();
        $Model = new Relatorio_Model_Sinistro();
        
        $Rs = $Model->cobrancaGeral($params);
        
        $tipo_relatorio = $params['modelo_relatorio'];
        $idsVistoria = $separator = '';

        if ($tipo_relatorio == 'R') {
            
            $sqlDadosPerito = "
                SELECT lacf.id_funcionario,
                       MAX(lacf.dt_criacao) as dt_ultima_alteracao_endereco,
                       x.total_alteracoes_endereco
                  FROM log.log_alteracoes_cadastro_funcionarios lacf
                    JOIN (
                        SELECT aux.id_funcionario,  
                               count(aux.id) as total_alteracoes_endereco
                          FROM log.log_alteracoes_cadastro_funcionarios aux
                         WHERE jsonb_exists_any(aux.ds_alteracoes, ARRAY[ 'id_estado', 'id_municipio', 'ds_nome_estado', 'ds_endereco_cep', 'ds_endereco_nro', 'ds_endereco_rua', 'ds_nome_municipio', 'ds_endereco_bairro', 'ds_endereco_complemento'])
                         GROUP BY aux.id_funcionario
                    ) x ON x.id_funcionario = lacf.id_funcionario
                 WHERE jsonb_exists_any(lacf.ds_alteracoes, ARRAY['id_estado', 'id_municipio', 'ds_nome_estado', 'ds_endereco_cep', 'ds_endereco_nro', 'ds_endereco_rua', 'ds_nome_municipio', 'ds_endereco_bairro', 'ds_endereco_complemento'])
                 GROUP BY lacf.id_funcionario, x.total_alteracoes_endereco
            ";

            $rsDadosPerito = (new Relatorio_Model_Sinistro())->fetchAll($sqlDadosPerito);
            $arrayIndexado = array_column($rsDadosPerito, null, 'id_funcionario');
            
            foreach ($Rs as &$retorno) {
                $idsVistoria .= "{$separator} {$retorno['id_vistoria']}";
                $separator = ',';

                $retorno['id_perito'] = str_replace('{', '', $retorno['id_perito']);
                $retorno['id_perito'] = str_replace('}', '', $retorno['id_perito']);

                if (empty($retorno['id_perito'])) {
                    $retorno['dt_ultima_alteracao_endereco'] = '-';
                    $retorno['total_alteracoes_endereco'] = '-';
                    continue;
                }

                $dataUltimasAlteracoes = [];
                $totaisAlteracoes = [];
                
                $idsPeritos = explode(",", $retorno['id_perito']);

                foreach ($idsPeritos as $idPerito) {

                    if (array_key_exists($idPerito, $arrayIndexado)) {
                        $dataUltimasAlteracoes[] = $arrayIndexado[$idPerito]['dt_ultima_alteracao_endereco'];
                        $totaisAlteracoes[] = $arrayIndexado[$idPerito]['total_alteracoes_endereco'];
                    } else {
                        $dataUltimasAlteracoes[] = '-';
                        $totaisAlteracoes[] = '-';
                    }
                }

                $retorno['dt_ultima_alteracao_endereco'] = implode(', ', $dataUltimasAlteracoes);
                $retorno['total_alteracoes_endereco'] = implode(', ', $totaisAlteracoes);
            }

            $titles = array(
                'id_proposta_mae' => 'Proposta',
                'nome_empresa' => 'Empresa',
                'id_relatorio' => 'Id Relatório',
                'nr_nota_fiscal' => 'NF',
                'nome_segurado' => 'Nome Segurado ',
                'municipio_empresa' => 'Município da Propriedade',
                'uf_empresa' => 'UF',
                'data_vistoria' => 'Data Vistoria',
                'hora_vistoria' => 'Hora Vistoria',
                'vl_area_vistoriada' => 'Área Vistoriada',
                'qtde_quilometragem' => 'Km Rodado',
                'custo_hotel' => 'Hotel',
                'vl_alimentacao' => 'Alimentação',
                'nome_perito' => 'Vistoriador',
                'municipio_perito' => 'Município/UF do Vistoriador',
                'dt_ultima_alteracao_endereco' => 'Última Alteração de Endereço',
                'total_alteracoes_endereco' => 'Quant. Alterações de Endereço',
                'auxiliar' => 'Auxiliar',
                'nr_apolice' => 'Número Apólice',
                'sinistro_essor' => 'ID Aviso Essor',
                'fl_transmitido_tablet' => 'Método de Transmissão',
            );
            
            $format = array(
                'id_proposta_mae'    => array('align' => 'center'),
                'nome_empresa'      => array('align' => 'left'),
                'id_relatorio'       => array('align' => 'center'),
                'nome_segurado'      => array('align' => 'left'),
                'municipio_empresa'  => array('align' => 'left'),
                'uf_empresa'         => array('align' => 'left'),
                'data_vistoria'      => array('align' => 'center'),
                'hora_vistoria'      => array('align' => 'center'),
                'qtde_quilometragem' => array('align' => 'right'),
                'custo_hotel'        => array('align' => 'right'),
                'id_vistoria'        => array('align' => 'center'),
                'nome_perito'        => array('align' => 'left'),
                'municipio_perito'   => array('align' => 'left')
            );
        } else {
            foreach ($Rs as $key => $row) {
                $idsVistoria .= "{$separator} {$row['id_vistoria']}";
                $separator = ',';

                if (!empty($Rs[$key]['dt_fechamento'])) {
                    $dataArray = explode('-', substr($Rs[$key]['dt_fechamento'], 0, 10));  
                    $Rs[$key]['dt_fechamento'] = "{$dataArray[2]}/{$dataArray[1]}/{$dataArray[0]}";
                }
            }

            $titles = array(
                'id_proposta_mae' => 'Proposta',
                'ds_nome_abreviado' => 'Produto',
                'ds_nome_safra' => 'Safra', 
                'ds_nome_fantasia' => 'Empresa',
                'ds_nome_municipio_empresa' => 'Município da Empresa',
                'cpf_cnpj_empresa' => 'CPF/CNPJ',
                'ds_conta' => 'Conta',
                'nu_digito_conta' => 'Dígito Conta',
                'ds_agencia' => 'Agência',
                'nu_digito_agencia' => 'Dígito Agência',
                'nr_banco' => 'Número Banco',
                'tipo_conta' => 'Tipo Conta',
                'id_relatorio' => 'Id Relatório',
                'nr_nota_fiscal' => 'NF',
                'ds_status' => 'Status',
                'ds_nome_municipio' => 'Município',
                'ds_sigla' => 'UF',
                'area_total_proposta' => 'Área Total Proposta',
                'dt_vistoria' => 'Data Vistoria',
                'hr_vistoria' => 'Hora Vistoria',
                'vl_area_vistoriada' => 'Área Vistoriada',
                'itens' => 'Talhões',
                'vl_honorarios' => 'Honorários',
                'vl_quilometragem' => 'Km Rodado',
                'vl_custo_quilometragem' => 'Custo Quilometragem',
                'vl_pedagio' => 'Pedágio',
                'vl_hotel' => 'Hotel',
                'vl_alimentacao' => 'Alimentação',
                'vl_despesas' => 'Total Despesas',
                'id_vistoria' => 'Id Vistoria',
                'tp_vistoria' => 'Tipo Vistoria',
                'perito' => 'Vistoriador',
                'municipio_perito' => 'Município/UF do Vistoriador',
                'ds_razao_social' => 'Razão Social',
                'dt_fechamento' => 'Dt. Fechamento',
                'nr_apolice' => 'Número Apólice',
                'sinistro_essor' => 'ID Aviso Essor',
                'fl_transmitido_tablet' => 'Método de Transmissão',
            );
    
            $format = array(
                'id_proposta_mae' => array('align' => 'center'),
                'ds_nome_abreviado' => array('align' => 'left'),
                'ds_nome_safra' => array('align' => 'center'),
                'ds_nome_fantasia' => array('align' => 'left'),
                'id_relatorio' => array('align' => 'center'),
                'nr_nota_fiscal' => array('align' => 'center'),
                'ds_status' => array('align' => 'left'),
                'ds_nome_municipio' => array('align' => 'left'),
                'ds_sigla' => array('align' => 'left'),
                'itens' => array('align' => 'left'),
                'id_vistoria' => array('align' => 'center'),
                'tp_vistoria' => array('align' => 'left'),
                'perito' => array('align' => 'left'),
                'ds_razao_social' => array('align' => 'left'),
                'dt_fechamento' => array('align' => 'left')
            );
        }
        
        if (!empty($idsVistoria)) {
            $mapIdVistoriaToIdEssor = (new Sinistro2_Model_VistoriasAvisos())->getIdentificadorEssorByIdsVistoria($idsVistoria);

            foreach ($Rs as $key => $row) {
                $Rs[$key]['sinistro_essor'] = array_key_exists($row['id_vistoria'], $mapIdVistoriaToIdEssor)
                    ? $mapIdVistoriaToIdEssor[$row['id_vistoria']]
                    : '';
            }
        }

        switch ($params['tipo']) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($Rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_processos_pendentes_liquidacao.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($Rs);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }    
    
    public function sinistrosimportacaomapaAction() {
        
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();
        
        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->relatorioSinistroImportacaoEssor($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));
        
        $titles = array(
            'dt_base' => 'Data Base',
            'cd_identificador_seguradora' => 'Sinistro',
            'nr_apolice' => 'Apólice',
            'vl_area' => 'Area Sinistrada',
            'vl_perda_media' => 'Perda Media',
            'vl_po_media' => 'PO Media',
            'cpf_cnpj' => 'CNPJ Empresa Vistoriadora',
            'ds_nome_fantasia' => 'Nome Empresa Vistoriadora',
            'min_dt_vistoria' => 'Data Vistoria'
        );
        
        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($Rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_sinistros_importacao_essor.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($Rs);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function sinistrosimportacaomapasemindenizacaoAction() {
        
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();
        
        $Model = new Relatorio_Model_Sinistro();
        $Rs = $Model->relatorioSinistroImportacaoEssorSemIndenizacao($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));
        
        $titles = array(
            'dt_base' => 'Data Base',
            'cd_identificador_seguradora' => 'Sinistro',
            'nr_apolice' => 'Apólice',
            'vl_area' => 'Area Sinistrada',
            'vl_perda_media' => 'Perda Media',
            'vl_po_media' => 'PO Media',
            'cpf_cnpj' => 'CNPJ Empresa Vistoriadora',
            'ds_nome_fantasia' => 'Nome Empresa Vistoriadora',
            'min_dt_vistoria' => 'Data Vistoria'
        );
        
        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($Rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_sinistros_importacao_essor.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($Rs);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function treinamentoperitosAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $modelTreinamentos = new Sistema_Model_Treinamentos();
        $controllerTreinamento = new Sistema_TreinamentoController($this->getRequest(), $this->getResponse());
        $controllerTreinamento->isAjax();

        $select = $modelTreinamentos->getData($controllerTreinamento->getFilter());
        $rs = $modelTreinamentos->fetchAll($select);

        $titles = array(
            'ds_nomes_vistoriadores' => 'Perito',
            'ds_nomes_empresas' => 'Empresa',
            'ds_nomes_tipo_vistorias' => 'Tipo de Vistoria',
            'ds_nomes_grupamento_culturas' => 'Grupo de Culturas',
            'dt_treinamento' => 'Data do Treinamento',
            'ds_nomes_agronomos' => 'Agrônomos',
            'ds_assuntos_abordados' => 'Assunto(s) Abordado(s)',
            'ds_local_treinamento' => 'Local de Treinamentos',
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':

                foreach ($rs as $indice => $registro) {

                    $rs[$indice]['ds_assuntos_abordados'] = str_replace("<br>", ", ", $rs[$indice]['ds_assuntos_abordados']);
                    $rs[$indice]['ds_assuntos_abordados'] = str_replace(";", "", $rs[$indice]['ds_assuntos_abordados']);
                    $rs[$indice]['ds_assuntos_abordados'] = preg_replace('/\s/',' ', $rs[$indice]['ds_assuntos_abordados']);
                }

                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("treinamento_peritos.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($rs);
                $Html->setTitles($titles);
                $Html->getHtml();
                break;
        }
    }

    /**
     * ID 1989: RLSI - Relatório de Liquidações Sem Indenização
     * @return void
     */
    public function liquidacoessemindenizacaoAction()
    {
        ini_set('max_execution_time', 0);
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $rs = (new Relatorio_Model_Sinistro())->relatorioLiquidacoesSeguradora(
            $this->getRequest()->getParam('id_safra'),
            $this->getRequest()->getParam('id_produto_multiple'),
            false,
            Sinistro2_Model_Liquidacoes::ID_STATUS_SEM_INDENIZACAO
        );

        switch ($this->getRequest()->getParam('modelo_relatorio')) {
            case 'carta':
                require_once(APPLICATION_PATH . "/../library/Agro/xls/PhpSimpleXlsGen.php");

                $xls = new PhpSimpleXlsGen();
                $xls->totalcol = 16;
                $xls->filename = 'relatorio_liquidacoes_sem_indenizacao';

                $xls->InsertText(utf8_decode('Nr. Liquidação'));
                $xls->InsertText('Processo Agro');
                $xls->InsertText('Proposta');
                $xls->InsertText('Sinistro Essor');
                $xls->InsertText(utf8_decode('Apólice'));
                $xls->InsertText('Nros. Avisos');
                $xls->InsertText('Eventos');
                $xls->InsertText('Segurado');
                $xls->InsertText('CPF/CNPJ');
                $xls->InsertText('Corretor');
                $xls->InsertText(utf8_decode('Valor Estimado de Indenização'));
                $xls->InsertText('Cobertura');
                $xls->InsertText('Status');
                $xls->InsertText(utf8_decode('Motivo Sem Indenização'));
                $xls->InsertText(utf8_decode('Endereço do Corretor'));
                $xls->InsertText('Data');

                foreach ($rs as $registro) {
                    $xls->InsertText(utf8_decode($registro['id_liquidacao']));
                    $xls->InsertText(utf8_decode($registro['id_processo']));
                    $xls->InsertText(utf8_decode($registro['id_proposta']));
                    $xls->InsertText(utf8_decode($registro['cd_identificador_seguradora']));
                    $xls->InsertText(utf8_decode($registro['nr_apolice']));
                    $xls->InsertText(utf8_decode($registro['id_aviso']));
                    $xls->InsertText(utf8_decode($registro['ds_nome_evento']));
                    $xls->InsertText(utf8_decode($registro['ds_nome_proponente']));
                    $xls->InsertText(utf8_decode($registro['cpf_cnpj']));
                    $xls->InsertText(utf8_decode($registro['ds_nome_abreviado']));
                    $xls->InsertText(utf8_decode($registro['vl_indenizacao']));
                    $xls->InsertText(utf8_decode($registro['ds_nome_cobertura']));
                    $xls->InsertText(utf8_decode($registro['ds_status']));
                    $xls->InsertText(utf8_decode($registro['motivos_sem_indenizacao']));

                    $endereco = "{$registro['ds_endereco_rua']}";
                    $endereco .= ", {$registro['ds_endereco_nro']}";

                    if (!empty($registro['ds_endereco_complemento'])) {
                        $endereco .= ", {$registro['ds_endereco_complemento']}";
                    }

                    $endereco .= " - {$registro['ds_endereco_bairro']}";
                    $endereco .= ". CEP: {$registro['ds_endereco_cep']}";
                    $endereco .= ". {$registro['municipio_endereco_corretor']}";
                    $endereco .= " - {$registro['sigla_endereco_corretor']}";

                    $xls->InsertText(utf8_decode($endereco));

                    $dataLiquidacaoSemIndenizacao = '';
                    if ((int)$registro['id_status_liquidacao'] === Sinistro2_Model_Liquidacoes::ID_STATUS_SEM_INDENIZACAO) {
                        $dataLiquidacaoSemIndenizacao = Agro_Util::formatDate(
                            $registro['data_criacao_liquidacao_status'],
                            Zend_Date::DATES
                        );
                    }

                    $xls->InsertText(utf8_decode($dataLiquidacaoSemIndenizacao));
                }

                $xls->SendFile();

                break;

            case 'completo':
            default:
                $serviceMontaRelatorioLiquidacao = new Relatorio_Service_Montarelatorioliquidacao();
                
                $rs = $serviceMontaRelatorioLiquidacao->executa($rs);
                $serviceMontaRelatorioLiquidacao->gerarRelatorio(
                    $rs,
                    $this->titlesLiquidacao,
                    $this->getRequest()->getParam('tipo')
                );
                break;
        }
    }

    public function acompanhamentovistoriassinistroAction()
    {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $parametros = $this->getRequest()->getParams();

        $rowRegistros = (new Relatorio_Model_Sinistro())->relatorioAcompanhamentoVistoriasSinistro(
          $parametros['id_safra'],
          !empty($parametros['id_produto']) ? $parametros['id_produto'] : [],
          !empty($parametros['id_tipo']) ? $parametros['id_tipo'] : []
        );

        $titles = array(
          'id_proposta' => 'Proposta',
          'produto' => 'Produto',
          'cultura' => 'Cultura',
          'uf' => 'UF',
          'id_endosso' => 'Endosso',
          'id_processo' => 'Processo',
          'id_vistoria' => 'Vistoria',
          'tipo_vistoria' => 'Tipo de Vistoria',
          'status_agendamento' => 'Status do Agendamento',
          'status_vistoria' => 'Status da Vistoria',
          'avisos' => 'Avisos'
        );

        $format = array(
          'id_proposta_mae' => array('align' => 'center'),
          'produto' => array('align' => 'left'),
          'cultura' => array('align' => 'left'),
          'uf' => array('align' => 'center'),
          'id_endosso' => array('align' => 'center'),
          'id_processo' => array('align' => 'center'),
          'id_vistoria' => array('align' => 'center'),
          'tipo_vistoria' => array('align' => 'left'),
          'status_agendamento' => array('align' => 'left'),
          'status_vistoria' => array('align' => 'left'),
          'avisos' => array('align' => 'left')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($rowRegistros);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_processos_pendentes_liquidacao.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($rowRegistros);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function conferenciadocumentosAction()
    {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $model = new Relatorio_Model_Sinistro();
        $rs = $model->conferenciaDocumentos($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

        $titles = array(
            'id_processo' => 'Processo',
            'id_proposta' => 'Proposta',
            'tipo' => 'Tipo Arquivo',
            'dt_envio' => 'Data Envio',
            'ds_nome_fantasia' => 'Empresa',
            'ds_status' => 'Status'
        );

        $format = array(
            'id_processo' => array('align' => 'center'),
            'id_proposta' => array('align' => 'center'),
            'tipo' => array('align' => 'left'),
            'dt_envio' => array('align' => 'center'),
            'ds_nome_fantasia' => array('align' => 'left'),
            'ds_status' => array('align' => 'left')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($rs);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_conferencia_documentos.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($rs);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }
    public function vistoriaspreviascustosperitoAction()
    {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $filtros = $this->getRequest()->getParams();
        $filtros['fl_nova_vistoria_custo_perito'] = true;

        $rowRegistros = (new Relatorio_Model_Sinistro())->vistoriasPrevias($filtros);

        $titles = array(
            'id_proposta' => 'Proposta',
            'data_vistoria' => 'Data da Vistoria',
            'id_vistoria' => 'Número da Vistoria',
            'nome_perito' => 'Nome do Perito',
            'nome_empresa' => 'Empresa de Vistoria'
        );

        $format = array(
            'id_proposta' => array('align' => 'center'),
            'data_vistoria' => array('align' => 'center'),
            'id_vistoria' => array('align' => 'center'),
            'nome_perito' => array('align' => 'left'),
            'nome_empresa' => array('align' => 'left')
        );

        switch ($filtros['tipo']) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($rowRegistros);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_vistoria_previa_custos_perito.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($rowRegistros);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function cadastrosperitosAction()
    {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $parametros = $this->getRequest()->getParams();

        if (empty($parametros['origemCurl']) && (empty($parametros['dt_inicio']) || empty($parametros['dt_fim']))) {
            $this->getResponse()->setBody(<<<HTML
			<script type="text/javascript">
				alert('É necessário informar o período.');
                window.close();
			</script>
HTML);
            return false;
        }

        $modelSinistros = new Relatorio_Model_Sinistro();

        $rowRegistros = $modelSinistros->getVistoriaresNaoConferidosByData(
            $parametros['dt_inicio'] ?? '',
            $parametros['dt_fim'] ?? ''
        );

        $funcionarios = [];
        $rowFuncionarios = $modelSinistros->getVistoriadorComMultiplosRegistrosStatus();

        foreach ($rowFuncionarios as $rowFuncionario) {
            $funcionarios[] = $rowFuncionario['id_funcionario'];
        }

        foreach ($rowRegistros as $indice => $rowRegistro) {
            $nomeBeneficiario = explode(" ", trim($rowRegistro['ds_nome_funcionario']));
            $rowRegistros[$indice]['ds_nome_funcionario'] = $nomeBeneficiario[0] . str_repeat('.', 20);

            if (!empty($rowRegistro['cpf_cnpj'])) {
                $rowRegistros[$indice]['cpf_cnpj'] = str_repeat('.', 14) . '-' . substr($rowRegistro['cpf_cnpj'], -2);
            }

            if (!empty($rowRegistro['dt_nascimento'])) {
                $rowRegistros[$indice]['dt_nascimento'] = '../../' . substr($rowRegistro['dt_nascimento'], -4);
            }

            $rowRegistros[$indice]['tipo_cadastro'] = in_array($rowRegistro['id'], $funcionarios) ? 'Alteração' : 'Novo';
        }

        $titles = array(
            'ds_nome_funcionario' => 'Nome',
            'cpf_cnpj' => 'CPF',
            'dt_nascimento' => 'Data de Nascimento',
            'nome_empresa' => 'Empresa',
            'ds_nome_departamento' => 'Departamento',
            'ds_tipo_carteira_profisional' => 'Tipo de Carteira Profissional',
            'ds_crea' => 'CREA/CFTA',
            'ds_nome_role' => 'Tipo de Perfil',
            'tipo_cadastro' => 'Tipo de Cadastro',
        );

        $format = array(
            'ds_nome_funcionario' => array('align' => 'left'),
            'cpf_cnpj' => array('align' => 'center'),
            'dt_nascimento' => array('align' => 'center'),
            'nome_empresa' => array('align' => 'left'),
            'ds_nome_departamento' => array('align' => 'left'),
            'ds_tipo_carteira_profisional' => array('align' => 'left'),
            'ds_crea' => array('align' => 'center'),
            'ds_nome_role' => array('align' => 'left'),
            'tipo_cadastro' => array('align' => 'left'),
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($rowRegistros);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_cadastro_peritos.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");

                if ($this->getRequest()->getParam('origemCron')) {
                    $fileName = $Csv->getFileName();
                    $Csv->getCsv(false);

                    return $fileName;
                } else {
                    $Csv->getCsv();
                }

                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($rowRegistros);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }

        return true;
    }

    public function relatoriodiariocadastrosperitosAction()
    {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $this->getRequest()->setParam('origemCron', true);

        $this->getRequest()->setActionName('cadastrosperitos');
        $arquivo = $this->cadastrosperitosAction();

        $this->getRequest()->setActionName('relatoriodiariocadastrosperitos');

        $agroMail = new Agro_Mail();
        $agroMail->addTo("cobranca.vistorias@agrobrasilseguros.com.br");
        $agroMail->setSubject("Relatórios Diário de Cadastro de Peritos");
        $agroMail->setBody($this->view->render('sinistro/emailrelatoriodiariocadastrosperitos.phtml'));

        $caminhoArquivo = APPLICATION_PATH . "/upload_files/relatorio/{$arquivo}";
        $conteudoArquivo = file_get_contents($caminhoArquivo);

        $anexo = new Zend_Mime_Part($conteudoArquivo);
        $anexo->type = mime_content_type($caminhoArquivo);
        $anexo->disposition = Zend_Mime::DISPOSITION_ATTACHMENT;
        $anexo->encoding = Zend_Mime::ENCODING_BASE64;
        $anexo->filename = basename($caminhoArquivo);

        $agroMail->addAttachment($anexo);
        $agroMail->send();
    }

    public function cadastrosmapaAction()
    {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $parametros = $this->getRequest()->getParams();

        if (empty($parametros['dt_inicio']) || empty($parametros['dt_fim'])) {
            $this->getResponse()->setBody(<<<HTML
			<script type="text/javascript">
				alert('É necessário informar o período.');
                window.close();
			</script>
HTML);
            return false;
        }

        $modelSinistros = new Relatorio_Model_Sinistro();
        $planilha = new SimpleXLSXGen();

        $planilhaEmpresas = [
            [
                'nome',
                '<center>cnpj</center>',
                '<center>cp</center>',
                '<center>ncp-uf</center>',
                '<center>cod.munic</center>',
                '<center>fone</center>',
                '<center>email</center>',
                '<center>responsavel</center>',
                '<center>cpf</center>',
                '<center>cpr</center>',
                '<center>ncp-ufr</center>',
                '<center>status</center>',
            ]
        ];

        $planilhaPeritos = [
            [
                'nome',
                '<center>cpf</center>',
                '<center>cp</center>',
                '<center>ncp-uf</center>',
                '<center>formação</center>',
                '<center>cod.municipio</center>',
                '<center>fone</center>',
                '<center>email</center>',
                '<center>data nascimento</center>',
                '<center>sexo</center>',
                '<center>status</center>',
                '<center>CNPJ EMPRESA</center>',
            ]
        ];

        $registrosEmpresas = $modelSinistros->getInformacoesEmpresas($parametros['dt_inicio'], $parametros['dt_fim']);
        $registrosFuncionarios = $modelSinistros->getInformacoesFuncionarios($parametros['dt_inicio'], $parametros['dt_fim']);

        foreach ($registrosEmpresas as $empresa) {
            $posicao = 0;
            $empresasStyle = array_map(function($registro) use (&$posicao) {
                $dado = $posicao === 0 ? '<style color="#FF1010">' . $registro . '</style>' : '<center><style color="#FF1010">' . $registro . '</style></center>';
                $posicao++;

                return $dado;
            }, $empresa);

            $planilhaEmpresas[] = $empresasStyle;
        }

        $planilhaEmpresas[] = [''];
        $planilhaEmpresas[] = [''];
        $planilhaEmpresas[] = ['Status:'];
        $planilhaEmpresas[] = ['1: Ativo'];
        $planilhaEmpresas[] = ['2: Inativo'];

        foreach ($registrosFuncionarios as $funcionario) {
            unset($funcionario['id_funcionario']);

            $posicao = 0;
            $funcionariosStyle = array_map(function($registro) use (&$posicao) {
                $dado = $posicao === 0 ? '<style color="#FF1010">' . $registro . '</style>' : '<center><style color="#FF1010">' . $registro . '</style></center>';
                $posicao++;

                return $dado;
            }, $funcionario);

            $planilhaPeritos[] = $funcionariosStyle;
        }

        $planilhaPeritos[] = [''];
        $planilhaPeritos[] = [''];
        $planilhaPeritos[] = ['Formação:'];
        $planilhaPeritos[] = ['1: Agrônomo(a) / CREA'];
        $planilhaPeritos[] = ['2: Tecnico(a) Agrícola / CFTA'];
        $planilhaPeritos[] = [''];
        $planilhaPeritos[] = ['Status:'];
        $planilhaPeritos[] = ['1: Ativo'];
        $planilhaPeritos[] = ['2: Inativo'];

        $planilha->addSheet($planilhaEmpresas, 'Empresas');
        $planilha->addSheet($planilhaPeritos, 'Peritos');

        $arquivo = APPLICATION_PATH . '/upload_files/temp/cadastroMapa.xlsx';

        if (file_exists($arquivo)) {
            unlink($arquivo);
        }

        $planilha->saveAs($arquivo);

        $data = file_get_contents($arquivo);

        if (empty($parametros['enviarEmail'])) {
            $this->getResponse()->setHeader('Content-Type', 'application/octetstream', true);
            $this->getResponse()->setHeader('Content-Disposition', 'attachment; filename="cadastroMapa.xlsx"', true);
            $this->getResponse()->setHeader('Content-Length', filesize($arquivo), true);
            $this->getResponse()->setHeader('Pragma', 'no-cache', true);
            $this->getResponse()->setBody($data);
            $this->getResponse()->sendResponse();
        } else {
            $agroMail = new Agro_Mail();

            $assinatura = Agro_Mail::getAssinatura($agroMail, 2);
            $body = "Prezado(a),<br><br>Segue anexo a planilha com as últimas inclusões e exclusões de cadastros de vistoriadores e empresas no AgroNet.";
            $body .= "<br><br><br>ATENÇÃO: esta é uma mensagem automática. Por favor, não responda. Se deseja entrar em contato conosco, escreva para atendimento@agrobrasilseguros.com.br";

            $body .= "<br><br><br><img src=\"cid:{$assinatura->id}\" height=\"102\" width=\"480\" />";
            $body .= Agro_Mail::textoPadraoEmailHtml();

            $agroMail->inicioTextoPadrao(false);
            $agroMail->clearFrom();
            $agroMail->setFrom('ti@agrobrasilseguros.com.br', 'AgroBrasil - Agronet 2.0');
            $agroMail->addTo("cnec@mda.gov.br");
            $agroMail->addCc("cobranca.vistorias@agrobrasilseguros.com.br");
            $agroMail->setSubject("Inclusões e/ou exclusões – MAPA");
            $agroMail->setBody($body, 'html');

            $anexo = new Zend_Mime_Part($data);
            $anexo->type = mime_content_type($arquivo);
            $anexo->disposition = Zend_Mime::DISPOSITION_ATTACHMENT;
            $anexo->encoding = Zend_Mime::ENCODING_BASE64;
            $anexo->filename = basename($arquivo);

            $agroMail->addAttachment($anexo);
            $agroMail->send();
        }
    }

    public function digitacaoamostraAction()
    {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $params = $this->getRequest()->getParams();
        $rs = (new Relatorio_Model_Sinistro())->digitacaoAmostrasPG($params);

        $vistorias = [];
        foreach ($rs as $dados) {

            $idVistoria = $dados['id_vistoria'];
            $idCobertura = $dados['id_cobertura'];
            $idItemSegurado = $dados['id_item_segurado'];
            $chave = "{$idVistoria}_{$idCobertura}_{$idItemSegurado}";

            if (!array_key_exists($chave, $vistorias)){
                $vistorias[$chave] = $dados;
            }

             $vistorias[$chave]['ds_observacao'] = str_replace("<br>", ", ",  $vistorias[$chave]['ds_observacao']);
             $vistorias[$chave]['ds_observacao'] = str_replace(";", "",  $vistorias[$chave]['ds_observacao']);
             $vistorias[$chave]['ds_observacao'] = preg_replace('/\s/', ' ',  $vistorias[$chave]['ds_observacao']);

            if ($dados['fl_amostragem_maquina']) {
                continue;
            }

            $nrAmostra = $dados['nr_amostra'];
            $vistorias[$chave]["vl_espacamento_entre_linhas_{$nrAmostra}"] = $dados["vl_espacamento_entre_linhas"];
            $vistorias[$chave]["vl_metros_linhas_colhidos_{$nrAmostra}"] = $dados["vl_metros_linhas_colhidos"];
            $vistorias[$chave]["vl_producao_colhida_amostra_{$nrAmostra}"] = $dados["vl_producao_colhida_amostra"];
            $vistorias[$chave]["vl_perda_colheita_amostra_{$nrAmostra}"] = $dados["vl_perda_colheita"];
            $vistorias[$chave]["vl_umidade_graos_amostra_{$nrAmostra}"] = $dados["vl_umidade_graos"];
            $vistorias[$chave]["vl_desconto_umidade_graos_amostra_{$nrAmostra}"] = $dados["vl_desconto_umidade_graos"];
            $vistorias[$chave]["vl_producao_liquida_amostra_{$nrAmostra}"] = $dados["vl_producao_liquida"];
            
            //Limpa os dados para não mostrar no espaço da amostragem mecanizada
            $vistorias[$chave]["vl_espacamento_entre_linhas"] = '';
            $vistorias[$chave]["vl_metros_linhas_colhidos"] = '';
            $vistorias[$chave]["vl_producao_colhida_amostra"] = '';
            $vistorias[$chave]["vl_perda_colheita"] = '';
            $vistorias[$chave]["vl_umidade_graos"] = '';
            $vistorias[$chave]["vl_desconto_umidade_graos"] = '';
            $vistorias[$chave]["vl_producao_liquida"] = '';
        }

        $titles = array(
            'id_proposta_mae' => 'Proposta',
            'ds_nome_cobertura' => 'Cobertura',
            'id_vistoria' => 'Vistoria',
            'ds_status' => 'Status',
            'ds_nome_fantasia' => 'Empresa',
            'dt_agendamento' => 'Agendamento',
            'dt_vistoria' => 'Realização',
            'avisos' => 'Avisos',
            'vl_rendimento_final_lavoura' => 'Rendimento Final da Lavoura: <br>(Base de Cáculo para possível indenização - Ton/ha)',
            'fl_amostragem_maquina' => 'Tipo de amostragem',
            'vl_largura_plataforma' => 'Largura da Plataforma (m)',
            'vl_distancia_percorrida' => 'Distância Percorrida (m)',
            'vl_area_colhida' => 'Área colhida (ha)',
            'vl_producao_colhida_amostra' => 'Produção colhida na amostra (Kg)',
            'vl_perda_colheita' => 'Perda de colheita (%)',
            'vl_umidade_graos' => 'Umidade dos Grãos (%)',
            'vl_desconto_umidade_graos' => 'Desconto de Umidade (%)',
            'vl_impurezas' => 'Impurezas (%)',
            'vl_graos_podres' => 'Grãos podres (%)',
            'vl_graos_brotados' => 'Grãos brotados (%)',
            'vl_pragas_doencas_outros' => 'Pragas, doenças e outros danos (%)',
            'ds_observacao' => 'Observações',
            'fl_transmitido_tablet' => 'Método de Transmissão',
        );

        $format = array(
            'id_proposta' => array('align' => 'center'),
            'data_vistoria' => array('align' => 'center'),
            'id_vistoria' => array('align' => 'center'),
            'nome_perito' => array('align' => 'left'),
            'nome_empresa' => array('align' => 'left'),
            'dt_agendamento' => array('align' => 'center'),
            'fl_amostragem_maquina' => array('align' => 'center'),
            'vl_rendimento_final_lavoura' => array('align' => 'center', 'width' => '10px'),
            'fl_amostragem_maquina' => array('align' => 'center'),
            'vl_largura_plataforma' => array('align' => 'center'),
            'vl_distancia_percorrida' => array('align' => 'center'),
            'vl_area_colhida' => array('align' => 'center'),
            'vl_producao_colhida_amostra' => array('align' => 'center'),
            'vl_perda_colheita' => array('align' => 'center'),
            'vl_umidade_graos' => array('align' => 'center'),
            'vl_desconto_umidade_graos' => array('align' => 'center'),
            'vl_impurezas' => array('align' => 'center'),
            'vl_graos_podres' => array('align' => 'center'),
            'vl_graos_brotados' => array('align' => 'center'),
            'vl_pragas_doencas_outros' => array('align' => 'center'),
        );

        for ($i=1; $i <=10 ; $i++) {
            $titles["vl_espacamento_entre_linhas_{$i}"] = "Espaçamento entre linhas (metros) <br>(AMOSTRA {$i})";
            $titles["vl_metros_linhas_colhidos_{$i}"] = "Metros de linha colhidos (metros) <br>(AMOSTRA {$i})";
            $titles["vl_producao_colhida_amostra_{$i}"] = "Produção colhida na amostra (Kg) <br>(AMOSTRA {$i})";
            $titles["vl_perda_colheita_amostra_{$i}"] = "Perdas de colheita <br>(AMOSTRA {$i})";
            $titles["vl_umidade_graos_amostra_{$i}"] = "Umidade dos grãos (%) <br>(AMOSTRA {$i})";
            $titles["vl_desconto_umidade_graos_amostra_{$i}"] = "Desconto de Umidade (%) <br>(AMOSTRA {$i})";
            $titles["vl_producao_liquida_amostra_{$i}"] = "Produção líquida em Kg / Hectare <br>(AMOSTRA {$i})";

            $format["vl_espacamento_entre_linhas_{$i}"] = array('align' => 'center',);
            $format["vl_metros_linhas_colhidos_{$i}"] = array('align' => 'center');
            $format["vl_producao_colhida_amostra_{$i}"] = array('align' => 'center');
            $format["vl_perda_colheita_amostra_{$i}"] = array('align' => 'center');
            $format["vl_umidade_graos_amostra_{$i}"] = array('align' => 'center');
            $format["vl_desconto_umidade_graos_amostra_{$i}"] = array('align' => 'center');
            $format["vl_producao_liquida_amostra_{$i}"] = array('align' => 'center');
        }

        switch ($params['tipo']) {
            case 'excel':
                foreach($titles as $key => $value){
                    $titles[$key] = str_replace("<br>", '', $value);
            	}

                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($vistorias);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_digitacao_amostra_pg.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;
            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($vistorias);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    public function identificacaocreditoAction()
    {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();
        
        $params = $this->getRequest()->getParams();
        
        try {
            if (empty($params['id_safra']) || !filter_var($params['id_safra'], FILTER_VALIDATE_INT)) {
                throw new Exception('ID safra não informado.', 1);
            }

            if (is_array($params['id_status'])) {
                foreach ($params['id_status'] as $idStatus) {
                    if (!filter_var($idStatus, FILTER_VALIDATE_INT)) {
                        throw new Exception('ID status deve ser um inteiro.', 1);
                    }
                }
            } else {
                if (!filter_var($params['id_status'], FILTER_VALIDATE_INT)) {
                    throw new Exception('ID status deve ser um inteiro.', 1);
                }
            }
            
            $arrayIdsStatus = !is_array($params['id_status']) ? [$params['id_status']] : $params['id_status'];

            if (!empty($params['cnpj']) && empty($params['id_beneficiario_selecionado'])) {
                if (strlen(preg_replace('/[^0-9]/', '', $params['cnpj'])) != 14) {
                    return false;
                }

                $beneficiario = (new Seguro_Model_Beneficiarios())->getBeneficiario($params['cnpj']);

                if (empty($beneficiario)) {
                    throw new Exception('Beneficiário não encontrado.', 1);
                }

                $params['id_beneficiario_selecionado'][] = $beneficiario['id'];
            }

            if (!empty($params['dataInicio'])) {
                $dataInicio = DateTime::createFromFormat('d/m/Y', $params['dataInicio']);

                if (!$dataInicio) {
                    throw new Exception('Erro ao informar data de pagamento.', 1);
                }
            }
            
            if (!empty($params['dataFim'])) {
                $dataFim = DateTime::createFromFormat('d/m/Y', $params['dataFim']);

                 if (!$dataFim) {
                    throw new Exception('Erro ao informar data de pagamento.', 1);
                }
            }

            $rs = (new Relatorio_Model_Sinistro())->relatorioIdentificacaoCredito(
                $params['documento'] ?? [],
                (int) $params['id_safra'],
                $arrayIdsStatus,
                $dataInicio ?? null,
                $dataFim ?? null
            );
           
            if (empty($rs)) {
                throw new Exception('Nenhum registro encontrado.', 1);
            }
            
            foreach ($rs as $key => $row) {
                if (strlen($row['cpf_cnpj_proponente']) == 14) {
                    $rs[$key]['cpf_cnpj_proponente'] = Agro_Util::esconderCpf($row['cpf_cnpj_proponente']);
                }

                if (strlen($row['cpf_cnpj_beneficiario']) == 14) {
                    $rs[$key]['cpf_cnpj_beneficiario'] = Agro_Util::esconderCpf($row['cpf_cnpj_beneficiario']);
                }

                if (!empty($row['percentual_participacao_beneficiario'])) {
                    $valorIndenizacao = $row['vl_indenizacao'] * ($row['percentual_participacao_beneficiario'] / 100);
                } else {
                    $valorIndenizacao = $row['vl_indenizacao'];
                }

                $rs[$key]['vl_indenizacao'] = number_format($valorIndenizacao, 2, ',', '.');
            }
            
            $titles = [
                'id_liquidacao' => 'Número da liquidação',
                'id_proposta_mae' => 'Proposta',
                'nr_apolice' => 'Apólice',
                'ds_nome_produto' => 'Nome do produto',
                'ds_nome_proponente' => 'Nome do segurado',
                'cpf_cnpj_proponente' => 'CPF/CNPJ segurado',
                'ds_nome_corretor' => 'Corretor',
                'ds_nome_beneficiario' => 'Nome beneficiário',
                'cpf_cnpj_beneficiario' => 'CPF/CNPJ beneficiário',
                'ds_status' => 'Status',
                'vl_indenizacao' => 'Valor da indenização',
                'dt_agendamento_pagamento' => 'Data de agendamento',
                'dt_pagamento' => 'Data do pagamento'
            ];

            $usuario = Zend_Auth::getInstance()->getIdentity();
            
            if ($usuario->tp_usuario == 'C') {
                unset($titles['ds_nome_corretor']);
            }

            $format = [];

            switch ($params['tipo']) {
                case 'excel':
                    $csv = new Agro_Plugin_Rs2Csv();
                    $csv->setRecordSet($rs);
                    $csv->setType("application/octet-stream");
                    $csv->setFileName("relatorio_identificacao_credito.csv");
                    $csv->setDisposition("attachment");
                    $csv->setTitles($titles);
                    $csv->setSeparator(";");
                    $csv->getCsv();
                    break;
                case 'html':
                    $Html = new Agro_Plugin_Rs2Html();
                    $Html->setRecordSet($rs);
                    $Html->setTitles($titles);
                    $Html->setFormat($format);
                    $Html->getHtml();
                    break;
            }
        } catch (Exception $e) {
            $mensagem = $e->getCode() == 1
                ? $e->getMessage()
                : 'Erro ao gerar relatório.';
            
            echo '<script>alert("' . addslashes($mensagem) . '");</script>';
        }
        
    }
}
