diff --git a/app/main.py b/app/main.py index 1609f1c..58e02d7 100644 --- a/app/main.py +++ b/app/main.py @@ -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 entry_vat_rate, freeze_vat_action, global_vat_override, save_global_vat_override +from .vat import effective_vat_rate, entry_vat_rate, freeze_vat_action, global_vat_override, save_global_vat_override from .settlement import calculate as calculate_snapshot_settlement, freeze as freeze_settlement from .orlen_sync import sync_orlen_prices diff --git a/tests/test_app.py b/tests/test_app.py index 0cd4d2a..b04e18a 100644 --- a/tests/test_app.py +++ b/tests/test_app.py @@ -505,3 +505,48 @@ def test_orlen_page_has_incremental_and_full_refresh_controls(tmp_path): assert 'Pobierz nowe dane' in html assert 'id="orlen-full-sync-btn"' in html assert 'Pobierz cały wybrany rok ponownie' in html + + +def test_orlen_period_comparison_adds_effective_vat_for_each_date(tmp_path): + from datetime import date + from decimal import Decimal + from app.extensions import db + from app.models import AppSetting, OrlenPrice + + app = make_app(tmp_path, "orlen-period-vat.db") + client = app.test_client() + client.post('/login', data={'email': 'admin@example.com', 'password': 'admin123!'}) + + with app.app_context(): + for key, value in { + 'global_vat_override_enabled': '1', + 'global_vat_override_name': 'Czasowa stawka', + 'global_vat_override_rate': '8', + 'global_vat_override_start': '2026-07-01', + 'global_vat_override_end': '2026-07-31', + }.items(): + db.session.merge(AppSetting(key=key, value=value)) + db.session.add_all([ + OrlenPrice( + fuel_type='PB95', effective_date=date(2026, 7, 15), + price_per_liter=Decimal('100.0000'), raw_value=Decimal('100000'), + region='', product_name='PB95', source='test', + ), + OrlenPrice( + fuel_type='PB95', effective_date=date(2026, 8, 1), + price_per_liter=Decimal('100.0000'), raw_value=Decimal('100000'), + region='', product_name='PB95', source='test', + ), + ]) + db.session.commit() + + response = client.get( + '/orlen?mode=compare&comparison_type=periods&compare_fuel=PB95&gross=1' + '&period_a_from=2026-07-01&period_a_to=2026-07-31' + '&period_b_from=2026-08-01&period_b_to=2026-08-31' + ) + + assert response.status_code == 200 + html = response.get_data(as_text=True) + assert '108.0000 zł/l' in html + assert '123.0000 zł/l' in html