From 6b1aeb9594cc07b2823c8682ef18c0dfd2277352 Mon Sep 17 00:00:00 2001 From: Not Huts Date: Tue, 21 Apr 2026 09:40:32 +0500 Subject: [PATCH] Add files via upload --- README.md | 4 + app.py | 432 ++++++++++++++++++++++++++ data/categories.xlsx | Bin 0 -> 9057 bytes data/partners.xlsx | Bin 0 -> 9227 bytes data/products.xlsx | Bin 0 -> 9881 bytes init_db.py | 123 ++++++++ instance/warehouse.db | Bin 0 -> 36864 bytes reset_db.py | 94 ++++++ static/css/style.css | 262 ++++++++++++++++ static/images/5294256562463512548.jpg | Bin 0 -> 101870 bytes templates/base.html | 47 +++ templates/categories.html | 37 +++ templates/category_detail.html | 43 +++ templates/category_form.html | 39 +++ templates/index.html | 52 ++++ templates/order_detail.html | 68 ++++ templates/order_form.html | 353 +++++++++++++++++++++ templates/partner_detail.html | 76 +++++ templates/partner_form.html | 89 ++++++ templates/partners.html | 46 +++ templates/product_form.html | 98 ++++++ templates/products.html | 58 ++++ 22 files changed, 1921 insertions(+) create mode 100644 README.md create mode 100644 app.py create mode 100644 data/categories.xlsx create mode 100644 data/partners.xlsx create mode 100644 data/products.xlsx create mode 100644 init_db.py create mode 100644 instance/warehouse.db create mode 100644 reset_db.py create mode 100644 static/css/style.css create mode 100644 static/images/5294256562463512548.jpg create mode 100644 templates/base.html create mode 100644 templates/categories.html create mode 100644 templates/category_detail.html create mode 100644 templates/category_form.html create mode 100644 templates/index.html create mode 100644 templates/order_detail.html create mode 100644 templates/order_form.html create mode 100644 templates/partner_detail.html create mode 100644 templates/partner_form.html create mode 100644 templates/partners.html create mode 100644 templates/product_form.html create mode 100644 templates/products.html diff --git a/README.md b/README.md new file mode 100644 index 0000000..619899d --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +умма заказов Скидка +от 10 000 ₽ 5% +от 20 000 ₽ 10% +от 50 000 ₽ 20% \ No newline at end of file diff --git a/app.py b/app.py new file mode 100644 index 0000000..5db317c --- /dev/null +++ b/app.py @@ -0,0 +1,432 @@ +# -*- coding: utf-8 -*- +import os +from datetime import datetime +from flask import Flask, render_template, request, redirect, url_for, flash +from flask_sqlalchemy import SQLAlchemy +from flask_migrate import Migrate +import pandas as pd + +app = Flask(__name__) +app.config['SECRET_KEY'] = 'mint-warehouse-secret-key-2025' +BASE_DIR = os.path.abspath(os.path.dirname(__file__)) +app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(BASE_DIR, 'instance', 'warehouse.db') +app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False + +db = SQLAlchemy(app) +migrate = Migrate(app, db) + +# ========== МОДЕЛИ ========== + +class Partner(db.Model): + __tablename__ = 'partners' + __table_args__ = {'extend_existing': True} + + id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.String(255), nullable=False) + short_name = db.Column(db.String(100)) + partner_type = db.Column(db.String(50)) + director = db.Column(db.String(255)) + phone = db.Column(db.String(50)) + discount = db.Column(db.Numeric(5, 2), default=0.00) + total_orders_sum = db.Column(db.Numeric(12, 2), default=0.00) + actual_address = db.Column(db.Text) + legal_address = db.Column(db.Text) + + orders = db.relationship('Order', backref='partner', lazy=True) + + # ДОБАВЬТЕ ЭТОТ МЕТОД + def calculate_discount(self): + """Расчёт скидки на основе суммы заказов""" + total = float(self.total_orders_sum) if self.total_orders_sum else 0 + if total >= 50000: + return 20 + elif total >= 20000: + return 10 + elif total >= 10000: + return 5 + else: + return 0 + + def update_discount(self): + """Обновить скидку партнёра""" + self.discount = self.calculate_discount() + + def __repr__(self): + return f'' +class ProductCategory(db.Model): + __tablename__ = 'product_categories' + __table_args__ = {'extend_existing': True} + + id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.String(255), nullable=False, unique=True) + description = db.Column(db.Text) + + products = db.relationship('Product', backref='category', lazy=True) + + def __repr__(self): + return f'' + +class Product(db.Model): + __tablename__ = 'products' + __table_args__ = {'extend_existing': True} + + id = db.Column(db.Integer, primary_key=True) + article = db.Column(db.String(50), unique=True, nullable=False) + name = db.Column(db.String(255), nullable=False) + commercial_name = db.Column(db.String(255)) + unit = db.Column(db.String(20), default='шт') + base_price = db.Column(db.Numeric(10, 2), nullable=False) + excise_tax = db.Column(db.Numeric(10, 2), default=0.00) + license_fee = db.Column(db.Numeric(10, 2), default=0.00) + is_alcohol = db.Column(db.Boolean, default=False) + alcohol_content = db.Column(db.Numeric(5, 2), nullable=True) + volume = db.Column(db.Numeric(10, 3), nullable=True) + category_id = db.Column(db.Integer, db.ForeignKey('product_categories.id'), nullable=False) + + order_items = db.relationship('OrderItem', backref='product', lazy=True) + + def __repr__(self): + return f'' + +class Order(db.Model): + __tablename__ = 'orders' + __table_args__ = {'extend_existing': True} + + id = db.Column(db.Integer, primary_key=True) + order_number = db.Column(db.String(50), unique=True, nullable=False) + date_created = db.Column(db.DateTime, default=datetime.now) + partner_id = db.Column(db.Integer, db.ForeignKey('partners.id'), nullable=False) + + items = db.relationship('OrderItem', backref='order', lazy=True, cascade='all, delete-orphan') + + def calculate_total(self): + total = 0 + for item in self.items: + total += item.calculate_subtotal() + return round(total, 2) + + def __repr__(self): + return f'' +class OrderItem(db.Model): + __tablename__ = 'order_items' + __table_args__ = {'extend_existing': True} + + id = db.Column(db.Integer, primary_key=True) + quantity = db.Column(db.Numeric(10, 3), nullable=False) + price_per_unit = db.Column(db.Numeric(10, 2), nullable=False) + order_id = db.Column(db.Integer, db.ForeignKey('orders.id'), nullable=False) + product_id = db.Column(db.Integer, db.ForeignKey('products.id'), nullable=False) + + def calculate_subtotal(self): + base = float(self.price_per_unit) * float(self.quantity) + discount = float(self.order.partner.discount) if self.order and self.order.partner else 0 + discounted_base = base * (1 - discount / 100) + excise = float(self.product.excise_tax) * float(self.quantity) + license = float(self.product.license_fee) * float(self.quantity) + return round(discounted_base + excise + license, 2) + + def __repr__(self): + return f'' + def calculate_subtotal(self): + base = float(self.price_per_unit) * float(self.quantity) + # Скидка берётся из партнёра (уже накопительная) + discount = float(self.order.partner.discount) if self.order and self.order.partner else 0 + discounted_base = base * (1 - discount / 100) + excise = float(self.product.excise_tax) * float(self.quantity) + license = float(self.product.license_fee) * float(self.quantity) + return round(discounted_base + excise + license, 2) +# ========== МАРШРУТЫ ========== + +@app.route('/') +def index(): + orders = Order.query.order_by(Order.date_created.desc()).all() + return render_template('index.html', orders=orders) + +@app.route('/products') +def products(): + products = Product.query.all() + categories = ProductCategory.query.all() + return render_template('products.html', products=products, categories=categories) + +@app.route('/product/new', methods=['GET', 'POST']) +def new_product(): + if request.method == 'POST': + try: + product = Product( + article=request.form['article'], + name=request.form['name'], + commercial_name=request.form.get('commercial_name', ''), + unit=request.form.get('unit', 'шт'), + base_price=float(request.form['base_price']), + excise_tax=float(request.form.get('excise_tax', 0)), + license_fee=float(request.form.get('license_fee', 0)), + is_alcohol='is_alcohol' in request.form, + alcohol_content=float(request.form['alcohol_content']) if request.form.get('alcohol_content') else None, + volume=float(request.form['volume']) if request.form.get('volume') else None, + category_id=int(request.form['category_id']) + ) + db.session.add(product) + db.session.commit() + flash(f'✅ Товар "{product.name}" добавлен!', 'success') + return redirect(url_for('products')) + except Exception as e: + flash(f'❌ Ошибка: {str(e)}', 'error') + db.session.rollback() + + categories = ProductCategory.query.all() + return render_template('product_form.html', product=None, categories=categories) + +@app.route('/product/edit/', methods=['GET', 'POST']) +def edit_product(id): + product = Product.query.get_or_404(id) + + if request.method == 'POST': + try: + product.article = request.form['article'] + product.name = request.form['name'] + product.commercial_name = request.form.get('commercial_name', '') + product.unit = request.form.get('unit', 'шт') + product.base_price = float(request.form['base_price']) + product.excise_tax = float(request.form.get('excise_tax', 0)) + product.license_fee = float(request.form.get('license_fee', 0)) + product.is_alcohol = 'is_alcohol' in request.form + product.alcohol_content = float(request.form['alcohol_content']) if request.form.get('alcohol_content') else None + product.volume = float(request.form['volume']) if request.form.get('volume') else None + product.category_id = int(request.form['category_id']) + + db.session.commit() + flash(f'✅ Товар "{product.name}" обновлен!', 'success') + return redirect(url_for('products')) + except Exception as e: + flash(f'❌ Ошибка: {str(e)}', 'error') + db.session.rollback() + + categories = ProductCategory.query.all() + return render_template('product_form.html', product=product, categories=categories) + +@app.route('/product/delete/') +def delete_product(id): + product = Product.query.get_or_404(id) + + if product.order_items: + flash(f'❌ Нельзя удалить товар "{product.name}", он используется в заявках!', 'error') + return redirect(url_for('products')) + + db.session.delete(product) + db.session.commit() + flash(f'✅ Товар "{product.name}" удален!', 'success') + return redirect(url_for('products')) + +@app.route('/partners') +def partners(): + partners = Partner.query.all() + return render_template('partners.html', partners=partners) + +@app.route('/partner/new', methods=['GET', 'POST']) +def new_partner(): + if request.method == 'POST': + try: + partner = Partner( + name=request.form['name'], + short_name=request.form.get('short_name', ''), + partner_type=request.form.get('partner_type', ''), + director=request.form.get('director', ''), + phone=request.form.get('phone', ''), + discount=float(request.form.get('discount', 0)), + actual_address=request.form.get('actual_address', ''), + legal_address=request.form.get('legal_address', '') + ) + db.session.add(partner) + db.session.commit() + flash(f'✅ Партнер "{partner.name}" добавлен!', 'success') + return redirect(url_for('partners')) + except Exception as e: + flash(f'❌ Ошибка: {str(e)}', 'error') + db.session.rollback() + + return render_template('partner_form.html', partner=None) + +@app.route('/partner/edit/', methods=['GET', 'POST']) +def edit_partner(id): + partner = Partner.query.get_or_404(id) + + if request.method == 'POST': + try: + partner.name = request.form['name'] + partner.short_name = request.form.get('short_name', '') + partner.partner_type = request.form.get('partner_type', '') + partner.director = request.form.get('director', '') + partner.phone = request.form.get('phone', '') + partner.discount = float(request.form.get('discount', 0)) + partner.actual_address = request.form.get('actual_address', '') + partner.legal_address = request.form.get('legal_address', '') + + db.session.commit() + flash(f'✅ Партнер "{partner.name}" обновлен!', 'success') + return redirect(url_for('partners')) + except Exception as e: + flash(f'❌ Ошибка: {str(e)}', 'error') + db.session.rollback() + + return render_template('partner_form.html', partner=partner) + +@app.route('/partner/delete/') +def delete_partner(id): + partner = Partner.query.get_or_404(id) + + if partner.orders: + flash(f'❌ Нельзя удалить партнера "{partner.name}", у него есть заявки!', 'error') + return redirect(url_for('partners')) + + db.session.delete(partner) + db.session.commit() + flash(f'✅ Партнер "{partner.name}" удален!', 'success') + return redirect(url_for('partners')) + +@app.route('/partner/') +def partner_detail(id): + partner = Partner.query.get_or_404(id) + orders = Order.query.filter_by(partner_id=id).order_by(Order.date_created.desc()).all() + return render_template('partner_detail.html', partner=partner, orders=orders) + +@app.route('/categories') +def categories(): + categories = ProductCategory.query.all() + return render_template('categories.html', categories=categories) + +@app.route('/category/new', methods=['GET', 'POST']) +def new_category(): + if request.method == 'POST': + try: + category = ProductCategory( + name=request.form['name'], + description=request.form.get('description', '') + ) + db.session.add(category) + db.session.commit() + flash('✅ Категория добавлена!', 'success') + return redirect(url_for('categories')) + except Exception as e: + flash(f'❌ Ошибка: {str(e)}', 'error') + db.session.rollback() + + return render_template('category_form.html', category=None) + +@app.route('/category/edit/', methods=['GET', 'POST']) +def edit_category(id): + category = ProductCategory.query.get_or_404(id) + + if request.method == 'POST': + try: + category.name = request.form['name'] + category.description = request.form.get('description', '') + db.session.commit() + flash('✅ Категория обновлена!', 'success') + return redirect(url_for('categories')) + except Exception as e: + flash(f'❌ Ошибка: {str(e)}', 'error') + db.session.rollback() + + return render_template('category_form.html', category=category) + +@app.route('/category/delete/') +def delete_category(id): + category = ProductCategory.query.get_or_404(id) + + if category.products: + flash('❌ Нельзя удалить категорию, в которой есть товары!', 'error') + return redirect(url_for('categories')) + + db.session.delete(category) + db.session.commit() + flash('✅ Категория удалена!', 'success') + return redirect(url_for('categories')) + +@app.route('/category/') +def category_detail(id): + category = ProductCategory.query.get_or_404(id) + products = Product.query.filter_by(category_id=id).all() + return render_template('category_detail.html', category=category, products=products) + +@app.route('/order/new', methods=['GET', 'POST']) +def new_order(): + if request.method == 'POST': + try: + # Генерация номера заявки + last_order = Order.query.order_by(Order.id.desc()).first() + if last_order: + last_num = int(last_order.order_number.split('-')[-1]) + new_num = last_num + 1 + else: + new_num = 1 + + order_number = f"ZAK-{datetime.now().strftime('%Y%m')}-{new_num:04d}" + + # Создаём заявку + order = Order( + order_number=order_number, + partner_id=int(request.form['partner_id']) + ) + db.session.add(order) + db.session.flush() + + # Добавляем позиции + product_ids = request.form.getlist('product_id[]') + quantities = request.form.getlist('quantity[]') + prices = request.form.getlist('price[]') + + for i in range(len(product_ids)): + if product_ids[i] and quantities[i] and float(quantities[i]) > 0: + item = OrderItem( + order_id=order.id, + product_id=int(product_ids[i]), + quantity=float(quantities[i]), + price_per_unit=float(prices[i]) + ) + db.session.add(item) + + # Сохраняем заявку + db.session.commit() + + # ========== ОБНОВЛЯЕМ СУММУ ЗАКАЗОВ ПАРТНЁРА ========== + partner = Partner.query.get(order.partner_id) + if partner: + # Получаем все заявки партнёра + all_orders = Order.query.filter_by(partner_id=partner.id).all() + total_sum = 0 + for o in all_orders: + total_sum += o.calculate_total() + + # Обновляем сумму и скидку + partner.total_orders_sum = total_sum + partner.discount = partner.calculate_discount() + db.session.commit() + + print(f"📊 Партнёр {partner.name}: сумма заказов = {total_sum:.2f} ₽, скидка = {partner.discount}%") + + flash(f'✅ Заявка {order_number} создана!', 'success') + return redirect(url_for('index')) + + except Exception as e: + flash(f'❌ Ошибка: {str(e)}', 'error') + db.session.rollback() + + partners = Partner.query.all() + products = Product.query.all() + return render_template('order_form.html', partners=partners, products=products, order=None) +@app.route('/order/') +def order_detail(id): + order = Order.query.get_or_404(id) + return render_template('order_detail.html', order=order) + +@app.route('/order/delete/') +def delete_order(id): + order = Order.query.get_or_404(id) + db.session.delete(order) + db.session.commit() + flash('✅ Заявка удалена!', 'success') + return redirect(url_for('index')) + +if __name__ == '__main__': + print("🚀 Запуск АлкоСклад...") + app.run(debug=True, host='0.0.0.0') \ No newline at end of file diff --git a/data/categories.xlsx b/data/categories.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..824cafb3e2e9adcb8090dabf82aaa1aee7e3d352 GIT binary patch literal 9057 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 DLX@rG literal 0 HcmV?d00001 diff --git a/data/partners.xlsx b/data/partners.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..06d425f6bd276d68c866470dfdbf2b2f5edd2c9b GIT binary patch literal 9227 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 literal 0 HcmV?d00001 diff --git a/init_db.py b/init_db.py new file mode 100644 index 0000000..b2abb09 --- /dev/null +++ b/init_db.py @@ -0,0 +1,123 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" +Скрипт для создания базы данных и загрузки начальных данных из Excel +Запуск: python init_db.py +""" + +import os +import pandas as pd +from app import app, db +from app import Partner, ProductCategory, Product, Order, OrderItem + +with app.app_context(): + print("=" * 50) + print("ИНИЦИАЛИЗАЦИЯ БАЗЫ ДАННЫХ") + print("=" * 50) + + # Создаём папку instance, если её нет + if not os.path.exists('instance'): + os.makedirs('instance') + print("✅ Папка instance создана") + + # Создаём таблицы + print("\n1. Создание таблиц...") + db.create_all() + print(" ✅ Таблицы созданы") + + # Проверяем, есть ли уже данные + if ProductCategory.query.count() > 0: + print("\n⚠️ Таблицы уже содержат данные!") + response = input("Удалить все данные и загрузить заново? (y/n): ") + if response.lower() != 'y': + print("❌ Операция отменена") + exit() + + # Очищаем таблицы + print("\n2. Очистка существующих данных...") + OrderItem.query.delete() + Order.query.delete() + Product.query.delete() + Partner.query.delete() + ProductCategory.query.delete() + db.session.commit() + print(" ✅ Данные очищены") + + # Загружаем категории + print("\n3. Загрузка категорий...") + try: + df = pd.read_excel('data/categories.xlsx') + for _, row in df.iterrows(): + cat = ProductCategory( + id=int(row['id']), + name=row['name'], + description=row.get('description', '') + ) + db.session.add(cat) + db.session.commit() + print(f" ✅ Добавлено {len(df)} категорий") + except Exception as e: + print(f" ❌ Ошибка: {e}") + + # Загружаем партнёров + print("\n4. Загрузка партнёров...") + try: + df = pd.read_excel('data/partners.xlsx') + for _, row in df.iterrows(): + partner = Partner( + id=int(row['id']), + name=row['name'], + short_name=row.get('short_name', ''), + partner_type=row.get('partner_type', ''), + director=row.get('director', ''), + phone=row.get('phone', ''), + discount=float(row.get('discount', 0)), + total_orders_sum=0, # Начальная сумма заказов + actual_address=row.get('actual_address', ''), + legal_address=row.get('legal_address', '') + ) + db.session.add(partner) + db.session.commit() + print(f" ✅ Добавлено {len(df)} партнёров") + except Exception as e: + print(f" ❌ Ошибка: {e}") + + # Загружаем товары + print("\n5. Загрузка товаров...") + try: + df = pd.read_excel('data/products.xlsx') + # Преобразуем числовые поля + df['alcohol_content'] = pd.to_numeric(df['alcohol_content'], errors='coerce') + df['volume'] = pd.to_numeric(df['volume'], errors='coerce') + + for _, row in df.iterrows(): + product = Product( + id=int(row['id']), + article=row['article'], + name=row['name'], + commercial_name=row.get('commercial_name', ''), + unit=row.get('unit', 'шт'), + base_price=float(row['base_price']), + excise_tax=float(row.get('excise_tax', 0)), + license_fee=float(row.get('license_fee', 0)), + is_alcohol=bool(int(row.get('is_alcohol', 0))), + alcohol_content=float(row['alcohol_content']) if pd.notna(row['alcohol_content']) else None, + volume=float(row['volume']) if pd.notna(row['volume']) else None, + category_id=int(row['category_id']) + ) + db.session.add(product) + db.session.commit() + print(f" ✅ Добавлено {len(df)} товаров") + except Exception as e: + print(f" ❌ Ошибка: {e}") + + # Показываем статистику + print("\n" + "=" * 50) + print("СТАТИСТИКА") + print("=" * 50) + print(f"Категорий: {ProductCategory.query.count()}") + print(f"Партнёров: {Partner.query.count()}") + print(f"Товаров: {Product.query.count()}") + print(f"Заявок: {Order.query.count()}") + + print("\n✅ База данных успешно инициализирована!") \ No newline at end of file diff --git a/instance/warehouse.db b/instance/warehouse.db new file mode 100644 index 0000000000000000000000000000000000000000..6204cc15fbfa7fbf81d289794bd1656dc5d5c6a0 GIT binary patch literal 36864 zcmeI4U2NOd6@V{A{o4|^poU-+F76Txux88EPaGu+Hdk?3PqSmEirvgDFhP;nM5`@2 z5;Zu$fW~r%b#2fDZ4snd+aSdTtPjIn$L?IaQ6Bo(hhAdC_PV_l*!I+6&pVetmS{`v zRv=x28fyiX;?%pZNX%AmI-}cfzHf<0IWsHM+03aanYNvvgTX+#M6=Vg@`RkD(=)Sl zdTwfJm<9uv>V=9{)-HqKw4BS14<_QnG!=F9S*n(cN`46})+=Sr(KG4nY1!;-YN@K0 z>P0Qz#gj9+?CDHyo=(d1bg*2Ca_^p+$;sJ?X)YVIbw_DVeoD^C)8q14Gss%U{w;Hk z5ti5-6O1-QuP@TyFRT_?U`?hq-+r7hsw+v;ze;`ayi%plWOCy_$m9k`<4!=Of~Mq) zRRwk>`Xo%&Z1%LwBV8&~wF;lp&g?qDnVZf&JttEOjA?iuwU%Bd1=E~OVaVr=jP(no zTq!BbwMz@IvhszxrW(h2BeGgPVeb8_b+<1vFd+Qmdj>KasJ-_%u-VcBz=12};)2qZ zS*5VpI++|DbrLPAi;GINSS~E&_jTl8jU{VOM>1{zI$x;4dgiP8pv9~#7t7F3D=hEn z#nmpr;0m05UfHXIpDow&g@vMeQC*;?W@e`3%ruu;qI^-UXiBAZA&m~xq~X_3)rC65 z>bw;B$Rezl3u^W9S6Lnw-hC^hO{a5dSeL1FzO2}b~K-N=mI*EiY+hwL)j*AI);A2VGQLTQnFQ z7rl{li7$z{&A;8~+hqK~)6aiDG^PaO!g=WhlZSN;T9;_e<&1sz3hjEwIXL3lMYXCq zuZcw5T>th>LA$)vy0YL_#i5kSRi&t@ty>ts;`oWBi)y7q?^;oEO{5kZ(z*j>blh#nQ(g@&4&^c6Wrbw?X3y+h*%*ZJ6q-YzJi5!Nvz{ zO>e;S-ROVUYh_C8A=#6Csf6HHRd$`dOAmuHTcGzIXu3w(4qJnRZMN1;&IdsR;0O#c zLcBe~ZjbExo;o@jJC=?eKN0Ne(mQ;d{wn*(5ksPT4BZC6Quy6Nv>Xn0W##)q50O*- zoV}s|MEC>rUkCd4*gX@+$81Z#(n)4^hpF1s8}`z=Il^wXxF?dSn1SBYmHT@zYn%EN zV5M?EM% z<1sp?L>T&84o0HhN&UH zr(e~tv28e7hsb&UXbajqFnHTY1iU&VfG?9)4r0yPgFb`AhV2Oq=177tn?C79BK=Ex zUt-dm(u>k3(ubX<7-dKR2_OL^fCP{L5(`(< zY!sFq2fGzzZs&|A>jV9hv2VJ#qeS@OTy|XM`i%!TUhusS^LI7euC38=cyY*)9W)r;SIyNEn+eY~vWc>Z}wgc`KxzQiA35Y-O zfZD|qeL}n1L`&@o)SBTXb*M6%if@3UclkFKcn#gCL4*7->nP^NmfLKdcZW!1{$!ua zB?JVRwlh3{TcFq~Y=hr-z|YloRzu%y5P=wO&}92#bF$;WIfy#61M-XhYc(tT-NdQ1A7^cU$j(!Zs@n_l4G zNB{{S0VIF~kN^@u0!RP}AOR$R1dzZ3B+w&1YNxaUyuxp1rTqNBP9gbtFDnV;ZM74g zfEY0|D{i}$5QAdBU?wVD0kPjoDDe8fAbm#QgBub+0!RP}AOR$R1dsp{Kmter2_OL^ z@c%*Jalu1|GQzW&$yhR;JQh#I;_#*kZ^odVOw&aAyQBOw5p}Vb?3-e*g&NtxEs^ literal 0 HcmV?d00001 diff --git a/reset_db.py b/reset_db.py new file mode 100644 index 0000000..f3e555f --- /dev/null +++ b/reset_db.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +from app import app, db +from app import Partner, ProductCategory, Product, Order, OrderItem + +with app.app_context(): + print("=== ПОЛНЫЙ СБРОС БАЗЫ ДАННЫХ ===\n") + + print("1. Удаление таблиц...") + db.drop_all() + print(" ✅ Таблицы удалены") + + print("\n2. Создание таблиц...") + db.create_all() + print(" ✅ Таблицы созданы") + + from sqlalchemy import inspect + inspector = inspect(db.engine) + tables = inspector.get_table_names() + print(f"\n📋 Список таблиц: {', '.join(tables)}") + + print("\n3. Загрузка начальных данных...") + import pandas as pd + + # Категории + try: + df_cat = pd.read_excel('data/categories.xlsx') + for _, row in df_cat.iterrows(): + cat = ProductCategory( + id=int(row['id']), + name=row['name'], + description=row.get('description', '') + ) + db.session.add(cat) + db.session.commit() + print(f" ✅ Добавлено {len(df_cat)} категорий") + except Exception as e: + print(f" ❌ Ошибка загрузки категорий: {e}") + + # Партнёры + try: + df_part = pd.read_excel('data/partners.xlsx') + for _, row in df_part.iterrows(): + partner = Partner( + id=int(row['id']), + name=row['name'], + short_name=row.get('short_name', ''), + partner_type=row.get('partner_type', ''), + director=row.get('director', ''), + phone=row.get('phone', ''), + discount=float(row.get('discount', 0)), + actual_address=row.get('actual_address', ''), + legal_address=row.get('legal_address', '') + ) + db.session.add(partner) + db.session.commit() + print(f" ✅ Добавлено {len(df_part)} партнёров") + except Exception as e: + print(f" ❌ Ошибка загрузки партнёров: {e}") + + # Товары + try: + df_prod = pd.read_excel('data/products.xlsx') + df_prod['alcohol_content'] = pd.to_numeric(df_prod['alcohol_content'], errors='coerce') + df_prod['volume'] = pd.to_numeric(df_prod['volume'], errors='coerce') + + for _, row in df_prod.iterrows(): + product = Product( + id=int(row['id']), + article=row['article'], + name=row['name'], + commercial_name=row.get('commercial_name', ''), + unit=row.get('unit', 'шт'), + base_price=float(row['base_price']), + excise_tax=float(row.get('excise_tax', 0)), + license_fee=float(row.get('license_fee', 0)), + is_alcohol=bool(int(row.get('is_alcohol', 0))), + alcohol_content=float(row['alcohol_content']) if pd.notna(row['alcohol_content']) else None, + volume=float(row['volume']) if pd.notna(row['volume']) else None, + category_id=int(row['category_id']) + ) + db.session.add(product) + db.session.commit() + print(f" ✅ Добавлено {len(df_prod)} товаров") + except Exception as e: + print(f" ❌ Ошибка загрузки товаров: {e}") + + print("\n=== ПРОВЕРКА ===") + print(f"Категорий: {ProductCategory.query.count()}") + print(f"Партнёров: {Partner.query.count()}") + print(f"Товаров: {Product.query.count()}") + print(f"Заявок: {Order.query.count()}") + + print("\n✅ База данных готова!") \ No newline at end of file diff --git a/static/css/style.css b/static/css/style.css new file mode 100644 index 0000000..9b7a26f --- /dev/null +++ b/static/css/style.css @@ -0,0 +1,262 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + background-color: #F5FFFA; + padding: 20px; + color: #2F4F4F; + line-height: 1.6; +} + +.container { + max-width: 1200px; + margin: 0 auto; + background-color: #F0FFF0; + border: 2px solid #3CB371; + border-radius: 10px; + padding: 20px; +} + +.header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 15px; + border-bottom: 2px solid #3CB371; + margin-bottom: 20px; + flex-wrap: wrap; + gap: 15px; +} + +.logo h1 { + color: #3CB371; + margin: 0; + font-size: 1.8em; +} + +.nav-menu { + display: flex; + gap: 10px; + flex-wrap: wrap; +} + +.btn { + background-color: #F5FFFA; + color: #2F4F4F; + padding: 8px 16px; + text-decoration: none; + border: 1px solid #3CB371; + border-radius: 5px; + transition: all 0.3s; + display: inline-block; +} + +.btn:hover { + background-color: #3CB371; + color: white; +} + +.btn-primary { + background-color: #3CB371; + color: white; + border: none; +} + +.btn-primary:hover { + background-color: #2E8B57; +} + +.btn-delete { + background-color: #ff6b6b; + border-color: #ff0000; + color: white; +} + +.btn-delete:hover { + background-color: #ff0000; +} + +.btn-small { + padding: 4px 8px; + font-size: 0.9em; +} + +table { + width: 100%; + border-collapse: collapse; + margin: 20px 0; + background-color: white; + border-radius: 8px; + overflow: hidden; +} + +th { + background-color: #3CB371; + color: white; + padding: 12px; + text-align: left; +} + +td { + padding: 12px; + border-bottom: 1px solid #F0FFF0; +} + +tr:hover { + background-color: #F5FFFA; +} + +.actions { + display: flex; + gap: 5px; +} + +.page-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 20px; + flex-wrap: wrap; + gap: 10px; +} + +.form-container { + max-width: 600px; + margin: 0 auto; +} + +.form-group { + margin-bottom: 15px; +} + +.form-group label { + display: block; + margin-bottom: 5px; + font-weight: bold; + color: #3CB371; +} + +.form-group input, +.form-group select, +.form-group textarea { + width: 100%; + padding: 8px; + border: 1px solid #3CB371; + border-radius: 5px; + font-family: inherit; +} + +.form-group input:focus, +.form-group select:focus, +.form-group textarea:focus { + outline: none; + border-color: #2E8B57; + box-shadow: 0 0 5px rgba(60, 179, 113, 0.5); +} + +.form-actions { + display: flex; + gap: 10px; + margin-top: 20px; +} + +.alert { + padding: 12px; + margin: 20px 0; + border-radius: 5px; +} + +.alert-success { + background-color: #d4edda; + border: 1px solid #c3e6cb; + color: #155724; +} + +.alert-error { + background-color: #f8d7da; + border: 1px solid #f5c6cb; + color: #721c24; +} + +.empty-state { + text-align: center; + padding: 60px 20px; + background-color: white; + border: 2px dashed #3CB371; + border-radius: 8px; + margin: 30px 0; +} + +.empty-state p { + font-size: 1.2em; + color: #666; + margin-bottom: 20px; +} + +.footer { + text-align: center; + margin-top: 30px; + padding-top: 20px; + border-top: 2px solid #3CB371; + color: #666; +} + +.status { + display: inline-block; + padding: 4px 8px; + border-radius: 12px; + font-size: 0.85em; + font-weight: bold; +} + +.status-new { + background-color: #e3f2fd; + color: #1976d2; +} + +.status-processing { + background-color: #fff3e0; + color: #f57c00; +} + +.status-ready { + background-color: #e8f5e8; + color: #388e3c; +} + +.status-shipped { + background-color: #e8eaf6; + color: #3f51b5; +} + +.status-cancelled { + background-color: #ffebee; + color: #d32f2f; +} + +@media (max-width: 768px) { + .header { + flex-direction: column; + text-align: center; + } + + .nav-menu { + justify-content: center; + } + + table { + display: block; + overflow-x: auto; + } + + .actions { + flex-direction: column; + } + + .actions .btn { + width: 100%; + } +} \ No newline at end of file diff --git a/static/images/5294256562463512548.jpg b/static/images/5294256562463512548.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ccc6fe7da7c8a9566577235584c2e60fff75f574 GIT binary patch literal 101870 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�e*nB}mfj96dr5LwuSTnKdG{}31Eq4uNwP`C ze*jto_H+*tVRJte7m{S1Ac2VY0U$n~Rh>ubBx%lb&T;Kilz>JJBsFTd_!EmHj59|v`MtS+1lQ?qdk>AKfspFiz{+avacJaUe*#I4t-aAxRFK zV>@2U$pEkZNH#qfwwf&nN&6Ht1YOco*LNu|V9kpU_4_K8gQx8?98|>Hcr)_TC}CpM zuRI<$3NRa4$n{BWfU<%0^m~bLYjNaU-zX9M!ao4=7*Vs^@L4_tMY?92n@bKuy+dSl5?6xA=%DReu%ys4#JW_8o!BuHn3El)c{;qz8s6 z-`1N+Yw?u>Jt80J`hvSTPYtI0)1?D)k-UJ$a?#<}@VcGoK2)*Wj+WTnAI|X+sqS9F zeeXjKs0jkLKDfnhm}=8q1>=gXSSV92{*<4X+EQJB5~4d1!4Q@n1&t(I>pm0ytj zK8urFa9XPkRMKlfL_q`Y-(mj&*eLX450D_A(e45>g^W=a%iObFHEZytXeFF)WPWlB z##r}@$UUHr8D`M6v(JnK5)Qo-+EP;2u9V)!)gON!ofP?{0zJ~lwvc}`o`WX?Bp;J= zbQ;*DR|}W?9C{m(K^)!tB6R@p2zl$<+o57Oj>k;IQo!f?{ERH*c1y+CVEDl0`i4k zOdaGdUQpe{St>vK;NIrqO^D7=8s)k0$xzZh1PaUTqmlrfY^jH+?h#sr+Ai^BUe!-n zPw_!(-ajYn3eJTaR&}k>oNdV|Le{Th{I6}lZXXN~lg~|`55}~XqE*r9w;oDHFIF!w z4y$ueY%tF!pN-3Z?NrdQ@%0T%qsG^My9&cWNG@}x!hQ#qf$H~XY1Yr(a6RfJ`EdSK z(w>ubzW4TOQ|qE{yT$T#V1f#;rtP_n8XUfpwTA`+jqf*-Ab|csXW5ybH6BTRM8zw+ z%PVuE&D(V>mw@CR_rr(JrQ;L1`K<9;YkF?A+X(w)7Cui-oz-L|XOD3XpSz`{tC+7k zhb*25(%lXGurYW1ejR8p0(iV^D-7;fP=g?=4POm?ydLEQWcytK#`$7=8U6H|yQr6s zcW0AYs{tdp&4ZuMHo7)9a+(6^r16>z;|IY6Lie|>f3+Q|5g)yz*NX#+j@W^~~P zuDALCGUv<|-#Ze8it(}Sxp4<3KKeWU2;+zD2|aKQAN)QBwGA0onIW!NZD0DkUPG%l zFQh(8lnU+i*iSH_2@p5&OnZW)Cfr)b?ojbyWE>|K8V_$AF8U%@MIhUi+!w$^=PT>& zzk<*N!!!_wabrkx(^1)dfH8XEq!N|a7n39y{iEAAz=GW0RHy^CQ$ldAcf2>R@ZKw? z6nb^kS!{T}8w2!K5A&4v6u?&elM%ZX%sb6k_@<}B`WSu%U2IB>yM*$^I`$fENjZC1 zFC`7WD?M-%=Wahv23XP?@)-smwrwk9aHJ}8ed**&;UxsgBaQ5EBH_yx4fK6}K|SIW`vr8k8x_EoaEjHv!R@@nBAoOias`nLk&#rVe&pj^1e@J;9tPtMz ztn>D279F*MV7M1C$BK)^x~8Y1CRuxiKub$YchO=bHJae>U>?&)ME+^LLUbO)5! zFzWZ6!jBjx<~yxCiRN@LK`ypzleQ$kWHZ)`IE}rjGd7p|MRS-8Gnuqi)rcaF@doRQ zDHv1KL8)YI6C&uum?q|4>TMc2BaFd!rs||p4feGA89x5wR9rI(V0#k^gK*&rC z7Huk0q1MD=l0nLfNn$_o20;+(Ozn40k0mw%tswG&cv$Ets|*yA`dS4_uR9_>ORz60 zsZ=Q3;Ic=20^Jq1;fzgO*&F6U$Q9-26Lm-wsK+>-vYYXVSHc5bc+d-jC~U@l;8DWC zep@U&`2tC-Oe9`hR@O1R7EDiXopCfWL&t3IO(Jfau|U-9G`-+x6dZ;=Of)fC6MR9; z`b%{^MlO`%$~2qYo%Yi`DyZa4xg>v++DY&|b0)=mD|sWaiToEq=^;dlttn$w!ce>? z6CM`X%jt3!SSw47chW&Wd<}Q|Sb%h+(vDSRKz^FA1iSsH7`;UCEfu5dZgT|nJmbxK zxI1~`?7b=yJ9YXR*cILd7niL%{=()MHXoax`UM zrQtQPTK5t_`N*{PSf&bQ}3h89N<b*w!MLeK5O}lv%_bYC>5* zkyiH6_gT?78AzN!8E1TM*ljKZMz$*gHdea>+Ub)NdRXI=EnMIvVJhlu9O53)Y_X|7 zASB4;#cb#EAc+S);=3|jGEqp-n><#n%xjF+?~sQ$9H{Pu!KX0WFqVO6mUlQDjSZ40 zM?qIoKx{z_3e^P;9UK}*2;Qy;UhUk6mxO`|I_+H(&4i4BuzWkVnKeiAI&SESFNK(;NqV8HG-lUBAvIxS(3Q)==M zi(+9TBAz6{I)t_ig=|rhTp-h6=UpH`wu3j$=qn79YlBYDgk`E)VzmDo2MHP)^GYeC zwmKYI@9IO530){nBTi?8&7^Ce8M->SF4o9Q+7K1a5p08WRVHDjfbIV<1viuk7)t0e zQB>nf4H>6n|CEs7m@w-}LEf5#S;voWW|GDfGC-Vm$KIm>wH4tB$PCOi)G1Twi$cey z7(=ANR-IX>-}!7`03M_4TZNBpG}%cf>_SRx93I|6&gdyk?LX!A14VJ8~E!a zi*W7JSRIOs2U=y@B87$s$R<43Wqx{~+#S{V^_7|Fy(nZ+i>dTw4ZQlxo9FOh^@D}5 zIlhjgUy1Va$q{z@;;Nmw>LNl1FK_q1cd!z5*kg+Z<8t{p*1`F+zgr>T;k4&x0~3Ra zpBNt)-ztYHQ54$CI224s`=1$($aw1YcLQziz#t>9 z@EO)QmSW86IpZhohy7>t6rgW{VLx5Im<$CPdL(58G^2go9zxmDm$p0~ zwNYU!*6Nd&JgVtzJULOP;>?Dr3U0D^?gO8NIH z&R`$l@NYaw%s&8$gVnaSq58OO{BXT`WO<5wUC>ar;y*u2mBRibt!A>n4K}YLZg2&} z<7NNl#c4))XZg^`tdRSC-QY*|_acm06gOnApH-EDrz(_tTMlDt+KksEp=lFX{{W~Z zmb~wI(C`)p2UG&Zawp-!$YXw% z3-W+m{FQXw{Y-*9Ctb7sE^M<|6 zK19a3r-a4X*kC+ECX8X=AM>+Hpw;mRyfm9|$}M+4!Zv@R_=jQP4{0u73b!Hm%L<`Z-tR z9dh7XdM&drT75IxZmi!ZSP%D?O_bD=k}D|#jn9J&jUbbO5+PV%gOMP41GEBXHY6eY zsqkp4>-6Ps@SXN4>6LCdPoXiym zq;urTiV@Ufsawep8djkp&>B!?jK_>sz_5e+9;}YpExrgGy}ZHr?P8{k*}yTPtoKk~ zplk`rl70wUA&bDw3`weW76&X)PHtCqkDpyg(T0!D!Mw4EL?<{HQ1>4heq0JtUzN!;$EZ3PU# ze^f%3k^2Lf5kp|~AmiBa;)fft1P4|Hpir0%*pGZT(lXorxhos;OTSATU>si`xJOy@ z24biT$vvg`eQG58<{0D&l36NxXoEX!%l@|SbaNf`Me@e+2q_Q&4Js^n0pE>GG{cST zWlK}SFK58%zOc&kCi7Rj=8f75S73brS}Rrun)1S=@)N75_OVz>AFBu>P7J1}Cj{~|;z`+zZG7t@XxM>L$};EXb^u$r5%9r*if|?k-bQEOgkI{LbMx8D1R@vg zGXZ%q!xS?OO%YrI$pUPFods{#oD_%aQyL1*4S|8X>AU5ja3n@?0zW7d#DH$heW*du zu;Mcrt_<3!K~+KtRCM79$hhDGm5@0$J{!kE%hpct`g5Hh}=42*FJ0>KUSh-d-aCd}H{zsF8V6 z6>h>1^d>oj{Id6Dn0HGLieGq0Yltum_dGl&n_dE`$HlX zPBfDKGj7B%g+l%kfZG%9O`knbZG5Z(N6xx~4MFs_w)(j#&-T;Uv5xy!V=m6kCQVGg28h!PYw@w-e`}F*g{(c|=JRHF^VbBzFvA zbpse2SkXW;@@kv}1~^B@v1k^wr>zfW-H7e%9_yLjrX2-7s)O^eD|g-Tu{LeYbGZOo z60nA%Uknv$P%)|nRq&T|9?@h0yDnp2glw)Z%w7yNxMl0=f^8J#X&_!&bX@q4Ls48% z+edw!`l%NGBJ+r#PH_#GTzz=Q0rPaRbasZ1wjINJAN5P zYB8?M<)_`vZ|Al4owT%8%caUFo0wjyADuwa&AdyD0Ntc(5fFdbie%^-;QHkM0dhc% zzp|==q7@qxdavC8$A~^!i4a8w2BnWG9T1f$sM`uOUIYT>K^b5@r#|P908pHO0BB5w z*8c#i5xkJfD27LwC@53nK*JJ#h>J8O+FJ>c_721+a`2kKt)q-#x*X(L3Ji;P0Inb2 z46<_rQ1-n&I>(NSPLQpEez}K1)rg}4pu#+n=CKk6{{Y?@+%W}6i&RuF3V|G$)kZqR zl3v_Faseegk>=pJ=*Uo(-E}S#%^@AE#qD z>Iq7^JcX^n9Mv&G*D*s8?4dk4z>%#KOBD&3eSsxB_G|QzeSmz1WqeR{8^R`Ku+wc^+BRiU)nz*Qx;JLln6CLS-u%|cKs}p_pE^) zC|pKIfvV8^-r<$-rxt1xF8XJEOo9e`>nh)&{p~Wsr~;%rMMafL>}6#g?kVc}677;( z&tX}CrOU`X;r+U#8igaGtevd%zw};^`9{ zq3Q?zO5*(q@E;SsMi-biaF~YigB~7tjj*W3)$(P1u3gYHOuV8`A;5#vnXu%pZ0|`)Zn&_UZe2>iI2kdpfq0A{#w+jKtnmK8hE;TE)BFr^~xJj83 zzDA=P<%#4YFai_z4th@aE(#MD^gIl9=b}P`YLhqUd-FAz~j$9D#;e zO=3Y_Du^ls=psagZp?v~eN!^m;3RPhc?ud(HnFBX0T&(zyF=}v@E}{Ii4qa|qGCAI zCW&fW0KhK94(kcZ!_E_cKm~Naa|i(gO@&5>g@A%Ius5qKoojLYKiJ<17Rz&TL)7#a z{$(7Q%A$z7lFe|(xu_dwD?P(Um`{O$*-`_J=Lu#=dJ-foe6Jtr0ta0j`6%%w3(~_d zgcAb*otQsgtAc@|99l*a4Qn_507dZ4(I3(%ATuS#P7Jo~?^2u%eZS-O_|%@}N(8TG z7vX^}p)Cx0rE^ebg}ZISI2~yCiWFkq7EmA}B9Ms`d`{!KpAsZb^7I919MVJ!qyiS1 zPwO!HB_tzc{cH#ZPsS&KeK)h{zmTk+s6aD6+&c#p5R$EseZoh{Web6E^+}9b1tx*B zk{ucWw|irP3C4tp#Mt^UUZBAw`|+Qk4(b%C5KTrev>VONq6i@iv}oDsmvbqd!3z$# z4+kqXl2T_4z5MwUqE5C(+n8b&fSOn3dxi)RHbCEre&uvlQofGBAD=j-$iSLfNF~DV zgCkchj9Wn(3C(&bcLco_v%~$4enXsqXmJW)z3t53ybRyFZ$^p_9gH#FGu}M$7SNA1 z4k6-qo#e@k{4o$z2rx>5=m_}7TteG)Xn!|3_Y&Nk4%cCV5=%%qCA@);3l$aB2h3ggeeR8WsuQudPm`4fCeGw z8o(XZ-{A>gGHZwzNR}T;UVwH$Q-#H!+ki<-HK!x9M(0CSaqkvU==K%|mG=9UFV&m21H~S0? zp{G;q%}dE!#2#R?s9uN&=r;$Mz&Lrt0X~ZJ=x-D3H^XP4P!4)H{ z3)1wc5P@KkQ8acI&F~%2B4eP4q7j!hgLExA`6S!XG66k}0-eIhJY!TWD*6br-bkQo z9iyYO5WU0DnHG|Kg&0UeqUrqiC^I41u#Z4G7t;M`N(n_m*MmH8HDW_**L*TYwI@fd z;0MMjfIWnrG#CMEdwhiU6VY|}IWI$zRQ~0xfVp-$&*9MdN2*camY`UJWP1m$7l2aV zY7opeW9B_aw7QyYaa1&Nn0rIw^yWWEK^`-ul;BN4_Kcptc!a>i3DIC$Bcd3BDI8HY z5-wYx285*L)`%6zGYyf54>3f=O8OU3W&`_cB6}L{>IG*;$_e@(i+kwL;pG^7q=NBm zXh1pAbQ${~+U$%V$#OEfc=kU@)}L+~`IC5+12 zlJQXne2t}V-Uox&d>py<3ODJBcwW7a8R9W8wR`$82Q|VWe&mwbchv$ABg;8@}@a0Ai4>3 z>;q_QE2Zj)hvWp>KVVAs@IS4s--1%Y9Y0O%~tx1y`fu^*8 zt*qm44}eo}?onWNJ^(26lNv7q6%KP4}}PHeshL=FX!5jtNKgN1odUd^3MW0M>@2?g*oIT-4|@`A zlIOy8p$T@R25uGp#5MYe1bAM+J7i~2zK=O=7l;6?HAq5^Sg`a%#A za`G=T<+AZ^MuNz7*CB*(M*<9COdF^m=$4DJ7F1<$nz}&+dog>M7@!!aIPw zERbw|=nJ7nW8|~naFs*|B}aHN=%?T?_Z(~l#ac`XP3Q}_(l{>uwk3GIa3q)pc2Os! z2;DxgyOPSwaR7qX)=GN>Yles1YE%1R0+U-27mP8jV=NW{lP;x(h9{>#ToNN$J|2D z>9nwv5Xyq#uU_Ot@PGw1rBCO@guA9gAFb8l)F6g?`22zNo{D|>8jLQqAZsA68j&o( zGRpd3m?t0C44R?A7Gz(~Rs~^$36FV5){_Xv+*nQQIQXC$mGkv_0;)Gd$x4- zAn+`_IQyq@F>IFTT6f=^><)zhO(Kc7~)kchoZHCFTo*m zL_>=xdw2pc!rh1rI+zjk#FGU=>t&)OL2cN(M7>2y`U_}S<;k6$_+*ow?uKxgt!w4DlR=2=1dJ$_$r3u8G9*9&!{{WI( z2e)jZ9fn-m2VrD-0Ls1?lJlDeW<&5=mrc$s@D~7 z@c>%z8#SH4!%@(FN~-n)4u&JB@QH|%VUSL#=6w@@bS0N=gg`ne2}Rq4AZYfVhu}Ff zI)N!IcZ+U&;nRT^LR<8_v)Q5BQt4%b$ft$|`n_#^;u8^QZNuq`V z&`+u6`x`LzdOM`EqcM)}Il8;tHPcu;$RH(pfePz#IT?Uv@Rx0kbtzm~ZPKj5pfFn{ zCNIxmbPDW(Hg5I204)`>14ZXE3+??DqENY#E~-X!;1}OOBWeu@X!*g z)ov!~WFXQwLeZ=W1fHBe-JtV)%OL*%aP%ibiIE~*D!Nh>#c(MPZ$Dan{aA^o*&v@_ zd%dMzfOlRZ54@!H{sCt3@N{GL?Ude#j2^aJW%`A}QN2H)bV@KJHUk(!aB}7pDN4Vm z1bQU7v<;tGlWPME$*=7N!nU&+*u+l(+%N0^3k9j~mC*+g zH)G;MYNm93b|5dhY2N;aQ&1(+Js~mPLBz=tj0$U8FL_d=_0(%I!b8e@vOh1li+EQEg3805<+gyPcpTn_;^juC?&Z&8SF(Dg72_H_F)d_ysnm5~z3 z$pfOj{MllAO&p4+L7p6S!@N5M&=-q0_|-847YOSD6OnI3BUFX-OhgvNv3|nh4v2jv zWGQ~df*Ul%4E8xd~$mQwsFMs(1&TEzR$26ToyQQ7V9iN`#t{7 zyapx}Zu$w@!wA%zIN#5JpV1)ftv%&0EiTvCGc4JlZSDPOA236EArmaSh<&|SwLOa# zQ3JVoHg9&rKJq)MCRyYe(&F16=mmmU@HL!jvH(neh!@$!4;Yy1&e0c7FI}`g=6;5F zEdh!XJ@)PwwMttc2;h?-Ngx;{fgKi4eZdd&yP&g!+y3832q1$ZVQe>BBT!3W5H7by zAht$yOTl`$DVJbDh!U^rr1}qj`Nt4_qLc+Nf^pr>eV0J^^v(YO=i7J-%>(enO<;5A zhwC9hz^~~eKAkIa5X37=LH3Bff1`Ok)u7$I)R*i!2Ds~(C(5X`i{tG=-eg%R1QyLF zNbY|`91S%lC?N{~?(Bs)BalHVd_Zeu_u}b`CXkfj1o7mpqF*m44CDRxd`7fv?X8?au>Y5Viw98`D8c@2-(u8mY-i%$K=!D}Q zqC-H8U!#->fCiJpJE-G3h1@ewqvgX=%N_o8pfn=`Ng7XT4KNZ?dP+LdCtyakjYy;t zm=rAVjs6}UOa>rSMvuWIfn*kup*CZ{v!@ymuEgq*9E(i!IM9OGmM4A57 z1JWbty8$x%{iRhg7mQM)gQ*Z5P{$XjBOl_hf>&%TL0^CgbRa|e4`)t)0Tl;7Q4GAE zM3=)vgYG#utp5OUcr1kP8sBPEMjS*F2XpWEb4(+s>Fy)mYe4im=hmQ|<56$01-Dd8 z2lVU!6uc=fn&Akrw-pey3o>?ZGnto?2o**+2bivc1;0T8Op_rUlLBokf)ma#_L3Lk zfLgr)YZL_JAt`-T$zTCWP)5oKruS7BjgSH`&yKuak%{({7A7=&Y`9%6Q)2ml8yykc z+yoVo)zFx_;zFCq1p@~oV?6;HNSHzp(**M6Imih}EZPQD-W1Aveay(YU&J^sa(%_z z={y&8)Dd|EU^M(Rd~L#EE`BB;2TelJZp(xwR1P>IpGW{Tyk?06>MJx^h4Q`x9=`#v z!blO!I6!88CtiXy)Ua^JPXTXPx&D(|{m?^*h>{@5IDrCdBLXAao`HmxHNo=%mI=&H zO{^mT$Dob~Tlg|?JEQ3d2I-Fb);LR;M`)!`!!hhms40(MtIgfvN{J17y_aK|Kob zBLP;_KN(_>t{620_o$KjbK_;*V9o*Em_BCz0D&te2|Wl)syo+uJOGhpGxL7qW}zbQ zp$zO5xV{8QWU%==3a~~;tp`+Sq>rK!f(wQQL4br#nN7~Z$4~Fv1Zjt*U4dghg?2TA zLOi8O#{5i~{zL^!)pL}X(&#Cs3WLf8-eFD`t}N&(?A*snCSXPB^()OCfh1P;6R!k; zsfw4O87@gJ!Te13<#0Q04I(OyZs8yT$bn4|Sx^f{BE&4oSP#)ftg`eD{RMxz8`V9_djg|uXnE#ZKTxbGYSE`2cV7o+&kH?|vWz}?-`2e!^| zI%oqbwaXF~c?QhzSY7oR;)Qs&sZ0~28}qtUA1VB~j3qww;K`l*8czT_ft>hOf~KI@ z-Hrb728L40NjYPKcQ3Hz2-9jHE^o0J8bC(j-bYVCKJp^Ibb`@#a#M20%^^od{9Vnw*0?Lr5+KLiG88F!c(k5Bb=d62kLr0(85uD5tl`^oI!)CSI5UKlqqDS178ZkQ>VACcngNrRzyRMXOTv zMIUs`lKCS6Q7D0$0{Rk9@q{sEQ~Afcbn^O&Zvxxq7J!MGB40BI%eFL&Tc(G?;(<9# zXmaoNIg#y-q6|xX(2$N981;)u3z8zo2)yNf03HZ;l0O0<)@dtYpb0R%fKE?qzaUOW zYHWN3FgUie%P`H1IXF{qQ-y#N0=nZBs}!C{hHDKR4o2nRpMg6vj(%N^790`0GKQn0 zn+6k~)xc`<`+DF8tJ@!7_K_ebwjefXLn7w~*#uq9YKGF?6d^(0B&>D?)`$_NwU`4U#|wfc=t!^_b;lApZ3 zEhYh8U16~U3ceo#j`F%n2fe8toIFTEwiZ~&q#Fbg-|!_fP4E`w896g>_X`0ha_r&= zF@qUP*kKmpOAL0ckl$f&!(_W_dB7t~Es43uxDLq2n@b1)*sO{`jS(x?1Af;g=t|AD zqTdk+!hfAm&Pke*4bp8gp7bGZvaF%23C4OagPDDdOID1 zugL9gj!7Dg>bumI=Zr2OT>%I80jbk23?`LEZ|D9(a>04(3BX%KK{s?W()6$~eL!|D zq7@))g36J5&_ImG=w`f4JuhFNaey`$$g<*pV?9)efL};p>;QJU<|DYvbWc!Uek>RO znLS8=djjFC0D$7IriyC_2%E7W;y7*tw;V5^49qxKuEY0ljH3X!?M%d9$4ddRw}K`VXvnTz4F{aNe!(U1G4_OkKF+)69`{U* zu@|W65fdJR4w1w@0R8k3pe3XT_W_vDurzo`AeQ>jpoYK!enKj@{UF#tOKm`8U_v%6 z-q;w*O>jTBK^0l}PNW4xAXt>O7zw66z`f%HiwM8EETc>9FEf1LvR4*eflj) z0H4-AHi#4`gWnr^cnh+r?QwJ+yP+xuBUDZ8*i3l9PE%S#awp5oZ-5GGK{aSQfD22( zH38rPDC~?A0i~?|!p^B6MqzuEJOYM1M59$)LIUSLyy$X5*Zv-((RbcfQ*@%u<6`-`OZveu;NAh7o$z*~i0`(Y8kz4Tq`RNbCH4WuI8w3=Za|0ZuS@tgC zZg;vE1(keX1eP~|p?R#2uyqC{PQLr-yoVT9exP8CbvetuwCw40A)$yI08BU z0H86?U>5in)}n%=z}Fm0<%aS8kC_joce|;b?E-=DBQm7;Gj z?0SI9Sb^Quc)?^|Eql#g0NtAz1pE;FodDkf6M!Q24U29YN5$+|D|uez6k?Jw`KNGl zT!E{%B$;h(s2Dpk1I0ZvL2r0}QaZs-x7_9Ha5b{=D*l zqAW;|E|aKqT7jBT(pjj{vgyF`Uja!`Z4V$KLcDN7C)oxs!&R?T0QR`S;4s&$zU#KJn!@fE+FQc5ra@ya3&S#a_Q01*}lK@6-m~5mbqZ-ytdH7-4pc;|Bml=ROPrV72<#@=%M#;AJ;I7{O!!M9jaI z0xZ!H;|(t#~q$taMj)VFcmelLNrZxD#+;`&@N0@SdV$` zIzIr&TCyHi6o_R0fC4KE2&)FQpk9_WYE1M9W9)`#dlWXtZpJZrjaUG^e$}WZ1H4R< z05nPKwDk%H-pd3aZz;`kD8OyboEQ@}V+t+A#36?U$*>`~_TdHhED7h8%IDy8NnD}b zi{T=0SmM!3*lyy-RH6zA45??!T0jPVQ}As!Y=BOa`G61^Tt3LSd?0Kj?9qty2}vu8k0gSKtv7qk@LUT&8dc0i6@@3|_W+5%%-`!n`UY!z#v zvs7PEBGB$`-o!s$!6S(nIW=MIkD)M@p+BXHDzgJ`QU3r+8J1v-q%WES_Vo3H7w%@( zKVSj2s{1WO#4)#W;R%jJOdrCD84f_2KT(n1dM966u8&i+!IkNVx+BLWMt*k)Dr?+e zl$NU<-z9?sY6fYCZ zK2Q#`uwzT8r2&hPwghzS>Als%GU&?#5DV_m3fFxF9dnu2yeVco4mjcz7z~P zI@OL^T&VCdsi1a2Ad{PL7?jA2QsHbxlD3@`;IzRCh;=aDe^co@4|};Ae{f^KLIaAy zdeO8A)=uY;4L+ha#VeU4g`Qc@;sNxERY%3kx+`mYTrjsr$xo#939;i;as8 z7!_zV9#AA;?kVTWASLB(Bw+YBRvr-WYv7_3cY3MlYvr}k z`K;s!#VpP~rvg|@A@j&M$Z`5^@G!uvF08je5C()7!(Cqg06{%#L$O2vPpoCQ2t|x5 zfD5Q}Ou4CMf>QWL;EXx~YVAp@?y0p5!gJ(k-ZM4_nr8+wTW-JxduD80fC@c&0FZzl z0yTbh2+RTO%6W>C9;(InP&MjJjegVtrZ54O`SMl0D-%=M0V37+H0;z*ZLq5Ev_Rl@ z^09%26y}sk9`{rlyx#CzaWub#&5!}=hP4Kh02gk#P&eY)Tn{%fq1e~Z4n_$Oi+_SZ z`u8CzxB@k&Oi>45F~br@D#mJjMDGy9RL&s+fQCMI9B~K*-Q{ohN7FobNhjbzxZqXL ztQ3T5k{%Hi?1<1Z2M$O^eFV&b-}yqHdkOtexDQH^GVnGue&VCGLnoS(l$0J=soU=X zyddeHc!GQ(5UA;>#(S=aE9YW>SPlcj0rUe4&+rW7Wkvq<%m8DN<|l$RqK2Ns04Lw1 z0B{|Usy@m<2J@O&CrS6Y&8?n^{Zuz>GU ze+}t0Gy*#sXa^QrYQx|~;0`jy+yG2a1QIq71QQ!5J3!O`wYOTp03`T)ia}zQk0=9; zk24#D6aG1`E z83L@FV=Ar|q5DoYJ{-s-&vdRwMokutwds;4ctpKGmg&}C=m2Un(}LnipL{yBVIs7q zUZp3qNBcLR3;ss)q146Do+38OwRpPh2Uu))6GL6EEl`xdkFW%OkB-KXr@#VWpI{_c zm&(wJWkUnG6K$FFE8NEn|G1!)^}3xdw&61TOtB zL1+TR9H`NqRmTje3jhr0Z89aP!@-32%#{BCc@6&n#xbv1kkcunMCp>JV8obkS-JgE z7yM)IBEk#q-}hWlEuvV)01s$J6nP%F5TDaz_z~wO#3LO5-ii|K29?Qb013Cm)kVyj zK{4aMf?Ahw1May%Gd|JVINwy@4twO5XF5GHd&^ii~j&Y1vW?R;tHqikww88MX`VE0T0~@7M99@in^CYIES#7c7{m+vWHSh zA*?6Zx&3tf{p&2UUyFW+=Hj%b2YpDQwHF@fBI$vp#dUSMypbMY7@QdIi$mj8^ zLVXF4O9RmYMw)-7ASy`YV8y2>T0xI2%~a1~#>ndw&yXVr{mUt+Uu@aD#o#<3D72Gn zT>#)rO$&eygpa8JFip@6eHs`HAMi+ncA{F?;5kPG))a2BnTUcEd{HMxB7oB3KFb5k z9N8$7(b^^u3;-eg<%SeEI9=d=4GZ>&UGvz@^G^ct!`y(}I2rrQUMb_4c@|#~la@!3Ja1Df( zqWUH{>~Rb%WZl7@a!W(rh-eA@UyTGL#N!|VX%Ng1dV#*6m>Jg$U^V>%Y4GSO#k0F_ z^EOE#Z%`H7F$6(T)O`!D7(yEga$A`|j1FMO&?E76eZ#xV9b54gnpr;O-s1D@FWD=B)`L~`33hGXD<2LSbEa2UaR znxYB#OJ-Ca21g~tpQ+C^xC5<qEwH3M#-Q0GxF0cKPY=W%)3malFAdR>=`;J{lAVL=MclIn(6 zL)PjqD;tz#_zs9vL+!*asE4S?c~LPr)4@B7Low0&0S)fLAejan6Z)%9KHRVG09qWj z?0}Q){R!?16vKZ>5a_m(01~yKR)5WpaVE+`Lw9dy=;|q^c&Z4G^7Z&K& zz|8g*_!(Kx6lFVtj@#Y`u$^g+gVD9f+x-$cvh>z?Art!r&n(_d<_KN%fPLAJBdgEa z->^_xvEo*Lcl2YC9yKbYHt-9~V`SkXcN5Y-7!tdP_cM6(avO~a3R#=s1J3eIAQ<}b z(9`gY{{Y?A1wUZy_le9&JEs*K(W*E_>=gl6D%?p44P!R8bpebpY5N>SVQ(iFL&#=KxHE-TGu(D*3}bL7~K4(wqfSV~3x zLX3f(8o;BlANd;q>>0OO|d<4BWadZ2J-mLiepiPH0zuPFRju%9tBMi<^P! zDTt0B^#NAeiV`|S6?MH@SSBo3zUuz~oUIa}8VnAhAglp-6yalZ=DHWNt9I(#9Jizs z%7m0*4p^GF7>RT=I1`rc{;R9f>H;juQDcBGl|{JvRF6FVfe4e!F1#oJI7(>%{{V52C08Iy zvzD`adLRmXBU8)3OJGH|(ZWE!%fSdX^giYb@?lFRp8;dSS-@?0G{dfvXMkd;25VM2 zi|h>oL^a`zFvmgF1QaQp7RS*1b4?2h{{V1QfP-XQ)h>uFNKdl>2n)%w(iXpu>ZrH@ zD+>+J(Mu%Q0Ec3^9M!P{E58y3@xu&q=ObJI4(TT$hJ!@v*eAGQo6QQ@M8dNWxhaPG z;)sN#*a_=bYB|O|5XX~MHOS`yjkD~UR>QJDWD8*+qgxKZz_D2dfm*WPg<%P*{{U-^ z0rfXtGJ{f#YW;nKcODDmZ|IY|mJeiDHfxGY$tLJxES+n6C|b_IzpaJB{3-tcW@yAc zdOA6l2pbV+C=)~`mxcgbOne%Kree$RU(h_c1;__2^oBrR$%F)3{?c{eM2?q+FWx4rj*F>} zp@YlAkH@9D1|Ak244Cs*#M&-4m)|PiK`-FUfKwzbI6n!HeLAu@EZh~60O7z?f;cgn zwK#+Qfm?D=Qj+%w0FIMotw?@}uzBnA?RExg)X^eNE>ry}K>GnRcvei&rP?=QEre0v zk_=e2ab0C3|ce z;!COcPU6tXSrk6jP?5Ib{h$&r6tnKC-;bjN3a|UH*EtK5ShxX*SdjN2uhLX!7Rr-5 z02?hh0F{xZ9DOOmnk{d&1(lSDT9k{T(1R$L8MV3;1Oj-HDboE*QpmTSlf1kGn}8Lk+w?#X$@g=89xcc4g)Ca6Zkr zq5h}1kR@L*{$OrUh*N`=U|6seX;a)AlOKrWj*Q#)FGFn03)noQ7wjM1w_%Qjm8h;2 z2?#}kRJG2;{{VDS>#!AqCJ3B;Lkyi?tbz#l1;Th+p8yztspVRUKd?t$&{#?)z>GXj zRwP7B&X}X<$4ojniQaWQ(H&Hdg`n|Uu#n?~cE3ejPCL-eZW;M@>4v{RLq8)2UBRDJ zRz~mcfOP^X@Is|=c7zR)mMKVuA>w#h*{}0czzY{DI)g$7T`OBx|-t;6}aZ z1rfN&j9+H39|YhhsYqwY(3J#WffXt4X=lpt5Va61gnQ?(35f!Mfv4@t4+~b=5nM=w zP-`=@oUg!~z__$)BcW1KgX`Z&S}~8V0@a2tkR~z7Al2z#U&UsXBszZ)9I+}|=>e5b zuXO_?>?`xobVe9spvYoJ=+Z4mZUVhWh)`snXyQRQ)uSuhNA}LVikLR3?+b_ zI25oeyl;s81O_$x&V0xb1E}3B^bpd?dOp)euQA;8QJIsW_U^a99_rGTtOcuPTe1NgJ+sni58X}#w+YKl>Kh2 zGUO1uI{^j610f_g;eKo}_{9K|E$CTX`S~O7d-5Wkqk?oT+E)oXC?af@FTfC~_~c51 zW##apK?bSAX25QRd>?QCseJ~T6cZ(oS1GrIUUeFYPTBShMsP_j-2p$)>Qr$G!3##4 zJ@AiTcUbC#S{r>6FZzWcu?W3#E$b{%rPtB2_jEp+qo$okVmyx21Y-ICrnHhPsv@Z? zeyNKMcR*OYTGIi>5b5}^d}<`p>74!K0zWv|9;!F99ZT58ec1r3YN2Kf1rasK!|WH1 zees&7d%PIV_kO@G2@ailuVLz6h|Si`09Uv4uf)I-kH2L`+)KN6WEf`!lHvh_+5+DKqcEtmZ}^2Jq;8X-qI>A30gAQ)ySG?d zNE4prEYTefnAML16&)TlbYnH9oEa}+5OgZW6^5aJ*aTMO#t-08*Z<_?}mx z>9_6Vjw>X45GyEnJvs>YkJ*qXe44lVhwtJb_OK`S@|e}qIN^$BBm4uf=;RtS714P$ z4;c3jASzp+F%?!4@5t4wxJFH#%I*)r{{XJQML!x%K#X>7BP-AmW0fT|c-I@8Up0yg9vlKafMcC7hJ`V2a7z|f5~rH_N*eMn zMd)02_l_G>(vCBbK~d@reoM(gjY$_|btOGQ-4E$AsK*?d^+i6FgjMvqIu4H-IvDBV zLo}E{heOAIKz#*bi|*U=9vv%96Xve)9ua8lRJH*b{z{uKn>>x46Y7gg!G@Ts4q{B# zVQ`d27E4zzTbmP#2IK>WXp#CFr4*9veb^Iw3nVKcPD1Y>+~J4-oR{8CNDf@@`ptvc zm&#be#t7Z?!+u@O34}*r7A=c2S{ER2%3pigB>(^>Mwck^X06B)LZ`dv<+up$ugTxS z54#qd7*0mS-G$@H42CUcB-x~f&J3P**85}SaW{{YyIgy6(I`IRE^)LRya z0C*yp349RCbV{OdKEYlKwLAjM`5Y$mc_PAWt{j?6UBFMhMyK)(q1bL1M*;hyK?s>; z-l@P2T^5a0M6Dk283gnRHucC2TN+WhwFWJV#AcIrnYP7}15cK`jDg5MHorWDx>xeb z`vff|y=}vd&Dmpx9p|ITB`qvV5J+G|x4(nN!S;YF(!DSb9%)7%;ttRoYjh%D!sIT( zpj!@-{epgmCU_w%sq!}4@q?Ve)&>j-Y$Ae7DiFOsfSjr!?HL+^3j+nf}y0NFy{X&=&9O9n>bRsP8IFPeP@?A&J$3`*H z(8hKEEY*^llR4;yYAg$62$sON_bYuu+1LZ*Di2r|a#xLL0%BySG${o4HH>R`L(mH- zk2Wc9ko@F=%n?Q^Q~)3dMAtJ3>WB-G#G3yABmiGH*RcNpPj1Mo6^Qp&6u$@uMHOW12=ll2rnoiMmLFnn0b0*a!r^3=ct| z!~;@lp&p(h297Tf2mxc*)+c2Eb-N*Cgdlpm<$w!t*a*N*tpeYomZ7=J;2nztCql!P zgh*T|Ok`{9>SNZ~$;RFgTaQt~k0M&1z*@0C%R_x^S&oY6#y)^_7tB2gj8RZ_4$7&= zQH7qyf0J=OoeAT-VU zMLwaY0C;E&mURdR^k9`hx;H{ye4zj?x6cTQ2$&VF*gq6Gqu3xa9SQDP(3}g@EdYq| zKaQxFq@sDvsAKeOoQIaufYry1zUU99YXzbM-eHeo%@?OA{QR8bN?pC8Z zyS)P>gKH&4%%lGRSON~YJh(=X3Zjr2WDuU_lr3Gd-Tl-~lHdWt<9!4JAO+gy4Oe_xL?yB+vtG&}J^s#1_D6 zbNj9WIDoz&w+l*1(IuaQKJjI0K8@?;T`fVa6l>Psn!p!{wRi)bSTOnof?^)! zXkSQ(V9u^JNt@H}!d(v4;J%3fFNwjfHq)_%aj?KF6}|`_e%krl1GO|Al9=ery>BQ9 zqOLV?J}u-RD_fS&s3JrUGT6+1PR$2uodo4PahS{{UOE3WKOU_UYVL0O9N=cia=n zxZndV7EM?-MexN%K>32moQ6P=@6JESjG8dPf{Vuq10RFvF^SO_I$^^KsA{9{0Uh{X zs8$^4T#suw;+Z&^oFTYdsa~^dgt`lwtOfr77brltQQ5Bxpwut5-$FX_Er`Bad9Znk z7{_P8UiUf%BGK6FXc+1&ym>$08|jC*O$yiwnc^8S#~fxG+>p&9PKH#GB4hY_3n5Eo z`#>$)hfIC@KoWgMExo*ed&tBVQ10$@0CaPaqJ%S#Qm9=;(8mp*C)b!8_ESUkvOxa3 zBiKz+VBGOanbJ$Q7poJ4f1vtNIFc&r2%Uuysl!Z>91g7Pj4yJTFXRX^u+4ILz0AK>3Fp;I%2yAtjfLS9xmXsHZ>?0w6Cq*C72Y!C07JZ&H{me3T zf9*!!Gtda$lmdJtyj(%oI6mm^-&3M+{)zw?%tq__eZ!Mqc*p61?5YH8jwNdTYzi~5 z(=EeM7qbe42!$KU-s+C{o1*W<(B@QWj>IG{3TxadEit+>Z0Hbu2-l_I)dCFqf(Vh# z`Jdnre?dtDn;`5k#UpxwvP;?q-HqQaAX=gX2{7>w@7z}U7jN0L4ISTNMuv3`OfN$J z0FNif=g^sc*oj~p%#$91_-AedQ3(A6=;>P)@H5-37TpUV59y#X8LA!vE975zZ@MYS zsV)KqMZ@Qr$I>sS?^O`Gm<etJmKhKQ5a-;(tqj#+dLhG9T8^kVzljtu(E-yJLk?l432Fmdwq zlp~a>QwS+6U+;hzO0XS9-evyi5-xY32wG5w?R^3aY5*ee?MCaNiuwZ`7TSq^farGo56ODTMIXv+gsntmVZCq-#V z0gplu?x9?Jz|;N1v#D_a&jm$rCFIGsFilK|h!K*gBh?4RfhbKwwylRE92v<1nmR$x zlCUxEBd|<}fv&1+1hYfK2sT#F?GeMzabRg=Bz^?^m^B~~sz9i|f&mz38OzpIMgetD zguCHb4D1ikS%&*Lv_=jDP%ywb4v$ok2^719LMH|1t`s2EZ^X#ukpL1+(hpSS;B5Z@ z42Go_6Jh;8LH)G=Fb%rZm5mrnKN052fzyXc0NR-CvWN^O{~ zpexi=-sU5@U7bYLAUK}^HU!E03jlqDo-{dj3{;FQLy;WP)`VqDXh)AG{Ioi0Fv>zb5)u+n_e6mB>^KHMR75A?-^(&)ggW zz$03Ffim|Nb>MwpXaj&}4wsS>QNTx(g#Fb4bZefusetSpvyu} z!U50A)TMgLo_&V^g@sFF&MH3}4v2&HtGVU*0(!Fu;OTN)wf_JROcg4vS2m{TXf(KT z6aAs=tkSO$;Rz_a zU=wqb{H4-KhUvm+SU{1)nI?{9L3F1JQ#3rt%K_8uJtK$tA#?yx8Mh{w+Rh)LQrgV1tPCMhW@t!>>@yxO5K_pdAj zu#}~M8}xR$!(1c#H65<}Qu{xegTlk0!x($H&jfx*C|}w;n;sVENj@bJs)s$#bq?(d z#vUawVi-p_(LRNx8sT)GdNyE1lt9br0qr26@+YSN_8K8%7nTR;kscGm3vAg0KeG~Z zU>m-hu0T~D6ARLWN%|%qLS>c|heRe0L6{)~{{Y3ogR~yYuh`~w7g0LW!)6oc2xbbN zJ9J$Eh(LRxRp;J;cma2u0qcDda<>Pz3CoP+K?OLpD=L_hEfB<l zmE-d>E{7E(RihgJ0CDiq{&V(xG<#i?OwoIgr7bySbQ*N6FA)nphbzsL9>ZBp%@)D} z=p8T~f@B8u4REMkE{=kMP$n3(=>Xi{xRTt;enM9J6His&p*@$O-N*j`-ZzLG@CBJl zugQCsdzrhLrlo~I=utOM%s(oF + + + + + {% block title %}АлкоСклад{% endblock %} + + + + +
+
+ + +
+ + {% with messages = get_flashed_messages(with_categories=true) %} + {% if messages %} + {% for category, message in messages %} +
{{ message }}
+ {% endfor %} + {% endif %} + {% endwith %} + +
+ {% block content %}{% endblock %} +
+ +
+

