/**
  *
  * Edita una categoria de unidades.
  *
  * @param id_categoria_unidad_medida int ID de la categoria a editar.
  * @param activo int Nuevo status de la categoria. Si es null no se editara.
  * @param descripcion string Nueva descripcion de la categoria. Si es null no se editara.
  * @throws InvalidDatabaseOperationException si la categoria no existe.
  **/
 public static function EditarCategoriaUdm($id_categoria_unidad_medida, $activo = null, $descripcion = null)
 {
     Logger::log("Editando categoria unidad de medida " . $id_categoria_unidad_medida);
     $cat_unidad = CategoriaUnidadMedidaDAO::getByPK($id_categoria_unidad_medida);
     if (is_null($cat_unidad)) {
         throw new InvalidDatabaseOperationException("La categoria no existe", 1);
     }
     if (!is_null($activo)) {
         $cat_unidad->setActiva($activo);
     }
     if (!is_null($descripcion)) {
         $cat_unidad->setDescripcion($descripcion);
     }
     //se guardan los cambios
     DAO::transBegin();
     try {
         CategoriaUnidadMedidaDAO::save($cat_unidad);
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("No se pudo editar la categoria unidad de medida" . $id_categoria . ": " . $e);
         throw new Exception("No se pudo editar la categoria unidad de medida");
     }
     DAO::transEnd();
     Logger::log("Categoria Unidad de Medida editada exitosamente");
 }