Beispiel #1
0
 public function actualizarCombo($combo, $cantidad)
 {
     $listItems = ComprasItems::model()->findAll(array('condition' => 'idCompra=:compra AND idCombo=:combo', 'params' => array(':compra' => $this->idCompra, ':combo' => $combo)));
     if (empty($listItems)) {
         throw new Exception('Combos de compra no existentes.');
     }
     $cantDiff = $cantidad - $listItems[0]->unidades;
     //igual
     if ($cantDiff == 0) {
         echo CJSON::encode(array('result' => 'error', 'response' => 'Actualización exitosa.'));
         Yii::app()->end();
     }
     if ($cantDiff > 0) {
         $objCombo = Combo::model()->find(array('with' => array('listComboSectorCiudad'), 'condition' => 't.idCombo=:combo AND t.estadoCombo=:estado AND listComboSectorCiudad.saldo>:saldo AND listComboSectorCiudad.codigoCiudad=:ciudad AND listComboSectorCiudad.codigoSector=:sector', 'params' => array(':combo' => $combo, ':estado' => 1, ':saldo' => 0, ':ciudad' => $this->codigoCiudad, ':sector' => $this->codigoSector)));
         if ($objCombo === null) {
             throw new Exception("La cantidad solicitada no está disponible en este momento. No hay unidades disponibles");
         }
         $objSaldo = $objCombo->getSaldo($this->codigoCiudad, $this->codigoSector);
         if ($objSaldo === null) {
             throw new Exception("La cantidad solicitada no está disponible en este momento. No hay unidades disponibles");
         }
         if ($cantDiff > $objSaldo->saldo) {
             throw new Exception("La cantidad solicitada no está disponible en este momento. Saldos disponibles: {$objSaldo->saldo} unidades");
         }
     }
     $transaction = Yii::app()->db->beginTransaction();
     foreach ($listItems as $objItem) {
         $precioTotal = $objItem->precioBaseUnidad - $objItem->descuentoUnidad;
         $precioDiff = $precioTotal * $cantDiff;
         $objItem->unidades += $cantDiff;
         $objItem->precioTotalUnidad += $precioDiff;
         $objItem->idEstadoItem = Yii::app()->params->callcenter['estadoItem']['estado']['modificado'];
         $objItem->idOperador = Yii::app()->controller->module->user->id;
         $this->subtotalCompra += $precioDiff;
         $this->totalCompra += $precioDiff;
         if (!$objItem->save()) {
             try {
                 $transaction->rollBack();
             } catch (Exception $txexc) {
                 Yii::log($txexc->getMessage() . "\n" . $txexc->getTraceAsString(), CLogger::LEVEL_ERROR, 'application');
             }
             throw new Exception('Error de actualización item: ' . $objItem->validateErrorsResponse());
         }
     }
     if (!$this->save()) {
         try {
             $transaction->rollBack();
         } catch (Exception $txexc) {
             Yii::log($txexc->getMessage() . "\n" . $txexc->getTraceAsString(), CLogger::LEVEL_ERROR, 'application');
         }
         throw new Exception('Error de actualización compra: ' . $this->validateErrorsResponse());
     }
     $transaction->commit();
 }
 public function actionDisponibilidad()
 {
     if (!Yii::app()->request->isPostRequest) {
         echo CJSON::encode(array('result' => 'error', 'response' => 'Solicitud invalida'));
         Yii::app()->end();
     }
     $item = Yii::app()->getRequest()->getPost('item');
     if ($item === null) {
         echo CJSON::encode(array('result' => 'error', 'response' => 'Solicitud inválida, no se detectan datos'));
         Yii::app()->end();
     }
     $objItem = ComprasItems::model()->findByPk($item);
     if ($objItem === null) {
         echo CJSON::encode(array('result' => 'error', 'response' => 'Producto de compra no existente'));
         Yii::app()->end();
     }
     if ($objItem->idCombo === null) {
         if ($objItem->disponible == 1) {
             $objItem->disponible = 0;
         } else {
             $objItem->disponible = 1;
         }
         $objItem->save();
         echo CJSON::encode(array('result' => 'ok', 'response' => array('msg' => 'Pedido actualizado.', 'htmlDetalle' => $this->renderPartial('/admin/_adminPedido', array('objCompra' => $objItem->objCompra), true, false))));
     } else {
         $listItems = ComprasItems::model()->findAll(array('condition' => 'idCompra=:compra AND idCombo=:combo', 'params' => array(':compra' => $objItem->idCompra, ':combo' => $objItem->idCombo)));
         foreach ($listItems as $objItemCompra) {
             if ($objItemCompra->disponible == 1) {
                 $objItemCompra->disponible = 0;
             } else {
                 $objItemCompra->disponible = 1;
             }
             $objItemCompra->save();
         }
         echo CJSON::encode(array('result' => 'ok', 'response' => array('msg' => 'Pedido actualizado.', 'htmlDetalle' => $this->renderPartial('/admin/_adminPedido', array('objCompra' => $objItem->objCompra), true, false))));
     }
 }