🍷 АлкоСклад - Система управления заявками © 2026

+
+
+ + \ No newline at end of file diff --git a/templates/categories.html b/templates/categories.html new file mode 100644 index 0000000..fbd6068 --- /dev/null +++ b/templates/categories.html @@ -0,0 +1,37 @@ +{% extends "base.html" %} + +{% block title %}Категории{% endblock %} + +{% block content %} + + + + + + + + + + + + + + {% for category in categories %} + + + + + + + + {% endfor %} + +
IDНазваниеОписаниеТоваровДействия
{{ category.id }}{{ category.name }}{{ category.description or '—' }}{{ category.products|length }} + 👁️ + ✏️ + 🗑️ +
+{% endblock %} \ No newline at end of file diff --git a/templates/category_detail.html b/templates/category_detail.html new file mode 100644 index 0000000..a7f4290 --- /dev/null +++ b/templates/category_detail.html @@ -0,0 +1,43 @@ +{% extends "base.html" %} + +{% block title %}{{ category.name }}{% endblock %} + +{% block content %} +
+

{{ category.name }}

+ ← К списку +
+ +
+

Информация о категории

+

Описание: {{ category.description or '—' }}

+
+ +
+

Товары в категории

+ {% if products %} + + + + + + + + + + + {% for product in products %} + + + + + + + {% endfor %} + +
АртикулНаименованиеЦенаАлкоголь
{{ product.article }}{{ product.name }}{{ product.base_price }} ₽{% if product.is_alcohol %}✅{% else %}❌{% endif %}
+ {% else %} +

