254 lines
15 KiB
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>
|