Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
7 сем / 3 / мисприс-2.3_1374_Наволоцкий_Зырянов_Харитонов.docx
Скачиваний:
19
Добавлен:
29.03.2025
Размер:
1.79 Mб
Скачать

4.8 Процедура, возвращающая список вариантов исполнения для данного типового изделия с конфигуратором:

функция: find_obj_variants - процедура, возвращающая список вариантов исполнения для данного типового изделия с конфигуратором

-- вход:

-- 1. obj_id_val - id продукции

-- выход: список вариантов исполнения для данного типового изделия с конфигуратором

-- эффекты:

-- 1. нет

-- требования:

-- 1. передаваемые аргументы должны существовать

def find_obj_variants(obj_id_val: int):

cursor.execute("""

SELECT id_category

FROM product

WHERE id = ?

""", (obj_id_val,))

row = cursor.fetchone()

if row is None:

raise Exception(f'объект с id={obj_id_val} не найден в таблице {PRODUCT_TABLE}')

id_category_val = row[0]

cursor.execute("""

SELECT configurable_type

FROM product

WHERE id = ?

""", (obj_id_val,))

if cursor.fetchone()[0] != 1:

raise Exception(f'объект с id={obj_id_val} не является типовым изделием с конфигуратором')

cursor.execute("""

SELECT id, product_name, product_name_short, id_category, configurable_type

FROM product

WHERE id_category = ? AND configurable_type = 2

""", (id_category_val,))

res = cursor.fetchall()

print(f'{res}')

return res

4.9 Процедура, создающая вариант исполнения по данному типовому изделию с конфигуратором:

функция: create_obj_variant - процедура, создающая вариант исполнения по данному типовому изделию с конфигуратором

-- вход:

-- 1. obj_id_val - id продукции

-- выход: созданный вариант исполнения

-- эффекты:

-- 1. создание варианта исполнения по данному типовому изделию с конфигуратором

-- требования:

-- 1. передаваемые аргументы должны существовать

def create_obj_variant(obj_id_val: int) -> int:

cursor.execute("""

SELECT configurable_type

FROM product

WHERE id = ?

""", (obj_id_val,))

row = cursor.fetchone()

cursor.execute("""

SELECT id_category

FROM product

WHERE id = ?

""", (obj_id_val,))

id_category = cursor.fetchone()

if id_category:

id_category = id_category[0]

if row is None or row[0] != 1:

raise Exception(f'Oбъект с id={obj_id_val} не является типовым изделием с конфигуратором')

cursor.execute("SELECT product_name, product_name_short FROM product WHERE id = ?", (obj_id_val,))

prod_names = cursor.fetchall()

product_name = prod_names[0][0]

product_name_short = prod_names[0][1]

cursor.execute("""

INSERT INTO product (product_name, product_name_short, configurable_type)

SELECT ?, ?, 2

FROM product WHERE id = ?

""", (product_name, product_name_short, obj_id_val))

new_obj_id = cursor.lastrowid

cursor.execute("""

UPDATE product

SET id_category = ?

WHERE id = ?

""", (id_category, new_obj_id))

cursor.execute("""

UPDATE prod_param

SET is_configurable = 0

WHERE prod_id = ?

""", (new_obj_id,))

conn.commit()

print(f'был создан новый вариант исполнения с именем - \"{product_name}\" c id={new_obj_id}')

return new_obj_id

Соседние файлы в папке 3