В категории нет товаров

+ {% endif %} +
+{% endblock %} \ No newline at end of file diff --git a/templates/category_form.html b/templates/category_form.html new file mode 100644 index 0000000..bcd2b15 --- /dev/null +++ b/templates/category_form.html @@ -0,0 +1,39 @@ +{% extends "base.html" %} + +{% block title %}{{ 'Редактирование' if category else 'Добавление' }} категории{% endblock %} + +{% block content %} +
+

{{ '✏️ Редактирование категории' if category else '➕ Добавление новой категории' }}

+ +
+
+ + +
+ +
+ + +
+ +
+ + ↩️ Отмена +
+
+
+ + +{% endblock %} \ No newline at end of file diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..69c13f5 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,52 @@ +{% extends "base.html" %} + +{% block title %}Заявки{% endblock %} + +{% block content %} + + +{% if orders %} +
+ + + + + + + + + + + + {% for order in orders %} + + + + + + + + {% endfor %} + +
НомерДатаПартнерСуммаПозицийДействия
{{ order.order_number|default('?') }}\\ + {{ order.date_created.strftime('%d.%m.%Y %H:%M') if order.date_created else '—' }} + {% if order.partner %} + {{ order.partner.name|default('Без имени') }} + {% else %} + Партнёр удалён + {% endif %} + {{ order.calculate_total()|default(0) }} ₽{{ order.items|length|default(0) }} + 👁️ + 🗑️ +
+
+{% else %} +
+

