118 lines
4.3 KiB
Python
118 lines
4.3 KiB
Python
|
import os
|
|||
|
from dotenv import load_dotenv
|
|||
|
from peewee import *
|
|||
|
|
|||
|
|
|||
|
load_dotenv()
|
|||
|
|
|||
|
DATABASE = os.getenv("DATABASE")
|
|||
|
DB_HOST = os.getenv("DB_HOST")
|
|||
|
USERS = os.getenv("USERS")
|
|||
|
PASSW = os.getenv("PASSW")
|
|||
|
|
|||
|
|
|||
|
db = MySQLDatabase(
|
|||
|
database=DATABASE, user=USERS, password=PASSW, host=DB_HOST, port=3306
|
|||
|
)
|
|||
|
|
|||
|
|
|||
|
class Product(Model):
|
|||
|
product_id = AutoField(primary_key=True)
|
|||
|
name = CharField()
|
|||
|
sku = CharField(unique=True)
|
|||
|
price = DecimalField()
|
|||
|
|
|||
|
class Meta:
|
|||
|
database = db
|
|||
|
|
|||
|
|
|||
|
class EpicenterOrder(Model):
|
|||
|
order_number = CharField(unique=True)
|
|||
|
order_id = CharField(unique=True)
|
|||
|
products = ManyToManyField(Product, backref="epicenter_orders")
|
|||
|
order_status = CharField()
|
|||
|
order_creation_date = DateTimeField()
|
|||
|
full_name = CharField()
|
|||
|
email = CharField()
|
|||
|
phone_number = CharField()
|
|||
|
delivery_address = CharField()
|
|||
|
delivery_post_number = CharField()
|
|||
|
delivery_ref = CharField()
|
|||
|
settlement = CharField()
|
|||
|
amount = DecimalField()
|
|||
|
ttn = CharField(null=True)
|
|||
|
|
|||
|
class Meta:
|
|||
|
database = db
|
|||
|
|
|||
|
|
|||
|
class EpicenterOrderProduct(Model):
|
|||
|
epicenter_order = ForeignKeyField(EpicenterOrder)
|
|||
|
product = ForeignKeyField(Product)
|
|||
|
quantity = IntegerField()
|
|||
|
|
|||
|
class Meta:
|
|||
|
database = db
|
|||
|
|
|||
|
|
|||
|
class CancelReason(Model):
|
|||
|
name = CharField()
|
|||
|
ukr_description = CharField()
|
|||
|
|
|||
|
class Meta:
|
|||
|
database = db
|
|||
|
|
|||
|
|
|||
|
# db.create_tables([EpicenterOrder, Product, EpicenterOrderProduct, CancelReason])
|
|||
|
# db.close()
|
|||
|
|
|||
|
|
|||
|
# run when you lost cancelreason table
|
|||
|
def insert_cancel_reasons(reasons_dict):
|
|||
|
try:
|
|||
|
# Connect to the database
|
|||
|
db.connect()
|
|||
|
|
|||
|
# Create the table if it doesn't exist
|
|||
|
db.create_tables([CancelReason])
|
|||
|
|
|||
|
# Insert data into the table
|
|||
|
with db.atomic():
|
|||
|
for key, value in reasons_dict.items():
|
|||
|
CancelReason.create(name=key, ukr_description=value)
|
|||
|
|
|||
|
# Close the database connection
|
|||
|
db.close()
|
|||
|
print("Data insertion successful.")
|
|||
|
|
|||
|
except Exception as e:
|
|||
|
print(f"Error: {e}")
|
|||
|
|
|||
|
|
|||
|
# customer_cancel_reasons = {
|
|||
|
# "customer_account_payment_with_vat_is_preferred": "Хотів сплатити на Р/Р (з ПДВ)",
|
|||
|
# "customer_account_payment_without_vat_is_preferred": "Хотів сплатити на Р/Р (без ПДВ)",
|
|||
|
# "customer_bought_elsewhere_as_a_gift": "Купив в іншому місці/подарували",
|
|||
|
# "customer_canceled_at_delivery_office": "Відмова у відділенні",
|
|||
|
# "customer_changed_mind": "Потрібна була консультація",
|
|||
|
# "customer_credit_card_payment_is_preferred": "Хотів сплатити карткою",
|
|||
|
# "customer_delivery_speed_too_slow": "Не влаштували терміни доставки",
|
|||
|
# "customer_dissatisfied_with_the_shipping_cost": "Не влаштувала ціна доставки",
|
|||
|
# "customer_epic_warranty_is_preferred": "Вже купив в Епіцентрі",
|
|||
|
# "customer_found_cheaper": "Не влаштувала ціна товару",
|
|||
|
# "customer_get_loan_is_preferred_payment_type": "Хотів оформити розтермінування/кредит",
|
|||
|
# "customer_long_merchant_confirmation": "Тривале підтвердження",
|
|||
|
# "customer_no_payment": "Не вдалося оплатити на сайті",
|
|||
|
# "customer_not_timely_confirmation_of_the_availability_of_goods": "Немає в наявності",
|
|||
|
# "customer_order_duplicate": "Помилково оформив кілька замовлень",
|
|||
|
# "customer_prepayment_required": "Потрібна передоплата",
|
|||
|
# "customer_price_obsoleted": "Ціна неактуальна",
|
|||
|
# "customer_product_characteristics_are_not_suitable": "Товар не підходить за характеристиками",
|
|||
|
# "customer_requires_advance_payment_which_is_not_indicated_on_the_website": "Вимагають передоплату, про яку не інформує сайт",
|
|||
|
# "customer_several_packages_delivery_payment_is_not_suitable": "Хотів доставку одним замовленням",
|
|||
|
# "customer_shop_pickup_preferred_delivery_price_too_high": "Хотів забрати з пунктів самовивозу",
|
|||
|
# "customer_test": "Тест",
|
|||
|
# }
|
|||
|
|
|||
|
# insert_cancel_reasons(customer_cancel_reasons)
|