示例#1
0
 public function getResumenEvento($eventoId, $funcionId = 'TODAS', $desde = 0, $hasta = 0)
 {
     $modelo = new ReportesFlex();
     $funcion = "";
     if ($funcionId > 0) {
         $funcion = sprintf(" AND FuncionesId = '%s' ", $funcionId);
     }
     $aforo = Lugares::model()->count(sprintf("EventoId = '%s' AND LugaresStatus<>'OFF'  %s", $eventoId, $funcion));
     $porvender = Lugares::model()->count(sprintf("EventoId = '%s' AND LugaresStatus='TRUE'  %s", $eventoId, $funcion));
     $vendidas = Lugares::model()->count(sprintf("EventoId = '%s' AND LugaresStatus IN ('RESERVADO','SELECTED','FALSE')  %s", $eventoId, $funcion));
     //$vendidas = Ventaslevel1::model()->with(
     //array(
     //'venta'=> array('having'=>"VentasSta NOT LIKE 'CANCELADO' ")
     //)
     //)->count(sprintf("EventoId = '%s' %s ",$eventoId,$funcion) );
     //$porvender=$aforo-$vendidas;
     $matrix = array('aforo' => array('titulo' => 'Aforo', 'boletos' => $aforo, 'importe' => 0, 'porcentaje' => 100), 'por vender' => array('titulo' => 'Por vender', 'boletos' => $porvender, 'importe' => 0, 'porcentaje' => $porvender / max($aforo, 1)), 'cortesia' => array('titulo' => 'Cortesías', 'boletos' => 0, 'importe' => 0, 'porcentaje' => 0), 'boleto duro' => array('titulo' => 'Boletos duros', 'boletos' => 0, 'importe' => 0, 'porcentaje' => 0), 'normal' => array('titulo' => 'Ventas', 'boletos' => 0, 'importe' => 0, 'porcentaje' => 0), 'total' => array('titulo' => 'Total', 'boletos' => 0, 'importe' => 0, 'porcentaje' => 0));
     //$matrix['por vender']['importe'] = Lugares::model()->count(sprintf("EventoId = '%s' AND LugaresStatus='TRUE'  %s",$eventoId,$funcion) );
     $model = new Ventas();
     $matrix['aforo']['importe'] = $model->getDbConnection()->createCommand(sprintf("\n\t\t\t\t\tSELECT SUM(ZonasCosBol) as ventas FROM lugares as t\n\t\t\t\t\tINNER JOIN zonas as t2 \n\t\t\t\t\t\tON t.EventoId     = t2.EventoId\n\t\t\t\t\t\tAND t.FuncionesId = t2.FuncionesId\n\t\t\t\t\t\tAND t.ZonasId     = t2.ZonasId\n\t\t\t\t\tWHERE t.EventoId      = %d and t.LugaresStatus<>'OFF'\n\t\t\t\t\tGROUP BY t.EventoId;", $eventoId))->queryScalar();
     $matrix['por vender']['importe'] = $model->getDbConnection()->createCommand(sprintf("\n\t\t\t\t\tSELECT SUM(ZonasCosBol) as ventas FROM lugares as t\n\t\t\t\t\tINNER JOIN zonas as t2 \n\t\t\t\t\t\tON t.EventoId     = t2.EventoId\n\t\t\t\t\t\tAND t.FuncionesId = t2.FuncionesId\n\t\t\t\t\t\tAND t.ZonasId     = t2.ZonasId\n\t\t\t\t\tWHERE t.EventoId      = %d and t.LugaresStatus='TRUE'\n\t\t\t\t\tGROUP BY t.EventoId;", $eventoId))->queryScalar();
     //$matrix['por vender']['importe']=$matrix['aforo']['importe']-$model->getDbConnection()->createCommand(sprintf("
     //SELECT sum(VentasCosBol-VentasMonDes) as ventas FROM ventaslevel1 as t
     //INNER JOIN zonas as t2
     //ON t.EventoId                     = t2.EventoId
     //AND t.FuncionesId                 = t2.FuncionesId
     //AND t.ZonasId                     = t2.ZonasId
     //INNER JOIN ventas as t3 ON t.VentasId = t3.VentasId
     //WHERE t.EventoId                      = %d
     //AND t3.VentasSta <> 'CANCELADO' AND  t.VentasSta<>'CANCELADO'
     //GROUP BY t.EventoId;",$eventoId))->queryScalar();
     $reporte = $modelo->getReporte($eventoId, $funcionId, $desde, $hasta, false, 'NORMAL,CORTESIA,BOLETO DURO', '', 'VentasBolTip');
     if (is_object($reporte)) {
         foreach ($reporte->getData() as $fila) {
             $index = strtolower($fila['VentasBolTip']);
             $matrix[$index] = array('boleto' => 0, 'titulo' => $index, 'importe' => 0, 'porcentaje' => 0);
             $matrix['total']['boletos'] += $matrix[$index]['boletos'] = $fila['cantidad'];
             $matrix['total']['importe'] += $matrix[$index]['importe'] = $fila['total'];
         }
     }
     foreach ($matrix as &$fila) {
         $fila['porcentaje'] = number_format($fila['boletos'] * 100 / max($aforo, 1), 0);
         $fila['boletos'] = number_format($fila['boletos'], 0);
         $fila['importe'] = number_format($fila['importe'], 0);
     }
     return $matrix;
 }