📭 Нет заявок

+ ➕ Создать первую заявку +
+{% endif %} +{% endblock %} \ No newline at end of file diff --git a/templates/order_detail.html b/templates/order_detail.html new file mode 100644 index 0000000..37e6dfb --- /dev/null +++ b/templates/order_detail.html @@ -0,0 +1,68 @@ +{% extends "base.html" %} + +{% block title %}Заявка {{ order.order_number|default('?') }}{% endblock %} + +{% block content %} +
+

Заявка {{ order.order_number|default('?') }}

+ ← К списку +
+ +
+

Информация о заявке

+ + + + + + + + + +
Дата создания:{{ order.date_created.strftime('%d.%m.%Y %H:%M') if order.date_created else '—' }}
Партнер: + {% if order.partner %} + + {{ order.partner.name|default('Партнёр удалён') }} + + {% else %} + Партнёр удалён (ID: {{ order.partner_id|default('?') }}) + {% endif %} +
+
+ +
+

Состав заявки

+ + + + + + + + + + + + + + {% for item in order.items %} + + + + + + + + + + {% endfor %} + + + + + + + +
АртикулНаименованиеКоличествоЦенаАкцизСборСумма
{{ item.product.article|default('—') }}{{ item.product.name|default('—') }}{{ item.quantity|default(0) }} {{ item.product.unit|default('шт') }}{{ item.price_per_unit|default(0) }} ₽{{ item.product.excise_tax|default(0) }} ₽{{ item.product.license_fee|default(0) }} ₽{{ item.calculate_subtotal()|default(0) }} ₽
ИТОГО:{{ order.calculate_total()|default(0) }} ₽
+
+{% endblock %} \ No newline at end of file diff --git a/templates/order_form.html b/templates/order_form.html new file mode 100644 index 0000000..075a55a --- /dev/null +++ b/templates/order_form.html @@ -0,0 +1,353 @@ +{% extends "base.html" %} + +{% block title %}{{ 'Редактирование' if order else 'Новая' }} заявка{% endblock %} + +{% block content %} +
+

