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