Snabb kalkylator för att räkna ut ersättning för beredskap på Skatteverket
  • Python 67.4%
  • JavaScript 15.9%
  • CSS 11.1%
  • HTML 5%
  • Dockerfile 0.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Andreas Feldt 15a2a62039
All checks were successful
Build and Push Docker Container / build_and_push (push) Successful in 19s
remove cache
2026-08-21 23:54:18 +02:00
.github/workflows Fixade path i workflow 2026-08-21 23:51:11 +02:00
api Added UI and API 2026-08-21 23:23:27 +02:00
modules Added UI and API 2026-08-21 23:23:27 +02:00
web remove cache 2026-08-21 23:54:18 +02:00
.env.example Refaktorerade allt 2026-06-25 18:09:31 +02:00
.gitignore First commit 2026-05-21 08:22:15 +02:00
app.py Added UI and API 2026-08-21 23:23:27 +02:00
docker-compose.yml a 2026-08-21 23:30:11 +02:00
README.md Added UI and API 2026-08-21 23:23:27 +02:00
requirements.txt Refaktorerade allt 2026-06-25 18:09:31 +02:00
test_tax.py Added UI and API 2026-08-21 23:23:27 +02:00

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 08:00 → Fredag 18:00 månadslön ÷ 1 000
Helg Fredag 18:00 → Måndag 08: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

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 08:00.


Exempelutskrift

════════════════════════════════════════════════════════
  BEREDSKAPSERSÄTTNING
════════════════════════════════════════════════════════
  Period:     2026-05-25 08:00 → 2026-06-01 08:00
  Månadslön:  54,000 kr
────────────────────────────────────────────────────────
  Tariff                   Timmar     Timlön        Summa
────────────────────────────────────────────────────────
  Ordinarie  (÷1000)       63.5 h     54.00 kr     3429.00 kr
  Helg       (÷600)        62.0 h     90.00 kr     5580.00 kr
  Storhelg   (÷350)         0.0 h    154.29 kr        0.00 kr
────────────────────────────────────────────────────────
  TOTALT                  125.5 h                9009.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.


Webb-UI

Ett litet webbgränssnitt finns också, uppdelat i två containrar: ett FastAPI-API (api/) som återanvänder modules/ och app.py, och en statisk nginx-frontend (web/) som proxar /api/* till API:t. Ingen inloggning eller lagring av data.

cp .env.example .env   # om du inte redan har en
docker compose up --build

Öppna sedan http://localhost:8080.


Projektstruktur

app.py                    CLI-ingångspunkt: argumenttolkning och sammankoppling
.env.example              Mall för konfigurationsfilen
docker-compose.yml         Startar api + web
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
api/                      FastAPI-wrapper runt modules/ (Dockerfile, main.py)
web/                      Statisk frontend + nginx-proxy (Dockerfile, public/)