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