Merge remote-tracking branch 'refs/remotes/origin/main'

This commit is contained in:
2026-09-15 16:45:31 +02:00
8 changed files with 514 additions and 95 deletions
+62 -32
View File
@@ -146,6 +146,34 @@
</section>
<section class="packages-grid" aria-label="Buchungspakete">
<!-- TESTVERSION -->
<article class="package-card">
<div class="package-card__header">
<div>
<span class="package-card__tag" style="background: #e8f5e9; color: #2e7d32;">Kostenlos</span>
<h2 class="package-card__name">Testversion</h2>
</div>
<div class="package-card__price">
<span>0 €</span><small> -> 14 Tage</small>
</div>
</div>
<p class="package-card__description">Testen Sie alle Module (Inventar, Bibliothek & Terminplaner) 14 Tage lang unverbindlich in Ihrer Schule.</p>
<ul class="package-card__features">
<li>Voller Zugriff auf alle Basis-Module</li>
<li>Keine automatische Verlängerung</li>
<li>Vollständige Datenübernahme bei Kauf</li>
<li>Endet automatisch nach 14 Tagen</li>
</ul>
<div class="package-card__actions">
{% if 'username' in session %}
<button class="btn add-to-cart-btn" data-id="testversion" data-name="Testversion (14 Tage)" data-price="0" onclick="handleAddToCart(this)">
Jetzt kostenlos starten
</button>
{% else %}
<a class="btn secondary" href="{{ url_for('login') }}">Zum Testen einloggen</a>
{% endif %}
</div>
</article>
<!-- INVENTARSYSTEM -->
<article class="package-card">
<div class="package-card__header">
@@ -232,35 +260,6 @@
</div>
</article>
<!-- STARTPAKET (Kombi) -->
<!--<article class="package-card highlight">
<div class="package-card__header">
<div>
<span class="package-card__tag highlight-tag">Sparpaket</span>
<h2 class="package-card__name">Startpaket</h2>
</div>
<div class="package-card__price">
<span>490 €</span><small>/ Jahr</small>
</div>
</div>
<p class="package-card__description">Enthält <strong>Inventarverwaltung</strong> und <strong>Bibliothekssystem</strong> als ideale Komplettlösung zum Vorzugspreis.</p>
<ul class="package-card__features">
<li>Beinhaltet alle Features des Inventarsystems</li>
<li>Beinhaltet alle Features des Bibliothekssystems</li>
<li>Perfekter Start für Ihre Digitalisierung</li>
<li><strong>30 € Ersparnis</strong> gegenüber Einzelkauf</li>
</ul>
<div class="package-card__actions">
{% if 'username' in session %}
<button class="btn add-to-cart-btn" data-id="startpaket" data-name="Startpaket (Inventar + Bibliothek)" data-price="490" onclick="handleAddToCart(this)">
In den Warenkorb
</button>
{% else %}
<a class="btn secondary" href="{{ url_for('login') }}">Zum Buchen einloggen</a>
{% endif %}
</div>
</article>-->
<!-- SCHULTRÄGER -->
<article class="package-card">
<div class="package-card__header">
@@ -336,8 +335,8 @@
<div class="custom-modal-actions" id="cartActions">
<button class="btn secondary" type="button" onclick="closeCartModal()">Weiter umsehen</button>
<button class="btn outline" type="button" onclick="goToCheckout('consultation')">Beratungstermin anfragen</button>
<button class="btn" type="button" onclick="goToCheckout('payment')">Jetzt Zahlungspflichtig buchen</button>
<button class="btn outline" type="button" id="btnConsultation" onclick="goToCheckout('consultation')">Beratungstermin anfragen</button>
<button class="btn" type="button" id="btnCheckout" onclick="goToCheckout('payment')">Jetzt Zahlungspflichtig buchen</button>
</div>
</div>
</div>
@@ -383,7 +382,10 @@
if(item.price > 0) total += item.price;
if(item.price === 0) hasIndividualPrice = true;
const priceText = item.price > 0 ? `${item.price} €` : "Auf Anfrage";
let priceText = `${item.price} €`;
if (item.price === 0) {
priceText = item.id === 'testversion' ? 'Kostenlos' : 'Auf Anfrage';
}
container.innerHTML += `
<div class="cart-item">
@@ -404,6 +406,28 @@
} else {
totalPriceEl.innerText = `${total} € / Jahr`;
}
// Dynamic Checkout Button Text & Behavior
const btnCheckout = document.getElementById('btnCheckout');
const btnConsultation = document.getElementById('btnConsultation');
const isTrial = cart.some(item => item.id === 'testversion');
const isCustom = cart.some(item => item.id === 'schultraeger');
if (isTrial) {
btnCheckout.innerText = "Kostenlos testen (14 Tage)";
btnCheckout.setAttribute('onclick', "goToCheckout('trial')");
btnConsultation.style.display = 'none'; // Hide consultation for trials
} else if (isCustom) {
btnCheckout.innerText = "Angebot anfordern";
btnCheckout.setAttribute('onclick', "goToCheckout('consultation')"); // Force consultation
btnConsultation.style.display = 'none';
} else {
btnCheckout.innerText = "Jetzt Zahlungspflichtig buchen";
btnCheckout.setAttribute('onclick', "goToCheckout('payment')");
btnConsultation.style.display = 'inline-block';
}
}
// Artikel zum Warenkorb hinzufügen
@@ -414,6 +438,12 @@
return;
}
const hasTestversion = cart.find(i => i.id === 'testversion');
if (hasTestversion || (id === 'testversion' && cart.length > 0)) {
alert('Die Testversion beinhaltet bereits alle Module und kann nicht mit anderen Paketen kombiniert werden. Bitte leeren Sie Ihren Warenkorb zuerst.');
return;
}
// Konflikte mit Startpaket abfangen
const hasStartpaket = cart.find(i => i.id === 'startpaket');
if (hasStartpaket && (id === 'inventarsystem' || id === 'buecherei')) {