public function actionUpdateingresatraslado($id)
 {
     $codigomovimiento = '78';
     $model = $this->loadModel($id);
     $model->setscenario("traspaso");
     /*print_r($model);
     		yii::app()->end();*/
     if (isset($_POST['Almacendocs'])) {
         $model->attributes = $_POST['Almacendocs'];
         $model->cestadovale = '20';
         $transaccion = $model->dbConnection->beginTransaction();
         if ($model->save()) {
             $mensa = "";
             $registroshijos = $this->devuelvehijos($model->id);
             foreach ($registroshijos as $row) {
                 $modeloinventario = $this->actualizainventario($row);
                 //ahora toca actualizar el inventario del almacen emisor para bajar el stock en transito
                 $inventarioemisor = Alkardex::model()->findByPk($row->idref)->alkardex_alinventario;
                 $inventarioemisor->canttran = $inventarioemisor->canttran - $row->cant;
                 if ($inventarioemisor->canttran < 0) {
                     $mensa .= "  El material " . $row->codart . " :  Esta intentado ingresar una cantidad que sobrepasa a lo que hay en transito <br>";
                 }
                 $inventarioemisor->setScenario('modificacantidad');
                 //ahora registramos las entgrgas en la tabla puente
                 $entrega = new Alkardextraslado();
                 $entrega->hidkardexemi = $row->idref;
                 $entrega->hidkardexdes = $row->id;
                 $entrega->cant = $row->cant;
                 $entrega->codestado = '10';
                 $entrega->save();
                 if (!$inventarioemisor->save()) {
                     $mensa .= "Error al momento de actualizar el stock de transito del almacen emisor " . $row->codart;
                 }
                 $row->setScenario('cambioestado');
                 $row->valido = '1';
                 $row->codestado = '10';
                 if (!$row->save()) {
                     $mensa .= "Error al momento de cambiar el estado del Kardex del material " . $row->codart;
                 }
             }
             //fon del for
             if (strlen($mensa) == 0) {
                 //Si s epudo actualziar
                 $transaccion->commit();
                 Yii::app()->user->setFlash('success', "Se genero  el documento!" . $mensa);
                 $this->render('update', array('model' => $model, 'movimiento' => $movimiento));
                 yii::app()->end();
             } else {
                 $transaccion->rollback();
                 Yii::app()->user->setFlash('error', "No se pudo grabar el documento, hay  errores  :" . $mensa);
                 $model->refresh();
                 $this->render('update', array('model' => $model, 'movimiento' => $movimiento));
                 yii::app()->end();
             }
         } else {
             //7En caso de que no se haya grabado el domcumento cabecera
             $transaccion->rollback();
             Yii::app()->user->setFlash('error', "No se pudo grabar el documento, hay  errores  en la cebecera :" . $mensa);
             $model->refresh();
             $this->render('update', array('model' => $model, 'movimiento' => $movimiento));
         }
     } else {
         $movimiento = '78';
         /*$itemsremitidos = Alkardex::model()->findAllBySql(" select   t.id, t.codart,t.um,t.codcentro, t.cant,t.alemi,t.codcendes,t.preciounit from
         		".Yii::app()->params['prefijo']."alkardex t
         		 where
         		 t.codmov='77' and
         		 t.codestado <> '99' and
         		 t.valido = '1' and
         		 t.codcentro='".$model->codcendestino."' and
         		  t.alemi='".$model->codaldestino."'");*/
         $itemsremitidos = Alkardex::model()->findAllBySql("\n \t\t\t\t\t\t\t\t\tselect t.id, t.codart,t.um,t.codcentro, t.cant,t.alemi,t.codcendes,t.preciounit , sum(x.cant) as sumita\n \t\t\t\t\t\t\t\t\t from\n \t\t\t\t\t\t\t\t\t " . Yii::app()->params['prefijo'] . "alkardex t\n \t\t\t\t\t\t\t\t\tLEFT JOIN " . Yii::app()->params['prefijo'] . "alkardextraslado x ON t.id=x.hidkardexemi\n \t\t\t\t\t\t\t\t\twhere\n \t\t\t\t\t\t\t\t\t                             t.codmov='77' and\n  \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t t.codestado <> '99' and\n  \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t t.valido = '1' and\n  \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t t.codcentro='" . $model->codcendestino . "' and\n  \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  t.alemi='" . $model->codaldestino . "'  and\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tt.codestado='10'\n \t\t\t\t\t\t\t\t\tgroup by t.id, t.codart,t.um,t.codcentro, t.cant,t.alemi,t.codcendes,t.preciounit\n \t\t\t\t\t\t\t\t\tHAVING sum(x.cant) < t.cant or sum(x.cant) is null ");
         if (count($itemsremitidos) == 0) {
             throw new CHttpException(500, 'Para el centro ' . $model->codcendestino . ' y almacen  ' . $model->codaldestino . ' indicados como emisores no existen items trasladados');
         } else {
             foreach ($itemsremitidos as $row) {
                 if ($row->alkardex_alkardextraslado_emisor_cant < $row->cant and !isset($_GET['ajax'])) {
                     //solo si se aun no se han completado las cantidades agregar
                     $modelokardex = new Alkardex();
                     $modelokardex->setscenario('ingresotraspaso');
                     $modelokardex->codmov = $codigomovimiento;
                     $modelokardex->hidvale = $model->id;
                     $modelokardex->codart = $row->codart;
                     $modelokardex->alemi = $model->codalmacen;
                     $modelokardex->codcentro = $model->codcentro;
                     $modelokardex->fecha = $model->fechacont;
                     $modelokardex->fechadoc = $model->fechavale;
                     $modelokardex->codocuref = '101';
                     //detalle solpe
                     //$modelokardex->numdocref=$model->numdocref;	//numero de la solpe
                     $modelokardex->um = $row->um;
                     //La misma unidad no nos compliqemos con conerswiones
                     $modelokardex->idref = $row->id;
                     //el id del kardex emisor
                     $modelokardex->preciounit = $row->preciounit;
                     echo " <br><br><br><br><br> el precio unitario pasado del kardex " . $row->id . "   es    : " . $row->preciounit . "<br>";
                     $modelokardex->cant = abs($row->cant - $row->alkardex_alkardextraslado_emisor_cant);
                     //la mism acantida dx defaul si no la puede cambiar por una menor, si llega x partes
                     if (!$modelokardex->save()) {
                         throw new CHttpException(500, 'no grabo');
                     }
                 }
             }
         }
     }
     ////////////////////
     $this->render('update', array('model' => $model, 'movimiento' => $movimiento));
 }
Beispiel #2
0
 public static function InsertaAlkardexTraslado($idkardex, $cantidad)
 {
     $row = self::CargaModelo('Alkardex', $idkardex);
     $model = new Alkardextraslado();
     $model->cant = $cantidad;
     //Ojo es la cantidad del kardex destino no del origen
     $model->hidkardexemi = $row->id;
     // self::Mensaje('notice','')
     // $model->hidkardexdes=$row->id; ///Es del destino
     $model->codestado = Alkardextraslado::ESTADO_CREADO;
     if (!$model->save()) {
         echo "<br><br><br><br>";
         print_r($model->geterrors());
         throw new CHttpException(500, "NO se Pudo insertar el registro de traslados ");
     }
     self::Mensaje('notice', ' sE GRABO EL REGISTRO DE ALKARDEXTRASLADO ' . $model->id);
     unset($model);
     unset($row);
 }