diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5f2aa90..30225de 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -8,4 +8,9 @@ repos: - repo: https://github.com/pycqa/isort rev: 5.12.0 hooks: - - id: isort \ No newline at end of file + - id: isort + - repo: https://github.com/sqlfluff/sqlfluff + rev: 3.3.0 + hooks: + - id: sqlfluff-fix + args: [ --dialect=mariadb ] \ No newline at end of file diff --git a/App/Report/sql/sellers_report.sql b/App/Report/sql/sellers_report.sql index b02253a..49855a7 100644 --- a/App/Report/sql/sellers_report.sql +++ b/App/Report/sql/sellers_report.sql @@ -1,8 +1,9 @@ SELECT s.name AS Поставщик, - SUM(reports.count) AS 'Количество поставок', - SUM(reports.sum) AS Сумма + reports.sum AS 'Сумма в рублях', + reports.count AS 'Количество поставок' FROM reports JOIN sellers s ON reports.item_id = s.sel_id WHERE report_category_id = '$id' AND (month = '$month' AND year = '$year') -GROUP BY s.name; \ No newline at end of file +GROUP BY s.name +ORDER BY s.name; \ No newline at end of file diff --git a/App/Report/sql/workpiece_report.sql b/App/Report/sql/workpiece_report.sql index e35c331..6abe547 100644 --- a/App/Report/sql/workpiece_report.sql +++ b/App/Report/sql/workpiece_report.sql @@ -1,8 +1,8 @@ SELECT w.name AS Наименование, - w.material AS Материал, - sum(sum) AS Сумма, - sum(reports.count) AS Количество + reports.sum AS 'Сумма в рублях', + reports.count AS 'Количество поставленных заготовок' from reports JOIN workpiece w ON reports.item_id = w.work_id WHERE report_category_id = '$id' AND (month = '$month' AND year = '$year') -GROUP BY w.material, w.name; \ No newline at end of file +GROUP BY w.material, w.name +ORDER BY w.name; \ No newline at end of file diff --git a/App/Requests/__init__.py b/App/Requests/__init__.py index 6c6e471..bcc3027 100644 --- a/App/Requests/__init__.py +++ b/App/Requests/__init__.py @@ -4,8 +4,8 @@ from os import path from checker import check_auth from flask import Blueprint, render_template, request, url_for -from .requests_model import (materials_names, materials_per_seller, - sellers_names, sklad) +from .requests_model import (materials_per_seller, sellers_names, sklad, + workpiece_names) with open(path.join(path.dirname(__file__), "zapros_menu.json"), encoding="utf-8") as f: requests_list = json.load(f) @@ -24,12 +24,12 @@ def requests(): @check_auth def sklad_zapros(): if request.method == "GET": - return render_template("zagotovki.html") + workpiece = workpiece_names() + return render_template("zagotovki.html", workpiece=workpiece) else: zagotovki = sklad(request) if zagotovki.status: - material = dict(request.form) - header = f'Заготовки на складе из материала "{material["material"]}"' + header = "Поставки выбранной заготовки" return render_template("output.html", items=zagotovki.result, header=header) else: return render_template("error.html", error_message=zagotovki.error_message) @@ -39,7 +39,8 @@ def sklad_zapros(): @check_auth def sellers_ship(): if request.method == "GET": - return render_template("sellers_ship.html") + sellers = sellers_names() + return render_template("sellers_ship.html", sellers=sellers) else: zagotovki = materials_per_seller(request) if zagotovki.status: diff --git a/App/Requests/requests_model.py b/App/Requests/requests_model.py index 5f38c03..c70f707 100644 --- a/App/Requests/requests_model.py +++ b/App/Requests/requests_model.py @@ -15,46 +15,28 @@ class InfoRespronse: status: bool -def sellers_names() -> InfoRespronse: +def sellers_names() -> list: db_config = current_app.config["db_config"] _sql = sql_provider.get("sellers_names.sql", {}) result = select_list(db_config, _sql) - if result is None: - return InfoRespronse( - (), - error_message="Ошибка в подключении к базе данных. Свяжитесь с администратором", - status=False, - ) - return InfoRespronse(result, error_message="", status=True) + return result -def materials_names() -> InfoRespronse: +def workpiece_names() -> list: db_config = current_app.config["db_config"] - _sql = sql_provider.get("materials_names.sql", {}) + _sql = sql_provider.get("workpiece_names.sql", {}) result = select_list(db_config, _sql) - if result is None: - return InfoRespronse( - (), - error_message="Ошибка в подключении к базе данных. Свяжитесь с администратором", - status=False, - ) - return InfoRespronse(result, error_message="", status=True) + return result def sklad(request) -> InfoRespronse: db_config = current_app.config["db_config"] - material = dict(request.form) + workpiece = dict(request.form) - _sql = sql_provider.get("sklad_material.sql", material) + _sql = sql_provider.get("sklad_workpiece.sql", workpiece) result = select_list(db_config, _sql) - if result is None: - return InfoRespronse( - (), - error_message="Ошибка в подключении к базе данных. Свяжитесь с администратором", - status=False, - ) return InfoRespronse(result, error_message="", status=True) @@ -64,10 +46,4 @@ def materials_per_seller(request) -> InfoRespronse: seller = dict(request.form) _sql = sql_provider.get("ship_seller.sql", seller) result = select_list(db_config, _sql) - if result is None: - return InfoRespronse( - (), - error_message="Ошибка в подключении к базе данных. Свяжитесь с администратором", - status=False, - ) return InfoRespronse(result, error_message="", status=True) diff --git a/App/Requests/sql/materials_names.sql b/App/Requests/sql/materials_names.sql deleted file mode 100644 index e5873a7..0000000 --- a/App/Requests/sql/materials_names.sql +++ /dev/null @@ -1 +0,0 @@ -SELECT DISTINCT material FROM workpiece; \ No newline at end of file diff --git a/App/Requests/sql/ship_seller.sql b/App/Requests/sql/ship_seller.sql index 11edb10..f97bfb8 100644 --- a/App/Requests/sql/ship_seller.sql +++ b/App/Requests/sql/ship_seller.sql @@ -1,7 +1,9 @@ -SELECT w.waybill_date AS 'Дата поставки', +SELECT DATE_FORMAT(w.waybill_date, '%Y-%m-%d') AS 'Дата поставки', + TIME_FORMAT(w.waybill_date, '%H:%i') AS 'Время поставки', SUM(w.total) AS 'Общая сумма (в рублях)', SUM(wl.amount) as 'Общее количество заготовок' FROM waybill w + JOIN (SELECT waybill_id, SUM(amount) AS amount FROM waybill_lines wl GROUP BY waybill_id)wl USING (waybill_id) JOIN (SELECT user_id, sel_id FROM external_users) eu USING(user_id) JOIN (SELECT sel_id, name FROM sellers) s USING(sel_id) diff --git a/App/Requests/sql/sklad_material.sql b/App/Requests/sql/sklad_material.sql deleted file mode 100644 index 10de13c..0000000 --- a/App/Requests/sql/sklad_material.sql +++ /dev/null @@ -1,4 +0,0 @@ -SELECT weight AS 'Вес', price AS 'Цена (в рублях)', -count AS 'Количество', last_update AS 'Дата последнего обновления' -FROM workpiece -WHERE material = '$material' \ No newline at end of file diff --git a/App/Requests/sql/sklad_workpiece.sql b/App/Requests/sql/sklad_workpiece.sql new file mode 100644 index 0000000..14f8729 --- /dev/null +++ b/App/Requests/sql/sklad_workpiece.sql @@ -0,0 +1,12 @@ +SELECT + DATE_FORMAT(w.waybill_date, '%Y-%m-%d') AS 'Дата поставки', + TIME_FORMAT(w.waybill_date, '%H:%i') AS 'Время поставки', + s.name AS 'Поставщик', + wl.amount AS 'Количество' +FROM waybill w + +JOIN (SELECT waybill_id, work_id, amount FROM waybill_lines) wl USING(waybill_id) +JOIN (SELECT user_id, sel_id FROM external_users) eu USING(user_id) +JOIN (SELECT sel_id, name FROM sellers) s USING(sel_id) +WHERE work_id = '$workpiece' +GROUP BY waybill_date, name; \ No newline at end of file diff --git a/App/Requests/sql/workpiece_names.sql b/App/Requests/sql/workpiece_names.sql new file mode 100644 index 0000000..4251f0f --- /dev/null +++ b/App/Requests/sql/workpiece_names.sql @@ -0,0 +1,5 @@ +SELECT + work_id, + name, + price +FROM workpiece; diff --git a/App/Requests/templates/sellers_ship.html b/App/Requests/templates/sellers_ship.html index 844a8f6..d28af81 100644 --- a/App/Requests/templates/sellers_ship.html +++ b/App/Requests/templates/sellers_ship.html @@ -33,11 +33,9 @@
diff --git a/App/Requests/templates/zagotovki.html b/App/Requests/templates/zagotovki.html index c36de7d..bac2fae 100644 --- a/App/Requests/templates/zagotovki.html +++ b/App/Requests/templates/zagotovki.html @@ -2,7 +2,7 @@ -