/**
  *
  * Crea una nueva categoria para unidades.
  *
  * @param descripcion string Descripcion de la nueva categoria.
  * @param activo bool Status de la nueva categoria.
  * @throws BusinessLogicException si ya existe otra categoria con la misma descripcion.
  * @return id_categoria_unidad_medida int ID de la nueva categoria.
  **/
 public static function NuevaCategoriaUdm($descripcion, $activo = true)
 {
     Logger::log("Creando una nueva categoria unidad de medida....");
     if (empty($descripcion)) {
         throw new InvalidArgumentException("Descripcion vacía", 1);
     }
     //buscar esa descripcion de unidad
     $cat_udm = new CategoriaUnidadMedida(array("descripcion" => $descripcion));
     $n = CategoriaUnidadMedidaDAO::search($cat_udm);
     if (sizeof($n) > 0) {
         throw new BusinessLogicException("Ya existe esta descripcion");
     }
     if (is_null($activo)) {
         $activo = true;
     }
     $cat_udm->setActiva($activo);
     DAO::transBegin();
     try {
         CategoriaUnidadMedidaDAO::save($cat_udm);
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("No se pudo crear la categoria unidad de medida: " . $e);
         throw new Exception("No se pudo crear la categoria unidad de medida");
     }
     DAO::transEnd();
     Logger::log("Categoria Unidad de Medida creada exitosamente");
     return array("id_categoria_unidad_medida" => (int) $cat_udm->getIdCategoriaUnidadMedida());
 }