예제 #1
0
 public function imprimirRelatorioPropostaAction()
 {
     $this->intTamPag = 30;
     //DEFINE PARAMETROS DE ORDENACAO / QTDE. REG POR PAG. / PAGINACAO
     if ($this->_request->getParam("qtde")) {
         $this->intTamPag = $this->_request->getParam("qtde");
     }
     $order = array();
     //==== parametro de ordenacao  ======//
     if ($this->_request->getParam("ordem")) {
         $ordem = $this->_request->getParam("ordem");
         if ($ordem == "ASC") {
             $novaOrdem = "DESC";
         } else {
             $novaOrdem = "ASC";
         }
     } else {
         $ordem = "ASC";
         $novaOrdem = "ASC";
     }
     //==== campo de ordenacao  ======//
     if ($this->_request->getParam("campo")) {
         $campo = $this->_request->getParam("campo");
         if ($campo == 4) {
             $order = array("4 ASC", "6 ASC", "8 ASC", "9 ASC");
         } else {
             $order = array($campo . " " . $ordem);
         }
         $ordenacao = "&campo=" . $campo . "&ordem=" . $ordem;
     } else {
         $campo = null;
         $order = array(1);
         //idPreProjeto
         $ordenacao = null;
     }
     $pag = 1;
     $get = Zend_Registry::get('post');
     if (isset($get->pag)) {
         $pag = $get->pag;
     }
     $inicio = $pag > 1 ? ($pag - 1) * $this->intTamPag : 0;
     $where = array();
     $having = array();
     if (isset($get->proposta) && !empty($get->proposta)) {
         $where['p.idPreProjeto = ?'] = $get->proposta;
         $this->view->proposta = $get->proposta;
     }
     if (isset($get->nomeProposta) && !empty($get->nomeProposta)) {
         $where['p.nomeProjeto like (?)'] = "%" . $get->nomeProposta . "%";
         $this->view->nomeProposta = $get->nomeProposta;
     }
     if (isset($get->nomeProponente) && !empty($get->nomeProponente)) {
         $where['nm.Descricao like (?)'] = "%" . $get->nomeProponente . "%";
         $this->view->nomeProponente = $get->nomeProponente;
     }
     if (isset($get->cpfcnpj) && !empty($get->cpfcnpj)) {
         $where['ag.CNPJCPF = ?'] = Mascara::delMaskCPFCNPJ($get->cpfcnpj);
         $this->view->cpfcnpj = $get->cpfcnpj;
     }
     if (isset($get->area) && !empty($get->area)) {
         $where['pdp.Area = ?'] = $get->area;
         $this->view->area = $get->area;
     }
     if (isset($get->segmento) && !empty($get->segmento)) {
         $where['pdp.Segmento = ?'] = $get->segmento;
         $this->view->segmento = $get->segmento;
     }
     if (isset($get->uf) && !empty($get->uf)) {
         $where['ab.idUF = ?'] = $get->uf;
         $this->view->uf = $get->uf;
     }
     if (isset($get->municipio) && !empty($get->municipio)) {
         $where['ab.idMunicipioIBGE = ?'] = $get->municipio;
         $this->view->municipio = $get->municipio;
     }
     if ($get->valor != "" && $get->valor2 != "") {
         $having["SUM(Quantidade*Ocorrencia*ValorUnitario) >= ?"] = str_replace(",", ".", str_replace(".", "", $get->valor));
         $having["SUM(Quantidade*Ocorrencia*ValorUnitario) <= ?"] = str_replace(",", ".", str_replace(".", "", $get->valor2));
         $this->view->valor = $get->valor;
         $this->view->valor2 = $get->valor2;
     } elseif ($get->valor != "") {
         $having["SUM(Quantidade*Ocorrencia*ValorUnitario) = ?"] = str_replace(",", ".", str_replace(".", "", $get->valor));
         $this->view->valor = $get->valor;
     } elseif ($get->valor2 != "") {
         $having["SUM(Quantidade*Ocorrencia*ValorUnitario) = ?"] = str_replace(",", ".", str_replace(".", "", $get->valor2));
         $this->view->valor2 = $get->valor2;
     }
     if (isset($get->estado) && !empty($get->estado)) {
         switch ($get->estado) {
             case 'construcao':
                 $where['p.stEstado = ?'] = 1;
                 $where['m.Movimentacao = ?'] = 95;
                 $where['m.stEstado = ?'] = 0;
                 $where['x.ConformidadeOK IS NULL'] = '';
                 $where['x.stEstado IS NULL'] = '';
                 break;
             case 'diligenciada':
                 $where['p.stEstado = ?'] = 1;
                 $where['m.Movimentacao = ?'] = 95;
                 $where['m.stEstado = ?'] = 0;
                 $where['x.ConformidadeOK = ?'] = 0;
                 $where['x.stEstado = ?'] = 0;
                 $having["(SELECT TOP 1 idTecnico FROM (\n                                SELECT idTecnico, convert(varchar(30),DtAvaliacao, 120 ) as DtAvaliacao\n                                FROM SAC.dbo.tbAvaliacaoProposta tba\n                                INNER JOIN tabelas.dbo.Usuarios u on (tba.idTecnico = u.usu_codigo)\n                                WHERE ConformidadeOK < 9 AND tba.idProjeto = p.idPreProjeto\n                                UNION ALL\n                                SELECT 0,convert(varchar(30),DtMovimentacao, 120 ) as DtMovimentacao\n                                FROM SAC.dbo.tbMovimentacao\n                                WHERE Movimentacao=96 AND idProjeto = p.idPreProjeto\n                            ) as slctPrincipal\n                            ORDER BY convert(varchar(30),DtAvaliacao, 120 ) DESC) != ?"] = 0;
                 break;
             case 'respondida':
                 $where['p.stEstado = ?'] = 1;
                 $where['m.Movimentacao = ?'] = 96;
                 $where['m.stEstado = ?'] = 0;
                 $where['x.ConformidadeOK = ?'] = 0;
                 $where['x.stEstado = ?'] = 0;
                 $having["(SELECT TOP 1 idTecnico FROM (\n                                SELECT idTecnico, convert(varchar(30),DtAvaliacao, 120 ) as DtAvaliacao\n                                FROM SAC.dbo.tbAvaliacaoProposta tba\n                                INNER JOIN tabelas.dbo.Usuarios u on (tba.idTecnico = u.usu_codigo)\n                                WHERE ConformidadeOK < 9 AND tba.idProjeto = p.idPreProjeto\n                                UNION ALL\n                                SELECT 0,convert(varchar(30),DtMovimentacao, 120 ) as DtMovimentacao\n                                FROM SAC.dbo.tbMovimentacao\n                                WHERE Movimentacao=96 AND idProjeto = p.idPreProjeto\n                            ) as slctPrincipal\n                            ORDER BY convert(varchar(30),DtAvaliacao, 120 ) DESC) = ?"] = 0;
                 break;
             case 'enviada':
                 $where['p.stEstado = ?'] = 1;
                 $where['m.Movimentacao == ?'] = 96;
                 $where['m.stEstado = ?'] = 0;
                 $where['x.ConformidadeOK = ?'] = 9;
                 $where['x.stEstado = ?'] = 0;
                 break;
             case 'arquivada':
                 $where['p.stEstado = ?'] = 0;
                 //$where['p.DtArquivamento is not null'] = '';
                 break;
         }
         $this->view->estado = $get->estado;
     }
     $Proposta = new Proposta();
     $total = $Proposta->relatorioPropostas($where, $having, $order, null, null, true);
     $fim = $inicio + $this->intTamPag;
     $totalPag = (int) ($total % $this->intTamPag == 0 ? $total / $this->intTamPag : $total / $this->intTamPag + 1);
     $tamanho = $fim > $total ? $total - $inicio : $this->intTamPag;
     $busca = $Proposta->relatorioPropostas($where, $having, $order, $tamanho, $inicio);
     if (isset($get->xls) && $get->xls) {
         $html = '';
         $html .= '<table style="border: 1px">';
         $html .= '<tr><td style="border: 1px dotted black; background-color: #EAF1DD; font-size: 16; font-weight: bold;" colspan="7">Relatório de Propostas - Resultado da pesquisa</td></tr>';
         $html .= '<tr><td style="border: 1px dotted black; background-color: #EAF1DD; font-size: 10" colspan="7">Data do Arquivo: ' . Data::mostraData() . '</td></tr>';
         $html .= '<tr><td colspan="7"></td></tr>';
         $html .= '<tr>';
         $html .= '<th style="border: 1px dotted black; background-color: #9BBB59;">&nbsp;</th>';
         $html .= '<th style="border: 1px dotted black; background-color: #9BBB59;">N&ordm; Proposta</th>';
         $html .= '<th style="border: 1px dotted black; background-color: #9BBB59;">Nome da Proposta</th>';
         $html .= '<th style="border: 1px dotted black; background-color: #9BBB59;">CPF / CNPJ</th>';
         $html .= '<th style="border: 1px dotted black; background-color: #9BBB59;">Proponente</th>';
         $html .= '<th style="border: 1px dotted black; background-color: #9BBB59;">Valor</th>';
         $html .= '<th style="border: 1px dotted black; background-color: #9BBB59;">Estado</th>';
         $html .= '</tr>';
         $i = 1;
         foreach ($busca as $v) {
             $cpfcnpj = strlen($v->CNPJCPF) == 11 ? Mascara::addMaskCPF($v->CNPJCPF) : Mascara::addMaskCNPJ($v->CNPJCPF);
             if ($v->stEstado == 0) {
                 $estado = 'Proposta arquivada';
             } else {
                 if ($v->stEstado == '1' && $v->Movimentacao == '95' && $v->estadoMovimentacao == '0' && $v->ConformidadeOK == '0' && $v->estadoAvaliacao == '0') {
                     $estado = 'Proposta diligenciada';
                 } else {
                     if ($v->stEstado == '1' && $v->Movimentacao == '96' && $v->estadoMovimentacao == '0' && $v->ConformidadeOK == '0' && $v->estadoAvaliacao == '0') {
                         $estado = 'Diligência respondida';
                     } else {
                         if ($v->stEstado == '1' && $v->Movimentacao == '95' && $v->estadoMovimentacao == '0' && is_null($v->ConformidadeOK) && is_null($v->estadoAvaliacao)) {
                             $estado = 'Proposta em construção';
                         } else {
                             if ($v->stEstado == '1' && $v->Movimentacao == '96' && $v->estadoMovimentacao == '0' && $v->ConformidadeOK == '9' && $v->estadoAvaliacao == '0') {
                                 $estado = 'Enviada ao MinC p/ avaliação';
                             } else {
                                 $estado = 'Enviada ao MinC p/ avaliação';
                             }
                         }
                     }
                 }
             }
             $html .= '<tr>';
             $html .= '<td style="border: 1px dotted black;">' . $i . '</td>';
             $html .= '<td style="border: 1px dotted black;">' . $v->idProjeto . '</td>';
             $html .= '<td style="border: 1px dotted black;">' . $v->NomeProposta . '</td>';
             $html .= '<td style="border: 1px dotted black;">' . $cpfcnpj . '</td>';
             $html .= '<td style="border: 1px dotted black;">' . $v->Proponente . '</td>';
             $html .= '<td style="border: 1px dotted black;">' . @number_format($v->valor, 2, ",", ".") . '</td>';
             $html .= '<td style="border: 1px dotted black;">' . $estado . '</td>';
             $html .= '</tr>';
             $i++;
         }
         $html .= '</table>';
         header("Content-Type: application/vnd.ms-excel");
         header("Content-Disposition: inline; filename=Resultado_Relatorio_Propostas.xls;");
         echo $html;
         die;
     } else {
         $this->view->qtdRegistros = $total;
         $this->view->dados = $busca;
         $this->view->campo = $campo;
         $this->_helper->layout->disableLayout();
         // Desabilita o Zend Layout
     }
 }