Exemplo n.º 1
0
 public function checkcantidad($attribute, $params)
 {
     //verificando en este escenario las cantidades y la solpes
     ///veriifcar primero si esta
     $detallecompra = Docompra::Model()->findByPk($this->iddocompra);
     $detallesolpe = Desolpe::Model()->findByPk($this->iddesolpe);
     $cantidadcomprada = $detallesolpe->cantcompras;
     $cantidadsolicitada = $detallesolpe->cant;
     $diferencia = $cantidadsolicitada - $cantidadcomprada;
     if ($diferencia > 0) {
         //Tiene sentido comprar , porque falta
         //  $this->adderror('cant','Ya no puede comprar mas , la Solicitud '.$detallesolpe->desolpe_solpe->numero.' - '.$detallesolpe->item.'  Ya se ha tomado  ');
     } else {
         //ya no tiene sentido comprar ,o la solpe esta completa o ya se excedio
         $this->adderror('cant', 'Ya no puede comprar mas , la Solicitud ' . $detallesolpe->desolpe_solpe->numero . ' - ' . $detallesolpe->item . '  Ya se ha tomado  ');
     }
 }
Exemplo n.º 2
0
 public function Pasacompra($hidsolpe, $hidguia)
 {
     //el id ID de la compra
     //verfiicando el estado de la solpe
     $matriz = Desolpe::Model()->findAll("hidsolpe=:xhidsolpe and est in ('30','70') ", array(":xhidsolpe" => $hidsolpe));
     for ($i = 0; $i < count($matriz); $i++) {
         $this->pasacomprasolo($matriz[$i]['id'], $hidguia);
     }
 }
Exemplo n.º 3
0
 public function actionReservaitem($id)
 {
     $model = Desolpe::Model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'No se encontro ningun documento para estos datos');
     }
     if ($model->tipsolpe == 'S') {
         throw new CHttpException(500, 'No se puede reservar un servicio');
     }
     $modelocabecera = Solpe::model()->findByPk($model->hidsolpe);
     if ($modelocabecera->escompra == '1') {
         throw new CHttpException(500, 'No se puede reservar items de solicitudes hechas para compras ');
     }
     // Uncomment the following line if AJAX validation is needed
     $this->performAjaxValidation($model);
     $model->setscenario('reservar');
     if (isset($_POST['Desolpe'])) {
         yii::app()->mensajes->clear();
         $model->attributes = $_POST['Desolpe'];
         $transaccion = $model->dbConnection->beginTransaction();
         /*if($model->save()) {
         				$idsolpe = $model->id;
         				$cantcompra = $model->cantidad_compras;
         				$cantreservada = $model->cantidad_reservada;
         				if ($cantreservada > 0) {
         					$modelo = new Alreserva;
         					$modelo->hidesolpe = $idsolpe;
         					$modelo->cant = $cantreservada;
         					$modelo->flag = '1';
         					$modelo->estadoreserva = self::ESTADO_RESERVA_CREADO;
         					$modelo->codocu = self::DOCUMENTO_RESERVA;
         				}
         
         				if ($cantcompra > 0) {
         					$modelin = new Alreserva;
         					$modelin->hidesolpe = $idsolpe;
         					$modelin->cant = $cantcompra;
         					$modelin->flag = '0';
         					$modelin->estadoreserva = self::ESTADO_RESERVA_CREADO;
         					$modelin->codocu = self::DOCUMENTO_RQ;
         				}
         
         				$modeloinventario = $model->desolpe_alinventario;
         				if (is_null($modeloinventario))
         					throw new CHttpException(500, 'No existe inventario para el material ' . $model->txtmaterial);
         				$modeloinventario->setScenario('modificacantidad');
         				$factorconversion = Alconversiones::convierte($model->codart, $model->um);
         				if ($cantreservada >= 0) {
         					if ($cantreservada > 0)
         						if (!$modeloinventario->stocklibre_a_reserva($cantreservada * $factorconversion)) {
         							throw new CHttpException(500, $modeloinventario->cantlibre . '  no EXISTE SUFEINC TESTROCK APRA RESERVA ' . $cantreservada * $factorconversion);
         						}
         					$model->est=self::ESTADO_DESOLPE_RESERVADO; ///si es una solicitud exclusiva apra compras el estado es '08'
         					if(
         						$model->save() and
         						($cantreservada>0)?$modelo->save():true and
         							$modeloinventario->save() and
         							($cantcompra>0)?$modelin->save():true ) {
         						$transaccion->commit();
         					} else {
         						$transaccion->rollback(); ///regresar todo a como estaba
         						print_r($model->geterrors());echo "<br>";
         						print_r($modeloinventario->geterrors());echo "<br>";
         						print_r($modelin->geterrors());echo "<br>";
         						throw new CHttpException(500,'Hubo un error al momento de reservar');
         					}
         					if (!empty($_GET['asDialog'])) {
         						//Close the dialog, reset the iframe and update the grid
         						echo CHtml::script("window.parent.$('#cru-dialogdetalle').dialog('close');
         													                    window.parent.$('#cru-detalle').attr('src','');
         																		window.parent.$.fn.yiiGridView.update('detalle-grid');
         																		");
         						Yii::app()->end();
         					}
         				}
         			}*/
         $resultado = $model->hacerreserva($model->cantidad_reservada, $model->cantidad_compras);
         if (is_null($resultado)) {
             $model->save();
             $transaccion->commit();
             if (!empty($_GET['asDialog'])) {
                 //Close the dialog, reset the iframe and update the grid
                 echo CHtml::script("window.parent.\$('#cru-dialogdetalle').dialog('close');\n\t\t\t\t\t\t\t\t\t\t\t\t\t                    window.parent.\$('#cru-detalle').attr('src','');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twindow.parent.\$.fn.yiiGridView.update('detalle-grid');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t");
                 Yii::app()->end();
             }
         } else {
             $transaccion->rollback();
             print_r($resultado);
             Yii::app()->end();
         }
     }
     if (!empty($_GET['asDialog'])) {
         $this->layout = '//layouts/iframe';
     }
     //ECHO $model->id;
     //Yii::app()->end();
     $this->render('_form_detalle_reservar', array('model' => $model, 'idcabeza' => $model->hidsolpe));
 }
