112 lines
5.5 KiB
Python
112 lines
5.5 KiB
Python
import sqlite3
|
||
from datetime import datetime, timedelta
|
||
|
||
def seed_demo_data(conn):
|
||
cursor = conn.cursor()
|
||
print("Наполнение базы данных демо-данными...")
|
||
|
||
# 1. Типы металлов
|
||
metals = [
|
||
("Золото", 585, 3500.0),
|
||
("Золото", 750, 4500.0),
|
||
("Серебро", 925, 85.0),
|
||
("Платина", 950, 2800.0),
|
||
]
|
||
cursor.executemany("INSERT INTO metal_types (name, purity, price_per_gram) VALUES (?, ?, ?)", metals)
|
||
|
||
cursor.execute("SELECT id, price_per_gram, purity FROM metal_types")
|
||
metal_data = cursor.fetchall()
|
||
gold_585_id = metal_data[0][0]
|
||
gold_750_id = metal_data[1][0]
|
||
silver_id = metal_data[2][0]
|
||
platinum_id = metal_data[3][0]
|
||
|
||
# 2. Продукция
|
||
products = [
|
||
(gold_585_id, "RNG-001", "Кольцо 'Классическое'", 3.5, 1.2, ""),
|
||
(gold_585_id, "RNG-002", "Кольцо 'Виктория'", 4.2, 1.5, "С бриллиантами"),
|
||
(gold_585_id, "EAR-001", "Серьги 'Капля'", 2.8, 1.5, ""),
|
||
(gold_750_id, "CHN-001", "Цепь 'Плетение'", 12.0, 1.0, "Длина 50 см"),
|
||
(gold_750_id, "PNT-001", "Подвеска 'Сердце'", 3.2, 1.3, ""),
|
||
(silver_id, "BRC-001", "Браслет 'Нежный'", 6.5, 1.3, ""),
|
||
(silver_id, "EAR-002", "Серьги 'Цветок'", 3.0, 1.2, ""),
|
||
(platinum_id, "RNG-003", "Кольцо 'Престиж'", 5.5, 2.0, "Эксклюзив"),
|
||
]
|
||
|
||
for p in products:
|
||
metal_row = next(m for m in metal_data if m[0] == p[0])
|
||
price = (metal_row[1] * p[3]) * (metal_row[2] / 1000) * p[4]
|
||
cursor.execute("""
|
||
INSERT INTO products (metal_type_id, sku, name, weight_grams, complexity_factor, calculated_price, description)
|
||
VALUES (?, ?, ?, ?, ?, ?, ?)
|
||
""", (p[0], p[1], p[2], p[3], p[4], round(price, 2), p[5]))
|
||
|
||
# 3. Партнеры
|
||
partners = [
|
||
("Ювелирный Дом 'Блеск'", "Иван Петров", "blisk@example.com", "+7 (495) 123-45-67", "Москва, ул. Цветная, д.1", "770123456789", 0),
|
||
("ИП Сидорова А.А.", "Анна Сидорова", "sidorova@example.com", "+7 (812) 765-43-21", "СПб, Невский пр., д.10", "781234567890", 0),
|
||
("Магазин 'Золотой Лотос'", "Сергей Иванов", "lotus@example.com", "+7 (383) 555-11-22", "Новосибирск, ул. Ленина, д.5", "540123456789", 0),
|
||
("Торговый Дом 'Алмаз'", "Елена Соколова", "almaz@example.com", "+7 (343) 222-33-44", "Екатеринбург, пр. Ленина, д.15", "660123456789", 0),
|
||
]
|
||
cursor.executemany("""
|
||
INSERT INTO partners (company_name, director_name, email, phone, legal_address, inn, total_sales)
|
||
VALUES (?, ?, ?, ?, ?, ?, ?)
|
||
""", partners)
|
||
|
||
# 4. Получаем ID для создания заявок
|
||
cursor.execute("SELECT id, company_name FROM partners")
|
||
partners_list = cursor.fetchall()
|
||
partner1_id = partners_list[0][0]
|
||
partner2_id = partners_list[1][0]
|
||
partner3_id = partners_list[2][0]
|
||
|
||
cursor.execute("SELECT id, calculated_price, name FROM products")
|
||
products_list = cursor.fetchall()
|
||
|
||
# 5. Создаем заявки
|
||
orders_data = [
|
||
(partner1_id, "ORD-001", datetime.now().strftime("%Y-%m-%d"), 0, 0, "Срочная поставка"),
|
||
(partner2_id, "ORD-002", (datetime.now() - timedelta(days=5)).strftime("%Y-%m-%d"), 0, 0, ""),
|
||
(partner3_id, "ORD-003", (datetime.now() - timedelta(days=15)).strftime("%Y-%m-%d"), 0, 0, "Пробная партия"),
|
||
]
|
||
|
||
order_ids = []
|
||
for o in orders_data:
|
||
cursor.execute("""
|
||
INSERT INTO orders (partner_id, order_number, order_date, discount_percent, total_amount, notes)
|
||
VALUES (?, ?, ?, ?, ?, ?)
|
||
""", o)
|
||
order_ids.append(cursor.lastrowid)
|
||
|
||
# 6. Позиции для заявок
|
||
items_data = [
|
||
# Заявка 1
|
||
[(order_ids[0], products_list[0][0], 2, products_list[0][1], 2*products_list[0][1]),
|
||
(order_ids[0], products_list[1][0], 1, products_list[1][1], 1*products_list[1][1])],
|
||
# Заявка 2
|
||
[(order_ids[1], products_list[2][0], 1, products_list[2][1], 1*products_list[2][1]),
|
||
(order_ids[1], products_list[3][0], 3, products_list[3][1], 3*products_list[3][1])],
|
||
# Заявка 3
|
||
[(order_ids[2], products_list[4][0], 2, products_list[4][1], 2*products_list[4][1]),
|
||
(order_ids[2], products_list[5][0], 1, products_list[5][1], 1*products_list[5][1])],
|
||
]
|
||
|
||
for items in items_data:
|
||
for item in items:
|
||
cursor.execute("""
|
||
INSERT INTO order_items (order_id, product_id, quantity, price_at_moment, line_total)
|
||
VALUES (?, ?, ?, ?, ?)
|
||
""", item)
|
||
|
||
# 7. Обновляем суммы заявок и total_sales партнеров
|
||
for i, order_id in enumerate(order_ids):
|
||
cursor.execute("SELECT SUM(line_total) FROM order_items WHERE order_id = ?", (order_id,))
|
||
total = cursor.fetchone()[0] or 0
|
||
cursor.execute("UPDATE orders SET total_amount = ? WHERE id = ?", (total, order_id))
|
||
|
||
partner_id = orders_data[i][0]
|
||
cursor.execute("UPDATE partners SET total_sales = total_sales + ? WHERE id = ?", (total, partner_id))
|
||
|
||
conn.commit()
|
||
print("Демо-данные успешно загружены.")
|