/**
  * Creates a new model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  */
 public function actionCreate()
 {
     $model = new Alinventario();
     // Uncomment the following line if AJAX validation is needed
     // $this->performAjaxValidation($model);
     if (isset($_POST['Alinventario'])) {
         $model->attributes = $_POST['Alinventario'];
         if ($model->save()) {
             $this->redirect(array('view', 'id' => $model->id));
         }
     }
     $this->render('create', array('model' => $model));
 }
Пример #2
0
 public function generacontabilidad($model)
 {
     $transaccion = $model->dbConnection->beginTransaction();
     switch ($model->codocuref) {
         ///Luego hacer los procedimientos segun sea el caso
         case '210':
             ///un documento de compras
             //sacando de una vez el descuento y la conversion  moneda para calcular preciosn
             $modelocompra = Ocompra::model()->find("numcot=:numerox  ", array(":numerox" => trim($model->numdocref)));
             $descuento = is_null($modelocompra->descuento) ? 0 : $modelocompra->descuento / 100;
             $moneda = $modelocompra->moneda;
             if ($moneda == Yii::app()->params['monedadef']) {
                 $conversion = 1;
             } else {
                 $conversion = Numeromaximo::cambiomoneda($moneda, Yii::app()->params['monedadef']);
             }
             /***********************************************************************
                +		LLENAMOS EL LOG DE ENTREGAS DE LA POSICION DE LA ORDEN DE COMPRA
                ************************************************************************/
             $modelokardex = Alkardex::model()->findall("hidvale=" . $model->id . "  and codestado='99' ");
             if (count($modelokardex) > 0) {
                 for ($i = 0; $i < count($modelokardex); ++$i) {
                     $modeloentregas = new Alentregas();
                     $modeloentregas->iddetcompra = $modelokardex[$i]['idref'];
                     $modeloentregas->cant = $modelokardex[$i]['cant'];
                     $modeloentregas->idkardex = $modelokardex[$i]['id'];
                     if (!$modeloentregas->save()) {
                         $transaccion->rollback();
                         throw new CHttpException(500, 'Se produjo un error al registrar las entregas');
                     }
                     ///TAMBIEN ACTUALIZAMOS EL STATRUS DE LAS POSCIONES DE LA ORDEN DE COMPRA
                     // $modelodetoc=New Docompra;
                     $modelodetoc = Docompra::model()->findByPk($modelokardex[$i]['idref']);
                     if (!is_null($modelodetoc)) {
                         //verificando primero cuanto ya se ha atendido antes
                         $criteria = new CDbCriteria();
                         $criteria->select = 'sum(cant) AS sumatoria';
                         $criteria->addCondition(" iddetcompra= " . $modelokardex[$i]['idref'] . "   and idkardex <> " . $modelokardex[$i]['id']);
                         $rowsuma = Alentregas::model()->find($criteria);
                         $totalatendido = is_null($rowsuma) ? 0 : $rowsuma['sumatoria'];
                         ///esto es lo que se ha atendido
                         if ($totalatendido >= $modelodetoc->cant) {
                             $transaccion->rollback();
                             throw new CHttpException(500, 'Se produjo un error, esta poscionde pedido ya estaba atendida por completo');
                         } else {
                             if ($modelokardex[$i]['cant'] + $totalatendido > $modelodetoc->cant) {
                                 $transaccion->rollback();
                                 throw new CHttpException(500, 'Se produjo un error, con este ingreso se sobrepasa la cantidad comprada' . $totalatendido);
                             } else {
                                 if ($modelokardex[$i]['cant'] + $totalatendido < $modelodetoc->cant) {
                                     $modelodetoc->estadodetalle = '50';
                                     //atencion parcial
                                 } else {
                                     $modelodetoc->estadodetalle = '60';
                                     //atencion total
                                 }
                                 if (!$modelodetoc->save()) {
                                     $transaccion->rollback();
                                     throw new CHttpException(500, 'No se pudo grabar la actualizacion del detalle del pedido');
                                 }
                             }
                         }
                     }
                     /***************************************************************
                      *			ACTUALIZAR EL INVENTARIO TAMBIEN 
                      *              Datos a actualizar 
                      *				CANTIDAD , PRECIO , PONDERADO PRECIO UNITARIO
                      *				
                      ****************************************************************/
                     //la cantidad
                     $inventario = Alinventario::model()->find(" codalm=:almacencito and codart=:articulito and codcen=:centrito", array(":almacencito" => $model->codalmacen, ":articulito" => $modelokardex[$i]['codart'], ":centrito" => $model->codcentro));
                     if (!is_null($inventario)) {
                         //$inventario->codalm=$model->codalmacen;
                         //$inventario->codart=$model->codalmacen;
                         //$inventario->codcentro=$model->codcentro;
                         //$inventario->codmon=Yii->app()->params['monedadef'];
                         $inventario->um = $modelokardex[$i]['um'];
                         $inventario->cantlibre = $inventario->cantlibre + $modelokardex[$i]['cant'];
                         $inventario->punit = ($modelodetoc->punit * (1 - $descuento) * $conversion * $modelokardex[$i]['cant'] + ($inventario->cantlibre + $inventario->cantres) * $inventario->punit) / ($inventario->cantlibre + $inventario->cantres + $modelokardex[$i]['cant']);
                         $inventario->codmon = Yii::app()->params['monedadef'];
                     } else {
                         $inventario = new Alinventario();
                         $inventario->codalm = $model->codalmacen;
                         $inventario->codart = $modelokardex[$i]['codart'];
                         $inventario->codcen = $model->codcentro;
                         $inventario->codmon = Yii::app()->params['monedadef'];
                         $inventario->um = $modelokardex[$i]['um'];
                         $inventario->cantlibre = $modelokardex[$i]['cant'];
                         $inventario->canttran = 0;
                         $inventario->cantres = 0;
                     }
                     if (!$inventario->save()) {
                         $transaccion->rollback();
                         echo "hola" . $inventario->codalm . "--" . $inventario->codart . "--" . $inventario->codcen . "--" . $inventario->codmon . "--" . $inventario->um . "--" . $inventario->cantlibre;
                         throw new CHttpException(500, 'NO se pudieron actualizar los datos de inventario ' . $inventario->codalm . "--" . $inventario->codart . "--" . $inventario->codcen . "--" . $inventario->codmon . "--" . $inventario->um . "--" . $inventario->cantlibre);
                         //throw new CHttpException(500,'NO se pudieron actualizar los datos de inventario ');');
                     }
                     /*************************************
                      *
                      ************************************************************************/
                 }
             } else {
                 //si no enuentra kardex hijos
                 $transaccion->rollback();
                 throw new CHttpException(500, 'Se produjo un error , no se hallaron kardex hijos');
             }
             //fin de si encuentra kardex hijos
             /// debemos tambien de colcoar el status de cambio de estado al KARDEX
             $command = Yii::app()->db->createCommand(" UPDATE Alkardex set codestado='10' where hidvale=" . $model->id);
             $modelocompra->codestado = '60';
             if ($command->execute() > 0 and $modelocompra->save()) {
                 $transaccion->commit();
             } else {
                 $transaccion->rollback();
                 throw new CHttpException(500, 'Hubo un error inesperado al moemento de actualizar el kardex  ');
             }
             break;
         case '340':
             // Solicitud de pedido
             ///primero cambiamos el estado de los  kardex
             $command = Yii::app()->db->createCommand(" UPDATE alkardex  set codestado='10' , valido='1' where checki='1' and  hidvale=" . $model->id . " ");
             $command->execute();
             ///luego cambiamos el estado del vale
             $model->cestadovale = '20';
             $model->save();
             //actualizamos el estado de las solpe y desolpe
             $transaccion->commit();
             break;
         default:
             throw new CHttpException(500, 'Se ha tomado un codigo/documento que no es valido');
     }
 }
