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; }