public function getLugaresDisponibles($limite) { $criteria = new CDbCriteria(); $criteria->addCondition('t.SubzonaId = :SubzonaId'); $criteria->addCondition('t.ZonasId = :ZonaId'); $criteria->addCondition('t.FuncionesId = :FuncionId'); $criteria->addCondition('t.EventoId = :EventoId'); $criteria->addCondition('t.LugaresStatus = "TRUE"'); $criteria->limit = $limite; $criteria->params = array(':SubzonaId' => $this->SubzonaId, ':ZonaId' => $this->ZonasId, ':FuncionId' => $this->FuncionesId, ':EventoId' => $this->EventoId); return Lugares::model()->findAll($criteria); }
public function getDetallesZonasCargo($EventoId, $FuncionesId, $ZonasId, $fecha1, $fecha2, $cargo) { if ($cargo == 'SI') { $extra = " + ventaslevel1.VentasCarSer "; } else { $extra = ""; } $rango = ""; if ($fecha1 != "" && $fecha2 != "" and preg_match("(\\d{4}-\\d{2}-\\d{2})", $fecha1) == 1 and preg_match("(\\d{4}-\\d{2}-\\d{2})", $fecha2) == 1) { $rango = " AND DATE(VentasFecHor) BETWEEN '{$fecha1}' AND '{$fecha2}' "; } $aforo = Lugares::model()->count("EventoId = '{$EventoId}' AND FuncionesId = '{$FuncionesId}' AND ZonasId = '{$ZonasId}'"); if ($FuncionesId > 0) { $funcion = " AND ventaslevel1.FuncionesId = '{$FuncionesId}' "; } else { $funcion = ''; } $query = "SELECT ventas.VentasId as id, '{$aforo}' as aforo,\tzonas.ZonasAli, CONCAT(ventaslevel1.VentasBolTip, ' ', if(descuentos.DescuentosDes = 'Ninguno', '', CONCAT('- ',descuentos.DescuentosDes))) AS VentasBolTip, COUNT(ventaslevel1.LugaresId) AS cantidad,\n\t\t\t(ventaslevel1.VentasCosBol - ventaslevel1.VentasMonDes) as ZonasCosBol,\t\n\t\t\tSUM(ventaslevel1.VentasCosBol -\tventaslevel1.VentasMonDes {$extra}) as total,\n\t\t\t (ventaslevel1.VentasCosBol - ventaslevel1.VentasMonDes) as VentasCosBol\n\t\t\tFROM ventas\n\t\t\tINNER JOIN ventaslevel1 ON (ventas.VentasId=ventaslevel1.VentasId)\n\t\t\tINNER JOIN descuentos ON (descuentos.DescuentosId = ventaslevel1.DescuentosId)\n\t\t\tINNER JOIN zonas ON (ventaslevel1.EventoId=zonas.EventoId)\n\t\t\tAND (ventaslevel1.FuncionesId=zonas.FuncionesId)\n\t\t\tAND (ventaslevel1.ZonasId=zonas.ZonasId)\n\t\t\tWHERE ventaslevel1.EventoId = '{$EventoId}'\n\t\t\t{$funcion}\n\t\t\tAND NOT (ventaslevel1.VentasSta = 'CANCELADO')\n\t\t\tAND ventaslevel1.ZonasId = '{$ZonasId}'\n\t\t\t{$rango}\n\t\t\tGROUP BY zonas.ZonasAli, ventaslevel1.VentasBolTip, zonas.ZonasCosBol,\n\t\t\tventaslevel1.VentasCosBol, ventaslevel1.VentasMonDes"; return new CSqlDataProvider($query, array('pagination' => false)); }
echo $form->DropDownList($model, 'coddocu', $datos, array('empty' => '--Seleccione un documento--')); ?> <?php echo $form->error($model, 'coddocu'); ?> </div> <div class="row"> <?php echo $form->labelEx($model, 'codlugar'); ?> <?php $datos = CHtml::listData(Lugares::model()->findAll(array('order' => 'deslugar')), 'codlugar', 'deslugar'); echo $form->DropDownList($model, 'codlugar', $datos, array('empty' => '--Seleccione un Lugar--')); ?> <?php echo $form->error($model, 'codlugar'); ?> </div> <div class="row buttons"> <?php echo CHtml::submitButton($model->isNewRecord ? 'Registrar' : 'Grabar'); ?>
public function alinear($direccion) { // Alinea los lugares todos a la izquierda $ide = array('EventoId' => $this->EventoId, 'FuncionesId' => $this->FuncionesId, 'ZonasId' => $this->ZonasId, 'SubzonaId' => $this->SubzonaId, 'FilasId' => $this->FilasId); //Numero de lugares en la fila $nlugares = $this->nlugares; //Numero de lugares en OFF $noff = Lugares::model()->countByAttributes($ide, "LugaresStatus='OFF'"); if ($nlugares > 0 and $noff > 1) { // Solamente si existen lugares en la fila... switch ($direccion) { case 'derecha': //A lado derecha todo $ultimoLugar = Lugares::model()->findAllByAttributes($ide, array('order' => 'LugaresId desc', 'limit' => 1)); $ultimoLugar = $ultimoLugar[0]; if ($ultimoLugar->LugaresStatus != "TRUE") { // Si el lugar mas a la derecha es true no hay nada mas que mover, sino $maxTrue = Lugares::model()->findAllByAttributes($ide, array('condition' => "LugaresStatus='TRUE'", 'order' => 'LugaresId desc', 'limit' => 1)); if (sizeof($maxTrue) > 0) { // SI existe un asiento true en la fila $delta = $nlugares - $maxTrue[0]->LugaresId; $this->actualizarLugaresId($delta); } } break; case 'izquierda': //A la izquierda todo $primerLugar = Lugares::model()->findAllByAttributes($ide, array('order' => 'LugaresId', 'limit' => 1)); $primerLugar = $primerLugar[0]; if ($primerLugar->LugaresStatus != "TRUE") { // Si el lugar mas a la izquierda es true no hay nada mas que mover, sino $minTrue = Lugares::model()->findAllByAttributes($ide, array('condition' => "LugaresStatus='TRUE'", 'order' => 'LugaresId', 'limit' => 1)); if (sizeof($minTrue > 0)) { // Si exite un asiento en true $delta = $minTrue[0]->LugaresId - 1; $this->actualizarLugaresId(-$delta); } } break; case 'centro': //A la derecha todo if ($noff > 1) { if (isset($this->minTrue) and isset($this->minLugar) and isset($this->maxTrue) and isset($this->maxLugar)) { // SI existen lugares ... $minTrue = $this->minTrue; $maxTrue = $this->maxTrue; $minLugar = $this->minLugar; $maxLugar = $this->maxLugar; $noff = abs($minTrue - $minLugar) + abs($maxLugar - $maxTrue) + 1; $noff = ceil($noff / 2); $delta = $noff - $minTrue; $this->actualizarLugaresId($delta); } } break; default: // code... break; } } else { $this->restaurarLugaresOff(); } }
<div class="row"> <?php echo $form->label($model, 'lugares_lugar'); ?> <?php echo $form->textField($model, 'lugares_lugar', array('size' => 25, 'maxlength' => 40)); ?> </div> <div class="row"> <?php echo $form->label($model, 'codlugar'); ?> <?php $datos = CHtml::listData(Lugares::model()->findAll(array('condition' => 'codlugar in (select codlugar from {{inventario}} where codlugar is not null)', 'order' => 'deslugar')), 'codlugar', 'deslugar'); echo $form->DropDownList($model, 'codlugar', $datos, array('empty' => '--Seleccione un lugar --')); ?> </div> <div class="row buttons"> <?php echo CHtml::submitButton('Filtrar'); ?> </div> </div> <?php
public function generarLugares() { // Genera los lugares dependiendo de si la zona es general o numerada. if ($this->ZonasTipo == 1 and $this->ZonasCanLug > 0) { // Cuando el tipo de zona sea general y se haya definido el numero de lugares $this->eliminarSubzonas(); $subzona = $this->agregarSubzona(); if ($subzona) { $tamanoFila = $this->ZonasCanLug / 100.0 > 1 ? 100 : 10; $numeroFilas = ceil($this->ZonasCanLug / $tamanoFila); $filas = array(); $lugares = array(); for ($i = 1; $i <= $numeroFilas; $i++) { $filas[] = sprintf("(%d,%d,%d,1,%d,'General',%d,%d,%d,%d)", $this->EventoId, $this->FuncionesId, $this->ZonasId, $i, $i, $tamanoFila, 1, $tamanoFila); for ($j = 1; $j <= $tamanoFila; $j++) { $lugares[] = sprintf("(%d,%d,%d,1,%d,%d,%d,%d,'TRUE')", $this->EventoId, $this->FuncionesId, $this->ZonasId, $i, $j, $j, $j); } } $conexion = Yii::app()->db; $conexion->createCommand("INSERT IGNORE INTO filas \n\t\t\t\t\t\t\t\t\t (EventoId,FuncionesId,ZonasId,SubzonaId,FilasId, FilasAli, FilasNum,FilasCanLug,LugaresIni,LugaresFin)\n\t\t\t\t\t\t\t\t\t VALUE " . implode(',', $filas))->execute(); ### Hasta este punto se han creado las filas y solo hace falta agregar los lugares //---------------------------------------------------------------------------------- $nlugares = $conexion->createCommand("INSERT IGNORE INTO lugares \n\t\t\t\t\t\t\t\t\t (EventoId,FuncionesId,ZonasId,SubzonaId,FilasId, LugaresId, LugaresLug,LugaresNum, LugaresStatus)\n\t\t\t\t\t\t\t\t\t VALUE " . implode(',', $lugares))->execute(); $noff = Lugares::model()->updateAll(array("LugaresStatus" => "OFF"), sprintf("EventoId={$this->EventoId} and FuncionesId={$this->FuncionesId} and ZonasId={$this->ZonasId} and\n\t\t\t\t\t\t\t\t\t SubzonaId=1 and FilasId={$numeroFilas} and LugaresId>%d", $tamanoFila - ($tamanoFila * $numeroFilas - $this->ZonasCanLug))); $this->ZonasCantSubZon = 1; $subzona->SubzonaNum = 1; $subzona->SubzonaCanFil = $numeroFilas; $this->save(); $subzona->save(); return array('filas' => $numeroFilas, 'lugares' => $this->ZonasCanLug); } else { return false; } } else { if ($this->ZonasTipo == 2) { //Elimina todos los posibles lugares creados previamente $this->eliminarLugares(); //Generar asientos numerados $ret = true; foreach ($this->filas as $fila) { // Por cada fila de la zona genera sus lugares $ret = $ret and $fila->generarLugares(); } $this->ZonasCanLug = $this->lugaresTrue; $this->save(); return $ret; } } $coords = $conexion->createCommand(sprintf("\n\t\t\t\t\t INSERT IGNORE INTO configurl_mapa_grande_coordenadas \n\t\t\t\t\t ( configurl_funcion_mapa_grande_id,ZonasId, SubzonaId )\n\t\t\t\t\t (SELECT %d, ZonasId, SubzonaId FROM subzonas\n\t\t\t\t\t WHERE EventoId== %d and FuncionesId=%d and ZonasId=%d \n\t\t\t ) ", $this->funcion->mapagrande->id, $this->EventoId, $this->FuncionesId, $this->ZonasId))->execute(); }
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; }
public function eliminarDistribucion() { $identificador = array('EventoId' => $this->EventoId); $nfunciones = Funciones::model()->countByAttributes($identificador); if ($nfunciones > 1) { // Si no se esta tratando de eliminar la unica funcion. $identHijos = array('EventoId' => $this->EventoId, 'FuncionesId' => $this->FuncionesId); $this->deleteConfpvfuncion(); Zonas::model()->deleteAllByAttributes($identHijos); Subzona::model()->deleteAllByAttributes($identHijos); Filas::model()->deleteAllByAttributes($identHijos); Lugares::model()->deleteAllByAttributes($identHijos); $mapagrande = ConfigurlFuncionesMapaGrande::model()->findByAttributes(array('EventoId' => $this->EventoId, 'FuncionId' => $this->FuncionesId)); if (is_object($mapagrande)) { // Si tiene un mapa grande se eliminan primero sus coordenadas para que no de restriccion de llaves foraneas ConfigurlMapaGrandeCoordenadas::model()->deleteAllByAttributes(array('configurl_funcion_mapa_grande_id' => $mapagrande->id)); $mapagrande->delete(); } $this->ForoMapIntId = 0; $this->save(); return true; } else { return false; } }
?> </div> <div class="row"> <?php echo $form->labelEx($model, 'codlugar'); //$documento='032'; $criterial = new CDbCriteria(); $criterial->condition = 'n_direc=:direc'; $nn = Ne::model()->find("n_guia=:ifcabeza", array(":ifcabeza" => $idcabeza)); $criterial->params = array(':direc' => $nn->n_dirsoc); ?> <?php $datos1x1 = CHtml::listData(Lugares::model()->findall($criterial), 'codlugar', 'deslugar'); echo $form->DropDownList($model, 'codlugar', $datos1x1, array('empty' => '--Seleccione un lugar--', 'disabled' => $habilitado)); ?> <?php echo $form->error($model, 'codlugar'); ?> </div> <div class="row"> <?php echo $form->labelEx($model, 'c_codactivo'); ?> <?php /* echo $form->textField($model,'c_codactivo',array('size'=>13,'maxlength'=>13,
public function asignar($EventoId, $FuncionesId) { # Asigna la distribucion a una funcion. $identificador = compact('EventoId', 'FuncionesId'); $origen = Funciones::model()->with('mapagrande')->findByAttributes(array('ForoId' => $this->ForoId, 'ForoMapIntId' => $this->ForoMapIntId)); $funcion = Funciones::model()->with('configurl')->findByPk($identificador); if (is_object($funcion) and is_object($origen)) { # Si la función existe se inicia la transacción //Se eliminan toda distribucion anterior----------------------------------------------------- $elm = self::removerAsignacion($EventoId, $FuncionesId); if ($elm) { $conexion = Yii::app()->db; $transaction = $conexion->beginTransaction(); $insertar = array('zonas' => sprintf("\n\t\t\t\t\t\tINSERT INTO zonas (SELECT %d, %d, ZonasId, ZonasAli,\n\t\t\t\t\t\t\tZonasTipoBol, ZonasTipo, ZonasNum, ZonasCantSubZon, ZonasCanLug,\n\t\t\t\t\t\t\tZonasBanExp, ZonasCosBol FROM zonas WHERE EventoId=%d and FuncionesId=%d);\n\t\t\t\t\t", $funcion->EventoId, $funcion->FuncionesId, $origen->EventoId, $origen->FuncionesId), 'subzonas' => sprintf(" \n\t\t\t\t\t\tINSERT INTO subzona (SELECT %d, %d, ZonasId, SubzonaId,\n\t\t\t\t\t\t\tSubzonaAcc, SubzonaNum, SubzonaCanFil, SubzonaFilCanLug, SubzonaBanExp,\n\t\t\t\t\t\t\tSubzonaX1, SubzonaY1, SubzonaX2, SubzonaY2, SubzonaX3, SubzonaY3, SubzonaX4,\n\t\t\t\t\t\t\tSubzonaY4, SubzonaX5, SubzonaY5, SubzonaFor, SubzonaColor FROM subzona WHERE\n\t\t\t\t\t\t\tEventoId=%d and FuncionesId=%d);\n\t\t\t\t\t", $funcion->EventoId, $funcion->FuncionesId, $origen->EventoId, $origen->FuncionesId), 'filas' => sprintf(" \n\t\t\t\t\t\tINSERT INTO filas (SELECT %d, %d, ZonasId, SubzonaId,\n\t\t\t\t\t\t\tFilasId, FilasAli, FilasNum, FilasCanLug, FilasIniCol, FilasIniFin,\n\t\t\t\t\t\t\tFilasBanExp, LugaresIni, LugaresFin, MesasX, MesasY, MesasWidth, MesasHeight\n\t\t\t\t\t\t\tFROM filas WHERE EventoId=%d and FuncionesId=%d);\n\t\t\t\t\t", $funcion->EventoId, $funcion->FuncionesId, $origen->EventoId, $origen->FuncionesId), 'lugares' => sprintf(" \n\t\t\t\t\t\tINSERT INTO lugares (SELECT %d, %d, ZonasId, SubzonaId,\n\t\t\t\t\t\t\tFilasId, LugaresId, LugaresLug, LugaresNum, LugaresStatus, LugaresNumBol\n\t\t\t\t\t\t\tFROM lugares WHERE EventoId=%d and FuncionesId=%d);\n\t\t\t\t\t", $funcion->EventoId, $funcion->FuncionesId, $origen->EventoId, $origen->FuncionesId)); // try{ $conexion->createCommand($insertar['zonas'])->execute(); $conexion->createCommand($insertar['subzonas'])->execute(); $conexion->createCommand($insertar['filas'])->execute(); $conexion->createCommand($insertar['lugares'])->execute(); //$conexion->createCommand($insertar['zonaslevel1'])->execute(); $this->asignarMapaGrande($EventoId, $FuncionesId); $funcion->ForoId = $this->ForoId; $funcion->ForoMapIntId = $this->ForoMapIntId; $funcion->update(); Lugares::model()->updateAll(array('LugaresStatus' => 'TRUE'), sprintf("EventoId= %d AND FuncionesId= %d AND LugaresStatus<>'OFF'", $funcion->EventoId, $funcion->FuncionesId)); $transaction->commit(); return true; // } // catch(Exception $e){ // $transaction->rollback(); // return false; // } } else { return false; } } else { return false; } }
public function actionCambiarLugar() { // Cambia el valor de un lugar y en base a su contenido lo pone en OFF o en TRUE if (isset($_POST['Lugares'])) { extract($_POST['Lugares']); $lugar = Lugares::model()->with('zona')->findByPk(compact('EventoId', 'FuncionesId', 'ZonasId', 'SubzonaId', 'FilasId', 'LugaresId')); $lugar->attributes = $_POST['Lugares']; if (isset($_POST['Lugares']['LugaresLug'])) { if (empty($_POST['Lugares']['LugaresLug'])) { $lugar->LugaresStatus = 'OFF'; $lugar->zona->ZonasCanLug = $lugar->zona->ZonasCanLug - 1; } else { $lugar->LugaresStatus = 'TRUE'; $lugar->zona->ZonasCanLug = $lugar->zona->ZonasCanLug + 1; } } if ($lugar->save(false)) { // Si los datos son correctos $lugar->zona->save(); echo 'true'; } } else { throw new Exception("Datos incompletos, verifique parametros", 1); } }
/** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer the ID of the model to be loaded */ public function loadModel($id) { $model = Lugares::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, 'El enlace o direccion solicitado no existe'); } return $model; }
public function getLugar() { $lugar = null; if (!empty($this->boleto)) { $pk = explode('-', $this->boleto); if (sizeof($pk) == 6) { $lugar = Lugares::model()->findByPk(array('EventoId' => $pk[0], 'FuncionesId' => $pk[1], 'ZonasId' => $pk[2], 'SubzonaId' => $pk[3], 'FilasId' => $pk[4], 'LugaresId' => $pk[5])); } } return $lugar; }
public function registrarVenta() { $referencia = $this->referencia; $pv = $this->pv; try { $lugares = $this->validacionesVenta(); $numeroLugares = sizeof($lugares); } catch (Exception $e) { $this->registrarError($e); throw $e; // return $e->getCode() ; } $venta = new Ventas(); $venta->PuntosventaId = $pv; $venta->VentasSec = "FARMATODO"; $venta->TempLugaresTipUsr = '******'; $venta->UsuariosId = 2; $venta->VentasSta = 'FIN'; $venta->VentasMonMetEnt = 0; $venta->VentasTip = 'EFECTIVO'; $venta->VentasNumRef = $referencia; /* * COMIENZA LA TRANSACCION */ $transaction = Yii::app()->db->beginTransaction(); try { if ($venta->save(false)) { # Si la venta se pudo realizar ### !!! SE INSERTAN LOS VENTASLEVEL1 !!! $query = " INSERT INTO ventaslevel1 (\n \t\t\t\t\tSELECT '%s' AS VentasId, \n\t\t\t\t\t\t\tt1.EventoId, \n\t\t\t\t\t\t\tt1.FuncionesId,\n\t\t\t\t\t\t t1.ZonasId, \n\t\t\t\t\t\t t1.SubzonaId,\n\t\t\t\t\t\t t1.FilasId, \n\t\t\t\t\t\t t1.LugaresId,\n\t\t\t\t\t\t t1.DescuentosId, \n\t\t\t\t\t\t IFNULL(t2.VentasCosBolDes,0)\n\t\t\t\t\t\t \t\t\t\t\tAS VentasMonDes,\n\t \t\t\t\t\t'NORMAL' \t\t\tAS VentasBolTip,\n\t t2.VentasCosBol \tAS VentasCosBol, \n\t t2.VentasCarSer-IFNULL(t2.VentasCarSerDes,0) \n\t\t\t\t\t\t\t\t\t\t\t\tAS VentasCarSer,\n\t 'VENDIDO' \t\t\tAS VentasSta,\n\t FLOOR(100000000000 + RAND() * (999999999999 - 100000000000)) \n \t\t\t\t\t\t\t\t\t\t\tAS LugaresNumBol, \n\t '' \t\t\t\t\tAS VentasBolPara,\n\t CONCAT_WS('-',\n\t \tCONCAT_WS('.',\n\t \t\tt1.EventoId,t1.FuncionesId,t1.ZonasId,\n\t \t\tt1.SubzonaId,t1.FilasId, t1.LugaresId\n\t \t\t),\n\t \tCONCAT_WS('.',MONTH(CURDATE()),DAY(CURDATE()) ),\n\t \t'F%s'\n\t \t) \t\t\t\tAS VentasCon,\n\t '0' \t\t\t\tAS CancelUsuarioId,\n\t '0000-00-00' \t\t\t\tAS CancelFecHor \n FROM templugares as t1 \n INNER JOIN preciostemplugares t2 \n \t\t\tON (t2.EventoId=t1.EventoId) \n \t\t\tAND (t2.FuncionesId=t1.FuncionesId)\n \t\t\tAND (t2.ZonasId=t1.ZonasId) \n \t\t\tAND (t2.SubzonaId=t1.SubzonaId) \n \t\t\tAND (t2.FilasId=t1.FilasId) \n \t\t\tAND (t2.LugaresId=t1.LugaresId) \n \t\t\tAND (t2.PuntosventaId=t1.PuntosventaId) \n WHERE (tempLugaresNumRef = '%s'))"; $query = sprintf($query, $venta->VentasId, $pv, $referencia); try { $ret = Yii::app()->db->createCommand($query)->execute(); } catch (Exception $e) { $this->registrarError($e); throw $e; return 300; } if ($ret != $numeroLugares) { throw new Exception("Numero de ventaslevel1 insertados no coincide", 301); return 301; } // Pone todos los templugares en estatus de FALSE (Como vendidos) $numTemplugares = Templugares::model()->updateAll(array('TempLugaresSta' => 'FALSE'), "tempLugaresNumRef = '{$referencia}'"); if ($numTemplugares != $numeroLugares) { throw new Exception("Numero de templugares actualizados con status FALSE difiere", 302); return 302; } // Pone todos los lugares en estatus de FALSE (Como vendidos) $actualizados = 0; foreach ($lugares as $tmplugar) { if (is_array($tmplugar)) { Lugares::model()->updateByPk(array_slice($tmplugar, 0, 6), array('LugaresStatus' => 'FALSE')); $actualizados++; } } if ($actualizados != $numeroLugares) { throw new Exception("Numero de lugares con status FALSE difiere", 303); return 303; } // Si llega a este punto sin problemas entonces compromete la BD } else { throw new Exception("No fue posible guardar la venta con los datos actuales", 304); } } catch (Exception $e) { //Algo sucedio, no se compromete la base de datos, ningun dato guardado $transaction->rollback(); $this->registrarError($e); return $e->getCode(); } $ventaslevel1 = Ventaslevel1::model()->findAllByAttributes(array('VentasId' => $venta->VentasId, 'VentasSta' => 'VENDIDO')); if (sizeof($ventaslevel1) != sizeof($lugares)) { #Si el numero de ventaslevel1 es distinto que el numero de templugares seleccionados en primer lugar #Entonces hubo un error $transaction->rollback(); $this->registrarError(new Exception("No se paso la prueba de integridad en el registro de ventas", 305)); return 305; } else { /*Verifica que los numero de boletos generados sean unicos */ // foreach ($ventaslevel1 as $vl1 ) { // if (is_object($vl1)) { // # code... // $vt1->LugaresNumBol=$this->generarCodigoBarras(); // $vl1->save(false); // } // } $transaction->commit(); return array('venta' => $venta, 'ventaslevel1' => $ventaslevel1); return 1000; } }
public function actionGetLugares() { if (!empty($_GET)) { $EventoId = $_GET['EventoId']; $FuncionesId = $_GET['FuncionesId']; $ZonasId = $_GET['ZonasId']; $SubzonaId = $_GET['SubzonaId']; $FilasId = $_GET['FilasId']; echo "<option value='0'>Todos los lugares</option>"; $lugares = Lugares::model()->findAll("EventoId = {$EventoId} AND FuncionesId={$FuncionesId} AND ZonasId={$ZonasId} AND SubzonaId={$SubzonaId} AND FilasId={$FilasId}"); foreach ($lugares as $key => $lugar) { echo "<option value='" . $lugar->LugaresId . "'>" . $lugar->LugaresLug . "</option>"; } } }
public function checkvalores($attribute, $params) { //verificando que se a el unico //Comporbando si existen valores en los matchcodes //En el modelo transportista $modeloprueba = Clipro::model()->find("codpro=:micodpro", array(":micodpro" => is_null($this->c_codtra) ? '' : $this->c_codtra)); if (is_null($modeloprueba)) { $this->adderror('c_codtra', 'Esta empresa de transportes no existe'); } else { //verficando que tenga una direccion fiscal por lo menos $modeloprueba7 = Direcciones::model()->find("c_hcod=:micodpro", array(":micodpro" => $this->c_codtra)); if (is_null($modeloprueba7)) { $this->adderror('c_codtra', 'Este transportista no cuenta con direccion fiscal'); } } //En el modelo destinatario $modeloprueba1 = Clipro::model()->find("codpro=:micodpro", array(":micodpro" => is_null($this->c_coclig) ? '' : $this->c_coclig)); if (is_null($modeloprueba1)) { $this->adderror('c_coclig', 'Este destinario no existe'); } else { //verficando que tenga una direccion fiscal por lo menos $modeloprueba17 = Direcciones::model()->find("c_hcod=:micodpro", array(":micodpro" => $this->c_coclig)); if (is_null($modeloprueba17)) { $this->adderror('c_coclig', 'Este destinatario no cuenta con direccion fiscal'); } } //En el modelo direcciones $modeloprueba11 = Direcciones::model()->find("n_direc=:micodpro", array(":micodpro" => empty($this->n_direc) ? 0 : $this->n_direc + 0)); if (is_null($modeloprueba11)) { $this->adderror('n_direc', 'Esta direccion no existe'); } else { //verificando si esta direccion tiene lugares //En el modelo direcciones $modeloprueba15 = Lugares::model()->find("n_direc=:midirec", array(":midirec" => empty($this->n_direc) ? 0 : $this->n_direc + 0)); if (is_null($modeloprueba15)) { $this->adderror('n_direc', 'Esta direccion no tiene asignados los lugares'); } } //En el modelo direcciones desl socio $modeloprueba111 = Direcciones::model()->find("n_direc=:micodpro", array(":micodpro" => is_null($this->n_dirsoc) ? 0 : $this->n_dirsoc + 0)); if (is_null($modeloprueba111)) { $this->adderror('n_dirsoc', 'Este punto de partida no Existe'); } }
</div> <div class="row"> <?php echo $form->label($model, 'deslugar'); ?> <?php echo $form->textField($model, 'deslugar', array('size' => 25, 'maxlength' => 40)); ?> </div> <div class="row"> <?php echo $form->label($model, 'codlugar'); ?> <?php $datos = CHtml::listData(Lugares::model()->findAll(array('condition' => 'codlugar in (select codlugar from ' . Yii::app()->params['prefijo'] . 'inventario where codlugar is not null)', 'order' => 'deslugar')), 'codlugar', 'deslugar'); echo $form->DropDownList($model, 'codlugar', $datos, array('empty' => '--Seleccione un lugar --')); echo CHtml::image(Yii::app()->getTheme()->baseUrl . Yii::app()->params["rutatemaimagenes"] . "nuevo.gif", "", array("width" => 30, "height" => 15)); ?> </div> <div class="row"> <?php $documento = '032'; $criteria = new CDbCriteria(); $criteria->condition = 'codocu=:docu'; $criteria->params = array(':docu' => $documento);
<?php Yii::app()->clientScript->registerScript('grabPageNo', "\n \$('.bolsita').on('change', function(event){\n \$.ajax({\n url: '/recurso/index.php?r=loginventario/update',\n\t\ttype: 'POST',\n\t data: { vlugar : event.target.value,\n\t\t\t\tvidinventario :event.target.vidinventario,\n\t\t\t\tvidlog:event.target.vidlog\n\t\t\t\t} ,\n datatype: 'json',\n success: function(datos){\n\t\t\t\t\t\t\t\talert( 'Se ha actualizado el registro del inventario '+datos);\n\t\t\t\t\t\t\t\t\t//\$.fn.yiiGridView.update('inventario-grid');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t});\n\n });\n", CClientScript::POS_READY); ?> <div id="papito"> </div> <?php $form = $this->beginWidget('CActiveForm', array('enableAjaxValidation' => true)); ?> <?php echo CHtml::DropDownList("lugarcitos", "", CHtml::listData(Lugares::model()->findAll(array("condition" => " codpro='R00001'", "order" => "deslugar ASC")), "codlugar", "deslugar"), array("empty" => "--Escoja un lugar--", "class" => "bolsitas")); ?> <?php echo CHtml::ajaxSubmitButton('Confirmar', array('loginventario/actualiza'), array('success' => 'reloadGrid')); ?> <?php $this->widget('zii.widgets.grid.CGridView', array('id' => 'inventario-grid', 'dataProvider' => $proveedor, 'itemsCssClass' => 'table table-striped table-bordered table-hover', 'columns' => array(array('name' => 'cod_cen', 'type' => 'raw', 'value' => 'CHTml::OpenTag("span",array("class"=>"label label-".$data->cod_cen)).$data->cod_cen.CHTml::CloseTag("span")'), array('name' => 'coddocu', 'header' => '.', 'type' => 'raw', 'value' => '($data->coddocu=="001")?CHtml::image(Yii::app()->getTheme()->baseUrl.Yii::app()->params["rutatemaimagenes"]."arriba.png","",array("width"=>10, "height"=>10)):CHtml::image(Yii::app()->getTheme()->baseUrl.Yii::app()->params["rutatemaimagenes"]."abajo.png","",array("width"=>10, "height"=>10))'), array('name' => 'despro', 'type' => 'raw', 'value' => 'CHTml::OpenTag("span",array("style"=>"color:#6B1A80;font-weight:bold;")).$data->despro.CHTml::CloseTag("span")'), array('name' => 'c_direc', 'header' => 'Punto de Transporte', 'type' => 'raw', 'value' => '$data->c_direc'), array('name' => 'numerodocumento', 'header' => 'N° Documento', 'type' => 'raw', 'value' => 'CHTml::link($data->numerodocumento,yii::app()->createUrl("/guia/update",array("id"=>$data->iddocu)))'), array('class' => 'CCheckBoxColumn', 'selectableRows' => 20, 'value' => '$data->idlog', 'checkBoxHtmlOptions' => array('name' => 'cajita[]')), array('name' => 'imagen', 'type' => 'raw', 'value' => '(file_exists(Yii::app()->params["rutafotosinventario"].trim($data->codigosap).".JPG"))? CHtml::image(Yii::app()->params["rutafotosinventario_"].trim($data->codigosap).".JPG",$data->codigosap,array(\'width\'=>50,\'height\'=>35)): "--"'), array('name' => 'fecha', 'header' => 'Fecha', 'value' => 'date("d/m/Y",strtotime($data->fecha))'), array('name' => 'codigoaf', 'header' => 'Plaquita', 'type' => 'raw', 'value' => 'CHTml::link($data->codigoaf,yii::app()->createUrl("/inventario/detalle",array("id"=>$data->hidinventario)))'), 'descripcion', 'barcoactual', array('name' => 'cE', 'header' => '', 'type' => 'raw', 'value' => 'CHtml::link("+",Yii::app()->createUrl("/Lugares/create",array("codpro"=>$data->codpro)),array("id"=>"cumple_$data->idlog", "vidinventario"=>"$data->hidinventario","vidlog"=>"$data->idlog", "class"=>"periquito"))'), array('name' => 'codlugar', 'type' => 'raw', 'value' => '(($data->codpro <> "R00001") and ($data->coddocu=="001") ) ? CHtml::ajaxSubmitButton("Ok", array("loginventario/actualizaprov"), array("type"=>"POST", "data"=>array("codpro"=>$data->codpro,"idlog"=>$data->idlog,"hidinventario"=>$data->hidinventario), "success"=>"reloadGrid"
$form = $this->beginWidget('CActiveForm', array('enableAjaxValidation' => true, 'method' => 'GET')); ?> <div class="row"> <div class='botones'> <?php echo CHtml::imageButton(Yii::app()->getTheme()->baseUrl . '/img/seleccionar.png', array('width' => 25, 'height' => 25, 'value' => 'Buscar', 'onClick' => 'Loading.show();Loading.hide();')); ?> </div> </div> <?php $documento = '032'; $criteria = new CDbCriteria(); $criteria->condition = 'codocu=:docu'; $criteria->params = array(':docu' => $documento); //$post = Post::model()->find($criteria); //$datos = CHtml::listData(Estado::model()->find('codocu=:c_hcod', array(':c_hcod'=>$documento)),'codestado','estado'); //datos = CHtml::listData(Estado::model()->find($criteria),'codestado','estado'); // $datos = CHtml::listData(Estado::model()->findall($criteria),'codestado','estado'); ?> <?php $this->widget('zii.widgets.grid.CGridView', array('id' => 'inventario-grid', 'dataProvider' => $model->searchlimpio(), 'cssFile' => Yii::app()->getTheme()->baseUrl . '/css/grilla_naranja.css', 'filter' => $model, 'columns' => array(array('class' => 'CCheckBoxColumn', 'selectableRows' => 10, 'value' => '$data->idinventario', 'checkBoxHtmlOptions' => array('name' => 'checkselected[]')), array('name' => 'codigoaf', 'header' => 'Codigo Placa', 'htmlOptions' => array('width' => '5')), array('name' => 'codigosap', 'header' => 'Codigo SAP', 'htmlOptions' => array('width' => '5')), array('name' => 'descripcion', 'header' => 'Descripcion', 'htmlOptions' => array('width' => '25')), array('name' => 'marca', 'header' => 'Marca', 'htmlOptions' => array('width' => '10')), array('name' => 'modelo', 'header' => 'Modelo', 'htmlOptions' => array('width' => '10')), array('name' => 'codlugar', 'value' => '$data->lugares->deslugar', 'filter' => CHtml::listdata(Lugares::model()->findall(), 'codlugar', 'deslugar')), array('name' => 'codestado', 'value' => '$data->estado->estado', 'filter' => CHtml::listdata(Estado::model()->findall($criteria), 'codestado', 'estado')), array('name' => 'codep', 'value' => '$data->barcoactual->nomep', 'filter' => CHtml::listdata(Embarcaciones::model()->findall(), 'codep', 'nomep'))))); ?> <div class="row buttons"> <?php echo CHtml::submitButton('Seleccionar'); ?> </div> <?php $this->endWidget();