CluPilotCloud/resources/views/legal/terms.blade.php

254 lines
15 KiB
PHP

{{--
AGB.
Written from what this software actually does the checkout, the withdrawal
handling in App\Services\Billing\WithdrawalRight, the capacity queue in
App\Provisioning\Steps\Customer\ReserveResources, the two account-deletion
sweeps in app/Console/Commands, the cancellation in ConfirmCancelPackage.
Nothing here promises anything the code does not do, and no availability
figure or liability cap has been invented: where the statute already says it,
the statute is referred to rather than restated with numbers nobody checked.
The company data comes from CompanyProfile so this page and the invoices
cannot drift apart. Filling in the real register number in the console fixes
it here too.
This is the operator's text, not a lawyer's opinion. It should be read by one
before it is relied on in a dispute.
--}}
@php
$company = App\Support\CompanyProfile::all();
$vat = rtrim(rtrim(number_format(App\Support\CompanyProfile::taxRate(), 1, ',', '.'), '0'), ',');
$setup = App\Support\CompanyProfile::setupFeeCents();
$unverifiedDays = App\Console\Commands\PruneUnverifiedAccounts::AFTER_DAYS;
@endphp
<div class="mt-10 space-y-8 rounded-xl border border-line bg-surface p-8 shadow-xs lg:p-10">
<p class="text-sm text-muted">Fassung vom {{ now()->local()->isoFormat('D. MMMM YYYY') }}</p>
<section class="space-y-3">
<h2 class="text-md font-bold tracking-[-0.01em] text-ink">1. Vertragspartner und Geltungsbereich</h2>
<p class="text-md leading-relaxed text-body">
Diese Allgemeinen Geschäftsbedingungen gelten für alle Verträge zwischen
{{ $company['name'] }}, {{ $company['address'] }}, {{ $company['postcode'] }} {{ $company['city'] }},
{{ $company['country'] }} (im Folgenden „CluPilot“) und ihren Kundinnen und Kunden über die
Bereitstellung und den Betrieb von Nextcloud-Instanzen und der dazugehörigen Zusatzleistungen.
Die vollständigen Unternehmensdaten stehen im <a href="{{ route('legal.impressum') }}" class="font-medium text-accent-text underline-offset-4 hover:underline">Impressum</a>.
</p>
<p class="text-md leading-relaxed text-body">
Abweichende Bedingungen des Kunden werden nicht Vertragsinhalt, auch wenn CluPilot ihnen nicht
ausdrücklich widerspricht.
</p>
</section>
<section class="space-y-3">
<h2 class="text-md font-bold tracking-[-0.01em] text-ink">2. Leistungsgegenstand</h2>
<p class="text-md leading-relaxed text-body">
CluPilot stellt eine betriebsfertige Nextcloud-Installation auf eigener Infrastruktur bereit und
betreibt sie. Welcher Speicherplatz, welches Datenvolumen und wie viele Benutzerkonten enthalten
sind, ergibt sich aus dem gebuchten Paket, das dem Kunden bei der Bestellung und im Kundenportal
angezeigt wird. Zum Betrieb gehören das Einspielen von Sicherheits- und Versionsaktualisierungen,
die Überwachung des Dienstes und die im Paket beschriebenen Sicherungen.
</p>
<p class="text-md leading-relaxed text-body">
Der Standort der Instanz wird bei der Bestellung angezeigt. Ein Anspruch auf einen bestimmten
Server besteht nicht; CluPilot darf eine Instanz auf einen anderen Server derselben Region
verlegen, wenn der Betrieb dies erfordert.
</p>
</section>
<section class="space-y-3">
<h2 class="text-md font-bold tracking-[-0.01em] text-ink">3. Zustandekommen des Vertrags</h2>
<p class="text-md leading-relaxed text-body">
Die Darstellung der Pakete auf der Website ist kein Angebot, sondern eine Einladung zur Bestellung.
Bestellt wird ausschließlich im Kundenportal. Der Kunde gibt seine Bestellung ab, indem er diese
AGB durch Setzen des Häkchens annimmt und anschließend die Bezahlung abschließt. Ohne diese Annahme
kann keine Bestellung abgeschickt werden.
</p>
<p class="text-md leading-relaxed text-body">
Der Vertrag kommt mit dem Eingang der Zahlung zustande. Der Kunde erhält darüber eine Bestätigung
per E-Mail; die Rechnung wird gesondert zugestellt und ist im Kundenportal abrufbar.
</p>
</section>
<section class="space-y-3">
<h2 class="text-md font-bold tracking-[-0.01em] text-ink">4. Preise, Umsatzsteuer und Zahlung</h2>
<p class="text-md leading-relaxed text-body">
Die im Kundenportal angezeigten Preise für Verbraucher sind Bruttopreise und enthalten
{{ $vat }} % Umsatzsteuer. Unternehmerischen Kunden werden die Preise zusätzlich netto ausgewiesen;
bei einer gültigen UID aus einem anderen EU-Mitgliedstaat wird die Umsatzsteuer nach dem
Reverse-Charge-Verfahren nicht in Rechnung gestellt.
</p>
<p class="text-md leading-relaxed text-body">
Das Entgelt ist monatlich im Voraus fällig und wird über den Zahlungsdienstleister Stripe
eingezogen.
@if ($setup > 0)
Zusätzlich wird eine einmalige Einrichtungsgebühr von
{{ Number::currency($setup / 100, in: 'EUR', locale: 'de') }} verrechnet; sie ist bei der
ersten Zahlung fällig und wird bei der Bestellung ausgewiesen.
@else
Eine Einrichtungsgebühr wird derzeit nicht verrechnet. Fällt eine an, wird sie bei der
Bestellung ausgewiesen und ist mit der ersten Zahlung fällig.
@endif
</p>
<p class="text-md leading-relaxed text-body">
Zusatzleistungen (etwa zusätzlicher Speicher oder eine eigene Domain) werden zum jeweils
angezeigten Preis gebucht und ab der nächsten Abrechnungsperiode gemeinsam mit dem Paket
verrechnet.
</p>
</section>
<section class="space-y-3">
<h2 class="text-md font-bold tracking-[-0.01em] text-ink">5. Bereitstellung</h2>
<p class="text-md leading-relaxed text-body">
Die Einrichtung beginnt unmittelbar nach Eingang der Zahlung und ist üblicherweise innerhalb
weniger Minuten abgeschlossen. Der Kunde erhält seine Zugangsdaten per E-Mail, sobald die Instanz
bereitsteht. Eine bestimmte Bereitstellungsdauer wird nicht zugesagt.
</p>
<p class="text-md leading-relaxed text-body">
Steht zum Zeitpunkt der Bestellung keine freie Kapazität zur Verfügung, wird die Bestellung
vorgemerkt und ausgeliefert, sobald Kapazität geschaffen ist; der Kunde wird darüber informiert.
Ist die Bereitstellung binnen 14 Tagen nicht möglich, kann der Kunde vom Vertrag zurücktreten und
erhält den gezahlten Betrag zurück.
</p>
</section>
<section class="space-y-3">
<h2 class="text-md font-bold tracking-[-0.01em] text-ink">6. Widerrufsrecht für Verbraucher</h2>
<p class="text-md leading-relaxed text-body">
Verbraucher können binnen 14 Tagen ab Vertragsabschluss ohne Angabe von Gründen vom Vertrag
zurücktreten. Für die Erklärung genügt eine Mitteilung an
<a href="mailto:{{ $company['email'] }}" class="font-medium text-accent-text underline-offset-4 hover:underline">{{ $company['email'] }}</a>;
im Kundenportal steht dafür auch eine Schaltfläche bereit.
</p>
<p class="text-md leading-relaxed text-body">
Mit der Annahme dieser AGB bei der Bestellung verlangt der Kunde ausdrücklich, dass CluPilot mit
der Leistung schon vor Ablauf dieser Frist beginnt anders wäre eine sofortige Bereitstellung
nicht möglich. Das Widerrufsrecht bleibt davon unberührt: Bei einem Widerruf innerhalb der Frist
erhält der Kunde den <strong class="font-semibold text-ink">gesamten gezahlten Betrag</strong>
zurück. Ein Wertersatz für die Tage, an denen die Cloud bereits gelaufen ist, wird nicht verlangt,
obwohl § 16 FAGG dies zulassen würde. Über den Widerruf wird eine Storno-Rechnung ausgestellt.
</p>
<p class="text-md leading-relaxed text-body">
Unternehmerischen Kunden steht dieses Rücktrittsrecht nicht zu.
</p>
</section>
<section class="space-y-3">
<h2 class="text-md font-bold tracking-[-0.01em] text-ink">7. Laufzeit und Kündigung</h2>
<p class="text-md leading-relaxed text-body">
Der Vertrag läuft auf unbestimmte Zeit und kann vom Kunden jederzeit im Kundenportal zum Ende der
laufenden Abrechnungsperiode gekündigt werden. Bis dahin bleibt die Cloud vollständig nutzbar. Zum
Ende der Periode erhält der Kunde einen Datenexport; danach wird die Instanz abgebaut und die
Daten werden gelöscht.
</p>
<p class="text-md leading-relaxed text-body">
CluPilot kann den Vertrag mit einer Frist von drei Monaten zum Monatsende kündigen sowie aus
wichtigem Grund mit sofortiger Wirkung, insbesondere bei Zahlungsverzug trotz Mahnung oder bei
einem Verstoß gegen Punkt 9.
</p>
</section>
<section class="space-y-3">
<h2 class="text-md font-bold tracking-[-0.01em] text-ink">8. Kundenkonto und Löschfristen</h2>
<p class="text-md leading-relaxed text-body">
Ein Konto entsteht mit der Registrierung im Kundenportal und ist erst nach Bestätigung der
E-Mail-Adresse nutzbar. CluPilot löscht Konten von selbst, damit keine unbenutzten Daten liegen
bleiben:
</p>
<ul class="ml-5 list-disc space-y-2 text-md leading-relaxed text-body">
<li>
<strong class="font-semibold text-ink">Nicht bestätigte Registrierungen</strong> werden nach
{{ $unverifiedDays }} Tagen gelöscht. Die E-Mail-Adresse ist danach wieder frei.
</li>
<li>
<strong class="font-semibold text-ink">Bestätigte Konten ohne Paket</strong> werden nach einem
Jahr gelöscht, wenn zu ihnen nie ein Paket, eine Buchung oder eine Rechnung bestanden hat.
CluPilot kündigt das vorher per E-Mail an; eine Anmeldung oder eine Bestellung setzt die Frist
zurück.
</li>
</ul>
<p class="text-md leading-relaxed text-body">
Ein Konto mit gebuchtem Paket wird nicht automatisch gelöscht. Der Kunde kann sein Konto jederzeit
selbst schließen, sobald kein Paket mehr läuft. Rechnungen und Buchhaltungsunterlagen bewahrt
CluPilot unabhängig davon sieben Jahre auf dazu ist sie nach § 132 BAO verpflichtet.
</p>
</section>
<section class="space-y-3">
<h2 class="text-md font-bold tracking-[-0.01em] text-ink">9. Pflichten des Kunden</h2>
<p class="text-md leading-relaxed text-body">
Der Kunde bewahrt seine Zugangsdaten sorgfältig auf und ist für die Inhalte verantwortlich, die er
und die von ihm angelegten Benutzer in der Cloud speichern. Rechtswidrige Inhalte, das Versenden
unerbetener Massen-E-Mails und jede Nutzung, die den Betrieb der Plattform gefährdet, sind
untersagt. CluPilot sieht Kundendaten nicht ein, außer der Kunde bittet im Rahmen einer
Supportanfrage darum oder eine gesetzliche Verpflichtung besteht.
</p>
</section>
<section class="space-y-3">
<h2 class="text-md font-bold tracking-[-0.01em] text-ink">10. Verfügbarkeit und Wartung</h2>
<p class="text-md leading-relaxed text-body">
CluPilot betreibt die Plattform mit der Sorgfalt eines fachkundigen Betreibers, schuldet aber keine
bestimmte Verfügbarkeit, solange keine gesonderte Vereinbarung darüber getroffen wurde. Geplante
Wartungen werden im Kundenportal und per E-Mail angekündigt und nach Möglichkeit in
verkehrsschwache Zeiten gelegt. Sicherheitsaktualisierungen können auch ohne Vorankündigung
eingespielt werden, wenn ein Aufschub ein Risiko wäre.
</p>
</section>
<section class="space-y-3">
<h2 class="text-md font-bold tracking-[-0.01em] text-ink">11. Datenschutz</h2>
<p class="text-md leading-relaxed text-body">
Welche Daten CluPilot zu welchem Zweck verarbeitet, steht in der
<a href="{{ route('legal.datenschutz') }}" class="font-medium text-accent-text underline-offset-4 hover:underline">Datenschutzerklärung</a>.
Soweit CluPilot Daten im Auftrag des Kunden verarbeitet, gilt der Vertrag über die
Auftragsverarbeitung nach Art. 28 DSGVO in seiner jeweils geltenden Fassung. Er wird mit
diesen AGB Bestandteil des Vertrags; einer gesonderten Unterzeichnung bedarf es nicht.
Der Vertrag und die Dokumentation der technischen und organisatorischen Maßnahmen stehen
im Kundenbereich jederzeit zum Ansehen und Herunterladen bereit. Eine neue Fassung wird
dem Kunden mitgeteilt.
</p>
</section>
<section class="space-y-3">
<h2 class="text-md font-bold tracking-[-0.01em] text-ink">12. Haftung</h2>
<p class="text-md leading-relaxed text-body">
CluPilot haftet nach den gesetzlichen Bestimmungen. Gegenüber unternehmerischen Kunden ist die
Haftung für leichte Fahrlässigkeit ausgeschlossen; die Haftung für Personenschäden sowie für Vorsatz
und grobe Fahrlässigkeit bleibt in jedem Fall unberührt. Gegenüber Verbrauchern wird die Haftung
nicht eingeschränkt.
</p>
</section>
<section class="space-y-3">
<h2 class="text-md font-bold tracking-[-0.01em] text-ink">13. Änderungen dieser AGB</h2>
<p class="text-md leading-relaxed text-body">
CluPilot kann diese AGB ändern und teilt Änderungen mindestens sechs Wochen vor ihrem Wirksamwerden
per E-Mail mit. Widerspricht der Kunde nicht bis zum Wirksamwerden, gelten die Änderungen als
angenommen; darauf wird in der Mitteilung ausdrücklich hingewiesen. Widerspricht er, kann jede
Seite den Vertrag zum Zeitpunkt des Wirksamwerdens kündigen.
</p>
</section>
<section class="space-y-3">
<h2 class="text-md font-bold tracking-[-0.01em] text-ink">14. Schlussbestimmungen</h2>
<p class="text-md leading-relaxed text-body">
Es gilt österreichisches Recht. Gegenüber Verbrauchern bleiben zwingende Schutzvorschriften ihres
Aufenthaltsstaats unberührt, und es gilt der gesetzliche Gerichtsstand. Gegenüber unternehmerischen
Kunden ist das für {{ $company['city'] }} sachlich zuständige Gericht zuständig. Sollte eine
Bestimmung unwirksam sein, bleibt der Vertrag im Übrigen gültig.
</p>
<p class="text-md leading-relaxed text-body">
Fragen dazu jederzeit an
<a href="mailto:{{ $company['email'] }}" class="font-medium text-accent-text underline-offset-4 hover:underline">{{ $company['email'] }}</a>.
</p>
</section>
<x-ui.button href="{{ route('home') }}" variant="secondary">
<x-ui.icon name="arrow-left" class="size-4" />
Zurück zur Startseite
</x-ui.button>
</div>