Пример #3
0
 /**
  * Creates a new model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  */
 public function actionCreate()
 {
     $model = new Maestrocompo();
     $model->valorespordefecto();
     // Uncomment the following line if AJAX validation is needed
     $this->performAjaxValidation($model);
     if (isset($_POST['Maestrocompo'])) {
         $model->attributes = $_POST['Maestrocompo'];
         $transaccion = $model->dbConnection->beginTransaction();
         if ($model->save()) {
             //actualizamos tambien las tablas inventario y maestrodetalle
             //inventario
             $centros = Centros::model()->findAll();
             foreach ($centros as $fila) {
                 $modeloporcentros = new Maestrodetallecentros();
                 $modeloporcentros->setAttributes(array('hcodart' => $model->codigo, 'codcen' => $fila->codcen, 'catvalor' => '', 'iqf' => '0'), true);
                 // var_dump($fila);
                 $modeloalmacenes = Almacenes::model()->findall("codcen=:vcdocen", array(":vcdocen" => $fila->codcen));
                 foreach ($modeloalmacenes as $filaalmacen) {
                     //$contact->setIsNewRecord(true);
                     $modeloinventario = new Alinventario();
                     $modelodetalle = new Maestrodetalle();
                     $modelodetalle->setAttributes(array('codart' => $model->codigo, 'codcentro' => $fila->codcen, 'codal' => $filaalmacen->codalm, 'codgrupoventas' => '001', 'canaldist' => '01', 'sujetolote' => '0', 'canteconomica' => 0, 'cantreposic' => 0, 'cantreorden' => 0, 'leadtime' => 0, 'controlprecio' => 'V'), true);
                     $modeloinventario->setAttributes(array('codart' => $model->codigo, 'codcen' => $fila->codcen, 'codalm' => $filaalmacen->codalm, 'cantlibre' => 0, 'canttran' => 0, 'cantres' => 0, 'ubicacion' => '', 'lote' => '', 'codmon' => Yii::app()->params['monedadef']), true);
                     //   var_dump($modeloinventario);
                     /*  echo "<br><br><br>";
                     		  var_dump($modelodetalle->attributes);
                     		  echo "<br><br><br>";*/
                     //  var_dump($modeloinventario->attributes);
                     if (!$modeloinventario->save() or !$modelodetalle->save()) {
                         $transaccion->rollback();
                         throw new CHttpException(404, 'No se pudieron grabar los datos detalles ');
                     } else {
                     }
                 }
                 //bucle de almacenes
                 if (!$modeloporcentros->save()) {
                     $transaccion->rollback();
                     throw new CHttpException(404, 'No se pudieron grabar los datos del modelo poR CENTROS ');
                 }
             }
             ///FIN DEL BUCLE CENTROS
             $transaccion->commit();
             Yii::app()->user->setFlash('success', "Se ha creado el material  " . $model->codigo);
         } else {
             /// SSI HUBO UN ERRRO AL GRANAR EL MATERIAL
             $transaccion->rollback();
             throw new CHttpException(404, 'No se pudieron grabar los datos del material ');
         }
         $this->redirect(array('update', 'id' => $model->codigo));
     }
     /// si no se puede grabar
     $this->render('create', array('model' => $model, 'habilitado' => ''));
 }