{{ '✏️ Редактирование заявки' if order else '➕ Новая заявка' }}

+ +
+
+ + +
+ +

Позиции заявки

+
+ {% if order %} + {% for item in order.items %} +
+ + + + +
+
+ + +
+ +
+ + {{ item.calculate_subtotal() }} ₽ +
+ +
+ Базовая: {{ item.product.base_price }} ₽ | + Акциз: {{ item.product.excise_tax }} ₽ | + Сбор: {{ item.product.license_fee }} ₽ + {% if order.partner and order.partner.discount > 0 %} + | Скидка: {{ order.partner.discount }}% + {% endif %} +
+
+
+ {% endfor %} + {% else %} +
+ + + + + + +
+
+ + +
+ +
+ + 0.00 ₽ +
+ +
+
+
+ {% endif %} +
+ + {% if not order %} + + {% endif %} + +
+
+

ИТОГО:

+

0.00 ₽

+
+
+ +
+ + ↩️ Отмена +
+
+
+ + + + +{% endblock %} \ No newline at end of file diff --git a/templates/partner_detail.html b/templates/partner_detail.html new file mode 100644 index 0000000..2997d76 --- /dev/null +++ b/templates/partner_detail.html @@ -0,0 +1,76 @@ +{% extends "base.html" %} + +{% block title %}{{ partner.name }}{% endblock %} + +{% block content %} +
+