Exemplo n.º 4
0
 public function actionReservaitem($id)
 {
     $model = Desolpe::Model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'No se encontro ningun documento para estos datos');
     }
     if ($model->tipsolpe == 'S') {
         throw new CHttpException(500, 'No se puede reservar un servicio');
     }
     $modelocabecera = Solpe::model()->findByPk($model->hidsolpe);
     if ($modelocabecera->escompra == '1') {
         throw new CHttpException(500, 'No se puede reservar items de solicitudes hechas para compras ');
     }
     // Uncomment the following line if AJAX validation is needed
     $this->performAjaxValidation($model);
     $model->setscenario('reservar');
     if (isset($_POST['Desolpe'])) {
         $model->attributes = $_POST['Desolpe'];
         if ($model->save()) {
             $transaccion = $model->dbConnection->beginTransaction();
             $idsolpe = $model->id;
             $cantcompra = $model->cantidad_compras;
             $cantreservada = $model->cantidad_reservada;
             if ($cantreservada > 0) {
                 $modelo = new Alreserva();
                 $modelo->hidesolpe = $idsolpe;
                 $modelo->cant = $cantreservada;
                 $modelo->flag = '1';
                 // $model->est='06'; //estado 'RESERVADO'
                 //$modelo->codocu='045';
             }
             if ($cantcompra > 0) {
                 $modelin = new Alreserva();
                 $modelin->hidesolpe = $idsolpe;
                 $modelin->cant = $cantcompra;
                 $modelin->flag = '0';
                 //  $model->est='08'; //'SOLICITADO PARA COMPRA'
                 //$modelin->codocu='008';
             }
             $modeloinventario = Alinventario::model()->findByPk($model->desolpe_alinventario->id);
             if (!is_null($modeloinventario)) {
                 $modeloinventario->setscenario('modificacantidad');
                 $modeloinventario->cantlibre = $modeloinventario->cantlibre - $cantreservada * Alconversiones::model()->convierte($modeloinventario->codart, $model->um);
                 ///;
                 $modeloinventario->cantres = $modeloinventario->cantres + $cantreservada * Alconversiones::model()->convierte($modeloinventario->codart, $model->um);
             }
             $model->est = ($cantcompra > 0 and $cantreservada == 0) ? '80' : '60';
             ///si es una solicitud exclusiva apra compras el estado es '08'
             if ($model->save() and $cantreservada > 0 ? $modelo->save() : true and $modeloinventario->save() and $cantcompra > 0 ? $modelin->save() : true) {
                 $transaccion->commit();
             } else {
                 $transaccion->rollback();
                 ///regresar todo a como estaba
                 throw new CHttpException(404, 'carayyyyyy');
             }
             if (!empty($_GET['asDialog'])) {
                 //Close the dialog, reset the iframe and update the grid
                 echo CHtml::script("window.parent.\$('#cru-dialogdetalle').dialog('close');\n\t\t\t\t\t\t\t\t\t\t\t\t\t                    window.parent.\$('#cru-detalle').attr('src','');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twindow.parent.\$.fn.yiiGridView.update('detalle-grid');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t");
                 Yii::app()->end();
             }
         }
     }
     if (!empty($_GET['asDialog'])) {
         $this->layout = '//layouts/iframe';
     }
     //ECHO $model->id;
     //Yii::app()->end();
     $this->render('_form_detalle_reservar', array('model' => $model, 'idcabeza' => $model->hidsolpe));
 }