Переделанный второй запрос

This commit is contained in:
Anton Kamalov
2024-10-24 22:48:26 +03:00
parent 6ae3bd327a
commit 42720af4e2
5 changed files with 35 additions and 33 deletions

View File

@@ -40,18 +40,18 @@ def sklad_zapros():
@check_auth
def zagotovki_ship():
if request.method == 'GET':
zagotovki = route(session['db_config'], {}, sql_provider, 'zagotovki.sql')
zagotovki = route(session['db_config'], {}, sql_provider, 'sellers.sql')
if zagotovki.status:
date_from = '2000-01-01'
date_to = date.today().strftime('%Y-%m-%d')
return render_template('zagotovki_ship.html', materials=zagotovki.result, date_from=date_from, date_to=date_to)
min_year = '2000'
max_year = str(date.today().year)
return render_template('zagotovki_ship.html', sellers=zagotovki.result, year_from=min_year, year_to=max_year)
else:
return render_template('error.html', error_message=zagotovki.error_message)
else:
material = dict(request.form)
zagotovki = route(session['db_config'], material, sql_provider, 'zapros2.sql')
seller = dict(request.form)
zagotovki = route(session['db_config'], seller, sql_provider, 'zapros2.sql')
if zagotovki.status:
header = f'Поставленные заготовки из материала \'{material["material"]}\''
header = f'Заготовки, поставленные поставщиком \'{seller['seller']}\''
return render_template('output.html', items=zagotovki.result, object=header)
else:
return render_template('error.html', error_message=zagotovki.error_message)

View File

@@ -0,0 +1,3 @@
SELECT name FROM sellers
ORDER BY name
LIMIT 100;

View File

@@ -1,11 +1,9 @@
SELECT sellers.name AS 'Поставщик',
w.date_of_delivery AS 'Дата поставки',
SUM(wl.count) AS 'Общее количество заготовок',
SUM(wl.price) AS 'Общая стоимость поставленных заготовок'
SELECT w.date_of_delivery AS 'Дата поставки',
SUM(w.sum) AS 'Общая сумма',
SUM(wl.cnt) as 'Количество'
FROM waybill w
JOIN waybill_lines wl USING(waybill_id)
JOIN workpiece USING(work_id)
JOIN (SELECT waybill_id, SUM(count) AS cnt FROM waybill_lines wl GROUP BY waybill_id)wl USING (waybill_id)
JOIN sellers USING(sel_id)
WHERE workpiece.material = '${material}'
AND (w.date_of_delivery BETWEEN '${date_from}' AND '${date_to}')
GROUP BY sellers.name, w.date_of_delivery;
WHERE sellers.name = '${seller}'
AND YEAR(date_of_delivery) = '${date}'
GROUP BY date_of_delivery

View File

@@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Поставки заготовок</title>
<title>Поставки за год</title>
<link href="/static/css/main.css" type="text/css" rel="stylesheet">
</head>
<body>
@@ -10,21 +10,22 @@
<a href="{{ url_for('logout') }}"><button>Выход</button></a>
</div>
<!-- Input -->
<h1>Поставки заготовок</h1>
<p>Выберите материал</p>
<form action="" method="post">
<select name="material">
{% for item in materials %}
<option value="{{ item['material'] }}">{{ item['material'] }}</option>
{% endfor %}
</select>
<p>Выберите даты:</p>
<p>с <input type="date" name="date_from" required min={{ date_from }} max={{ date_to }} id="date_from"></p>
<p>по <input type="date" name="date_to" required min={{ date_from }} max= {{ date_to }}" id="date_to"></p>
<input type="submit" value="Отправить">
</form>
<div class="return">
<a href="{{ url_for('requests_bp.requests') }}"><button>Обратно в меню запросов</button></a>
<h1>Поставки за год</h1>
<div class="form">
<p>Выберите поставщика</p>
<form action="" method="post">
<select name="seller">
{% for item in sellers %}
<option value="{{ item['name'] }}">{{ item['name'] }}</option>
{% endfor %}
</select>
<p>Выберите год:</p>
<p><input type="number" name="date" required min={{ year_from }} max={{ year_to }} value="2024"></p>
<input type="submit" value="Отправить">
</form>
<div class="return">
<a href="{{ url_for('requests_bp.requests') }}"><button>Обратно в меню запросов</button></a>
</div>
</div>
</body>
</html>

View File

@@ -1,4 +1,4 @@
[
{"name": "Материалы заготовок", "url": "requests_bp.sklad_zapros", "roles" : "admin, user"},
{"name": "Поставки заготовок", "url": "requests_bp.zagotovki_ship", "roles" : "admin, user"}
{"name": "Поставки заготовок за год", "url": "requests_bp.zagotovki_ship", "roles" : "admin, user"}
]