{{ partner.name }}

+ ← К списку +
+ +
+

Информация о партнере

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Полное наименование:{{ partner.name }}
Сокращенное:{{ partner.short_name or '—' }}
Тип:{{ partner.partner_type or '—' }}
Руководитель:{{ partner.director or '—' }}
Телефон:{{ partner.phone or '—' }}
Фактический адрес:{{ partner.actual_address or '—' }}
Юридический адрес:{{ partner.legal_address or '—' }}
+
+ +
+

Заявки партнера

+ {% if orders %} + + + + + + + + + + + + {% for order in orders %} + + + + + + + + {% endfor %} + +
НомерДатаСтатусСуммаДействия
{{ order.order_number }}{{ order.date_created.strftime('%d.%m.%Y') }}{{ order.status }}{{ order.calculate_total() }} ₽ + 👁️ +
+ {% else %} +

У партнера нет заявок

+ {% endif %} +
+{% endblock %} \ No newline at end of file diff --git a/templates/partner_form.html b/templates/partner_form.html new file mode 100644 index 0000000..5126c43 --- /dev/null +++ b/templates/partner_form.html @@ -0,0 +1,89 @@ +{% extends "base.html" %} + +{% block title %}{{ 'Редактирование' if partner else 'Добавление' }} партнера{% endblock %} + +{% block content %} +
+

