zapamietanie akcji

This commit is contained in:
Mateusz Gruszczyński
2026-07-19 19:22:52 +02:00
parent 697ac6da30
commit 5299a7fc66
5 changed files with 26 additions and 10 deletions
+11 -1
View File
@@ -308,7 +308,17 @@ def fuel():
p = fetch_orlen_price(request.form["fuel_type"], fueled_at.date(), price_region); wholesale=p["price_per_liter"]; source=p["source"]
except Exception: pass
station_label = station_company.company_name if station_company else request.form.get("station")
e = FuelEntry(vehicle=vehicle, user_id=current_user.id, fueled_at=fueled_at, liters=Decimal(request.form["liters"]), price_per_liter=Decimal(request.form["price_per_liter"]), fuel_type=request.form["fuel_type"], odometer=odometer, station=station_label, station_company_id=station_company.id if station_company else None, invoice_number=request.form.get("invoice_number"), used_fuel_card="used_fuel_card" in request.form, wholesale_price=wholesale, wholesale_source=source)
requested_card_id = request.form.get("fuel_card_id", type=int)
default_card_id = vehicle.fuel_card_id or current_user.fuel_card_id
fuel_card = db.session.get(FuelCard, requested_card_id or default_card_id) if (requested_card_id or default_card_id) else None
used_fuel_card = "used_fuel_card" in request.form and fuel_card is not None
if fuel_card and fuel_card.company_id and fuel_card.company_id != (vehicle.company_id or vehicle.owner.company_id):
response = error_response("Wybrana karta nie należy do firmy pojazdu"); return response or redirect(url_for("main.fuel"))
if used_fuel_card and station_company:
card_rule = FuelCardStationRule.query.filter_by(fuel_card_id=fuel_card.id, station_company_id=station_company.id).first()
if card_rule and not card_rule.allowed:
response = error_response("Ta stacja jest zablokowana dla wybranej karty paliwowej", 403); return response or redirect(url_for("main.fuel"))
e = FuelEntry(vehicle=vehicle, user_id=current_user.id, fueled_at=fueled_at, liters=Decimal(request.form["liters"]), price_per_liter=Decimal(request.form["price_per_liter"]), fuel_type=request.form["fuel_type"], odometer=odometer, station=station_label, station_company_id=station_company.id if station_company else None, fuel_card_id=fuel_card.id if used_fuel_card else None, invoice_number=request.form.get("invoice_number"), used_fuel_card=used_fuel_card, wholesale_price=wholesale, wholesale_source=source)
freeze_vat_action(e, settings.vat_rate)
freeze_settlement(e, settings, source="Automatycznie przy dodaniu")
vehicle.current_odometer = odometer; db.session.add(e); db.session.commit(); response = ok_response("Zapisano tankowanie", redirect=url_for("main.dashboard")); return response or redirect(url_for("main.dashboard"))