Berechnung des Übernachtungspreises und der Beherbergungssteuer der Stadt Dresden

Hier finden Sie einen Rechner, der sowohl die Gesamsumme für eine bestimme Anzahl an Übernachtungen ermittelt und die im Preis enthaltenen Netto-Beträge und zugehörige Mehrwertsteuer, als auch die im Gesamtpreis enthaltene Beherbergungssteuer, ausweist. Die Stadt Dresden erhebt auf alle Übernachtungen eine Beherbergungssteuer, aktuell in Höhe von 6% des Brutto-Übernachtungspreises, die eine Beherbergungseinrichtung einziehen und an an die Stadt abführen muss. Details dazu finden Sie auf den Internetseiten der Stadt Dresden. Nicht verpflichtet zur Zahlung der Beherbergungssteuer sind Personen, die das 27. Lebensjahr noch nicht vollendet haben und zu Ausbildungszwecken übernachten. Falls Sie das betrifft, müssen Sie mir einen entsprechenden Nachweis erbringen. Bitte lassen Sie dazu von Ihrer Bildungseinrichtung das folgende Formular ausfüllen und legen diesem eine Kopie Ihres Personalausweises bei. Befinden Sie sich in der Ausbildung, gelten für Sie auch spezielle Preise, die der Rechner automatisch zum Ansatz bringt, wenn Sie im oberen Feld "In Ausbildung: Ja" anklicken.

{source} <label for="ausbildung">Sind Sie in Ausbildung und unter 27 Jahre alt?</label> <select id="ausbildung"> <option value="">Bitte auswählen</option> <option value="ja">Ja</option> <option value="nein">Nein</option> </select> <br><br> <label for="naechte">Anzahl der Nächte (6–100):</label> <input type="number" id="naechte" min="6" max="100" step="1"> <div class="result" id="ergebnis" aria-live="polite"></div> <script> const naechteInput = document.getElementById("naechte"); const ausbildungSelect = document.getElementById("ausbildung"); const ergebnisDiv = document.getElementById("ergebnis"); const REINIGUNG_BRUTTO = 40.00; const AUSBILDUNG_RABATT = 0.75; const STEUERSATZ_BEHERBERGUNG = 0.06; const STEUERSATZ_MWST = 0.07; const MIN_NAECHTE = 6; const MAX_NAECHTE = 100; const PREISSTAFFEL = [ { bisNaechte: 12, preisProNacht: 48.00 }, { bisNaechte: 18, preisProNacht: 45.00 }, { bisNaechte: Infinity, preisProNacht: 42.00 } ]; let debounceTimer; naechteInput.addEventListener("input", () => { clearTimeout(debounceTimer); debounceTimer = setTimeout(berechnen, 200); }); ausbildungSelect.addEventListener("change", berechnen); function rundeAuf(zahl, stellen) { const faktor = 10 ** stellen; return Math.round(zahl * faktor) / faktor; } function ermittlePreisProNacht(naechte) { return PREISSTAFFEL.find(stufe => naechte <= stufe.bisNaechte).preisProNacht; } function formatEuro(zahl) { return zahl.toLocaleString("de-DE", { minimumFractionDigits: 2, maximumFractionDigits: 2 }); } function berechnen() { const ausbildung = ausbildungSelect.value; const naechte = Number(naechteInput.value); if (!ausbildung) { ergebnisDiv.innerHTML = "Bitte zuerst auswählen, ob Sie in Ausbildung sind."; return; } if (!Number.isInteger(naechte) || naechte < MIN_NAECHTE || naechte > MAX_NAECHTE) { ergebnisDiv.innerHTML = `Bitte eine ganze Zahl an Nächten zwischen ${MIN_NAECHTE} und ${MAX_NAECHTE} eingeben.`; return; } const basisPreisProNacht = ermittlePreisProNacht(naechte); const preisProNacht = (ausbildung === "ja") ? basisPreisProNacht * AUSBILDUNG_RABATT : basisPreisProNacht; const gesamtBrutto = rundeAuf((preisProNacht * naechte) + REINIGUNG_BRUTTO, 2); const uebernachtungBrutto = (ausbildung === "ja") ? gesamtBrutto : rundeAuf(gesamtBrutto / (1 + STEUERSATZ_BEHERBERGUNG), 2); const beherbergungssteuer = rundeAuf(gesamtBrutto - uebernachtungBrutto, 2); const uebernachtungNetto = rundeAuf(uebernachtungBrutto / (1 + STEUERSATZ_MWST), 2); const uebernachtungMwst = rundeAuf(uebernachtungBrutto - uebernachtungNetto, 2); const mwstProzent = Math.round(STEUERSATZ_MWST * 100); const beherbergungProzent = Math.round(STEUERSATZ_BEHERBERGUNG * 100); ergebnisDiv.innerHTML = ` Preis pro Nacht brutto: ${formatEuro(preisProNacht)} €<br> +einmalige Reinigungsgebühr brutto: ${formatEuro(REINIGUNG_BRUTTO)} €<br><br> <strong>Gesamtpreis für alle Nächte brutto (inkl. MwSt und Beherbergungssteuer): ${formatEuro(gesamtBrutto)} €</strong><br> <br> im Gesamtpreis sind enthalten:<br> - der Übernachtungspreis für den Zeitraum netto: ${formatEuro(uebernachtungNetto)} € (darauf erhobene MwSt ${mwstProzent}%: ${formatEuro(uebernachtungMwst)}) €<br> - damit der Übernachtungspreis brutto für den Zeitraum: ${formatEuro(uebernachtungBrutto)} €<br> - die Beherbergungssteuer (${beherbergungProzent}% des Übernachtungspreises, enthält keine MwSt): ${formatEuro(beherbergungssteuer)} €<br> `; } </script> {/source}