{{ '✏️ Редактирование партнера' if partner else '➕ Новый партнер' }}

+ +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + + Пример: +7(123)-456-78-90 +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + ↩️ Отмена +
+
+
+ + +{% endblock %} diff --git a/templates/partners.html b/templates/partners.html new file mode 100644 index 0000000..d4ca380 --- /dev/null +++ b/templates/partners.html @@ -0,0 +1,46 @@ +{% extends "base.html" %} + +{% block title %}Партнеры{% endblock %} + +{% block content %} + + + + + + + + + + + + + + + + + {% for partner in partners %} + {% if partner and partner.id %} + + + + + + + + + + + + {% endif %} + {% endfor %} + +
IDНаименованиеТипРуководительТелефонСумма заказовСкидкаЗаявокДействия
{{ partner.id|default('?') }}{{ partner.name|default('Без имени') }}{{ partner.partner_type|default('—') }}{{ partner.director|default('—') }}{{ partner.phone|default('—') }}{{ "%.2f"|format(partner.total_orders_sum|default(0)) }} ₽{{ partner.discount|default(0) }}%{{ partner.orders|length|default(0) }} + 👁️ + ✏️ + 🗑️ +
+{% endblock %} \ No newline at end of file diff --git a/templates/product_form.html b/templates/product_form.html new file mode 100644 index 0000000..52094a5 --- /dev/null +++ b/templates/product_form.html @@ -0,0 +1,98 @@ +{% extends "base.html" %} + +{% block title %}{{ 'Редактирование' if product else 'Добавление' }} товара{% endblock %} + +{% block content %} +
+

{{ '✏️ Редактирование товара' if product else '➕ Добавление нового товара' }}

+ +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+ + +
+ +
+ + +
+
+ +
+
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+ +
+ +
+
+ + +
+ +
+ + +
+
+ +
+ + ↩️ Отмена +
+
+
+ + +{% endblock %} \ No newline at end of file diff --git a/templates/products.html b/templates/products.html new file mode 100644 index 0000000..2324501 --- /dev/null +++ b/templates/products.html @@ -0,0 +1,58 @@ +{% extends "base.html" %} + +{% block title %}Товары{% endblock %} + +{% block content %} + + +
+
+ + + + Сбросить +
+
+ + + + + + + + + + + + + + + + {% for product in products %} + + + + + + + + + + + {% endfor %} + +
АртикулНаименованиеКатегорияЦенаАкцизСборАлкогольДействия
{{ product.article }}{{ product.name }}{{ product.category.name }}{{ product.base_price }} ₽{{ product.excise_tax }} ₽{{ product.license_fee }} ₽{% if product.is_alcohol %}✅{% else %}❌{% endif %} + ✏️ + 🗑️ +
+{% endblock %} \ No newline at end of file