- Python 100%
| modules | ||
| .env.example | ||
| .gitignore | ||
| app.py | ||
| README.md | ||
| requirements.txt | ||
Beredskapsersättning – kalkylator
Beräknar beredskapsersättning enligt kollektivavtalsregler med tre tariffzoner, korrekta svenska helgdagsregler och exkludering av ordinarie arbetstid (08:00–16:30).
Tariffzoner
| Zon | Period | Divisor |
|---|---|---|
| Ordinarie | Måndag 06:00 → Fredag 18:00 | månadslön ÷ 1 000 |
| Helg | Fredag 18:00 → Måndag 06:00, samt kvällen innan: Trettondagen, 1 maj, Kristi himmelsfärdsdag, Nationaldagen, Alla helgons dag | månadslön ÷ 600 |
| Storhelg | Kvällen innan: Pingstafton, Midsommarafton, Julafton, Nyårsafton · Skärtorsdag fr.o.m. 16:00 | månadslön ÷ 350 |
Ordinarie arbetstid 08:00–16:30 på vardagar räknas inte som beredskapstid. Högrebetalda zoner vinner alltid – en timme i storhelg räknas aldrig också som helg.
Krav
- Python 3.10+
holidaysochpython-dotenv
pip install -r requirements.txt
Konfiguration
Kopiera .env.example till .env och fyll i dina egna värden:
cp .env.example .env
MANADSLON=54000
KOMMUNALSKATT=0.34
PRISBASBELOPP=58800
SKIKTGRANS=643900
Du behöver bara ta med de variabler du vill ändra — resten faller tillbaka på standardvärdena.
.env-filen är gitignorerad och checkas aldrig in.
Användning
python app.py # Innevarande beredskapsvecka
python app.py --start W22 # Vecka 22, innevarande år
python app.py --start 2026-W22 # Vecka 22 år 2026
python app.py --start 2026-06-01 # En vecka från angivet startdatum
python app.py --start 2026-06-01 --end 2026-06-08 # Valfri period
python app.py --start 2026-06-01T06:00 # Med specifikt klockslag
python app.py --vecka +1 # Nästa vecka
python app.py --vecka -1 # Förra veckan
python app.py --start W22 --verbose # Med daglig timuppdelning
python app.py --start W22 --skatt # Med skatteuppskattning
python app.py --start W22 --helgdagar # Visa helgdagar och högtider
python app.py --start W22 --verbose --skatt # Kombinera flaggor
Datum kan anges som ÅÅÅÅ-MM-DD, ÅÅÅÅ-MM-DDTHH:MM, WVV eller ÅÅÅÅ-WVV.
Datum utan klockslag tolkas som kl 06:00.
Exempelutskrift
════════════════════════════════════════════════════════
BEREDSKAPSERSÄTTNING
════════════════════════════════════════════════════════
Period: 2026-05-25 06:00 → 2026-06-01 06:00
Månadslön: 54,000 kr
────────────────────────────────────────────────────────
Tariff Timmar Timlön Summa
────────────────────────────────────────────────────────
Ordinarie (÷1000) 65.5 h 54.00 kr 3537.00 kr
Helg (÷600) 60.0 h 90.00 kr 5400.00 kr
Storhelg (÷350) 0.0 h 154.29 kr 0.00 kr
────────────────────────────────────────────────────────
TOTALT 125.5 h 8937.00 kr
════════════════════════════════════════════════════════
Med --verbose visas en rad per dag med timmar per zon och delsumma.
Med --skatt visas en uppskattning av marginalskatten baserad på kommunalskatt,
eventuell statlig inkomstskatt samt grundavdrag och jobbskatteavdrag. Resultatet
är en uppskattning — rådfråga en skatterådgivare för exakta siffror.
Projektstruktur
app.py CLI-ingångspunkt: argumenttolkning och sammankoppling
.env.example Mall för konfigurationsfilen
modules/
config.py Inställningar lästa från .env (lön, skattesats m.m.)
models.py Dataklasser: RateCategory, CalculationResult, TaxResult m.fl.
calendar.py Svensk semesterkalender och HolidayCalendar-protokollet
rates.py RateClassifier – avgör tariff för en given tidpunkt
calculator.py BeredskapsCalculator – orkestrerar beräkningen
tax.py SwedishMarginalTaxCalculator och TaxCalculator-protokollet
formatters.py ConsoleFormatter – all terminalutskrift
__init__.py Genvägsimporter för vanliga användningsfall
requirements.txt