zapamietanie akcji

This commit is contained in:
Mateusz Gruszczyński
2026-07-19 19:00:04 +02:00
parent e26d9e4ff3
commit 659f04f05f
9 changed files with 121 additions and 8 deletions
+6 -2
View File
@@ -11,7 +11,7 @@ from .models import User, Vehicle, FuelEntry, CompanySettings, AppSetting, Orlen
from .services import calculate_costs, fetch_orlen_price, fetch_orlen_range, invoice_period, fetch_ure_stations, aggregate_ure_companies, POLISH_REGIONS
from .station_catalog import sync_station_catalog
from . import THEMES
from .vat import effective_vat_rate, global_vat_override, save_global_vat_override
from .vat import entry_vat_rate, freeze_vat_action, global_vat_override, save_global_vat_override
from .domain.costs import calculate_net_price_costs, calculate_net_price_comparison
main = Blueprint("main", __name__)
@@ -70,6 +70,7 @@ def parse_fuel_entry_form(entry):
fuel_type = (request.form.get("fuel_type") or "").upper()
if fuel_type not in FUEL_TYPES:
raise ValueError("Nieprawidłowy rodzaj paliwa")
previous_fueled_at = entry.fueled_at
fueled_at = datetime.fromisoformat(request.form.get("fueled_at", ""))
liters = Decimal(request.form.get("liters", ""))
price = Decimal(request.form.get("price_per_liter", ""))
@@ -99,6 +100,8 @@ def parse_fuel_entry_form(entry):
wholesale_price = (request.form.get("wholesale_price") or "").strip()
entry.wholesale_price = Decimal(wholesale_price) if wholesale_price else None
entry.wholesale_source = (request.form.get("wholesale_source") or "").strip() or None
settings = vehicle.company or (vehicle.owner.company if vehicle.owner else None) or CompanySettings.query.first()
freeze_vat_action(entry, settings.vat_rate, previous_fueled_at)
return vehicle
@@ -110,7 +113,7 @@ def calculate_entry_settlement(entry, fallback_settings=None):
separately and never counted as a Last Price saving.
"""
entry_settings = entry.vehicle.company or (entry.vehicle.owner.company if entry.vehicle and entry.vehicle.owner else None) or fallback_settings or CompanySettings.query.first()
vat_rate = effective_vat_rate(entry_settings.vat_rate, entry.fueled_at)
vat_rate = entry_vat_rate(entry, entry_settings.vat_rate)
vat_deduction_percent = entry_settings.vat_deduction_percent
retail_price = Decimal(entry.price_per_liter)
rule = FuelCardStationRule.query.filter_by(
@@ -318,6 +321,7 @@ def fuel():
except Exception: pass
station_label = station_company.company_name if station_company else request.form.get("station")
e = FuelEntry(vehicle_id=vehicle.id, 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)
freeze_vat_action(e, settings.vat_rate)
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"))
allowed=list(settings.allowed_stations)
company_favorites=list(settings.favorite_stations)