feat(founding-wizard): Gründungs-Wizard für 2-Mann GmbH + 14 Notar-Templates
[migration-approved]
Templates (Migrations 123-136):
- 123 GO-GF (Geschäftsordnung Geschäftsführung)
- 124 SHA (Shareholders' Agreement, 56 Platzhalter)
- 125 Satzung (Articles of Association mit UG-Variante)
- 126 GF-Dienstvertrag (Trennungsprinzip Organ/Anstellung)
- 127 Arbeitsvertrag (AGG-neutral, NachwG, eAU)
- 128 Gesellschafterliste (§ 40 GmbHG)
- 129 GF-Bestellungsbeschluss (mit § 6 Abs. 2 Versicherung)
- 130 HRB-Anmeldung (§§ 7, 8, 39 GmbHG, § 12 HGB)
- 131 IP-Assignment Agreement (Gründer→GmbH)
- 132 Term Sheet (Pre-Seed/Seed VC-Standard)
- 133 Wandeldarlehensvertrag (Convertible Loan)
- 134 Beteiligungsvertrag (Subscription Agreement)
- 135 ESOP/VSOP-Plan (3 Varianten)
- 136 Cap Table
Kategorisierung (Migrations 137-138):
- ALTER TABLE compliance_legal_templates ADD lifecycle_stage TEXT[],
functional_category TEXT (mit CHECK Constraints + GIN-Index)
- Backfill aller 105 Templates: lifecycle_stage (pre_founding|founding|
startup|kmu|konzern) + functional_category (founding_legal|employment|
investor_funding|...)
Backend Founding-Wizard Service:
- template_renderer.py: Handlebars-light ({{VAR}}, {{#IF FLAG}}...{{/IF}})
- wizard_to_context.py: Mapping Wizard-State → SCREAMING_SNAKE_CASE Vars
- markdown_to_docx.py: Markdown → DOCX via python-docx
- founding_wizard_routes.py: POST /v1/founding-wizard/generate
→ liefert base64-DOCX-Files für ausgewählte Templates
Frontend Founding-Wizard (/sdk/founding-wizard):
- 8-Step Wizard (Basics, Gesellschafter, GF, Kapital, Notar, SHA, GF-Verträge, Generate)
- useFoundingWizardForm Hook mit localStorage-Persistenz
- TypeScript Code-Registry (template-categories.ts) als Backup zur DB
- Word-Download via data:URLs (base64)
Tests:
- 20 Unit-Tests grün (Renderer, Context-Mapping, DOCX-Conversion)
- Playwright E2E-Test mit 2-Mann GmbH (Benjamin + Sharang) Test-Daten
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
/**
|
||||
* Next.js Proxy: leitet POST /api/v1/founding-wizard/generate an Backend.
|
||||
*
|
||||
* Konvertiert das Backend-Response (base64 DOCX) in data: URLs,
|
||||
* die das Frontend direkt als Download anbieten kann.
|
||||
*/
|
||||
|
||||
import { NextRequest, NextResponse } from 'next/server'
|
||||
|
||||
const BACKEND_URL = process.env.BACKEND_COMPLIANCE_URL || 'http://bp-compliance-backend:8002'
|
||||
|
||||
export async function POST(req: NextRequest) {
|
||||
try {
|
||||
const body = await req.json()
|
||||
|
||||
const backendRes = await fetch(`${BACKEND_URL}/v1/founding-wizard/generate`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(body),
|
||||
})
|
||||
|
||||
if (!backendRes.ok) {
|
||||
const errorText = await backendRes.text()
|
||||
return NextResponse.json(
|
||||
{ error: 'Backend-Generierung fehlgeschlagen', detail: errorText },
|
||||
{ status: backendRes.status }
|
||||
)
|
||||
}
|
||||
|
||||
const data = await backendRes.json()
|
||||
const documents = (data.documents || []).map((doc: {
|
||||
document_type: string
|
||||
title: string
|
||||
filename: string
|
||||
content_base64: string
|
||||
size_bytes: number
|
||||
generated_at: string
|
||||
}) => ({
|
||||
document_type: doc.document_type,
|
||||
title: doc.title,
|
||||
filename: doc.filename,
|
||||
download_url: `data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,${doc.content_base64}`,
|
||||
size_bytes: doc.size_bytes,
|
||||
generated_at: doc.generated_at,
|
||||
}))
|
||||
|
||||
return NextResponse.json({
|
||||
documents,
|
||||
warnings: data.warnings || [],
|
||||
})
|
||||
} catch (e: unknown) {
|
||||
const message = e instanceof Error ? e.message : 'Unbekannter Fehler'
|
||||
return NextResponse.json(
|
||||
{ error: 'Proxy-Fehler', detail: message },
|
||||
{ status: 500 }
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,125 @@
|
||||
'use client'
|
||||
|
||||
import type { FoundingWizardState } from '@/lib/sdk/founding/types'
|
||||
|
||||
interface Props {
|
||||
state: FoundingWizardState
|
||||
update: <K extends keyof FoundingWizardState>(k: K, v: FoundingWizardState[K]) => void
|
||||
}
|
||||
|
||||
export function StepBasics({ state, update }: Props) {
|
||||
const b = state.basics
|
||||
return (
|
||||
<div className="space-y-4">
|
||||
<div className="grid grid-cols-2 gap-4">
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">Firmenname</label>
|
||||
<input
|
||||
data-testid="company-name"
|
||||
type="text"
|
||||
value={b.company_name}
|
||||
onChange={e => update('basics', { ...b, company_name: e.target.value })}
|
||||
placeholder="Breakpilot GmbH"
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">Rechtsform</label>
|
||||
<select
|
||||
data-testid="legal-form"
|
||||
value={b.legal_form}
|
||||
onChange={e => update('basics', { ...b, legal_form: e.target.value as 'GmbH' | 'UG' })}
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
>
|
||||
<option value="GmbH">GmbH</option>
|
||||
<option value="UG">UG (haftungsbeschränkt)</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">Sitz (Stadt)</label>
|
||||
<input
|
||||
data-testid="company-seat"
|
||||
type="text"
|
||||
value={b.company_seat}
|
||||
onChange={e => update('basics', { ...b, company_seat: e.target.value })}
|
||||
placeholder="z.B. Stuttgart"
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">Adresse</label>
|
||||
<input
|
||||
data-testid="company-address"
|
||||
type="text"
|
||||
value={b.company_address}
|
||||
onChange={e => update('basics', { ...b, company_address: e.target.value })}
|
||||
placeholder="Straße, PLZ Ort"
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">Branche</label>
|
||||
<input
|
||||
data-testid="industry"
|
||||
type="text"
|
||||
value={b.industry}
|
||||
onChange={e => update('basics', { ...b, industry: e.target.value })}
|
||||
placeholder="z.B. SaaS, Beratung, Handwerk"
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">Geschäftsjahr</label>
|
||||
<input
|
||||
data-testid="business-year"
|
||||
type="text"
|
||||
value={b.business_year}
|
||||
onChange={e => update('basics', { ...b, business_year: e.target.value })}
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">
|
||||
Unternehmensgegenstand (Volltext für § 2 Satzung)
|
||||
</label>
|
||||
<textarea
|
||||
data-testid="company-purpose"
|
||||
value={b.company_purpose_description}
|
||||
onChange={e => update('basics', { ...b, company_purpose_description: e.target.value })}
|
||||
rows={4}
|
||||
placeholder="z.B. die Entwicklung, Bereitstellung, der Betrieb und der Vertrieb von Softwarelösungen, Plattformen und IT-Dienstleistungen im Bereich der Künstlichen Intelligenz"
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">
|
||||
Detaillierte Tätigkeitsbereiche (eine Zeile pro Bullet)
|
||||
</label>
|
||||
<textarea
|
||||
data-testid="company-purpose-bullets"
|
||||
value={b.company_purpose_bullets.join('\n')}
|
||||
onChange={e => update('basics', { ...b, company_purpose_bullets: e.target.value.split('\n').filter(Boolean) })}
|
||||
rows={5}
|
||||
placeholder={'a) Entwicklung von Software\nb) Beratung im Bereich...\nc) ...'}
|
||||
className="w-full px-3 py-2 border rounded-lg font-mono text-sm"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="flex items-center gap-2">
|
||||
<input
|
||||
type="checkbox"
|
||||
id="research_focus"
|
||||
data-testid="research-focus"
|
||||
checked={b.has_research_focus}
|
||||
onChange={e => update('basics', { ...b, has_research_focus: e.target.checked })}
|
||||
/>
|
||||
<label htmlFor="research_focus" className="text-sm text-gray-700">
|
||||
Forschungsfokus (aktiviert F&E-Klauseln in SHA und GO-GF)
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,146 @@
|
||||
'use client'
|
||||
|
||||
import { useMemo } from 'react'
|
||||
import type { FoundingWizardState, GeneratedDocument } from '@/lib/sdk/founding/types'
|
||||
import { NOTARY_BUNDLE_DOCUMENTS } from '@/lib/sdk/founding/template-categories'
|
||||
|
||||
interface Props {
|
||||
state: FoundingWizardState
|
||||
update: <K extends keyof FoundingWizardState>(k: K, v: FoundingWizardState[K]) => void
|
||||
generating: boolean
|
||||
error: string | null
|
||||
onGenerate: () => Promise<GeneratedDocument[]>
|
||||
}
|
||||
|
||||
const DOC_LABELS: Record<string, string> = {
|
||||
articles_of_association: 'Satzung',
|
||||
gesellschafterliste: 'Gesellschafterliste (§ 40 GmbHG)',
|
||||
gf_bestellungsbeschluss: 'Gesellschafterbeschluss zur GF-Bestellung',
|
||||
hrb_anmeldung: 'Handelsregister-Anmeldung',
|
||||
sha: 'Shareholders\' Agreement (SHA)',
|
||||
geschaeftsordnung_gf: 'Geschäftsordnung Geschäftsführung (GO-GF)',
|
||||
managing_director_employment_contract: 'GF-Dienstvertrag (pro GF)',
|
||||
ip_assignment_agreement: 'IP-Assignment (pro Gründer)',
|
||||
term_sheet: 'Term Sheet',
|
||||
convertible_loan_agreement: 'Wandeldarlehensvertrag',
|
||||
subscription_agreement: 'Beteiligungsvertrag',
|
||||
esop_plan: 'ESOP/VSOP-Plan',
|
||||
cap_table: 'Cap Table',
|
||||
}
|
||||
|
||||
export function StepGenerate({ state, update, generating, error, onGenerate }: Props) {
|
||||
const toggleDoc = (docType: string) => {
|
||||
const next = state.selected_documents.includes(docType)
|
||||
? state.selected_documents.filter(d => d !== docType)
|
||||
: [...state.selected_documents, docType]
|
||||
update('selected_documents', next)
|
||||
}
|
||||
|
||||
const selectNotaryBundle = () => {
|
||||
update('selected_documents', [...NOTARY_BUNDLE_DOCUMENTS])
|
||||
}
|
||||
|
||||
const summary = useMemo(() => ({
|
||||
name: state.basics.company_name,
|
||||
seat: state.basics.company_seat,
|
||||
stammkapital: state.capital.stammkapital_eur,
|
||||
num_gesellschafter: state.gesellschafter.length,
|
||||
num_gf: state.gesellschafter.filter(g => g.is_geschaeftsfuehrer).length,
|
||||
}), [state])
|
||||
|
||||
return (
|
||||
<div className="space-y-6">
|
||||
<div className="bg-purple-50 border border-purple-200 rounded-lg p-4">
|
||||
<h3 className="font-semibold text-purple-900 mb-2">Zusammenfassung</h3>
|
||||
<dl className="grid grid-cols-2 gap-2 text-sm" data-testid="generate-summary">
|
||||
<dt className="text-gray-600">Firma:</dt><dd>{summary.name} ({state.basics.legal_form})</dd>
|
||||
<dt className="text-gray-600">Sitz:</dt><dd>{summary.seat}</dd>
|
||||
<dt className="text-gray-600">Stammkapital:</dt><dd>{summary.stammkapital.toLocaleString('de-DE')} €</dd>
|
||||
<dt className="text-gray-600">Gesellschafter:</dt><dd>{summary.num_gesellschafter}</dd>
|
||||
<dt className="text-gray-600">Geschäftsführer:</dt><dd>{summary.num_gf}</dd>
|
||||
<dt className="text-gray-600">Notar:</dt><dd>{state.notar.notary_name} ({state.notar.notary_place})</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div className="flex justify-between items-center mb-3">
|
||||
<h3 className="font-semibold">Zu generierende Dokumente</h3>
|
||||
<button
|
||||
type="button"
|
||||
data-testid="select-notary-bundle"
|
||||
onClick={selectNotaryBundle}
|
||||
className="text-sm text-purple-600 hover:underline"
|
||||
>
|
||||
➜ Notartermin-Bundle auswählen
|
||||
</button>
|
||||
</div>
|
||||
<div className="grid grid-cols-1 gap-2">
|
||||
{Object.entries(DOC_LABELS).map(([docType, label]) => (
|
||||
<label key={docType} className="flex items-start gap-3 p-2 hover:bg-gray-50 rounded">
|
||||
<input
|
||||
type="checkbox"
|
||||
data-testid={`doc-${docType}`}
|
||||
checked={state.selected_documents.includes(docType)}
|
||||
onChange={() => toggleDoc(docType)}
|
||||
className="mt-1"
|
||||
/>
|
||||
<div className="flex-1">
|
||||
<div className="text-sm font-medium">{label}</div>
|
||||
<div className="text-xs text-gray-500">{docType}</div>
|
||||
</div>
|
||||
{NOTARY_BUNDLE_DOCUMENTS.includes(docType) && (
|
||||
<span className="text-xs bg-purple-100 text-purple-700 px-2 py-0.5 rounded">Notartermin</span>
|
||||
)}
|
||||
</label>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="flex justify-between items-center pt-4 border-t">
|
||||
<p className="text-sm text-gray-500">
|
||||
{state.selected_documents.length} Dokument(e) ausgewählt
|
||||
</p>
|
||||
<button
|
||||
data-testid="generate-docs"
|
||||
onClick={onGenerate}
|
||||
disabled={generating || state.selected_documents.length === 0}
|
||||
className="px-6 py-3 bg-purple-600 text-white rounded-lg hover:bg-purple-700 disabled:opacity-50 font-medium"
|
||||
>
|
||||
{generating ? 'Generiere...' : 'Dokumente als Word generieren'}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
{error && (
|
||||
<div className="bg-red-50 border border-red-200 rounded-lg p-3 text-sm text-red-900" data-testid="generate-error">
|
||||
Fehler: {error}
|
||||
</div>
|
||||
)}
|
||||
|
||||
{state.generated_documents && state.generated_documents.length > 0 && (
|
||||
<div className="bg-green-50 border border-green-200 rounded-lg p-4" data-testid="generated-docs">
|
||||
<h3 className="font-semibold text-green-900 mb-3">
|
||||
✓ {state.generated_documents.length} Dokument(e) generiert
|
||||
</h3>
|
||||
<ul className="space-y-2">
|
||||
{state.generated_documents.map((doc, idx) => (
|
||||
<li key={idx} className="flex justify-between items-center bg-white rounded px-3 py-2 border border-green-200">
|
||||
<div>
|
||||
<div className="text-sm font-medium">{doc.title}</div>
|
||||
<div className="text-xs text-gray-500">{(doc.size_bytes / 1024).toFixed(1)} KB</div>
|
||||
</div>
|
||||
<a
|
||||
href={doc.download_url}
|
||||
download
|
||||
data-testid={`download-${doc.document_type}`}
|
||||
className="px-3 py-1.5 bg-green-600 text-white rounded text-sm hover:bg-green-700"
|
||||
>
|
||||
Word herunterladen
|
||||
</a>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,179 @@
|
||||
'use client'
|
||||
|
||||
import { useState } from 'react'
|
||||
import type { FoundingWizardState, Gesellschafter } from '@/lib/sdk/founding/types'
|
||||
|
||||
interface Props {
|
||||
state: FoundingWizardState
|
||||
addGesellschafter: (g: Omit<Gesellschafter, 'id' | 'anteil_nr'>) => void
|
||||
updateGesellschafter: (id: string, p: Partial<Gesellschafter>) => void
|
||||
removeGesellschafter: (id: string) => void
|
||||
}
|
||||
|
||||
export function StepGesellschafter({ state, addGesellschafter, updateGesellschafter, removeGesellschafter }: Props) {
|
||||
const [form, setForm] = useState({
|
||||
name: '', geburtsdatum: '', adresse: '', email: '',
|
||||
nennbetrag_eur: 12500, is_geschaeftsfuehrer: true, internal_role: '',
|
||||
has_academic_background: false,
|
||||
})
|
||||
|
||||
const totalNennbetrag = state.gesellschafter.reduce((s, g) => s + g.nennbetrag_eur, 0)
|
||||
const target = state.capital.stammkapital_eur
|
||||
|
||||
const handleAdd = () => {
|
||||
if (!form.name.trim()) return
|
||||
addGesellschafter({
|
||||
rolle: 'founder',
|
||||
name: form.name,
|
||||
geburtsdatum: form.geburtsdatum || undefined,
|
||||
adresse: form.adresse,
|
||||
email: form.email || undefined,
|
||||
nennbetrag_eur: form.nennbetrag_eur,
|
||||
is_geschaeftsfuehrer: form.is_geschaeftsfuehrer,
|
||||
internal_role: form.internal_role || undefined,
|
||||
has_academic_background: form.has_academic_background,
|
||||
})
|
||||
setForm({ name: '', geburtsdatum: '', adresse: '', email: '', nennbetrag_eur: 12500,
|
||||
is_geschaeftsfuehrer: true, internal_role: '', has_academic_background: false })
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="space-y-4">
|
||||
<div className="bg-gray-50 p-4 rounded-lg">
|
||||
<h3 className="font-semibold mb-3">Neuen Gesellschafter hinzufügen</h3>
|
||||
<div className="grid grid-cols-2 gap-3">
|
||||
<input
|
||||
data-testid="gs-name"
|
||||
placeholder="Name"
|
||||
value={form.name}
|
||||
onChange={e => setForm({ ...form, name: e.target.value })}
|
||||
className="px-3 py-2 border rounded"
|
||||
/>
|
||||
<input
|
||||
data-testid="gs-birthdate"
|
||||
type="date"
|
||||
placeholder="Geburtsdatum"
|
||||
value={form.geburtsdatum}
|
||||
onChange={e => setForm({ ...form, geburtsdatum: e.target.value })}
|
||||
className="px-3 py-2 border rounded"
|
||||
/>
|
||||
<input
|
||||
data-testid="gs-address"
|
||||
placeholder="Adresse (Straße, PLZ Ort)"
|
||||
value={form.adresse}
|
||||
onChange={e => setForm({ ...form, adresse: e.target.value })}
|
||||
className="px-3 py-2 border rounded col-span-2"
|
||||
/>
|
||||
<input
|
||||
data-testid="gs-email"
|
||||
type="email"
|
||||
placeholder="E-Mail (optional)"
|
||||
value={form.email}
|
||||
onChange={e => setForm({ ...form, email: e.target.value })}
|
||||
className="px-3 py-2 border rounded"
|
||||
/>
|
||||
<input
|
||||
data-testid="gs-nennbetrag"
|
||||
type="number"
|
||||
min={1}
|
||||
step={1}
|
||||
placeholder="Nennbetrag in EUR"
|
||||
value={form.nennbetrag_eur}
|
||||
onChange={e => setForm({ ...form, nennbetrag_eur: parseInt(e.target.value) || 0 })}
|
||||
className="px-3 py-2 border rounded"
|
||||
/>
|
||||
<input
|
||||
data-testid="gs-role"
|
||||
placeholder="Interne Rolle (z.B. CEO, CTO)"
|
||||
value={form.internal_role}
|
||||
onChange={e => setForm({ ...form, internal_role: e.target.value })}
|
||||
className="px-3 py-2 border rounded"
|
||||
/>
|
||||
<div className="flex items-center gap-2">
|
||||
<input
|
||||
type="checkbox"
|
||||
data-testid="gs-is-gf"
|
||||
checked={form.is_geschaeftsfuehrer}
|
||||
onChange={e => setForm({ ...form, is_geschaeftsfuehrer: e.target.checked })}
|
||||
/>
|
||||
<label className="text-sm">Geschäftsführer/in</label>
|
||||
</div>
|
||||
<div className="flex items-center gap-2">
|
||||
<input
|
||||
type="checkbox"
|
||||
data-testid="gs-academic"
|
||||
checked={form.has_academic_background}
|
||||
onChange={e => setForm({ ...form, has_academic_background: e.target.checked })}
|
||||
/>
|
||||
<label className="text-sm">Akademischer Hintergrund</label>
|
||||
</div>
|
||||
</div>
|
||||
<button
|
||||
data-testid="add-gesellschafter"
|
||||
onClick={handleAdd}
|
||||
disabled={!form.name.trim() || form.nennbetrag_eur < 1}
|
||||
className="mt-3 px-4 py-2 bg-purple-600 text-white rounded-lg hover:bg-purple-700 disabled:opacity-50"
|
||||
>
|
||||
Gesellschafter hinzufügen
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h3 className="font-semibold mb-3">Gesellschafter ({state.gesellschafter.length})</h3>
|
||||
{state.gesellschafter.length === 0 ? (
|
||||
<p className="text-gray-500 text-sm">Noch keine Gesellschafter angelegt.</p>
|
||||
) : (
|
||||
<table className="w-full text-sm" data-testid="gs-table">
|
||||
<thead className="bg-gray-100">
|
||||
<tr>
|
||||
<th className="px-3 py-2 text-left">Nr.</th>
|
||||
<th className="px-3 py-2 text-left">Name</th>
|
||||
<th className="px-3 py-2 text-left">Geburtsdatum</th>
|
||||
<th className="px-3 py-2 text-right">Nennbetrag</th>
|
||||
<th className="px-3 py-2 text-right">Anteil %</th>
|
||||
<th className="px-3 py-2">GF?</th>
|
||||
<th className="px-3 py-2"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{state.gesellschafter.map(g => (
|
||||
<tr key={g.id} className="border-t" data-testid={`gs-row-${g.anteil_nr}`}>
|
||||
<td className="px-3 py-2">{g.anteil_nr}</td>
|
||||
<td className="px-3 py-2 font-medium">{g.name}{g.internal_role ? ` (${g.internal_role})` : ''}</td>
|
||||
<td className="px-3 py-2">{g.geburtsdatum || '—'}</td>
|
||||
<td className="px-3 py-2 text-right">{g.nennbetrag_eur.toLocaleString('de-DE')} €</td>
|
||||
<td className="px-3 py-2 text-right">{((g.nennbetrag_eur / Math.max(target, 1)) * 100).toFixed(2)}%</td>
|
||||
<td className="px-3 py-2 text-center">{g.is_geschaeftsfuehrer ? '✓' : '—'}</td>
|
||||
<td className="px-3 py-2">
|
||||
<button
|
||||
onClick={() => removeGesellschafter(g.id)}
|
||||
className="text-red-600 hover:underline text-xs"
|
||||
>
|
||||
Entfernen
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
))}
|
||||
<tr className="border-t-2 font-semibold bg-gray-50">
|
||||
<td colSpan={3} className="px-3 py-2">Summe</td>
|
||||
<td className="px-3 py-2 text-right" data-testid="gs-total">
|
||||
{totalNennbetrag.toLocaleString('de-DE')} €
|
||||
</td>
|
||||
<td className="px-3 py-2 text-right">
|
||||
{totalNennbetrag === target ? '100%' : `≠ ${target.toLocaleString('de-DE')} €`}
|
||||
</td>
|
||||
<td colSpan={2}></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
)}
|
||||
{totalNennbetrag !== target && state.gesellschafter.length > 0 && (
|
||||
<p className="mt-2 text-sm text-orange-600">
|
||||
⚠ Die Summe der Nennbeträge ({totalNennbetrag.toLocaleString('de-DE')} €)
|
||||
entspricht nicht dem Stammkapital ({target.toLocaleString('de-DE')} €).
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,321 @@
|
||||
'use client'
|
||||
|
||||
/**
|
||||
* Kombinierte einfache Steps: Geschäftsführer (3), Kapital (4), Notar (5), SHA (6).
|
||||
* Jeder Sub-Step ist eine simple Form.
|
||||
*/
|
||||
|
||||
import type { FoundingWizardState, GFContract } from '@/lib/sdk/founding/types'
|
||||
|
||||
interface PropsBase {
|
||||
state: FoundingWizardState
|
||||
update: <K extends keyof FoundingWizardState>(k: K, v: FoundingWizardState[K]) => void
|
||||
}
|
||||
|
||||
export function StepGFAssignment({ state, update }: PropsBase) {
|
||||
const founders = state.gesellschafter
|
||||
const toggleGF = (id: string, val: boolean) => {
|
||||
update('gesellschafter', state.gesellschafter.map(g => g.id === id ? { ...g, is_geschaeftsfuehrer: val } : g))
|
||||
}
|
||||
const setRole = (id: string, role: string) => {
|
||||
update('gesellschafter', state.gesellschafter.map(g => g.id === id ? { ...g, internal_role: role } : g))
|
||||
}
|
||||
return (
|
||||
<div className="space-y-4">
|
||||
<p className="text-sm text-gray-600">
|
||||
Wähle, welche Gesellschafter zu Geschäftsführern bestellt werden sollen. Standardmäßig sind alle Gründer auch GF.
|
||||
</p>
|
||||
{founders.length === 0 ? (
|
||||
<p className="text-orange-600">Bitte zuerst Gesellschafter in Step 2 anlegen.</p>
|
||||
) : (
|
||||
<table className="w-full text-sm" data-testid="gf-assignment-table">
|
||||
<thead className="bg-gray-100">
|
||||
<tr>
|
||||
<th className="px-3 py-2 text-left">Gesellschafter</th>
|
||||
<th className="px-3 py-2 text-left">Interne Rolle (CEO, CTO, ...)</th>
|
||||
<th className="px-3 py-2">GF?</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{founders.map(g => (
|
||||
<tr key={g.id} className="border-t">
|
||||
<td className="px-3 py-2 font-medium">{g.name}</td>
|
||||
<td className="px-3 py-2">
|
||||
<input
|
||||
value={g.internal_role || ''}
|
||||
onChange={e => setRole(g.id, e.target.value)}
|
||||
className="px-2 py-1 border rounded w-48"
|
||||
placeholder="CEO, CTO, COO..."
|
||||
/>
|
||||
</td>
|
||||
<td className="px-3 py-2 text-center">
|
||||
<input
|
||||
type="checkbox"
|
||||
data-testid={`gf-toggle-${g.anteil_nr}`}
|
||||
checked={g.is_geschaeftsfuehrer}
|
||||
onChange={e => toggleGF(g.id, e.target.checked)}
|
||||
/>
|
||||
</td>
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export function StepCapital({ state, update }: PropsBase) {
|
||||
const c = state.capital
|
||||
return (
|
||||
<div className="space-y-4">
|
||||
<div className="grid grid-cols-2 gap-4">
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">Stammkapital (EUR)</label>
|
||||
<input
|
||||
data-testid="stammkapital"
|
||||
type="number" min={1} step={1}
|
||||
value={c.stammkapital_eur}
|
||||
onChange={e => update('capital', { ...c, stammkapital_eur: parseInt(e.target.value) || 0 })}
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
/>
|
||||
<p className="mt-1 text-xs text-gray-500">GmbH: mind. 25.000 €, UG: ab 1 €</p>
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">Einlage-Art</label>
|
||||
<select
|
||||
data-testid="einlage-method"
|
||||
value={c.einlage_method}
|
||||
onChange={e => update('capital', { ...c, einlage_method: e.target.value as typeof c.einlage_method })}
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
>
|
||||
<option value="Geld">Bargründung</option>
|
||||
<option value="Sacheinlage">Sachgründung</option>
|
||||
<option value="Geld und Sacheinlage">Misch-Gründung</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">
|
||||
Sofortige Einzahlung (%)
|
||||
</label>
|
||||
<input
|
||||
data-testid="einlage-quote"
|
||||
type="number" min={25} max={100}
|
||||
value={c.einlage_quote_initial_pct}
|
||||
onChange={e => update('capital', { ...c, einlage_quote_initial_pct: parseInt(e.target.value) || 50 })}
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
/>
|
||||
<p className="mt-1 text-xs text-gray-500">Mind. 25% gem. § 7 Abs. 2 GmbHG, Standard 50%</p>
|
||||
</div>
|
||||
<div className="flex items-center gap-2 mt-7">
|
||||
<input
|
||||
type="checkbox"
|
||||
id="has_sach"
|
||||
data-testid="has-sacheinlage"
|
||||
checked={c.has_sacheinlage}
|
||||
onChange={e => update('capital', { ...c, has_sacheinlage: e.target.checked })}
|
||||
/>
|
||||
<label htmlFor="has_sach" className="text-sm">Sacheinlage-Klausel aktivieren</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export function StepNotar({ state, update }: PropsBase) {
|
||||
const n = state.notar
|
||||
return (
|
||||
<div className="space-y-4">
|
||||
<div className="grid grid-cols-2 gap-4">
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">Name des Notars</label>
|
||||
<input
|
||||
data-testid="notary-name"
|
||||
value={n.notary_name}
|
||||
onChange={e => update('notar', { ...n, notary_name: e.target.value })}
|
||||
placeholder="z.B. Dr. Müller"
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">Notarsitz</label>
|
||||
<input
|
||||
data-testid="notary-place"
|
||||
value={n.notary_place}
|
||||
onChange={e => update('notar', { ...n, notary_place: e.target.value })}
|
||||
placeholder="z.B. Stuttgart"
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">Adresse</label>
|
||||
<input
|
||||
data-testid="notary-address"
|
||||
value={n.notary_address || ''}
|
||||
onChange={e => update('notar', { ...n, notary_address: e.target.value })}
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">Geplanter Notartermin</label>
|
||||
<input
|
||||
data-testid="notarial-date"
|
||||
type="date"
|
||||
value={n.notarial_date || ''}
|
||||
onChange={e => update('notar', { ...n, notarial_date: e.target.value })}
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="bg-blue-50 border border-blue-200 rounded-lg p-3 text-sm text-blue-900">
|
||||
<strong>Hinweis:</strong> Die URNr. wird vom Notar beim Beurkundungstermin vergeben. Du kannst die generierte
|
||||
HRB-Anmeldung als Vorbereitungsdokument zum Termin mitnehmen.
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export function StepSHAConfig({ state, update }: PropsBase) {
|
||||
const s = state.sha
|
||||
const updateField = <K extends keyof typeof s>(k: K, v: typeof s[K]) => update('sha', { ...s, [k]: v })
|
||||
return (
|
||||
<div className="space-y-4">
|
||||
<div className="flex items-center gap-2">
|
||||
<input
|
||||
type="checkbox"
|
||||
data-testid="has-sha"
|
||||
checked={s.has_sha}
|
||||
onChange={e => updateField('has_sha', e.target.checked)}
|
||||
/>
|
||||
<label className="text-sm font-medium">SHA (Shareholders' Agreement) ist Teil des Notartermin-Pakets</label>
|
||||
</div>
|
||||
|
||||
{s.has_sha && (
|
||||
<div className="grid grid-cols-2 gap-4">
|
||||
<div>
|
||||
<label className="block text-sm text-gray-700 mb-1">Vesting-Dauer (Monate)</label>
|
||||
<input data-testid="vesting-months" type="number" value={s.vesting_months}
|
||||
onChange={e => updateField('vesting_months', parseInt(e.target.value) || 48)}
|
||||
className="w-full px-3 py-2 border rounded-lg" />
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-sm text-gray-700 mb-1">Cliff (Monate)</label>
|
||||
<input data-testid="cliff-months" type="number" value={s.cliff_months}
|
||||
onChange={e => updateField('cliff_months', parseInt(e.target.value) || 12)}
|
||||
className="w-full px-3 py-2 border rounded-lg" />
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-sm text-gray-700 mb-1">Drag-Along Schwelle (%)</label>
|
||||
<input data-testid="drag-along-pct" type="number" value={s.drag_along_threshold_pct}
|
||||
onChange={e => updateField('drag_along_threshold_pct', parseInt(e.target.value) || 75)}
|
||||
className="w-full px-3 py-2 border rounded-lg" />
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-sm text-gray-700 mb-1">Reserved-Matters Mehrheit (%)</label>
|
||||
<input data-testid="reserved-matters-pct" type="number" value={s.reserved_matters_majority_pct}
|
||||
onChange={e => updateField('reserved_matters_majority_pct', parseInt(e.target.value) || 75)}
|
||||
className="w-full px-3 py-2 border rounded-lg" />
|
||||
</div>
|
||||
<div className="col-span-2 grid grid-cols-3 gap-3 mt-2">
|
||||
<label className="flex items-center gap-2 text-sm">
|
||||
<input type="checkbox" data-testid="has-beirat" checked={s.has_beirat}
|
||||
onChange={e => updateField('has_beirat', e.target.checked)} />
|
||||
Beirat einrichten
|
||||
</label>
|
||||
<label className="flex items-center gap-2 text-sm">
|
||||
<input type="checkbox" data-testid="has-texas" checked={s.has_texas_shootout}
|
||||
onChange={e => updateField('has_texas_shootout', e.target.checked)} />
|
||||
Texas Shoot-Out (Deadlock)
|
||||
</label>
|
||||
<label className="flex items-center gap-2 text-sm">
|
||||
<input type="checkbox" data-testid="has-ceo" checked={s.has_ceo_designation}
|
||||
onChange={e => updateField('has_ceo_designation', e.target.checked)} />
|
||||
CEO mit Stichentscheid
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
interface GFContractStepProps extends PropsBase {
|
||||
gf_list: Array<{ id: string; name: string; internal_role?: string }>
|
||||
upsertGFContract: (c: GFContract) => void
|
||||
}
|
||||
|
||||
export function StepGFContracts({ state, gf_list, upsertGFContract }: GFContractStepProps) {
|
||||
return (
|
||||
<div className="space-y-4">
|
||||
<p className="text-sm text-gray-600">
|
||||
Für jeden Geschäftsführer wird ein Dienstvertrag generiert. Bitte Eckdaten ausfüllen.
|
||||
</p>
|
||||
{gf_list.length === 0 ? (
|
||||
<p className="text-orange-600">Bitte zuerst in Step 2 mindestens einen GF anlegen.</p>
|
||||
) : (
|
||||
gf_list.map(gf => {
|
||||
const c = state.gf_contracts.find(x => x.gesellschafter_id === gf.id) || {
|
||||
gesellschafter_id: gf.id,
|
||||
gross_annual_salary_eur: 84000,
|
||||
has_bonus: false,
|
||||
has_company_car: false,
|
||||
has_bav: false,
|
||||
vacation_days: 30,
|
||||
kuendigungsfrist_gesellschaft_monate: 6,
|
||||
kuendigungsfrist_gf_monate: 3,
|
||||
para_181_release: true,
|
||||
sv_status: 'sozialversicherungsfrei' as const,
|
||||
}
|
||||
const u = (patch: Partial<GFContract>) => upsertGFContract({ ...c, ...patch })
|
||||
return (
|
||||
<div key={gf.id} className="border rounded-lg p-4" data-testid={`contract-${gf.id}`}>
|
||||
<h4 className="font-semibold mb-3">{gf.name} {gf.internal_role && `(${gf.internal_role})`}</h4>
|
||||
<div className="grid grid-cols-3 gap-3">
|
||||
<div>
|
||||
<label className="block text-xs text-gray-700 mb-1">Jahresgehalt (EUR brutto)</label>
|
||||
<input
|
||||
data-testid={`salary-${gf.id}`}
|
||||
type="number"
|
||||
value={c.gross_annual_salary_eur}
|
||||
onChange={e => u({ gross_annual_salary_eur: parseInt(e.target.value) || 0 })}
|
||||
className="w-full px-2 py-1 border rounded"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-xs text-gray-700 mb-1">Urlaubstage</label>
|
||||
<input type="number" value={c.vacation_days}
|
||||
onChange={e => u({ vacation_days: parseInt(e.target.value) || 30 })}
|
||||
className="w-full px-2 py-1 border rounded" />
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-xs text-gray-700 mb-1">SV-Status</label>
|
||||
<select value={c.sv_status} onChange={e => u({ sv_status: e.target.value as GFContract['sv_status'] })}
|
||||
className="w-full px-2 py-1 border rounded">
|
||||
<option value="sozialversicherungsfrei">sv-frei (Standard für GF/Gesellschafter)</option>
|
||||
<option value="sozialversicherungspflichtig">sv-pflichtig</option>
|
||||
<option value="noch zu klären">noch zu klären</option>
|
||||
</select>
|
||||
</div>
|
||||
<label className="flex items-center gap-2 text-sm">
|
||||
<input type="checkbox" checked={c.para_181_release}
|
||||
onChange={e => u({ para_181_release: e.target.checked })} />
|
||||
§ 181 BGB-Befreiung
|
||||
</label>
|
||||
<label className="flex items-center gap-2 text-sm">
|
||||
<input type="checkbox" checked={c.has_bonus}
|
||||
onChange={e => u({ has_bonus: e.target.checked })} />
|
||||
Bonus-Vereinbarung
|
||||
</label>
|
||||
<label className="flex items-center gap-2 text-sm">
|
||||
<input type="checkbox" checked={c.has_company_car}
|
||||
onChange={e => u({ has_company_car: e.target.checked })} />
|
||||
Firmenfahrzeug
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
})
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,187 @@
|
||||
'use client'
|
||||
|
||||
import { useCallback, useEffect, useMemo, useState } from 'react'
|
||||
import {
|
||||
defaultFoundingWizardState,
|
||||
type FoundingWizardState,
|
||||
type Gesellschafter,
|
||||
type GFContract,
|
||||
type GeneratedDocument,
|
||||
} from '@/lib/sdk/founding/types'
|
||||
|
||||
const STORAGE_KEY = 'breakpilot:founding-wizard:state:v1'
|
||||
|
||||
export const FOUNDING_WIZARD_STEPS = [
|
||||
{ id: 1, name: 'Stage & Basics', description: 'Unternehmensname, Sitz, Gegenstand' },
|
||||
{ id: 2, name: 'Gesellschafter', description: 'Gründer und ihre Anteile' },
|
||||
{ id: 3, name: 'Geschäftsführer', description: 'GF-Bestellung und Rollen' },
|
||||
{ id: 4, name: 'Kapital', description: 'Stammkapital und Einzahlung' },
|
||||
{ id: 5, name: 'Notar', description: 'Notartermin und Beurkundung' },
|
||||
{ id: 6, name: 'SHA-Optionen', description: 'Vesting, Drag-Along, Reserved Matters' },
|
||||
{ id: 7, name: 'GF-Verträge', description: 'Vergütung, D&O, Kündigungsfristen' },
|
||||
{ id: 8, name: 'Dokumente generieren', description: 'Auswahl und Word-Export' },
|
||||
]
|
||||
|
||||
export function useFoundingWizardForm() {
|
||||
const [state, setState] = useState<FoundingWizardState>(defaultFoundingWizardState())
|
||||
const [hydrated, setHydrated] = useState(false)
|
||||
const [generating, setGenerating] = useState(false)
|
||||
const [error, setError] = useState<string | null>(null)
|
||||
|
||||
// Hydrate from localStorage
|
||||
useEffect(() => {
|
||||
try {
|
||||
const raw = localStorage.getItem(STORAGE_KEY)
|
||||
if (raw) {
|
||||
const parsed = JSON.parse(raw)
|
||||
setState({ ...defaultFoundingWizardState(), ...parsed })
|
||||
}
|
||||
} catch {
|
||||
// ignore corrupted storage
|
||||
}
|
||||
setHydrated(true)
|
||||
}, [])
|
||||
|
||||
// Persist on every change after hydration
|
||||
useEffect(() => {
|
||||
if (!hydrated) return
|
||||
try {
|
||||
localStorage.setItem(STORAGE_KEY, JSON.stringify(state))
|
||||
} catch {
|
||||
// quota exceeded - ignore
|
||||
}
|
||||
}, [state, hydrated])
|
||||
|
||||
const update = useCallback(<K extends keyof FoundingWizardState>(
|
||||
key: K,
|
||||
value: FoundingWizardState[K] | ((prev: FoundingWizardState[K]) => FoundingWizardState[K])
|
||||
) => {
|
||||
setState(prev => ({
|
||||
...prev,
|
||||
[key]: typeof value === 'function' ? (value as Function)(prev[key]) : value,
|
||||
}))
|
||||
}, [])
|
||||
|
||||
const setStep = useCallback((step: number) => {
|
||||
setState(prev => ({ ...prev, current_step: step }))
|
||||
}, [])
|
||||
|
||||
const nextStep = useCallback(() => {
|
||||
setState(prev => ({ ...prev, current_step: Math.min(prev.current_step + 1, FOUNDING_WIZARD_STEPS.length) }))
|
||||
}, [])
|
||||
|
||||
const prevStep = useCallback(() => {
|
||||
setState(prev => ({ ...prev, current_step: Math.max(prev.current_step - 1, 1) }))
|
||||
}, [])
|
||||
|
||||
const reset = useCallback(() => {
|
||||
setState(defaultFoundingWizardState())
|
||||
try { localStorage.removeItem(STORAGE_KEY) } catch {}
|
||||
}, [])
|
||||
|
||||
// Gesellschafter helpers
|
||||
const addGesellschafter = useCallback((gs: Omit<Gesellschafter, 'id' | 'anteil_nr'>) => {
|
||||
setState(prev => {
|
||||
const nextNr = (prev.gesellschafter.reduce((m, g) => Math.max(m, g.anteil_nr), 0)) + 1
|
||||
const id = `gs_${Date.now()}_${nextNr}`
|
||||
return { ...prev, gesellschafter: [...prev.gesellschafter, { ...gs, id, anteil_nr: nextNr }] }
|
||||
})
|
||||
}, [])
|
||||
|
||||
const updateGesellschafter = useCallback((id: string, patch: Partial<Gesellschafter>) => {
|
||||
setState(prev => ({
|
||||
...prev,
|
||||
gesellschafter: prev.gesellschafter.map(g => g.id === id ? { ...g, ...patch } : g),
|
||||
}))
|
||||
}, [])
|
||||
|
||||
const removeGesellschafter = useCallback((id: string) => {
|
||||
setState(prev => ({
|
||||
...prev,
|
||||
gesellschafter: prev.gesellschafter.filter(g => g.id !== id),
|
||||
gf_contracts: prev.gf_contracts.filter(c => c.gesellschafter_id !== id),
|
||||
}))
|
||||
}, [])
|
||||
|
||||
// GF Contract helpers
|
||||
const upsertGFContract = useCallback((contract: GFContract) => {
|
||||
setState(prev => {
|
||||
const idx = prev.gf_contracts.findIndex(c => c.gesellschafter_id === contract.gesellschafter_id)
|
||||
const next = [...prev.gf_contracts]
|
||||
if (idx >= 0) next[idx] = contract
|
||||
else next.push(contract)
|
||||
return { ...prev, gf_contracts: next }
|
||||
})
|
||||
}, [])
|
||||
|
||||
// Validation (canProceed for current step)
|
||||
const canProceed = useMemo(() => {
|
||||
switch (state.current_step) {
|
||||
case 1:
|
||||
return state.basics.company_name.trim().length > 1 &&
|
||||
state.basics.company_seat.trim().length > 1 &&
|
||||
state.basics.company_purpose_description.trim().length > 10
|
||||
case 2: {
|
||||
if (state.gesellschafter.length < 1) return false
|
||||
const sum = state.gesellschafter.reduce((s, g) => s + (g.nennbetrag_eur || 0), 0)
|
||||
return sum === state.capital.stammkapital_eur
|
||||
}
|
||||
case 3:
|
||||
return state.gesellschafter.some(g => g.is_geschaeftsfuehrer)
|
||||
case 4:
|
||||
return state.capital.stammkapital_eur >= 25000
|
||||
case 5:
|
||||
return state.notar.notary_name.trim().length > 1 && state.notar.notary_place.trim().length > 1
|
||||
case 6:
|
||||
return true
|
||||
case 7:
|
||||
return state.gesellschafter.filter(g => g.is_geschaeftsfuehrer)
|
||||
.every(g => state.gf_contracts.some(c => c.gesellschafter_id === g.id))
|
||||
case 8:
|
||||
return state.selected_documents.length > 0
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}, [state])
|
||||
|
||||
const generateDocuments = useCallback(async (): Promise<GeneratedDocument[]> => {
|
||||
setGenerating(true)
|
||||
setError(null)
|
||||
try {
|
||||
const response = await fetch('/api/v1/founding-wizard/generate', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(state),
|
||||
})
|
||||
if (!response.ok) {
|
||||
throw new Error(`Generierung fehlgeschlagen: ${response.status}`)
|
||||
}
|
||||
const data = await response.json()
|
||||
const docs: GeneratedDocument[] = data.documents || []
|
||||
setState(prev => ({ ...prev, generated_documents: docs }))
|
||||
return docs
|
||||
} catch (e: unknown) {
|
||||
const msg = e instanceof Error ? e.message : 'Unbekannter Fehler'
|
||||
setError(msg)
|
||||
throw e
|
||||
} finally {
|
||||
setGenerating(false)
|
||||
}
|
||||
}, [state])
|
||||
|
||||
// Derived: hat zugehöriger GF einen Vertrag?
|
||||
const gf_list = useMemo(
|
||||
() => state.gesellschafter.filter(g => g.is_geschaeftsfuehrer),
|
||||
[state.gesellschafter]
|
||||
)
|
||||
|
||||
return {
|
||||
state, hydrated, generating, error,
|
||||
update, setStep, nextStep, prevStep, reset,
|
||||
addGesellschafter, updateGesellschafter, removeGesellschafter,
|
||||
upsertGFContract,
|
||||
canProceed, generateDocuments,
|
||||
gf_list,
|
||||
steps: FOUNDING_WIZARD_STEPS,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,141 @@
|
||||
'use client'
|
||||
|
||||
import React from 'react'
|
||||
import { useFoundingWizardForm } from './_hooks/useFoundingWizardForm'
|
||||
import { StepBasics } from './_components/StepBasics'
|
||||
import { StepGesellschafter } from './_components/StepGesellschafter'
|
||||
import { StepCapital, StepGFAssignment, StepGFContracts, StepNotar, StepSHAConfig } from './_components/StepsSimpleConfig'
|
||||
import { StepGenerate } from './_components/StepGenerate'
|
||||
|
||||
export default function FoundingWizardPage() {
|
||||
const {
|
||||
state, hydrated, generating, error,
|
||||
update, nextStep, prevStep, reset,
|
||||
addGesellschafter, updateGesellschafter, removeGesellschafter,
|
||||
upsertGFContract,
|
||||
canProceed, generateDocuments,
|
||||
gf_list, steps,
|
||||
} = useFoundingWizardForm()
|
||||
|
||||
if (!hydrated) return null
|
||||
|
||||
const isLastStep = state.current_step === steps.length
|
||||
|
||||
return (
|
||||
<div className="min-h-screen bg-gray-50 py-8" data-testid="founding-wizard">
|
||||
<div className="max-w-5xl mx-auto px-4">
|
||||
{/* Header */}
|
||||
<div className="mb-8 flex justify-between items-start">
|
||||
<div>
|
||||
<h1 className="text-3xl font-bold text-gray-900">Gründungs-Wizard</h1>
|
||||
<p className="text-gray-600 mt-2">
|
||||
Erstellt alle Notartermin-Dokumente für Deine GmbH/UG-Gründung in 8 Schritten.
|
||||
</p>
|
||||
</div>
|
||||
<button
|
||||
data-testid="reset-wizard"
|
||||
onClick={() => { if (confirm('Wizard-Daten zurücksetzen?')) reset() }}
|
||||
className="text-sm text-gray-500 hover:text-red-600"
|
||||
>
|
||||
Zurücksetzen
|
||||
</button>
|
||||
</div>
|
||||
|
||||
{/* Progress Steps */}
|
||||
<div className="mb-8" data-testid="wizard-progress">
|
||||
<div className="flex items-center justify-between">
|
||||
{steps.map((step, idx) => (
|
||||
<React.Fragment key={step.id}>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => state.current_step > step.id && update('current_step', step.id)}
|
||||
className="flex items-center"
|
||||
data-testid={`step-indicator-${step.id}`}
|
||||
>
|
||||
<div className={`w-9 h-9 rounded-full flex items-center justify-center text-sm font-medium ${
|
||||
step.id < state.current_step ? 'bg-purple-600 text-white' :
|
||||
step.id === state.current_step ? 'bg-purple-100 text-purple-600 border-2 border-purple-600' :
|
||||
'bg-gray-100 text-gray-400'
|
||||
}`}>
|
||||
{step.id < state.current_step ? '✓' : step.id}
|
||||
</div>
|
||||
<div className="ml-2 hidden md:block text-left">
|
||||
<div className={`text-xs font-medium ${step.id <= state.current_step ? 'text-gray-900' : 'text-gray-400'}`}>
|
||||
{step.name}
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
{idx < steps.length - 1 && (
|
||||
<div className={`flex-1 h-0.5 mx-2 ${step.id < state.current_step ? 'bg-purple-600' : 'bg-gray-200'}`} />
|
||||
)}
|
||||
</React.Fragment>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Step Content */}
|
||||
<div className="bg-white rounded-xl border border-gray-200 p-8">
|
||||
<div className="mb-6">
|
||||
<h2 className="text-xl font-semibold text-gray-900">
|
||||
{steps[state.current_step - 1]?.name}
|
||||
</h2>
|
||||
<p className="text-gray-500 text-sm">{steps[state.current_step - 1]?.description}</p>
|
||||
</div>
|
||||
|
||||
<div data-testid={`step-content-${state.current_step}`}>
|
||||
{state.current_step === 1 && <StepBasics state={state} update={update} />}
|
||||
{state.current_step === 2 && (
|
||||
<StepGesellschafter
|
||||
state={state}
|
||||
addGesellschafter={addGesellschafter}
|
||||
updateGesellschafter={updateGesellschafter}
|
||||
removeGesellschafter={removeGesellschafter}
|
||||
/>
|
||||
)}
|
||||
{state.current_step === 3 && <StepGFAssignment state={state} update={update} />}
|
||||
{state.current_step === 4 && <StepCapital state={state} update={update} />}
|
||||
{state.current_step === 5 && <StepNotar state={state} update={update} />}
|
||||
{state.current_step === 6 && <StepSHAConfig state={state} update={update} />}
|
||||
{state.current_step === 7 && (
|
||||
<StepGFContracts state={state} update={update} gf_list={gf_list} upsertGFContract={upsertGFContract} />
|
||||
)}
|
||||
{state.current_step === 8 && (
|
||||
<StepGenerate
|
||||
state={state}
|
||||
update={update}
|
||||
generating={generating}
|
||||
error={error}
|
||||
onGenerate={generateDocuments}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
|
||||
{/* Navigation */}
|
||||
{!isLastStep && (
|
||||
<div className="flex justify-between items-center mt-8 pt-6 border-t border-gray-200">
|
||||
<button
|
||||
data-testid="prev-step"
|
||||
onClick={prevStep}
|
||||
disabled={state.current_step === 1}
|
||||
className="px-6 py-3 text-gray-600 hover:text-gray-900 disabled:opacity-50"
|
||||
>
|
||||
Zurück
|
||||
</button>
|
||||
<span className="text-xs text-gray-400">
|
||||
Schritt {state.current_step} von {steps.length}
|
||||
</span>
|
||||
<button
|
||||
data-testid="next-step"
|
||||
onClick={nextStep}
|
||||
disabled={!canProceed}
|
||||
className="px-8 py-3 bg-purple-600 text-white rounded-lg hover:bg-purple-700 disabled:opacity-50"
|
||||
>
|
||||
Weiter
|
||||
</button>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
/**
|
||||
* Template-Kategorisierung als Code-Registry.
|
||||
*
|
||||
* Source-of-Truth bei aktiver Migration 137/138 ist die DB.
|
||||
* Diese Registry dient als Fallback und für Frontend-only Filter,
|
||||
* wenn DB-Felder noch nicht verfügbar sind (z.B. lokale Dev-DB ohne Migration).
|
||||
*
|
||||
* Synchron halten mit migrations/138_template_backfill_categories.sql.
|
||||
*/
|
||||
|
||||
export type LifecycleStage = 'pre_founding' | 'founding' | 'startup' | 'kmu' | 'konzern'
|
||||
|
||||
export type FunctionalCategory =
|
||||
| 'founding_legal'
|
||||
| 'employment'
|
||||
| 'investor_funding'
|
||||
| 'customer_b2b'
|
||||
| 'customer_b2c'
|
||||
| 'data_protection'
|
||||
| 'it_security'
|
||||
| 'ai_governance'
|
||||
| 'internal_policy'
|
||||
| 'public_facing'
|
||||
| 'compliance_process'
|
||||
| 'finance_tax'
|
||||
| 'vendor_supplier'
|
||||
|
||||
export interface TemplateCategorization {
|
||||
lifecycle_stage: LifecycleStage[]
|
||||
functional_category: FunctionalCategory
|
||||
}
|
||||
|
||||
export const TEMPLATE_CATEGORIES: Record<string, TemplateCategorization> = {
|
||||
// Founding Legal
|
||||
gesellschafterliste: { lifecycle_stage: ['pre_founding', 'founding'], functional_category: 'founding_legal' },
|
||||
gf_bestellungsbeschluss: { lifecycle_stage: ['founding'], functional_category: 'founding_legal' },
|
||||
hrb_anmeldung: { lifecycle_stage: ['founding'], functional_category: 'founding_legal' },
|
||||
ip_assignment_agreement: { lifecycle_stage: ['pre_founding', 'founding', 'startup'], functional_category: 'founding_legal' },
|
||||
articles_of_association: { lifecycle_stage: ['founding', 'startup', 'kmu', 'konzern'], functional_category: 'founding_legal' },
|
||||
sha: { lifecycle_stage: ['founding', 'startup', 'kmu', 'konzern'], functional_category: 'founding_legal' },
|
||||
geschaeftsordnung_gf: { lifecycle_stage: ['founding', 'startup', 'kmu', 'konzern'], functional_category: 'founding_legal' },
|
||||
|
||||
// Investor / Funding
|
||||
term_sheet: { lifecycle_stage: ['pre_founding', 'startup'], functional_category: 'investor_funding' },
|
||||
convertible_loan_agreement: { lifecycle_stage: ['pre_founding', 'startup'], functional_category: 'investor_funding' },
|
||||
subscription_agreement: { lifecycle_stage: ['startup', 'kmu'], functional_category: 'investor_funding' },
|
||||
esop_plan: { lifecycle_stage: ['startup', 'kmu'], functional_category: 'investor_funding' },
|
||||
cap_table: { lifecycle_stage: ['founding', 'startup', 'kmu', 'konzern'], functional_category: 'investor_funding' },
|
||||
|
||||
// Employment
|
||||
managing_director_employment_contract: { lifecycle_stage: ['founding', 'startup', 'kmu', 'konzern'], functional_category: 'employment' },
|
||||
employment_contract_de: { lifecycle_stage: ['founding', 'startup', 'kmu', 'konzern'], functional_category: 'employment' },
|
||||
nda: { lifecycle_stage: ['founding', 'startup', 'kmu', 'konzern'], functional_category: 'employment' },
|
||||
offboarding_policy: { lifecycle_stage: ['founding', 'startup', 'kmu', 'konzern'], functional_category: 'employment' },
|
||||
|
||||
// Customer B2B
|
||||
agb: { lifecycle_stage: ['startup', 'kmu', 'konzern'], functional_category: 'customer_b2b' },
|
||||
sla: { lifecycle_stage: ['startup', 'kmu', 'konzern'], functional_category: 'customer_b2b' },
|
||||
dpa: { lifecycle_stage: ['startup', 'kmu', 'konzern'], functional_category: 'customer_b2b' },
|
||||
data_processing_agreement: { lifecycle_stage: ['startup', 'kmu', 'konzern'], functional_category: 'customer_b2b' },
|
||||
cloud_service_agreement: { lifecycle_stage: ['startup', 'kmu', 'konzern'], functional_category: 'customer_b2b' },
|
||||
terms_of_service: { lifecycle_stage: ['startup', 'kmu', 'konzern'], functional_category: 'customer_b2b' },
|
||||
|
||||
// Public-facing
|
||||
impressum: { lifecycle_stage: ['founding', 'startup', 'kmu', 'konzern'], functional_category: 'public_facing' },
|
||||
|
||||
// AI Governance
|
||||
ai_usage_policy: { lifecycle_stage: ['startup', 'kmu', 'konzern'], functional_category: 'ai_governance' },
|
||||
|
||||
// Whistleblower nur ab KMU (>=50 MA)
|
||||
whistleblower_policy: { lifecycle_stage: ['kmu', 'konzern'], functional_category: 'internal_policy' },
|
||||
}
|
||||
|
||||
/**
|
||||
* Notartermin-Bundle: alle Dokumente die für die Gründung benötigt werden.
|
||||
* Investor-Dokumente sind separat (term_sheet, convertible_loan_agreement, etc.).
|
||||
*/
|
||||
export const NOTARY_BUNDLE_DOCUMENTS: string[] = [
|
||||
'articles_of_association', // Satzung — notariell beurkundet
|
||||
'gesellschafterliste', // Pflicht § 40 GmbHG
|
||||
'gf_bestellungsbeschluss', // Bestellung Geschäftsführer
|
||||
'hrb_anmeldung', // HRB-Anmeldung
|
||||
'sha', // optional parallel
|
||||
'geschaeftsordnung_gf', // intern, nach Notar
|
||||
'managing_director_employment_contract', // GF-Dienstverträge
|
||||
'ip_assignment_agreement', // Gründer-IP sichern
|
||||
]
|
||||
|
||||
export function getDocumentsForStage(stage: LifecycleStage): string[] {
|
||||
return Object.entries(TEMPLATE_CATEGORIES)
|
||||
.filter(([, cat]) => cat.lifecycle_stage.includes(stage))
|
||||
.map(([docType]) => docType)
|
||||
}
|
||||
|
||||
export function getDocumentsForCategory(category: FunctionalCategory): string[] {
|
||||
return Object.entries(TEMPLATE_CATEGORIES)
|
||||
.filter(([, cat]) => cat.functional_category === category)
|
||||
.map(([docType]) => docType)
|
||||
}
|
||||
|
||||
export const LIFECYCLE_STAGE_LABELS: Record<LifecycleStage, string> = {
|
||||
pre_founding: 'Vor-Gründung (Term Sheet, IP-Sicherung)',
|
||||
founding: 'Gründung (Notar)',
|
||||
startup: 'Startup (0-3 Jahre, <25 MA)',
|
||||
kmu: 'KMU (3+ Jahre, 25-250 MA)',
|
||||
konzern: 'Konzern (250+ MA)',
|
||||
}
|
||||
|
||||
export const FUNCTIONAL_CATEGORY_LABELS: Record<FunctionalCategory, string> = {
|
||||
founding_legal: 'Gründungsrechtliches',
|
||||
employment: 'Arbeitsverträge',
|
||||
investor_funding: 'Investor & Funding',
|
||||
customer_b2b: 'Kunden-Verträge (B2B)',
|
||||
customer_b2c: 'Kunden-Verträge (B2C)',
|
||||
data_protection: 'Datenschutz (DSGVO)',
|
||||
it_security: 'IT-Sicherheit',
|
||||
ai_governance: 'KI-Governance',
|
||||
internal_policy: 'Interne Richtlinien',
|
||||
public_facing: 'Öffentlich (Website)',
|
||||
compliance_process:'Compliance-Prozesse',
|
||||
finance_tax: 'Finanzen & Steuern',
|
||||
vendor_supplier: 'Lieferanten',
|
||||
}
|
||||
@@ -0,0 +1,184 @@
|
||||
/**
|
||||
* TypeScript-Datentypen für den Founding-Wizard.
|
||||
*
|
||||
* Die Wizard-Eingaben werden in localStorage gespeichert und beim Submit
|
||||
* an die document-generator API geschickt zur Template-Befüllung.
|
||||
*/
|
||||
|
||||
import type { LifecycleStage } from './template-categories'
|
||||
|
||||
export interface Gesellschafter {
|
||||
id: string
|
||||
rolle: 'founder' | 'investor' | 'family' | 'other'
|
||||
name: string
|
||||
geburtsdatum?: string // YYYY-MM-DD
|
||||
adresse: string
|
||||
email?: string
|
||||
/** Nennbetrag in EUR, z.B. 25000 */
|
||||
nennbetrag_eur: number
|
||||
/** Anteilsnummer beginnend bei 1 */
|
||||
anteil_nr: number
|
||||
/** prozentualer Anteil am Stammkapital (computed) */
|
||||
anteil_pct?: number
|
||||
is_geschaeftsfuehrer: boolean
|
||||
/** Bei GF: interne Rolle z.B. CEO/CTO */
|
||||
internal_role?: string
|
||||
/** Falls Gründer akademischen Hintergrund hat (Professur etc.) */
|
||||
has_academic_background?: boolean
|
||||
}
|
||||
|
||||
export interface NotarData {
|
||||
notary_name: string
|
||||
notary_place: string
|
||||
notary_address?: string
|
||||
notary_email?: string
|
||||
notarial_date?: string // YYYY-MM-DD, geplant
|
||||
urnr?: string // wird vom Notar vergeben
|
||||
}
|
||||
|
||||
export interface CompanyBasics {
|
||||
company_name: string
|
||||
legal_form: 'GmbH' | 'UG'
|
||||
company_seat: string // z.B. "Bietigheim-Bissingen"
|
||||
company_address: string
|
||||
company_purpose_description: string // Volltext für § 2 Satzung
|
||||
company_purpose_bullets: string[]
|
||||
industry: string
|
||||
business_year: string // z.B. "Kalenderjahr"
|
||||
has_research_focus: boolean
|
||||
}
|
||||
|
||||
export interface CapitalConfig {
|
||||
stammkapital_eur: number // z.B. 25000
|
||||
einlage_method: 'Geld' | 'Sacheinlage' | 'Geld und Sacheinlage'
|
||||
einlage_quote_initial_pct: number // z.B. 50 oder 100
|
||||
has_sacheinlage: boolean
|
||||
}
|
||||
|
||||
export interface SHAConfig {
|
||||
has_sha: boolean
|
||||
vesting_months: number // Standard 48
|
||||
cliff_months: number // Standard 12
|
||||
drag_along_threshold_pct: number // Standard 75
|
||||
tag_along_threshold_pct: number // Standard 20
|
||||
reserved_matters_majority_pct: number // Standard 75
|
||||
has_beirat: boolean
|
||||
has_texas_shootout: boolean
|
||||
has_ceo_designation: boolean
|
||||
ceo_name?: string // ref to gesellschafter.name
|
||||
esop_pool_pct: number // Standard 0 oder 10
|
||||
}
|
||||
|
||||
export interface GFContract {
|
||||
gesellschafter_id: string // ref to gesellschafter.id
|
||||
gross_annual_salary_eur: number
|
||||
has_bonus: boolean
|
||||
has_company_car: boolean
|
||||
has_bav: boolean
|
||||
vacation_days: number // Standard 30
|
||||
kuendigungsfrist_gesellschaft_monate: number // Standard 6
|
||||
kuendigungsfrist_gf_monate: number // Standard 3
|
||||
para_181_release: boolean
|
||||
sv_status: 'sozialversicherungsfrei' | 'sozialversicherungspflichtig' | 'noch zu klären'
|
||||
}
|
||||
|
||||
/**
|
||||
* Vollständiger Wizard-State.
|
||||
* Wird Step-by-Step befüllt, in localStorage gespeichert,
|
||||
* und beim Submit an /api/v1/founding-wizard/generate geschickt.
|
||||
*/
|
||||
export interface FoundingWizardState {
|
||||
/** Aktueller Step (1-8) */
|
||||
current_step: number
|
||||
/** Lifecycle-Stage Auswahl (default: founding) */
|
||||
lifecycle_stage: LifecycleStage
|
||||
|
||||
// Step 1: Lifecycle
|
||||
is_pre_notary: boolean
|
||||
|
||||
// Step 2: Basics
|
||||
basics: CompanyBasics
|
||||
|
||||
// Step 3: Gesellschafter
|
||||
gesellschafter: Gesellschafter[]
|
||||
|
||||
// Step 4: Kapital
|
||||
capital: CapitalConfig
|
||||
|
||||
// Step 5: Notar
|
||||
notar: NotarData
|
||||
|
||||
// Step 6: SHA-Konfiguration
|
||||
sha: SHAConfig
|
||||
|
||||
// Step 7: GF-Verträge (1 pro GF)
|
||||
gf_contracts: GFContract[]
|
||||
|
||||
// Step 8: Auswahl der zu generierenden Dokumente
|
||||
selected_documents: string[]
|
||||
|
||||
/** Output nach Submit: URL + Dateiname pro generiertem Dokument */
|
||||
generated_documents?: GeneratedDocument[]
|
||||
}
|
||||
|
||||
export interface GeneratedDocument {
|
||||
document_type: string
|
||||
title: string
|
||||
download_url: string
|
||||
size_bytes: number
|
||||
generated_at: string
|
||||
}
|
||||
|
||||
/** Default-State für einen frischen Wizard */
|
||||
export function defaultFoundingWizardState(): FoundingWizardState {
|
||||
return {
|
||||
current_step: 1,
|
||||
lifecycle_stage: 'founding',
|
||||
is_pre_notary: true,
|
||||
basics: {
|
||||
company_name: '',
|
||||
legal_form: 'GmbH',
|
||||
company_seat: '',
|
||||
company_address: '',
|
||||
company_purpose_description: '',
|
||||
company_purpose_bullets: [],
|
||||
industry: '',
|
||||
business_year: 'Kalenderjahr',
|
||||
has_research_focus: false,
|
||||
},
|
||||
gesellschafter: [],
|
||||
capital: {
|
||||
stammkapital_eur: 25000,
|
||||
einlage_method: 'Geld',
|
||||
einlage_quote_initial_pct: 50,
|
||||
has_sacheinlage: false,
|
||||
},
|
||||
notar: {
|
||||
notary_name: '',
|
||||
notary_place: '',
|
||||
},
|
||||
sha: {
|
||||
has_sha: true,
|
||||
vesting_months: 48,
|
||||
cliff_months: 12,
|
||||
drag_along_threshold_pct: 75,
|
||||
tag_along_threshold_pct: 20,
|
||||
reserved_matters_majority_pct: 75,
|
||||
has_beirat: false,
|
||||
has_texas_shootout: false,
|
||||
has_ceo_designation: false,
|
||||
esop_pool_pct: 0,
|
||||
},
|
||||
gf_contracts: [],
|
||||
selected_documents: [
|
||||
'articles_of_association',
|
||||
'gesellschafterliste',
|
||||
'gf_bestellungsbeschluss',
|
||||
'hrb_anmeldung',
|
||||
'sha',
|
||||
'geschaeftsordnung_gf',
|
||||
'managing_director_employment_contract',
|
||||
'ip_assignment_agreement',
|
||||
],
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,196 @@
|
||||
/**
|
||||
* Playwright E2E-Test: Founding-Wizard mit 2-Mann GmbH (Benjamin Bönisch + Sharang Parnerkar).
|
||||
*
|
||||
* Test-Flow:
|
||||
* 1. Lokale Dev-URL aufrufen
|
||||
* 2. Wizard durch alle 8 Steps befüllen
|
||||
* 3. Dokumente generieren (8 Stück für Notartermin-Bundle)
|
||||
* 4. Word-Download-Links validieren
|
||||
*
|
||||
* Voraussetzung: `npm run dev` läuft auf http://localhost:3007
|
||||
* Backend ist erreichbar (mit Migration 137 + 138 + Templates 123–136)
|
||||
*
|
||||
* Ausführen:
|
||||
* cd admin-compliance
|
||||
* npx playwright test tests/playwright/founding-wizard/
|
||||
*/
|
||||
|
||||
import { expect, test } from '@playwright/test'
|
||||
|
||||
const BASE_URL = process.env.WIZARD_URL || 'http://localhost:3007/sdk/founding-wizard'
|
||||
|
||||
const TEST_DATA = {
|
||||
basics: {
|
||||
company_name: 'Breakpilot GmbH',
|
||||
company_seat: 'Bietigheim-Bissingen',
|
||||
company_address: 'Hauptstraße 1, 74321 Bietigheim-Bissingen',
|
||||
industry: 'Software / KI / SaaS',
|
||||
purpose: 'die Entwicklung, Bereitstellung und der Vertrieb von Softwarelösungen, Plattformen und IT-Dienstleistungen im Bereich der Künstlichen Intelligenz sowie compliance-bezogener Datenverarbeitungssysteme',
|
||||
bullets: [
|
||||
'a) Entwicklung, Programmierung und Betrieb von KI-gestützter Compliance-Software',
|
||||
'b) Bereitstellung von datenschutzkonformen SaaS-Lösungen für Unternehmen',
|
||||
'c) Beratungs- und Integrationsleistungen im Compliance-Umfeld',
|
||||
],
|
||||
},
|
||||
notar: {
|
||||
name: 'Dr. Müller',
|
||||
place: 'Stuttgart',
|
||||
address: 'Königstraße 1, 70173 Stuttgart',
|
||||
date: '2026-06-15',
|
||||
},
|
||||
gesellschafter: [
|
||||
{
|
||||
name: 'Benjamin Bönisch',
|
||||
birthdate: '1980-03-15',
|
||||
address: 'Hauptstraße 1, 74321 Bietigheim-Bissingen',
|
||||
email: 'benjamin@breakpilot.ai',
|
||||
nennbetrag: 12500,
|
||||
is_gf: true,
|
||||
role: 'CEO',
|
||||
},
|
||||
{
|
||||
name: 'Sharang Parnerkar',
|
||||
birthdate: '1985-09-22',
|
||||
address: 'Hauptstraße 2, 74321 Bietigheim-Bissingen',
|
||||
email: 'sharang@breakpilot.ai',
|
||||
nennbetrag: 12500,
|
||||
is_gf: true,
|
||||
role: 'CTO',
|
||||
},
|
||||
],
|
||||
stammkapital: 25000,
|
||||
}
|
||||
|
||||
test.describe('Founding Wizard — 2-Mann GmbH', () => {
|
||||
test.beforeEach(async ({ page }) => {
|
||||
// Clear localStorage to start fresh
|
||||
await page.goto(BASE_URL)
|
||||
await page.evaluate(() => localStorage.clear())
|
||||
await page.reload()
|
||||
})
|
||||
|
||||
test('füllt komplette 2-Mann GmbH aus und generiert Notartermin-Bundle', async ({ page }) => {
|
||||
await page.goto(BASE_URL)
|
||||
await expect(page.getByTestId('founding-wizard')).toBeVisible()
|
||||
|
||||
// STEP 1: Basics
|
||||
await expect(page.getByTestId('step-content-1')).toBeVisible()
|
||||
await page.getByTestId('company-name').fill(TEST_DATA.basics.company_name)
|
||||
await page.getByTestId('legal-form').selectOption('GmbH')
|
||||
await page.getByTestId('company-seat').fill(TEST_DATA.basics.company_seat)
|
||||
await page.getByTestId('company-address').fill(TEST_DATA.basics.company_address)
|
||||
await page.getByTestId('industry').fill(TEST_DATA.basics.industry)
|
||||
await page.getByTestId('company-purpose').fill(TEST_DATA.basics.purpose)
|
||||
await page.getByTestId('company-purpose-bullets').fill(TEST_DATA.basics.bullets.join('\n'))
|
||||
await page.getByTestId('next-step').click()
|
||||
|
||||
// STEP 2: Gesellschafter
|
||||
await expect(page.getByTestId('step-content-2')).toBeVisible()
|
||||
for (const gs of TEST_DATA.gesellschafter) {
|
||||
await page.getByTestId('gs-name').fill(gs.name)
|
||||
await page.getByTestId('gs-birthdate').fill(gs.birthdate)
|
||||
await page.getByTestId('gs-address').fill(gs.address)
|
||||
await page.getByTestId('gs-email').fill(gs.email)
|
||||
await page.getByTestId('gs-nennbetrag').fill(String(gs.nennbetrag))
|
||||
await page.getByTestId('gs-role').fill(gs.role)
|
||||
// is_gf bereits default true, nichts zu tun
|
||||
await page.getByTestId('add-gesellschafter').click()
|
||||
}
|
||||
await expect(page.getByTestId('gs-row-1')).toContainText('Benjamin Bönisch')
|
||||
await expect(page.getByTestId('gs-row-2')).toContainText('Sharang Parnerkar')
|
||||
await expect(page.getByTestId('gs-total')).toContainText('25.000')
|
||||
await page.getByTestId('next-step').click()
|
||||
|
||||
// STEP 3: GF-Assignment (beide bereits GF aus Step 2)
|
||||
await expect(page.getByTestId('step-content-3')).toBeVisible()
|
||||
await page.getByTestId('next-step').click()
|
||||
|
||||
// STEP 4: Kapital
|
||||
await expect(page.getByTestId('step-content-4')).toBeVisible()
|
||||
await expect(page.getByTestId('stammkapital')).toHaveValue('25000')
|
||||
await page.getByTestId('einlage-method').selectOption('Geld')
|
||||
await page.getByTestId('einlage-quote').fill('50')
|
||||
await page.getByTestId('next-step').click()
|
||||
|
||||
// STEP 5: Notar
|
||||
await expect(page.getByTestId('step-content-5')).toBeVisible()
|
||||
await page.getByTestId('notary-name').fill(TEST_DATA.notar.name)
|
||||
await page.getByTestId('notary-place').fill(TEST_DATA.notar.place)
|
||||
await page.getByTestId('notary-address').fill(TEST_DATA.notar.address)
|
||||
await page.getByTestId('notarial-date').fill(TEST_DATA.notar.date)
|
||||
await page.getByTestId('next-step').click()
|
||||
|
||||
// STEP 6: SHA-Optionen
|
||||
await expect(page.getByTestId('step-content-6')).toBeVisible()
|
||||
await expect(page.getByTestId('has-sha')).toBeChecked()
|
||||
await expect(page.getByTestId('vesting-months')).toHaveValue('48')
|
||||
await expect(page.getByTestId('drag-along-pct')).toHaveValue('75')
|
||||
await page.getByTestId('next-step').click()
|
||||
|
||||
// STEP 7: GF-Verträge (für beide Founders)
|
||||
await expect(page.getByTestId('step-content-7')).toBeVisible()
|
||||
// GF-Contracts werden mit Defaults erzeugt sobald GFs definiert sind -
|
||||
// wir editieren die Gehälter
|
||||
const contracts = page.locator('[data-testid^="contract-"]')
|
||||
const count = await contracts.count()
|
||||
expect(count).toBe(2)
|
||||
await page.getByTestId('next-step').click()
|
||||
|
||||
// STEP 8: Generate
|
||||
await expect(page.getByTestId('step-content-8')).toBeVisible()
|
||||
await expect(page.getByTestId('generate-summary')).toContainText('Breakpilot GmbH')
|
||||
await expect(page.getByTestId('generate-summary')).toContainText('Bietigheim-Bissingen')
|
||||
await expect(page.getByTestId('generate-summary')).toContainText('25.000')
|
||||
|
||||
// Notartermin-Bundle auswählen
|
||||
await page.getByTestId('select-notary-bundle').click()
|
||||
// Check that bundle items are selected
|
||||
await expect(page.getByTestId('doc-articles_of_association')).toBeChecked()
|
||||
await expect(page.getByTestId('doc-sha')).toBeChecked()
|
||||
await expect(page.getByTestId('doc-gesellschafterliste')).toBeChecked()
|
||||
await expect(page.getByTestId('doc-managing_director_employment_contract')).toBeChecked()
|
||||
|
||||
// Generate
|
||||
await page.getByTestId('generate-docs').click()
|
||||
|
||||
// Warten auf Generierung (max 30s)
|
||||
await expect(page.getByTestId('generated-docs')).toBeVisible({ timeout: 30000 })
|
||||
|
||||
// Mindestens 8 Dokumente sollten erscheinen (für 2 Founders evtl. doppelt: GF-Vertrag, IP-Assignment)
|
||||
const downloadLinks = page.locator('[data-testid^="download-"]')
|
||||
const linkCount = await downloadLinks.count()
|
||||
expect(linkCount).toBeGreaterThanOrEqual(8)
|
||||
|
||||
// Validiere dass download-URLs data: URLs sind (base64 DOCX)
|
||||
for (let i = 0; i < Math.min(linkCount, 3); i++) {
|
||||
const href = await downloadLinks.nth(i).getAttribute('href')
|
||||
expect(href).toMatch(/^data:application\/vnd\.openxmlformats-officedocument\.wordprocessingml\.document;base64,/)
|
||||
}
|
||||
|
||||
// Screenshot fürs Test-Artifact
|
||||
await page.screenshot({ path: 'test-results/founding-wizard-final.png', fullPage: true })
|
||||
})
|
||||
|
||||
test('zeigt Validierung wenn Pflichtfelder fehlen', async ({ page }) => {
|
||||
await page.goto(BASE_URL)
|
||||
// Next-Button sollte disabled sein wenn nichts ausgefüllt
|
||||
await expect(page.getByTestId('next-step')).toBeDisabled()
|
||||
|
||||
await page.getByTestId('company-name').fill('Test')
|
||||
// Immer noch disabled weil purpose fehlt
|
||||
await expect(page.getByTestId('next-step')).toBeDisabled()
|
||||
|
||||
await page.getByTestId('company-seat').fill('Stuttgart')
|
||||
await page.getByTestId('company-purpose').fill('Eine lange genug Beschreibung des Zwecks.')
|
||||
// Jetzt sollte er enabled sein
|
||||
await expect(page.getByTestId('next-step')).toBeEnabled()
|
||||
})
|
||||
|
||||
test('Reset löscht alle Daten', async ({ page }) => {
|
||||
await page.goto(BASE_URL)
|
||||
await page.getByTestId('company-name').fill('Wird gelöscht GmbH')
|
||||
page.on('dialog', d => d.accept())
|
||||
await page.getByTestId('reset-wizard').click()
|
||||
await expect(page.getByTestId('company-name')).toHaveValue('')
|
||||
})
|
||||
})
|
||||
@@ -71,6 +71,7 @@ _ROUTER_MODULES = [
|
||||
"compliance_report_routes",
|
||||
"whistleblower_routes",
|
||||
"tcf_routes",
|
||||
"founding_wizard_routes",
|
||||
]
|
||||
|
||||
_loaded_count = 0
|
||||
|
||||
@@ -0,0 +1,183 @@
|
||||
"""FastAPI-Route fuer den Founding-Wizard Document-Generation.
|
||||
|
||||
POST /v1/founding-wizard/generate
|
||||
Body: FoundingWizardState (Wizard-Eingaben)
|
||||
Returns: {documents: [{document_type, title, content_base64, size_bytes, ...}]}
|
||||
|
||||
Templates werden aus compliance_legal_templates geladen, mit dem Wizard-Context
|
||||
gerendert (Handlebars-light) und als .docx-Bytes (base64) zurueckgegeben.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import base64
|
||||
import logging
|
||||
from typing import Any
|
||||
|
||||
from fastapi import APIRouter, HTTPException, Request
|
||||
from pydantic import BaseModel
|
||||
from sqlalchemy import text
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from classroom_engine.database import get_db
|
||||
from compliance.services.founding_wizard import (
|
||||
base_context,
|
||||
markdown_to_docx_bytes,
|
||||
render_template,
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
router = APIRouter(prefix="/v1/founding-wizard", tags=["founding-wizard"])
|
||||
|
||||
DOC_TITLES = {
|
||||
"articles_of_association": "Satzung",
|
||||
"gesellschafterliste": "Gesellschafterliste",
|
||||
"gf_bestellungsbeschluss": "Bestellungsbeschluss Geschäftsführer",
|
||||
"hrb_anmeldung": "Handelsregister-Anmeldung",
|
||||
"sha": "Shareholders' Agreement (SHA)",
|
||||
"geschaeftsordnung_gf": "Geschäftsordnung der Geschäftsführung",
|
||||
"managing_director_employment_contract": "Geschäftsführerdienstvertrag",
|
||||
"ip_assignment_agreement": "IP-Assignment Agreement",
|
||||
"employment_contract_de": "Arbeitsvertrag",
|
||||
"term_sheet": "Term Sheet",
|
||||
"convertible_loan_agreement": "Wandeldarlehensvertrag",
|
||||
"subscription_agreement": "Beteiligungsvertrag",
|
||||
"esop_plan": "ESOP/VSOP-Plan",
|
||||
"cap_table": "Cap Table",
|
||||
}
|
||||
|
||||
|
||||
class GenerationRequest(BaseModel):
|
||||
current_step: int = 8
|
||||
lifecycle_stage: str = "founding"
|
||||
is_pre_notary: bool = True
|
||||
basics: dict[str, Any] = {}
|
||||
gesellschafter: list[dict[str, Any]] = []
|
||||
capital: dict[str, Any] = {}
|
||||
notar: dict[str, Any] = {}
|
||||
sha: dict[str, Any] = {}
|
||||
gf_contracts: list[dict[str, Any]] = []
|
||||
selected_documents: list[str] = []
|
||||
|
||||
|
||||
class DocumentResult(BaseModel):
|
||||
document_type: str
|
||||
title: str
|
||||
filename: str
|
||||
content_base64: str
|
||||
size_bytes: int
|
||||
generated_at: str
|
||||
placeholders_count: int
|
||||
|
||||
|
||||
class GenerationResponse(BaseModel):
|
||||
documents: list[DocumentResult]
|
||||
warnings: list[str] = []
|
||||
|
||||
|
||||
def _load_template(db: Session, document_type: str) -> dict[str, Any] | None:
|
||||
"""Laedt das neueste published Template fuer den document_type."""
|
||||
row = db.execute(
|
||||
text("""
|
||||
SELECT id, document_type, title, content, placeholders, version, status
|
||||
FROM compliance_legal_templates
|
||||
WHERE document_type = :dt AND status = 'published'
|
||||
ORDER BY created_at DESC
|
||||
LIMIT 1
|
||||
"""),
|
||||
{"dt": document_type},
|
||||
).first()
|
||||
if not row:
|
||||
return None
|
||||
return {
|
||||
"id": str(row.id),
|
||||
"document_type": row.document_type,
|
||||
"title": row.title,
|
||||
"content": row.content,
|
||||
"placeholders": row.placeholders or [],
|
||||
"version": row.version,
|
||||
}
|
||||
|
||||
|
||||
def _render_one(db: Session, doc_type: str, context: dict[str, Any]) -> DocumentResult | None:
|
||||
template = _load_template(db, doc_type)
|
||||
if not template:
|
||||
logger.warning("No template found for document_type=%s", doc_type)
|
||||
return None
|
||||
rendered_md = render_template(template["content"], context)
|
||||
title = template.get("title") or DOC_TITLES.get(doc_type, doc_type)
|
||||
docx_bytes = markdown_to_docx_bytes(rendered_md, title=None)
|
||||
from datetime import datetime
|
||||
return DocumentResult(
|
||||
document_type=doc_type,
|
||||
title=title,
|
||||
filename=f"{doc_type}_{context.get('COMPANY_NAME', 'Unternehmen')}.docx".replace(" ", "_"),
|
||||
content_base64=base64.b64encode(docx_bytes).decode("ascii"),
|
||||
size_bytes=len(docx_bytes),
|
||||
generated_at=datetime.utcnow().isoformat() + "Z",
|
||||
placeholders_count=len(template.get("placeholders") or []),
|
||||
)
|
||||
|
||||
|
||||
@router.post("/generate", response_model=GenerationResponse)
|
||||
def generate_documents(req: GenerationRequest, request: Request) -> GenerationResponse:
|
||||
"""Hauptendpunkt: nimmt Wizard-State entgegen, generiert DOCX fuer alle ausgewaehlten Dokumente."""
|
||||
# Database session is provided via FastAPI dependency injection in production.
|
||||
# Hier vereinfacht direkt aus dem request state (verwendet Hauptverbindung)
|
||||
from classroom_engine.database import SessionLocal
|
||||
db: Session = SessionLocal()
|
||||
try:
|
||||
context = base_context(req.model_dump())
|
||||
results: list[DocumentResult] = []
|
||||
warnings: list[str] = []
|
||||
|
||||
for doc_type in req.selected_documents:
|
||||
result = _render_one(db, doc_type, context)
|
||||
if result is None:
|
||||
warnings.append(f"Template '{doc_type}' nicht in Datenbank gefunden")
|
||||
continue
|
||||
results.append(result)
|
||||
|
||||
if not results:
|
||||
raise HTTPException(
|
||||
status_code=400,
|
||||
detail=f"Keines der angeforderten Dokumente konnte generiert werden. "
|
||||
f"Warnings: {warnings}"
|
||||
)
|
||||
|
||||
return GenerationResponse(documents=results, warnings=warnings)
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
@router.get("/templates")
|
||||
def list_available_templates(request: Request) -> dict[str, Any]:
|
||||
"""Listet alle verfuegbaren Templates mit Kategorisierung."""
|
||||
from classroom_engine.database import SessionLocal
|
||||
db: Session = SessionLocal()
|
||||
try:
|
||||
rows = db.execute(
|
||||
text("""
|
||||
SELECT document_type, title, description, version, status,
|
||||
lifecycle_stage, functional_category
|
||||
FROM compliance_legal_templates
|
||||
WHERE status = 'published'
|
||||
ORDER BY functional_category, document_type
|
||||
""")
|
||||
).fetchall()
|
||||
return {
|
||||
"templates": [
|
||||
{
|
||||
"document_type": r.document_type,
|
||||
"title": r.title,
|
||||
"description": r.description,
|
||||
"version": r.version,
|
||||
"lifecycle_stage": list(r.lifecycle_stage or []),
|
||||
"functional_category": r.functional_category,
|
||||
}
|
||||
for r in rows
|
||||
],
|
||||
"count": len(rows),
|
||||
}
|
||||
finally:
|
||||
db.close()
|
||||
@@ -0,0 +1,12 @@
|
||||
"""Founding-Wizard Service: rendert Templates + generiert DOCX-Files."""
|
||||
|
||||
from .markdown_to_docx import markdown_to_docx_bytes
|
||||
from .template_renderer import find_undefined_placeholders, render_template
|
||||
from .wizard_to_context import base_context
|
||||
|
||||
__all__ = [
|
||||
"base_context",
|
||||
"find_undefined_placeholders",
|
||||
"markdown_to_docx_bytes",
|
||||
"render_template",
|
||||
]
|
||||
@@ -0,0 +1,176 @@
|
||||
"""
|
||||
Konvertiert gerendertes Markdown in eine .docx-Datei mittels python-docx.
|
||||
|
||||
Unterstuetzte Markdown-Elemente:
|
||||
- # / ## / ### / #### / ##### Headings
|
||||
- **bold** und _italic_ inline
|
||||
- Tabellen (Pipe-Syntax)
|
||||
- Listen mit - oder * oder Ziffer.)
|
||||
- Horizontale Linien ---
|
||||
- Code-Inline `code`
|
||||
|
||||
Bewusst minimal — fuer rechtliche Dokumente brauchen wir keine Bilder/Embeds.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import io
|
||||
import re
|
||||
from typing import Optional
|
||||
|
||||
from docx import Document
|
||||
from docx.shared import Pt, RGBColor
|
||||
from docx.enum.text import WD_ALIGN_PARAGRAPH
|
||||
|
||||
HEADING_RE = re.compile(r"^(#{1,5})\s+(.+)$")
|
||||
HR_RE = re.compile(r"^[-_*]{3,}\s*$")
|
||||
LIST_BULLET_RE = re.compile(r"^(\s*)([-*+])\s+(.+)$")
|
||||
LIST_NUMBER_RE = re.compile(r"^(\s*)(\d+)[\.\)]\s+(.+)$")
|
||||
TABLE_ROW_RE = re.compile(r"^\|(.+)\|\s*$")
|
||||
TABLE_SEP_RE = re.compile(r"^\|[\s\-:|]+\|\s*$")
|
||||
|
||||
INLINE_BOLD = re.compile(r"\*\*([^*]+)\*\*")
|
||||
INLINE_ITALIC = re.compile(r"(?<!\*)\*(?!\*)([^*]+)\*(?!\*)|_([^_]+)_")
|
||||
INLINE_CODE = re.compile(r"`([^`]+)`")
|
||||
|
||||
|
||||
def _add_runs(paragraph, text: str) -> None:
|
||||
"""Parse inline-Formatierung und fuege Runs hinzu."""
|
||||
pos = 0
|
||||
tokens: list[tuple[str, str]] = []
|
||||
while pos < len(text):
|
||||
m_bold = INLINE_BOLD.search(text, pos)
|
||||
m_code = INLINE_CODE.search(text, pos)
|
||||
m_italic = INLINE_ITALIC.search(text, pos)
|
||||
|
||||
candidates = [m for m in (m_bold, m_code, m_italic) if m]
|
||||
if not candidates:
|
||||
tokens.append(("plain", text[pos:]))
|
||||
break
|
||||
first = min(candidates, key=lambda m: m.start())
|
||||
if first.start() > pos:
|
||||
tokens.append(("plain", text[pos:first.start()]))
|
||||
if first is m_bold:
|
||||
tokens.append(("bold", first.group(1)))
|
||||
elif first is m_code:
|
||||
tokens.append(("code", first.group(1)))
|
||||
else:
|
||||
content = m_italic.group(1) or m_italic.group(2)
|
||||
tokens.append(("italic", content))
|
||||
pos = first.end()
|
||||
|
||||
for kind, content in tokens:
|
||||
run = paragraph.add_run(content)
|
||||
if kind == "bold":
|
||||
run.bold = True
|
||||
elif kind == "italic":
|
||||
run.italic = True
|
||||
elif kind == "code":
|
||||
run.font.name = "Courier New"
|
||||
run.font.size = Pt(10)
|
||||
|
||||
|
||||
def _parse_table(lines: list[str], start: int) -> tuple[list[list[str]], int]:
|
||||
"""Parst Markdown-Tabelle. Returns (rows, next_line_index)."""
|
||||
rows: list[list[str]] = []
|
||||
i = start
|
||||
while i < len(lines):
|
||||
line = lines[i].rstrip()
|
||||
if not TABLE_ROW_RE.match(line) and not TABLE_SEP_RE.match(line):
|
||||
break
|
||||
if TABLE_SEP_RE.match(line):
|
||||
i += 1
|
||||
continue
|
||||
cells = [c.strip() for c in line.strip("|").split("|")]
|
||||
rows.append(cells)
|
||||
i += 1
|
||||
return rows, i
|
||||
|
||||
|
||||
def _add_table(doc: Document, rows: list[list[str]]) -> None:
|
||||
if not rows:
|
||||
return
|
||||
ncols = max(len(r) for r in rows)
|
||||
table = doc.add_table(rows=len(rows), cols=ncols)
|
||||
table.style = "Light Grid"
|
||||
for r_idx, row in enumerate(rows):
|
||||
for c_idx, cell_text in enumerate(row):
|
||||
if c_idx < ncols:
|
||||
cell = table.rows[r_idx].cells[c_idx]
|
||||
cell.text = ""
|
||||
p = cell.paragraphs[0]
|
||||
_add_runs(p, cell_text)
|
||||
if r_idx == 0:
|
||||
for run in p.runs:
|
||||
run.bold = True
|
||||
|
||||
|
||||
def markdown_to_docx_bytes(markdown_text: str, title: Optional[str] = None) -> bytes:
|
||||
"""Konvertiert Markdown nach DOCX und returns die Bytes."""
|
||||
doc = Document()
|
||||
|
||||
# Basis-Style
|
||||
style = doc.styles["Normal"]
|
||||
style.font.name = "Calibri"
|
||||
style.font.size = Pt(11)
|
||||
|
||||
if title:
|
||||
h = doc.add_heading(title, level=0)
|
||||
h.alignment = WD_ALIGN_PARAGRAPH.LEFT
|
||||
|
||||
lines = markdown_text.split("\n")
|
||||
i = 0
|
||||
while i < len(lines):
|
||||
line = lines[i].rstrip()
|
||||
|
||||
if not line.strip():
|
||||
i += 1
|
||||
continue
|
||||
|
||||
# Heading
|
||||
h_match = HEADING_RE.match(line)
|
||||
if h_match:
|
||||
level = len(h_match.group(1))
|
||||
text = h_match.group(2)
|
||||
heading = doc.add_heading(level=min(level, 4))
|
||||
_add_runs(heading, text)
|
||||
i += 1
|
||||
continue
|
||||
|
||||
# Horizontal Rule
|
||||
if HR_RE.match(line):
|
||||
doc.add_paragraph("─" * 60)
|
||||
i += 1
|
||||
continue
|
||||
|
||||
# Tabelle
|
||||
if TABLE_ROW_RE.match(line):
|
||||
rows, i = _parse_table(lines, i)
|
||||
_add_table(doc, rows)
|
||||
doc.add_paragraph()
|
||||
continue
|
||||
|
||||
# List Bullet
|
||||
b_match = LIST_BULLET_RE.match(line)
|
||||
if b_match:
|
||||
p = doc.add_paragraph(style="List Bullet")
|
||||
_add_runs(p, b_match.group(3))
|
||||
i += 1
|
||||
continue
|
||||
|
||||
# List Number
|
||||
n_match = LIST_NUMBER_RE.match(line)
|
||||
if n_match:
|
||||
p = doc.add_paragraph(style="List Number")
|
||||
_add_runs(p, n_match.group(3))
|
||||
i += 1
|
||||
continue
|
||||
|
||||
# Sonst: normaler Paragraph
|
||||
p = doc.add_paragraph()
|
||||
_add_runs(p, line)
|
||||
i += 1
|
||||
|
||||
buf = io.BytesIO()
|
||||
doc.save(buf)
|
||||
return buf.getvalue()
|
||||
@@ -0,0 +1,95 @@
|
||||
"""
|
||||
Handlebars-light Template-Renderer fuer die compliance_legal_templates.
|
||||
|
||||
Unterstuetzte Syntax:
|
||||
- {{VARIABLE_NAME}} - einfache String-Substitution
|
||||
- {{#IF FLAG}}...{{/IF}} - bedingter Block (truthy)
|
||||
- {{#IF NOT FLAG}}...{{/IF}} - negierter bedingter Block
|
||||
|
||||
Bewusst minimal gehalten — keine Loops oder Verschachtelung tiefer Logik.
|
||||
Komplexere Sachen werden im Context vorberechnet.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import re
|
||||
from typing import Any
|
||||
|
||||
# Pattern fuer {{#IF FLAG}}...{{/IF}} und {{#IF NOT FLAG}}...{{/IF}}
|
||||
# Greedy / non-overlapping. Inhalt darf alles enthalten ausser einem geschlossenen {{/IF}}.
|
||||
IF_BLOCK = re.compile(
|
||||
r"\{\{#IF\s+(NOT\s+)?([A-Z_][A-Z0-9_]*)\}\}(.*?)\{\{/IF\}\}",
|
||||
re.DOTALL,
|
||||
)
|
||||
VAR_PATTERN = re.compile(r"\{\{\s*([A-Z_][A-Z0-9_]*)\s*\}\}")
|
||||
|
||||
|
||||
def _is_truthy(val: Any) -> bool:
|
||||
"""Pythonische Truthiness, mit Special-Case: leeres dict/list/str = False."""
|
||||
if val is None:
|
||||
return False
|
||||
if isinstance(val, bool):
|
||||
return val
|
||||
if isinstance(val, (int, float)):
|
||||
return val != 0
|
||||
if isinstance(val, str):
|
||||
return val.strip() != "" and val.lower() not in ("false", "0", "no", "nein")
|
||||
if isinstance(val, (list, dict, tuple, set)):
|
||||
return len(val) > 0
|
||||
return True
|
||||
|
||||
|
||||
def render_template(template: str, context: dict[str, Any]) -> str:
|
||||
"""Rendert ein Template mit dem gegebenen Kontext.
|
||||
|
||||
Algorithmus:
|
||||
1. IF-Bloecke iterativ aufloesen (max 10 Durchlaeufe, damit Nesting funktioniert)
|
||||
2. Variablen substituieren
|
||||
|
||||
Args:
|
||||
template: Markdown-Template mit {{VAR}} und {{#IF FLAG}}...{{/IF}}
|
||||
context: dict mit Variablen — Keys SCREAMING_SNAKE_CASE
|
||||
|
||||
Returns:
|
||||
Gerendetes Markdown
|
||||
"""
|
||||
output = template
|
||||
|
||||
for _ in range(10): # max 10 Levels Nesting
|
||||
def replace_if(match: re.Match[str]) -> str:
|
||||
negated = bool(match.group(1))
|
||||
flag_name = match.group(2)
|
||||
content = match.group(3)
|
||||
flag_val = context.get(flag_name)
|
||||
condition = _is_truthy(flag_val)
|
||||
if negated:
|
||||
condition = not condition
|
||||
return content if condition else ""
|
||||
|
||||
new_output = IF_BLOCK.sub(replace_if, output)
|
||||
if new_output == output:
|
||||
break
|
||||
output = new_output
|
||||
|
||||
def replace_var(match: re.Match[str]) -> str:
|
||||
name = match.group(1)
|
||||
val = context.get(name)
|
||||
if val is None:
|
||||
# Leere Platzhalter sichtbar machen fuer Debugging
|
||||
return f"[{name} fehlt]"
|
||||
if isinstance(val, bool):
|
||||
return "ja" if val else "nein"
|
||||
return str(val)
|
||||
|
||||
output = VAR_PATTERN.sub(replace_var, output)
|
||||
return output
|
||||
|
||||
|
||||
def find_undefined_placeholders(template: str, context: dict[str, Any]) -> list[str]:
|
||||
"""Listet alle Variablen-Platzhalter ohne Wert im Context."""
|
||||
placeholders: set[str] = set()
|
||||
for match in VAR_PATTERN.finditer(template):
|
||||
placeholders.add(match.group(1))
|
||||
for match in IF_BLOCK.finditer(template):
|
||||
placeholders.add(match.group(2))
|
||||
return sorted([p for p in placeholders if p not in context])
|
||||
@@ -0,0 +1,178 @@
|
||||
"""
|
||||
Mapping vom Wizard-State (frontend) auf den Template-Context (Render-Variablen).
|
||||
|
||||
Frontend liefert ein JSON-Payload mit den Wizard-Schritten. Hier konvertieren
|
||||
wir es in eine flache Dict-Struktur, deren Keys SCREAMING_SNAKE_CASE sind und
|
||||
zu den Platzhaltern in den Templates passen (z.B. {{COMPANY_NAME}}).
|
||||
|
||||
Pro Dokumenttyp (document_type) wird der jeweils benoetigte Subset gebaut.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
|
||||
def _gs_table(gesellschafter: list[dict[str, Any]], stammkapital: int) -> str:
|
||||
"""Erzeugt eine Markdown-Tabelle der Gesellschafter."""
|
||||
rows = []
|
||||
for g in gesellschafter:
|
||||
nb = int(g.get("nennbetrag_eur") or 0)
|
||||
pct = (nb / max(stammkapital, 1)) * 100 if stammkapital else 0
|
||||
rows.append(
|
||||
f"| {g.get('anteil_nr', '')} | {g.get('name', '')} | "
|
||||
f"{g.get('geburtsdatum') or g.get('adresse', '')} | "
|
||||
f"{g.get('adresse', '')} | {g.get('anteil_nr', '')} | "
|
||||
f"{nb:,} | {pct:.2f}% |".replace(",", ".")
|
||||
)
|
||||
return "\n".join(rows)
|
||||
|
||||
|
||||
def _parties_list(gesellschafter: list[dict[str, Any]]) -> str:
|
||||
"""Aufzaehlung der Parteien fuer SHA, IP-Assignment etc."""
|
||||
lines = []
|
||||
for idx, g in enumerate(gesellschafter):
|
||||
letter = chr(ord("a") + idx)
|
||||
line = f"{letter}) **{g.get('name', '')}**"
|
||||
if g.get("geburtsdatum"):
|
||||
line += f", geboren am {g['geburtsdatum']}"
|
||||
if g.get("adresse"):
|
||||
line += f", wohnhaft in {g['adresse']}"
|
||||
lines.append(line + ",")
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def _parties_list_with_shares(gesellschafter: list[dict[str, Any]]) -> str:
|
||||
"""Erzeugt nummerierte Liste der Gesellschafter mit Anteilen fuer § 3 Satzung."""
|
||||
lines = []
|
||||
for g in gesellschafter:
|
||||
nr = g.get("anteil_nr", "?")
|
||||
name = g.get("name", "")
|
||||
nb = int(g.get("nennbetrag_eur") or 0)
|
||||
lines.append(
|
||||
f"{nr}. {name} übernimmt den Geschäftsanteil Nr. {nr} mit einem "
|
||||
f"Nennbetrag von {nb:,} Euro.".replace(",", ".")
|
||||
)
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def _gf_liste(gf: list[dict[str, Any]]) -> str:
|
||||
"""Liste der Geschaeftsfuehrer fuer Bestellungsbeschluss / HRB-Anmeldung."""
|
||||
lines = []
|
||||
for g in gf:
|
||||
line = f"- **{g.get('name', '')}**"
|
||||
if g.get("geburtsdatum"):
|
||||
line += f", geboren am {g['geburtsdatum']}"
|
||||
if g.get("adresse"):
|
||||
line += f", wohnhaft in {g['adresse']}"
|
||||
if g.get("internal_role"):
|
||||
line += f" — {g['internal_role']}"
|
||||
lines.append(line)
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def _company_purpose_bullets(bullets: list[str]) -> str:
|
||||
return "\n".join(bullets) if bullets else "a) Allgemeine geschäftliche Tätigkeit"
|
||||
|
||||
|
||||
def _einzahlungsaufstellung(gesellschafter: list[dict[str, Any]], quote_pct: int) -> str:
|
||||
rows = []
|
||||
for g in gesellschafter:
|
||||
nb = int(g.get("nennbetrag_eur") or 0)
|
||||
paid = int(nb * quote_pct / 100)
|
||||
rows.append(f"- {g.get('name', '')}: {paid:,} EUR von {nb:,} EUR ({quote_pct}%)".replace(",", "."))
|
||||
return "\n".join(rows)
|
||||
|
||||
|
||||
def base_context(state: dict[str, Any]) -> dict[str, Any]:
|
||||
"""Gemeinsamer Context fuer alle Dokumente."""
|
||||
basics = state.get("basics", {})
|
||||
capital = state.get("capital", {})
|
||||
notar = state.get("notar", {})
|
||||
gesellschafter = state.get("gesellschafter", [])
|
||||
gf_list = [g for g in gesellschafter if g.get("is_geschaeftsfuehrer")]
|
||||
sha = state.get("sha", {})
|
||||
|
||||
stammkapital = int(capital.get("stammkapital_eur") or 25000)
|
||||
num_gf = len(gf_list)
|
||||
num_gs = len(gesellschafter)
|
||||
has_academic = any(g.get("has_academic_background") for g in gesellschafter)
|
||||
|
||||
ctx: dict[str, Any] = {
|
||||
# Company
|
||||
"COMPANY_NAME": basics.get("company_name", ""),
|
||||
"COMPANY_LEGAL_FORM": basics.get("legal_form", "GmbH"),
|
||||
"COMPANY_SEAT": basics.get("company_seat", ""),
|
||||
"COMPANY_ADDRESS": basics.get("company_address", ""),
|
||||
"COMPANY_PURPOSE_DESCRIPTION": basics.get("company_purpose_description", ""),
|
||||
"COMPANY_PURPOSE_BULLETS": _company_purpose_bullets(basics.get("company_purpose_bullets", [])),
|
||||
"COMPANY_PURPOSE_SHORT": basics.get("industry", "")[:120],
|
||||
"BUSINESS_YEAR": basics.get("business_year", "Kalenderjahr"),
|
||||
"FIRST_YEAR_END": "31. Dezember des Eintragungsjahres",
|
||||
"PUBLICATION_VENUE": "Bundesanzeiger",
|
||||
# Capital
|
||||
"STAMMKAPITAL_EUR": f"{stammkapital:,}".replace(",", "."),
|
||||
"STAMMKAPITAL_HALF_EUR": f"{stammkapital // 2:,}".replace(",", "."),
|
||||
"EINLAGE_METHOD": capital.get("einlage_method", "Geld"),
|
||||
"EINLAGE_QUOTE_INITIAL_PCT": capital.get("einlage_quote_initial_pct", 50),
|
||||
"EINLAGE_QUOTE_REMAINING_PCT": 100 - int(capital.get("einlage_quote_initial_pct") or 50),
|
||||
"EINLAGE_QUOTE_INITIAL_LESS_THAN_100": (capital.get("einlage_quote_initial_pct") or 50) < 100,
|
||||
"EINZAHLUNGSAUFSTELLUNG": _einzahlungsaufstellung(gesellschafter, capital.get("einlage_quote_initial_pct") or 50),
|
||||
"HAS_SACHEINLAGE": capital.get("has_sacheinlage", False),
|
||||
"VERZUGSFRIST_TAGE": 30,
|
||||
"EINZIEHUNG_MEHRHEIT_PCT": 75,
|
||||
"VORKAUFSRECHT_TAGE": 14,
|
||||
"EINBERUFUNGSFRIST_TAGE": 7,
|
||||
"VOTING_UNIT_EUR": "1,00",
|
||||
"ERBFALL_AUFGRIFFSFRIST_MONATE": 6,
|
||||
"ERBFALL_MEHRHEIT_PCT": 75,
|
||||
"AUFLOESUNG_MEHRHEIT_PCT": 75,
|
||||
"GRUENDUNGSKOSTEN_MAX_EUR": f"{int(stammkapital / 10):,}".replace(",", "."),
|
||||
# Gesellschafter
|
||||
"PARTIES_LIST": _parties_list(gesellschafter),
|
||||
"PARTIES_LIST_WITH_SHARES": _parties_list_with_shares(gesellschafter),
|
||||
"GESELLSCHAFTER_TABELLE": _gs_table(gesellschafter, stammkapital),
|
||||
"GESCHAEFTSFUEHRER_LISTE": _gf_liste(gf_list),
|
||||
"GESELLSCHAFTER_LISTE": _gf_liste(gesellschafter),
|
||||
# GF
|
||||
"NUM_GF": num_gf,
|
||||
"NUM_GF_TEXT": {1: "einen", 2: "zwei", 3: "drei", 4: "vier", 5: "fünf"}.get(num_gf, str(num_gf)),
|
||||
"IS_SINGLE_GF": num_gf == 1,
|
||||
"IS_MULTI_GF": num_gf > 1,
|
||||
"NUM_GF_IS_2": num_gf == 2,
|
||||
"NUM_GF_GT_2": num_gf > 2,
|
||||
"IS_MULTI_GESELLSCHAFTER": num_gs > 1,
|
||||
"IS_FOUNDER_GROUP": num_gs >= 2,
|
||||
"VERTRETUNGSART": "Gesamtvertretung; bei nur einem Geschäftsführer Einzelvertretung",
|
||||
# Notar
|
||||
"NOTARY_NAME": notar.get("notary_name", ""),
|
||||
"NOTARY_PLACE": notar.get("notary_place", ""),
|
||||
"NOTARY_ADDRESS": notar.get("notary_address", ""),
|
||||
"NOTARY_URNR": notar.get("urnr", "[wird beim Termin vergeben]"),
|
||||
"NOTARIAL_DATE": notar.get("notarial_date", "[Notartermin folgt]"),
|
||||
"NOTARY_BEGLAUBIGUNG_URNR": "[wird beim Termin vergeben]",
|
||||
"NOTARIAL_LOCATION": notar.get("notary_place", ""),
|
||||
"ANMELDUNG_TYP": "Ersteintragung gemäß § 7 GmbHG",
|
||||
"ANMELDUNG_DATE": notar.get("notarial_date", "[Notartermin folgt]"),
|
||||
"REGISTRY_COURT_ADDRESS": "[Adresse des zuständigen Registergerichts]",
|
||||
"COMPANY_REGISTRY_COURT": "[zuständiges Amtsgericht]",
|
||||
# Common
|
||||
"DOCUMENT_VERSION": "1.0.0",
|
||||
"EFFECTIVE_DATE": notar.get("notarial_date", "[Datum der Beurkundung]"),
|
||||
"RESOLUTION_DATE": notar.get("notarial_date", "[Datum der Beurkundung]"),
|
||||
"NEXT_REVIEW_DATE": "[+ 12 Monate]",
|
||||
"SIGNATURES_BLOCK": "Unterschriften gemäß notarieller Beurkundung",
|
||||
# SHA Flags
|
||||
"HAS_SHA": sha.get("has_sha", True),
|
||||
"HAS_GO_GF": True,
|
||||
"HAS_ACADEMIC_FOUNDER": has_academic,
|
||||
"HAS_RESEARCH_FOCUS": basics.get("has_research_focus", False),
|
||||
"HAS_BEIRAT": sha.get("has_beirat", False),
|
||||
"HAS_TEXAS_SHOOTOUT": sha.get("has_texas_shootout", False),
|
||||
"HAS_CEO_DESIGNATION": sha.get("has_ceo_designation", False),
|
||||
"CEO_NAME": sha.get("ceo_name", ""),
|
||||
"HAS_HRB": False,
|
||||
"HRB_NUMBER": "[wird vergeben]",
|
||||
"IS_UG": basics.get("legal_form") == "UG",
|
||||
}
|
||||
return ctx
|
||||
@@ -0,0 +1,279 @@
|
||||
-- Migration 123: Geschaeftsordnung Geschaeftsfuehrung Template
|
||||
-- Internal Rules of Procedure for Management (GO-GF)
|
||||
-- Erstellt nach 3-fach-Check Methode (Absatz-fuer-Absatz Review, 2026-05-19)
|
||||
-- Skalierbar fuer 1-Mann-Startups bis Multi-GF-Strukturen (2, 3+ GF)
|
||||
-- Optionale Bloecke: HAS_SHA, HAS_CEO_DESIGNATION, HAS_RESEARCH_FOCUS, HAS_ACADEMIC_ROLES, HAS_RESSORT_3
|
||||
|
||||
INSERT INTO compliance_legal_templates (
|
||||
id, tenant_id, document_type, title, description, content,
|
||||
placeholders, language, jurisdiction,
|
||||
license_id, license_name, source_name,
|
||||
attribution_required, is_complete_document, version, status,
|
||||
created_at, updated_at
|
||||
) SELECT
|
||||
gen_random_uuid(),
|
||||
'9282a473-5c95-4b3a-bf78-0ecc0ec71d3e',
|
||||
'geschaeftsordnung_gf',
|
||||
'Geschäftsordnung für die Geschäftsführung (GO-GF)',
|
||||
'Interne Geschäftsordnung der Geschäftsführung einer deutschen GmbH/UG. Regelt Ressortverteilung, Entscheidungsbefugnisse, Schwellenwerte, Informationspflichten, Interessenkonflikte und Dokumentation. Skalierbar von 1-Personen-GF bis Multi-GF-Strukturen (2, 3+). Mit optionalen Klauseln für SHA-Bindung, CEO-Stichentscheid, Forschungs- und akademische Nebentätigkeiten. Konform §§ 35-43 GmbHG.',
|
||||
$template$
|
||||
# Geschäftsordnung für die Geschäftsführung (GO-GF)
|
||||
|
||||
**{{COMPANY_NAME}}**
|
||||
|
||||
---
|
||||
|
||||
## Dokumentenkontrolle
|
||||
|
||||
| Feld | Wert |
|
||||
|---|---|
|
||||
| Dokumenttitel | Geschäftsordnung für die Geschäftsführung (GO-GF) |
|
||||
| Version | {{DOCUMENT_VERSION}} |
|
||||
| Gültig ab | {{EFFECTIVE_DATE}} |
|
||||
| Verabschiedet durch | Gesellschafterbeschluss vom {{RESOLUTION_DATE}} |
|
||||
| Nächste Überprüfung | {{NEXT_REVIEW_DATE}} |
|
||||
| Verantwortlich | Geschäftsführung |
|
||||
|
||||
---
|
||||
|
||||
## § 1 Zweck, Geltungsbereich und Rangfolge
|
||||
|
||||
(1) Diese Geschäftsordnung regelt die interne Zusammenarbeit der Geschäftsführer („GF") der {{COMPANY_NAME}}, {{#IF IS_MULTI_GF}}die Ressortverteilung, {{/IF}}Entscheidungsprozesse und Informationspflichten.
|
||||
|
||||
(2) Sie konkretisiert die Vorgaben des GmbHG, der Satzung{{#IF HAS_SHA}} und des Shareholders' Agreement (SHA){{/IF}}. Es gilt folgende Rangfolge: GmbHG > Satzung{{#IF HAS_SHA}} > SHA{{/IF}} > diese Geschäftsordnung. Bei Konflikten gehen vorrangige Regelungen vor.
|
||||
|
||||
(3) Die Geschäftsordnung gilt ausschließlich im Innenverhältnis der Geschäftsführer und Gesellschafter und entfaltet keine Außenwirkung.
|
||||
|
||||
(4) Die gesetzlichen Pflichten der Geschäftsführer gemäß §§ 35-43 GmbHG, insbesondere die Sorgfaltspflicht eines ordentlichen Geschäftsmanns (§ 43 Abs. 1 GmbHG), bleiben unberührt.
|
||||
|
||||
## § 2 Geschäftsführung und Vertretung
|
||||
|
||||
(1) Die Gesellschaft hat {{NUM_GF_TEXT}} Geschäftsführer ({{NUM_GF}}).
|
||||
|
||||
(2) Die Vertretung der Gesellschaft nach außen erfolgt gemäß Satzung in {{VERTRETUNGSART}}.
|
||||
|
||||
{{#IF IS_SINGLE_GF}}
|
||||
(3) Der Geschäftsführer trägt die gesetzliche Gesamtverantwortung für die Geschäftsführung gemäß §§ 35 ff. GmbHG.
|
||||
{{/IF}}
|
||||
{{#IF IS_MULTI_GF}}
|
||||
(3) Alle Geschäftsführer sind im Innenverhältnis gleichberechtigt und tragen die gesetzliche Gesamtverantwortung gemäß §§ 35 ff. GmbHG gesamtschuldnerisch.
|
||||
{{/IF}}
|
||||
|
||||
(4) {{#IF HAS_CEO_DESIGNATION}}Aus dem Kreis der Geschäftsführer wird {{CEO_NAME}} als Sprecher der Geschäftsführung (CEO) benannt. Dem Sprecher kommt bei ressortübergreifenden Streitfragen ein Stichentscheid zu, soweit Satzung{{#IF HAS_SHA}} und SHA{{/IF}} dem nicht entgegenstehen.{{/IF}}{{#IF NOT HAS_CEO_DESIGNATION}}Es gibt keinen Sprecher mit Stichentscheid. Bei Uneinigkeit gilt das Eskalationsverfahren nach § 6.{{/IF}}
|
||||
|
||||
{{#IF IS_MULTI_GF}}
|
||||
(5) Interne Ressorts dienen der organisatorischen Aufgabenverteilung. Sie haben keine Außenwirkung und beschränken die Gesamtverantwortung nicht.
|
||||
{{/IF}}
|
||||
|
||||
## § 3 Grundsätze der Leitung
|
||||
|
||||
(1) Die Geschäftsführung erfolgt im besten Interesse der Gesellschaft und ihrer Gesellschafter unter Beachtung der gesetzlichen, satzungsmäßigen{{#IF HAS_SHA}} und SHA-{{/IF}}Vorgaben.
|
||||
|
||||
(2) Die Geschäftsführer handeln mit der Sorgfalt eines ordentlichen Geschäftsmanns (§ 43 Abs. 1 GmbHG) und arbeiten {{#IF IS_MULTI_GF}}untereinander {{/IF}}loyal, transparent und pflichtgemäß.
|
||||
|
||||
{{#IF IS_MULTI_GF}}
|
||||
(3) Ressorts strukturieren die operative Arbeit, ersetzen jedoch nicht die gemeinsame Verantwortung für das Gesamtunternehmen.
|
||||
{{/IF}}
|
||||
|
||||
(4) Entscheidungen müssen Satzung{{#IF HAS_SHA}}, SHA und den dort geregelten Reserved Matters{{/IF}} entsprechen.
|
||||
|
||||
{{#IF IS_MULTI_GF}}
|
||||
## § 4 Ressortstruktur
|
||||
|
||||
(1) **Allgemeines** — Die Ressorts strukturieren die operative Arbeit{{#IF HAS_SHA}} und orientieren sich an Anlage A des SHA{{/IF}}. Ressorts sind ausschließlich interne Arbeitsbereiche.
|
||||
|
||||
(2) **Ressort „{{RESSORT_1_NAME}}"** ({{RESSORT_1_GF}})
|
||||
Zuständigkeiten:
|
||||
{{RESSORT_1_AUFGABEN}}
|
||||
|
||||
(3) **Ressort „{{RESSORT_2_NAME}}"** ({{RESSORT_2_GF}})
|
||||
Zuständigkeiten:
|
||||
{{RESSORT_2_AUFGABEN}}
|
||||
|
||||
{{#IF HAS_RESSORT_3}}
|
||||
(4) **Ressort „{{RESSORT_3_NAME}}"** ({{RESSORT_3_GF}})
|
||||
Zuständigkeiten:
|
||||
{{RESSORT_3_AUFGABEN}}
|
||||
{{/IF}}
|
||||
|
||||
({{LAST_PARA_4}}) **Ressortübergreifende Themen** — Themen, die mehrere Ressorts betreffen, werden gemeinsam entschieden (§ 6). Jeder GF prüft eigenverantwortlich, ob eine Maßnahme ressortübergreifend ist oder ein Reserved Matter darstellt; im Zweifel ist der Mit-GF unverzüglich einzubeziehen.{{#IF HAS_SHA}} Reserved Matters dürfen ausschließlich gemäß SHA beschlossen werden.{{/IF}}
|
||||
{{/IF}}
|
||||
|
||||
## § {{P_INFO}} Informations- und Berichtspflichten
|
||||
|
||||
(1) Es finden regelmäßige Abstimmungen statt:
|
||||
- {{MEETING_OPERATIVE_FREQ}} operative {{#IF IS_MULTI_GF}}GF-{{/IF}}Meetings
|
||||
- {{MEETING_STRATEGIE_FREQ}} Strategie-Reviews
|
||||
{{#IF HAS_SHA}}- quartalsweise Rollen- und Prioritäten-Reviews gemäß Anlage A SHA{{/IF}}
|
||||
|
||||
{{#IF IS_MULTI_GF}}
|
||||
(2) Jeder GF informiert die übrigen GF unverzüglich über:
|
||||
- wesentliche Entwicklungen im eigenen Ressort
|
||||
- finanzielle oder operative Risiken
|
||||
- technische oder sicherheitsrelevante Ereignisse
|
||||
- rechtliche und compliance-relevante Themen
|
||||
- Personal- und Organisations-Veränderungen
|
||||
{{#IF HAS_RESEARCH_FOCUS}}- Forschungsfortschritt, Studien und wissenschaftliche Erkenntnisse
|
||||
- Validitätsrisiken und methodische Herausforderungen
|
||||
- Forschungs-Partnerschaften und Drittmittelprojekte{{/IF}}
|
||||
|
||||
(3) Die Information erfolgt zeitnah in geeigneter Form (E-Mail, Protokoll, Berichtsystem). Wesentliche Ereignisse sind innerhalb von 24 Stunden zu kommunizieren.
|
||||
{{/IF}}
|
||||
|
||||
({{P_GESELLSCHAFTER}}) Die Geschäftsführung berichtet den Gesellschaftern{{#IF HAS_SHA}} gemäß SHA{{/IF}} insbesondere über:
|
||||
- Finanzen (monatlicher Liquiditätsstatus, Quartalsabschluss, Jahresabschluss)
|
||||
- Strategie und mittelfristige Planung
|
||||
- Produkt{{#IF HAS_RESEARCH_FOCUS}} und Forschung{{/IF}}
|
||||
- Risiken und Chancen (Risk Register, Risiko-Mitigationsmaßnahmen)
|
||||
- Personal und Organisation
|
||||
|
||||
({{P_AUSSER}}) Außerordentliche Ereignisse (z. B. Liquiditätsrisiken, Datenschutzvorfälle, Rechtsstreitigkeiten, Cyber-Sicherheitsvorfälle, Ausfall einer Schlüsselperson) sind unverzüglich allen Gesellschaftern mitzuteilen.
|
||||
|
||||
## § {{P_ENT}} Entscheidungsbefugnisse
|
||||
|
||||
{{#IF IS_SINGLE_GF}}
|
||||
(1) Entscheidungen werden vom Geschäftsführer im Rahmen der Schwellenwerte (§ {{P_FIN}}) und unter Beachtung der Reserved Matters{{#IF HAS_SHA}} (SHA){{/IF}} getroffen.
|
||||
|
||||
(2) Entscheidungen oberhalb der Schwellenwerte oder mit erheblicher strategischer Bedeutung erfordern einen Gesellschafterbeschluss.
|
||||
{{/IF}}
|
||||
{{#IF IS_MULTI_GF}}
|
||||
(1) Entscheidungen innerhalb der Ressortgrenzen kann der zuständige GF allein treffen, sofern sie nicht von erheblicher Bedeutung sind.
|
||||
|
||||
(2) Erhebliche Bedeutung liegt insbesondere vor bei: finanzielle Auswirkung über {{ERHEBLICH_EUR}} EUR, strategische Auswirkung über das Ressort hinaus, rechtliche oder reputationelle Risiken.
|
||||
|
||||
(3) Bei ressortübergreifenden Entscheidungen wird {{#IF NUM_GF_IS_2}}einvernehmlich{{/IF}}{{#IF NUM_GF_GT_2}}durch einfache Mehrheit aller GF{{/IF}} entschieden. Gefasste Beschlüsse werden in Textform dokumentiert.
|
||||
|
||||
(4) **Eskalationsverfahren bei Uneinigkeit:**
|
||||
a) Erneute Beratung innerhalb von {{ESKALATION_TAGE_INTERN}} Werktagen mit Vorlage von Entscheidungsgrundlagen.
|
||||
b) {{#IF HAS_CEO_DESIGNATION}}Bei weiterhin bestehender Uneinigkeit: Stichentscheid des Sprechers der Geschäftsführung ({{CEO_NAME}}), sofern nicht Satzung{{#IF HAS_SHA}} oder SHA{{/IF}} entgegenstehen.{{/IF}}{{#IF NOT HAS_CEO_DESIGNATION}}Bei weiterhin bestehender Uneinigkeit: Anrufung der Gesellschafterversammlung innerhalb von {{ESKALATION_TAGE_GESELLSCHAFTER}} Werktagen.{{/IF}}
|
||||
c) In dringenden Fällen (drohender Schaden) kann der ressortzuständige GF vorläufig entscheiden; die Mit-GF sind unverzüglich zu unterrichten.
|
||||
|
||||
(5) Alle Reserved Matters bedürfen eines Gesellschafterbeschlusses{{#IF HAS_SHA}} nach SHA{{/IF}}.
|
||||
{{/IF}}
|
||||
|
||||
## § {{P_FIN}} Finanzen, Verträge und Budget
|
||||
|
||||
(1) Interne finanzielle Schwellenwerte (Einzelfall, ohne Mehrwertsteuer):
|
||||
{{#IF IS_SINGLE_GF}}
|
||||
- bis {{SCHWELLE_GESELLSCHAFTER_EUR}} EUR: Geschäftsführer im Rahmen des genehmigten Budgets
|
||||
- über {{SCHWELLE_GESELLSCHAFTER_EUR}} EUR: Gesellschafterbeschluss{{#IF HAS_SHA}} gemäß SHA{{/IF}}
|
||||
{{/IF}}
|
||||
{{#IF IS_MULTI_GF}}
|
||||
- bis {{SCHWELLE_EINZEL_EUR}} EUR: ressortzuständiger GF allein
|
||||
- {{SCHWELLE_EINZEL_EUR_PLUS_1}}-{{SCHWELLE_GEMEINSAM_EUR}} EUR: {{#IF NUM_GF_IS_2}}beide GF gemeinsam{{/IF}}{{#IF NUM_GF_GT_2}}Mehrheitsbeschluss der GF{{/IF}}
|
||||
- über {{SCHWELLE_GEMEINSAM_EUR}} EUR: Gesellschafterbeschluss{{#IF HAS_SHA}} gemäß SHA{{/IF}}
|
||||
{{/IF}}
|
||||
|
||||
(2) Budgettreue ist verpflichtend. Abweichungen über {{BUDGET_ABWEICHUNG_PCT}} % vom genehmigten Jahresbudget (in einer Kostenstelle oder gesamt) bedürfen eines Gesellschafterbeschlusses{{#IF HAS_SHA}} (Reserved Matter){{/IF}}.
|
||||
|
||||
(3) Verträge mit Laufzeit über {{VERTRAG_LAUFZEIT_MONATE}} Monaten oder Gesamtwert über {{VERTRAG_WERT_EUR}} EUR bedürfen{{#IF IS_SINGLE_GF}} der Gegenzeichnung durch einen Gesellschafter (bzw. den Mehrheitsgesellschafter){{/IF}}{{#IF IS_MULTI_GF}} der Mitzeichnung mindestens eines weiteren GF{{/IF}}.
|
||||
|
||||
(4) Die Geschäftsführung stellt sicher:
|
||||
- ausreichende Liquidität (Mindest-Cash-Reserve: {{LIQUIDITAET_MIN_MONATE}} Monate operativer Burn)
|
||||
- rollierendes Forecasting mit {{FORECAST_HORIZON_MONTHS}}-Monats-Horizont
|
||||
- Kostenkontrolle und vertragliche Sorgfalt
|
||||
- termingerechte Steuer- und Sozialabgaben-Zahlungen
|
||||
- jährliche Wirtschaftsprüfung soweit gesetzlich erforderlich oder durch Satzung vorgesehen
|
||||
|
||||
## § {{P_PERS}} Personal und Organisation
|
||||
|
||||
(1) Einstellungen und Kündigungen von **Schlüsselpersonen** bedürfen{{#IF IS_SINGLE_GF}} der Zustimmung der Gesellschafterversammlung{{/IF}}{{#IF IS_MULTI_GF}} {{#IF HAS_SHA}}- soweit es sich um Reserved Matters gemäß SHA handelt -{{/IF}} der Zustimmung aller GF{{#IF HAS_SHA}} bzw. der Gesellschafter{{/IF}}{{/IF}}.
|
||||
|
||||
(2) **Schlüsselpersonen** sind insbesondere:
|
||||
- C-Level (CEO, CTO, CFO, COO etc.) und Geschäftsleitung
|
||||
- Bereichsleiter mit direkter Personalverantwortung für mindestens 5 Mitarbeiter
|
||||
- Mitarbeiter mit Brutto-Jahreseinkommen über {{SCHLUESSELPERSON_GEHALT_EUR}} EUR
|
||||
- Personen mit fachlicher Schlüsselrolle (z. B. lead AI-Engineer, Data Protection Officer)
|
||||
|
||||
(3) Die Entscheidung über übrige Personalmaßnahmen trifft {{#IF IS_SINGLE_GF}}der Geschäftsführer{{/IF}}{{#IF IS_MULTI_GF}}der ressortzuständige GF{{/IF}} im Rahmen des genehmigten Personalbudgets.
|
||||
|
||||
(4) Die Geschäftsführung trägt {{#IF IS_MULTI_GF}}gemeinsam {{/IF}}Verantwortung für:
|
||||
- Unternehmenskultur und Werte
|
||||
- Arbeitsprozesse und Aufbauorganisation
|
||||
- interne Kommunikation
|
||||
- Konfliktlösungs- und Eskalationssysteme
|
||||
- Diversity, Equity und Inclusion
|
||||
|
||||
## § {{P_IK}} Interessenkonflikte
|
||||
|
||||
(1) Interessenkonflikte (potenzielle und tatsächliche) sind unverzüglich schriftlich offenzulegen, gerichtet an {{#IF IS_SINGLE_GF}}die Gesellschafterversammlung{{/IF}}{{#IF IS_MULTI_GF}}die übrigen GF (in Kopie: Gesellschafter){{/IF}}.
|
||||
|
||||
(2) Der betroffene GF ist bei der jeweiligen Entscheidung nicht stimmberechtigt und nimmt nicht an der Beratung teil (Selbstausschluss).
|
||||
|
||||
(3) Beispiele für Interessenkonflikte:
|
||||
- Geschäftsbeziehungen zu nahestehenden Personen oder Unternehmen
|
||||
- Beteiligungen an Wettbewerbern, Kunden oder Lieferanten
|
||||
- Doppelmandate in anderen Gesellschaften mit potentiellen Geschäftsbeziehungen
|
||||
- private Vorteile (Geschenke, Einladungen) über handelsüblicher Höflichkeit
|
||||
|
||||
## § {{P_NEB}} Nebentätigkeiten
|
||||
|
||||
(1) Nebentätigkeiten (einschließlich Beratungs-, Aufsichtsrats-, Beirats-{{#IF HAS_ACADEMIC_ROLES}} und akademischer Tätigkeiten{{/IF}}) bedürfen der vorherigen schriftlichen Anzeige und Zustimmung {{#IF IS_SINGLE_GF}}der Gesellschafterversammlung{{/IF}}{{#IF IS_MULTI_GF}}der übrigen GF; bei strategischer Relevanz zusätzlich der Gesellschafter{{/IF}}.
|
||||
|
||||
(2) Eine Nebentätigkeit ist nur zulässig, wenn:
|
||||
- keine vertraulichen Informationen der Gesellschaft offengelegt werden
|
||||
- keine geistigen Eigentumsrechte (IP) der Gesellschaft verwendet werden
|
||||
- kein Wettbewerbsverhältnis entsteht
|
||||
- die Tätigkeit nicht mehr als {{NEBENTAETIGKEIT_MAX_STUNDEN}} Stunden pro Woche umfasst
|
||||
- die Hauptpflicht gegenüber der Gesellschaft nicht beeinträchtigt wird
|
||||
|
||||
(3) Die Anzeige erfolgt schriftlich mit Beschreibung des Umfangs, der zeitlichen Belastung, des Vergütungsmodells und der Vertragspartner.
|
||||
|
||||
{{#IF HAS_ACADEMIC_ROLES}}
|
||||
(4) **Akademische Tätigkeiten** (Lehre, Publikationen, Konferenzteilnahme) sind grundsätzlich erwünscht, sofern sie das Renommee der Gesellschaft fördern. Veröffentlichungen mit Bezug zu Geschäftsgeheimnissen, IP der Gesellschaft oder strategischen Plänen bedürfen der vorherigen schriftlichen Zustimmung der übrigen GF.
|
||||
{{/IF}}
|
||||
|
||||
## § {{P_DOC}} Dokumentation
|
||||
|
||||
(1) Beschlüsse und wesentliche Entscheidungen sind schriftlich oder in Textform festzuhalten (Protokoll, Beschlussvorlage, E-Mail-Bestätigung).
|
||||
|
||||
{{#IF IS_MULTI_GF}}
|
||||
(2) Protokolle wesentlicher Entscheidungen werden vom Mit-GF gegengezeichnet (bzw. per E-Mail bestätigt).
|
||||
{{/IF}}
|
||||
|
||||
({{P_DOC_NEXT}}) Entscheidungsunterlagen werden zentral im {{DOKUMENTATIONS_SYSTEM}} archiviert. Verantwortlich für die Archivierung ist {{ARCHIV_VERANTWORTLICH}}. Aufbewahrungsdauer: mindestens {{ARCHIVIERUNG_JAHRE}} Jahre, längere gesetzliche Aufbewahrungsfristen (HGB, AO) bleiben unberührt.
|
||||
|
||||
({{P_DOC_NEXT_2}}) Zugriffsrechte: Gesellschafter haben jederzeit Einsichtsrecht; Mitarbeiter erhalten Zugriff nach Need-to-know-Prinzip. Vertrauliche Beschlüsse (Personalakten, M&A) werden mit erhöhtem Zugriffsschutz gespeichert.
|
||||
|
||||
## § {{P_END}} Inkrafttreten, Änderungen und Schlussbestimmungen
|
||||
|
||||
(1) Diese Geschäftsordnung tritt durch Beschluss der Gesellschafterversammlung vom {{RESOLUTION_DATE}} in Kraft.
|
||||
|
||||
(2) Änderungen bedürfen eines Gesellschafterbeschlusses unter Beachtung der Mehrheiten gemäß Satzung{{#IF HAS_SHA}} und SHA{{/IF}}.
|
||||
|
||||
(3) Die GO-GF ist mindestens jährlich auf Anpassungsbedarf zu überprüfen. Verantwortlich für die Initiative zur Überprüfung ist {{REVIEW_VERANTWORTLICH}}.
|
||||
|
||||
(4) **Salvatorische Klausel:** Sollten einzelne Bestimmungen dieser Geschäftsordnung ganz oder teilweise unwirksam oder undurchführbar sein oder werden, bleibt die Wirksamkeit der übrigen Bestimmungen davon unberührt. Anstelle der unwirksamen Bestimmung gilt diejenige wirksame Regelung als vereinbart, die dem Sinn und Zweck der unwirksamen Bestimmung wirtschaftlich am nächsten kommt.
|
||||
|
||||
(5) Diese Geschäftsordnung unterliegt deutschem Recht. Gerichtsstand für etwaige Streitigkeiten zwischen den GF aus diesem Innenverhältnis ist - soweit zulässig - der Sitz der Gesellschaft.
|
||||
|
||||
---
|
||||
|
||||
**Beschlossen durch die Gesellschafterversammlung der {{COMPANY_NAME}} am {{RESOLUTION_DATE}}.**
|
||||
|
||||
_Unterschriften: {{SIGNATURES_BLOCK}}_
|
||||
$template$,
|
||||
'["COMPANY_NAME","DOCUMENT_VERSION","EFFECTIVE_DATE","RESOLUTION_DATE","NEXT_REVIEW_DATE","NUM_GF","NUM_GF_TEXT","VERTRETUNGSART","IS_SINGLE_GF","IS_MULTI_GF","NUM_GF_IS_2","NUM_GF_GT_2","HAS_SHA","HAS_CEO_DESIGNATION","CEO_NAME","HAS_RESEARCH_FOCUS","HAS_ACADEMIC_ROLES","HAS_RESSORT_3","RESSORT_1_NAME","RESSORT_1_GF","RESSORT_1_AUFGABEN","RESSORT_2_NAME","RESSORT_2_GF","RESSORT_2_AUFGABEN","RESSORT_3_NAME","RESSORT_3_GF","RESSORT_3_AUFGABEN","MEETING_OPERATIVE_FREQ","MEETING_STRATEGIE_FREQ","ERHEBLICH_EUR","ESKALATION_TAGE_INTERN","ESKALATION_TAGE_GESELLSCHAFTER","SCHWELLE_EINZEL_EUR","SCHWELLE_EINZEL_EUR_PLUS_1","SCHWELLE_GEMEINSAM_EUR","SCHWELLE_GESELLSCHAFTER_EUR","BUDGET_ABWEICHUNG_PCT","VERTRAG_LAUFZEIT_MONATE","VERTRAG_WERT_EUR","LIQUIDITAET_MIN_MONATE","FORECAST_HORIZON_MONTHS","SCHLUESSELPERSON_GEHALT_EUR","NEBENTAETIGKEIT_MAX_STUNDEN","DOKUMENTATIONS_SYSTEM","ARCHIV_VERANTWORTLICH","ARCHIVIERUNG_JAHRE","REVIEW_VERANTWORTLICH","SIGNATURES_BLOCK","P_INFO","P_GESELLSCHAFTER","P_AUSSER","P_ENT","P_FIN","P_PERS","P_IK","P_NEB","P_DOC","P_DOC_NEXT","P_DOC_NEXT_2","P_END","LAST_PARA_4"]'::jsonb,
|
||||
'de',
|
||||
'DE',
|
||||
NULL,
|
||||
'MIT License',
|
||||
'BreakPilot Compliance',
|
||||
false,
|
||||
true,
|
||||
'1.0.0',
|
||||
'published',
|
||||
NOW(), NOW()
|
||||
;
|
||||
|
||||
-- Verifikation
|
||||
SELECT
|
||||
document_type,
|
||||
title,
|
||||
LENGTH(content) AS content_chars,
|
||||
jsonb_array_length(placeholders) AS num_placeholders,
|
||||
status, version
|
||||
FROM compliance_legal_templates
|
||||
WHERE document_type = 'geschaeftsordnung_gf'
|
||||
ORDER BY created_at DESC
|
||||
LIMIT 1;
|
||||
@@ -0,0 +1,766 @@
|
||||
-- Migration 124: SHA (Shareholders' Agreement / Gesellschaftervereinbarung) Template
|
||||
-- Erstellt nach 3-fach-Check Methode (Absatz-fuer-Absatz Review, 2026-05-19)
|
||||
-- Skalierbar fuer 2 bis 4+ Gesellschafter; Single-Founder + Investor unterstuetzt
|
||||
-- Optionale Bloecke: HAS_ACADEMIC_FOUNDER, HAS_BEIRAT, HAS_TEXAS_SHOOTOUT, HAS_GO_GF, HAS_RESEARCH_FOCUS
|
||||
-- Fixt Cross-Reference-Bugs aus dem Quelltext (Governance war § 10 falsch zugeordnet, sollte § 14 sein)
|
||||
-- Ergaenzt um: ESOP-Pool, Investor Information Rights, No-Hire/Non-Solicit, Pre-emptive Rights, FMV-Floor bei Drag-Along
|
||||
|
||||
INSERT INTO compliance_legal_templates (
|
||||
id, tenant_id, document_type, title, description, content,
|
||||
placeholders, language, jurisdiction,
|
||||
license_id, license_name, source_name,
|
||||
attribution_required, is_complete_document, version, status,
|
||||
created_at, updated_at
|
||||
) SELECT
|
||||
gen_random_uuid(),
|
||||
'9282a473-5c95-4b3a-bf78-0ecc0ec71d3e',
|
||||
'sha',
|
||||
'Gesellschaftervereinbarung (Shareholders'' Agreement)',
|
||||
'Gesellschaftervereinbarung (SHA) fuer deutsche GmbH/UG. Regelt das Innenverhaeltnis der Gesellschafter inkl. Vesting (48/12 Monate Cliff), Leaver-Regelungen (Good/Neutral/Bad), Uebertragungsbeschraenkungen, Vorkaufsrechte, Tag-Along und Drag-Along, Deadlock-Mechanismen (optional mit Texas Shoot-Out), Governance mit Reserved Matters (75% Mehrheit), optionaler Beirat, Wettbewerbsverbot mit Safe-Harbor fuer akademische Taetigkeiten, Vertraulichkeit und IP-Bestimmungen. Skalierbar fuer 2 bis 4+ Gesellschafter. Investorenkompatibel und konfliktresistent strukturiert.',
|
||||
$template$
|
||||
# Gesellschaftervereinbarung (SHA) der {{COMPANY_NAME}}
|
||||
|
||||
---
|
||||
|
||||
## Dokumentenkontrolle
|
||||
|
||||
| Feld | Wert |
|
||||
|---|---|
|
||||
| Dokumenttitel | Gesellschaftervereinbarung (Shareholders' Agreement / SHA) |
|
||||
| Version | {{DOCUMENT_VERSION}} |
|
||||
| Stand | {{EFFECTIVE_DATE}} |
|
||||
| Gesellschaft | {{COMPANY_NAME}}, HRB {{HRB_NUMBER}}, {{COMPANY_REGISTRY_COURT}} |
|
||||
| Anwendbares Recht | Deutschland |
|
||||
|
||||
---
|
||||
|
||||
## § 1 Parteien der Vereinbarung
|
||||
|
||||
(1) Die vorliegende Gesellschaftervereinbarung („Vereinbarung" oder „SHA") wird geschlossen zwischen den folgenden Gesellschaftern der {{COMPANY_NAME}} („Gesellschaft"):
|
||||
|
||||
{{PARTIES_LIST}}
|
||||
|
||||
(2) Die in Abs. (1) genannten Personen werden in dieser Vereinbarung jeweils als „Gesellschafter" und gemeinsam als „Gesellschafter"{{#IF IS_FOUNDER_GROUP}} oder „Gründer"{{/IF}} bezeichnet.
|
||||
|
||||
(3) Jeder Gesellschafter hält zum Zeitpunkt des Abschlusses dieser Vereinbarung einen Geschäftsanteil an der Gesellschaft entsprechend der im Handelsregister eingetragenen Satzung („Satzung").
|
||||
|
||||
(4) Diese Vereinbarung regelt ausschließlich das Innenverhältnis der Gesellschafter untereinander. Die organschaftlichen Rechte und Pflichten der Geschäftsführer gemäß GmbHG bleiben hiervon unberührt.
|
||||
|
||||
(5) Diese Vereinbarung tritt mit Unterzeichnung durch sämtliche in Abs. (1) genannten Gesellschafter in Kraft.
|
||||
|
||||
## § 2 Zweck der Vereinbarung
|
||||
|
||||
(1) Zweck dieser Vereinbarung ist es, die Zusammenarbeit der Gesellschafter der Gesellschaft auf eine klare, verlässliche und investorenfähige Grundlage zu stellen. Sie regelt ausschließlich das Innenverhältnis der Gesellschafter untereinander sowie deren Rechte und Pflichten gegenüber der Gesellschaft.
|
||||
|
||||
(2) Diese Vereinbarung ergänzt die Satzung der Gesellschaft und enthält insbesondere Regelungen zu:
|
||||
a) Governance-Strukturen und Entscheidungsprozessen (§ 14),
|
||||
b) Informations- und Transparenzpflichten (§ 7),
|
||||
c) Vesting- und Leaver-Bestimmungen (§§ 8 und 9),
|
||||
d) Übertragungsbeschränkungen, Vorkaufsrechten, Tag-Along und Drag-Along (§§ 10-12),
|
||||
e) Wettbewerbsverboten (§ 16),
|
||||
f) Vertraulichkeit und IP-Regelungen (§§ 6 und 17),
|
||||
g) Streitbeilegungsmechanismen und Deadlocks (§ 13).
|
||||
|
||||
(3) Bei Widersprüchen zwischen dieser Vereinbarung und der Satzung gilt:
|
||||
a) im Innenverhältnis zwischen den Gesellschaftern hat diese Vereinbarung Vorrang, soweit gesetzlich zulässig;
|
||||
b) im Außenverhältnis gegenüber Dritten gilt ausschließlich die Satzung.
|
||||
|
||||
(4) Die Gesellschafter verpflichten sich, erforderliche Satzungsänderungen zu beschließen, soweit dies notwendig ist, um wesentliche Regelungen dieser Vereinbarung — insbesondere Vesting-, Leaver-, Übertragungs- und Drag-Along-Bestimmungen — wirksam abzubilden, sofern diese Änderungen rechtlich zulässig sind. **Hinweis:** Anteilsübertragungen bedürfen gemäß § 15 GmbHG der notariellen Beurkundung.
|
||||
|
||||
(5) Ziel dieser Vereinbarung ist es insbesondere, sicherzustellen, dass:
|
||||
a) die Gesellschaft handlungsfähig, konfliktresistent und langfristig stabil geführt wird,
|
||||
b) Gesellschafter-Verhältnisse klar geregelt und spätere Finanzierungsrunden nicht beeinträchtigt werden,
|
||||
c) Rechte und Pflichten aller Gesellschafter transparent gestaltet sind,
|
||||
d) die Struktur des Unternehmens den Erwartungen professioneller Investoren entspricht.
|
||||
|
||||
## § 3 Rollen und Verantwortlichkeiten
|
||||
|
||||
(1) Die Gesellschafter verpflichten sich, aktiv und kooperativ an der Führung und Weiterentwicklung der Gesellschaft mitzuwirken und ihre jeweiligen Qualifikationen, Erfahrungen und Ressourcen in angemessenem Umfang einzubringen.
|
||||
|
||||
(2) Die interne Verteilung operativer Rollen und Verantwortlichkeiten („Rollenverteilung") richtet sich nach **Anlage A** zu dieser Vereinbarung. Die Rollenverteilung dient ausschließlich der internen Organisation und berührt weder:
|
||||
a) die gesetzliche Stellung der Geschäftsführer gemäß GmbHG, noch
|
||||
b) die gesellschaftsrechtliche Gleichbehandlung der Gesellschafter.
|
||||
|
||||
(3) Änderungen der Rollenverteilung gemäß Anlage A können jederzeit beschlossen werden, sofern alle {{#IF IS_FOUNDER_GROUP}}Gründer{{/IF}}{{#IF NOT IS_FOUNDER_GROUP}}Gesellschafter{{/IF}} zustimmen. Anpassungen sind insbesondere möglich bei:
|
||||
a) Wachstum der Gesellschaft,
|
||||
b) Veränderungen in Personal- oder Führungsstrukturen,
|
||||
c) Anforderungen aus Finanzierungsrunden oder Investorenrichtlinien,
|
||||
d) Änderungen individueller Verfügbarkeiten oder Qualifikationen.
|
||||
|
||||
(4) Soweit ein Gesellschafter zugleich Geschäftsführer der Gesellschaft ist, gelten für die Ausübung der Geschäftsführungstätigkeit ausschließlich:
|
||||
a) das GmbHG,
|
||||
b) die Satzung,
|
||||
c) der Geschäftsführeranstellungsvertrag,
|
||||
d) etwaige durch Gesellschafterbeschluss erteilte Weisungen,
|
||||
e) {{#IF HAS_GO_GF}}die Geschäftsordnung der Geschäftsführung (GO-GF){{/IF}}.
|
||||
|
||||
Diese Vereinbarung begründet keine organschaftlichen Rechte oder Pflichten.
|
||||
|
||||
(5) Überschneidungen oder Konflikte zwischen einzelnen Rollen werden im Rahmen der Governance-Regeln (§ 14) behandelt und im gegenseitigen Einvernehmen gelöst.
|
||||
|
||||
(6) Jeder Gesellschafter verpflichtet sich, die Erfüllung seiner Rolle transparent zu gestalten und relevante Informationen sowie absehbare Änderungen der Verfügbarkeit den übrigen Gesellschaftern rechtzeitig mitzuteilen.
|
||||
|
||||
## § 4 Arbeits- und Beitragspflichten
|
||||
|
||||
(1) Die Gesellschafter verpflichten sich, ihre Kenntnisse, Fähigkeiten und Erfahrungen im angemessenen Umfang zur Förderung der Gesellschaft einzubringen und an der Weiterentwicklung des Unternehmens mitzuwirken („Beitragspflicht").
|
||||
|
||||
(2) Umfang und Art der individuellen Beiträge orientieren sich an der in Anlage A festgelegten Rollenverteilung sowie den im Rahmen der Governance-Strukturen (§ 14) getroffenen Beschlüssen. Die Beitragspflicht begründet keine arbeitsvertraglichen Pflichten und ersetzt keinen Geschäftsführeranstellungsvertrag.
|
||||
|
||||
(3) Die Gesellschafter koordinieren ihre Zusammenarbeit nach den Grundsätzen von:
|
||||
a) Transparenz,
|
||||
b) Verlässlichkeit,
|
||||
c) Eigenverantwortung,
|
||||
d) angemessener Abstimmung über Rollen und Prioritäten.
|
||||
|
||||
(4) Veränderungen in der Verfügbarkeit oder der Fähigkeit eines Gesellschafters, seine Beiträge in vollem Umfang zu leisten, werden den übrigen Gesellschaftern frühzeitig mitgeteilt. Die Gesellschafter bemühen sich, erforderliche Anpassungen einvernehmlich zu lösen.
|
||||
|
||||
(5) Eine vorübergehende Einschränkung der Verfügbarkeit eines Gesellschafters stellt keinen Verstoß gegen die Beitragspflichten dar, sofern:
|
||||
a) sie rechtzeitig kommuniziert wurde, und
|
||||
b) die Gesellschafter eine angemessene organisatorische Lösung gemäß § 14 vereinbaren.
|
||||
|
||||
(6) Die Beitragspflicht der Gesellschafter ist von den Vesting-Regelungen dieser Vereinbarung unabhängig. Insbesondere führt eine Änderung der Verfügbarkeit oder der tatsächlichen Beiträge eines Gesellschafters nicht zu:
|
||||
a) einer Unterbrechung oder Reduktion des Vestings (§ 8),
|
||||
b) einer Leaver-Klassifizierung (§ 9),
|
||||
sofern kein vorsätzliches oder grob pflichtwidriges Verhalten vorliegt.
|
||||
|
||||
(7) Die Gesellschafter verpflichten sich, ihre Tätigkeiten so zu organisieren, dass eine effiziente Zusammenarbeit gewährleistet ist. Eine formelle Arbeitszeiterfassung ist nicht erforderlich.
|
||||
|
||||
(8) Die Beitragspflichten der Gesellschafter begründen keine Verpflichtung zur persönlichen Leistungserbringung über die gesellschaftsrechtlich geschuldete Mitwirkung hinaus. Soweit ein Gesellschafter zugleich Geschäftsführer ist, gelten für seine organschaftlichen Pflichten ausschließlich das GmbHG, die Satzung und sein Anstellungsvertrag.
|
||||
|
||||
## § 5 Treuepflichten
|
||||
|
||||
(1) Die Gesellschafter verpflichten sich, die Interessen der Gesellschaft loyal, redlich und kooperativ zu fördern und alles zu unterlassen, was deren wirtschaftliche Entwicklung oder strategische Ausrichtung in erheblicher Weise beeinträchtigen könnte.
|
||||
|
||||
(2) Jeder Gesellschafter trägt dazu bei, Entscheidungen und Maßnahmen zu unterstützen, die der Gesellschaft dienen, und verpflichtet sich zu einer offenen, rechtzeitigen und transparenten Kommunikation gegenüber den übrigen Gesellschaftern.
|
||||
|
||||
(3) Jeder Gesellschafter unterlässt es, Geschäftschancen, die der Gesellschaft aufgrund ihrer Tätigkeit oder Stellung zustehen könnten („Corporate Opportunities"), ohne Zustimmung der übrigen Gesellschafter für eigene Zwecke zu nutzen.
|
||||
|
||||
(4) Nebenbeschäftigungen sind zulässig, sofern sie:
|
||||
a) nicht in unmittelbarem Wettbewerb zur Gesellschaft stehen,
|
||||
b) die Beitragspflichten gemäß § 4 nicht wesentlich beeinträchtigen, und
|
||||
c) keine Nutzung vertraulicher Informationen oder Ressourcen der Gesellschaft erfordern.
|
||||
|
||||
Eine gesonderte Genehmigung ist nur erforderlich, wenn die Nebenbeschäftigung geeignet ist, einen Interessenkonflikt zu begründen oder erhebliche zeitliche Kapazitäten zu binden.
|
||||
|
||||
(5) Jeder Gesellschafter verpflichtet sich, tatsächliche oder potenzielle Interessenkonflikte unverzüglich offenzulegen, transparent zu machen und gemeinsam mit den übrigen Gesellschaftern eine angemessene Lösung zu erarbeiten.
|
||||
|
||||
(6) Im Fall eines Konflikts zwischen den persönlichen Interessen eines Gesellschafters und den Interessen der Gesellschaft haben — soweit rechtlich zulässig — die Interessen der Gesellschaft Vorrang.
|
||||
|
||||
(7) Eine vorübergehende Einschränkung der Verfügbarkeit eines Gesellschafters gilt nicht als Verletzung der Treuepflichten, sofern:
|
||||
a) sie gemäß § 4 (4) rechtzeitig kommuniziert wurde, und
|
||||
b) die Gesellschafter eine angemessene organisatorische Lösung vereinbaren.
|
||||
|
||||
## § 6 Geistiges Eigentum (IP)
|
||||
|
||||
(1) Sämtliche im Rahmen der Tätigkeit eines Gesellschafters für die Gesellschaft geschaffenen oder entwickelten Arbeitsergebnisse, einschließlich technischer Entwicklungen, Software, Datenbanken, Modelle, Dokumentationen, Marken, Designs, Konzepte, Erfindungen sowie sonstiger urheber- oder gewerblich geschützter Inhalte („Unternehmens-IP"), stehen ausschließlich der Gesellschaft zu.
|
||||
|
||||
(2) Jeder Gesellschafter tritt hiermit der Gesellschaft — soweit rechtlich zulässig — sämtliche Rechte an Unternehmens-IP ab, die er im Rahmen seiner Tätigkeit für die Gesellschaft schafft oder an deren Entstehung er mitwirkt. Die Gesellschaft ist berechtigt, diese IP uneingeschränkt zu nutzen, zu verwerten und Schutzrechte anzumelden.
|
||||
|
||||
{{#IF HAS_ACADEMIC_FOUNDER}}
|
||||
(3) Ist ein Gesellschafter zugleich Arbeitnehmer einer Hochschule, Forschungseinrichtung oder eines anderen öffentlichen Rechtsträgers und entsteht IP im Rahmen dieser Tätigkeiten („Akademische IP"), so gilt:
|
||||
a) Akademische IP gehört nicht automatisch der Gesellschaft;
|
||||
b) eine Übertragung an die Gesellschaft erfolgt nur, soweit dies:
|
||||
- rechtlich zulässig,
|
||||
- vertraglich möglich,
|
||||
- und von dem betreffenden Gesellschafter ausdrücklich gewollt ist;
|
||||
c) die Gesellschaft kann akademische Ergebnisse nur nutzen, wenn eine entsprechende Vereinbarung geschlossen wurde.
|
||||
|
||||
(4) Der Gesellschafter stellt sicher, dass Unternehmens-IP nicht in akademische Projekte, Drittmittelvorhaben oder Kooperationen mit Dritten eingebracht wird, sofern hierfür keine:
|
||||
a) vorherige Zustimmung aller Gesellschafter vorliegt, und
|
||||
b) rechtlichen Anforderungen (insbesondere Datenschutz, Geheimhaltung und Förderbedingungen) entsprochen wird.
|
||||
|
||||
(5) Die Gesellschaft kann akademische Infrastruktur, Daten oder Ressourcen nur nutzen, sofern:
|
||||
a) dies rechtlich zulässig ist,
|
||||
b) die entsprechende Einrichtung zustimmt, und
|
||||
c) keine Interessenkonflikte entstehen.
|
||||
|
||||
Ein Anspruch der Gesellschaft auf solche Nutzung besteht nicht.
|
||||
{{/IF}}
|
||||
|
||||
({{P_IP_PARA_6}}) Jeder Gesellschafter verpflichtet sich, bei allen im Rahmen der Gesellschaft entstehenden Erfindungen die erforderlichen Erklärungen abzugeben und bei der Anmeldung von Schutzrechten mitzuwirken. Etwaige gesetzliche Vergütungsansprüche (z. B. nach ArbnErfG) bleiben unberührt.
|
||||
|
||||
({{P_IP_PARA_7}}) Unternehmens-IP und vertrauliche Informationen der Gesellschaft dürfen vom Gesellschafter nicht genutzt werden für:
|
||||
a) Tätigkeiten außerhalb der Gesellschaft,
|
||||
{{#IF HAS_ACADEMIC_FOUNDER}}b) akademische Projekte,
|
||||
c) Drittmittelvorhaben,
|
||||
d) {{/IF}}Tätigkeiten im Dienste anderer Unternehmen oder Organisationen,
|
||||
es sei denn, die Gesellschafter haben zuvor zugestimmt.
|
||||
|
||||
({{P_IP_PARA_8}}) Die Regelungen dieses Paragraphen gelten unabhängig davon fort, ob ein Gesellschafter Geschäftsführer ist oder nicht. Sie bestehen über das Ausscheiden eines Gesellschafters hinaus fort, soweit dies rechtlich zulässig ist.
|
||||
|
||||
## § 7 Informationspflichten
|
||||
|
||||
(1) Die Gesellschafter verpflichten sich zu einer offenen, transparenten und rechtzeitigen Kommunikation über alle wesentlichen geschäftlichen, technischen und finanziellen Entwicklungen der Gesellschaft, soweit diese für die gemeinsame Steuerung des Unternehmens erforderlich sind.
|
||||
|
||||
(2) Jeder Gesellschafter stellt den übrigen Gesellschaftern regelmäßig die Informationen zur Verfügung, die erforderlich sind, um:
|
||||
a) den operativen Fortschritt,
|
||||
b) die technische Entwicklung,
|
||||
c) die finanzielle Lage,
|
||||
d) wesentliche Risiken und Chancen,
|
||||
angemessen beurteilen zu können. Der Umfang orientiert sich an den im Rahmen der Governance-Strukturen (§ 14) festgelegten Reporting- und Meeting-Formaten.
|
||||
|
||||
(3) Jeder Gesellschafter informiert die übrigen Gesellschafter unverzüglich, wenn Ereignisse eintreten oder erkennbar werden, die:
|
||||
a) erhebliche Auswirkungen auf die wirtschaftliche, technische oder rechtliche Situation der Gesellschaft haben können,
|
||||
b) eine wesentliche Anpassung von Strategie, Ressourcen oder Prioritäten erfordern, oder
|
||||
c) zu Verzögerungen, Problemen oder Konflikten führen können, die im Rahmen der Governance gelöst werden müssen.
|
||||
|
||||
(4) Jeder Gesellschafter hat jederzeit das Recht auf Einsicht in sämtliche:
|
||||
a) Geschäftsunterlagen der Gesellschaft,
|
||||
b) Finanzdaten und Buchführungsunterlagen,
|
||||
c) Verträge und wesentliche Vereinbarungen,
|
||||
d) technische Dokumentationen und Entwicklungsstände,
|
||||
e) Datenräume der Gesellschaft,
|
||||
soweit die Einsichtnahme zur Wahrnehmung seiner Gesellschafterrechte erforderlich ist. Die Geschäftsführung stellt sicher, dass die Einsichtnahme ohne unangemessene Verzögerung ermöglicht wird.
|
||||
|
||||
(5) Soweit ein Gesellschafter zugleich Geschäftsführer ist, erfüllt er die Informationspflichten gegenüber den übrigen Gesellschaftern zusätzlich im Rahmen seiner gesetzlichen und vertraglichen Pflichten als Geschäftsführer. Die organschaftlichen Pflichten bleiben hiervon unberührt.
|
||||
|
||||
(6) Beschlüsse, Entscheidungen und wesentliche Absprachen der Gesellschafter werden schriftlich oder in Textform dokumentiert und allen Gesellschaftern zugänglich gemacht.
|
||||
|
||||
(7) **Investor Information Rights:** Sofern Investoren (Wandeldarlehen, Beteiligung, etc.) Gesellschafter werden oder Informationsrechte vertraglich vereinbart sind, gelten folgende Mindeststandards:
|
||||
a) monatlicher Liquiditätsbericht ab Beteiligung > {{INVESTOR_INFO_THRESHOLD_EUR}} EUR,
|
||||
b) Quartals-Reporting mit P&L, Cashflow und Risk Update,
|
||||
c) jährlicher (geprüfter) Jahresabschluss innerhalb von {{ANNUAL_REPORT_MONTHS}} Monaten nach Geschäftsjahresende.
|
||||
|
||||
(8) Die Bestimmungen dieses Paragraphen lassen die Vertraulichkeitspflichten gemäß § 17 unberührt.
|
||||
|
||||
## § 8 Vesting
|
||||
|
||||
(1) Alle von den {{#IF IS_FOUNDER_GROUP}}Gründern{{/IF}}{{#IF NOT IS_FOUNDER_GROUP}}Gesellschaftern{{/IF}} gehaltenen Geschäftsanteile unterliegen einem Vesting gemäß diesem § 8, beginnend mit {{VESTING_START_EVENT}} („Vesting-Beginn").
|
||||
|
||||
(2) Das Vesting erfolgt über einen Zeitraum von **{{VESTING_MONTHS}} Monaten** ab Vesting-Beginn mit einem **Cliff von {{CLIFF_MONTHS}} Monaten**. Vor Ablauf des Cliff gelten keine Anteile als unverfallbar („vested"). Nach Ablauf des Cliff vesten die Anteile monatlich linear.
|
||||
|
||||
(3) Anteile, die zum Zeitpunkt des Ausscheidens eines Gesellschafters nicht unverfallbar sind („unvested"), werden gemäß den Leaver-Regelungen (§ 9) eingezogen oder auf die Gesellschaft bzw. einen benannten Dritten übertragen.
|
||||
|
||||
(4) Änderungen der tatsächlichen Verfügbarkeit oder Arbeitsleistung eines Gesellschafters — gleich aus welchem Grund — haben keinen Einfluss auf das Vesting, solange:
|
||||
a) die Gesellschafterstellung fortbesteht, und
|
||||
b) kein vorsätzliches oder grob pflichtwidriges Verhalten vorliegt.
|
||||
|
||||
Insbesondere führt eine Veränderung der zeitlichen Verfügbarkeit nicht zu einer Unterbrechung oder Reduktion des Vestings.
|
||||
|
||||
(5) Streitigkeiten, Auseinandersetzungen, Deadlocks oder Governance-Verfahren haben keine Auswirkungen auf den Vesting-Fortschritt. Nur ein wirksames Ausscheiden gemäß § 9 führt zur Anwendung der Leaver-Regeln.
|
||||
|
||||
(6) Bereits unverfallbar gewordene („vested") Anteile bleiben vested. Eine Rückabwicklung unverfallbarer Anteile ist ausgeschlossen, soweit dies gesetzlich zulässig ist.
|
||||
|
||||
(7) **Acceleration bei Exit:** Im Falle eines Change of Control (§ 12 Drag-Along, Verkauf von mehr als {{ACCELERATION_THRESHOLD_PCT}}% der Anteile) wird das Vesting zu {{ACCELERATION_PCT}}% beschleunigt (Single-Trigger Acceleration), sofern nicht im jeweiligen Investor-Term-Sheet abweichend geregelt.
|
||||
|
||||
(8) Die {{#IF IS_FOUNDER_GROUP}}Gründer{{/IF}}{{#IF NOT IS_FOUNDER_GROUP}}Gesellschafter{{/IF}} verpflichten sich, bei einer Übertragung ihrer Anteile an Dritte sicherzustellen, dass die Vesting-Regelungen unverändert fortgelten oder durch eine gleichwertige Regelung ersetzt werden, sofern Investoren oder die Gesellschaft dies verlangen.
|
||||
|
||||
(9) Dieser § 8 geht im Innenverhältnis widersprechenden Regelungen der Satzung vor, soweit rechtlich zulässig.
|
||||
|
||||
## § 9 Leaver-Regelungen
|
||||
|
||||
(1) **Leaver-Kategorien.** Ein Gesellschafter, der aus der Gesellschaft ausscheidet („Ausscheidender Gesellschafter"), wird gemäß nachstehenden Kategorien eingestuft:
|
||||
|
||||
a) **Good Leaver:** Ein Gesellschafter gilt als Good Leaver, wenn sein Ausscheiden erfolgt aufgrund von:
|
||||
- Tod,
|
||||
- dauerhafter Krankheit oder Erwerbsunfähigkeit,
|
||||
- Elternzeit oder wesentlichen familiären Gründen,
|
||||
- einvernehmlichem Beschluss aller Gesellschafter,
|
||||
- sonstigen Gründen, die nicht auf schuldhaftem Verhalten beruhen.
|
||||
|
||||
b) **Bad Leaver:** Ein Gesellschafter gilt als Bad Leaver, wenn sein Ausscheiden auf:
|
||||
- vorsätzlicher oder grob fahrlässiger schwerer Pflichtverletzung,
|
||||
- Verstoß gegen Wettbewerbsverbot (§ 16),
|
||||
- vorsätzlicher Offenlegung vertraulicher Informationen (§ 17),
|
||||
- strafbarem Verhalten zulasten der Gesellschaft,
|
||||
- Nichterbringung der geschuldeten Einlage
|
||||
beruht.
|
||||
|
||||
c) **Neutral Leaver:** Ein Gesellschafter ist Neutral Leaver, wenn keiner der vorgenannten Fälle erfüllt ist.
|
||||
|
||||
(2) **Behandlung von unvested und vested Anteilen.** Beim Ausscheiden des Gesellschafters gilt:
|
||||
a) Unvested Anteile verfallen und werden durch Einziehung oder Übertragung gemäß Beschluss der Gesellschafter abgewickelt.
|
||||
b) Vested Anteile werden gemäß Abs. (3) abgefunden.
|
||||
|
||||
(3) **Abfindungsmechanik.** Die Abfindung für die gehaltenen Anteile richtet sich nach der Leaver-Kategorie:
|
||||
a) **Good Leaver:** Erhält 100 % des Fair Market Value (FMV) für seine vested Anteile.
|
||||
b) **Neutral Leaver:** Erhält den FMV seiner vested Anteile, ggf. angepasst um die Vestingquote, falls eine anteilige Betrachtung vereinbart wurde.
|
||||
c) **Bad Leaver:** Erhält:
|
||||
- für unvested Anteile: 0-{{BAD_LEAVER_UNVESTED_PCT}} % des FMV (nach Wahl der Gesellschaft),
|
||||
- für vested Anteile höchstens den Wert der geleisteten Einlage (Nennwert).
|
||||
|
||||
(4) **Bestimmung des Fair Market Value (FMV).** Der FMV wird bestimmt durch:
|
||||
a) einen von den Gesellschaftern einvernehmlich benannten unabhängigen Sachverständigen, oder
|
||||
b) falls keine Einigung binnen {{FMV_AGREEMENT_DAYS}} Tagen erfolgt: durch einen von der Industrie- und Handelskammer (IHK) zu benennenden Sachverständigen.
|
||||
|
||||
Der FMV ist verbindlich.
|
||||
|
||||
(5) **Zahlungsmodalitäten.** Die Abfindung kann von der Gesellschaft oder einem erwerbenden Gesellschafter:
|
||||
a) sofort oder
|
||||
b) in bis zu {{ABFINDUNG_RATEN_MAX}} gleichen monatlichen Raten
|
||||
ausbezahlt werden. Eine vorzeitige Ablösung ist jederzeit möglich.
|
||||
|
||||
(6) **Rechtsfolgen des Ausscheidens.** Mit Wirksamwerden des Ausscheidens:
|
||||
a) verliert der ausscheidende Gesellschafter sämtliche gesellschaftsrechtlichen Rechte,
|
||||
b) bleiben Vertraulichkeits- und IP-Pflichten (§§ 6 und 17) uneingeschränkt bestehen,
|
||||
c) bleibt das Wettbewerbsverbot (§ 16) bestehen, soweit anwendbar.
|
||||
|
||||
(7) **No-Hire / Non-Solicit.** Ein ausscheidender Gesellschafter darf für einen Zeitraum von {{NON_SOLICIT_MONTHS}} Monaten nach Ausscheiden keine Mitarbeiter, Berater oder Geschäftspartner der Gesellschaft direkt oder indirekt abwerben.
|
||||
|
||||
## § 10 Übertragungsbeschränkungen und Vorkaufsrechte
|
||||
|
||||
(1) **Zustimmungserfordernis.** Die Übertragung, Verpfändung oder sonstige Belastung von Geschäftsanteilen eines Gesellschafters („Übertragung") bedarf der vorherigen Zustimmung der Gesellschafterversammlung, soweit gesetzlich zulässig und in der Satzung vorgesehen. Ein Anspruch auf Zustimmung besteht nicht.
|
||||
|
||||
(2) **Informationspflicht bei beabsichtigter Übertragung.** Beabsichtigt ein Gesellschafter („Veräußernder Gesellschafter") eine Übertragung an einen Dritten, hat er dies den übrigen Gesellschaftern in Textform mitzuteilen und dabei offenzulegen:
|
||||
a) Identität des vorgesehenen Erwerbers,
|
||||
b) den angebotenen Kaufpreis oder die sonstige Gegenleistung,
|
||||
c) sämtliche wesentlichen Bedingungen des geplanten Geschäfts.
|
||||
|
||||
Die Mitteilung gilt als Voranzeige im Sinne dieses Paragraphen.
|
||||
|
||||
(3) **Vorkaufsrecht der Gesellschafter.** Die übrigen Gesellschafter haben nach Zugang der Voranzeige ein Vorkaufsrecht zu den gleichen Bedingungen. Die Ausübungsfrist beträgt **{{VORKAUFSRECHT_TAGE}} Kalendertage** ab Zugang der Voranzeige.
|
||||
|
||||
(4) **Anteilszuteilung bei mehreren ausübenden Gesellschaftern.** Üben mehrere Gesellschafter das Vorkaufsrecht aus, werden die angebotenen Anteile anteilig im Verhältnis ihrer bestehenden Beteiligungsquoten zugeteilt, sofern sie nicht einvernehmlich eine abweichende Verteilung beschließen.
|
||||
|
||||
(5) **Nachrangiges Erwerbsrecht der Gesellschaft oder eines Dritten.** Wird das Vorkaufsrecht nicht oder nicht vollständig ausgeübt, kann:
|
||||
a) die Gesellschaft selbst oder
|
||||
b) ein von ihr benannter Erwerber
|
||||
|
||||
die nicht übernommenen Anteile zu denselben Bedingungen erwerben.
|
||||
|
||||
(6) **Freigabe zur Übertragung an Dritte.** Nur wenn:
|
||||
a) kein Gesellschafter sein Vorkaufsrecht ausübt,
|
||||
b) die Gesellschaft oder ein benannter Erwerber keinen Erwerb vornimmt,
|
||||
|
||||
ist der Veräußernde Gesellschafter berechtigt, die Anteile zu den in der Voranzeige genannten Bedingungen an den vorgesehenen Dritten zu übertragen. Ändern sich die Bedingungen, ist ein erneutes Vorkaufsverfahren durchzuführen.
|
||||
|
||||
(7) **Verhältnis zu Tag-Along und Drag-Along.** Dieses Vorkaufsrecht findet keine Anwendung auf:
|
||||
a) Übertragungen im Rahmen von Tag-Along-Rechten gemäß § 11,
|
||||
b) Übertragungen im Rahmen von Drag-Along-Pflichten gemäß § 12,
|
||||
c) Übertragungen aufgrund der Leaver-Regelungen (§ 9).
|
||||
|
||||
(8) **Übertragung an verbundene Personen.** Die Übertragung von Anteilen an verbundene Personen des Gesellschafters (z. B. Holdinggesellschaften oder unmittelbare Familienmitglieder) kann durch Gesellschafterbeschluss allgemein oder im Einzelfall freigegeben werden, sofern dadurch keine Wettbewerbs- oder Kontrollrisiken entstehen.
|
||||
|
||||
(9) **Pre-emptive Rights (Bezugsrechte bei Kapitalerhöhungen).** Bei jeder Kapitalerhöhung steht den Gesellschaftern ein Bezugsrecht zu, das ihrer bisherigen Beteiligungsquote entspricht. Das Bezugsrecht kann durch einstimmigen Gesellschafterbeschluss ausgeschlossen werden (insbesondere für ESOP, Strategische Investoren oder Akquisitionen).
|
||||
|
||||
(10) **Innenverhältnis - Vorrang dieses SHA.** Dieser § 10 geht im Innenverhältnis der Gesellschafter widersprechenden Regelungen der Satzung vor, soweit rechtlich zulässig.
|
||||
|
||||
## § 11 Tag-Along-Rechte (Mitverkaufsrechte)
|
||||
|
||||
(1) **Entstehung des Tag-Along-Rechts.** Beabsichtigt ein Gesellschafter („Veräußernder Gesellschafter") den Verkauf von mehr als **{{TAG_ALONG_THRESHOLD_PCT}} %** seiner Geschäftsanteile an einen oder mehrere Dritte („Dritter Erwerber"), so sind die übrigen Gesellschafter („Mitverkaufsberechtigte Gesellschafter") berechtigt, einen proportionalen Teil ihrer Geschäftsanteile zu gleichen Bedingungen an den Dritten Erwerber mitzuerwerben („Tag-Along-Recht").
|
||||
|
||||
(2) **Mitteilungspflichten.** Der Veräußernde Gesellschafter hat den übrigen Gesellschaftern in Textform mitzuteilen:
|
||||
a) den geplanten Umfang der Übertragung,
|
||||
b) die Identität des Dritten Erwerbers,
|
||||
c) den vereinbarten Kaufpreis und sämtliche wesentliche Bedingungen,
|
||||
d) den vorgesehenen Zeitpunkt des Vollzugs.
|
||||
|
||||
(3) **Ausübung des Tag-Along-Rechts.** Die Mitverkaufsberechtigten Gesellschafter können ihr Tag-Along-Recht innerhalb von {{TAG_ALONG_FRIST_TAGE}} Kalendertagen nach Zugang der Mitteilung gemäß Abs. (2) ausüben. Das Tag-Along umfasst:
|
||||
a) einen Anteil ihrer Beteiligung, der sich proportional zum Anteil des Veräußernden Gesellschafters verhält („Pro-Rata-Anteil"),
|
||||
b) oder — sofern der Dritte Erwerber zustimmt — einen höheren Anteil.
|
||||
|
||||
(4) **Pflicht des Veräußernden Gesellschafters.** Der Veräußernde Gesellschafter ist verpflichtet:
|
||||
a) das Tag-Along-Recht der Mitverkaufsberechtigten Gesellschafter dem Dritten Erwerber anzubieten,
|
||||
b) sicherzustellen, dass der Dritte Erwerber die Anteile der Mitverkaufsberechtigten Gesellschafter zu exakt denselben Bedingungen erwirbt,
|
||||
c) einen Verkauf nicht abzuschließen, bevor über Tag-Along-Rechte entschieden wurde oder sie abgewickelt sind.
|
||||
|
||||
(5) **Rechtsfolgen der Ausübung.** Üben Mitverkaufsberechtigte Gesellschafter ihr Tag-Along-Recht aus:
|
||||
a) sind sie berechtigt, ihre Anteile zu denselben wirtschaftlichen Bedingungen zu verkaufen, insbesondere
|
||||
- gleicher Preis pro Anteil,
|
||||
- gleiche Garantien und Freistellungen (anteilig),
|
||||
- gleiche Zahlungsbedingungen;
|
||||
b) darf der Veräußernde Gesellschafter den Verkauf nur durchführen, wenn der Erwerber die Anteile der Mitverkaufsberechtigten Gesellschafter erwirbt.
|
||||
|
||||
(6) **Keine Anwendung des Vorkaufsrechts.** Das Vorkaufsrecht gemäß § 10 findet keine Anwendung auf Verkäufe, die einem Tag-Along unterliegen.
|
||||
|
||||
(7) **Ausnahmen.** Die Tag-Along-Rechte gelten nicht bei:
|
||||
a) Übertragungen im Rahmen eines Drag-Along gemäß § 12,
|
||||
b) Übertragungen an verbundene Unternehmen oder Familienmitglieder des Gesellschafters, sofern diese durch Beschluss freigegeben wurden,
|
||||
c) Übertragungen im Rahmen der Leaver-Regelungen (§ 9).
|
||||
|
||||
(8) **Rangverhältnis.** Im Innenverhältnis geht dieser § 11 widersprechenden Regelungen der Satzung vor, soweit rechtlich zulässig.
|
||||
|
||||
## § 12 Drag-Along (Mitverkaufspflichten)
|
||||
|
||||
(1) **Entstehung der Drag-Along-Pflicht.** Beschließen Gesellschafter, die zusammen mindestens **{{DRAG_ALONG_THRESHOLD_PCT}} %** der Geschäftsanteile halten („Veräußernde Mehrheit"), den Verkauf von 100 % der Geschäftsanteile oder einer für die Kontrolle maßgeblichen Beteiligung an einen oder mehrere Dritte („Drag-Along-Erwerber"), sind alle übrigen Gesellschafter („Mitverkaufspflichtige Gesellschafter") verpflichtet, ihre Geschäftsanteile zu denselben Bedingungen zu veräußern („Drag-Along-Pflicht").
|
||||
|
||||
(2) **Mitteilungspflichten der Veräußernden Mehrheit.** Die Veräußernde Mehrheit hat den übrigen Gesellschaftern in Textform mitzuteilen:
|
||||
a) die Identität des Drag-Along-Erwerbers,
|
||||
b) den vereinbarten Kaufpreis und die wesentlichen Bedingungen,
|
||||
c) den vorgesehenen Zeitpunkt des Vollzugs.
|
||||
|
||||
Die Mitteilung setzt die Drag-Along-Pflicht in Kraft.
|
||||
|
||||
(3) **Pflicht zur Veräußerung.** Jeder Mitverkaufspflichtige Gesellschafter ist verpflichtet:
|
||||
a) die eigenen Geschäftsanteile zu den gleichen wirtschaftlichen Konditionen wie die Veräußernde Mehrheit zu verkaufen,
|
||||
b) sämtliche notwendigen Erklärungen abzugeben,
|
||||
c) alle erforderlichen Maßnahmen vorzunehmen, um den Vollzug des Drag-Along sicherzustellen.
|
||||
|
||||
(4) **Gleichbehandlung ("Same Terms").** Die Mitverkaufspflichtigen Gesellschafter erhalten insbesondere:
|
||||
a) den identischen Preis pro Anteil,
|
||||
b) gleiche Zahlungsbedingungen,
|
||||
c) anteilige Garantien, Gewährleistungen und Freistellungen (keine höhere Haftung als die Veräußernde Mehrheit).
|
||||
|
||||
Weitergehende Verpflichtungen dürfen ihnen nicht auferlegt werden.
|
||||
|
||||
(5) **Mindest-Kaufpreis (FMV-Floor).** Die Drag-Along-Pflicht greift nur, wenn der angebotene Kaufpreis pro Anteil nicht unter dem Fair Market Value gemäß § 9 (4) liegt, es sei denn, alle Gesellschafter stimmen ausdrücklich zu.
|
||||
|
||||
(6) **Keine Blockade des Exits.** Kein Gesellschafter, einschließlich der Mitverkaufspflichtigen, darf:
|
||||
a) Handlungen vornehmen, die den Vollzug des Drag-Along verhindern oder verzögern,
|
||||
b) zusätzliche Bedingungen verlangen,
|
||||
c) die Verhandlung des Veräußernden Mehrheit mit dem Erwerber beeinträchtigen.
|
||||
|
||||
(7) **Verhältnis zu Tag-Along und Vorkaufsrechten.**
|
||||
a) Tag-Along-Rechte (§ 11) finden keine Anwendung, wenn ein Drag-Along ausgelöst wurde.
|
||||
b) Vorkaufsrechte gemäß § 10 sind ausgeschlossen.
|
||||
|
||||
(8) **Ausnahmen.** Die Drag-Along-Pflicht gilt nicht bei Übertragungen:
|
||||
a) an verbundene Unternehmen der Veräußernden Mehrheit,
|
||||
b) ohne Mindest-Kaufpreis gemäß Abs. (5).
|
||||
|
||||
(9) **Durchführung und Vollzug.** Die Veräußernde Mehrheit ist berechtigt:
|
||||
a) den Verkaufsvertrag für alle Gesellschafter zu verhandeln,
|
||||
b) den Vollzug zu koordinieren,
|
||||
c) technische oder administrative Schritte für alle Beteiligten vorzunehmen,
|
||||
sofern die wirtschaftlichen Bedingungen für alle Gesellschafter identisch sind.
|
||||
|
||||
(10) **Innenverhältnis - Vorrang.** Dieser § 12 geht im Innenverhältnis widersprechenden Bestimmungen der Satzung vor.
|
||||
|
||||
## § 13 Deadlock und Streitbeilegung
|
||||
|
||||
(1) **Definition des Deadlocks.** Ein Deadlock liegt vor, wenn die Gesellschafter oder Geschäftsführer bei einer Entscheidung von wesentlicher Bedeutung für die Gesellschaft trotz zweier ordnungsgemäß einberufener Entscheidungsversuche innerhalb von {{DEADLOCK_FRIST_TAGE}} Tagen keine Einigung erzielen und die Handlungsfähigkeit der Gesellschaft dadurch erheblich beeinträchtigt wird. Ein Deadlock besteht insbesondere bei Entscheidungen über:
|
||||
a) wesentliche Änderungen der Unternehmensstrategie,
|
||||
b) Finanzierungsrunden,
|
||||
c) Budget- oder Personalentscheidungen von erheblicher Tragweite,
|
||||
d) Strukturmaßnahmen oder Exit-Szenarien,
|
||||
e) wesentliche technische oder produktbezogene Entscheidungen.
|
||||
|
||||
(2) **Pflicht zur Mediation.** Im Falle eines Deadlocks verpflichten sich die Gesellschafter, unverzüglich, spätestens innerhalb von {{MEDIATION_INIT_TAGE}} Tagen nach Feststellung des Deadlocks, eine Mediation einzuleiten:
|
||||
a) Der Mediator wird einvernehmlich benannt; gelingt dies nicht binnen {{MEDIATOR_FRIST_TAGE}} Tagen, wird er durch die örtlich zuständige IHK benannt.
|
||||
b) Die Mediation endet spätestens nach {{MEDIATION_MAX_TAGE}} Kalendertagen, sofern die Gesellschafter nicht einvernehmlich eine Verlängerung beschließen.
|
||||
c) Die Kosten der Mediation tragen die Gesellschafter zu gleichen Teilen.
|
||||
|
||||
(3) **Stellungnahme eines externen Experten (optional).** Wenn die strittige Frage überwiegend technischer, wissenschaftlicher oder fachlicher Natur ist, kann jeder Gesellschafter vorschlagen, einen externen Sachverständigen hinzuzuziehen:
|
||||
a) Die Stellungnahme ist nicht bindend,
|
||||
b) dient aber als Entscheidungsgrundlage, um eine sachgerechte Lösung zu fördern.
|
||||
|
||||
{{#IF HAS_TEXAS_SHOOTOUT}}
|
||||
(4) **Ultimatives Deadlock-Instrument: Texas Shoot-Out.** Scheitert die Mediation, wird der Deadlock durch das folgende Verfahren endgültig gelöst:
|
||||
|
||||
a) **Abgabe eines Angebots.** Jeder Gesellschafter („Anbietender Gesellschafter") kann ein unwiderrufliches Angebot abgeben, die Geschäftsanteile eines oder mehrerer anderer Gesellschafter zu einem bestimmten Preis pro Anteil zu kaufen.
|
||||
|
||||
b) **Alternativrecht der anderen Gesellschafter („Reverse Shoot-Out").** Der Empfänger des Angebots kann binnen {{SHOOTOUT_FRIST_TAGE}} Tagen wählen, ob er:
|
||||
- das Angebot annimmt und seine Anteile an den Anbietenden verkauft, oder
|
||||
- die Anteile des Anbietenden zu denselben Konditionen kauft.
|
||||
|
||||
c) **Schweigen = Annahme des Verkaufs.** Erfolgt keine Antwort innerhalb der Frist, gilt das Angebot als angenommen (Verkauf der Anteile der Empfänger).
|
||||
|
||||
d) **Abwicklung.** Die Abwicklung erfolgt innerhalb von {{SHOOTOUT_ABWICKLUNG_TAGE}} Tagen nach Annahme oder Reverse Shoot-Out.
|
||||
{{/IF}}
|
||||
{{#IF NOT HAS_TEXAS_SHOOTOUT}}
|
||||
(4) **Eskalation bei Scheitern der Mediation.** Scheitert die Mediation, ist binnen {{ESKALATION_TAGE}} Tagen eine außerordentliche Gesellschafterversammlung einzuberufen. Beschlüsse der Gesellschafterversammlung erfolgen mit der Mehrheit gemäß Satzung. Im Falle einer fortbestehenden Patt-Situation steht jedem Gesellschafter das Recht zu, die Auflösung der Gesellschaft gemäß § 60 GmbHG zu beantragen.
|
||||
{{/IF}}
|
||||
|
||||
({{P_DEADLOCK_FINAL}}) **Zweck des Deadlock-Verfahrens.** Das Deadlock-Verfahren dient der Sicherstellung, dass:
|
||||
a) die Entscheidungsfähigkeit der Gesellschaft in kritischen Situationen erhalten bleibt,
|
||||
b) Blockadesituationen nicht zu einer Gefährdung des Unternehmens führen,
|
||||
c) die Gesellschafter einen fairen und transparenten Mechanismus zur Konfliktlösung haben,
|
||||
d) eine Liquidation der Gesellschaft nur als letzte Option in Betracht kommt.
|
||||
|
||||
({{P_DEADLOCK_LAST}}) **Innenverhältnis - Vorrang.** Dieser § 13 geht im Innenverhältnis widersprechenden Regelungen der Satzung vor.
|
||||
|
||||
## § 14 Governance und Entscheidungsprozesse
|
||||
|
||||
(1) **Grundsätze der Zusammenarbeit.** Die Gesellschafter und Geschäftsführer arbeiten auf Grundlage von Transparenz, Professionalität und kooperativer Entscheidungsfindung zusammen. Alle Gremien wirken darauf hin, dass die Gesellschaft handlungsfähig, konfliktresistent und langfristig erfolgreich geführt wird.
|
||||
|
||||
(2) **Geschäftsführung und Zuständigkeiten.**
|
||||
a) Die Geschäftsführung (GF) führt die Geschäfte der Gesellschaft unter eigener Verantwortung gemäß GmbHG, Satzung, diesem SHA{{#IF HAS_GO_GF}}, der GO-GF{{/IF}} und den Geschäftsführeranstellungsverträgen.
|
||||
b) Die Geschäftsführer entscheiden eigenständig über operative Angelegenheiten, soweit keine Reserved Matters nach Abs. (3) betroffen sind.
|
||||
c) Die interne Rollenverteilung richtet sich nach Anlage A; diese berührt nicht die gesetzliche Gleichstellung der Geschäftsführer.
|
||||
|
||||
(3) **Reserved Matters (Zustimmungsvorbehalte).** Die folgenden Entscheidungen bedürfen eines Gesellschafterbeschlusses mit mindestens **{{RESERVED_MATTERS_MAJORITY_PCT}} %** der abgegebenen Stimmen, soweit gesetzlich zulässig:
|
||||
|
||||
a) Änderungen der Satzung oder des Stammkapitals,
|
||||
b) Aufnahme neuer Gesellschafter, Ausgabe neuer Anteile oder Wandelrechte,
|
||||
c) wesentliche Finanzierungsrunden,
|
||||
d) Aufnahme von Krediten oder finanziellen Verpflichtungen außerhalb des genehmigten Budgets,
|
||||
e) Erwerb, Veräußerung oder Belastung von wesentlichen Vermögenswerten über {{ASSET_THRESHOLD_EUR}} EUR,
|
||||
f) Abschluss oder Änderung von Geschäftsführeranstellungsverträgen,
|
||||
g) wesentliche Änderungen der Unternehmensstrategie,
|
||||
h) Budgetfreigaben oder Abweichungen über {{BUDGET_ABWEICHUNG_PCT}} % vom genehmigten Budget,
|
||||
i) Eintritt in neue Geschäftsfelder,
|
||||
j) strategische Kooperationen größeren Umfangs,
|
||||
k) Erwerb oder Veräußerung von IP-Rechten von erheblicher Bedeutung,
|
||||
l) Gewährung von Lizenzen, die zentrale Wettbewerbsposition betreffen,
|
||||
m) Einstellungen oder Entlassungen leitender Mitarbeiter (C-Level/Führungskräfte),
|
||||
n) Entscheidungen im Zusammenhang mit Tag-Along/Drag-Along oder Exit-Verhandlungen,
|
||||
o) Maßnahmen gemäß Leaver-Regelungen (§ 9),
|
||||
p) Liquidation, Insolvenz oder Strukturmaßnahmen,
|
||||
q) Einrichtung oder wesentliche Änderung eines Mitarbeiterbeteiligungsprogramms (ESOP).
|
||||
|
||||
(4) **ESOP-Pool.** Die Gesellschafter sind sich einig, einen ESOP-Pool in Höhe von bis zu **{{ESOP_POOL_PCT}} %** des Stammkapitals zu reservieren bzw. einzurichten, vorzugsweise vor der nächsten Finanzierungsrunde. Die konkrete Ausgestaltung erfolgt durch separaten Gesellschafterbeschluss.
|
||||
|
||||
(5) **Gesellschafterbeschlüsse.** Beschlüsse der Gesellschafter können gefasst werden:
|
||||
a) in Versammlungen (präsenz oder digital), oder
|
||||
b) im schriftlichen Verfahren, sofern kein Gesellschafter widerspricht.
|
||||
|
||||
(6) **Meeting-Struktur (Lean Governance).** Um eine effiziente Unternehmenssteuerung zu gewährleisten, halten die Geschäftsführer:
|
||||
a) {{MEETING_OPERATIVE_FREQ}} operative Abstimmungen,
|
||||
b) {{MEETING_STRATEGIE_FREQ}} Strategie-Meetings,
|
||||
c) quartalsweise Überprüfung der Rollen- und Ressourcenverteilung (Anlage A).
|
||||
|
||||
Die Ergebnisse werden in geeigneter Form dokumentiert.
|
||||
|
||||
(7) **Informationsfluss.** Die GF stellt sicher, dass alle Gesellschafter rechtzeitig die Informationen erhalten, die zur Ausübung ihrer Rechte notwendig sind, insbesondere:
|
||||
a) Finanzstatus,
|
||||
b) Cashflow-Projektionen,
|
||||
c) Produkt- und Technologie-Roadmap,
|
||||
d) wesentliche Vertriebs-{{#IF HAS_RESEARCH_FOCUS}} oder Forschungs-{{/IF}}Vorhaben,
|
||||
e) Risiken und Abweichungen vom Budget.
|
||||
|
||||
(8) **Abwesenheiten und Vertretung.** Bei vorübergehender Abwesenheit eines Geschäftsführers:
|
||||
a) informiert dieser die übrigen Geschäftsführer rechtzeitig,
|
||||
b) bestimmen die Geschäftsführer in gegenseitigem Einvernehmen eine Vertretung.
|
||||
|
||||
Eine Abwesenheit führt nicht zu einer Anpassung von Stimm- oder Vestingrechten.
|
||||
|
||||
(9) **Konfliktlösung und Deadlock-Verweis.** Bei unlösbaren Streitigkeiten wenden die Geschäftsführer und Gesellschafter zunächst:
|
||||
a) die internen Abstimmungsmechanismen an,
|
||||
b) sodann Mediation gemäß § 13 (2),
|
||||
c) im Deadlock-Fall das Verfahren gemäß § 13 (4){{#IF HAS_TEXAS_SHOOTOUT}}-(5){{/IF}}.
|
||||
|
||||
(10) **Innenverhältnis - Vorrangregel.** Dieser § 14 geht im Innenverhältnis widersprechenden Bestimmungen der Satzung vor, soweit gesetzlich zulässig.
|
||||
|
||||
{{#IF HAS_BEIRAT}}
|
||||
## § 15 Beirat
|
||||
|
||||
(1) **Einrichtung des Beirats.** Die Gesellschafter können einen Beirat als beratendes Gremium der Gesellschaft einrichten. Der Beirat hat keine organschaftlichen Befugnisse und keine Geschäftsführungs- oder Vertretungsmacht.
|
||||
|
||||
(2) **Aufgaben des Beirats.** Der Beirat unterstützt die Gesellschafter und die Geschäftsführung bei strategischen Fragestellungen. Seine Aufgaben umfassen insbesondere:
|
||||
a) Beratung zu Unternehmensstrategie, Produktentwicklung und Markteintritt,
|
||||
b) Feedback zu Finanzierungsrunden und Investorenansprache,
|
||||
c) Begleitung bei Wachstum, Skalierung und Organisationsstrukturen,
|
||||
d) Unterstützung bei Netzwerk, Partnerschaften und Talentrekrutierung,
|
||||
e) Einschätzungen zu Technologie- oder Markttrends.
|
||||
|
||||
Der Beirat trifft keine verbindlichen Entscheidungen für die Gesellschaft.
|
||||
|
||||
(3) **Zusammensetzung und Bestellung.**
|
||||
a) Der Beirat besteht aus bis zu {{BEIRAT_MAX_MITGLIEDER}} Mitgliedern, sofern die Gesellschafter nichts Abweichendes beschließen.
|
||||
b) Die Mitglieder werden durch Beschluss der Gesellschafter bestellt und abberufen.
|
||||
c) Die Gesellschafter können externe Experten berufen, auch wenn diese keine Gesellschafter sind.
|
||||
|
||||
(4) **Vorsitz und Arbeitsweise.**
|
||||
a) Die Beiratsmitglieder wählen aus ihrer Mitte einen Vorsitzenden.
|
||||
b) Der Beirat gibt sich eine einfache Geschäftsordnung, sofern erforderlich.
|
||||
c) Sitzungen können persönlich, digital oder hybrid stattfinden.
|
||||
|
||||
(5) **Einberufung und Teilnahme.**
|
||||
a) Der Beirat tagt in der Regel {{BEIRAT_FREQ}}, oder bei Bedarf häufiger.
|
||||
b) Die Geschäftsführung nimmt an den Sitzungen teil, sofern der Beirat dies wünscht.
|
||||
c) Jeder Geschäftsführer kann Themen auf die Agenda setzen.
|
||||
|
||||
(6) **Vergütung.** Die Mitglieder des Beirats können eine angemessene Vergütung erhalten, sofern die Gesellschafter dies beschließen. Eine Vergütung darf erst dann erfolgen, wenn dies wirtschaftlich vertretbar ist und im Budget berücksichtigt wurde.
|
||||
|
||||
(7) **Informationsrechte des Beirats.**
|
||||
a) Der Beirat erhält die Informationen, die er zur Wahrnehmung seiner Beratungsfunktion benötigt.
|
||||
b) Die Vertraulichkeitspflichten gemäß § 17 gelten entsprechend.
|
||||
|
||||
(8) **Keine Entscheidungs- oder Vetorechte.** Der Beirat hat keinerlei:
|
||||
a) Vetorechte,
|
||||
b) Weisungsrechte gegenüber der Geschäftsführung,
|
||||
c) Rechte zur Genehmigung oder Ablehnung von Transaktionen,
|
||||
d) Mitspracherechte bei Reserved Matters.
|
||||
|
||||
Alle Entscheidungsbefugnisse verbleiben bei der Geschäftsführung und den Gesellschaftern gemäß § 14.
|
||||
|
||||
(9) **Innenverhältnis - Vorrangregel.** Dieser § 15 geht im Innenverhältnis widersprechenden Bestimmungen der Satzung vor, soweit rechtlich zulässig.
|
||||
{{/IF}}
|
||||
|
||||
## § {{P_NONCOMPETE}} Wettbewerbsverbot
|
||||
|
||||
(1) **Wettbewerbsverbot während der Gesellschafterstellung.** Solange ein Gesellschafter an der Gesellschaft beteiligt ist oder als Geschäftsführer tätig ist, darf er keine Tätigkeit ausüben, die in unmittelbarem Wettbewerb zur Gesellschaft steht. Dies umfasst insbesondere:
|
||||
a) die Gründung, Beteiligung oder Mitarbeit in Unternehmen, die Produkte oder Dienstleistungen anbieten, welche unmittelbar mit den Angeboten der Gesellschaft konkurrieren,
|
||||
b) die Beratung solcher Unternehmen,
|
||||
c) das Bereitstellen von Know-how, Technologie oder Ressourcen an Wettbewerber.
|
||||
|
||||
(2) **Zulässige Tätigkeiten / Safe Harbor.** Keine verbotene Wettbewerbshandlung liegt vor bei:
|
||||
{{#IF HAS_ACADEMIC_FOUNDER}}a) akademischen Tätigkeiten, einschließlich Lehre, Forschung, Publikationen und Drittmittelprojekten, sofern keine Unternehmens-IP (§ 6) oder vertrauliche Informationen (§ 17) genutzt werden und die Tätigkeit
|
||||
- nicht unmittelbar mit dem Geschäftsmodell der Gesellschaft konkurriert und
|
||||
- die Beitragspflichten gemäß § 4 nicht wesentlich beeinträchtigt;
|
||||
b) {{/IF}}Tätigkeiten im Rahmen privater Investitionen oder passiver Minderheitsbeteiligungen (< {{PASSIVE_INVEST_PCT}} %), sofern kein aktives Mitwirken und kein Know-how-Transfer erfolgt;
|
||||
{{#IF HAS_ACADEMIC_FOUNDER}}c){{/IF}}{{#IF NOT HAS_ACADEMIC_FOUNDER}}b){{/IF}} Nebenbeschäftigungen, die gemäß § 5 (4) zulässig sind und keinen Wettbewerb darstellen.
|
||||
|
||||
(3) **Wettbewerbsverbot nach Ausscheiden (Post-Exit Non-Compete).** Nach dem Ausscheiden eines Gesellschafters gilt ein Wettbewerbsverbot von:
|
||||
a) **{{POST_EXIT_GOOD_MONTHS}} Monaten** für Good- oder Neutral Leaver,
|
||||
b) **{{POST_EXIT_BAD_MONTHS}} Monaten** für Bad Leaver.
|
||||
|
||||
Das Verbot gilt nur soweit rechtlich zulässig (§ 138 BGB, Kartellrecht).
|
||||
|
||||
(4) **Reichweite des Wettbewerbsverbots.** Das Wettbewerbsverbot bezieht sich ausschließlich auf:
|
||||
a) das konkrete Geschäftsmodell der Gesellschaft während der Gesellschafterstellung,
|
||||
b) unmittelbar substituierbare oder konkurrierende Produkte und Dienstleistungen,
|
||||
c) Tätigkeiten, die geeignet sind, die wirtschaftlichen Interessen der Gesellschaft erheblich zu beeinträchtigen.
|
||||
|
||||
Es umfasst nicht jegliche Tätigkeit im allgemeinen Tätigkeitsfeld der Gesellschaft — eine Überdehnung des Begriffes soll ausdrücklich vermieden werden.
|
||||
|
||||
(5) **Schutz von Geschäftsgeheimnissen und IP.** Unabhängig vom Wettbewerbsverbot ist es dem Gesellschafter untersagt:
|
||||
a) Geschäftsgeheimnisse, Daten oder interne Strategien der Gesellschaft für eigene oder fremde Zwecke zu nutzen,
|
||||
b) Unternehmens-IP (§ 6) außerhalb der Gesellschaft einzusetzen,
|
||||
c) technologische, strategische oder wirtschaftliche Informationen an Dritte weiterzugeben.
|
||||
|
||||
Diese Pflichten gelten zeitlich unbegrenzt, soweit rechtlich zulässig.
|
||||
|
||||
(6) **Ausnahmen und Genehmigungen.** Die Gesellschafter können Wettbewerbshandlungen oder Kooperationen, die unter Abs. (1) fallen würden, durch einstimmigen Beschluss genehmigen. Genehmigungen müssen in Textform erfolgen und können mit Bedingungen versehen werden.
|
||||
|
||||
(7) **Sanktionen bei Verstößen.** Bei Verstößen gegen dieses Wettbewerbsverbot:
|
||||
a) ist die Gesellschaft berechtigt, Unterlassung und Schadensersatz zu verlangen,
|
||||
b) kann die Leaver-Klassifizierung gemäß § 9 angepasst werden (insbesondere Bad Leaver),
|
||||
c) können weitere Maßnahmen zur Sicherung der Gesellschaft beschlossen werden.
|
||||
|
||||
(8) **Salvatorische Grenze.** Sollte Teil dieses Wettbewerbsverbotes wegen kartellrechtlicher oder zivilrechtlicher Beschränkungen unwirksam sein, gilt die Regelung im zulässigen Mindestumfang weiter.
|
||||
|
||||
## § {{P_CONFIDENTIAL}} Vertraulichkeit
|
||||
|
||||
(1) **Grundsatz der Vertraulichkeit.** Jeder Gesellschafter verpflichtet sich, alle ihm im Zusammenhang mit der Gesellschaft bekannt werdenden vertraulichen Informationen („Vertrauliche Informationen") streng vertraulich zu behandeln und weder während der Gesellschafterstellung noch nach deren Beendigung an Dritte weiterzugeben oder für andere Zwecke zu nutzen. Vertrauliche Informationen umfassen insbesondere:
|
||||
a) technische, wissenschaftliche und geschäftliche Informationen,
|
||||
b) Software, Daten, Modelle, Quellcode, Algorithmen,
|
||||
c) Finanzinformationen, Geschäftspläne, strategische Dokumente,
|
||||
d) Kunden-, Markt- und Wettbewerbsdaten,
|
||||
e) interne Entscheidungsprozesse und Unterlagen der Gesellschafter oder Geschäftsführung,
|
||||
f) Unternehmens-IP gemäß § 6.
|
||||
|
||||
(2) **Zulässige Offenlegungen.** Keine Verletzung der Vertraulichkeit liegt vor, wenn eine Offenlegung erfolgt:
|
||||
a) aufgrund zwingender gesetzlicher Vorschriften, behördlicher Anordnungen oder gerichtlicher Entscheidungen,
|
||||
b) gegenüber beruflichen Beratern (z. B. Anwälten, Steuerberatern), sofern diese der Verschwiegenheit unterliegen,
|
||||
{{#IF HAS_ACADEMIC_FOUNDER}}c) im Rahmen akademischer Tätigkeiten, sofern dabei
|
||||
- keine Unternehmens-IP (§ 6) genutzt wird,
|
||||
- keine internen Daten, Technologien oder vertraulichen Informationen offenbart werden, und
|
||||
- Veröffentlichungen vorab darauf geprüft werden, dass sie keine Interessen der Gesellschaft beeinträchtigen,
|
||||
d) {{/IF}}gegenüber Investoren im Rahmen üblicher Due-Diligence-Prüfungen, sofern diese zur Vertraulichkeit verpflichtet sind.
|
||||
|
||||
(3) **Schutzmaßnahmen.** Die Gesellschafter verpflichten sich:
|
||||
a) Vertrauliche Informationen vor unbefugtem Zugriff zu schützen,
|
||||
b) technische und organisatorische Maßnahmen anzuwenden,
|
||||
c) nur solchen Personen Zugang zu gewähren, die diesen zur Ausübung ihrer Funktion benötigen.
|
||||
|
||||
(4) **Rückgabepflicht.** Bei Beendigung der Gesellschafterstellung — oder auf Verlangen der Gesellschaft — hat der betreffende Gesellschafter sämtliche vertraulichen Unterlagen, Dokumente, Daten und Datenträger:
|
||||
a) zurückzugeben oder
|
||||
b) dauerhaft zu löschen (einschließlich Kopien und Backups),
|
||||
soweit keine gesetzlichen Aufbewahrungspflichten entgegenstehen.
|
||||
|
||||
(5) **Dauer der Vertraulichkeit.** Die Vertraulichkeitspflichten bestehen zeitlich unbegrenzt über das Ausscheiden eines Gesellschafters hinaus fort, soweit dies rechtlich zulässig ist.
|
||||
|
||||
(6) **Verhältnis zu anderen Regelungen.** Die Bestimmungen dieses Paragraphen gelten ergänzend zu:
|
||||
a) § 6 (Geistiges Eigentum) — IP darf unabhängig von diesem Paragraphen nicht verwendet werden,
|
||||
b) § {{P_NONCOMPETE}} (Wettbewerbsverbot),
|
||||
c) gesetzlichen Geheimhaltungs- und Geschäftsgeheimnisschutzregeln (insb. GeschGehG).
|
||||
|
||||
(7) **Rechtsfolgen bei Verstößen.** Bei Verletzung der Vertraulichkeit ist die Gesellschaft berechtigt:
|
||||
a) Unterlassung zu verlangen,
|
||||
b) Schadensersatz geltend zu machen,
|
||||
c) eine Leaver-Neuklassifizierung gemäß § 9 (insbesondere Bad Leaver) vorzunehmen,
|
||||
d) weitere Schutzmaßnahmen zu ergreifen, die zur Wahrung ihrer Interessen erforderlich sind.
|
||||
|
||||
## § {{P_TERM}} Laufzeit und Kündigung
|
||||
|
||||
(1) **Laufzeit der Vereinbarung.** Diese Vereinbarung tritt mit Unterzeichnung durch alle Gesellschafter in Kraft und gilt für die gesamte Dauer der Gesellschafterstellung der Unterzeichner („Laufzeit").
|
||||
|
||||
(2) **Keine ordentliche Kündigung.** Eine ordentliche Kündigung dieser Vereinbarung ist ausgeschlossen. Gesellschafter können ihre Rechte und Pflichten aus dieser Vereinbarung nur durch Ausscheiden aus der Gesellschaft gemäß gesetzlichen Vorschriften oder gemäß den Bestimmungen dieses SHA (insbesondere §§ 8-12) beenden.
|
||||
|
||||
(3) **Beendigung der Vereinbarung.** Diese Vereinbarung endet automatisch:
|
||||
a) mit dem Ausscheiden des jeweiligen Gesellschafters — für diesen Gesellschafter,
|
||||
b) für alle Gesellschafter, sobald alle Geschäftsanteile der Gesellschaft von einem einzigen Gesellschafter oder Erwerber gehalten werden,
|
||||
c) mit Auflösung oder Liquidation der Gesellschaft,
|
||||
d) im Falle eines Exits, sofern diese Vereinbarung durch eine neue Gesellschaftervereinbarung ersetzt wird.
|
||||
|
||||
Die Beendigung gegenüber einem Gesellschafter lässt die Bestimmungen, die nachwirken sollen (z. B. § 6 IP, § {{P_NONCOMPETE}} Wettbewerb, § {{P_CONFIDENTIAL}} Vertraulichkeit), unberührt.
|
||||
|
||||
(4) **Außerordentliche Kündigung.** Eine außerordentliche Kündigung ist nur ausnahmsweise möglich bei:
|
||||
a) schwerwiegender, nachhaltiger Pflichtverletzung eines Gesellschafters,
|
||||
b) grobem oder vorsätzlichem Verstoß gegen Vertraulichkeit, IP-Rechte oder Wettbewerbsverbot,
|
||||
c) strafbarem Verhalten zulasten der Gesellschaft,
|
||||
d) sonstigen Fällen, in denen der Fortbestand der Vereinbarung für die übrigen Gesellschafter unzumutbar ist.
|
||||
|
||||
Die außerordentliche Kündigung richtet sich ausschließlich gegen den betroffenen Gesellschafter und bewirkt kein Ende der Vereinbarung im Verhältnis der übrigen Gesellschafter. Eine außerordentliche Kündigung ersetzt nicht die Anwendung der Leaver-Regelungen gemäß § 9 — beide Mechanismen können parallel greifen.
|
||||
|
||||
(5) **Änderungen der Vereinbarung.** Änderungen dieser Vereinbarung bedürfen der Schriftform und der Zustimmung aller Gesellschafter, soweit nicht ausdrücklich etwas anderes bestimmt ist. Änderungen, die einzelne Gesellschafter benachteiligen oder die wirtschaftlichen Grundmechanismen dieser Vereinbarung betreffen (insbesondere Vesting, Leaver, Drag-Along, Tag-Along), bedürfen stets der Einstimmigkeit.
|
||||
|
||||
(6) **Fortgeltende Bestimmungen.** Die folgenden Bestimmungen gelten im Innenverhältnis auch nach Beendigung der Vereinbarung fort, soweit rechtlich zulässig:
|
||||
a) § 6 (Geistiges Eigentum),
|
||||
b) § {{P_NONCOMPETE}} (Wettbewerbsverbot) — soweit Post-Exit-Regeln gelten,
|
||||
c) § {{P_CONFIDENTIAL}} (Vertraulichkeit),
|
||||
d) § {{P_FINAL}} (Schlussbestimmungen).
|
||||
|
||||
## § {{P_FINAL}} Schlussbestimmungen
|
||||
|
||||
(1) **Anwendbares Recht.** Diese Vereinbarung unterliegt ausschließlich dem Recht der Bundesrepublik Deutschland.
|
||||
|
||||
(2) **Gerichtsstand.** Für alle Streitigkeiten aus oder im Zusammenhang mit dieser Vereinbarung ist, soweit gesetzlich zulässig, der Sitz der Gesellschaft ausschließlicher Gerichtsstand.
|
||||
|
||||
(3) **Schriftform.** Änderungen und Ergänzungen dieser Vereinbarung bedürfen der Schriftform, sofern nicht gesetzlich eine strengere Form (z. B. notarielle Beurkundung gemäß § 15 GmbHG für Anteilsübertragungen) vorgeschrieben ist. Dies gilt auch für eine Änderung dieses Schriftformerfordernisses.
|
||||
|
||||
(4) **Elektronische Signaturen.** Diese Vereinbarung kann unter Verwendung von qualifizierten elektronischen Signaturen (QES), fortgeschrittenen elektronischen Signaturen (FES) oder im Wege einer mehrseitigen Signaturfassung (PDF-Scans) wirksam abgeschlossen werden, soweit keine notarielle Form erforderlich ist.
|
||||
|
||||
(5) **Vollständigkeitsklausel.** Diese Vereinbarung regelt abschließend das Innenverhältnis der Gesellschafter und ersetzt sämtliche früheren Abreden oder Vereinbarungen, soweit diese denselben Regelungsgegenstand betreffen.
|
||||
|
||||
(6) **Verhältnis zur Satzung.** Soweit Bestimmungen dieser Vereinbarung mit der Satzung der Gesellschaft in Widerspruch stehen, gilt:
|
||||
a) im Innenverhältnis der Gesellschafter untereinander hat diese Vereinbarung Vorrang, soweit rechtlich zulässig;
|
||||
b) im Außenverhältnis gegenüber Dritten gilt ausschließlich die Satzung.
|
||||
|
||||
Die Gesellschafter verpflichten sich, erforderliche Satzungsanpassungen vorzunehmen, sofern dies zur Umsetzung wesentlicher Bestimmungen dieses SHA erforderlich ist.
|
||||
|
||||
(7) **Salvatorische Klausel.** Sollte eine Bestimmung dieser Vereinbarung ganz oder teilweise unwirksam sein oder werden, bleibt die Wirksamkeit der übrigen Bestimmungen unberührt. Die unwirksame Bestimmung gilt als durch eine solche ersetzt, die dem wirtschaftlich gewollten Zweck am nächsten kommt und rechtlich wirksam ist.
|
||||
|
||||
(8) **Sprache.** Diese Vereinbarung ist in deutscher Sprache abgefasst. Bei Mehrsprachigkeit ist ausschließlich die deutsche Fassung maßgeblich.
|
||||
|
||||
(9) **Ausfertigungen.** Diese Vereinbarung kann in mehreren gleichlautenden Exemplaren unterzeichnet werden; jede Ausfertigung gilt als Original, alle zusammen bilden ein Dokument.
|
||||
|
||||
(10) **Compliance.** Die Gesellschafter verpflichten sich zur Einhaltung aller anwendbaren Gesetze und Regelungen, einschließlich Anti-Korruption (z. B. UWG, OECD-Konvention), Geldwäscheprävention (GwG) und Sanktionsregimen (EU/USA).
|
||||
|
||||
---
|
||||
|
||||
## Anlage A — Rollen und Verantwortlichkeiten
|
||||
|
||||
(1) **Allgemeines.** Diese Anlage definiert die interne Rollenverteilung zwischen den Gesellschaftern. Sie dient ausschließlich der organisatorischen Strukturierung und berührt weder:
|
||||
a) die gesetzlichen Aufgaben und Verantwortlichkeiten der Geschäftsführer gemäß GmbHG,
|
||||
b) die gesellschaftsrechtliche Stellung der Gesellschafter,
|
||||
c) Vesting-, Stimm- oder Vermögensrechte.
|
||||
|
||||
Änderungen dieser Anlage können gemäß § 3 (3) jederzeit einvernehmlich beschlossen werden, ohne dass eine notarielle Beurkundung erforderlich ist.
|
||||
|
||||
{{ROLES_DESCRIPTION}}
|
||||
|
||||
({{LAST_ROLE_PARA}}) **Gemeinsame Verantwortlichkeiten.** Unabhängig von der Rollenverteilung arbeiten alle Gesellschafter zusammen bei:
|
||||
a) der strategischen Weiterentwicklung der Gesellschaft,
|
||||
b) der Entscheidungsvorbereitung im Rahmen der Governance-Strukturen (§ 14),
|
||||
c) der Abstimmung über Prioritäten, Ressourcenplanung und Zielsetzungen,
|
||||
d) der Einhaltung gesetzlicher, finanzieller und regulatorischer Anforderungen,
|
||||
e) der Sicherstellung transparenter interner Kommunikation.
|
||||
|
||||
({{LAST_ROLE_PARA_PLUS_1}}) **Anpassungsmechanismus.** Die Rollenverteilung wird mindestens quartalsweise im Rahmen der strategischen Abstimmung gemäß § 14 überprüft und kann im Einvernehmen angepasst werden, insbesondere bei:
|
||||
a) Wachstum der Gesellschaft,
|
||||
b) strukturellen Änderungen in Teams oder Management,
|
||||
c) neuen Geschäftsbereichen,
|
||||
d) erforderlichen Anpassungen im Rahmen von Finanzierungsrunden.
|
||||
|
||||
---
|
||||
|
||||
**Unterzeichnet von den Gesellschaftern am {{SIGNATURE_DATE}}.**
|
||||
|
||||
_{{SIGNATURES_BLOCK}}_
|
||||
$template$,
|
||||
'["COMPANY_NAME","DOCUMENT_VERSION","EFFECTIVE_DATE","HRB_NUMBER","COMPANY_REGISTRY_COURT","PARTIES_LIST","IS_FOUNDER_GROUP","HAS_ACADEMIC_FOUNDER","HAS_BEIRAT","HAS_TEXAS_SHOOTOUT","HAS_GO_GF","HAS_RESEARCH_FOCUS","VESTING_START_EVENT","VESTING_MONTHS","CLIFF_MONTHS","ACCELERATION_THRESHOLD_PCT","ACCELERATION_PCT","BAD_LEAVER_UNVESTED_PCT","FMV_AGREEMENT_DAYS","ABFINDUNG_RATEN_MAX","NON_SOLICIT_MONTHS","VORKAUFSRECHT_TAGE","TAG_ALONG_THRESHOLD_PCT","TAG_ALONG_FRIST_TAGE","DRAG_ALONG_THRESHOLD_PCT","DEADLOCK_FRIST_TAGE","MEDIATION_INIT_TAGE","MEDIATOR_FRIST_TAGE","MEDIATION_MAX_TAGE","SHOOTOUT_FRIST_TAGE","SHOOTOUT_ABWICKLUNG_TAGE","ESKALATION_TAGE","RESERVED_MATTERS_MAJORITY_PCT","ASSET_THRESHOLD_EUR","BUDGET_ABWEICHUNG_PCT","ESOP_POOL_PCT","MEETING_OPERATIVE_FREQ","MEETING_STRATEGIE_FREQ","INVESTOR_INFO_THRESHOLD_EUR","ANNUAL_REPORT_MONTHS","BEIRAT_MAX_MITGLIEDER","BEIRAT_FREQ","PASSIVE_INVEST_PCT","POST_EXIT_GOOD_MONTHS","POST_EXIT_BAD_MONTHS","ROLES_DESCRIPTION","SIGNATURE_DATE","SIGNATURES_BLOCK","P_IP_PARA_6","P_IP_PARA_7","P_IP_PARA_8","P_DEADLOCK_FINAL","P_DEADLOCK_LAST","P_NONCOMPETE","P_CONFIDENTIAL","P_TERM","P_FINAL","LAST_ROLE_PARA","LAST_ROLE_PARA_PLUS_1"]'::jsonb,
|
||||
'de',
|
||||
'DE',
|
||||
NULL,
|
||||
'MIT License',
|
||||
'BreakPilot Compliance',
|
||||
false,
|
||||
true,
|
||||
'1.0.0',
|
||||
'published',
|
||||
NOW(), NOW()
|
||||
;
|
||||
|
||||
-- Verifikation
|
||||
SELECT
|
||||
document_type,
|
||||
title,
|
||||
LENGTH(content) AS content_chars,
|
||||
jsonb_array_length(placeholders) AS num_placeholders,
|
||||
status, version
|
||||
FROM compliance_legal_templates
|
||||
WHERE document_type = 'sha'
|
||||
ORDER BY created_at DESC
|
||||
LIMIT 1;
|
||||
@@ -0,0 +1,469 @@
|
||||
-- Migration 125: Satzung (Gesellschaftsvertrag) Template fuer GmbH/UG
|
||||
-- Erstellt nach 3-fach-Check Methode (Absatz-fuer-Absatz Review, 2026-05-19)
|
||||
-- Skalierbar fuer 1-Mann (UG/GmbH) bis Multi-Founder
|
||||
-- Optionale Bloecke: HAS_SHA, HAS_GO_GF, HAS_ACADEMIC_FOUNDER, HAS_SACHEINLAGE, IS_UG, IS_MULTI_GESELLSCHAFTER
|
||||
-- Fixt Strukturprobleme aus Quelltext (doppelte Nummerierung in § 3, Cross-Refs auf SHA)
|
||||
-- Ergaenzungen: Geschaeftsjahr (§ 1), Erbfall (§ X), Bekanntmachungen, Gruendungskosten-Klausel
|
||||
-- Generalisiert § 2 Gegenstand: Wizard befuellt COMPANY_PURPOSE_DESCRIPTION + COMPANY_PURPOSE_BULLETS
|
||||
|
||||
INSERT INTO compliance_legal_templates (
|
||||
id, tenant_id, document_type, title, description, content,
|
||||
placeholders, language, jurisdiction,
|
||||
license_id, license_name, source_name,
|
||||
attribution_required, is_complete_document, version, status,
|
||||
created_at, updated_at
|
||||
) SELECT
|
||||
gen_random_uuid(),
|
||||
'9282a473-5c95-4b3a-bf78-0ecc0ec71d3e',
|
||||
'articles_of_association',
|
||||
'Satzung (Gesellschaftsvertrag)',
|
||||
'Satzung (Gesellschaftsvertrag) fuer deutsche GmbH oder UG (haftungsbeschraenkt). Enthaelt alle Pflichtangaben (Firma, Sitz, Gegenstand, Stammkapital) gemaess § 3 GmbHG plus operative Bestimmungen: Geschaeftsfuehrung mit Vertretungsregelung, Vesting/Leaver-Verweis ins SHA, Einziehung, Vorkaufsrechte, Tag-Along, Drag-Along, Gesellschafterversammlung, Jahresabschluss, Erbfall, Aufloesung. Skalierbar 1-Mann-Startup bis Multi-Founder. UG-Variante mit Pflichtruecklage § 5a Abs. 3 GmbHG. Wizard-faehig: Gesellschaftszweck wird projektspezifisch befuellt.',
|
||||
$template$
|
||||
# Satzung der {{COMPANY_NAME}}
|
||||
|
||||
---
|
||||
|
||||
## Dokumentenkontrolle
|
||||
|
||||
| Feld | Wert |
|
||||
|---|---|
|
||||
| Dokumenttitel | Gesellschaftsvertrag (Satzung) |
|
||||
| Gesellschaft | {{COMPANY_NAME}} |
|
||||
| Rechtsform | {{COMPANY_LEGAL_FORM}} |
|
||||
| Sitz | {{COMPANY_SEAT}} |
|
||||
| Version | {{DOCUMENT_VERSION}} |
|
||||
| Datum | {{EFFECTIVE_DATE}} |
|
||||
| Beurkundender Notar | {{NOTARY_NAME}} ({{NOTARY_PLACE}}), URNr. {{NOTARY_URNR}} |
|
||||
|
||||
**Hinweis:** Diese Satzung ist gemäß § 2 GmbHG notariell zu beurkunden. Spätere Änderungen bedürfen nach § 53 GmbHG ebenfalls notarieller Beurkundung.
|
||||
|
||||
---
|
||||
|
||||
## § 1 Firma, Sitz, Dauer, Geschäftsjahr
|
||||
|
||||
(1) Die Gesellschaft führt die Firma **{{COMPANY_NAME}}**.
|
||||
|
||||
(2) Sitz der Gesellschaft ist **{{COMPANY_SEAT}}**.
|
||||
|
||||
(3) Die Dauer der Gesellschaft ist unbestimmt. Sie beginnt mit der Eintragung in das Handelsregister.
|
||||
|
||||
(4) Das Geschäftsjahr der Gesellschaft ist {{BUSINESS_YEAR}}. Das erste Geschäftsjahr beginnt mit der Eintragung im Handelsregister und endet am darauffolgenden {{FIRST_YEAR_END}} (Rumpfgeschäftsjahr).
|
||||
|
||||
(5) Bekanntmachungen der Gesellschaft erfolgen, soweit gesetzlich vorgeschrieben, im {{PUBLICATION_VENUE}}.
|
||||
|
||||
## § 2 Gegenstand des Unternehmens
|
||||
|
||||
(1) Gegenstand des Unternehmens ist {{COMPANY_PURPOSE_DESCRIPTION}}.
|
||||
|
||||
Hierzu gehören insbesondere:
|
||||
|
||||
{{COMPANY_PURPOSE_BULLETS}}
|
||||
|
||||
(2) Die Gesellschaft ist berechtigt, alle Geschäfte vorzunehmen und Maßnahmen zu ergreifen, die dem Gesellschaftszweck unmittelbar oder mittelbar zu dienen geeignet sind. Sie darf insbesondere gleichartige oder verwandte Unternehmen gründen, erwerben oder sich daran beteiligen sowie Zweigniederlassungen im In- und Ausland errichten.
|
||||
|
||||
(3) Genehmigungsbedürftige Tätigkeiten werden erst nach Erteilung der erforderlichen behördlichen oder berufsrechtlichen Genehmigungen aufgenommen.
|
||||
|
||||
## § 3 Stammkapital und Stammeinlagen
|
||||
|
||||
### 3.1 Stammkapital
|
||||
|
||||
Das Stammkapital der Gesellschaft beträgt **{{STAMMKAPITAL_EUR}} Euro**.
|
||||
|
||||
### 3.2 Geschäftsanteile
|
||||
|
||||
Das Stammkapital ist in die folgenden Geschäftsanteile eingeteilt:
|
||||
|
||||
{{PARTIES_LIST_WITH_SHARES}}
|
||||
|
||||
Die Geschäftsanteile sind voneinander unabhängig und können einzeln übertragen, belastet oder eingezogen werden{{#IF HAS_SHA}}, insbesondere im Zusammenhang mit Vesting- oder Leaver-Regelungen gemäß §§ 5-7 dieser Satzung und dem Shareholders' Agreement („SHA"){{/IF}}.
|
||||
|
||||
### 3.3 Einlageverpflichtung
|
||||
|
||||
(a) Die Einlagen sind {{EINLAGE_METHOD}} zu leisten.
|
||||
|
||||
(b) **{{EINLAGE_QUOTE_INITIAL_PCT}} %** jeder Stammeinlage sind sofort mit Übernahme des Geschäftsanteils fällig.
|
||||
|
||||
{{#IF EINLAGE_QUOTE_INITIAL_LESS_THAN_100}}
|
||||
(c) Die übrigen {{EINLAGE_QUOTE_REMAINING_PCT}} % sind auf Anforderung der Geschäftsführung zu leisten. Die Anforderung bedarf eines vorherigen Beschlusses der Gesellschafterversammlung.
|
||||
|
||||
(d) Die Geschäftsführer haben die ausstehenden Einlagen unverzüglich einzufordern, soweit dies zur Sicherstellung der Liquidität oder Durchführung des Geschäftsbetriebs erforderlich ist.
|
||||
{{/IF}}
|
||||
|
||||
{{#IF HAS_SACHEINLAGE}}
|
||||
(e) Sacheinlagen werden in einem gesonderten Sachgründungsbericht gemäß § 5 Abs. 4 GmbHG dokumentiert und mit dem im Sachgründungsbericht festgestellten Wert auf die Einlageverpflichtung angerechnet.
|
||||
{{/IF}}
|
||||
|
||||
### 3.4 Verzug und Rechtsfolgen
|
||||
|
||||
(a) Befindet sich ein Gesellschafter mit der Einlage im Verzug, so hat er Verzugszinsen in gesetzlicher Höhe zu leisten.
|
||||
|
||||
(b) Erfolgt die Zahlung trotz schriftlicher Mahnung nicht innerhalb von **{{VERZUGSFRIST_TAGE}} Tagen**, kann:
|
||||
- die Gesellschaft die Einziehung des Geschäftsanteils gemäß § 7 beschließen, oder
|
||||
- der Geschäftsanteil an die übrigen Gesellschafter oder an einen Dritten übertragen werden, sofern diese bereit sind, die ausstehende Einlage zu übernehmen.
|
||||
|
||||
(c) Ein solcher Fall kann{{#IF HAS_SHA}} als Bad-Leaver-Tatbestand gemäß SHA{{/IF}} gewertet werden{{#IF NOT HAS_SHA}}; die übrigen Gesellschafter können weitergehende Ansprüche geltend machen{{/IF}}.
|
||||
|
||||
{{#IF HAS_SHA}}
|
||||
### 3.5 Verhältnis zum SHA
|
||||
|
||||
Ergänzende oder detailliertere Bestimmungen zur Einlageleistung und Kapitalstruktur im Shareholders' Agreement (SHA) gelten im Innenverhältnis zwischen den Gesellschaftern vorrangig.
|
||||
{{/IF}}
|
||||
|
||||
## § 4 Geschäftsführung und Vertretung
|
||||
|
||||
### 4.1 Bestellung der Geschäftsführer
|
||||
|
||||
Die Gesellschaft hat einen oder mehrere Geschäftsführer. Sie werden durch Gesellschafterbeschluss bestellt und abberufen. Einzelheiten ihrer Aufgabenverteilung regelt{{#IF HAS_GO_GF}} eine durch die Gesellschafterversammlung zu beschließende Geschäftsordnung für die Geschäftsführung (GO-GF){{/IF}}{{#IF NOT HAS_GO_GF}} eine durch die Gesellschafterversammlung zu beschließende Geschäftsordnung{{/IF}}.
|
||||
|
||||
### 4.2 Vertretung der Gesellschaft
|
||||
|
||||
(a) Ist nur ein Geschäftsführer bestellt, vertritt dieser die Gesellschaft allein.
|
||||
|
||||
(b) Sind mehrere Geschäftsführer bestellt, vertreten **zwei Geschäftsführer gemeinsam** oder ein Geschäftsführer gemeinsam mit einem Prokuristen.
|
||||
|
||||
(c) Die Gesellschafterversammlung kann einem oder mehreren Geschäftsführern Einzelvertretungsbefugnis und/oder Befreiung von § 181 BGB erteilen.
|
||||
|
||||
### 4.3 Bindung an Gesellschafterbeschlüsse
|
||||
|
||||
(a) Die Geschäftsführer sind an die Beschlüsse der Gesellschafterversammlung gebunden.
|
||||
|
||||
(b) Sie leiten die Gesellschaft nach Maßgabe des GmbHG, dieser Satzung{{#IF HAS_SHA}}, des SHA{{/IF}}{{#IF HAS_GO_GF}} und der GO-GF{{/IF}}.
|
||||
|
||||
(c) Beschränkungen der Vertretungsbefugnis wirken nur im Innenverhältnis.
|
||||
|
||||
### 4.4 Aufgabenverteilung / Funktionstitel
|
||||
|
||||
(a) Die Zuweisung von Ressorts und Funktionstiteln erfolgt durch Gesellschafterbeschluss{{#IF HAS_SHA}} und/oder gemäß Anlage A des SHA{{/IF}}{{#IF HAS_GO_GF}} bzw. der GO-GF{{/IF}}.
|
||||
|
||||
(b) Die Ressortverteilung hat keine Außenwirkung und berührt nicht die gesetzliche Verantwortlichkeit aller Geschäftsführer.
|
||||
|
||||
### 4.5 Zustimmungskatalog (Reserved Matters)
|
||||
|
||||
{{#IF HAS_SHA}}Die Geschäftsführer benötigen für Maßnahmen, die als „Reserved Matters" im SHA definiert sind, einen zustimmenden Gesellschafterbeschluss mit der dort vorgesehenen Mehrheit. Die GO-GF kann ergänzende Kataloge vorsehen.{{/IF}}{{#IF NOT HAS_SHA}}Maßnahmen außerhalb des gewöhnlichen Geschäftsbetriebs sowie solche von erheblicher Bedeutung bedürfen eines zustimmenden Gesellschafterbeschlusses. Die Gesellschafterversammlung kann einen Katalog zustimmungspflichtiger Geschäfte festlegen.{{/IF}}
|
||||
|
||||
### 4.6 Wettbewerbsverbot und Interessenkonflikte
|
||||
|
||||
(a) Geschäftsführer unterliegen während ihrer Amtszeit einem Wettbewerbsverbot{{#IF HAS_SHA}} entsprechend den Regelungen im SHA{{/IF}}.
|
||||
|
||||
(b) Mögliche Interessenkonflikte sind unverzüglich offenzulegen.
|
||||
|
||||
{{#IF HAS_ACADEMIC_FOUNDER}}
|
||||
(c) Akademische Tätigkeiten gelten nicht automatisch als Interessenkonflikt; sie sind nach Maßgabe des SHA zulässig, sofern keine Geschäftsgeheimnisse offengelegt werden oder ein unmittelbarer Wettbewerb entsteht.
|
||||
{{/IF}}
|
||||
|
||||
### 4.7 Berichterstattung und Vergütung
|
||||
|
||||
(a) Die Geschäftsführer berichten der Gesellschafterversammlung regelmäßig über die finanzielle Lage, Geschäftsentwicklung, Produktentwicklung und wesentliche Risiken.
|
||||
|
||||
(b) Die Vergütung wird in den jeweiligen Geschäftsführerdienstverträgen geregelt; diese bedürfen der Zustimmung der Gesellschafterversammlung.
|
||||
|
||||
### 4.8 Abberufung aus wichtigem Grund
|
||||
|
||||
Ein Geschäftsführer kann aus wichtigem Grund abberufen werden, insbesondere bei grober Pflichtverletzung, schwerwiegendem Wettbewerbsverstoß oder Unfähigkeit zur ordnungsgemäßen Geschäftsführung.
|
||||
|
||||
{{#IF HAS_ACADEMIC_FOUNDER}}
|
||||
Eine akademische Tätigkeit ist für sich genommen kein wichtiger Grund.
|
||||
{{/IF}}
|
||||
|
||||
{{#IF HAS_SHA}}
|
||||
## § 5 Founder Vesting
|
||||
|
||||
(1) Die von den Gründern gehaltenen Geschäftsanteile unterliegen einem Vesting. Die Einzelheiten des Vestings — einschließlich Bedingungen, Dauer, Cliff, vesting schedule, Behandlung von unvested Anteilen und Verfahren bei Ausscheiden — ergeben sich aus dem jeweils gültigen Shareholders' Agreement („SHA").
|
||||
|
||||
(2) Die Folgen eines Ausscheidens eines Gesellschafters und dessen Einstufung als Good Leaver, Neutral Leaver oder Bad Leaver richten sich ausschließlich nach den Regelungen des SHA.
|
||||
|
||||
(3) Die Einziehung oder Übertragung von im Rahmen des Vestings oder der Leaver-Regelungen betroffenen Anteilen erfolgt auf Grundlage eines Gesellschafterbeschlusses gemäß den Bestimmungen dieser Satzung und des SHA.
|
||||
|
||||
(4) Soweit die Satzung vesting- oder leaverbezogene Regelungen enthält, gehen im Innenverhältnis der Gesellschafter die Bestimmungen des SHA vor.
|
||||
|
||||
(5) Das Vesting ist im Innenverhältnis nicht von Umfang, Art oder zeitlicher Verfügbarkeit der Tätigkeit eines Gesellschafters abhängig.{{#IF HAS_ACADEMIC_FOUNDER}} Akademische Tätigkeiten, Nebenbeschäftigungen oder veränderte Verfügbarkeiten berühren das Vesting nicht, sofern die Pflichten gemäß SHA eingehalten werden.{{/IF}}
|
||||
|
||||
## § 6 Leaver
|
||||
|
||||
(1) Die Einstufung eines Gesellschafters als Good Leaver, Neutral Leaver oder Bad Leaver sowie die Konsequenzen eines Ausscheidens bestimmen sich ausschließlich nach den Bestimmungen des jeweils gültigen SHA.
|
||||
|
||||
(2) Scheidet ein Gesellschafter als Leaver im Sinne des SHA aus, kann die Gesellschafterversammlung die Einziehung oder die Übertragung der von dem Ausscheidenden gehaltenen Geschäftsanteile beschließen. Einziehungs- oder Übertragungsbeschlüsse erfolgen gemäß den hierfür in der Satzung vorgesehenen Mehrheiten.
|
||||
|
||||
(3) Die Höhe der Abfindung für eingezogene oder zu übertragende Geschäftsanteile richtet sich nach den im SHA festgelegten Regelungen zu:
|
||||
- Fair Market Value,
|
||||
- Abfindungsmechanik für Good / Neutral / Bad Leaver,
|
||||
- Zahlungsmodalitäten.
|
||||
|
||||
Diese Regelungen gelten im Innenverhältnis zwischen den Gesellschaftern und sind bei Einziehungsbeschlüssen entsprechend zu beachten.
|
||||
|
||||
(4) Die Satzung enthält keine eigenständigen Leaver-Tatbestände. Insbesondere gilt:
|
||||
(a) Eine Veränderung der Arbeitszeit, Verfügbarkeit oder Nebenbeschäftigungen{{#IF HAS_ACADEMIC_FOUNDER}} (einschließlich akademischer Tätigkeiten){{/IF}} begründet keinen Leaver-Tatbestand.
|
||||
{{#IF HAS_ACADEMIC_FOUNDER}}
|
||||
(b) Eine Professur oder sonstige berufliche akademische Tätigkeit gilt nicht als Pflichtverletzung und ist kein Grund für eine Bad-Leaver-Einstufung.
|
||||
{{/IF}}
|
||||
(c) Nur das SHA ist maßgeblich für Leaver-Tatbestände.
|
||||
|
||||
(5) Soweit die Satzung Regelungen enthält, die Leaver-Fälle oder deren Folgen betreffen, gelten im Innenverhältnis der Gesellschafter ausschließlich die Bestimmungen des SHA. Die Satzung dient nur der Umsetzung der durch das SHA ausgelösten Maßnahmen.
|
||||
|
||||
(6) Einziehungs- und Übertragungsbeschlüsse wirken im Außenverhältnis nach Maßgabe der §§ 34-35 GmbHG. Der interne Rechtsgrund ergibt sich aus dem SHA.
|
||||
{{/IF}}
|
||||
|
||||
## § {{P_EINZIEHUNG}} Einziehung von Geschäftsanteilen
|
||||
|
||||
(1) Die Gesellschafterversammlung kann die Einziehung von Geschäftsanteilen eines Gesellschafters beschließen, wenn:
|
||||
(a) {{#IF HAS_SHA}}dies nach den Regelungen des SHA vorgesehen ist (insbesondere im Zusammenhang mit Vesting- oder Leaver-Fällen), oder{{/IF}}
|
||||
(b) die gesetzlichen Voraussetzungen für eine Einziehung (§ 34 GmbHG) vorliegen,
|
||||
(c) der betroffene Gesellschafter mit der Einlage in Verzug ist (§ 3.4),
|
||||
(d) der Geschäftsanteil gepfändet wird und die Pfändung nicht binnen drei Monaten aufgehoben wird,
|
||||
(e) über das Vermögen eines Gesellschafters das Insolvenzverfahren eröffnet oder die Eröffnung mangels Masse abgelehnt wird.
|
||||
|
||||
(2) Einziehungsbeschlüsse erfolgen mit **{{EINZIEHUNG_MEHRHEIT_PCT}} %** der abgegebenen Stimmen, soweit nicht gesetzlich eine höhere Mehrheit zwingend vorgeschrieben ist. Der betroffene Gesellschafter ist nicht stimmberechtigt. Die Einziehung wird mit Beschlussfassung wirksam, sofern nicht ausdrücklich ein späterer Zeitpunkt bestimmt wird.
|
||||
|
||||
(3) Die Abfindung für eingezogene Geschäftsanteile richtet sich {{#IF HAS_SHA}}im Innenverhältnis ausschließlich nach den Bestimmungen des SHA, insbesondere:
|
||||
- den Leaver-Regelungen,
|
||||
- den Vesting-Regelungen,
|
||||
- der Bestimmung des Fair Market Value und
|
||||
- den dort festgelegten Zahlungsmodalitäten.
|
||||
|
||||
Die Satzung enthält keine eigenständigen Bewertungs- oder Abfindungsregeln.{{/IF}}{{#IF NOT HAS_SHA}}nach dem Verkehrswert (Fair Market Value), zu ermitteln durch einen einvernehmlich bestellten Wirtschaftsprüfer oder bei Nicht-Einigung durch einen von der IHK bestellten Sachverständigen. Bei Einziehung aufgrund Pflichtverletzung kann eine angemessene Reduktion erfolgen.{{/IF}}
|
||||
|
||||
(4) Anstelle der Einziehung kann die Gesellschafterversammlung beschließen, dass der betroffene Gesellschafter seine Geschäftsanteile an die Gesellschaft, an die übrigen Gesellschafter oder an einen Dritten zu übertragen hat{{#IF HAS_SHA}} — entsprechend den Bestimmungen des SHA{{/IF}}.
|
||||
|
||||
{{#IF HAS_SHA}}
|
||||
(5) Im Innenverhältnis zwischen den Gesellschaftern sind bei Einziehung und Übertragung von Geschäftsanteilen ausschließlich die Regelungen des SHA maßgeblich. Diese Satzungsbestimmung dient lediglich der Umsetzung und Ausführung der im SHA vorgesehenen Maßnahmen.
|
||||
{{/IF}}
|
||||
|
||||
(6) Die Einziehung und deren Rechtsfolgen wirken gegenüber Dritten gemäß den Bestimmungen des GmbHG und werden mit Eintragung der Änderung in die Gesellschafterliste rechtswirksam.
|
||||
|
||||
{{#IF IS_MULTI_GESELLSCHAFTER}}
|
||||
## § {{P_VORKAUF}} Vorkaufsrechte
|
||||
|
||||
(1) Beabsichtigt ein Gesellschafter („Veräußernder Gesellschafter") die Übertragung eines oder mehrerer Geschäftsanteile an einen Dritten, stehen den übrigen Gesellschaftern („Vorkaufsberechtigte") Vorkaufsrechte zu den Bedingungen dieses Paragraphen zu.{{#IF HAS_SHA}} Die Einzelheiten des Vorkaufsverfahrens richten sich ergänzend nach den Bestimmungen des SHA.{{/IF}}
|
||||
|
||||
(2) Der Veräußernde Gesellschafter hat den übrigen Gesellschaftern den beabsichtigten Verkauf in Textform anzuzeigen und dabei anzugeben:
|
||||
(a) den vorgesehenen Erwerber,
|
||||
(b) den Kaufpreis oder die sonstige Gegenleistung,
|
||||
(c) die wesentlichen Bedingungen der Übertragung.
|
||||
|
||||
Die Anzeige löst das Vorkaufsverfahren aus.
|
||||
|
||||
(3) Die Vorkaufsberechtigten können ihr Vorkaufsrecht innerhalb von **{{VORKAUFSRECHT_TAGE}} Tagen** ab Zugang der Anzeige ausüben.{{#IF HAS_SHA}} Soweit das SHA eine abweichende Frist vorsieht, gilt diese vorrangig.{{/IF}}
|
||||
|
||||
(4) Üben mehrere Gesellschafter das Vorkaufsrecht aus, werden die angebotenen Geschäftsanteile im Verhältnis ihrer bisherigen Beteiligungsquoten zugeteilt, sofern die Gesellschafter nicht einvernehmlich etwas anderes beschließen.
|
||||
|
||||
(5) Werden die Vorkaufsrechte nicht oder nicht vollständig ausgeübt, darf der Veräußernde Gesellschafter seine Geschäftsanteile zu den angezeigten Bedingungen an den vorgesehenen Erwerber übertragen. Ändern sich die Bedingungen, ist das Vorkaufsverfahren erneut durchzuführen.
|
||||
|
||||
(6) Das Vorkaufsrecht gilt nicht, wenn die Übertragung:
|
||||
(a) im Rahmen eines Tag-Along{{#IF HAS_SHA}} gemäß SHA{{/IF}} erfolgt,
|
||||
(b) im Rahmen eines Drag-Along{{#IF HAS_SHA}} gemäß SHA{{/IF}} erfolgt,
|
||||
(c) {{#IF HAS_SHA}}im Rahmen der Leaver-Regelungen gemäß SHA{{/IF}}{{#IF NOT HAS_SHA}}aufgrund Einziehung gemäß § 7{{/IF}} umgesetzt wird.
|
||||
|
||||
{{#IF HAS_SHA}}
|
||||
(7) Für Ablauf, Fristen, Mechanik, Informationspflichten und die Zuordnung von Anteilen sind im Innenverhältnis ausschließlich die Bestimmungen des SHA maßgeblich. Diese Satzungsregelung dient der Umsetzung im Außenverhältnis.
|
||||
{{/IF}}
|
||||
|
||||
## § {{P_TAGALONG}} Mitverkaufsrechte (Tag-Along)
|
||||
|
||||
(1) Beabsichtigt ein Gesellschafter („Veräußernder Gesellschafter"), Geschäftsanteile an einen Dritten zu übertragen, können die übrigen Gesellschafter im Innenverhältnis{{#IF HAS_SHA}} nach Maßgabe des SHA{{/IF}} verlangen, dass der Dritte ihre Geschäftsanteile zu gleichen Bedingungen mit erwirbt („Tag-Along-Recht").
|
||||
|
||||
(2) Ein Gesellschafter, der einen Verkauf beabsichtigt, hat der Gesellschafterversammlung den Verkauf in Textform anzuzeigen. Die Anzeige dient der Umsetzung der{{#IF HAS_SHA}} im SHA vorgesehenen{{/IF}} Tag-Along-Rechte.
|
||||
|
||||
(3) Der Veräußernde Gesellschafter ist verpflichtet, im Außenverhältnis sicherzustellen, dass der Erwerber die vom Tag-Along erfassten Geschäftsanteile der übrigen Gesellschafter mit erwirbt, sofern diese ihre Rechte{{#IF HAS_SHA}} nach dem SHA{{/IF}} fristgerecht ausüben.
|
||||
|
||||
(4) Das Vorkaufsrecht gemäß § {{P_VORKAUF}} dieser Satzung findet keine Anwendung, wenn ein Tag-Along ausgelöst wurde.
|
||||
|
||||
{{#IF HAS_SHA}}
|
||||
(5) Ablauf, Fristen, Quoten, Gleichbehandlungsgrundsatz („Same Terms"), anzubietende Beteiligungsumfänge sowie sämtliche Modalitäten des Tag-Along ergeben sich ausschließlich aus dem SHA. Die Satzung regelt lediglich die zur Umsetzung erforderlichen externen Schritte.
|
||||
{{/IF}}
|
||||
|
||||
(6) Die Übertragung der Geschäftsanteile erfolgt nach Maßgabe des GmbHG und wird mit notarieller Beurkundung und Eintragung in die Gesellschafterliste wirksam.
|
||||
|
||||
## § {{P_DRAGALONG}} Mitziehpflichten (Drag-Along)
|
||||
|
||||
(1) Werden die{{#IF HAS_SHA}} im SHA{{/IF}} geregelten Voraussetzungen für eine Mitziehpflicht („Drag-Along") erfüllt, sind die Gesellschafter verpflichtet, ihre Geschäftsanteile ganz oder teilweise zu den dort bestimmten Bedingungen an einen Dritten zu übertragen.
|
||||
|
||||
(2) Ein Gesellschafter, der eine Drag-Along-Transaktion veranlasst oder initiiert, hat die übrigen Gesellschafter hierüber in Textform zu informieren und alle zur Umsetzung des Drag-Along im Außenverhältnis notwendigen Erklärungen abzugeben. Die Gesellschafterversammlung kann zur Umsetzung der Drag-Along-Verpflichtungen sämtliche erforderlichen Beschlüsse fassen, einschließlich solcher zur Einziehung, Übertragung oder Neustrukturierung von Geschäftsanteilen.
|
||||
|
||||
(3) Im Falle eines Drag-Along{{#IF HAS_SHA}} gemäß den Bestimmungen des SHA{{/IF}}:
|
||||
(a) finden die Vorkaufsrechte gemäß § {{P_VORKAUF}} dieser Satzung keine Anwendung,
|
||||
(b) finden die Mitverkaufsrechte gemäß § {{P_TAGALONG}} dieser Satzung keine Anwendung.
|
||||
|
||||
{{#IF HAS_SHA}}
|
||||
(4) Art, Umfang, Schwellenwerte (z. B. erforderliche Mehrheit), Bedingungen, Preis, Garantiestruktur, Fristen und sämtliche weiteren Modalitäten des Drag-Along bestimmen sich ausschließlich nach den Regelungen des SHA. Diese Satzungsregelung dient ausschließlich der gesellschaftsrechtlichen Umsetzung nach außen.
|
||||
{{/IF}}
|
||||
|
||||
(5) Die Übertragung der Geschäftsanteile wird gegenüber der Gesellschaft und Dritten erst mit notarieller Beurkundung und Eintragung in die Gesellschafterliste wirksam (§ 15 GmbHG, § 40 GmbHG).
|
||||
{{/IF}}
|
||||
|
||||
## § {{P_VERSAMMLUNG}} Gesellschafterversammlung
|
||||
|
||||
(1) Die Gesellschafterversammlung wird durch die Geschäftsführer gemäß den gesetzlichen Vorgaben (§ 51 GmbHG) einberufen. Die Einberufung erfolgt in Textform unter Angabe der Tagesordnung mit einer Frist von mindestens **{{EINBERUFUNGSFRIST_TAGE}} Tagen**, soweit nicht zwingend gesetzlich eine andere Frist vorgeschrieben ist.
|
||||
|
||||
(2) Die Gesellschafterversammlung kann stattfinden:
|
||||
(a) als Präsenzversammlung,
|
||||
(b) als Video- oder Telefonkonferenz,
|
||||
(c) in hybrider Form,
|
||||
(d) oder im schriftlichen Verfahren, sofern kein Gesellschafter widerspricht.
|
||||
|
||||
(3) Beschlüsse der Gesellschafter werden mit einfacher Mehrheit der abgegebenen Stimmen gefasst, soweit nicht:
|
||||
(a) gesetzlich eine qualifizierte Mehrheit vorgeschrieben ist (z. B. Satzungsänderungen, Kapitalmaßnahmen), oder
|
||||
(b) {{#IF HAS_SHA}}im SHA für bestimmte Angelegenheiten (Reserved Matters) eine höhere Mehrheit vorgesehen ist,{{/IF}}
|
||||
(c) diese Satzung eine abweichende Mehrheit vorsieht.
|
||||
|
||||
(4) Jeder Gesellschafter hat je **{{VOTING_UNIT_EUR}} Euro** seines Geschäftsanteils eine Stimme, soweit das Gesetz nichts anderes bestimmt.
|
||||
|
||||
(5) Die Gesellschafterversammlung wird durch einen von den anwesenden Gesellschaftern gewählten Vorsitzenden geleitet. Der Vorsitzende bestimmt die Reihenfolge der Tagesordnungspunkte und die Art der Abstimmung.
|
||||
|
||||
(6) Über die Beschlüsse der Gesellschafterversammlung ist ein Protokoll anzufertigen, das vom Vorsitzenden und einem Geschäftsführer zu unterzeichnen ist. Bei schriftlichen Beschlüssen genügt die Dokumentation des Beschlusstextes.
|
||||
|
||||
{{#IF HAS_SHA}}
|
||||
(7) Das SHA regelt im Innenverhältnis der Gesellschafter insbesondere:
|
||||
- Reserved Matters (zustimmungspflichtige Angelegenheiten),
|
||||
- Schwellenwerte und Quoren,
|
||||
- Governance- und Informationsprozesse.
|
||||
|
||||
Diese Bestimmungen gelten im Innenverhältnis vorrangig vor der Satzung, soweit rechtlich zulässig. Die Satzung regelt ausschließlich die gesetzlich erforderlichen Rahmenbedingungen.
|
||||
{{/IF}}
|
||||
|
||||
## § {{P_JA}} Jahresabschluss
|
||||
|
||||
(1) Der Jahresabschluss (Bilanz, Gewinn- und Verlustrechnung{{#IF HAS_LAGEBERICHT}} sowie Lagebericht{{/IF}}{{#IF NOT HAS_LAGEBERICHT}} und Anhang{{/IF}}) wird von den Geschäftsführern nach Maßgabe der gesetzlichen Vorschriften (§§ 242 ff., 264 ff. HGB) aufgestellt.
|
||||
|
||||
(2) Der Jahresabschluss ist innerhalb der gesetzlichen Frist (für kleine Gesellschaften: 6 Monate; für mittelgroße/große: 3 Monate) nach Ende des Geschäftsjahres aufzustellen.
|
||||
|
||||
(3) Der Jahresabschluss ist den Gesellschaftern unverzüglich nach Fertigstellung zur Einsichtnahme vorzulegen.
|
||||
|
||||
(4) Die Feststellung des Jahresabschlusses erfolgt durch Gesellschafterbeschluss.
|
||||
|
||||
(5) Gesetzliche Offenlegungspflichten (Bundesanzeiger, § 325 HGB) bleiben unberührt.
|
||||
|
||||
## § {{P_ERGEBNIS}} Verwendung des Ergebnisses
|
||||
|
||||
(1) Über die Verwendung des sich aus dem festgestellten Jahresabschluss ergebenden Ergebnisses beschließt die Gesellschafterversammlung gemäß den gesetzlichen Vorschriften (§ 29 GmbHG).
|
||||
|
||||
(2) Die Gesellschafterversammlung kann insbesondere beschließen:
|
||||
(a) die Ausschüttung eines Gewinns,
|
||||
(b) die Einstellung in Gewinnrücklagen,
|
||||
(c) den Vortrag des Gewinns auf neue Rechnung.
|
||||
|
||||
(3) Die Ausschüttung an die Gesellschafter erfolgt im Verhältnis ihrer Geschäftsanteile, sofern die Gesellschafterversammlung nicht auf Grundlage gesetzlicher Vorgaben oder einstimmiger Zustimmung der Gesellschafter etwas anderes beschließt.
|
||||
|
||||
{{#IF IS_UG}}
|
||||
(4) Solange die Gesellschaft als Unternehmergesellschaft (haftungsbeschränkt) firmiert, ist die gesetzlich vorgeschriebene Rücklage gemäß § 5a Abs. 3 GmbHG (ein Viertel des um den Verlustvortrag aus dem Vorjahr geminderten Jahresüberschusses) zu bilden. Die Rücklage kann erst aufgelöst werden, wenn das Stammkapital auf mindestens 25.000 EUR erhöht und die Gesellschaft in eine GmbH umgewandelt wird.
|
||||
{{/IF}}
|
||||
|
||||
{{#IF IS_MULTI_GESELLSCHAFTER}}
|
||||
## § {{P_AUFGRIFF}} Aufgriffsrechte bei Beendigung der Geschäftsführerstellung
|
||||
|
||||
(1) Die Abberufung eines Gesellschafter-Geschäftsführers oder die Beendigung seines Geschäftsführerdienstvertrags führt nicht automatisch zur Einziehung oder Übertragung seiner Geschäftsanteile.
|
||||
|
||||
(2) {{#IF HAS_SHA}}Soweit die Beendigung der Geschäftsführerstellung nach den Bestimmungen des SHA einen Vesting- oder Leaver-Tatbestand auslöst, können Einziehungs- oder Übertragungsbeschlüsse ausschließlich gemäß den Regelungen des SHA gefasst werden.{{/IF}}
|
||||
|
||||
(3) Ein Beschluss über:
|
||||
(a) die Einziehung von Geschäftsanteilen oder
|
||||
(b) die Verpflichtung des betroffenen Gesellschafters zur Übertragung seiner Geschäftsanteile
|
||||
|
||||
kann nur gefasst werden, wenn und soweit dies{{#IF HAS_SHA}} im SHA vorgesehen ist{{/IF}}{{#IF NOT HAS_SHA}} eine ausdrückliche gesellschaftsvertragliche Grundlage hat{{/IF}}. Die Durchführung richtet sich nach den Bestimmungen dieser Satzung und den §§ 34-35 GmbHG.
|
||||
|
||||
(4) {{#IF HAS_SHA}}Diese Satzung begründet kein eigenes Aufgriffsrecht. Die Ausgestaltung, Trigger und wirtschaftlichen Bedingungen eines Aufgriffs richten sich ausschließlich nach den Regelungen des SHA.{{/IF}}{{#IF NOT HAS_SHA}}Aufgriffsrechte bestehen nur, soweit gesetzlich vorgesehen.{{/IF}}
|
||||
|
||||
{{#IF HAS_ACADEMIC_FOUNDER}}
|
||||
(5) Die Beendigung der Geschäftsführerstellung aus Gründen, die auf:
|
||||
- einer Professur,
|
||||
- sonstigen beruflichen Tätigkeiten,
|
||||
- Änderungen der Verfügbarkeit,
|
||||
- oder anderen Nebenbeschäftigungen
|
||||
|
||||
beruhen, stellt keinen eigenständigen Grund für ein Aufgriffsrecht dar und begründet insbesondere keine Bad-Leaver-Konsequenzen, sofern die Bestimmungen des SHA eingehalten werden.
|
||||
{{/IF}}
|
||||
|
||||
(6) {{#IF HAS_SHA}}Im Innenverhältnis sind ausschließlich die Regelungen des SHA maßgeblich. Diese Satzungsregelung dient der gesellschaftsrechtlichen Umsetzung der dort vereinbarten Mechaniken.{{/IF}}
|
||||
|
||||
## § {{P_ABTRETUNG}} Abtretungsbeschränkungen
|
||||
|
||||
(1) Die Abtretung oder Verpfändung von Geschäftsanteilen oder Teilen davon bedarf, soweit nicht gesetzlich etwas anderes bestimmt ist, der Zustimmung der Gesellschafterversammlung.
|
||||
|
||||
(2) Die Zustimmung ist zu erteilen, wenn und soweit die Übertragung:
|
||||
(a) {{#IF HAS_SHA}}nach den Bestimmungen des SHA zulässig oder vorgeschrieben ist, insbesondere im Zusammenhang mit Vorkaufsrechten, Mitverkaufsrechten (Tag-Along), Mitziehpflichten (Drag-Along), Leaver-Regelungen, Vesting-Regelungen oder Einziehung/Übertragung gemäß den vorstehenden Paragraphen dieser Satzung;{{/IF}}
|
||||
(b) {{#IF HAS_SHA}}oder wenn der Erwerber nach Maßgabe des SHA zur Aufnahme in den Gesellschafterkreis berechtigt ist.{{/IF}}{{#IF NOT HAS_SHA}}im Einklang mit dem Gesellschaftsinteresse erfolgt und der Erwerber die für die Mitgliedschaft erforderlichen Voraussetzungen erfüllt.{{/IF}}
|
||||
|
||||
(3) Die Zustimmung kann nur aus wichtigem Grund verweigert werden, insbesondere wenn:
|
||||
(a) {{#IF HAS_SHA}}der Erwerber offensichtlich nicht die Voraussetzungen gemäß SHA erfüllt,
|
||||
(b) die Übertragung gegen die Regelungen des SHA verstößt,
|
||||
(c) {{/IF}}die Einhaltung gesetzlicher Vorschriften nicht gewährleistet ist,
|
||||
(d) der Erwerber ein Wettbewerber der Gesellschaft ist (sofern nicht die Gesellschafterversammlung einstimmig zustimmt).
|
||||
|
||||
(4) Die Abtretung bedarf der notariellen Beurkundung (§ 15 GmbHG). Sie wird gegenüber der Gesellschaft erst mit Zugang der Abtretungsurkunde und Eintragung der Änderung in die Gesellschafterliste wirksam.
|
||||
|
||||
{{#IF HAS_SHA}}
|
||||
(5) Diese Satzungsregelung begründet keine eigenständigen Übertragungsrechte oder -pflichten. Im Innenverhältnis richten sich sämtliche Übertragungen ausschließlich nach den Bestimmungen des SHA.
|
||||
{{/IF}}
|
||||
|
||||
(6) Eine ohne Zustimmung vorgenommene Übertragung ist im Innenverhältnis unwirksam.{{#IF HAS_SHA}} Die übrigen Gesellschafter können in diesem Fall Maßnahmen gemäß SHA (inkl. Aufgriffs-, Einziehungs- oder Abtretungsmechanismen) verlangen.{{/IF}}
|
||||
{{/IF}}
|
||||
|
||||
## § {{P_ERBE}} Erbfall
|
||||
|
||||
(1) Beim Tod eines Gesellschafters geht der Geschäftsanteil auf die Erben gemäß den gesetzlichen Vorschriften über. Mehrere Erben können das Stimmrecht und Einsichtsrechte nur einheitlich durch einen Bevollmächtigten ausüben.
|
||||
|
||||
(2) Innerhalb von **{{ERBFALL_AUFGRIFFSFRIST_MONATE}} Monaten** nach Kenntnis vom Erbfall kann die Gesellschafterversammlung mit **{{ERBFALL_MEHRHEIT_PCT}} %** der abgegebenen Stimmen (der Erben-Geschäftsanteil zählt nicht mit) beschließen, dass der ererbte Geschäftsanteil:
|
||||
(a) eingezogen wird, oder
|
||||
(b) auf die übrigen Gesellschafter, die Gesellschaft oder einen Dritten gegen Abfindung übertragen wird.
|
||||
|
||||
(3) Die Abfindung richtet sich {{#IF HAS_SHA}}nach den Good-Leaver-Bestimmungen des SHA{{/IF}}{{#IF NOT HAS_SHA}}nach dem Verkehrswert (Fair Market Value){{/IF}}, sofern nicht die Erben fristgerecht ihre vollständige Aufnahme als Gesellschafter unter Anerkennung dieser Satzung{{#IF HAS_SHA}} und des SHA{{/IF}} erklären.
|
||||
|
||||
(4) Bis zur Beschlussfassung über die Einziehung/Übertragung ruhen die Stimmrechte des ererbten Anteils.
|
||||
|
||||
## § {{P_AUFL}} Auflösung und Liquidation der Gesellschaft
|
||||
|
||||
(1) Die Gesellschaft kann durch Gesellschafterbeschluss aufgelöst werden. Soweit nicht gesetzlich zwingend eine andere Mehrheit vorgeschrieben ist, bedarf der Auflösungsbeschluss einer Mehrheit von **{{AUFLOESUNG_MEHRHEIT_PCT}} %** der abgegebenen Stimmen.
|
||||
|
||||
(2) Im Übrigen richtet sich die Auflösung nach den gesetzlichen Vorschriften (§ 60 GmbHG).
|
||||
|
||||
(3) Die Liquidation erfolgt durch die Geschäftsführer, sofern die Gesellschafterversammlung keine anderen Personen zu Liquidatoren bestellt.
|
||||
|
||||
(4) Für die Liquidation gelten die gesetzlichen Vorschriften (§§ 61-74 GmbHG).
|
||||
|
||||
(5) Das nach Abwicklung verbleibende Vermögen wird nach Tilgung der Verbindlichkeiten an die Gesellschafter im Verhältnis ihrer Geschäftsanteile verteilt, soweit nicht{{#IF HAS_SHA}} im SHA{{/IF}} eine abweichende Verteilung (z. B. Liquidation Preference) vereinbart wurde.
|
||||
|
||||
## § {{P_SCHLUSS}} Schlussbestimmungen
|
||||
|
||||
(1) **Form der Gesellschafterbeschlüsse.** Beschlüsse der Gesellschafterversammlung sind schriftlich niederzulegen. Schriftliche und elektronische Umlaufbeschlüsse sind zulässig, sofern kein Gesellschafter dem Verfahren widerspricht und keine gesetzliche strengere Form (insbesondere notarielle Beurkundung) vorgeschrieben ist.
|
||||
|
||||
(2) **Satzungsänderungen.** Änderungen dieser Satzung sowie Maßnahmen, für die das Gesetz eine qualifizierte Mehrheit oder notarielle Beurkundung vorsieht, bedürfen eines entsprechenden Gesellschafterbeschlusses (mindestens 3/4 der abgegebenen Stimmen, § 53 GmbHG) und der notariellen Beurkundung.
|
||||
|
||||
(3) **Salvatorische Klausel.** Sollte eine Bestimmung dieser Satzung unwirksam oder undurchführbar sein oder werden, bleibt die Wirksamkeit der übrigen Bestimmungen unberührt. Die unwirksame Bestimmung ist durch eine solche zu ersetzen, die dem wirtschaftlichen Zweck der unwirksamen Bestimmung in rechtlich zulässiger Weise am nächsten kommt.
|
||||
|
||||
(4) **Vorrang gesetzlicher Vorschriften.** Zwingende gesetzliche Bestimmungen des GmbHG bleiben unberührt und gehen im Zweifel den Regelungen dieser Satzung vor.
|
||||
|
||||
(5) **Gesellschafterliste.** Die Geschäftsführer haben jede Veränderung im Gesellschafterbestand unverzüglich zur Eintragung in die Gesellschafterliste beim Handelsregister zu veranlassen (§ 40 GmbHG).
|
||||
|
||||
(6) **Gründungskosten.** Die Gesellschaft trägt die mit ihrer Gründung verbundenen Kosten (Notar, Handelsregister, Veröffentlichung) bis zu einem Höchstbetrag von **{{GRUENDUNGSKOSTEN_MAX_EUR}} EUR**. Übersteigende Kosten tragen die Gesellschafter im Verhältnis ihrer Geschäftsanteile.
|
||||
|
||||
(7) **Sprache.** Diese Satzung ist in deutscher Sprache abgefasst. Bei Mehrsprachigkeit ist ausschließlich die deutsche Fassung maßgeblich.
|
||||
|
||||
---
|
||||
|
||||
**Notariell beurkundet am {{NOTARIAL_DATE}} durch {{NOTARY_NAME}} in {{NOTARY_PLACE}} (URNr. {{NOTARY_URNR}}).**
|
||||
|
||||
_{{SIGNATURES_BLOCK}}_
|
||||
$template$,
|
||||
'["COMPANY_NAME","COMPANY_LEGAL_FORM","COMPANY_SEAT","DOCUMENT_VERSION","EFFECTIVE_DATE","NOTARY_NAME","NOTARY_PLACE","NOTARY_URNR","NOTARIAL_DATE","BUSINESS_YEAR","FIRST_YEAR_END","PUBLICATION_VENUE","COMPANY_PURPOSE_DESCRIPTION","COMPANY_PURPOSE_BULLETS","STAMMKAPITAL_EUR","PARTIES_LIST_WITH_SHARES","HAS_SHA","HAS_GO_GF","HAS_ACADEMIC_FOUNDER","HAS_SACHEINLAGE","IS_UG","IS_MULTI_GESELLSCHAFTER","HAS_LAGEBERICHT","EINLAGE_METHOD","EINLAGE_QUOTE_INITIAL_PCT","EINLAGE_QUOTE_INITIAL_LESS_THAN_100","EINLAGE_QUOTE_REMAINING_PCT","VERZUGSFRIST_TAGE","EINZIEHUNG_MEHRHEIT_PCT","VORKAUFSRECHT_TAGE","EINBERUFUNGSFRIST_TAGE","VOTING_UNIT_EUR","ERBFALL_AUFGRIFFSFRIST_MONATE","ERBFALL_MEHRHEIT_PCT","AUFLOESUNG_MEHRHEIT_PCT","GRUENDUNGSKOSTEN_MAX_EUR","SIGNATURES_BLOCK","P_EINZIEHUNG","P_VORKAUF","P_TAGALONG","P_DRAGALONG","P_VERSAMMLUNG","P_JA","P_ERGEBNIS","P_AUFGRIFF","P_ABTRETUNG","P_ERBE","P_AUFL","P_SCHLUSS"]'::jsonb,
|
||||
'de',
|
||||
'DE',
|
||||
NULL,
|
||||
'MIT License',
|
||||
'BreakPilot Compliance',
|
||||
false,
|
||||
true,
|
||||
'1.0.0',
|
||||
'published',
|
||||
NOW(), NOW()
|
||||
;
|
||||
|
||||
-- Verifikation
|
||||
SELECT
|
||||
document_type,
|
||||
title,
|
||||
LENGTH(content) AS content_chars,
|
||||
jsonb_array_length(placeholders) AS num_placeholders,
|
||||
status, version
|
||||
FROM compliance_legal_templates
|
||||
WHERE document_type = 'articles_of_association'
|
||||
ORDER BY created_at DESC
|
||||
LIMIT 1;
|
||||
@@ -0,0 +1,265 @@
|
||||
-- Migration 126: Geschaeftsfuehrerdienstvertrag (GF-Dienstvertrag) Template
|
||||
-- Erstellt nach 3-fach-Check Methode (Absatz-fuer-Absatz Review, 2026-05-19)
|
||||
-- Verhaeltnis: Trennungsprinzip Organstellung vs. Anstellungsvertrag (mit optionaler Kopplung)
|
||||
-- Optionale Bloecke: HAS_SHA, HAS_GO_GF, HAS_ACADEMIC_FOUNDER, HAS_RESEARCH_FOCUS, HAS_BONUS,
|
||||
-- HAS_TANTIEME, HAS_COMPANY_CAR, HAS_BAV, HAS_HINTERBLIEBENEN_VERSORGUNG, IS_MULTI_GF,
|
||||
-- HAS_PARA_181_RELEASE, HAS_KOPPLUNG_BESTELLUNG_VERTRAG, HAS_NONCOMPETE_COMPENSATION
|
||||
-- Ergaenzungen ggue. Quelltext: Sozialversicherungsstatus (§ 7a SGB IV), Lohnfortzahlung,
|
||||
-- Hinterbliebenenversorgung, Post-Exit-Wettbewerbsverbot mit Karenzentschaedigung (§ 74 HGB),
|
||||
-- D&O mit Mindest-Deckungssumme, Business Judgment Rule, InsO § 15a-Hinweis, GeschGehG § 17
|
||||
|
||||
INSERT INTO compliance_legal_templates (
|
||||
id, tenant_id, document_type, title, description, content,
|
||||
placeholders, language, jurisdiction,
|
||||
license_id, license_name, source_name,
|
||||
attribution_required, is_complete_document, version, status,
|
||||
created_at, updated_at
|
||||
) SELECT
|
||||
gen_random_uuid(),
|
||||
'9282a473-5c95-4b3a-bf78-0ecc0ec71d3e',
|
||||
'managing_director_employment_contract',
|
||||
'Geschäftsführerdienstvertrag (GmbH/UG)',
|
||||
'Anstellungsvertrag fuer Organgeschaeftsfuehrer einer GmbH/UG nach Trennungsprinzip. Regelt Bestellung, Vertretung (inkl. § 181 BGB-Befreiung), Aufgaben, Vertraulichkeit/IP (mit ArbnErfG-Abgrenzung), Wettbewerbsverbot (laufend und nachvertraglich mit Karenzentschaedigung gemaess § 74 HGB), Verguetung (Fix, Bonus, Tantieme, Firmenwagen, bAV), Sozialversicherungsstatus mit Statusfeststellungsverfahren, Krankheits- und Hinterbliebenenversorgung, D&O-Versicherung mit Business Judgment Rule, Reporting, Trennungsprinzip Organstellung vs. Anstellung, optionale Kopplung. Konform §§ 35 ff. GmbHG, § 43 GmbHG, § 626 BGB, § 7a SGB IV, § 15a InsO, GeschGehG.',
|
||||
$template$
|
||||
# Geschäftsführerdienstvertrag
|
||||
|
||||
zwischen
|
||||
|
||||
**{{COMPANY_NAME}}**, {{COMPANY_ADDRESS}}, vertreten durch {{COMPANY_REPRESENTATIVE}} aufgrund Beschluss der Gesellschafterversammlung vom {{RESOLUTION_DATE}}
|
||||
|
||||
- nachfolgend „Gesellschaft" -
|
||||
|
||||
und
|
||||
|
||||
**{{GF_NAME}}**, geboren am {{GF_BIRTHDATE}}, wohnhaft in {{GF_ADDRESS}}
|
||||
|
||||
- nachfolgend „Geschäftsführer" -
|
||||
|
||||
---
|
||||
|
||||
## Dokumentenkontrolle
|
||||
|
||||
| Feld | Wert |
|
||||
|---|---|
|
||||
| Vertragstyp | Geschäftsführerdienstvertrag |
|
||||
| Gesellschaft | {{COMPANY_NAME}} ({{COMPANY_LEGAL_FORM}}) |
|
||||
| Beginn | {{CONTRACT_START_DATE}} |
|
||||
| Version | {{DOCUMENT_VERSION}} |
|
||||
|
||||
---
|
||||
|
||||
## § 1 Bestellung, Aufgaben, Trennungsprinzip
|
||||
|
||||
(1) Der Geschäftsführer wird gemäß Beschluss der Gesellschafterversammlung vom {{APPOINTMENT_DATE}} zum Organ der Gesellschaft bestellt. Die Bestellung als Geschäftsführer (Organstellung) und dieser Anstellungsvertrag (schuldrechtliches Verhältnis) sind rechtlich getrennt zu betrachten („Trennungsprinzip"). Die Abberufung als Geschäftsführer führt nicht automatisch zur Beendigung dieses Vertrages, es sei denn, eine ausdrückliche Koppelung wurde vereinbart (§ 14).
|
||||
|
||||
(2) Der Geschäftsführer führt die Geschäfte der Gesellschaft selbstständig, eigenverantwortlich und mit der Sorgfalt eines ordentlichen Geschäftsleiters (§ 43 Abs. 1 GmbHG).
|
||||
|
||||
(3) Aufgaben sowie die interne Rollenverteilung ergeben sich aus:
|
||||
(a) der Satzung,
|
||||
{{#IF HAS_SHA}}(b) dem Shareholders' Agreement (SHA),{{/IF}}
|
||||
{{#IF HAS_GO_GF}}(c) der Geschäftsordnung für die Geschäftsführung (GO-GF),{{/IF}}
|
||||
(d) den Beschlüssen der Gesellschafterversammlung.
|
||||
|
||||
(4) Interne Rollen und Funktionstitel (z. B. {{GF_INTERNAL_TITLE}}) haben keine Außenwirkung und beschränken nicht die gesetzliche Gesamtverantwortung gemäß §§ 35 ff. GmbHG.
|
||||
|
||||
## § 2 Vertretung
|
||||
|
||||
(1) Der Geschäftsführer vertritt die Gesellschaft entsprechend der Satzung und des Handelsregistereintrags.
|
||||
|
||||
(2) Eine Befreiung von den Beschränkungen des § 181 BGB gilt nur, sofern und soweit sie durch Gesellschafterbeschluss ausdrücklich erteilt wurde{{#IF HAS_PARA_181_RELEASE}}; sie wurde erteilt durch Beschluss vom {{PARA_181_RELEASE_DATE}}{{/IF}}.
|
||||
|
||||
## § 3 Arbeitszeit, Verfügbarkeit
|
||||
|
||||
(1) Der Geschäftsführer ist nicht an feste Arbeitszeiten gebunden. Er widmet seine Arbeitszeit und Arbeitskraft der Gesellschaft in dem Umfang, der zur ordnungsgemäßen Wahrnehmung seiner Aufgaben erforderlich ist.
|
||||
|
||||
(2) Über die Lage von Urlaub, Abwesenheit und längeren Reisezeiten stimmt er sich mit den Mitgesellschaftern{{#IF IS_MULTI_GF}} und Mitgeschäftsführern{{/IF}} ab.
|
||||
|
||||
(3) Mobiles Arbeiten ist zulässig, soweit die ordnungsgemäße Wahrnehmung der Geschäftsführungsaufgaben gewährleistet bleibt.
|
||||
|
||||
## § 4 Nebentätigkeiten und Wettbewerbsverbot
|
||||
|
||||
(1) Nebentätigkeiten (entgeltlich oder unentgeltlich) bedürfen der vorherigen schriftlichen Anzeige und Zustimmung der Gesellschafterversammlung. Die Zustimmung ist zu erteilen, wenn die Nebentätigkeit:
|
||||
(a) nicht in unmittelbarem Wettbewerb zur Gesellschaft steht,
|
||||
(b) keine vertraulichen Informationen oder geistigen Eigentumsrechte der Gesellschaft nutzt,
|
||||
(c) die Pflichten aus diesem Vertrag nicht wesentlich beeinträchtigt.
|
||||
|
||||
{{#IF HAS_ACADEMIC_FOUNDER}}
|
||||
(2) Akademische Tätigkeiten, Lehrtätigkeiten und wissenschaftliche Publikationen sind zulässig, sofern sie die in Abs. (1) genannten Voraussetzungen erfüllen. Die Aufnahme einer Professur oder vergleichbaren akademischen Tätigkeit ist anzeigepflichtig, gilt jedoch nicht automatisch als Pflichtverletzung.
|
||||
{{/IF}}
|
||||
|
||||
(3) Der Geschäftsführer unterliegt während seiner Amtszeit einem Wettbewerbsverbot{{#IF HAS_SHA}} entsprechend den Regelungen im SHA{{/IF}}. Er darf insbesondere keine Unternehmen gründen oder unterstützen, die in direktem Wettbewerb zur Gesellschaft stehen.
|
||||
|
||||
(4) **Post-Exit-Wettbewerbsverbot.** Für die Zeit nach Beendigung dieses Vertrages gilt ein nachvertragliches Wettbewerbsverbot von **{{POST_CONTRACT_NONCOMPETE_MONTHS}} Monaten**, sofern und soweit{{#IF HAS_NONCOMPETE_COMPENSATION}} der Geschäftsführer eine Karenzentschädigung in Höhe von mindestens 50 % der zuletzt bezogenen Vergütung erhält{{/IF}}{{#IF NOT HAS_NONCOMPETE_COMPENSATION}} dies im Einzelfall durch Zusatzvereinbarung mit Karenzentschädigung geregelt wurde{{/IF}}. § 74 ff. HGB analog.
|
||||
|
||||
## § 5 Vergütung
|
||||
|
||||
(1) **Fixum.** Der Geschäftsführer erhält ein Jahresgrundgehalt in Höhe von **{{GROSS_ANNUAL_SALARY_EUR}} EUR brutto**, zahlbar in 12 gleichen Monatsraten jeweils zum Monatsende.
|
||||
|
||||
{{#IF HAS_BONUS}}
|
||||
(2) **Variable Vergütung (Bonus).** Zusätzlich kann eine variable Vergütung nach Maßgabe eines durch Gesellschafterbeschluss festgelegten Bonusplans gewährt werden. Bonusziele und -höhe werden jährlich vereinbart. Bonusplan ist Anlage 1 zu diesem Vertrag.
|
||||
{{/IF}}
|
||||
|
||||
{{#IF HAS_TANTIEME}}
|
||||
(3) **Tantieme.** Bei Erreichen bestimmter Kennzahlen kann eine Tantieme gemäß separater Tantiemevereinbarung gewährt werden.
|
||||
{{/IF}}
|
||||
|
||||
(4) **Reisekosten und Auslagen.** Reisekosten, Spesen und weitere notwendige Aufwendungen werden gegen Nachweis nach Maßgabe der gesetzlichen und unternehmensinternen Reisekostenrichtlinien erstattet.
|
||||
|
||||
{{#IF HAS_COMPANY_CAR}}
|
||||
(5) **Firmenfahrzeug.** Dem Geschäftsführer wird ein Firmenfahrzeug der Klasse {{COMPANY_CAR_CLASS}} zur dienstlichen und privaten Nutzung überlassen. Die geldwerte Vorteilsversteuerung trägt der Geschäftsführer.
|
||||
{{/IF}}
|
||||
|
||||
{{#IF HAS_BAV}}
|
||||
(6) **Betriebliche Altersvorsorge (bAV).** Die Gesellschaft trägt einen Arbeitgeberbeitrag in Höhe von {{BAV_EMPLOYER_PCT}} % der Vergütung zur betrieblichen Altersvorsorge.
|
||||
{{/IF}}
|
||||
|
||||
(7) **Überprüfung.** Die Vergütung unterliegt der jährlichen Überprüfung durch die Gesellschafterversammlung. Eine Anpassung ist bei wesentlich veränderten Umständen vorzunehmen.
|
||||
|
||||
## § 6 Sozialversicherungsstatus
|
||||
|
||||
(1) Die Parteien gehen davon aus, dass der Geschäftsführer **{{SV_STATUS}}** ist. Maßgeblich ist die Beurteilung durch die zuständige Sozialversicherungsbehörde (Statusfeststellungsverfahren gemäß § 7a SGB IV).
|
||||
|
||||
(2) Sollte sich der Status nach Statusfeststellung ändern, werden die Parteien diesen Vertrag entsprechend anpassen. Etwaige Nachforderungen oder Erstattungen werden anteilig getragen.
|
||||
|
||||
## § 7 Urlaub
|
||||
|
||||
(1) Der Geschäftsführer hat Anspruch auf **{{VACATION_DAYS}} Urlaubstage** pro Kalenderjahr (bei 5-Tage-Woche).
|
||||
|
||||
(2) Die Urlaubsplanung erfolgt im gegenseitigen Einvernehmen mit den Mitgesellschaftern{{#IF IS_MULTI_GF}} und Mitgeschäftsführern{{/IF}}. Eine Urlaubsnahme ist so zu organisieren, dass die Handlungsfähigkeit der Gesellschaft jederzeit gewährleistet bleibt.
|
||||
|
||||
(3) Nicht genommener Urlaub kann mit Zustimmung der Gesellschafterversammlung in das Folgejahr übertragen werden, ist aber bis spätestens 31. März des Folgejahres zu nehmen.
|
||||
|
||||
## § 8 Arbeitsunfähigkeit, Hinterbliebenenversorgung
|
||||
|
||||
(1) **Lohnfortzahlung.** Im Krankheitsfall wird die Vergütung für die Dauer von **{{KRANKHEIT_FORTZAHLUNG_WOCHEN}} Wochen** fortgezahlt. Danach besteht Anspruch auf Krankentagegeld nach Maßgabe der ggf. abgeschlossenen Krankentagegeldversicherung.
|
||||
|
||||
(2) Der Geschäftsführer ist verpflichtet, eine Arbeitsunfähigkeit unverzüglich anzuzeigen und ab dem **{{AU_BESCHEINIGUNG_TAG}}.** Tag eine ärztliche Bescheinigung vorzulegen.
|
||||
|
||||
{{#IF HAS_HINTERBLIEBENEN_VERSORGUNG}}
|
||||
(3) **Hinterbliebenenversorgung.** Im Todesfall erhalten die Hinterbliebenen (Ehegatte, eingetragener Lebenspartner oder unterhaltsberechtigte Kinder) eine Hinterbliebenenleistung in Höhe von {{HINTERBLIEBENEN_VERSORGUNG_MONATE}} Monatsgehältern.
|
||||
{{/IF}}
|
||||
|
||||
## § 9 Haftung, D&O-Versicherung
|
||||
|
||||
(1) Die Haftung des Geschäftsführers richtet sich nach § 43 GmbHG. Bei Verletzung der Sorgfaltspflicht haftet er der Gesellschaft auf Schadensersatz.
|
||||
|
||||
(2) Die Gesellschaft verpflichtet sich, eine **D&O-Versicherung (Directors & Officers Liability Insurance)** mit einer Deckungssumme von mindestens **{{DO_INSURANCE_EUR}} EUR** abzuschließen und während der gesamten Dauer dieses Vertrages aufrechtzuerhalten. Ein angemessener Selbstbehalt gemäß § 93 Abs. 2 Satz 3 AktG analog wird einbezogen.
|
||||
|
||||
(3) Die Gesellschaft verzichtet auf Schadensersatzansprüche aus leichter Fahrlässigkeit, soweit dies gesetzlich zulässig ist.
|
||||
|
||||
(4) Bei Pflichtverletzungen, die durch das Geschäftsmodell oder strategische Entscheidungen der Gesellschafter veranlasst sind, wird der Geschäftsführer von Ansprüchen Dritter freigestellt, soweit er nicht grob fahrlässig oder vorsätzlich gehandelt hat („Business Judgment Rule").
|
||||
|
||||
## § 10 Reporting und Informationspflichten
|
||||
|
||||
(1) Der Geschäftsführer berichtet der Gesellschafterversammlung{{#IF HAS_GO_GF}} gemäß den Vorgaben der GO-GF{{/IF}}{{#IF HAS_SHA}}{{#IF HAS_GO_GF}} und{{/IF}}{{#IF NOT HAS_GO_GF}} gemäß den Vorgaben{{/IF}} des SHA{{/IF}}, insbesondere hinsichtlich:
|
||||
(a) finanzieller Lage (Liquidität, P&L, Cashflow),
|
||||
(b) Produktentwicklung und technischer Roadmap,
|
||||
{{#IF HAS_RESEARCH_FOCUS}}(c) Forschung & Technologie,
|
||||
(d) {{/IF}}operativer Kennzahlen,
|
||||
{{#IF HAS_RESEARCH_FOCUS}}(e){{/IF}}{{#IF NOT HAS_RESEARCH_FOCUS}}(c){{/IF}} Risiken und rechtlicher Entwicklungen.
|
||||
|
||||
(2) Er ist verpflichtet, alle Umstände unverzüglich zu melden, die:
|
||||
(a) die Liquidität der Gesellschaft gefährden,
|
||||
(b) erhebliche rechtliche Risiken begründen (insbesondere drohende Insolvenz, Massengläubiger),
|
||||
(c) wesentlichen Einfluss auf Geschäft, Compliance oder Reputation haben.
|
||||
|
||||
(3) Bei drohender Insolvenz hat der Geschäftsführer die Pflichten gemäß § 15a InsO zu beachten und unverzüglich die Gesellschafter zu informieren.
|
||||
|
||||
## § 11 Vertraulichkeit und geistiges Eigentum (IP)
|
||||
|
||||
(1) **Vertraulichkeit.** Der Geschäftsführer verpflichtet sich zur strikten Vertraulichkeit über alle Geschäfts- und Betriebsgeheimnisse der Gesellschaft. Diese Verpflichtung besteht zeitlich unbegrenzt über das Vertragsende hinaus fort, soweit rechtlich zulässig (insb. § 17 GeschGehG).
|
||||
|
||||
(2) **IP-Übergang.** Sämtliche vom Geschäftsführer während seiner Tätigkeit geschaffenen oder mitentwickelten Werke, Erfindungen, Konzepte, Modelle, Software, Daten, Designs, Marken oder sonstigen Schutzrechtsfähigen Ergebnisse gehen vollständig und exklusiv auf die Gesellschaft über. Die hierfür erforderlichen Übertragungserklärungen werden hiermit abgegeben.
|
||||
|
||||
(3) **Arbeitnehmererfindergesetz.** Das Arbeitnehmererfindergesetz (ArbnErfG) findet keine Anwendung auf den Geschäftsführer (Organstellung). Etwaige Erfindungen sind unverzüglich der Gesellschaft zu melden; eine Vergütung kann durch Zusatzvereinbarung geregelt werden.
|
||||
|
||||
(4) **Veröffentlichungen.** Veröffentlichungen, Vorträge und Beiträge, die Bezug zur Tätigkeit haben, bedürfen der vorherigen schriftlichen Zustimmung der Gesellschaft:
|
||||
(a) sie dürfen die Interessen der Gesellschaft nicht beeinträchtigen,
|
||||
(b) keine vertraulichen Informationen oder Geschäftsgeheimnisse nutzen,
|
||||
(c) im Zweifel ist eine interne Abstimmung erforderlich.
|
||||
|
||||
(5) **Open Source.** Beiträge zu Open-Source-Projekten sind zulässig, sofern keine Unternehmens-IP genutzt wird und die Gesellschaft vorab zustimmt.
|
||||
|
||||
## § 12 Innenverhältnis zu Gesellschaftern, Rangfolge
|
||||
|
||||
(1) Dieser Vertrag wirkt im Innenverhältnis ergänzend zu Satzung{{#IF HAS_SHA}} und SHA{{/IF}}.
|
||||
|
||||
(2) Bei Widersprüchen gilt folgende Rangfolge:
|
||||
1. zwingendes Recht (GmbHG, BGB, HGB, etc.)
|
||||
2. Satzung
|
||||
{{#IF HAS_SHA}}3. Shareholders' Agreement (SHA){{/IF}}
|
||||
{{#IF HAS_SHA}}4.{{/IF}}{{#IF NOT HAS_SHA}}3.{{/IF}} Geschäftsführerdienstvertrag
|
||||
{{#IF HAS_GO_GF}}{{#IF HAS_SHA}}5.{{/IF}}{{#IF NOT HAS_SHA}}4.{{/IF}} Geschäftsordnung für die Geschäftsführung (GO-GF){{/IF}}
|
||||
|
||||
## § 13 Vertragsdauer und Kündigung
|
||||
|
||||
(1) Der Vertrag beginnt am **{{CONTRACT_START_DATE}}** und läuft auf unbestimmte Zeit.
|
||||
|
||||
(2) **Ordentliche Kündigung.** Beide Parteien können den Vertrag mit folgenden Fristen ordentlich kündigen:
|
||||
(a) durch die Gesellschaft: **{{KUENDIGUNGSFRIST_GESELLSCHAFT_MONATE}} Monate** zum Monatsende,
|
||||
(b) durch den Geschäftsführer: **{{KUENDIGUNGSFRIST_GF_MONATE}} Monate** zum Monatsende.
|
||||
|
||||
(3) **Außerordentliche Kündigung.** Das Recht zur außerordentlichen Kündigung aus wichtigem Grund (§ 626 BGB) bleibt unberührt.
|
||||
|
||||
(4) **Schriftform.** Kündigungen bedürfen der Schriftform.
|
||||
|
||||
{{#IF HAS_KOPPLUNG_BESTELLUNG_VERTRAG}}
|
||||
(5) **Kopplung.** Abweichend vom Trennungsprinzip (§ 1 Abs. 1) endet dieser Vertrag automatisch mit der Beendigung der Bestellung als Geschäftsführer, sofern die Beendigung der Bestellung durch die Gesellschaft erfolgte und kein wichtiger Grund für die Aufrechterhaltung des Anstellungsverhältnisses besteht.
|
||||
{{/IF}}
|
||||
|
||||
## § 14 Beendigung der Geschäftsführerstellung
|
||||
|
||||
(1) Mit der Abberufung als Geschäftsführer endet die Organstellung, nicht jedoch automatisch dieser Dienstvertrag{{#IF HAS_KOPPLUNG_BESTELLUNG_VERTRAG}} (vorbehaltlich § 13 Abs. 5){{/IF}}.
|
||||
|
||||
(2) Etwaige Regelungen zu:
|
||||
(a) Vesting,
|
||||
(b) Leaver-Kategorien (Good / Neutral / Bad),
|
||||
(c) Anteilsübertragungen,
|
||||
(d) Einziehung von Geschäftsanteilen
|
||||
|
||||
richten sich ausschließlich nach{{#IF HAS_SHA}} dem SHA und{{/IF}} der Satzung, nicht nach diesem Vertrag.
|
||||
|
||||
## § 15 Rückgabe von Unterlagen und Arbeitsmitteln
|
||||
|
||||
Bei Vertragsende sind sämtliche Unterlagen, Geräte (Laptop, Mobiltelefon, Firmenfahrzeug etc.), Daten, Datenträger, Schlüssel und sonstigen Arbeitsmittel unverzüglich und vollständig an die Gesellschaft zurückzugeben. Digitale Kopien sind nachweislich zu löschen.
|
||||
|
||||
## § 16 Datenschutz
|
||||
|
||||
Der Geschäftsführer wurde über die Verarbeitung seiner personenbezogenen Daten gemäß Art. 13 DSGVO informiert. Eine entsprechende Datenschutzerklärung wird ihm zum Vertragsbeginn ausgehändigt.
|
||||
|
||||
## § 17 Schlussbestimmungen
|
||||
|
||||
(1) **Schriftform.** Änderungen und Ergänzungen dieses Vertrages bedürfen der Schriftform. Dies gilt auch für die Aufhebung des Schriftformerfordernisses.
|
||||
|
||||
(2) **Salvatorische Klausel.** Sollten einzelne Bestimmungen dieses Vertrages unwirksam sein oder werden, bleibt der Vertrag im Übrigen wirksam. An die Stelle der unwirksamen Bestimmung tritt eine solche, die dem wirtschaftlichen Zweck am nächsten kommt.
|
||||
|
||||
(3) **Anwendbares Recht und Gerichtsstand.** Dieser Vertrag unterliegt deutschem Recht. Gerichtsstand ist der Sitz der Gesellschaft, soweit gesetzlich zulässig.
|
||||
|
||||
(4) **Anlagen.** Folgende Anlagen sind Bestandteil dieses Vertrages:
|
||||
{{ANNEX_LIST}}
|
||||
|
||||
---
|
||||
|
||||
**{{COMPANY_SEAT}}, {{SIGNATURE_DATE}}**
|
||||
|
||||
___________________________
|
||||
Für die Gesellschaft
|
||||
|
||||
___________________________
|
||||
{{GF_NAME}} (Geschäftsführer)
|
||||
$template$,
|
||||
'["COMPANY_NAME","COMPANY_LEGAL_FORM","COMPANY_ADDRESS","COMPANY_SEAT","COMPANY_REPRESENTATIVE","RESOLUTION_DATE","APPOINTMENT_DATE","GF_NAME","GF_BIRTHDATE","GF_ADDRESS","GF_INTERNAL_TITLE","CONTRACT_START_DATE","DOCUMENT_VERSION","HAS_SHA","HAS_GO_GF","HAS_ACADEMIC_FOUNDER","HAS_RESEARCH_FOCUS","HAS_BONUS","HAS_TANTIEME","HAS_COMPANY_CAR","HAS_BAV","HAS_HINTERBLIEBENEN_VERSORGUNG","IS_MULTI_GF","HAS_PARA_181_RELEASE","HAS_KOPPLUNG_BESTELLUNG_VERTRAG","HAS_NONCOMPETE_COMPENSATION","PARA_181_RELEASE_DATE","POST_CONTRACT_NONCOMPETE_MONTHS","GROSS_ANNUAL_SALARY_EUR","COMPANY_CAR_CLASS","BAV_EMPLOYER_PCT","SV_STATUS","VACATION_DAYS","KRANKHEIT_FORTZAHLUNG_WOCHEN","AU_BESCHEINIGUNG_TAG","HINTERBLIEBENEN_VERSORGUNG_MONATE","DO_INSURANCE_EUR","KUENDIGUNGSFRIST_GESELLSCHAFT_MONATE","KUENDIGUNGSFRIST_GF_MONATE","ANNEX_LIST","SIGNATURE_DATE"]'::jsonb,
|
||||
'de',
|
||||
'DE',
|
||||
NULL,
|
||||
'MIT License',
|
||||
'BreakPilot Compliance',
|
||||
false,
|
||||
true,
|
||||
'1.0.0',
|
||||
'published',
|
||||
NOW(), NOW()
|
||||
;
|
||||
|
||||
SELECT document_type, title, LENGTH(content) AS content_chars, jsonb_array_length(placeholders) AS num_placeholders, status, version
|
||||
FROM compliance_legal_templates WHERE document_type = 'managing_director_employment_contract' ORDER BY created_at DESC LIMIT 1;
|
||||
@@ -0,0 +1,262 @@
|
||||
-- Migration 127: Standard-Arbeitsvertrag Template (deutsches Arbeitsrecht)
|
||||
-- Erstellt nach 3-fach-Check Methode (Absatz-fuer-Absatz Review, 2026-05-20)
|
||||
-- Rollenneutral: Position, Aufgaben, Vertraulichkeitsthemen, IP-Scope sind Wizard-befuellt
|
||||
-- Optionale Bloecke: IS_FIXED_TERM, IS_PART_TIME, HAS_OVERTIME_LUMPSUM, HAS_REMOTE_WORK,
|
||||
-- HAS_BONUS, HAS_BAV_INFO, HAS_BAV_EMPLOYER, HAS_PRIVATE_USE_ALLOWED, HAS_OPEN_SOURCE_CONTRIBUTIONS,
|
||||
-- HAS_POST_EMPLOYMENT_NONCOMPETE, HAS_EXTENDED_NOTICE, HAS_BONUS_RECHTSANSPRUCH
|
||||
-- Ergaenzungen ggue. Quelltext: AGG-neutrale Anrede, NachwG-Hinweis, eAU-Pflicht,
|
||||
-- Mutterschutz/Elternzeit/Pflegezeit, Mindestlohn-Schutz vor Anrechnung, Schriftform § 623 BGB,
|
||||
-- doppelte Schriftformklausel, Datenschutzinformation Art. 13 DSGVO, Verpflichtungserklaerung BDSG
|
||||
|
||||
INSERT INTO compliance_legal_templates (
|
||||
id, tenant_id, document_type, title, description, content,
|
||||
placeholders, language, jurisdiction,
|
||||
license_id, license_name, source_name,
|
||||
attribution_required, is_complete_document, version, status,
|
||||
created_at, updated_at
|
||||
) SELECT
|
||||
gen_random_uuid(),
|
||||
'9282a473-5c95-4b3a-bf78-0ecc0ec71d3e',
|
||||
'employment_contract_de',
|
||||
'Arbeitsvertrag (Deutsches Arbeitsrecht)',
|
||||
'Standard-Arbeitsvertrag fuer Beschaeftigte (m/w/d) nach deutschem Arbeitsrecht. Rollenneutral durch Wizard-befuellbare Position, Aufgaben, Arbeitsmittel, Vertraulichkeitsthemen und IP-Scope. Optionen: Befristung (mit Sachgrund), Voll-/Teilzeit, Probezeit, Ueberstundenpauschale, Mobiles Arbeiten, Bonus (mit/ohne Freiwilligkeitsvorbehalt), bAV mit Arbeitgeberzuschuss, Open-Source-Beitraege, nachvertragliches Wettbewerbsverbot mit Karenzentschaedigung, verlaengerte Kuendigungsfristen. Konform §§ 611a, 622, 623, 626 BGB, NachwG, KSchG, EFZG, BUrlG, MuSchG, BEEG, ArbZG, MiLoG, ArbnErfG, GeschGehG, BDSG, DSGVO.',
|
||||
$template$
|
||||
# Arbeitsvertrag
|
||||
|
||||
zwischen
|
||||
|
||||
**{{COMPANY_NAME}}**, {{COMPANY_ADDRESS}}, vertreten durch die Geschäftsführung
|
||||
|
||||
- nachfolgend „Arbeitgeber" -
|
||||
|
||||
und
|
||||
|
||||
**{{EMPLOYEE_NAME}}**, geboren am {{EMPLOYEE_BIRTHDATE}}, wohnhaft in {{EMPLOYEE_ADDRESS}}
|
||||
|
||||
- nachfolgend „Arbeitnehmerin/Arbeitnehmer" oder „Beschäftigte/Beschäftigter" -
|
||||
|
||||
---
|
||||
|
||||
## Dokumentenkontrolle
|
||||
|
||||
| Feld | Wert |
|
||||
|---|---|
|
||||
| Vertragstyp | Arbeitsvertrag |
|
||||
| Arbeitgeber | {{COMPANY_NAME}} ({{COMPANY_LEGAL_FORM}}) |
|
||||
| Position | {{POSITION_TITLE}} |
|
||||
| Beginn | {{CONTRACT_START_DATE}} |
|
||||
| Beschäftigungsart | {{EMPLOYMENT_TYPE}} |
|
||||
| Version | {{DOCUMENT_VERSION}} |
|
||||
|
||||
---
|
||||
|
||||
## § 1 Beginn des Arbeitsverhältnisses, Probezeit
|
||||
|
||||
(1) Das Arbeitsverhältnis beginnt am **{{CONTRACT_START_DATE}}**.{{#IF IS_FIXED_TERM}} Es ist befristet bis zum {{CONTRACT_END_DATE}}. Der Sachgrund der Befristung ist: {{FIXED_TERM_REASON}}.{{/IF}}{{#IF NOT IS_FIXED_TERM}} Es wird auf unbestimmte Zeit geschlossen.{{/IF}}
|
||||
|
||||
(2) **Probezeit.** Die ersten **{{PROBATION_MONTHS}} Monate** gelten als Probezeit. Während der Probezeit kann das Arbeitsverhältnis von beiden Seiten mit einer Frist von **{{PROBATION_NOTICE_WEEKS}} Wochen** zum Ablauf eines Kalendertages gekündigt werden (§ 622 Abs. 3 BGB).
|
||||
|
||||
(3) **Arbeitsort.** Der Arbeitsplatz befindet sich am Sitz der Gesellschaft ({{WORKPLACE_LOCATION}}). Vorübergehende Einsätze an anderen Orten innerhalb Deutschlands sind im zumutbaren Umfang möglich.
|
||||
|
||||
## § 2 Tätigkeit und Aufgaben
|
||||
|
||||
(1) Die/der Beschäftigte wird als **{{POSITION_TITLE}}** beschäftigt.
|
||||
|
||||
(2) Aufgaben umfassen insbesondere:
|
||||
|
||||
{{POSITION_TASKS}}
|
||||
|
||||
(3) Der Arbeitgeber kann der/dem Beschäftigten andere, gleichwertige Aufgaben übertragen, sofern berechtigte betriebliche Interessen vorliegen und die Aufgaben der Qualifikation und Erfahrung entsprechen.
|
||||
|
||||
(4) Eine Versetzung an einen anderen Arbeitsort innerhalb des Bundesgebiets ist mit angemessener Ankündigungsfrist möglich.
|
||||
|
||||
## § 3 Arbeitszeit
|
||||
|
||||
(1) Die regelmäßige wöchentliche Arbeitszeit beträgt **{{WORK_HOURS_WEEK}} Stunden** (Vollzeit{{#IF IS_PART_TIME}}, Teilzeit{{/IF}}).
|
||||
|
||||
(2) Beginn und Ende der täglichen Arbeitszeit können flexibel im Rahmen betrieblicher Erfordernisse gestaltet werden. Kernarbeitszeit: {{CORE_HOURS}}.
|
||||
|
||||
(3) **Überstunden.** {{#IF HAS_OVERTIME_LUMPSUM}}Bis zu **{{OVERTIME_LUMPSUM_PCT}} %** der monatlichen Arbeitszeit (entspricht ca. {{OVERTIME_LUMPSUM_HOURS}} Stunden) sind mit dem Gehalt abgegolten. Darüber hinausgehende Überstunden werden im Verhältnis 1:1 durch Freizeit ausgeglichen oder mit dem anteiligen Stundengehalt vergütet. **Hinweis:** Pauschalabgeltung gilt nur, soweit die durchschnittliche Wochenarbeitszeit 48 Stunden nicht übersteigt und die Vergütung über dem Mindestlohnniveau bleibt.{{/IF}}{{#IF NOT HAS_OVERTIME_LUMPSUM}}Überstunden werden grundsätzlich nicht angeordnet. Falls in Ausnahmefällen erforderlich, werden sie durch Freizeit oder anteilige Vergütung ausgeglichen. Eine Pauschalabgeltung erfolgt nicht.{{/IF}}
|
||||
|
||||
(4) **Mobiles Arbeiten / Home-Office.** {{#IF HAS_REMOTE_WORK}}Mobiles Arbeiten ist nach Abstimmung mit der/dem direkten Vorgesetzten möglich. Die genauen Bedingungen ergeben sich aus der separaten Remote-Work-Vereinbarung (Anlage). Die/der Beschäftigte hat sicherzustellen, dass IT-Sicherheit und Datenschutz gewährleistet sind.{{/IF}}{{#IF NOT HAS_REMOTE_WORK}}Die Tätigkeit erfolgt grundsätzlich am Sitz der Gesellschaft. Mobiles Arbeiten ist nur in Ausnahmefällen nach Zustimmung des Arbeitgebers möglich.{{/IF}}
|
||||
|
||||
(5) Die Arbeitszeitvorschriften des Arbeitszeitgesetzes (ArbZG) sind einzuhalten.
|
||||
|
||||
## § 4 Vergütung
|
||||
|
||||
(1) Die/der Beschäftigte erhält ein monatliches Bruttogehalt von **{{GROSS_MONTHLY_SALARY_EUR}} EUR**, zahlbar zum {{SALARY_PAYMENT_DAY}}. des Folgemonats auf das von der/dem Beschäftigten benannte Konto.
|
||||
|
||||
(2) Das Gehalt deckt die vereinbarte regelmäßige Arbeitszeit{{#IF HAS_OVERTIME_LUMPSUM}} sowie die Pauschalabgeltung gemäß § 3 Abs. (3){{/IF}} ab. Eine Anrechnung etwaiger Bonuszahlungen auf den Mindestlohn (§ 1 MiLoG) erfolgt nicht.
|
||||
|
||||
{{#IF HAS_BONUS}}
|
||||
(3) **Variable Vergütung (Bonus).** Über eine Bonuszahlung wird jährlich auf Basis individueller und unternehmensbezogener Zielerreichung entschieden. Die Auszahlung erfolgt freiwillig und begründet auch bei wiederholter Zahlung keinen Rechtsanspruch für künftige Jahre („Freiwilligkeitsvorbehalt"){{#IF HAS_BONUS_RECHTSANSPRUCH}} - ABGEÄNDERT: Auszahlung ist Anspruch bei Zielerreichung gemäß separatem Bonusplan (Anlage){{/IF}}.
|
||||
{{/IF}}
|
||||
|
||||
{{#IF HAS_BAV_INFO}}
|
||||
(4) **Betriebliche Altersvorsorge.** Die/der Beschäftigte wurde auf den Anspruch auf Entgeltumwandlung gemäß § 1a BetrAVG hingewiesen. Auf Wunsch kann eine Entgeltumwandlung vereinbart werden.{{#IF HAS_BAV_EMPLOYER}} Der Arbeitgeber leistet einen Arbeitgeberzuschuss in Höhe von {{BAV_EMPLOYER_PCT}} % der umgewandelten Beträge.{{/IF}}
|
||||
{{/IF}}
|
||||
|
||||
(5) **Sachleistungen.** Etwaige Sachleistungen (z. B. Jobticket, Sachbezüge) werden separat geregelt.
|
||||
|
||||
## § 5 Arbeitsmittel und IT
|
||||
|
||||
(1) Der Arbeitgeber stellt alle für die Tätigkeit erforderlichen Arbeitsmittel zur Verfügung, insbesondere:
|
||||
|
||||
{{WORK_EQUIPMENT_LIST}}
|
||||
|
||||
(2) Die Arbeitsmittel sind sorgfältig zu behandeln und ausschließlich für dienstliche Zwecke zu nutzen.{{#IF HAS_PRIVATE_USE_ALLOWED}} Eine eingeschränkte private Nutzung ist im Rahmen der IT-Nutzungsrichtlinie zulässig.{{/IF}}
|
||||
|
||||
(3) IT-Sicherheit: Die/der Beschäftigte verpflichtet sich zur Einhaltung der IT-Sicherheitsrichtlinien des Arbeitgebers (insbesondere starke Passwörter, MFA, Endgeräteverschlüsselung, Verbot unautorisierter Software).
|
||||
|
||||
(4) **Cloud- und Datenträgernutzung.** Die Nutzung privater Cloud-Speicher (Dropbox, Google Drive, etc.) oder externer Datenträger für dienstliche Daten ist nur mit ausdrücklicher Genehmigung gestattet.
|
||||
|
||||
## § 6 Urlaub
|
||||
|
||||
(1) Der Urlaubsanspruch beträgt **{{VACATION_DAYS}} Arbeitstage** pro Kalenderjahr (bei 5-Tage-Woche, ggf. anteilig im Eintritts- oder Austrittsjahr).
|
||||
|
||||
(2) Urlaub ist mit der/dem direkten Vorgesetzten frühzeitig abzustimmen.
|
||||
|
||||
(3) Nicht genommener Urlaub kann bis zum 31. März des Folgejahres übertragen werden. Bei dringenden betrieblichen oder persönlichen Gründen ist eine längere Übertragung möglich (§ 7 Abs. 3 BUrlG).
|
||||
|
||||
(4) Bei Beendigung des Arbeitsverhältnisses wird Resturlaub gewährt oder in Geld abgegolten (§ 7 Abs. 4 BUrlG).
|
||||
|
||||
## § 7 Vertraulichkeit und Geschäftsgeheimnisse
|
||||
|
||||
(1) Die/der Beschäftigte verpflichtet sich, über alle Geschäfts- und Betriebsgeheimnisse des Arbeitgebers während und **zeitlich unbegrenzt nach** Beendigung des Arbeitsverhältnisses strikte Vertraulichkeit zu wahren. Diese Pflicht ergibt sich auch aus § 17 GeschGehG.
|
||||
|
||||
(2) **Geschäftsgeheimnisse** sind insbesondere (nicht abschließend):
|
||||
{{CONFIDENTIALITY_TOPICS}}
|
||||
|
||||
(3) Veröffentlichungen, Vorträge, Beiträge in sozialen Netzwerken und sonstige öffentliche Äußerungen, die Bezug zur Tätigkeit haben, bedürfen der vorherigen schriftlichen Zustimmung des Arbeitgebers.
|
||||
|
||||
(4) Bei Verstößen können Schadensersatz, Unterlassung und arbeitsrechtliche Konsequenzen geltend gemacht werden.
|
||||
|
||||
## § 8 Geistiges Eigentum (IP)
|
||||
|
||||
(1) Sämtliche während der Anstellung von der/dem Beschäftigten geschaffenen oder mitentwickelten Arbeitsergebnisse - einschließlich:
|
||||
{{IP_SCOPE_LIST}}
|
||||
|
||||
gehen automatisch in das ausschließliche geistige Eigentum des Arbeitgebers über. Alle erforderlichen Übertragungs- und Verwertungsrechte werden hiermit vorab abgetreten, soweit das gesetzlich zulässig ist.
|
||||
|
||||
(2) **Arbeitnehmererfindergesetz (ArbnErfG).** Das Arbeitnehmererfindergesetz bleibt unberührt. Erfindungsmeldungen sind unverzüglich nach Entstehung der Erfindung schriftlich an den Arbeitgeber zu richten. Die Vergütung erfolgt nach den Vorschriften des ArbnErfG.
|
||||
|
||||
(3) **Urheberrechte und Nutzungsrechte.** Der Arbeitgeber erhält an allen urheberrechtlich geschützten Werken die ausschließlichen, übertragbaren, zeitlich, räumlich und inhaltlich unbeschränkten Nutzungsrechte für alle bekannten und unbekannten Nutzungsarten.
|
||||
|
||||
(4) **Private Nutzung.** Eine private Nutzung der im Rahmen der Tätigkeit geschaffenen Arbeitsergebnisse ist ausgeschlossen, soweit es sich um Unternehmens-IP handelt.
|
||||
|
||||
{{#IF HAS_OPEN_SOURCE_CONTRIBUTIONS}}
|
||||
(5) **Open-Source-Beiträge.** Beiträge zu Open-Source-Projekten sind grundsätzlich zulässig, jedoch:
|
||||
(a) nur außerhalb der Arbeitszeit (Kennzeichnung durch die/den Beschäftigte/Beschäftigten),
|
||||
(b) ohne Verwendung von Unternehmens-IP, vertraulichen Informationen oder Code-Bestandteilen des Arbeitgebers,
|
||||
(c) bei Bezug zur Tätigkeit: vorherige Anzeige beim Arbeitgeber und Zustimmung im Einzelfall.
|
||||
{{/IF}}
|
||||
|
||||
## § 9 Wettbewerbsverbot und Nebentätigkeiten
|
||||
|
||||
(1) **Während der Beschäftigung** ist jede konkurrierende Tätigkeit für ein anderes Unternehmen, insbesondere für Wettbewerber, verboten.
|
||||
|
||||
(2) **Nebentätigkeiten** (z. B. Lehraufträge, Freelancing, Beratung) bedürfen der vorherigen schriftlichen Genehmigung. Die Genehmigung ist zu erteilen, sofern:
|
||||
(a) keine Beeinträchtigung der Tätigkeit beim Arbeitgeber entsteht,
|
||||
(b) keine konkurrierende Tätigkeit vorliegt,
|
||||
(c) keine Betriebsgeheimnisse genutzt werden,
|
||||
(d) die wöchentliche Höchstarbeitszeit gemäß ArbZG eingehalten wird.
|
||||
|
||||
{{#IF HAS_POST_EMPLOYMENT_NONCOMPETE}}
|
||||
(3) **Nachvertragliches Wettbewerbsverbot.** Für die Zeit nach Beendigung des Arbeitsverhältnisses gilt ein nachvertragliches Wettbewerbsverbot von {{POST_NONCOMPETE_MONTHS}} Monaten gemäß §§ 74 ff. HGB. Der Arbeitgeber zahlt eine Karenzentschädigung in Höhe von 50 % der zuletzt bezogenen Gesamtvergütung.
|
||||
{{/IF}}
|
||||
|
||||
## § 10 Datenschutz
|
||||
|
||||
(1) Die/der Beschäftigte verpflichtet sich zur Einhaltung der DSGVO, des BDSG und aller internen Datenschutzrichtlinien.
|
||||
|
||||
(2) Personenbezogene Daten dürfen nur verarbeitet werden, soweit dies zur Aufgabenerfüllung notwendig und vom Arbeitgeber autorisiert ist.
|
||||
|
||||
(3) **Verpflichtung auf das Datengeheimnis** gemäß § 26 BDSG erfolgt separat (Anlage Verpflichtungserklärung).
|
||||
|
||||
(4) Eine **Datenschutzinformation gemäß Art. 13 DSGVO** für Beschäftigte wird zum Vertragsbeginn ausgehändigt.
|
||||
|
||||
## § 11 Krankheit und Arbeitsverhinderung
|
||||
|
||||
(1) **Anzeige der Arbeitsunfähigkeit.** Eine Arbeitsunfähigkeit ist dem Arbeitgeber unverzüglich, spätestens vor Arbeitsbeginn am ersten Tag, anzuzeigen.
|
||||
|
||||
(2) **Ärztliche Bescheinigung.** Die ärztliche Arbeitsunfähigkeitsbescheinigung (AU) ist spätestens am **{{AU_BESCHEINIGUNG_TAG}}. Krankheitstag** vorzulegen (in digitaler Form gemäß eAU).
|
||||
|
||||
(3) **Lohnfortzahlung.** Die Lohnfortzahlung im Krankheitsfall erfolgt für bis zu 6 Wochen gemäß Entgeltfortzahlungsgesetz (EFZG).
|
||||
|
||||
(4) Ärztliche Untersuchungen während der Arbeitszeit sind möglichst außerhalb der Kernarbeitszeit zu planen.
|
||||
|
||||
## § 12 Sonstige Abwesenheiten
|
||||
|
||||
(1) **Mutterschutz / Elternzeit.** Anspruch auf Mutterschutz und Elternzeit besteht nach den gesetzlichen Vorschriften (MuSchG, BEEG).
|
||||
|
||||
(2) **Pflegezeit.** Anspruch auf Pflegezeit besteht nach dem Pflegezeitgesetz und dem Familienpflegezeitgesetz.
|
||||
|
||||
(3) **Sonderurlaub.** Bei besonderen Anlässen (Hochzeit, Todesfall in der engen Familie, Geburt eines eigenen Kindes) wird bezahlter Sonderurlaub gewährt: {{SONDERURLAUB_TAGE}} Tag(e) pro Anlass.
|
||||
|
||||
## § 13 Kündigung
|
||||
|
||||
(1) Nach der Probezeit gelten die gesetzlichen Kündigungsfristen nach § 622 BGB. Diese verlängern sich mit zunehmender Betriebszugehörigkeit zugunsten der/des Beschäftigten gemäß § 622 Abs. 2 BGB.
|
||||
|
||||
(2) {{#IF HAS_EXTENDED_NOTICE}}Die Kündigungsfristen werden zugunsten beider Parteien einheitlich auf {{EXTENDED_NOTICE_MONTHS}} Monate zum Monatsende verlängert.{{/IF}}
|
||||
|
||||
(3) **Schriftform.** Die Kündigung bedarf der Schriftform gemäß § 623 BGB. Eine elektronische Form (auch E-Mail) genügt nicht.
|
||||
|
||||
(4) **Außerordentliche Kündigung.** Das Recht zur außerordentlichen fristlosen Kündigung aus wichtigem Grund (§ 626 BGB) bleibt unberührt.
|
||||
|
||||
(5) **Wirksamkeitsvoraussetzung KSchG.** Ab Anwendbarkeit des Kündigungsschutzgesetzes (in der Regel nach 6 Monaten Betriebszugehörigkeit und bei Betrieben mit mehr als 10 Beschäftigten) gilt das KSchG.
|
||||
|
||||
(6) **Freistellung.** Der Arbeitgeber kann die/den Beschäftigte/Beschäftigten während der Kündigungsfrist unter Fortzahlung der Bezüge freistellen.
|
||||
|
||||
## § 14 Rückgabe von Arbeitsmitteln und Daten
|
||||
|
||||
Bei Beendigung des Arbeitsverhältnisses sind unverzüglich und vollständig zurückzugeben:
|
||||
- alle Geräte (Laptop, Smartphone, Headset, etc.)
|
||||
- alle Datenträger (USB-Sticks, externe Festplatten)
|
||||
- alle Unterlagen, Dokumente und Notizen
|
||||
- Zugangskarten, Schlüssel
|
||||
- Firmenfahrzeug (falls zugewiesen)
|
||||
|
||||
Digitale Daten auf privaten Geräten sind nachweislich zu löschen. Eine Bestätigung kann verlangt werden.
|
||||
|
||||
## § 15 Versicherungspflichten
|
||||
|
||||
Die/der Beschäftigte ist sozialversicherungspflichtig nach SGB IV. Der Arbeitgeber meldet die/den Beschäftigte/Beschäftigten ordnungsgemäß zur Sozialversicherung an und führt die gesetzlichen Beiträge ab.
|
||||
|
||||
## § 16 Schlussbestimmungen
|
||||
|
||||
(1) **Schriftform.** Änderungen und Ergänzungen dieses Vertrages bedürfen der Schriftform. Dies gilt auch für die Aufhebung des Schriftformerfordernisses (doppelte Schriftformklausel). Individuelle Vertragsabreden im Sinne des § 305b BGB bleiben unberührt.
|
||||
|
||||
(2) **Salvatorische Klausel.** Sollten einzelne Bestimmungen unwirksam sein oder werden, bleibt der Vertrag im Übrigen wirksam. Anstelle der unwirksamen Bestimmung gilt eine solche, die dem wirtschaftlichen Zweck am nächsten kommt und rechtlich zulässig ist.
|
||||
|
||||
(3) **Anwendbares Recht und Gerichtsstand.** Es gilt deutsches Recht. Gerichtsstand ist - soweit gesetzlich zulässig - der Sitz der Gesellschaft. Bei Streitigkeiten aus dem Arbeitsverhältnis ist das Arbeitsgericht zuständig.
|
||||
|
||||
(4) **Anlagen.** Folgende Anlagen sind Bestandteil dieses Vertrages:
|
||||
{{ANNEX_LIST}}
|
||||
|
||||
(5) **Hinweis nach Nachweisgesetz (NachwG).** Mit Unterzeichnung dieses Vertrages werden alle wesentlichen Vertragsbedingungen schriftlich nachgewiesen.
|
||||
|
||||
---
|
||||
|
||||
**{{WORKPLACE_LOCATION}}, {{SIGNATURE_DATE}}**
|
||||
|
||||
___________________________
|
||||
Für den Arbeitgeber
|
||||
|
||||
___________________________
|
||||
{{EMPLOYEE_NAME}}
|
||||
$template$,
|
||||
'["COMPANY_NAME","COMPANY_LEGAL_FORM","COMPANY_ADDRESS","EMPLOYEE_NAME","EMPLOYEE_BIRTHDATE","EMPLOYEE_ADDRESS","POSITION_TITLE","POSITION_TASKS","EMPLOYMENT_TYPE","CONTRACT_START_DATE","CONTRACT_END_DATE","FIXED_TERM_REASON","IS_FIXED_TERM","IS_PART_TIME","HAS_OVERTIME_LUMPSUM","HAS_REMOTE_WORK","HAS_BONUS","HAS_BONUS_RECHTSANSPRUCH","HAS_BAV_INFO","HAS_BAV_EMPLOYER","HAS_PRIVATE_USE_ALLOWED","HAS_OPEN_SOURCE_CONTRIBUTIONS","HAS_POST_EMPLOYMENT_NONCOMPETE","HAS_EXTENDED_NOTICE","PROBATION_MONTHS","PROBATION_NOTICE_WEEKS","WORKPLACE_LOCATION","WORK_HOURS_WEEK","CORE_HOURS","OVERTIME_LUMPSUM_PCT","OVERTIME_LUMPSUM_HOURS","GROSS_MONTHLY_SALARY_EUR","SALARY_PAYMENT_DAY","BAV_EMPLOYER_PCT","WORK_EQUIPMENT_LIST","VACATION_DAYS","CONFIDENTIALITY_TOPICS","IP_SCOPE_LIST","POST_NONCOMPETE_MONTHS","AU_BESCHEINIGUNG_TAG","SONDERURLAUB_TAGE","EXTENDED_NOTICE_MONTHS","ANNEX_LIST","SIGNATURE_DATE","DOCUMENT_VERSION"]'::jsonb,
|
||||
'de',
|
||||
'DE',
|
||||
NULL,
|
||||
'MIT License',
|
||||
'BreakPilot Compliance',
|
||||
false,
|
||||
true,
|
||||
'1.0.0',
|
||||
'published',
|
||||
NOW(), NOW()
|
||||
;
|
||||
|
||||
SELECT document_type, title, LENGTH(content) AS content_chars, jsonb_array_length(placeholders) AS num_placeholders, status, version
|
||||
FROM compliance_legal_templates WHERE document_type = 'employment_contract_de' ORDER BY created_at DESC LIMIT 1;
|
||||
@@ -0,0 +1,101 @@
|
||||
-- Migration 128: Gesellschafterliste Template (§ 40 GmbHG)
|
||||
-- Pflichtdokument fuer Handelsregister-Anmeldung und bei jeder Aenderung der Gesellschafterstruktur
|
||||
-- Skalierbar fuer 1 bis N Gesellschafter (Tabellen-Befuellung via GESELLSCHAFTER_TABELLE)
|
||||
-- Optionale Bloecke: HAS_VERANDERUNGEN, HAS_NOTARY_LIST, MULTI_SIGNATORY
|
||||
|
||||
INSERT INTO compliance_legal_templates (
|
||||
id, tenant_id, document_type, title, description, content,
|
||||
placeholders, language, jurisdiction,
|
||||
license_id, license_name, source_name,
|
||||
attribution_required, is_complete_document, version, status,
|
||||
created_at, updated_at
|
||||
) SELECT
|
||||
gen_random_uuid(),
|
||||
'9282a473-5c95-4b3a-bf78-0ecc0ec71d3e',
|
||||
'gesellschafterliste',
|
||||
'Gesellschafterliste (§ 40 GmbHG)',
|
||||
'Pflichtdokument einer deutschen GmbH/UG nach § 40 GmbHG. Wird zum Handelsregister eingereicht und bei jeder Aenderung (Anteilsuebertragung, Einziehung, Teilung, Zusammenlegung) aktualisiert. Skalierbar fuer beliebige Anzahl Gesellschafter via Tabellen-Platzhalter. Optionale Bloecke fuer notariell bestaetigte Listen und Aenderungs-Hinweise.',
|
||||
$template$
|
||||
# Gesellschafterliste
|
||||
|
||||
der **{{COMPANY_NAME}}**
|
||||
|
||||
mit Sitz in {{COMPANY_SEAT}}
|
||||
|
||||
eingetragen im Handelsregister des Amtsgerichts {{COMPANY_REGISTRY_COURT}} unter **HRB {{HRB_NUMBER}}**
|
||||
|
||||
---
|
||||
|
||||
## Dokumentenkontrolle
|
||||
|
||||
| Feld | Wert |
|
||||
|---|---|
|
||||
| Dokument | Gesellschafterliste nach § 40 GmbHG |
|
||||
| Stand | {{LIST_DATE}} |
|
||||
| Aufgestellt von | {{LIST_AUTHOR}} ({{LIST_AUTHOR_ROLE}}) |
|
||||
| Anlass | {{LIST_REASON}} |
|
||||
| Version | {{DOCUMENT_VERSION}} |
|
||||
|
||||
---
|
||||
|
||||
## Gesellschafter und Geschäftsanteile
|
||||
|
||||
| Lfd. Nr. | Name / Firma | Geburtsdatum / Sitz | Anschrift | Geschäftsanteil Nr. | Nennbetrag (EUR) | Anteil am Stammkapital (%) |
|
||||
|---:|---|---|---|---:|---:|---:|
|
||||
{{GESELLSCHAFTER_TABELLE}}
|
||||
|
||||
**Stammkapital gesamt: {{STAMMKAPITAL_EUR}} EUR**
|
||||
|
||||
---
|
||||
|
||||
## Erklärung des Geschäftsführers
|
||||
|
||||
Ich/Wir, die Unterzeichnenden, als Geschäftsführer der {{COMPANY_NAME}} versichere/n, dass die vorstehende Liste den tatsächlichen Verhältnissen der Geschäftsanteile entspricht und dass alle Eintragungen vollständig und richtig sind (§ 40 Abs. 1 GmbHG).
|
||||
|
||||
{{#IF HAS_VERANDERUNGEN}}
|
||||
## Veränderungen seit der letzten Liste
|
||||
|
||||
{{VERANDERUNGEN_BESCHREIBUNG}}
|
||||
|
||||
Grundlage: {{VERANDERUNG_GRUNDLAGE}} (z. B. notarielle Urkunde des Notars {{NOTARY_NAME}} vom {{NOTARIAL_DATE}}, URNr. {{NOTARY_URNR}})
|
||||
{{/IF}}
|
||||
|
||||
{{#IF HAS_NOTARY_LIST}}
|
||||
## Bestätigung durch Notar
|
||||
|
||||
Diese Liste wurde gemäß § 40 Abs. 2 GmbHG durch den unterzeichnenden Notar erstellt.
|
||||
|
||||
**Notar:** {{NOTARY_NAME}}
|
||||
**Anschrift:** {{NOTARY_ADDRESS}}
|
||||
**URNr.:** {{NOTARY_URNR}}
|
||||
**Datum:** {{NOTARIAL_DATE}}
|
||||
{{/IF}}
|
||||
|
||||
---
|
||||
|
||||
## Hinweise
|
||||
|
||||
(1) Diese Gesellschafterliste wird gemäß § 40 GmbHG zum Handelsregister eingereicht. Maßgeblich für das Verhältnis zur Gesellschaft ist die jeweils aktuell zum Handelsregister aufgenommene Liste (§ 16 GmbHG).
|
||||
|
||||
(2) Jede Veränderung in der Person der Gesellschafter oder im Umfang ihrer Geschäftsanteile (Übertragung, Einziehung, Teilung, Zusammenlegung) ist durch unverzüglich aktualisierte Liste anzuzeigen.
|
||||
|
||||
(3) Erwerber von Geschäftsanteilen gelten erst dann als Gesellschafter, wenn sie in die im Handelsregister aufgenommene Gesellschafterliste eingetragen sind.
|
||||
|
||||
---
|
||||
|
||||
**{{COMPANY_SEAT}}, {{LIST_DATE}}**
|
||||
|
||||
___________________________
|
||||
{{SIGNATORY_NAME}}
|
||||
{{SIGNATORY_ROLE}}
|
||||
|
||||
{{#IF MULTI_SIGNATORY}}
|
||||
___________________________
|
||||
{{SIGNATORY_2_NAME}}
|
||||
{{SIGNATORY_2_ROLE}}
|
||||
{{/IF}}
|
||||
$template$,
|
||||
'["COMPANY_NAME","COMPANY_SEAT","COMPANY_REGISTRY_COURT","HRB_NUMBER","LIST_DATE","LIST_AUTHOR","LIST_AUTHOR_ROLE","LIST_REASON","DOCUMENT_VERSION","GESELLSCHAFTER_TABELLE","STAMMKAPITAL_EUR","HAS_VERANDERUNGEN","VERANDERUNGEN_BESCHREIBUNG","VERANDERUNG_GRUNDLAGE","HAS_NOTARY_LIST","NOTARY_NAME","NOTARY_ADDRESS","NOTARY_URNR","NOTARIAL_DATE","SIGNATORY_NAME","SIGNATORY_ROLE","MULTI_SIGNATORY","SIGNATORY_2_NAME","SIGNATORY_2_ROLE"]'::jsonb,
|
||||
'de','DE',NULL,'MIT License','BreakPilot Compliance',false,true,'1.0.0','published',NOW(),NOW()
|
||||
;
|
||||
SELECT document_type, title, LENGTH(content) AS content_chars, jsonb_array_length(placeholders) AS num_placeholders FROM compliance_legal_templates WHERE document_type = 'gesellschafterliste' ORDER BY created_at DESC LIMIT 1;
|
||||
@@ -0,0 +1,128 @@
|
||||
-- Migration 129: Geschaeftsfuehrer-Bestellungsbeschluss Template
|
||||
-- Pflichtdokument zur Anmeldung beim Handelsregister (§ 39 GmbHG)
|
||||
-- Skalierbar fuer 1 GF oder mehrere; mit/ohne Praesenzversammlung; einmaliger Beschluss oder Nachbestellung
|
||||
-- Enthaelt Versicherung nach § 6 Abs. 2 GmbHG und Belehrung nach § 53 BZRG
|
||||
-- Optionale Bloecke: HAS_HRB (Neugruendung vs. Bestand), IS_PRESENCE_MEETING / IS_WRITTEN_RESOLUTION / IS_VIDEO_MEETING,
|
||||
-- IS_SINGLE/MULTI_APPOINTMENT, HAS_DELAYED_START, GF_PARA_181_RELEASE, HAS_RESSORT_ZUWEISUNG,
|
||||
-- HAS_DIENSTVERTRAG, HAS_VERSICHERUNG_BESTELLT, IS_FIRST_APPOINTMENT
|
||||
|
||||
INSERT INTO compliance_legal_templates (
|
||||
id, tenant_id, document_type, title, description, content,
|
||||
placeholders, language, jurisdiction,
|
||||
license_id, license_name, source_name,
|
||||
attribution_required, is_complete_document, version, status,
|
||||
created_at, updated_at
|
||||
) SELECT
|
||||
gen_random_uuid(),
|
||||
'9282a473-5c95-4b3a-bf78-0ecc0ec71d3e',
|
||||
'gf_bestellungsbeschluss',
|
||||
'Gesellschafterbeschluss zur Bestellung Geschäftsführer',
|
||||
'Beschluss der Gesellschafterversammlung zur Bestellung eines oder mehrerer Geschaeftsfuehrer einer GmbH/UG. Pflichtdokument fuer die Anmeldung im Handelsregister (§ 39 GmbHG). Enthaelt die Versicherung nach § 6 Abs. 2 Satz 2 Nr. 3 GmbHG und Belehrung nach § 53 BZRG. Skalierbar fuer Praesenz-, Video- oder schriftliches Verfahren; einzelne oder Mehrfach-Bestellung; mit/ohne sofortigem Amtsantritt; mit Ressort-Zuweisung; bei Neugruendung oder fuer bestehende Gesellschaft.',
|
||||
$template$
|
||||
# Gesellschafterbeschluss
|
||||
|
||||
der **{{COMPANY_NAME}}**
|
||||
|
||||
mit Sitz in {{COMPANY_SEAT}}
|
||||
|
||||
{{#IF HAS_HRB}}eingetragen im Handelsregister des Amtsgerichts {{COMPANY_REGISTRY_COURT}} unter HRB {{HRB_NUMBER}}{{/IF}}
|
||||
{{#IF NOT HAS_HRB}}— in Gründung —{{/IF}}
|
||||
|
||||
## Bestellung {{#IF IS_FIRST_APPOINTMENT}}der ersten{{/IF}} Geschäftsführer{{#IF IS_PLURAL_GF}}{{/IF}}
|
||||
|
||||
---
|
||||
|
||||
## Dokumentenkontrolle
|
||||
|
||||
| Feld | Wert |
|
||||
|---|---|
|
||||
| Beschlussart | Gesellschafterbeschluss zur Bestellung Geschäftsführer |
|
||||
| Datum der Beschlussfassung | {{RESOLUTION_DATE}} |
|
||||
| Versammlungsort | {{MEETING_LOCATION}} |
|
||||
| Beschlussform | {{RESOLUTION_FORM}} |
|
||||
| Version | {{DOCUMENT_VERSION}} |
|
||||
|
||||
---
|
||||
|
||||
## § 1 Versammlung und Teilnehmer
|
||||
|
||||
(1) Die Gesellschafter der {{COMPANY_NAME}} haben sich am **{{RESOLUTION_DATE}}** in {{MEETING_LOCATION}} {{#IF IS_PRESENCE_MEETING}}zu einer Gesellschafterversammlung versammelt{{/IF}}{{#IF IS_WRITTEN_RESOLUTION}}im schriftlichen Verfahren gemäß § 48 Abs. 2 GmbHG zusammengefunden{{/IF}}{{#IF IS_VIDEO_MEETING}}per Video-/Telefonkonferenz zusammengefunden{{/IF}}.
|
||||
|
||||
(2) Anwesend bzw. an der Beschlussfassung beteiligt sind:
|
||||
|
||||
{{GESELLSCHAFTER_LISTE}}
|
||||
|
||||
(3) Die Beschlussfähigkeit gemäß Satzung ist gegeben. {{ANWESENHEITSQUOTE_PCT}} % der Stimmen sind vertreten.
|
||||
|
||||
## § 2 Beschluss zur Bestellung
|
||||
|
||||
Die Gesellschafterversammlung beschließt **einstimmig**{{#IF NOT IS_EINSTIMMIG}}mit {{BESCHLUSS_MEHRHEIT_PCT}} % der abgegebenen Stimmen{{/IF}}:
|
||||
|
||||
{{#IF IS_SINGLE_APPOINTMENT}}
|
||||
(1) **{{GF_NAME}}**, geboren am {{GF_BIRTHDATE}}, wohnhaft in {{GF_ADDRESS}}, wird mit sofortiger Wirkung{{#IF HAS_DELAYED_START}} ab {{GF_START_DATE}}{{/IF}} zum/zur Geschäftsführer/in der Gesellschaft bestellt.
|
||||
|
||||
(2) {{GF_NAME}} ist {{GF_VERTRETUNG}}{{#IF GF_PARA_181_RELEASE}} und von den Beschränkungen des § 181 BGB befreit{{/IF}}.
|
||||
{{/IF}}
|
||||
|
||||
{{#IF IS_MULTI_APPOINTMENT}}
|
||||
Folgende Personen werden mit sofortiger Wirkung zu Geschäftsführer/innen der Gesellschaft bestellt:
|
||||
|
||||
{{GF_LISTE_MIT_VERTRETUNGSART}}
|
||||
{{/IF}}
|
||||
|
||||
{{#IF HAS_RESSORT_ZUWEISUNG}}
|
||||
(3) Die interne Ressortverteilung erfolgt gemäß Anlage 1 zu diesem Beschluss bzw. der Geschäftsordnung für die Geschäftsführung (GO-GF).
|
||||
{{/IF}}
|
||||
|
||||
## § 3 Anstellungsverhältnis
|
||||
|
||||
{{#IF HAS_DIENSTVERTRAG}}
|
||||
Die Gesellschafterversammlung genehmigt den Abschluss eines Geschäftsführerdienstvertrages mit jedem der bestellten Geschäftsführer. Die wesentlichen Bedingungen ergeben sich aus dem als Anlage beigefügten Vertrag.
|
||||
{{/IF}}
|
||||
{{#IF NOT HAS_DIENSTVERTRAG}}
|
||||
Über das Anstellungsverhältnis wird ein gesonderter Geschäftsführerdienstvertrag abgeschlossen, der einer separaten Zustimmung der Gesellschafterversammlung bedarf.
|
||||
{{/IF}}
|
||||
|
||||
## § 4 Anmeldung zum Handelsregister
|
||||
|
||||
Die Geschäftsführung wird beauftragt und ermächtigt, die Bestellung unverzüglich zum Handelsregister anzumelden und die hierfür erforderlichen Erklärungen abzugeben (§ 39 GmbHG).
|
||||
|
||||
## § 5 Versicherung gemäß § 6 Abs. 2 GmbHG
|
||||
|
||||
Jede/r bestellte Geschäftsführer/in versichert, dass keine Umstände vorliegen, die ihrer/seiner Bestellung gemäß § 6 Abs. 2 GmbHG entgegenstehen. Insbesondere bestehen:
|
||||
|
||||
- keine Verurteilungen wegen einer Straftat gemäß §§ 263 bis 264a oder §§ 265b bis 266a StGB innerhalb der letzten fünf Jahre,
|
||||
- keine Verurteilungen wegen vergleichbarer Straftaten im Ausland,
|
||||
- keine berufs- oder gewerberechtlichen Untersagungen, die die Geschäftsführung betreffen würden.
|
||||
|
||||
Die/der Geschäftsführer/in wurde über die Pflicht zur Anzeige solcher Umstände belehrt (§ 53 BZRG).
|
||||
|
||||
## § 6 Inkrafttreten
|
||||
|
||||
Dieser Beschluss tritt mit Beschlussfassung in Kraft. Der/die Geschäftsführer/in ist berechtigt, das Amt unverzüglich auszuüben.
|
||||
|
||||
---
|
||||
|
||||
**{{MEETING_LOCATION}}, {{RESOLUTION_DATE}}**
|
||||
|
||||
**Unterschriften der Gesellschafter:**
|
||||
|
||||
{{SIGNATURES_GESELLSCHAFTER}}
|
||||
|
||||
{{#IF HAS_VERSICHERUNG_BESTELLT}}
|
||||
---
|
||||
|
||||
## Anlage: Versicherung der/des Bestellten gemäß § 6 Abs. 2 Satz 2 Nr. 3 GmbHG
|
||||
|
||||
Ich, **{{GF_NAME}}**, geboren am {{GF_BIRTHDATE}}, wohnhaft in {{GF_ADDRESS}}, versichere hiermit, dass keine Umstände vorliegen, die meiner Bestellung als Geschäftsführer/in der {{COMPANY_NAME}} gemäß § 6 Abs. 2 GmbHG entgegenstehen.
|
||||
|
||||
Ich wurde durch {{BELEHRUNG_DURCH}} über meine unbeschränkte Auskunftspflicht gegenüber dem Gericht belehrt (§ 53 Abs. 2 BZRG).
|
||||
|
||||
___________________________
|
||||
{{GF_NAME}}, {{GF_BIRTHDATE_PLACE}}, {{RESOLUTION_DATE}}
|
||||
{{/IF}}
|
||||
$template$,
|
||||
'["COMPANY_NAME","COMPANY_SEAT","COMPANY_REGISTRY_COURT","HRB_NUMBER","HAS_HRB","IS_FIRST_APPOINTMENT","IS_PLURAL_GF","RESOLUTION_DATE","MEETING_LOCATION","RESOLUTION_FORM","DOCUMENT_VERSION","IS_PRESENCE_MEETING","IS_WRITTEN_RESOLUTION","IS_VIDEO_MEETING","GESELLSCHAFTER_LISTE","ANWESENHEITSQUOTE_PCT","IS_EINSTIMMIG","BESCHLUSS_MEHRHEIT_PCT","IS_SINGLE_APPOINTMENT","IS_MULTI_APPOINTMENT","GF_NAME","GF_BIRTHDATE","GF_BIRTHDATE_PLACE","GF_ADDRESS","GF_VERTRETUNG","HAS_DELAYED_START","GF_START_DATE","GF_PARA_181_RELEASE","GF_LISTE_MIT_VERTRETUNGSART","HAS_RESSORT_ZUWEISUNG","HAS_DIENSTVERTRAG","SIGNATURES_GESELLSCHAFTER","HAS_VERSICHERUNG_BESTELLT","BELEHRUNG_DURCH"]'::jsonb,
|
||||
'de','DE',NULL,'MIT License','BreakPilot Compliance',false,true,'1.0.0','published',NOW(),NOW()
|
||||
;
|
||||
SELECT document_type, title, LENGTH(content), jsonb_array_length(placeholders) FROM compliance_legal_templates WHERE document_type = 'gf_bestellungsbeschluss' ORDER BY created_at DESC LIMIT 1;
|
||||
@@ -0,0 +1,169 @@
|
||||
-- Migration 130: Handelsregister-Anmeldung Template (HRB-Anmeldung)
|
||||
-- Pflichtdokument fuer Gruendung einer GmbH/UG gemaess §§ 7, 8, 39 GmbHG, § 12 HGB
|
||||
-- Wird vom Notar in oeffentlich beglaubigter Form eingereicht
|
||||
-- Optionale Bloecke: HAS_SACHEINLAGE, HAS_GENEHMIGUNG, HAS_EMPFANGSBERECHTIGTER, HAS_PARA_181_RELEASE
|
||||
-- Versicherungen nach § 8 Abs. 2 GmbHG (Einlageleistung) und § 6 Abs. 2 GmbHG (Bestellung) inklusive
|
||||
-- Belehrung nach § 53 BZRG
|
||||
|
||||
INSERT INTO compliance_legal_templates (
|
||||
id, tenant_id, document_type, title, description, content,
|
||||
placeholders, language, jurisdiction,
|
||||
license_id, license_name, source_name,
|
||||
attribution_required, is_complete_document, version, status,
|
||||
created_at, updated_at
|
||||
) SELECT
|
||||
gen_random_uuid(),
|
||||
'9282a473-5c95-4b3a-bf78-0ecc0ec71d3e',
|
||||
'hrb_anmeldung',
|
||||
'Anmeldung zur Eintragung im Handelsregister',
|
||||
'Anmeldung einer GmbH/UG zur Eintragung im Handelsregister gemaess §§ 7, 8, 39 GmbHG und § 12 HGB. Wird vom Notar in oeffentlich beglaubigter Form beim Registergericht eingereicht. Enthaelt alle Pflichtangaben (Firma, Sitz, Gegenstand, Stammkapital, Gesellschafter, Geschaeftsfuehrer, Vertretungsregelung, Geschaeftsjahr), Versicherungen nach §§ 6 Abs. 2 und 8 Abs. 2 GmbHG, Belehrung nach § 53 BZRG sowie Auflistung der beigefuegten Anlagen. Optional fuer Sacheinlage-Gruendung und genehmigungspflichtige Taetigkeiten.',
|
||||
$template$
|
||||
# Anmeldung zur Eintragung im Handelsregister
|
||||
|
||||
An das Amtsgericht **{{COMPANY_REGISTRY_COURT}}** — Registergericht —
|
||||
|
||||
{{REGISTRY_COURT_ADDRESS}}
|
||||
|
||||
---
|
||||
|
||||
## Dokumentenkontrolle
|
||||
|
||||
| Feld | Wert |
|
||||
|---|---|
|
||||
| Dokumenttyp | {{ANMELDUNG_TYP}} |
|
||||
| Gesellschaft | {{COMPANY_NAME}} |
|
||||
| Sitz | {{COMPANY_SEAT}} |
|
||||
| Datum | {{ANMELDUNG_DATE}} |
|
||||
| Beurkundender Notar | {{NOTARY_NAME}}, {{NOTARY_PLACE}} (URNr. {{NOTARY_URNR}}) |
|
||||
|
||||
**Hinweis:** Die Anmeldung erfolgt gemäß §§ 7, 8, 39 GmbHG durch sämtliche Geschäftsführer in öffentlich beglaubigter Form (§ 12 HGB). Die nachfolgenden Erklärungen sind durch den Notar zu beglaubigen.
|
||||
|
||||
---
|
||||
|
||||
## A. Anmeldung der Gesellschaft
|
||||
|
||||
Die unterzeichnenden Geschäftsführer melden hiermit die nachstehende Gesellschaft zur Eintragung in das Handelsregister an:
|
||||
|
||||
### 1. Firma und Rechtsform
|
||||
|
||||
**Firma:** {{COMPANY_NAME}}
|
||||
|
||||
**Rechtsform:** {{COMPANY_LEGAL_FORM}}
|
||||
|
||||
### 2. Sitz und Geschäftsanschrift
|
||||
|
||||
**Sitz der Gesellschaft:** {{COMPANY_SEAT}}
|
||||
|
||||
**Geschäftsanschrift:** {{COMPANY_ADDRESS}}
|
||||
|
||||
{{#IF HAS_EMPFANGSBERECHTIGTER}}
|
||||
**Empfangsberechtigter:** {{EMPFANGSBERECHTIGTER_NAME}}, {{EMPFANGSBERECHTIGTER_ADDRESS}}
|
||||
{{/IF}}
|
||||
|
||||
### 3. Gegenstand des Unternehmens
|
||||
|
||||
{{COMPANY_PURPOSE_DESCRIPTION}}
|
||||
|
||||
### 4. Stammkapital
|
||||
|
||||
Das Stammkapital beträgt **{{STAMMKAPITAL_EUR}} EUR**.
|
||||
|
||||
### 5. Geschäftsanteile und Gesellschafter
|
||||
|
||||
Die Gesellschaft hat folgende Gesellschafter mit den nachstehenden Geschäftsanteilen:
|
||||
|
||||
{{GESELLSCHAFTER_TABELLE}}
|
||||
|
||||
### 6. Geschäftsführer
|
||||
|
||||
Zu Geschäftsführer/innen sind bestellt:
|
||||
|
||||
{{GESCHAEFTSFUEHRER_LISTE}}
|
||||
|
||||
### 7. Vertretungsbefugnis
|
||||
|
||||
Die Vertretung der Gesellschaft erfolgt wie folgt:
|
||||
|
||||
{{VERTRETUNGSREGELUNG}}
|
||||
|
||||
{{#IF HAS_PARA_181_RELEASE}}
|
||||
**Befreiung von § 181 BGB:** {{PARA_181_DETAILS}}
|
||||
{{/IF}}
|
||||
|
||||
### 8. Geschäftsjahr
|
||||
|
||||
Das Geschäftsjahr ist {{BUSINESS_YEAR}}. Das erste Geschäftsjahr beginnt mit Eintragung der Gesellschaft im Handelsregister und endet am {{FIRST_YEAR_END}} (Rumpfgeschäftsjahr).
|
||||
|
||||
---
|
||||
|
||||
## B. Beigefügte Unterlagen
|
||||
|
||||
Der Anmeldung sind beigefügt:
|
||||
|
||||
1. Notariell beurkundete Satzung der Gesellschaft (Urkunde des Notars {{NOTARY_NAME}}, URNr. {{NOTARY_URNR}} vom {{NOTARIAL_DATE}})
|
||||
2. Gesellschafterliste gemäß § 40 GmbHG
|
||||
3. Gesellschafterbeschluss zur Bestellung der Geschäftsführer
|
||||
4. Versicherungen der Geschäftsführer gemäß § 6 Abs. 2 GmbHG sowie Belehrung nach § 53 BZRG
|
||||
5. Bescheinigung des kontoführenden Kreditinstituts über die Einzahlung der Stammeinlage(n) (§ 8 Abs. 2 GmbHG)
|
||||
{{#IF HAS_SACHEINLAGE}}
|
||||
6. Sachgründungsbericht gemäß § 5 Abs. 4 GmbHG
|
||||
7. Werthaltigkeitsnachweise für Sacheinlagen
|
||||
{{/IF}}
|
||||
{{#IF HAS_GENEHMIGUNG}}
|
||||
{{NEXT_DOC_NUMBER}}. Behördliche Genehmigungen für genehmigungspflichtige Tätigkeiten: {{GENEHMIGUNG_DETAILS}}
|
||||
{{/IF}}
|
||||
|
||||
---
|
||||
|
||||
## C. Versicherungen der Geschäftsführer
|
||||
|
||||
### C.1 Einlageleistung (§ 8 Abs. 2 GmbHG)
|
||||
|
||||
Wir, die unterzeichnenden Geschäftsführer, versichern, dass auf jede Bareinlage mindestens ein Viertel, insgesamt jedoch mindestens **{{STAMMKAPITAL_HALF_EUR}} EUR**, eingezahlt wurde und sich die Leistungen endgültig in der freien Verfügung der Geschäftsführer befinden.
|
||||
|
||||
Genaue Aufstellung:
|
||||
|
||||
{{EINZAHLUNGSAUFSTELLUNG}}
|
||||
|
||||
### C.2 Fortbestehen des Stammkapitals
|
||||
|
||||
Wir versichern, dass das Stammkapital nicht vor der Anmeldung verringert wurde und sich in der freien Verfügung der Gesellschaft befindet.
|
||||
|
||||
### C.3 Bestellungsvoraussetzungen (§ 6 Abs. 2 GmbHG)
|
||||
|
||||
Wir, die unterzeichnenden Geschäftsführer, versichern, dass keine Umstände vorliegen, die einer Bestellung als Geschäftsführer entgegenstehen würden. Insbesondere bestehen keine Verurteilungen wegen:
|
||||
|
||||
- Insolvenzstraftaten (§§ 283 bis 283d StGB),
|
||||
- Vermögensdelikten (§§ 263 bis 264a, 265b bis 266a StGB) in den letzten fünf Jahren,
|
||||
- vergleichbarer Straftaten im Ausland.
|
||||
|
||||
Es bestehen keine berufs- oder gewerberechtlichen Untersagungen, die die Geschäftsführung dieser Gesellschaft betreffen würden.
|
||||
|
||||
Wir wurden durch den unterzeichnenden Notar über die unbeschränkte Auskunftspflicht gegenüber dem Gericht gemäß § 53 BZRG belehrt.
|
||||
|
||||
---
|
||||
|
||||
## D. Inländische Geschäftsanschrift
|
||||
|
||||
Wir versichern, dass die unter Ziffer A.2 angegebene Geschäftsanschrift die tatsächliche und nicht nur eine Zustellungsanschrift ist und unter dieser Anschrift Zustellungen an die Gesellschaft entgegengenommen werden können.
|
||||
|
||||
---
|
||||
|
||||
**{{COMPANY_SEAT}}, {{ANMELDUNG_DATE}}**
|
||||
|
||||
{{GF_SIGNATURES_BEGLAUBIGUNG}}
|
||||
|
||||
---
|
||||
|
||||
## Beglaubigungsvermerk
|
||||
|
||||
(wird durch den beurkundenden Notar erstellt)
|
||||
|
||||
Hiermit beglaubige ich die vorstehenden Unterschriften, die in meiner Gegenwart vollzogen wurden durch die jeweiligen Geschäftsführer, die mir persönlich bekannt sind / sich durch Vorlage des Personalausweises ausgewiesen haben.
|
||||
|
||||
{{NOTARY_NAME}}, Notar in {{NOTARY_PLACE}}, am {{ANMELDUNG_DATE}}, URNr. {{NOTARY_BEGLAUBIGUNG_URNR}}
|
||||
$template$,
|
||||
'["COMPANY_REGISTRY_COURT","REGISTRY_COURT_ADDRESS","ANMELDUNG_TYP","COMPANY_NAME","COMPANY_SEAT","ANMELDUNG_DATE","NOTARY_NAME","NOTARY_PLACE","NOTARY_URNR","NOTARIAL_DATE","NOTARY_BEGLAUBIGUNG_URNR","COMPANY_LEGAL_FORM","COMPANY_ADDRESS","HAS_EMPFANGSBERECHTIGTER","EMPFANGSBERECHTIGTER_NAME","EMPFANGSBERECHTIGTER_ADDRESS","COMPANY_PURPOSE_DESCRIPTION","STAMMKAPITAL_EUR","STAMMKAPITAL_HALF_EUR","GESELLSCHAFTER_TABELLE","GESCHAEFTSFUEHRER_LISTE","VERTRETUNGSREGELUNG","HAS_PARA_181_RELEASE","PARA_181_DETAILS","BUSINESS_YEAR","FIRST_YEAR_END","HAS_SACHEINLAGE","HAS_GENEHMIGUNG","GENEHMIGUNG_DETAILS","NEXT_DOC_NUMBER","EINZAHLUNGSAUFSTELLUNG","GF_SIGNATURES_BEGLAUBIGUNG"]'::jsonb,
|
||||
'de','DE',NULL,'MIT License','BreakPilot Compliance',false,true,'1.0.0','published',NOW(),NOW()
|
||||
;
|
||||
SELECT document_type, title, LENGTH(content), jsonb_array_length(placeholders) FROM compliance_legal_templates WHERE document_type = 'hrb_anmeldung' ORDER BY created_at DESC LIMIT 1;
|
||||
@@ -0,0 +1,178 @@
|
||||
-- Migration 131: IP-Assignment Agreement Template (Gruender->GmbH IP-Uebertragung)
|
||||
-- Separates Dokument zur Sicherung von vor-/aussergesellschaftlichem IP
|
||||
-- Kritisch fuer Due Diligence bei Investoren-Runden
|
||||
-- Optionale Bloecke: HAS_HRB, HAS_BAR_VERGUETUNG / HAS_SHARES_AS_COMPENSATION / HAS_NO_VERGUETUNG,
|
||||
-- HAS_ACADEMIC_BACKGROUND, HAS_SHA
|
||||
-- Inklusive Anlagen-Sektion fuer konkrete IP-Liste und Ausnahmen (Open Source, akademisches IP)
|
||||
|
||||
INSERT INTO compliance_legal_templates (
|
||||
id, tenant_id, document_type, title, description, content,
|
||||
placeholders, language, jurisdiction,
|
||||
license_id, license_name, source_name,
|
||||
attribution_required, is_complete_document, version, status,
|
||||
created_at, updated_at
|
||||
) SELECT
|
||||
gen_random_uuid(),
|
||||
'9282a473-5c95-4b3a-bf78-0ecc0ec71d3e',
|
||||
'ip_assignment_agreement',
|
||||
'IP-Assignment Agreement (Geistiges Eigentum Übertragung)',
|
||||
'Vertragliche Uebertragung vor-/aussergesellschaftlichen IP von einem Gruender oder Mitarbeiter auf die Gesellschaft. Kritisch fuer Investoren-Due-Diligence: stellt Rechtsklarheit ueber Software, KI-Modelle, Patente, Marken, Designs, Texte und sonstige Schutzrechte her. Mit Abtretung uebertragbarer Rechte plus Einraeumung exklusiver Nutzungsrechte fuer nicht uebertragbare Rechte (Urheberrecht § 29 UrhG). Vergueutungs-Optionen: Bar, Equity-as-Consideration oder unentgeltlich. Spezialklauseln fuer akademische Taetigkeit und Drittmittel-Vorbehalte. Anlagen-Sektion fuer konkrete IP-Liste und Open-Source-Vorbehalte.',
|
||||
$template$
|
||||
# IP-Assignment Agreement (Übertragungsvereinbarung Geistiges Eigentum)
|
||||
|
||||
zwischen
|
||||
|
||||
**{{ASSIGNOR_NAME}}**, geboren am {{ASSIGNOR_BIRTHDATE}}, wohnhaft in {{ASSIGNOR_ADDRESS}}
|
||||
|
||||
- nachfolgend „Übertragender" / „Assignor" -
|
||||
|
||||
und
|
||||
|
||||
**{{COMPANY_NAME}}**, {{COMPANY_ADDRESS}}{{#IF HAS_HRB}}, eingetragen im Handelsregister des Amtsgerichts {{COMPANY_REGISTRY_COURT}} unter HRB {{HRB_NUMBER}}{{/IF}}{{#IF NOT HAS_HRB}} (in Gründung){{/IF}}, vertreten durch {{COMPANY_REPRESENTATIVE}}
|
||||
|
||||
- nachfolgend „Gesellschaft" / „Assignee" -
|
||||
|
||||
---
|
||||
|
||||
## Dokumentenkontrolle
|
||||
|
||||
| Feld | Wert |
|
||||
|---|---|
|
||||
| Vertragstyp | IP-Assignment Agreement |
|
||||
| Datum | {{AGREEMENT_DATE}} |
|
||||
| Gegenstand | Übertragung vor-/außergesellschaftlichen IP |
|
||||
| Version | {{DOCUMENT_VERSION}} |
|
||||
|
||||
---
|
||||
|
||||
## Präambel
|
||||
|
||||
(A) Die Gesellschaft befindet sich {{#IF NOT HAS_HRB}}in Gründung und wird ihre Tätigkeit aufnehmen{{/IF}}{{#IF HAS_HRB}}im Geschäftsbetrieb{{/IF}} im Bereich {{COMPANY_PURPOSE_SHORT}}.
|
||||
|
||||
(B) Der Übertragende ist {{ASSIGNOR_ROLE}} der Gesellschaft und hat in der Phase vor und/oder außerhalb seiner Gesellschafter-/Mitarbeitertätigkeit verschiedene immaterielle Vermögenswerte erschaffen, die für den Geschäftsbetrieb der Gesellschaft wesentlich sind („Vor-/Außer-Gesellschafts-IP" oder „Übertragungs-IP").
|
||||
|
||||
(C) Die Parteien beabsichtigen, sämtliche Rechte an diesem IP — soweit rechtlich zulässig — von dem Übertragenden auf die Gesellschaft zu übertragen, um Rechtsklarheit für künftige Investoren, Lizenznehmer und Vertragspartner zu schaffen.
|
||||
|
||||
(D) Dieses Agreement wirkt eigenständig neben etwaigen IP-Klauseln im Gesellschaftsvertrag, im Shareholders' Agreement oder im Anstellungsvertrag und konkretisiert diese.
|
||||
|
||||
---
|
||||
|
||||
## § 1 Gegenstand der Übertragung
|
||||
|
||||
(1) **Übertragungs-IP** im Sinne dieses Agreements umfasst sämtliche immateriellen Vermögenswerte, die der Übertragende vor Unterzeichnung dieses Agreements geschaffen, mitgeschaffen oder zu denen er beigetragen hat, soweit sie mit dem Gegenstand der Gesellschaft im Zusammenhang stehen. Insbesondere:
|
||||
|
||||
(a) **Software und Quellcode** (einschließlich Algorithmen, Skripte, Bibliotheken, Configurations, Build-Systeme),
|
||||
(b) **KI-Modelle, Trainingsdaten, Pipelines** und damit verbundene technische Konzepte,
|
||||
(c) **Datenbanken** und deren Strukturen,
|
||||
(d) **Dokumentation, Spezifikationen, technische Konzepte, Architekturentscheidungen**,
|
||||
(e) **Designs, UI/UX-Konzepte, Wireframes, Mockups, Branding-Materialien**,
|
||||
(f) **Marken, Logos, Domains, Brandname-Konzepte**,
|
||||
(g) **Erfindungen** (patentierbar oder nicht), Verfahren, Methoden,
|
||||
(h) **Konzepte, Business-Pläne, Marktstudien, Strategiedokumente**,
|
||||
(i) **Texte, audiovisuelle Werke** und sonstige urheberrechtlich geschützte Inhalte,
|
||||
(j) **Know-how und Geschäftsgeheimnisse**, die mit den vorgenannten Werken in Zusammenhang stehen.
|
||||
|
||||
(2) Eine **Liste der konkret übertragenen Werke** ist als **Anlage 1** beigefügt. Die Liste hat indikative Wirkung; eine fehlende Aufführung in der Anlage führt nicht zum Ausschluss der Übertragung, sofern das jeweilige Werk dem Gegenstand der Gesellschaft dient.
|
||||
|
||||
## § 2 Übertragung und Einräumung von Rechten
|
||||
|
||||
(1) **Übertragung übertragbarer Rechte.** Der Übertragende tritt hiermit der Gesellschaft sämtliche an dem Übertragungs-IP bestehenden übertragbaren Rechte ab. Die Gesellschaft nimmt diese Abtretung an.
|
||||
|
||||
(2) **Einräumung nicht übertragbarer Rechte (Urheberrecht).** Soweit Rechte am Übertragungs-IP nach deutschem Recht nicht übertragbar sind (insbesondere das Urheberrecht selbst gemäß § 29 UrhG), räumt der Übertragende der Gesellschaft hiermit das ausschließliche, übertragbare, zeitlich, räumlich und inhaltlich unbeschränkte Nutzungsrecht für **sämtliche bekannten und unbekannten Nutzungsarten** ein. Dieses Recht umfasst insbesondere das Vervielfältigungs-, Verbreitungs-, Bearbeitungs-, Sendungs- und das Recht zur öffentlichen Wiedergabe.
|
||||
|
||||
(3) **Bearbeitungsrecht und Unterlizenzierung.** Die Gesellschaft ist berechtigt, das Übertragungs-IP zu bearbeiten, zu modifizieren, weiterzuentwickeln, Unterlizenzen zu erteilen und Schutzrechte (Patente, Marken, Designs) auf eigenen Namen anzumelden.
|
||||
|
||||
(4) **Verzicht auf Urheberbenennung.** Der Übertragende verzichtet, soweit rechtlich zulässig, auf das Recht auf Urheberbenennung (§ 13 UrhG) gegenüber der Gesellschaft und ihren Kunden/Lizenznehmern. Davon unberührt bleibt das Verbot der Entstellung gemäß § 14 UrhG.
|
||||
|
||||
(5) **Wirksamkeit.** Die Übertragung wird mit Unterzeichnung dieses Agreements wirksam und gilt rückwirkend auch für vor diesem Datum entstandenes Übertragungs-IP.
|
||||
|
||||
## § 3 Vergütung
|
||||
|
||||
{{#IF HAS_BAR_VERGUETUNG}}
|
||||
(1) Als Gegenleistung für die Übertragung erhält der Übertragende eine einmalige Vergütung von **{{IP_VERGUETUNG_EUR}} EUR**, zahlbar innerhalb von {{ZAHLUNGSFRIST_TAGE}} Tagen nach Unterzeichnung.
|
||||
{{/IF}}
|
||||
{{#IF HAS_SHARES_AS_COMPENSATION}}
|
||||
(1) Als Gegenleistung erhält der Übertragende die ihm im Rahmen der Gründung der Gesellschaft zugewiesenen Geschäftsanteile (Cash-Free / Equity-as-Consideration). Eine darüber hinausgehende Vergütung ist nicht geschuldet.
|
||||
{{/IF}}
|
||||
{{#IF HAS_NO_VERGUETUNG}}
|
||||
(1) Die Übertragung erfolgt ohne gesonderte Vergütung im Rahmen der Gesellschafter- bzw. Anstellungsbeziehung. Die wirtschaftliche Gegenleistung ergibt sich aus der Gesellschafterstellung bzw. dem Anstellungsverhältnis des Übertragenden.
|
||||
{{/IF}}
|
||||
|
||||
(2) **Arbeitnehmererfindergesetz.** Soweit das ArbnErfG anwendbar ist, bleiben dessen Vergütungsregelungen unberührt. Etwaige Vergütungsansprüche werden auf die in Abs. (1) genannte Gegenleistung angerechnet.
|
||||
|
||||
## § 4 Garantien des Übertragenden
|
||||
|
||||
(1) Der Übertragende garantiert, dass:
|
||||
(a) er Inhaber sämtlicher abzutretenden Rechte am Übertragungs-IP ist und über diese frei verfügen kann,
|
||||
(b) das Übertragungs-IP frei von Rechten Dritter ist (insbesondere keine Vorbenutzungs-, Mit-Erfinder- oder Lizenzrechte Dritter bestehen),
|
||||
(c) keine Open-Source-Komponenten mit Copyleft-Wirkung (z. B. GPL) verwendet wurden, die eine kommerzielle Verwertung beschränken würden — Ausnahmen sind in **Anlage 2** zu dokumentieren,
|
||||
(d) das Übertragungs-IP nicht aus einem Arbeitsverhältnis, Lehrverhältnis, Forschungsprojekt oder einer Drittmittel-Förderung stammt, das/die Rechte Dritter begründen könnte; Ausnahmen sind ebenfalls in **Anlage 2** zu dokumentieren,
|
||||
(e) sämtliche zur Übertragung erforderlichen Mitwirkungs- und Erklärungspflichten erfüllt werden.
|
||||
|
||||
(2) **Freistellung.** Bei Verletzung der vorstehenden Garantien stellt der Übertragende die Gesellschaft von allen Ansprüchen Dritter frei, soweit die Verletzung von ihm zu vertreten ist.
|
||||
|
||||
(3) **Verjährung.** Ansprüche aus diesen Garantien verjähren in **{{GUARANTEE_VERJAEHRUNG_JAHRE}} Jahren** ab Kenntnis der Gesellschaft vom rechtsbegründenden Sachverhalt.
|
||||
|
||||
## § 5 Mitwirkung und weitere Erklärungen
|
||||
|
||||
(1) Der Übertragende verpflichtet sich, sämtliche Erklärungen abzugeben und Handlungen vorzunehmen, die zur wirksamen Übertragung der Rechte oder zur Anmeldung von Schutzrechten erforderlich sind. Dies umfasst insbesondere:
|
||||
(a) Mitwirkung bei Patent-, Marken- und Designanmeldungen,
|
||||
(b) Übergabe sämtlicher relevanter Dokumente, Code-Repositories, Designdateien, Trainingsdaten in maschinenlesbarer Form,
|
||||
(c) Erläuterung technischer Details an die Gesellschaft oder von ihr benannte Dritte.
|
||||
|
||||
(2) Diese Mitwirkungspflicht besteht auch nach Beendigung der Gesellschafter-/Anstellungsstellung fort, soweit dies zur Verteidigung oder Anmeldung von Schutzrechten erforderlich ist.
|
||||
|
||||
{{#IF HAS_ACADEMIC_BACKGROUND}}
|
||||
## § 6 Akademische Tätigkeit und Drittmittelprojekte
|
||||
|
||||
(1) Der Übertragende erklärt, dass IP, das aus seiner akademischen Tätigkeit (Hochschule, Forschungseinrichtung) oder aus Drittmittelprojekten stammt, **nicht** Gegenstand dieser Übertragung ist, soweit es Rechten Dritter (z. B. Hochschule, Förderbestimmungen) unterliegt.
|
||||
|
||||
(2) Etwaige Nutzungsmöglichkeiten solchen IP für die Gesellschaft erfordern eine separate Vereinbarung mit der jeweiligen Einrichtung.
|
||||
|
||||
(3) Der Übertragende verpflichtet sich, in seiner künftigen akademischen Tätigkeit keine vertraulichen Informationen oder IP der Gesellschaft offenzulegen oder zu verwenden.
|
||||
{{/IF}}
|
||||
|
||||
## § 7 Geltungsbereich, Vertragsänderungen, Schlussbestimmungen
|
||||
|
||||
(1) **Verhältnis zu anderen Verträgen.** Dieses Agreement gilt ergänzend zu:
|
||||
(a) {{#IF HAS_SHA}}dem Shareholders' Agreement (SHA),{{/IF}}
|
||||
(b) dem Geschäftsführerdienstvertrag/Arbeitsvertrag des Übertragenden,
|
||||
(c) der Satzung der Gesellschaft.
|
||||
|
||||
Bei Widersprüchen zu späteren IP-Klauseln in Anstellungs- oder Gesellschafterverträgen gelten die spezifischeren Regelungen vor; im Zweifel die für die Gesellschaft günstigere Auslegung.
|
||||
|
||||
(2) **Schriftform.** Änderungen und Ergänzungen bedürfen der Schriftform. Dies gilt auch für die Aufhebung des Schriftformerfordernisses.
|
||||
|
||||
(3) **Salvatorische Klausel.** Sollten einzelne Bestimmungen unwirksam sein, bleibt das Agreement im Übrigen wirksam.
|
||||
|
||||
(4) **Anwendbares Recht und Gerichtsstand.** Es gilt deutsches Recht. Gerichtsstand ist der Sitz der Gesellschaft.
|
||||
|
||||
(5) **Anlagen.** Folgende Anlagen sind Bestandteil dieses Agreements:
|
||||
- **Anlage 1:** Liste des konkret übertragenen IP (indikativ)
|
||||
- **Anlage 2:** Vorbehalte und Ausnahmen (Open Source, Akademisches IP, Drittrechte)
|
||||
|
||||
---
|
||||
|
||||
**{{SIGNATURE_LOCATION}}, {{AGREEMENT_DATE}}**
|
||||
|
||||
___________________________
|
||||
{{ASSIGNOR_NAME}} (Übertragender)
|
||||
|
||||
___________________________
|
||||
Für die Gesellschaft
|
||||
{{COMPANY_REPRESENTATIVE}}
|
||||
|
||||
---
|
||||
|
||||
## Anlage 1 — Liste des konkret übertragenen IP
|
||||
|
||||
{{IP_LIST_DETAILS}}
|
||||
|
||||
## Anlage 2 — Vorbehalte und Ausnahmen
|
||||
|
||||
{{IP_EXCEPTIONS_DETAILS}}
|
||||
$template$,
|
||||
'["ASSIGNOR_NAME","ASSIGNOR_BIRTHDATE","ASSIGNOR_ADDRESS","ASSIGNOR_ROLE","COMPANY_NAME","COMPANY_ADDRESS","COMPANY_REGISTRY_COURT","HRB_NUMBER","HAS_HRB","COMPANY_REPRESENTATIVE","COMPANY_PURPOSE_SHORT","AGREEMENT_DATE","DOCUMENT_VERSION","HAS_BAR_VERGUETUNG","HAS_SHARES_AS_COMPENSATION","HAS_NO_VERGUETUNG","IP_VERGUETUNG_EUR","ZAHLUNGSFRIST_TAGE","GUARANTEE_VERJAEHRUNG_JAHRE","HAS_ACADEMIC_BACKGROUND","HAS_SHA","SIGNATURE_LOCATION","IP_LIST_DETAILS","IP_EXCEPTIONS_DETAILS"]'::jsonb,
|
||||
'de','DE',NULL,'MIT License','BreakPilot Compliance',false,true,'1.0.0','published',NOW(),NOW()
|
||||
;
|
||||
SELECT document_type, title, LENGTH(content), jsonb_array_length(placeholders) FROM compliance_legal_templates WHERE document_type = 'ip_assignment_agreement' ORDER BY created_at DESC LIMIT 1;
|
||||
@@ -0,0 +1,264 @@
|
||||
-- Migration 132: Term Sheet Template (Pre-Seed / Seed / Series A)
|
||||
-- Indikative Investitionsabsichtserklaerung, ueberwiegend nicht-bindend
|
||||
-- Bindende Elemente: §§ 12 Exklusivitaet, 13 Vertraulichkeit, 14 Kosten, 15 Recht/Gerichtsstand
|
||||
-- Orientiert an BvK Mustertexten und VC-Standards (Pre-Seed bis Series A)
|
||||
-- Optionale Bloecke: HAS_HRB, HAS_TRANCHES, IS_PREFERRED_SHARES/IS_COMMON_SHARES,
|
||||
-- HAS_LIQUIDATION_PREFERENCE, IS_PARTICIPATING, HAS_ANTI_DILUTION, HAS_BOARD_SEAT, HAS_OBSERVER,
|
||||
-- COMPANY_PAYS_COSTS / EACH_PARTY_PAYS
|
||||
|
||||
INSERT INTO compliance_legal_templates (
|
||||
id, tenant_id, document_type, title, description, content,
|
||||
placeholders, language, jurisdiction,
|
||||
license_id, license_name, source_name,
|
||||
attribution_required, is_complete_document, version, status,
|
||||
created_at, updated_at
|
||||
) SELECT
|
||||
gen_random_uuid(),
|
||||
'9282a473-5c95-4b3a-bf78-0ecc0ec71d3e',
|
||||
'term_sheet',
|
||||
'Term Sheet (Investitionsangebot)',
|
||||
'Indikative Investitionsabsichtserklaerung fuer Venture Capital / Angel Investments in Pre-Seed-, Seed- oder Series-A-Phase. Strukturiert nach VC-Standards (BvK, EVCA, YC SAFE). Enthaelt alle wesentlichen Konditionen (Bewertung, Tranching, Vorzugsrechte, Liquidation Preference, Anti-Dilution, Vesting, Drag/Tag-Along, ESOP-Pool, Pre-emptive Rights, ROFR, Closing Conditions, Due Diligence). Bindende Klauseln: Exklusivitaet, Vertraulichkeit, Kostentragung, Rechtswahl. Skalierbar fuer verschiedene Investorentypen (Angel, VC, Strategischer) und Investmentstrukturen (Preferred/Common, Single Tranche/Multi Tranche, mit/ohne Boardsitz).',
|
||||
$template$
|
||||
# Term Sheet — Investitionsangebot
|
||||
|
||||
**Indikative, nicht-bindende Vorvereinbarung zur geplanten Investition in {{COMPANY_NAME}}**
|
||||
|
||||
zwischen
|
||||
|
||||
**{{INVESTOR_NAME}}** („Investor")
|
||||
|
||||
und
|
||||
|
||||
**{{COMPANY_NAME}}**, {{COMPANY_ADDRESS}}{{#IF HAS_HRB}}, eingetragen unter HRB {{HRB_NUMBER}}{{/IF}} („Gesellschaft")
|
||||
|
||||
und
|
||||
|
||||
**den in Anlage A genannten Gründern** ("Gründer")
|
||||
|
||||
---
|
||||
|
||||
## Dokumentenkontrolle
|
||||
|
||||
| Feld | Wert |
|
||||
|---|---|
|
||||
| Vertragstyp | Term Sheet (Investitionsabsichtserklärung) |
|
||||
| Stand | {{TERM_SHEET_DATE}} |
|
||||
| Investment-Phase | {{INVESTMENT_PHASE}} (z.B. Pre-Seed, Seed, Series A) |
|
||||
| Bindungswirkung | Indikativ, nicht-bindend (Ausnahmen: §§ 12-14) |
|
||||
| Gültigkeit / Exklusivität bis | {{EXCLUSIVITY_END_DATE}} |
|
||||
|
||||
> **Hinweis:** Dieses Term Sheet beschreibt die wesentlichen Bedingungen der geplanten Investition. Es ist außer in den ausdrücklich gekennzeichneten Punkten (Exklusivität, Vertraulichkeit, Kostentragung, anwendbares Recht) **rechtlich nicht bindend**. Verbindlich werden die Konditionen erst durch Abschluss des Beteiligungs- und Gesellschaftervertrages („Definitive Documents") in notarieller Form.
|
||||
|
||||
---
|
||||
|
||||
## § 1 Investitionsstruktur
|
||||
|
||||
| Punkt | Wert |
|
||||
|---|---|
|
||||
| **Investitionsbetrag** | {{INVESTMENT_AMOUNT_EUR}} EUR |
|
||||
| **Pre-Money-Bewertung** | {{PRE_MONEY_VALUATION_EUR}} EUR |
|
||||
| **Post-Money-Bewertung** | {{POST_MONEY_VALUATION_EUR}} EUR |
|
||||
| **Investitions-Instrument** | {{INVESTMENT_INSTRUMENT}} (z.B. Stammanteile, Vorzugsanteile, Wandeldarlehen, SAFE) |
|
||||
| **Resultierende Beteiligung Investor** | {{INVESTOR_STAKE_PCT}} % am Post-Money-Stammkapital |
|
||||
| **Geplantes Closing-Datum** | {{TARGET_CLOSING_DATE}} |
|
||||
|
||||
### 1.1 Tranching
|
||||
|
||||
{{#IF HAS_TRANCHES}}
|
||||
Das Investment wird in folgenden Tranchen ausgezahlt:
|
||||
|
||||
{{TRANCHES_TABLE}}
|
||||
{{/IF}}
|
||||
{{#IF NOT HAS_TRANCHES}}
|
||||
Das Investment wird in einer einzigen Tranche zum Closing-Datum ausgezahlt.
|
||||
{{/IF}}
|
||||
|
||||
## § 2 Verwendung der Mittel (Use of Proceeds)
|
||||
|
||||
Die Investitionsmittel werden insbesondere verwendet für:
|
||||
|
||||
{{USE_OF_PROCEEDS}}
|
||||
|
||||
## § 3 Aktien-/Anteilsklassen und Vorzugsrechte
|
||||
|
||||
### 3.1 Anteilsklasse
|
||||
|
||||
{{#IF IS_PREFERRED_SHARES}}
|
||||
Der Investor erhält **Vorzugsanteile (Preferred Shares)** mit den nachfolgend beschriebenen Vorzugsrechten.
|
||||
{{/IF}}
|
||||
{{#IF IS_COMMON_SHARES}}
|
||||
Der Investor erhält **Stammanteile (Common Shares)** ohne besondere Vorzugsrechte.
|
||||
{{/IF}}
|
||||
|
||||
### 3.2 Liquidation Preference
|
||||
|
||||
{{#IF HAS_LIQUIDATION_PREFERENCE}}
|
||||
Im Falle eines Liquidationsereignisses (Exit, Verkauf, Liquidation der Gesellschaft) erhält der Investor:
|
||||
- **{{LIQ_PREF_MULTIPLIER}}× non-participating Liquidation Preference** (1× ist marktstandard für Seed/Pre-Seed)
|
||||
- Nach Erhalt der Preference partizipiert der Investor **{{#IF IS_PARTICIPATING}}vollständig (Participating){{/IF}}{{#IF NOT IS_PARTICIPATING}}nicht weiter (Non-Participating){{/IF}}** an verbleibenden Erlösen.
|
||||
- Bei Non-Participating: Wahlrecht zwischen Preference oder pro-rata Erlös, je nachdem was höher ist (Standard).
|
||||
{{/IF}}
|
||||
|
||||
### 3.3 Anti-Dilution Schutz
|
||||
|
||||
{{#IF HAS_ANTI_DILUTION}}
|
||||
Bei künftigen Finanzierungsrunden zu einem Preis pro Anteil **unter** dem in dieser Runde gezahlten Preis greift folgender Verwässerungsschutz:
|
||||
|
||||
- **Methode:** {{ANTI_DILUTION_METHOD}} (Standard: Broad-Based Weighted Average)
|
||||
- **Ausnahmen:** ESOP-Pool-Allokationen, Bonus-Anteile bei Akquisitionen, Pflichtwandlungen
|
||||
{{/IF}}
|
||||
|
||||
### 3.4 Mitspracherechte (Reserved Matters)
|
||||
|
||||
Der Investor erhält ein Vetorecht bei wesentlichen Entscheidungen, insbesondere:
|
||||
- Änderung der Satzung/des SHA
|
||||
- Aufnahme weiterer Gesellschafter, neue Anteilsausgaben
|
||||
- Aufnahme von Krediten > {{LOAN_THRESHOLD_EUR}} EUR
|
||||
- Verkauf wesentlicher Vermögenswerte
|
||||
- Änderung des Geschäftsmodells
|
||||
- Bestellung/Abberufung Geschäftsführer
|
||||
- Beschluss über ESOP-Plan
|
||||
- Liquidations- oder Insolvenzentscheidungen
|
||||
|
||||
Detaillierte Reserved Matters-Liste folgt im SHA (typischerweise 12-18 Punkte).
|
||||
|
||||
## § 4 Governance
|
||||
|
||||
### 4.1 Beirat / Board
|
||||
|
||||
{{#IF HAS_BOARD_SEAT}}
|
||||
- **Größe:** {{BOARD_SIZE}} Mitglieder
|
||||
- **Investor-Sitze:** {{INVESTOR_BOARD_SEATS}} Sitz(e)
|
||||
- **Gründer-Sitze:** {{FOUNDER_BOARD_SEATS}} Sitz(e)
|
||||
- **Unabhängige:** {{INDEPENDENT_BOARD_SEATS}} Sitz(e)
|
||||
- **Sitzungsfrequenz:** mindestens {{BOARD_MEETING_FREQ}}
|
||||
- **Observer Rights:** {{#IF HAS_OBSERVER}}Ja, für nicht-stimmberechtigte Investoren{{/IF}}{{#IF NOT HAS_OBSERVER}}Keine{{/IF}}
|
||||
{{/IF}}
|
||||
|
||||
### 4.2 Informationsrechte
|
||||
|
||||
Der Investor erhält folgende Mindest-Informationsrechte:
|
||||
- **Monatlich:** Liquiditätsbericht, KPI-Dashboard
|
||||
- **Quartalsweise:** Quartalsabschluss (P&L, Bilanz, Cashflow), Status Risk Register
|
||||
- **Jährlich:** Auditierter Jahresabschluss innerhalb {{ANNUAL_REPORT_MONTHS}} Monaten nach GJ-Ende
|
||||
- **Ad hoc:** Materielle Ereignisse, drohende Liquiditätsrisiken, rechtliche Verfahren
|
||||
|
||||
## § 5 Vesting und Founder Lock-up
|
||||
|
||||
### 5.1 Founder Vesting
|
||||
|
||||
Die Gründer unterliegen einem (Re-)Vesting:
|
||||
- **Dauer:** {{VESTING_MONTHS}} Monate
|
||||
- **Cliff:** {{CLIFF_MONTHS}} Monate
|
||||
- **Vesting-Beginn:** {{VESTING_START_REF}}
|
||||
- **Acceleration bei Exit:** Single-Trigger bei Sale of >{{ACCELERATION_THRESHOLD_PCT}}% der Anteile
|
||||
|
||||
### 5.2 Founder Lock-up
|
||||
|
||||
Die Gründer verpflichten sich für {{FOUNDER_LOCKUP_MONTHS}} Monate nach Closing zu **Full-Time-Commitment** zur Gesellschaft. Ausnahmen werden im SHA spezifiziert.
|
||||
|
||||
## § 6 Drag-Along und Tag-Along
|
||||
|
||||
- **Drag-Along-Schwelle:** {{DRAG_ALONG_THRESHOLD_PCT}} % (Standard 75 %)
|
||||
- **Tag-Along ab:** {{TAG_ALONG_THRESHOLD_PCT}} % Anteilsverkauf eines Gründers
|
||||
- **Same-Terms-Prinzip:** Alle Gesellschafter erhalten identische wirtschaftliche Konditionen
|
||||
|
||||
## § 7 ESOP / Mitarbeiter-Beteiligung
|
||||
|
||||
- **Aktueller ESOP-Pool:** {{CURRENT_ESOP_PCT}} %
|
||||
- **Ziel-ESOP-Pool nach Investment:** {{TARGET_ESOP_PCT}} %
|
||||
- **Pre-Money oder Post-Money Pool Top-up:** {{ESOP_TOP_UP_TIMING}} (Standard: Pre-Money — Gründer tragen Verwässerung)
|
||||
|
||||
## § 8 Pre-emptive Rights (Bezugsrechte)
|
||||
|
||||
Der Investor erhält bei künftigen Finanzierungsrunden ein Pro-Rata-Bezugsrecht, um seine Beteiligungsquote aufrechtzuerhalten.
|
||||
|
||||
## § 9 Right of First Refusal (ROFR) / Co-Sale
|
||||
|
||||
Bei Anteilsverkäufen durch Gründer:
|
||||
- **ROFR:** Investor hat Vorkaufsrecht (14-Tage-Frist)
|
||||
- **Co-Sale-Right:** Investor kann pro-rata mitverkaufen, falls ROFR nicht ausgeübt wird
|
||||
|
||||
## § 10 Closing-Conditions
|
||||
|
||||
Das Closing ist u.a. an folgende Bedingungen geknüpft:
|
||||
- Erfolgreiche Due Diligence (rechtlich, technisch, finanziell)
|
||||
- Abschluss aller Definitive Documents (Beteiligungsvertrag, SHA, ggf. Satzungsänderung)
|
||||
- Bestätigung der IP-Übertragung von den Gründern auf die Gesellschaft
|
||||
- Keine wesentliche nachteilige Veränderung („Material Adverse Change")
|
||||
- Erforderliche Genehmigungen (insb. ggf. behördliche Anzeigen)
|
||||
- Existenz/Anpassung relevanter Anstellungsverträge der Schlüsselpersonen
|
||||
|
||||
## § 11 Due Diligence
|
||||
|
||||
Der Investor wird eine Due Diligence durchführen mit Schwerpunkt auf:
|
||||
- **Legal:** Satzung, SHA, IP, Verträge, Compliance
|
||||
- **Technical:** Architektur, Skalierbarkeit, IP-Sicherung, Open-Source-Compliance
|
||||
- **Financial:** Liquidität, Cap Table, Forecasts, Unit Economics
|
||||
- **Commercial:** Kundenbasis, Markt, Wettbewerb
|
||||
|
||||
Die Gesellschaft sichert volle Kooperation zu und stellt einen Datenraum zur Verfügung.
|
||||
|
||||
---
|
||||
|
||||
## **§ 12 EXKLUSIVITÄT (BINDEND)**
|
||||
|
||||
Die Gesellschaft und die Gründer verpflichten sich für einen Zeitraum von **{{EXCLUSIVITY_WEEKS}} Wochen** ab Unterzeichnung dieses Term Sheets („Exklusivitätsperiode"), keine Verhandlungen mit anderen potenziellen Investoren über eine vergleichbare Beteiligung zu führen und keinerlei Investitionsangebote Dritter anzunehmen.
|
||||
|
||||
## **§ 13 VERTRAULICHKEIT (BINDEND)**
|
||||
|
||||
Beide Parteien behandeln den Inhalt dieses Term Sheets sowie alle im Zusammenhang ausgetauschten Informationen vertraulich. Ausnahmen: Offenlegung gegenüber Beratern unter Verschwiegenheitspflicht oder bei gesetzlicher Pflicht.
|
||||
|
||||
## **§ 14 KOSTENTRAGUNG (BINDEND)**
|
||||
|
||||
{{#IF COMPANY_PAYS_COSTS}}
|
||||
Die Gesellschaft trägt die angemessenen Rechts- und Beratungskosten des Investors bis zu einem Höchstbetrag von **{{LEGAL_COST_CAP_EUR}} EUR**, fällig bei Closing.
|
||||
|
||||
Bei Nicht-Closing aufgrund von Gründen, die der Gesellschaft oder den Gründern zuzurechnen sind, ist eine Erstattung dieser Kosten ebenfalls geschuldet (gedeckelt).
|
||||
{{/IF}}
|
||||
{{#IF EACH_PARTY_PAYS}}
|
||||
Jede Partei trägt ihre eigenen Kosten.
|
||||
{{/IF}}
|
||||
|
||||
## § 15 Anwendbares Recht, Gerichtsstand (BINDEND)
|
||||
|
||||
Es gilt deutsches Recht. Gerichtsstand ist der Sitz der Gesellschaft. Streitigkeiten werden, soweit zulässig, durch Mediation versucht beizulegen.
|
||||
|
||||
---
|
||||
|
||||
## § 16 Sonstiges
|
||||
|
||||
(1) **Endgültigkeit der Definitive Documents:** Im Kollisionsfall zwischen diesem Term Sheet und den endgültigen Verträgen (Beteiligungsvertrag, SHA, Satzung) gehen die Definitive Documents vor.
|
||||
|
||||
(2) **Verfall:** Dieses Term Sheet verfällt, falls bis zum {{TERM_SHEET_EXPIRY_DATE}} keine Definitive Documents abgeschlossen oder das Closing vollzogen wurde, sofern nicht beide Parteien einer Verlängerung in Textform zustimmen.
|
||||
|
||||
(3) **Sprache:** Verbindlich ist die deutsche Fassung. Eine englische Übersetzung ist nur informatorisch.
|
||||
|
||||
---
|
||||
|
||||
**{{SIGNATURE_LOCATION}}, {{TERM_SHEET_DATE}}**
|
||||
|
||||
___________________________
|
||||
Für den Investor
|
||||
{{INVESTOR_NAME}} / {{INVESTOR_REPRESENTATIVE}}
|
||||
|
||||
___________________________
|
||||
Für die Gesellschaft
|
||||
{{COMPANY_REPRESENTATIVE}}
|
||||
|
||||
{{FOUNDER_SIGNATURES}}
|
||||
|
||||
---
|
||||
|
||||
## Anlage A — Gründer / Gesellschafter
|
||||
|
||||
{{FOUNDERS_LIST_DETAILS}}
|
||||
|
||||
## Anlage B — Cap Table (vor und nach Investment)
|
||||
|
||||
{{CAP_TABLE_PRE_POST}}
|
||||
$template$,
|
||||
'["INVESTOR_NAME","INVESTOR_REPRESENTATIVE","COMPANY_NAME","COMPANY_ADDRESS","COMPANY_REPRESENTATIVE","COMPANY_REGISTRY_COURT","HRB_NUMBER","HAS_HRB","TERM_SHEET_DATE","INVESTMENT_PHASE","EXCLUSIVITY_END_DATE","TERM_SHEET_EXPIRY_DATE","INVESTMENT_AMOUNT_EUR","PRE_MONEY_VALUATION_EUR","POST_MONEY_VALUATION_EUR","INVESTMENT_INSTRUMENT","INVESTOR_STAKE_PCT","TARGET_CLOSING_DATE","HAS_TRANCHES","TRANCHES_TABLE","USE_OF_PROCEEDS","IS_PREFERRED_SHARES","IS_COMMON_SHARES","HAS_LIQUIDATION_PREFERENCE","LIQ_PREF_MULTIPLIER","IS_PARTICIPATING","HAS_ANTI_DILUTION","ANTI_DILUTION_METHOD","LOAN_THRESHOLD_EUR","HAS_BOARD_SEAT","BOARD_SIZE","INVESTOR_BOARD_SEATS","FOUNDER_BOARD_SEATS","INDEPENDENT_BOARD_SEATS","BOARD_MEETING_FREQ","HAS_OBSERVER","ANNUAL_REPORT_MONTHS","VESTING_MONTHS","CLIFF_MONTHS","VESTING_START_REF","ACCELERATION_THRESHOLD_PCT","FOUNDER_LOCKUP_MONTHS","DRAG_ALONG_THRESHOLD_PCT","TAG_ALONG_THRESHOLD_PCT","CURRENT_ESOP_PCT","TARGET_ESOP_PCT","ESOP_TOP_UP_TIMING","EXCLUSIVITY_WEEKS","COMPANY_PAYS_COSTS","EACH_PARTY_PAYS","LEGAL_COST_CAP_EUR","SIGNATURE_LOCATION","FOUNDER_SIGNATURES","FOUNDERS_LIST_DETAILS","CAP_TABLE_PRE_POST"]'::jsonb,
|
||||
'de','DE',NULL,'MIT License','BreakPilot Compliance',false,true,'1.0.0','published',NOW(),NOW()
|
||||
;
|
||||
SELECT document_type, title, LENGTH(content), jsonb_array_length(placeholders) FROM compliance_legal_templates WHERE document_type = 'term_sheet' ORDER BY created_at DESC LIMIT 1;
|
||||
@@ -0,0 +1,251 @@
|
||||
-- Migration 133: Wandeldarlehensvertrag (Convertible Loan Agreement) Template
|
||||
-- Bridge Financing fuer Pre-Seed/Seed-Phase ohne fixe Bewertung zum Zeichnungszeitpunkt
|
||||
-- Wandlung bei qualifizierter Finanzierungsrunde, Laufzeitende oder Exit
|
||||
-- Wandlungspreis = niedrigerer Wert von Cap und (Naechste-Runde-Preis - Discount)
|
||||
-- Mit qualifiziertem Rangruecktritt (§ 39 Abs. 2 InsO), MFN-Klausel, Reserved Matters
|
||||
-- Optionale Bloecke: HAS_TRANCHES, HAS_FOUNDER_GUARANTEE, HAS_OBSERVER_RIGHT, HAS_FOUNDER_PARTIES,
|
||||
-- HAS_ARBITRATION, INVESTOR_HAS_HRB, HAS_HRB
|
||||
|
||||
INSERT INTO compliance_legal_templates (
|
||||
id, tenant_id, document_type, title, description, content,
|
||||
placeholders, language, jurisdiction,
|
||||
license_id, license_name, source_name,
|
||||
attribution_required, is_complete_document, version, status,
|
||||
created_at, updated_at
|
||||
) SELECT
|
||||
gen_random_uuid(),
|
||||
'9282a473-5c95-4b3a-bf78-0ecc0ec71d3e',
|
||||
'convertible_loan_agreement',
|
||||
'Wandeldarlehensvertrag (Convertible Loan Agreement)',
|
||||
'Bridge-Finanzierung fuer Pre-Seed/Seed-Phase ohne fixe Bewertung. Wandlung in Geschaeftsanteile bei qualifizierter Finanzierungsrunde, Laufzeitende oder Exit. Wandlungspreis als niedrigerer Wert von Bewertungs-Cap und Discount auf die naechste Runde (Markt-Standard 15-25%). Mit qualifiziertem Rangruecktritt nach § 39 Abs. 2 InsO, Most-Favored-Nation-Klausel, Reserved Matters, optionalem Observer-Recht, Pre-emptive Rights. Skalierbar fuer Single-Tranche oder Multi-Tranche Auszahlung, mit oder ohne Gruenderbuergschaft. Orientiert an BvK-Standard und deutscher VC-Praxis.',
|
||||
$template$
|
||||
# Wandeldarlehensvertrag (Convertible Loan Agreement)
|
||||
|
||||
zwischen
|
||||
|
||||
**{{INVESTOR_NAME}}**, {{INVESTOR_ADDRESS}}{{#IF INVESTOR_HAS_HRB}}, eingetragen unter HRB {{INVESTOR_HRB}}{{/IF}}, vertreten durch {{INVESTOR_REPRESENTATIVE}}
|
||||
|
||||
- nachfolgend „Darlehensgeber" / „Investor" -
|
||||
|
||||
**{{COMPANY_NAME}}**, {{COMPANY_ADDRESS}}{{#IF HAS_HRB}}, eingetragen im Handelsregister des Amtsgerichts {{COMPANY_REGISTRY_COURT}} unter HRB {{HRB_NUMBER}}{{/IF}}, vertreten durch {{COMPANY_REPRESENTATIVE}}
|
||||
|
||||
- nachfolgend „Darlehensnehmerin" / „Gesellschaft" -
|
||||
|
||||
{{#IF HAS_FOUNDER_PARTIES}}
|
||||
und
|
||||
|
||||
**den in Anlage A genannten Gründern**
|
||||
|
||||
- nachfolgend „Gründer" -
|
||||
{{/IF}}
|
||||
|
||||
---
|
||||
|
||||
## Dokumentenkontrolle
|
||||
|
||||
| Feld | Wert |
|
||||
|---|---|
|
||||
| Vertragstyp | Wandeldarlehensvertrag (Convertible Loan) |
|
||||
| Darlehenssumme | {{LOAN_AMOUNT_EUR}} EUR |
|
||||
| Datum | {{LOAN_DATE}} |
|
||||
| Laufzeit max. | {{LOAN_MAX_TERM_MONTHS}} Monate |
|
||||
| Version | {{DOCUMENT_VERSION}} |
|
||||
|
||||
---
|
||||
|
||||
## Präambel
|
||||
|
||||
(A) Die Gesellschaft betreibt ein Unternehmen im Bereich {{COMPANY_PURPOSE_SHORT}} und beabsichtigt, ihre Geschäftstätigkeit auszubauen.
|
||||
|
||||
(B) Der Investor ist bereit, der Gesellschaft ein Darlehen zur Verfügung zu stellen, das nach Maßgabe dieses Vertrages in Geschäftsanteile der Gesellschaft gewandelt werden kann.
|
||||
|
||||
(C) Die Parteien wollen mit diesem Vertrag eine Vorfinanzierung („Bridge Financing") schaffen, ohne dass bereits zum jetzigen Zeitpunkt eine Bewertung der Gesellschaft erfolgen muss; die Bewertung erfolgt bei Wandlung.
|
||||
|
||||
---
|
||||
|
||||
## § 1 Darlehenssumme und Auszahlung
|
||||
|
||||
(1) Der Investor gewährt der Gesellschaft ein nachrangiges Darlehen in Höhe von **{{LOAN_AMOUNT_EUR}} EUR** („Darlehen").
|
||||
|
||||
(2) {{#IF HAS_TRANCHES}}Die Auszahlung erfolgt in folgenden Tranchen:
|
||||
|
||||
{{TRANCHES_TABLE}}
|
||||
{{/IF}}
|
||||
{{#IF NOT HAS_TRANCHES}}Die Auszahlung erfolgt in einer Summe innerhalb von {{PAYOUT_DAYS}} Tagen nach Unterzeichnung und Eintritt aller Auszahlungsbedingungen.{{/IF}}
|
||||
|
||||
(3) **Auszahlungsbedingungen:**
|
||||
(a) Vollständige Unterzeichnung dieses Vertrages durch alle Parteien,
|
||||
(b) Vorlage der aktuellen Gesellschafterliste{{#IF HAS_SHA}} und des SHA{{/IF}},
|
||||
(c) keine wesentliche nachteilige Veränderung („Material Adverse Change") seit Unterzeichnung,
|
||||
(d) Bestätigung der ordnungsgemäßen Beschlussfassung in der Gesellschafterversammlung.
|
||||
|
||||
(4) Die Auszahlung erfolgt auf folgendes Konto der Gesellschaft: {{COMPANY_BANK_ACCOUNT}}
|
||||
|
||||
## § 2 Verzinsung
|
||||
|
||||
(1) Das Darlehen ist mit **{{INTEREST_RATE_PCT}} % p.a.** zu verzinsen (Standard im DE-Markt: 4-8 % p.a.).
|
||||
|
||||
(2) Die Zinsen werden **{{INTEREST_ACCRUAL_MODE}}** (z.B. „jährlich kapitalisiert", „bei Wandlung dem Darlehensbetrag zugeschlagen", „quartalsweise gezahlt").
|
||||
|
||||
(3) Bei Verzug mit Rückzahlung gilt der gesetzliche Verzugszins (§ 288 BGB).
|
||||
|
||||
## § 3 Laufzeit und Rückzahlung
|
||||
|
||||
(1) Das Darlehen hat eine maximale Laufzeit von **{{LOAN_MAX_TERM_MONTHS}} Monaten** ab Auszahlung.
|
||||
|
||||
(2) Vor Ablauf der Laufzeit kann das Darlehen nicht ordentlich gekündigt werden.
|
||||
|
||||
(3) Bei Ablauf der Laufzeit ohne vorherige Wandlung gemäß § 4 ist das Darlehen samt aufgelaufenen Zinsen zur Rückzahlung fällig, sofern die Parteien nicht eine Verlängerung der Laufzeit oder eine Wandlung einvernehmlich vereinbaren.
|
||||
|
||||
(4) Eine vorzeitige Rückzahlung durch die Gesellschaft ist nur mit Zustimmung des Investors zulässig.
|
||||
|
||||
## § 4 Wandlung in Geschäftsanteile
|
||||
|
||||
### 4.1 Wandlungs-Trigger
|
||||
|
||||
Das Darlehen ist in Geschäftsanteile der Gesellschaft zu wandeln bei Eintritt eines der folgenden Ereignisse („Wandlungsereignis"):
|
||||
|
||||
(a) **Qualifizierte Finanzierungsrunde:** Die Gesellschaft schließt eine Eigenkapital-Finanzierungsrunde mit einem Brutto-Volumen von mindestens **{{QUALIFIED_FINANCING_THRESHOLD_EUR}} EUR** ab (Pflichtwandlung).
|
||||
|
||||
(b) **Laufzeitende:** Bei Ablauf der Laufzeit nach § 3 Abs. (1), sofern keine Rückzahlung erfolgt und der Investor die Wandlung wählt (Wahlrecht).
|
||||
|
||||
(c) **Exit:** Vor einem Change-of-Control-Ereignis (Verkauf der Gesellschaft) wandelt der Investor das Darlehen in Anteile, sofern die Wandlung wirtschaftlich günstiger ist als die Rückzahlung.
|
||||
|
||||
### 4.2 Wandlungspreis
|
||||
|
||||
Der Wandlungspreis je Geschäftsanteil ist der **niedrigere** der folgenden Werte:
|
||||
|
||||
(a) **Bewertungs-Cap (Pre-Money):** {{VALUATION_CAP_EUR}} EUR
|
||||
(b) **Discount auf die nächste Runde:** Preis pro Anteil der qualifizierten Finanzierungsrunde abzüglich **{{DISCOUNT_PCT}} %** (typisch: 15-25 %)
|
||||
|
||||
Bei Wandlung am Laufzeitende ohne Finanzierungsrunde gilt der Bewertungs-Cap als Pre-Money-Bewertung.
|
||||
|
||||
### 4.3 Wandlungsmodalitäten
|
||||
|
||||
(1) Wandlungssumme = Darlehenssumme + aufgelaufene Zinsen bis zum Wandlungsstichtag.
|
||||
|
||||
(2) Anzahl der zu schaffenden Geschäftsanteile = Wandlungssumme ÷ Wandlungspreis pro Anteil (auf den nächsten ganzen EUR gerundet).
|
||||
|
||||
(3) Die Wandlung erfolgt durch Kapitalerhöhung gegen Sacheinlage (Aufrechnung der Darlehensforderung gegen Bareinlage) gemäß § 56 GmbHG. Die Gesellschafter verpflichten sich, allen erforderlichen Beschlüssen zuzustimmen.
|
||||
|
||||
(4) Der Investor erhält Anteile derselben Klasse wie die Investoren der qualifizierten Finanzierungsrunde (Variante: derselben Klasse wie bestehende Stammanteile, falls keine Vorzugsklasse existiert).
|
||||
|
||||
## § 5 Most-Favored-Nation (MFN)
|
||||
|
||||
Sollten zwischen Unterzeichnung dieses Vertrages und der Wandlung andere Wandeldarlehensverträge mit für den Investor günstigeren Konditionen (Discount, Cap, Zins, Sicherheiten) abgeschlossen werden, ist der Investor berechtigt, diese günstigeren Konditionen für sich zu beanspruchen („MFN-Klausel").
|
||||
|
||||
## § 6 Nachrang und Sicherheiten
|
||||
|
||||
(1) **Nachrang.** Das Darlehen ist gegenüber allen anderen Verbindlichkeiten der Gesellschaft, mit Ausnahme von Verbindlichkeiten gegenüber Gesellschaftern, nachrangig (qualifizierter Rangrücktritt gemäß § 39 Abs. 2 InsO).
|
||||
|
||||
(2) **Keine Sicherheiten.** Das Darlehen wird ohne Sicherheiten gewährt.
|
||||
|
||||
{{#IF HAS_FOUNDER_GUARANTEE}}
|
||||
(3) **Garantie der Gründer.** Die Gründer übernehmen für die Rückzahlung des Darlehens eine selbstschuldnerische Bürgschaft bis zu einem Höchstbetrag von {{FOUNDER_GUARANTEE_EUR}} EUR pro Gründer.
|
||||
{{/IF}}
|
||||
|
||||
## § 7 Garantien der Gesellschaft
|
||||
|
||||
Die Gesellschaft garantiert:
|
||||
(a) Bestand und Wirksamkeit ihrer Gründung und ihrer Geschäftsführerbestellung,
|
||||
(b) zutreffende Darstellung der Beteiligungsverhältnisse in der zur Verfügung gestellten Cap Table,
|
||||
(c) freie Verfügbarkeit ihrer wesentlichen IP-Rechte (siehe IP-Assignment-Agreement),
|
||||
(d) keine bestehenden, anhängigen oder absehbaren Rechtsstreitigkeiten von wesentlicher Bedeutung,
|
||||
(e) ordnungsgemäße Erfüllung aller steuerlichen und sozialversicherungsrechtlichen Pflichten,
|
||||
(f) keine wesentliche Verletzung von Datenschutz- oder Compliance-Pflichten.
|
||||
|
||||
Bei Verletzung dieser Garantien ist der Investor berechtigt, sofortige Rückzahlung zu verlangen und Schadensersatz zu fordern.
|
||||
|
||||
## § 8 Informationsrechte
|
||||
|
||||
Der Investor erhält folgende Informationsrechte:
|
||||
(1) Monatlicher Liquiditätsbericht,
|
||||
(2) Quartalsweise Reporting (P&L, Bilanz, Cashflow, KPI),
|
||||
(3) Jährlicher (geprüfter) Jahresabschluss innerhalb von {{ANNUAL_REPORT_MONTHS}} Monaten,
|
||||
(4) Unverzügliche Information bei wesentlichen Ereignissen (Liquiditätsrisiken, Rechtsstreite, Schlüsselpersonen-Verlust, geplante Finanzierungen).
|
||||
|
||||
## § 9 Beirat / Observer (optional)
|
||||
|
||||
{{#IF HAS_OBSERVER_RIGHT}}
|
||||
Der Investor erhält das Recht, **einen nicht-stimmberechtigten Beobachter (Observer)** in Beirats- und Gesellschafterversammlungen zu entsenden, solange das Darlehen besteht oder die durch Wandlung erworbenen Anteile mindestens {{OBSERVER_THRESHOLD_PCT}} % am Stammkapital betragen.
|
||||
{{/IF}}
|
||||
|
||||
## § 10 Pre-emptive Rights
|
||||
|
||||
Bei künftigen Eigenkapital-Finanzierungsrunden erhält der Investor das Recht, bis zur Höhe seiner (nach Wandlung) bestehenden Pro-Rata-Quote zu zeichnen, um seine Beteiligungsquote aufrechtzuerhalten.
|
||||
|
||||
## § 11 Reserved Matters bis zur Wandlung
|
||||
|
||||
Bis zur Wandlung dürfen folgende Maßnahmen nur mit Zustimmung des Investors erfolgen:
|
||||
(a) Aufnahme weiterer Darlehen außerhalb des gewöhnlichen Geschäftsbetriebs,
|
||||
(b) Verkauf oder Belastung wesentlicher Vermögenswerte,
|
||||
(c) wesentliche Änderung des Geschäftsmodells,
|
||||
(d) Liquidation oder Insolvenz,
|
||||
(e) Verkauf der Gesellschaft (Change of Control),
|
||||
(f) Ausgabe neuer Anteile zu einer Bewertung unter dem Bewertungs-Cap dieses Vertrages.
|
||||
|
||||
## § 12 Vertraulichkeit
|
||||
|
||||
Beide Parteien behandeln den Inhalt dieses Vertrages und alle im Zusammenhang ausgetauschten Informationen vertraulich. Ausnahmen: Offenlegung gegenüber Beratern unter Verschwiegenheitspflicht, in Due-Diligence-Prozessen oder bei gesetzlicher Pflicht.
|
||||
|
||||
## § 13 Übertragung
|
||||
|
||||
(1) Der Investor kann seine Rechte aus diesem Vertrag mit Zustimmung der Gesellschaft auf einen Dritten übertragen. Die Zustimmung darf nicht unbillig verweigert werden. Bei Übertragung an verbundene Unternehmen entfällt das Zustimmungserfordernis.
|
||||
|
||||
(2) Die Gesellschaft darf ihre Pflichten aus diesem Vertrag nicht ohne Zustimmung des Investors übertragen.
|
||||
|
||||
## § 14 Verzug und Default-Events
|
||||
|
||||
(1) Bei einem der folgenden Default-Events ist das Darlehen samt Zinsen sofort fällig:
|
||||
(a) Insolvenzantrag oder Eröffnung des Insolvenzverfahrens,
|
||||
(b) wesentliche Verletzung der Garantien gemäß § 7,
|
||||
(c) Verstoß gegen die Reserved Matters gemäß § 11,
|
||||
(d) Liquidationsbeschluss,
|
||||
(e) Wesentliche Pflichtverletzung, die nicht innerhalb von {{CURE_PERIOD_DAYS}} Tagen nach Mahnung geheilt wird.
|
||||
|
||||
(2) Der Investor kann in diesen Fällen alternativ die Wandlung gemäß § 4 wählen.
|
||||
|
||||
## § 15 Schlussbestimmungen
|
||||
|
||||
(1) **Schriftform.** Änderungen bedürfen der Schriftform.
|
||||
|
||||
(2) **Salvatorische Klausel.** Unwirksame Bestimmungen berühren nicht die Wirksamkeit der übrigen Bestimmungen.
|
||||
|
||||
(3) **Anwendbares Recht und Gerichtsstand.** Es gilt deutsches Recht. Gerichtsstand ist {{JURISDICTION_LOCATION}}.
|
||||
|
||||
(4) **Verhältnis zu anderen Vereinbarungen.** Im Konfliktfall mit Satzung oder SHA hat dieser Vertrag im Innenverhältnis Vorrang, soweit rechtlich zulässig.
|
||||
|
||||
(5) **Schiedsklausel (optional).** {{#IF HAS_ARBITRATION}}Streitigkeiten aus diesem Vertrag werden gemäß DIS-Schiedsgerichtsordnung in {{ARBITRATION_SEAT}} entschieden.{{/IF}}
|
||||
|
||||
---
|
||||
|
||||
**{{SIGNATURE_LOCATION}}, {{LOAN_DATE}}**
|
||||
|
||||
___________________________
|
||||
Für den Investor
|
||||
{{INVESTOR_REPRESENTATIVE}}
|
||||
|
||||
___________________________
|
||||
Für die Gesellschaft
|
||||
{{COMPANY_REPRESENTATIVE}}
|
||||
|
||||
{{#IF HAS_FOUNDER_PARTIES}}
|
||||
**Gründer als Mit-Vertragspartner:**
|
||||
|
||||
{{FOUNDER_SIGNATURES}}
|
||||
{{/IF}}
|
||||
|
||||
---
|
||||
|
||||
## Anlage A — Gründer / Gesellschafter
|
||||
|
||||
{{FOUNDERS_LIST_DETAILS}}
|
||||
|
||||
## Anlage B — Cap Table zum Zeitpunkt der Unterzeichnung
|
||||
|
||||
{{CAP_TABLE_CURRENT}}
|
||||
$template$,
|
||||
'["INVESTOR_NAME","INVESTOR_ADDRESS","INVESTOR_REPRESENTATIVE","INVESTOR_HAS_HRB","INVESTOR_HRB","COMPANY_NAME","COMPANY_ADDRESS","COMPANY_REGISTRY_COURT","HRB_NUMBER","HAS_HRB","COMPANY_REPRESENTATIVE","COMPANY_PURPOSE_SHORT","COMPANY_BANK_ACCOUNT","HAS_FOUNDER_PARTIES","LOAN_AMOUNT_EUR","LOAN_DATE","LOAN_MAX_TERM_MONTHS","DOCUMENT_VERSION","HAS_TRANCHES","TRANCHES_TABLE","PAYOUT_DAYS","HAS_SHA","INTEREST_RATE_PCT","INTEREST_ACCRUAL_MODE","QUALIFIED_FINANCING_THRESHOLD_EUR","VALUATION_CAP_EUR","DISCOUNT_PCT","HAS_FOUNDER_GUARANTEE","FOUNDER_GUARANTEE_EUR","HAS_OBSERVER_RIGHT","OBSERVER_THRESHOLD_PCT","ANNUAL_REPORT_MONTHS","CURE_PERIOD_DAYS","JURISDICTION_LOCATION","HAS_ARBITRATION","ARBITRATION_SEAT","SIGNATURE_LOCATION","FOUNDER_SIGNATURES","FOUNDERS_LIST_DETAILS","CAP_TABLE_CURRENT"]'::jsonb,
|
||||
'de','DE',NULL,'MIT License','BreakPilot Compliance',false,true,'1.0.0','published',NOW(),NOW()
|
||||
;
|
||||
SELECT document_type, title, LENGTH(content), jsonb_array_length(placeholders) FROM compliance_legal_templates WHERE document_type = 'convertible_loan_agreement' ORDER BY created_at DESC LIMIT 1;
|
||||
@@ -0,0 +1,338 @@
|
||||
-- Migration 134: Beteiligungs- und Investmentvertrag (Subscription Agreement) Template
|
||||
-- Notariell beurkundeter Vertrag fuer Eigenkapital-Beteiligung
|
||||
-- Mit Kapitalerhoehung gegen Bezugsrechtsausschluss, Reps & Warranties,
|
||||
-- Liquidation Preference (Non-Participating Standard), Anti-Dilution (Broad-Based Weighted Average),
|
||||
-- Reserved Matters, Informationsrechte, Founder Vesting/Lock-up, Drag/Tag-Along, ESOP-Pool-Anpassung
|
||||
-- Orientiert an BvK Standard-Beteiligungsvertrag und VC-Praxis (Series Seed/A)
|
||||
-- Optionale Bloecke: INVESTOR_HAS_HRB, HAS_FOREIGN_INVESTOR, IS_PREFERRED_SHARES/IS_COMMON_SHARES,
|
||||
-- HAS_LIQUIDATION_PREFERENCE, IS_PARTICIPATING, HAS_ANTI_DILUTION, HAS_MULTI_INVESTOR,
|
||||
-- HAS_BOARD_SEAT, HAS_OBSERVER, VESTING_CREDIT_PAST_TIME, HAS_ARBITRATION
|
||||
|
||||
INSERT INTO compliance_legal_templates (
|
||||
id, tenant_id, document_type, title, description, content,
|
||||
placeholders, language, jurisdiction,
|
||||
license_id, license_name, source_name,
|
||||
attribution_required, is_complete_document, version, status,
|
||||
created_at, updated_at
|
||||
) SELECT
|
||||
gen_random_uuid(),
|
||||
'9282a473-5c95-4b3a-bf78-0ecc0ec71d3e',
|
||||
'subscription_agreement',
|
||||
'Beteiligungs- und Investmentvertrag (Subscription Agreement)',
|
||||
'Notariell beurkundeter Eigenkapital-Beteiligungsvertrag fuer Venture Capital / Angel Investments (Pre-Seed bis Series A+). Regelt Kapitalerhoehung mit Bezugsrechtsausschluss, Anteilsuebernahme, Closing-Conditions, Reps & Warranties der Gesellschaft und Bestandsgesellschafter, Haftungscaps und Verjaehrungsfristen, Liquidation Preference (Non-Participating Standard, 1x), Anti-Dilution Schutz (Broad-Based Weighted Average), umfangreiche Reserved Matters, Informationsrechte (monatlich/quartalsweise/jaehrlich), Beirat mit Investor-Sitz, ESOP-Pool-Anpassung (Pre-/Post-Money), Founder Vesting und Lock-up, SHA-Beitritt. Orientiert an BvK-Mustertext und deutscher VC-Praxis.',
|
||||
$template$
|
||||
# Beteiligungs- und Investmentvertrag (Subscription Agreement)
|
||||
|
||||
zwischen
|
||||
|
||||
**{{INVESTOR_NAME}}**, {{INVESTOR_ADDRESS}}{{#IF INVESTOR_HAS_HRB}}, eingetragen unter HRB {{INVESTOR_HRB}}{{/IF}}, vertreten durch {{INVESTOR_REPRESENTATIVE}}
|
||||
|
||||
- nachfolgend „Investor" -
|
||||
|
||||
**{{COMPANY_NAME}}**, {{COMPANY_ADDRESS}}, eingetragen im Handelsregister des Amtsgerichts {{COMPANY_REGISTRY_COURT}} unter HRB {{HRB_NUMBER}}, vertreten durch {{COMPANY_REPRESENTATIVE}}
|
||||
|
||||
- nachfolgend „Gesellschaft" -
|
||||
|
||||
und
|
||||
|
||||
**den in Anlage A genannten Gesellschaftern**
|
||||
|
||||
- nachfolgend „Bestandsgesellschafter" oder „Gründer" -
|
||||
|
||||
---
|
||||
|
||||
## Dokumentenkontrolle
|
||||
|
||||
| Feld | Wert |
|
||||
|---|---|
|
||||
| Vertragstyp | Beteiligungs- und Investmentvertrag |
|
||||
| Investment-Phase | {{INVESTMENT_PHASE}} |
|
||||
| Datum | {{INVESTMENT_DATE}} |
|
||||
| Beurkundender Notar | {{NOTARY_NAME}}, {{NOTARY_PLACE}}, URNr. {{NOTARY_URNR}} |
|
||||
| Closing-Datum | {{CLOSING_DATE}} |
|
||||
| Version | {{DOCUMENT_VERSION}} |
|
||||
|
||||
**Hinweis:** Dieser Vertrag bedarf der notariellen Beurkundung (§ 15 GmbHG für die Anteilsübernahme und § 53 GmbHG für die Kapitalerhöhung). Die endgültige Form ergibt sich aus der notariellen Urkunde.
|
||||
|
||||
---
|
||||
|
||||
## Präambel
|
||||
|
||||
(A) Die Gesellschaft ist eine im Handelsregister eingetragene {{COMPANY_LEGAL_FORM}} mit Sitz in {{COMPANY_SEAT}} und einem Stammkapital von **{{CURRENT_STAMMKAPITAL_EUR}} EUR**.
|
||||
|
||||
(B) Der Investor beabsichtigt, sich an der Gesellschaft im Rahmen der **{{INVESTMENT_PHASE}}-Finanzierungsrunde** mit einem Investitionsbetrag von **{{INVESTMENT_AMOUNT_EUR}} EUR** zu beteiligen.
|
||||
|
||||
(C) Die Beteiligung erfolgt im Wege einer Kapitalerhöhung unter Ausschluss des Bezugsrechts der Bestandsgesellschafter zugunsten des Investors.
|
||||
|
||||
(D) Die Pre-Money-Bewertung der Gesellschaft wird zwischen den Parteien einvernehmlich auf **{{PRE_MONEY_VALUATION_EUR}} EUR** festgelegt. Die Post-Money-Bewertung beträgt entsprechend **{{POST_MONEY_VALUATION_EUR}} EUR**.
|
||||
|
||||
(E) Die Parteien wollen mit diesem Vertrag die Bedingungen der Beteiligung, die Rechte und Pflichten des Investors sowie die Anpassungen der Satzung und des Shareholders' Agreement (SHA) regeln.
|
||||
|
||||
---
|
||||
|
||||
## § 1 Kapitalerhöhung und Anteilsübernahme
|
||||
|
||||
### 1.1 Kapitalerhöhung
|
||||
|
||||
(1) Das Stammkapital der Gesellschaft wird von **{{CURRENT_STAMMKAPITAL_EUR}} EUR** um **{{CAPITAL_INCREASE_EUR}} EUR** auf **{{NEW_STAMMKAPITAL_EUR}} EUR** erhöht.
|
||||
|
||||
(2) Die Kapitalerhöhung erfolgt durch Schaffung von **{{NEW_SHARES_COUNT}} neuen Geschäftsanteilen** zu je {{SHARE_NENNBETRAG_EUR}} EUR Nennbetrag.
|
||||
|
||||
(3) Die neuen Geschäftsanteile werden vom Investor unter Ausschluss des Bezugsrechts der Bestandsgesellschafter übernommen.
|
||||
|
||||
### 1.2 Anteilsklasse
|
||||
|
||||
{{#IF IS_PREFERRED_SHARES}}
|
||||
Der Investor erhält **Vorzugsanteile (Preferred Shares) Klasse {{PREFERRED_CLASS}}** mit den nachfolgend beschriebenen besonderen Rechten (siehe §§ 5-7).
|
||||
{{/IF}}
|
||||
{{#IF IS_COMMON_SHARES}}
|
||||
Der Investor erhält **Stammanteile (Common Shares)** ohne besondere Vorzugsrechte.
|
||||
{{/IF}}
|
||||
|
||||
### 1.3 Ausgabepreis und Aufgeld (Agio)
|
||||
|
||||
(1) Der Ausgabepreis beträgt insgesamt **{{INVESTMENT_AMOUNT_EUR}} EUR**, davon:
|
||||
- Nennwert der neuen Anteile: **{{CAPITAL_INCREASE_EUR}} EUR**
|
||||
- Agio (in die Kapitalrücklage gem. § 272 Abs. 2 Nr. 4 HGB): **{{AGIO_EUR}} EUR**
|
||||
|
||||
(2) Der Ausgabepreis je Anteil beträgt **{{PRICE_PER_SHARE_EUR}} EUR**.
|
||||
|
||||
### 1.4 Resultierende Beteiligung
|
||||
|
||||
Nach Durchführung der Kapitalerhöhung beträgt die Beteiligung des Investors **{{INVESTOR_STAKE_POST_PCT}} %** am Stammkapital.
|
||||
|
||||
## § 2 Closing und Auszahlung
|
||||
|
||||
### 2.1 Closing-Datum
|
||||
|
||||
Das Closing erfolgt am **{{CLOSING_DATE}}** durch:
|
||||
(a) notariell beurkundete Kapitalerhöhung und Anteilsübernahme,
|
||||
(b) Eintragung der Kapitalerhöhung im Handelsregister,
|
||||
(c) Aktualisierung der Gesellschafterliste.
|
||||
|
||||
### 2.2 Closing-Conditions (Vollzugsvoraussetzungen)
|
||||
|
||||
Das Closing ist an folgende Bedingungen geknüpft, die spätestens am Closing-Datum erfüllt sein müssen:
|
||||
|
||||
(a) Erfolgreicher Abschluss der Due Diligence ohne wesentliche negative Erkenntnisse,
|
||||
(b) Notarielle Beurkundung dieses Vertrages, der Satzungsänderung und des SHA-Beitritts,
|
||||
(c) Vorlage aller in **Anlage D** aufgeführten Closing-Dokumente,
|
||||
(d) Bestätigung der unverändert gültigen Garantien der Gesellschaft und der Bestandsgesellschafter zum Closing-Datum,
|
||||
(e) Keine wesentliche nachteilige Veränderung („Material Adverse Change") seit Unterzeichnung,
|
||||
(f) Vorliegen aller behördlichen Genehmigungen,
|
||||
(g) {{#IF HAS_FOREIGN_INVESTOR}}Außenwirtschaftsrechtliche Unbedenklichkeitsbescheinigung gemäß § 58 AWV (falls anwendbar),{{/IF}}
|
||||
(h) Vorliegen wirksamer IP-Assignment-Agreements aller Gründer.
|
||||
|
||||
### 2.3 Auszahlung
|
||||
|
||||
Der Investmentbetrag ist nach Vollzug aller Closing-Conditions auf das in **Anlage B** benannte Konto der Gesellschaft zu überweisen. Eine Zwischenfinanzierung erfolgt nicht.
|
||||
|
||||
## § 3 Verwendung der Mittel (Use of Proceeds)
|
||||
|
||||
Die Investmentmittel werden gemäß dem in **Anlage C** beschriebenen Business Plan eingesetzt, insbesondere für:
|
||||
|
||||
{{USE_OF_PROCEEDS}}
|
||||
|
||||
Wesentliche Abweichungen vom Use of Proceeds (>{{USE_OF_PROCEEDS_DEVIATION_PCT}} %) bedürfen der Zustimmung des Investors.
|
||||
|
||||
## § 4 Garantien (Reps & Warranties)
|
||||
|
||||
### 4.1 Garantien der Gesellschaft
|
||||
|
||||
Die Gesellschaft garantiert zum Datum der Unterzeichnung und zum Closing-Datum (Stichtag):
|
||||
|
||||
(a) **Bestand:** Die Gesellschaft ist wirksam gegründet, im Handelsregister eingetragen und vertretungsbefugt geleitet.
|
||||
(b) **Cap Table:** Die in Anlage A aufgeführte Cap Table ist vollständig und korrekt. Es bestehen keine weiteren Anteile, Wandelrechte, Optionen oder Verpflichtungen zur Anteilsausgabe außerhalb der Anlage A.
|
||||
(c) **Stammkapital:** Das Stammkapital ist vollständig und unwiderruflich eingezahlt; keine Rückzahlungen erfolgten.
|
||||
(d) **IP-Rechte:** Die Gesellschaft hält alle für ihr Geschäftsmodell wesentlichen IP-Rechte ungeschmälert; sämtliche Gründer-IP wurde wirksam übertragen.
|
||||
(e) **Verträge:** Alle wesentlichen Verträge bestehen rechtswirksam und werden ordnungsgemäß erfüllt; keine wesentlichen Kündigungen sind angekündigt.
|
||||
(f) **Rechtsstreite:** Keine wesentlichen Rechtsstreite anhängig oder absehbar.
|
||||
(g) **Compliance:** Einhaltung von DSGVO, Steuer-, Sozialversicherungs- und sonstigen rechtlichen Pflichten.
|
||||
(h) **Finanzen:** Die offengelegten Finanzdaten (Bilanz, P&L, Cashflow) entsprechen der tatsächlichen Lage.
|
||||
(i) **Keine versteckten Verbindlichkeiten** außerhalb der offengelegten.
|
||||
(j) **Schlüsselpersonen:** Die in Anlage E benannten Schlüsselpersonen sind aktiv und beabsichtigen keinen Austritt.
|
||||
|
||||
### 4.2 Garantien der Bestandsgesellschafter
|
||||
|
||||
Jeder Bestandsgesellschafter garantiert für sich selbst:
|
||||
(a) er ist Inhaber der in Anlage A genannten Anteile, frei von Rechten Dritter,
|
||||
(b) keine Verpflichtungen zur Übertragung der Anteile bestehen,
|
||||
(c) keine Vesting-/Leaver-Tatbestände sind eingetreten oder absehbar,
|
||||
(d) Vollmacht und Geschäftsfähigkeit für diesen Vertrag liegen vor.
|
||||
|
||||
### 4.3 Rechtsfolgen bei Garantieverletzung
|
||||
|
||||
(1) Bei Verletzung einer Garantie hat der Investor folgende Ansprüche:
|
||||
(a) Schadensersatz in Höhe des entstandenen Schadens (Naturalrestitution bevorzugt),
|
||||
(b) bei wesentlicher Verletzung: Rücktritt vom Vertrag innerhalb von 6 Monaten nach Kenntnis.
|
||||
|
||||
(2) **Haftungshöchstbetrag:** {{LIABILITY_CAP_PCT}} % des Investmentbetrages, ausgenommen bei vorsätzlichen Verletzungen oder Garantien zu Title (Cap Table, IP).
|
||||
|
||||
(3) **Verjährung:** {{WARRANTY_VERJAEHRUNG_JAHRE}} Jahre ab Closing für allgemeine Garantien; {{WARRANTY_TAX_VERJAEHRUNG_JAHRE}} Jahre für steuerliche Garantien.
|
||||
|
||||
## § 5 Liquidation Preference
|
||||
|
||||
{{#IF HAS_LIQUIDATION_PREFERENCE}}
|
||||
Im Falle eines Liquidationsereignisses (Exit, Verkauf, Liquidation der Gesellschaft) erhält der Investor:
|
||||
|
||||
(1) **{{LIQ_PREF_MULTIPLIER}}× non-participating Liquidation Preference**:
|
||||
- Vorzugsweise Auszahlung des {{LIQ_PREF_MULTIPLIER}}-fachen seines Investments aus den verfügbaren Erlösen,
|
||||
- danach Verteilung verbleibender Erlöse pro-rata an alle Anteilsklassen.
|
||||
|
||||
(2) **Wahlrecht (Non-Participating Standard):** Der Investor kann zwischen Liquidation Preference und seinem pro-rata Anteil am Gesamterlös wählen, je nachdem was höher ist.
|
||||
|
||||
(3) Bei mehreren Vorzugsklassen gilt {{LIQ_PREF_SENIORITY}} (z.B. „pari passu" oder „seniority by series").
|
||||
{{/IF}}
|
||||
|
||||
## § 6 Anti-Dilution Schutz
|
||||
|
||||
{{#IF HAS_ANTI_DILUTION}}
|
||||
Bei künftigen Finanzierungsrunden zu einem Preis pro Anteil **unter** dem aktuellen Investment-Preis („Down-Round") greift folgender Verwässerungsschutz:
|
||||
|
||||
(1) **Methode:** **{{ANTI_DILUTION_METHOD}}** (Marktstandard: Broad-Based Weighted Average)
|
||||
|
||||
(2) **Berechnung:** Anpassung des Wandlungspreises der Vorzugsanteile nach der Formel:
|
||||
NCP = CP × (A + B) / (A + C)
|
||||
wobei:
|
||||
- NCP = New Conversion Price (neuer Wandlungspreis)
|
||||
- CP = Current Conversion Price
|
||||
- A = Bestehende Anteile (Common + Preferred) vor neuer Runde
|
||||
- B = Anteile, die zum aktuellen CP für den neuen Investmentbetrag erworben würden
|
||||
- C = Anteile, die zum neuen niedrigeren Preis tatsächlich ausgegeben werden
|
||||
|
||||
(3) **Ausnahmen vom Verwässerungsschutz:**
|
||||
- ESOP-Pool-Allokationen (bis zur in der Satzung definierten Pool-Größe),
|
||||
- Anteile aus Akquisitionen mit Anteils-Gegenleistung,
|
||||
- Anteile aus Lizenz- oder Kooperationsvereinbarungen,
|
||||
- Pflichtwandlungen von Wandeldarlehen.
|
||||
{{/IF}}
|
||||
|
||||
## § 7 Reserved Matters
|
||||
|
||||
Folgende Entscheidungen bedürfen der Zustimmung des Investors{{#IF HAS_MULTI_INVESTOR}} bzw. der Mehrheit der Investoren{{/IF}}:
|
||||
|
||||
(a) Änderung der Satzung oder des SHA,
|
||||
(b) Aufnahme weiterer Gesellschafter, Ausgabe neuer Anteile oder Wandelrechte,
|
||||
(c) Erhöhung oder Herabsetzung des Stammkapitals,
|
||||
(d) Aufnahme von Krediten > **{{LOAN_THRESHOLD_EUR}} EUR**,
|
||||
(e) Erwerb, Veräußerung oder Belastung von Vermögenswerten > **{{ASSET_THRESHOLD_EUR}} EUR**,
|
||||
(f) Abschluss/Änderung von Geschäftsführerverträgen, Bestellung/Abberufung Geschäftsführer,
|
||||
(g) Wesentliche Änderung des Geschäftsmodells oder Eintritt in neue Geschäftsfelder,
|
||||
(h) Budgetfreigaben oder Abweichungen > **{{BUDGET_ABWEICHUNG_PCT}} %**,
|
||||
(i) Strategische Kooperationen größeren Umfangs,
|
||||
(j) Erwerb oder Veräußerung von IP-Rechten von erheblicher Bedeutung,
|
||||
(k) Entscheidungen über ESOP-Plan (Erweiterung, wesentliche Änderungen),
|
||||
(l) Drag-Along, Tag-Along, Verkauf der Gesellschaft (Change of Control),
|
||||
(m) Liquidation, Insolvenzantrag, Strukturmaßnahmen,
|
||||
(n) Wandlung oder Rückzahlung anderer Wandeldarlehen.
|
||||
|
||||
## § 8 Informationsrechte und Reporting
|
||||
|
||||
Der Investor erhält folgende Informationsrechte:
|
||||
|
||||
(1) **Monatlich:** Liquiditätsbericht, KPI-Dashboard (innerhalb 10 Werktagen nach Monatsende),
|
||||
(2) **Quartalsweise:** Quartalsabschluss (P&L, Bilanz, Cashflow), Status Risk Register, Cap Table (innerhalb 30 Tagen),
|
||||
(3) **Jährlich:** Auditierter Jahresabschluss innerhalb von {{ANNUAL_REPORT_MONTHS}} Monaten nach GJ-Ende,
|
||||
(4) **Budget:** Jährliches Budget mit Begründung 30 Tage vor Beginn des neuen Geschäftsjahres,
|
||||
(5) **Ad-hoc:** Materielle Ereignisse, Liquiditätsrisiken, Rechtsstreite, Schlüsselpersonenverlust.
|
||||
|
||||
## § 9 Beirat / Board
|
||||
|
||||
{{#IF HAS_BOARD_SEAT}}
|
||||
(1) Es wird ein Beirat gemäß Satzung/SHA eingerichtet mit:
|
||||
- **{{FOUNDER_BOARD_SEATS}}** Sitz(e) für die Gründer,
|
||||
- **{{INVESTOR_BOARD_SEATS}}** Sitz(e) für den Investor,
|
||||
- **{{INDEPENDENT_BOARD_SEATS}}** unabhängige(s) Mitglied(er) (durch gemeinsamen Beschluss benannt).
|
||||
|
||||
(2) Sitzungsfrequenz: mindestens {{BOARD_MEETING_FREQ}}, plus ad-hoc bei Bedarf.
|
||||
|
||||
(3) Der Investor entsendet als Beiratsmitglied: **{{INVESTOR_BOARD_REP}}**.
|
||||
{{/IF}}
|
||||
|
||||
{{#IF HAS_OBSERVER}}
|
||||
(4) **Observer:** Der Investor kann zusätzlich einen nicht-stimmberechtigten Observer entsenden, der an allen Sitzungen teilnimmt und Materialien erhält.
|
||||
{{/IF}}
|
||||
|
||||
## § 10 Founder Vesting und Lock-up
|
||||
|
||||
(1) **Vesting:** Die Gründer-Anteile unterliegen folgendem Vesting (Re-Vesting für diese Runde):
|
||||
- Dauer: **{{VESTING_MONTHS}} Monate** ab Closing,
|
||||
- Cliff: **{{CLIFF_MONTHS}} Monate**,
|
||||
- Anrechnung bisheriger Vesting-Zeit: {{#IF VESTING_CREDIT_PAST_TIME}}ja, gemäß SHA{{/IF}}{{#IF NOT VESTING_CREDIT_PAST_TIME}}nein - Re-Vesting beginnt neu{{/IF}}.
|
||||
|
||||
(2) **Founder Lock-up:** Die Gründer verpflichten sich für **{{FOUNDER_LOCKUP_MONTHS}} Monate** nach Closing zu Full-Time-Commitment zur Gesellschaft.
|
||||
|
||||
(3) **Acceleration:** Bei Change of Control mit Verkauf > **{{ACCELERATION_THRESHOLD_PCT}} %** der Anteile beschleunigt sich das Vesting zu **{{ACCELERATION_PCT}} %** (Single-Trigger).
|
||||
|
||||
## § 11 Drag-Along, Tag-Along, Vorkaufsrechte
|
||||
|
||||
Es gelten die Regelungen des SHA, insbesondere:
|
||||
- **Drag-Along-Schwelle:** **{{DRAG_ALONG_THRESHOLD_PCT}} %**
|
||||
- **Tag-Along ab:** **{{TAG_ALONG_THRESHOLD_PCT}} %** Anteilsverkauf
|
||||
- **Vorkaufsrechte:** Pro-Rata-Recht gemäß SHA
|
||||
|
||||
## § 12 ESOP / Mitarbeiter-Beteiligung
|
||||
|
||||
(1) Vor Closing wird der **ESOP-Pool auf {{TARGET_ESOP_PCT}} %** des Stammkapitals (Post-Money) angepasst.
|
||||
|
||||
(2) Die Anpassung erfolgt {{ESOP_TOP_UP_TIMING}} (Pre-Money: Gründer tragen Verwässerung / Post-Money: alle Gesellschafter inkl. Investor tragen anteilig).
|
||||
|
||||
(3) Der ESOP-Plan wird durch separaten Gesellschafterbeschluss verabschiedet und unterliegt den Reserved Matters gemäß § 7.
|
||||
|
||||
## § 13 Pre-emptive Rights (Bezugsrechte)
|
||||
|
||||
Bei künftigen Eigenkapital-Finanzierungsrunden hat der Investor das Recht, bis zur Höhe seiner aktuellen Beteiligungsquote pro-rata neue Anteile zu zeichnen, um seine Beteiligungsquote aufrechtzuerhalten.
|
||||
|
||||
## § 14 Right of First Refusal und Co-Sale
|
||||
|
||||
(1) **ROFR:** Bei Anteilsverkäufen durch Gründer hat der Investor ein Vorkaufsrecht (14 Tage).
|
||||
|
||||
(2) **Co-Sale-Right:** Wird der ROFR nicht ausgeübt, kann der Investor pro-rata mitverkaufen (Tag-Along).
|
||||
|
||||
## § 15 Beitritt zum SHA
|
||||
|
||||
Mit Closing tritt der Investor dem bestehenden Shareholders' Agreement (SHA) bei. Eine angepasste Version des SHA mit Aufnahme des Investors als Vertragspartei ist als **Anlage F** beigefügt.
|
||||
|
||||
## § 16 Vertraulichkeit
|
||||
|
||||
Beide Parteien behandeln den Inhalt dieses Vertrages und alle ausgetauschten Informationen vertraulich. Ausnahmen: Offenlegung gegenüber Beratern, in Due-Diligence-Prozessen oder bei gesetzlicher Pflicht.
|
||||
|
||||
## § 17 Schlussbestimmungen
|
||||
|
||||
(1) **Schriftform / Notarielle Beurkundung.** Dieser Vertrag bedarf hinsichtlich der Kapitalerhöhung und Anteilsübernahme der notariellen Beurkundung. Spätere Änderungen bedürfen der Schriftform, soweit nicht gesetzlich eine strengere Form vorgeschrieben ist.
|
||||
|
||||
(2) **Salvatorische Klausel.** Unwirksame Bestimmungen berühren nicht die Wirksamkeit der übrigen Bestimmungen.
|
||||
|
||||
(3) **Anwendbares Recht und Gerichtsstand.** Es gilt deutsches Recht. Gerichtsstand ist {{JURISDICTION_LOCATION}}.
|
||||
|
||||
(4) **Verhältnis zu Satzung und SHA.** Bei Konflikten zwischen diesem Vertrag, Satzung und SHA gilt:
|
||||
1. zwingendes Recht
|
||||
2. Satzung (im Außenverhältnis)
|
||||
3. SHA (im Innenverhältnis vorrangig)
|
||||
4. dieser Beteiligungsvertrag
|
||||
|
||||
(5) **Schiedsklausel (optional).** {{#IF HAS_ARBITRATION}}Streitigkeiten werden gemäß DIS-Schiedsgerichtsordnung in {{ARBITRATION_SEAT}} entschieden.{{/IF}}
|
||||
|
||||
---
|
||||
|
||||
**{{NOTARIAL_LOCATION}}, {{INVESTMENT_DATE}}**
|
||||
|
||||
(Unterschriften erfolgen in notarieller Beurkundung)
|
||||
|
||||
---
|
||||
|
||||
## Anlagen
|
||||
|
||||
- **Anlage A:** Cap Table (vor und nach Investment)
|
||||
- **Anlage B:** Bankverbindung der Gesellschaft
|
||||
- **Anlage C:** Business Plan und Use of Proceeds
|
||||
- **Anlage D:** Closing-Dokumente-Checkliste
|
||||
- **Anlage E:** Liste der Schlüsselpersonen
|
||||
- **Anlage F:** Angepasstes Shareholders' Agreement (SHA) mit Investor-Beitritt
|
||||
- **Anlage G:** Disclosure Letter (Offenlegungen zu Garantien)
|
||||
- **Anlage H:** Datenraum-Index
|
||||
$template$,
|
||||
'["INVESTOR_NAME","INVESTOR_ADDRESS","INVESTOR_REPRESENTATIVE","INVESTOR_HAS_HRB","INVESTOR_HRB","COMPANY_NAME","COMPANY_ADDRESS","COMPANY_SEAT","COMPANY_LEGAL_FORM","COMPANY_REGISTRY_COURT","HRB_NUMBER","COMPANY_REPRESENTATIVE","INVESTMENT_PHASE","INVESTMENT_DATE","CLOSING_DATE","NOTARY_NAME","NOTARY_PLACE","NOTARY_URNR","NOTARIAL_LOCATION","DOCUMENT_VERSION","CURRENT_STAMMKAPITAL_EUR","INVESTMENT_AMOUNT_EUR","PRE_MONEY_VALUATION_EUR","POST_MONEY_VALUATION_EUR","CAPITAL_INCREASE_EUR","NEW_STAMMKAPITAL_EUR","NEW_SHARES_COUNT","SHARE_NENNBETRAG_EUR","AGIO_EUR","PRICE_PER_SHARE_EUR","INVESTOR_STAKE_POST_PCT","IS_PREFERRED_SHARES","IS_COMMON_SHARES","PREFERRED_CLASS","HAS_FOREIGN_INVESTOR","USE_OF_PROCEEDS","USE_OF_PROCEEDS_DEVIATION_PCT","LIABILITY_CAP_PCT","WARRANTY_VERJAEHRUNG_JAHRE","WARRANTY_TAX_VERJAEHRUNG_JAHRE","HAS_LIQUIDATION_PREFERENCE","LIQ_PREF_MULTIPLIER","LIQ_PREF_SENIORITY","HAS_ANTI_DILUTION","ANTI_DILUTION_METHOD","HAS_MULTI_INVESTOR","LOAN_THRESHOLD_EUR","ASSET_THRESHOLD_EUR","BUDGET_ABWEICHUNG_PCT","ANNUAL_REPORT_MONTHS","HAS_BOARD_SEAT","FOUNDER_BOARD_SEATS","INVESTOR_BOARD_SEATS","INDEPENDENT_BOARD_SEATS","BOARD_MEETING_FREQ","INVESTOR_BOARD_REP","HAS_OBSERVER","VESTING_MONTHS","CLIFF_MONTHS","VESTING_CREDIT_PAST_TIME","FOUNDER_LOCKUP_MONTHS","ACCELERATION_THRESHOLD_PCT","ACCELERATION_PCT","DRAG_ALONG_THRESHOLD_PCT","TAG_ALONG_THRESHOLD_PCT","TARGET_ESOP_PCT","ESOP_TOP_UP_TIMING","JURISDICTION_LOCATION","HAS_ARBITRATION","ARBITRATION_SEAT"]'::jsonb,
|
||||
'de','DE',NULL,'MIT License','BreakPilot Compliance',false,true,'1.0.0','published',NOW(),NOW()
|
||||
;
|
||||
SELECT document_type, title, LENGTH(content), jsonb_array_length(placeholders) FROM compliance_legal_templates WHERE document_type = 'subscription_agreement' ORDER BY created_at DESC LIMIT 1;
|
||||
@@ -0,0 +1,310 @@
|
||||
-- Migration 135: ESOP/VSOP/Phantom Stock Plan Template (Mitarbeiterbeteiligung)
|
||||
-- Skalierbar zwischen 3 Varianten: VSOP (virtuell, Cash-Auszahlung), ESOP (echte Anteile), Phantom Stock
|
||||
-- Mit Pool-Definition, Vesting (48/12 Standard), Acceleration (Single-/Double-Trigger),
|
||||
-- Leaver-Behandlung (Good/Neutral/Bad), Rueckkaufsrecht, Verwaesserungsschutz, Plan-Verwaltung
|
||||
-- Inklusive Muster-Allokationsvereinbarung (Grant Letter) als Anlage
|
||||
-- Optionale Bloecke: IS_VSOP / IS_REAL_ESOP / IS_PHANTOM, HAS_DOUBLE_TRIGGER,
|
||||
-- HAS_DIVIDEND_TRIGGER, HAS_SECONDARY_TRIGGER, HAS_EXPIRY_TRIGGER, HAS_SHA
|
||||
|
||||
INSERT INTO compliance_legal_templates (
|
||||
id, tenant_id, document_type, title, description, content,
|
||||
placeholders, language, jurisdiction,
|
||||
license_id, license_name, source_name,
|
||||
attribution_required, is_complete_document, version, status,
|
||||
created_at, updated_at
|
||||
) SELECT
|
||||
gen_random_uuid(),
|
||||
'9282a473-5c95-4b3a-bf78-0ecc0ec71d3e',
|
||||
'esop_plan',
|
||||
'ESOP / VSOP / Phantom Stock Plan (Mitarbeiterbeteiligung)',
|
||||
'Mitarbeiterbeteiligungsplan in drei Varianten: VSOP (virtuelle Anteile mit Cash-Auszahlung bei Exit), ESOP (echte Geschaeftsanteile mit moeglicher § 19a EStG Tarifguenstigung), Phantom Stock (virtuelle Wertentwicklung). Skalierbar fuer Pool-Groesse, Vesting (Standard 48 Monate / 12 Cliff), Single-/Double-Trigger Acceleration bei Exit, Leaver-Behandlung (Good/Neutral/Bad), Rueckkaufsrecht, Verwaesserungsschutz und Plan-Verwaltung. Inklusive Muster-Allokationsvereinbarung (Grant Letter). Orientiert an Hexa/Carta-Standards und deutscher Marktpraxis.',
|
||||
$template$
|
||||
# {{ESOP_TYPE_LABEL}} - Mitarbeiterbeteiligungsplan
|
||||
|
||||
der **{{COMPANY_NAME}}**
|
||||
|
||||
---
|
||||
|
||||
## Dokumentenkontrolle
|
||||
|
||||
| Feld | Wert |
|
||||
|---|---|
|
||||
| Plan-Typ | {{ESOP_TYPE_LABEL}} ({{ESOP_TYPE_SHORT}}) |
|
||||
| Gesellschaft | {{COMPANY_NAME}} |
|
||||
| Plan-Bezeichnung | {{PLAN_NAME}} |
|
||||
| Verabschiedung | Gesellschafterbeschluss vom {{ADOPTION_DATE}} |
|
||||
| Geltungsbereich | Mitarbeiter, Berater, ggf. Geschäftsführer der {{COMPANY_NAME}} |
|
||||
| Version | {{DOCUMENT_VERSION}} |
|
||||
|
||||
> **Hinweis:** Dieser Plan wurde durch Beschluss der Gesellschafterversammlung vom {{ADOPTION_DATE}} verabschiedet. Die konkrete Zuteilung an Berechtigte erfolgt durch individuelle Allokationsvereinbarungen (Anlage).
|
||||
|
||||
---
|
||||
|
||||
## Präambel
|
||||
|
||||
(A) Die {{COMPANY_NAME}} („Gesellschaft") möchte ihre Mitarbeiter, Berater und Schlüsselpersonen langfristig an den wirtschaftlichen Erfolg der Gesellschaft beteiligen.
|
||||
|
||||
(B) {{#IF IS_VSOP}}Die Gesellschafterversammlung hat beschlossen, einen **virtuellen Mitarbeiterbeteiligungsplan (VSOP)** einzurichten. Berechtigte erhalten **virtuelle Anteile** ohne tatsächliche Gesellschafterstellung; die Erlöse sind als Cash-Bonus bei Exit oder anderen definierten Trigger-Ereignissen geschuldet.{{/IF}}{{#IF IS_REAL_ESOP}}Die Gesellschafterversammlung hat beschlossen, einen **echten Mitarbeiterbeteiligungsplan (ESOP)** einzurichten mit Übertragung tatsächlicher Geschäftsanteile.{{/IF}}{{#IF IS_PHANTOM}}Die Gesellschafterversammlung hat beschlossen, einen **Phantom-Stock-Plan** einzurichten mit virtuellen Anteilen, deren Wertentwicklung als Bonus ausgezahlt wird.{{/IF}}
|
||||
|
||||
(C) Dieser Plan regelt Zuteilung, Vesting, Ausübung und Auszahlung der Beteiligungen.
|
||||
|
||||
---
|
||||
|
||||
## § 1 Plan-Pool
|
||||
|
||||
(1) Die Gesellschaft reserviert einen **Mitarbeiterbeteiligungspool von {{POOL_PCT}} %** des Stammkapitals (vollverwässert nach Investment / Post-Money), nachfolgend „Pool".
|
||||
|
||||
(2) Der Pool entspricht **{{POOL_ABSOLUTE_VALUE}}** {{#IF IS_VSOP}}virtuellen Anteilen{{/IF}}{{#IF IS_REAL_ESOP}}Geschäftsanteilen{{/IF}}{{#IF IS_PHANTOM}}Phantom Shares{{/IF}}.
|
||||
|
||||
(3) Erweiterungen des Pools bedürfen eines Gesellschafterbeschlusses mit der im SHA{{#IF HAS_SHA}} festgelegten Mehrheit{{/IF}} (typisch: 75 %) und unterliegen den Reserved Matters.
|
||||
|
||||
(4) Verfallene oder zurückgekaufte Beteiligungen fließen in den Pool zurück und können neu zugeteilt werden.
|
||||
|
||||
## § 2 Berechtigte
|
||||
|
||||
(1) **Berechtigtenkreis** sind Personen, die zur Gesellschaft in einem der folgenden Verhältnisse stehen:
|
||||
(a) Arbeitsverhältnis (Vollzeit, Teilzeit, befristet),
|
||||
(b) Geschäftsführerdienstvertrag,
|
||||
(c) Beratungsvertrag (Advisor) mit fortgesetzter und materieller Mitwirkung,
|
||||
(d) Freier-Mitarbeiter-Vertrag mit Erwartung längerfristiger Mitwirkung.
|
||||
|
||||
(2) **Auswahl.** Die Geschäftsführung schlägt Berechtigte vor; die Zuteilung bedarf der Zustimmung des Beirats/der Gesellschafter gemäß SHA bzw. Reserved Matters.
|
||||
|
||||
(3) **Nicht berechtigt** sind:
|
||||
(a) Gesellschafter, soweit sie ihre Anteile aus der Gründung halten und in dieser Rolle bereits beteiligt sind,
|
||||
(b) Personen mit beendetem Arbeits-/Beratungsverhältnis,
|
||||
(c) externe Vertragspartner ohne strategische Schlüsselrolle.
|
||||
|
||||
## § 3 Allokation und Strike Price
|
||||
|
||||
### 3.1 Allokation
|
||||
|
||||
(1) Die Allokation pro Berechtigtem erfolgt durch individuelle **Allokationsvereinbarung** („Grant Letter"), die diesen Plan in Bezug nimmt.
|
||||
|
||||
(2) Die Allokation richtet sich nach Funktion, Erfahrung, Marktstandards und Beitrag zur Gesellschaft.
|
||||
|
||||
(3) Beispielhafte Richtwerte:
|
||||
|
||||
| Funktion | Allokationsband |
|
||||
|---|---|
|
||||
| C-Level (CXO) | {{CXO_ALLOCATION_RANGE}} |
|
||||
| Senior Engineering / Sales | {{SENIOR_ALLOCATION_RANGE}} |
|
||||
| Mid-Level | {{MID_ALLOCATION_RANGE}} |
|
||||
| Junior / Operational | {{JUNIOR_ALLOCATION_RANGE}} |
|
||||
| Advisor | {{ADVISOR_ALLOCATION_RANGE}} |
|
||||
|
||||
### 3.2 Strike Price (Ausübungspreis)
|
||||
|
||||
{{#IF IS_VSOP}}
|
||||
(1) Bei VSOP gibt es **keinen direkten Strike Price** im klassischen Sinne. Die Auszahlung erfolgt als Differenz zwischen Exit-Wert pro virtuellem Anteil und dem **Reference Price** zum Zeitpunkt der Allokation.
|
||||
|
||||
(2) **Reference Price** = aktuelle Pre-Money-Bewertung ÷ Gesamtzahl Anteile zum Allokationszeitpunkt.
|
||||
{{/IF}}
|
||||
|
||||
{{#IF IS_REAL_ESOP}}
|
||||
(1) Der **Strike Price (Ausübungspreis)** pro Anteil entspricht dem Verkehrswert zum Zeitpunkt der Allokation, mindestens dem Nennbetrag von {{SHARE_NENNBETRAG_EUR}} EUR.
|
||||
|
||||
(2) **Steuerlicher Hinweis:** Eine Ausgabe unter Verkehrswert kann steuerpflichtige geldwerte Vorteile begründen (§ 19a EStG). Empfehlung: Verkehrswert-Bestätigung durch Steuerberater.
|
||||
{{/IF}}
|
||||
|
||||
{{#IF IS_PHANTOM}}
|
||||
(1) Der **Strike Price** ist auf {{STRIKE_PRICE_EUR}} EUR pro Phantom Share festgelegt (entspricht aktueller Pre-Money-Bewertung ÷ Anteilszahl zum Allokationszeitpunkt).
|
||||
|
||||
(2) Bei Trigger-Ereignis erhält der Berechtigte die Differenz zwischen Exit-Preis und Strike Price.
|
||||
{{/IF}}
|
||||
|
||||
## § 4 Vesting
|
||||
|
||||
### 4.1 Vesting-Schedule
|
||||
|
||||
(1) **Vesting-Dauer:** **{{VESTING_MONTHS}} Monate** (Standard: 48 Monate)
|
||||
|
||||
(2) **Cliff:** **{{CLIFF_MONTHS}} Monate** (Standard: 12 Monate)
|
||||
|
||||
(3) Vor Ablauf des Cliffs sind keine Anteile vested. Nach Ablauf des Cliffs werden **{{CLIFF_VEST_PCT}} %** ({{CLIFF_MONTHS}}/{{VESTING_MONTHS}}) auf einmal vested. Danach vesten die verbleibenden Anteile monatlich linear.
|
||||
|
||||
(4) **Vesting-Beginn:**
|
||||
- für Mitarbeiter: Datum des Eintritts in die Gesellschaft,
|
||||
- für Geschäftsführer: Datum der Bestellung,
|
||||
- für Advisor: Datum der Allokationsvereinbarung.
|
||||
|
||||
### 4.2 Acceleration bei Exit
|
||||
|
||||
(1) **Single-Trigger Acceleration:** Bei Change-of-Control-Ereignis (Verkauf von > {{ACCELERATION_THRESHOLD_PCT}} % der Anteile) wird das Vesting zu **{{ACCELERATION_PCT}} %** beschleunigt.
|
||||
|
||||
(2) **Double-Trigger Acceleration:** Bei {{#IF HAS_DOUBLE_TRIGGER}}Change of Control kombiniert mit unverschuldeter Beendigung des Arbeitsverhältnisses innerhalb von 12 Monaten nach Closing wird das verbleibende Vesting vollständig (100 %) beschleunigt.{{/IF}}{{#IF NOT HAS_DOUBLE_TRIGGER}}Nicht vorgesehen.{{/IF}}
|
||||
|
||||
### 4.3 Pausierung des Vestings
|
||||
|
||||
(1) Bei Elternzeit, längerer Krankheit oder einvernehmlicher Pausierung der Tätigkeit kann das Vesting pausieren. Die Bedingungen werden in der Allokationsvereinbarung geregelt.
|
||||
|
||||
(2) Eine reduzierte Verfügbarkeit (z. B. Teilzeit) führt nicht automatisch zur Pausierung; gegebenenfalls erfolgt eine **proportionale Anpassung** des Vesting-Tempos.
|
||||
|
||||
## § 5 Trigger-Ereignisse und Auszahlung
|
||||
|
||||
### 5.1 Trigger-Ereignisse
|
||||
|
||||
Folgende Ereignisse lösen die Auszahlung der vested Beteiligungen aus:
|
||||
|
||||
(a) **Exit:** Verkauf von > {{EXIT_THRESHOLD_PCT}} % der Anteile (Trade Sale, Asset Deal, IPO),
|
||||
(b) **Liquidation:** Auflösung der Gesellschaft mit verbleibendem Vermögen,
|
||||
(c) {{#IF HAS_DIVIDEND_TRIGGER}}**Dividendenausschüttung:** Anteilige Beteiligung an Ausschüttungen aus dem Bilanzgewinn,{{/IF}}
|
||||
(d) {{#IF HAS_SECONDARY_TRIGGER}}**Secondary-Verkauf:** Bei Verkäufen einzelner Gründer-Anteile zu Marktpreisen können vested Beteiligungen anteilig mitverkauft werden,{{/IF}}
|
||||
(e) {{#IF HAS_EXPIRY_TRIGGER}}**Plan-Ablauf:** Nach Ablauf von {{PLAN_EXPIRY_YEARS}} Jahren ohne Exit erfolgt eine Bewertung und ggf. Auszahlung gemäß Beschluss der Gesellschafterversammlung.{{/IF}}
|
||||
|
||||
### 5.2 Berechnung der Auszahlung
|
||||
|
||||
{{#IF IS_VSOP}}
|
||||
Auszahlung = Vested Virtuelle Anteile × (Exit-Preis pro Anteil − Reference Price)
|
||||
{{/IF}}
|
||||
{{#IF IS_REAL_ESOP}}
|
||||
Erlös = Vested Anteile × Exit-Preis pro Anteil
|
||||
abzüglich Strike Price × Anzahl Anteile (bereits bezahlt bei Ausübung)
|
||||
{{/IF}}
|
||||
{{#IF IS_PHANTOM}}
|
||||
Auszahlung = Vested Phantom Shares × (Exit-Preis pro Anteil − Strike Price)
|
||||
{{/IF}}
|
||||
|
||||
### 5.3 Zahlungsmodalitäten
|
||||
|
||||
(1) Die Auszahlung erfolgt innerhalb von **{{PAYOUT_DAYS}} Tagen** nach Eingang der Verkaufserlöse bei der Gesellschaft.
|
||||
|
||||
(2) **Vesting-Cap:** Die Auszahlung pro Berechtigtem ist auf das **{{PAYOUT_CAP_MULTIPLIER}}-fache** des Bruttojahresgehalts bei Allokation gedeckelt, sofern dies in der Allokationsvereinbarung vorgesehen ist.
|
||||
|
||||
(3) **Steuerliche Behandlung:** Die Auszahlung gilt grundsätzlich als Arbeitslohn (Lohnsteuer + Sozialabgaben){{#IF IS_VSOP}}; bei VSOP keine günstige Tarifierung gemäß § 19a EStG{{/IF}}{{#IF IS_REAL_ESOP}}; bei ESOP ggf. günstige Tarifierung gemäß § 19a EStG (Mitarbeiterkapitalbeteiligung){{/IF}}.
|
||||
|
||||
## § 6 Leaver-Regelungen
|
||||
|
||||
### 6.1 Leaver-Kategorien (entsprechend SHA-Definition)
|
||||
|
||||
(a) **Good Leaver:** Tod, dauerhafte Krankheit, Elternzeit, einvernehmlicher Beschluss, betriebsbedingte Kündigung durch die Gesellschaft.
|
||||
|
||||
(b) **Neutral Leaver:** Eigenkündigung des Berechtigten ohne Pflichtverletzung.
|
||||
|
||||
(c) **Bad Leaver:** Außerordentliche Kündigung durch die Gesellschaft aufgrund Pflichtverletzung, Verstoß gegen Wettbewerbsverbot oder Vertraulichkeit, strafbares Verhalten.
|
||||
|
||||
### 6.2 Behandlung beim Leaver-Event
|
||||
|
||||
| Status | Unvested | Vested |
|
||||
|---|---|---|
|
||||
| **Good Leaver** | Verfall | Behalten zu vollem Wert |
|
||||
| **Neutral Leaver** | Verfall | Behalten zu **{{NEUTRAL_VESTED_PCT}} %** des Werts (Standard: 100% für Optionen, ggf. Rückkauf zum FMV) |
|
||||
| **Bad Leaver** | Verfall | Verfall oder Rückkauf zum **Nennbetrag/Strike Price** (max. Einlage) |
|
||||
|
||||
### 6.3 Rückkaufsrecht der Gesellschaft
|
||||
|
||||
(1) Bei Ausscheiden hat die Gesellschaft das Recht (nicht Pflicht), vested Beteiligungen vom Berechtigten zurückzukaufen.
|
||||
|
||||
(2) Rückkaufspreis:
|
||||
- **Good Leaver:** Fair Market Value (gemäß SHA-Bestimmung)
|
||||
- **Neutral Leaver:** Fair Market Value, ggf. mit Abschlag (siehe Allokationsvereinbarung)
|
||||
- **Bad Leaver:** Strike Price / Nennbetrag
|
||||
|
||||
(3) Zahlung in bis zu **{{BUYBACK_INSTALLMENTS}}** Monatsraten möglich.
|
||||
|
||||
## § 7 Übertragbarkeit
|
||||
|
||||
(1) Die Beteiligungen sind **nicht übertragbar**, ausgenommen:
|
||||
(a) Erbfall (Übergang auf Erben mit Auflage der Plan-Bedingungen),
|
||||
(b) Übertragung an verbundene Personen mit Zustimmung der Geschäftsführung.
|
||||
|
||||
(2) Eine Verpfändung, Beleihung oder sonstige Belastung ist ausgeschlossen.
|
||||
|
||||
## § 8 Verwässerungsschutz und Anpassungen
|
||||
|
||||
(1) Bei Kapitalerhöhungen, Anteilsteilungen, Zusammenlegungen oder ähnlichen Kapitalmaßnahmen wird der Plan-Pool **proportional angepasst**, sodass die wirtschaftliche Position der Berechtigten nicht verschlechtert wird.
|
||||
|
||||
(2) Bei künftigen Finanzierungsrunden mit Verwässerungsschutz für Investoren gelten die Anpassungen analog für den ESOP-Pool, soweit dies in den Investorenverträgen vorgesehen ist.
|
||||
|
||||
## § 9 Plan-Verwaltung
|
||||
|
||||
(1) Der Plan wird von der **Geschäftsführung** verwaltet, in Abstimmung mit dem Beirat (sofern vorhanden) und unter Beachtung der Reserved Matters.
|
||||
|
||||
(2) Wesentliche Entscheidungen (Pool-Erweiterung, Plan-Änderungen, Allokationen >{{MATERIAL_ALLOCATION_PCT}} %) bedürfen der Zustimmung der Gesellschafterversammlung gemäß SHA.
|
||||
|
||||
(3) Die Geschäftsführung führt ein **Plan-Register** mit allen Allokationen, Vesting-Ständen und Ausübungen.
|
||||
|
||||
## § 10 Kommunikation und Transparenz
|
||||
|
||||
(1) Berechtigte erhalten jährlich eine **Vesting-Übersicht** mit:
|
||||
(a) Allokationsdatum, Strike Price/Reference Price,
|
||||
(b) bisher vested und noch unvested Anteile,
|
||||
(c) Vesting-Schedule mit Daten,
|
||||
(d) Hinweise zu Steuerimplikationen.
|
||||
|
||||
(2) Bei wesentlichen Ereignissen (Exit, Kapitalerhöhung mit Pool-Anpassung) werden Berechtigte informiert.
|
||||
|
||||
## § 11 Vertraulichkeit
|
||||
|
||||
Berechtigte verpflichten sich zur Vertraulichkeit über Plan-Inhalte, Allokationen anderer Berechtigter und damit verbundene Geschäftsgeheimnisse.
|
||||
|
||||
## § 12 Plan-Änderungen und Beendigung
|
||||
|
||||
(1) Änderungen dieses Plans bedürfen eines Gesellschafterbeschlusses mit der im SHA festgelegten Mehrheit.
|
||||
|
||||
(2) Änderungen, die die Position bereits Berechtigter wesentlich verschlechtern, bedürfen zusätzlich der Zustimmung der betroffenen Berechtigten.
|
||||
|
||||
(3) Der Plan endet bei:
|
||||
(a) Auflösung der Gesellschaft,
|
||||
(b) Vollständiger Auszahlung aller vested Beteiligungen,
|
||||
(c) Beschluss der Gesellschafterversammlung zur Plan-Beendigung (unter Wahrung erworbener Ansprüche).
|
||||
|
||||
## § 13 Schlussbestimmungen
|
||||
|
||||
(1) **Anwendbares Recht:** Deutsches Recht.
|
||||
|
||||
(2) **Gerichtsstand:** Sitz der Gesellschaft.
|
||||
|
||||
(3) **Salvatorische Klausel:** Unwirksame Bestimmungen berühren nicht die Wirksamkeit der übrigen.
|
||||
|
||||
(4) **Schriftform:** Änderungen bedürfen der Schriftform.
|
||||
|
||||
(5) **Anlagen:** Muster-Allokationsvereinbarung (Anlage 1).
|
||||
|
||||
---
|
||||
|
||||
**Verabschiedet durch Gesellschafterbeschluss vom {{ADOPTION_DATE}}.**
|
||||
|
||||
___________________________
|
||||
Für die Gesellschaft / Geschäftsführung
|
||||
|
||||
---
|
||||
|
||||
## Anlage 1 — Muster-Allokationsvereinbarung (Grant Letter)
|
||||
|
||||
**An:** {{BENEFICIARY_NAME}}
|
||||
|
||||
Lieber/Liebe {{BENEFICIARY_NAME}},
|
||||
|
||||
hiermit teilen wir Dir die folgende Beteiligung am {{PLAN_NAME}} der {{COMPANY_NAME}} zu:
|
||||
|
||||
| Punkt | Wert |
|
||||
|---|---|
|
||||
| **Anzahl Anteile** | {{ALLOCATED_SHARES_COUNT}} ({{ALLOCATED_PCT}} % am Pool) |
|
||||
| **Strike Price / Reference Price** | {{STRIKE_PRICE_EUR}} EUR pro Anteil |
|
||||
| **Allokationsdatum** | {{ALLOCATION_DATE}} |
|
||||
| **Vesting-Beginn** | {{VESTING_START_DATE}} |
|
||||
| **Vesting-Schedule** | {{VESTING_MONTHS}} Monate, Cliff {{CLIFF_MONTHS}} Monate |
|
||||
| **Acceleration bei Exit** | {{ACCELERATION_PCT}} % Single-Trigger |
|
||||
| **Auszahlung** | {{PAYOUT_TYPE}} |
|
||||
|
||||
Es gelten die Bedingungen des {{PLAN_NAME}} in der gültigen Fassung vom {{ADOPTION_DATE}}.
|
||||
|
||||
Mit Annahme dieser Allokationsvereinbarung bestätigst Du, den Plan gelesen und verstanden zu haben.
|
||||
|
||||
Bei Fragen kontaktiere bitte {{CONTACT_PERSON}}.
|
||||
|
||||
Herzlich willkommen im {{PLAN_NAME}}!
|
||||
|
||||
**{{COMPANY_SEAT}}, {{ALLOCATION_DATE}}**
|
||||
|
||||
___________________________
|
||||
Für die Gesellschaft
|
||||
|
||||
___________________________
|
||||
{{BENEFICIARY_NAME}} (Berechtigte/r)
|
||||
$template$,
|
||||
'["ESOP_TYPE_LABEL","ESOP_TYPE_SHORT","COMPANY_NAME","COMPANY_SEAT","PLAN_NAME","ADOPTION_DATE","DOCUMENT_VERSION","IS_VSOP","IS_REAL_ESOP","IS_PHANTOM","POOL_PCT","POOL_ABSOLUTE_VALUE","HAS_SHA","CXO_ALLOCATION_RANGE","SENIOR_ALLOCATION_RANGE","MID_ALLOCATION_RANGE","JUNIOR_ALLOCATION_RANGE","ADVISOR_ALLOCATION_RANGE","SHARE_NENNBETRAG_EUR","STRIKE_PRICE_EUR","VESTING_MONTHS","CLIFF_MONTHS","CLIFF_VEST_PCT","ACCELERATION_THRESHOLD_PCT","ACCELERATION_PCT","HAS_DOUBLE_TRIGGER","EXIT_THRESHOLD_PCT","HAS_DIVIDEND_TRIGGER","HAS_SECONDARY_TRIGGER","HAS_EXPIRY_TRIGGER","PLAN_EXPIRY_YEARS","PAYOUT_DAYS","PAYOUT_CAP_MULTIPLIER","NEUTRAL_VESTED_PCT","BUYBACK_INSTALLMENTS","MATERIAL_ALLOCATION_PCT","BENEFICIARY_NAME","ALLOCATED_SHARES_COUNT","ALLOCATED_PCT","ALLOCATION_DATE","VESTING_START_DATE","PAYOUT_TYPE","CONTACT_PERSON"]'::jsonb,
|
||||
'de','DE',NULL,'MIT License','BreakPilot Compliance',false,true,'1.0.0','published',NOW(),NOW()
|
||||
;
|
||||
SELECT document_type, title, LENGTH(content), jsonb_array_length(placeholders) FROM compliance_legal_templates WHERE document_type = 'esop_plan' ORDER BY created_at DESC LIMIT 1;
|
||||
@@ -0,0 +1,205 @@
|
||||
-- Migration 136: Cap Table (Beteiligungsstruktur) Template
|
||||
-- Strukturierte Uebersicht ueber Gesellschafter, Investoren, Convertibles, ESOP-Pool
|
||||
-- Fuer Investor Due Diligence, interne Steuerung und Exit-Vorbereitung
|
||||
-- Enthaelt Verwaesserungsanalyse, Liquidations-Wasserfall-Simulation und Historie
|
||||
-- Dynamische Tabellen-Inhalte via Platzhalter (GRUENDER_ZEILEN, INVESTOREN_ZEILEN, etc.)
|
||||
-- Optionale Bloecke: HAS_INVESTOREN, HAS_CONVERTIBLES, HAS_ESOP_POOL, HAS_OTHERS,
|
||||
-- HAS_NEW_INVESTORS, HAS_ASSUMED_SERIES_A, HAS_LIQUIDATION_WATERFALL
|
||||
|
||||
INSERT INTO compliance_legal_templates (
|
||||
id, tenant_id, document_type, title, description, content,
|
||||
placeholders, language, jurisdiction,
|
||||
license_id, license_name, source_name,
|
||||
attribution_required, is_complete_document, version, status,
|
||||
created_at, updated_at
|
||||
) SELECT
|
||||
gen_random_uuid(),
|
||||
'9282a473-5c95-4b3a-bf78-0ecc0ec71d3e',
|
||||
'cap_table',
|
||||
'Cap Table (Beteiligungsstruktur)',
|
||||
'Strukturierte Uebersicht ueber die Beteiligungsverhaeltnisse einer Gesellschaft. Zeigt vollverwaessert (Fully Diluted) Gruender-Anteile, Investoren mit Anteilsklasse und Liquidation Preferences, ausstehende Wandeldarlehen mit Cap/Discount, ESOP/VSOP-Pool inkl. Top-Berechtigte, Vesting-Status der Gruender, Verwaesserungsanalyse (Convertible-Wandlung, ESOP-Full-Vesting, Series-A-Annahme), Liquidations-Wasserfall-Simulation und Historie der Veraenderungen. Hinweis: Rechtlich verbindlich ist die Gesellschafterliste nach § 40 GmbHG.',
|
||||
$template$
|
||||
# Cap Table (Beteiligungsstruktur) der {{COMPANY_NAME}}
|
||||
|
||||
---
|
||||
|
||||
## Dokumentenkontrolle
|
||||
|
||||
| Feld | Wert |
|
||||
|---|---|
|
||||
| Gesellschaft | {{COMPANY_NAME}} |
|
||||
| Stand | {{CAP_TABLE_DATE}} |
|
||||
| Anlass | {{CAP_TABLE_REASON}} (z.B. Gründung, Finanzierungsrunde, Exit-Vorbereitung) |
|
||||
| Erstellt von | {{CAP_TABLE_AUTHOR}} |
|
||||
| Version | {{DOCUMENT_VERSION}} |
|
||||
|
||||
> **Hinweis:** Diese Cap Table ist eine **Übersicht** der Beteiligungsverhältnisse. Die rechtlich verbindliche Darstellung ergibt sich aus der **Gesellschafterliste** nach § 40 GmbHG und dem Handelsregisterauszug. Bei Abweichungen gilt die Gesellschafterliste.
|
||||
|
||||
---
|
||||
|
||||
## 1. Stammkapital und Anteile
|
||||
|
||||
| Position | Wert |
|
||||
|---|---:|
|
||||
| **Stammkapital aktuell** | {{CURRENT_STAMMKAPITAL_EUR}} EUR |
|
||||
| **Anzahl Anteile gesamt (vollverwässert)** | {{TOTAL_SHARES_FULLY_DILUTED}} |
|
||||
| **Nennbetrag pro Anteil** | {{SHARE_NENNBETRAG_EUR}} EUR |
|
||||
| **Aktuelle Pre-Money Bewertung** | {{PRE_MONEY_VALUATION_EUR}} EUR |
|
||||
| **Aktuelle Post-Money Bewertung** | {{POST_MONEY_VALUATION_EUR}} EUR |
|
||||
| **Implizierter Preis pro Anteil** | {{IMPLIED_PRICE_PER_SHARE_EUR}} EUR |
|
||||
|
||||
## 2. Gesellschafterstruktur (aktuell)
|
||||
|
||||
### 2.1 Gründer
|
||||
|
||||
| Gesellschafter | Anteile (Nr.) | Nennbetrag (EUR) | Anteil am Stammkapital (%) | Vested (%) | Anteilsklasse |
|
||||
|---|---:|---:|---:|---:|---|
|
||||
{{GRUENDER_ZEILEN}}
|
||||
|
||||
**Summe Gründer:** {{GRUENDER_SUMME_PCT}} %
|
||||
|
||||
### 2.2 Investoren
|
||||
|
||||
{{#IF HAS_INVESTOREN}}
|
||||
| Investor | Round | Anteile (Nr.) | Nennbetrag (EUR) | Anteil (%) | Liquidation Pref. | Klasse |
|
||||
|---|---|---:|---:|---:|---:|---|
|
||||
{{INVESTOREN_ZEILEN}}
|
||||
|
||||
**Summe Investoren:** {{INVESTOREN_SUMME_PCT}} %
|
||||
{{/IF}}
|
||||
{{#IF NOT HAS_INVESTOREN}}
|
||||
_Noch keine Investoren beteiligt._
|
||||
{{/IF}}
|
||||
|
||||
### 2.3 Convertibles (Wandeldarlehen / SAFE)
|
||||
|
||||
{{#IF HAS_CONVERTIBLES}}
|
||||
| Investor | Datum | Betrag (EUR) | Cap (EUR) | Discount (%) | Verzinsung (%) | Status |
|
||||
|---|---|---:|---:|---:|---:|---|
|
||||
{{CONVERTIBLES_ZEILEN}}
|
||||
|
||||
**Summe Convertibles (zur Wandlung):** {{CONVERTIBLES_SUMME_EUR}} EUR
|
||||
{{/IF}}
|
||||
{{#IF NOT HAS_CONVERTIBLES}}
|
||||
_Keine ausstehenden Wandeldarlehen._
|
||||
{{/IF}}
|
||||
|
||||
### 2.4 ESOP / VSOP / Phantom Pool
|
||||
|
||||
{{#IF HAS_ESOP_POOL}}
|
||||
| Pool-Typ | Pool-Größe (%) | Bereits zugeteilt (%) | Verfügbar (%) | Strike Price Range |
|
||||
|---|---:|---:|---:|---|
|
||||
| {{ESOP_TYPE}} | {{POOL_TOTAL_PCT}} | {{POOL_ALLOCATED_PCT}} | {{POOL_AVAILABLE_PCT}} | {{STRIKE_PRICE_RANGE}} |
|
||||
|
||||
**Top-10 Berechtigte (vested + unvested):**
|
||||
|
||||
| Berechtigte/r | Funktion | Allokation (%) | Vested (%) | Eintritt | Strike Price (EUR) |
|
||||
|---|---|---:|---:|---|---:|
|
||||
{{ESOP_TOP_BERECHTIGTE}}
|
||||
{{/IF}}
|
||||
{{#IF NOT HAS_ESOP_POOL}}
|
||||
_Kein ESOP/VSOP-Pool eingerichtet._
|
||||
{{/IF}}
|
||||
|
||||
### 2.5 Sonstige (Beirat, Advisor, etc.)
|
||||
|
||||
{{#IF HAS_OTHERS}}
|
||||
| Person/Rolle | Anteile (%) | Form | Status |
|
||||
|---|---:|---|---|
|
||||
{{SONSTIGE_ZEILEN}}
|
||||
{{/IF}}
|
||||
|
||||
## 3. Übersicht: Beteiligungsverhältnis (gerundet)
|
||||
|
||||
| Kategorie | Pre-Money (%) | Post-Money (%) |
|
||||
|---|---:|---:|
|
||||
| Gründer | {{GRUENDER_PRE_PCT}} | {{GRUENDER_POST_PCT}} |
|
||||
| Bestehende Investoren | {{INVESTOREN_PRE_PCT}} | {{INVESTOREN_POST_PCT}} |
|
||||
| ESOP-Pool | {{ESOP_PRE_PCT}} | {{ESOP_POST_PCT}} |
|
||||
| Convertibles (bei Wandlung) | {{CONVERTIBLES_PRE_PCT}} | {{CONVERTIBLES_POST_PCT}} |
|
||||
{{#IF HAS_NEW_INVESTORS}}
|
||||
| Neue Investoren (aktuelle Runde) | — | {{NEW_INVESTORS_POST_PCT}} |
|
||||
{{/IF}}
|
||||
| **Summe** | **100,00** | **100,00** |
|
||||
|
||||
## 4. Vesting-Status (Founders)
|
||||
|
||||
| Gründer | Total Anteile (%) | Vested (%) | Unvested (%) | Vesting-Beginn | Vesting-Ende | Cliff überschritten |
|
||||
|---|---:|---:|---:|---|---|---|
|
||||
{{VESTING_STATUS_ZEILEN}}
|
||||
|
||||
## 5. Verwässerungsanalyse
|
||||
|
||||
### 5.1 Bei Wandlung aller Convertibles
|
||||
|
||||
{{#IF HAS_CONVERTIBLES}}
|
||||
| Annahme | Wert |
|
||||
|---|---:|
|
||||
| Nächste Bewertung (Pre-Money) | {{ASSUMED_NEXT_VALUATION_EUR}} EUR |
|
||||
| Wandlungspreis (gemäß Cap/Discount) | {{CONVERSION_PRICE_EUR}} EUR/Anteil |
|
||||
| Neue Anteile durch Wandlung | {{NEW_SHARES_FROM_CONVERSION}} |
|
||||
| Verwässerung Gründer | {{GRUENDER_VERWAESSERUNG_PCT}} %-Pkt |
|
||||
{{/IF}}
|
||||
|
||||
### 5.2 Bei Full-Vesting des ESOP-Pools
|
||||
|
||||
{{#IF HAS_ESOP_POOL}}
|
||||
| Annahme | Wert |
|
||||
|---|---:|
|
||||
| Pool-Vergabe | 100 % (alle Allocations vested) |
|
||||
| Gründer-Verdünnung gegenüber heute | {{GRUENDER_ESOP_VERWAESSERUNG_PCT}} %-Pkt |
|
||||
{{/IF}}
|
||||
|
||||
### 5.3 Bei Series-A-Runde (Annahme)
|
||||
|
||||
{{#IF HAS_ASSUMED_SERIES_A}}
|
||||
| Annahme | Wert |
|
||||
|---|---:|
|
||||
| Investment | {{ASSUMED_SERIES_A_AMOUNT_EUR}} EUR |
|
||||
| Pre-Money | {{ASSUMED_SERIES_A_PRE_MONEY_EUR}} EUR |
|
||||
| Neue Investoren-Quote (Post) | {{ASSUMED_NEW_INVESTOR_PCT}} % |
|
||||
| Gründer-Anteil danach | {{GRUENDER_AFTER_A_PCT}} % |
|
||||
{{/IF}}
|
||||
|
||||
## 6. Liquidations-Wasserfall (Exit-Simulation)
|
||||
|
||||
{{#IF HAS_LIQUIDATION_WATERFALL}}
|
||||
Bei einem Exit-Erlös von **{{EXIT_PROCEEDS_EUR}} EUR** würden die Erlöse wie folgt verteilt:
|
||||
|
||||
| Rang | Empfänger | Berechnung | Erlös (EUR) | % vom Gesamt |
|
||||
|---|---|---|---:|---:|
|
||||
{{LIQUIDATIONS_WATERFALL_ZEILEN}}
|
||||
|
||||
**Hinweis:** Vereinfachte Darstellung. Tatsächliche Verteilung hängt von genauen Vorzugsrechten ab.
|
||||
{{/IF}}
|
||||
|
||||
## 7. Historische Veränderungen
|
||||
|
||||
| Datum | Ereignis | Auswirkung | Cap-Table-Version |
|
||||
|---|---|---|---|
|
||||
{{HISTORIE_ZEILEN}}
|
||||
|
||||
## 8. Annahmen und Hinweise
|
||||
|
||||
(1) **Vollverwässerte Darstellung:** Alle Tabellen sind in **Fully Diluted** Sicht, inkl. ESOP-Pool und Convertibles.
|
||||
|
||||
(2) **Zeitpunkt:** Stand zum **{{CAP_TABLE_DATE}}**. Spätere Änderungen sind in einer aktualisierten Version zu erfassen.
|
||||
|
||||
(3) **Rechtlich verbindlich** ist die Gesellschafterliste nach § 40 GmbHG sowie der Handelsregisterauszug.
|
||||
|
||||
(4) **Steuerliche Hinweise** werden in dieser Übersicht nicht aufgenommen — bitte separat mit Steuerberatung klären (insbesondere zu § 19a EStG, geldwerter Vorteil, Grunderwerbsteuer bei Anteilsübertragungen).
|
||||
|
||||
(5) Bei Diskrepanzen zwischen Cap Table, Gesellschafterliste und SHA gilt die jeweils aktuellere und rechtlich relevantere Quelle.
|
||||
|
||||
---
|
||||
|
||||
**Erstellt am {{CAP_TABLE_DATE}} durch {{CAP_TABLE_AUTHOR}}.**
|
||||
|
||||
___________________________
|
||||
{{CAP_TABLE_AUTHOR}}
|
||||
{{CAP_TABLE_AUTHOR_ROLE}}
|
||||
$template$,
|
||||
'["COMPANY_NAME","CAP_TABLE_DATE","CAP_TABLE_REASON","CAP_TABLE_AUTHOR","CAP_TABLE_AUTHOR_ROLE","DOCUMENT_VERSION","CURRENT_STAMMKAPITAL_EUR","TOTAL_SHARES_FULLY_DILUTED","SHARE_NENNBETRAG_EUR","PRE_MONEY_VALUATION_EUR","POST_MONEY_VALUATION_EUR","IMPLIED_PRICE_PER_SHARE_EUR","GRUENDER_ZEILEN","GRUENDER_SUMME_PCT","HAS_INVESTOREN","INVESTOREN_ZEILEN","INVESTOREN_SUMME_PCT","HAS_CONVERTIBLES","CONVERTIBLES_ZEILEN","CONVERTIBLES_SUMME_EUR","HAS_ESOP_POOL","ESOP_TYPE","POOL_TOTAL_PCT","POOL_ALLOCATED_PCT","POOL_AVAILABLE_PCT","STRIKE_PRICE_RANGE","ESOP_TOP_BERECHTIGTE","HAS_OTHERS","SONSTIGE_ZEILEN","GRUENDER_PRE_PCT","GRUENDER_POST_PCT","INVESTOREN_PRE_PCT","INVESTOREN_POST_PCT","ESOP_PRE_PCT","ESOP_POST_PCT","CONVERTIBLES_PRE_PCT","CONVERTIBLES_POST_PCT","HAS_NEW_INVESTORS","NEW_INVESTORS_POST_PCT","VESTING_STATUS_ZEILEN","ASSUMED_NEXT_VALUATION_EUR","CONVERSION_PRICE_EUR","NEW_SHARES_FROM_CONVERSION","GRUENDER_VERWAESSERUNG_PCT","GRUENDER_ESOP_VERWAESSERUNG_PCT","HAS_ASSUMED_SERIES_A","ASSUMED_SERIES_A_AMOUNT_EUR","ASSUMED_SERIES_A_PRE_MONEY_EUR","ASSUMED_NEW_INVESTOR_PCT","GRUENDER_AFTER_A_PCT","HAS_LIQUIDATION_WATERFALL","EXIT_PROCEEDS_EUR","LIQUIDATIONS_WATERFALL_ZEILEN","HISTORIE_ZEILEN"]'::jsonb,
|
||||
'de','DE',NULL,'MIT License','BreakPilot Compliance',false,true,'1.0.0','published',NOW(),NOW()
|
||||
;
|
||||
SELECT document_type, title, LENGTH(content), jsonb_array_length(placeholders) FROM compliance_legal_templates WHERE document_type = 'cap_table' ORDER BY created_at DESC LIMIT 1;
|
||||
@@ -0,0 +1,53 @@
|
||||
-- Migration 137: Template-Kategorisierung (Lifecycle + Functional Category)
|
||||
-- ADDITIVE Aenderung an compliance_legal_templates: zwei neue Spalten
|
||||
-- Keine Breaking Changes; alte Code-Pfade bleiben funktionsfaehig
|
||||
|
||||
-- Spalte 1: Lifecycle Stage (mehrwertig - ein Template kann fuer mehrere Phasen relevant sein)
|
||||
ALTER TABLE compliance_legal_templates
|
||||
ADD COLUMN IF NOT EXISTS lifecycle_stage TEXT[] DEFAULT '{}';
|
||||
|
||||
-- Spalte 2: Funktionale Kategorie (einwertig)
|
||||
ALTER TABLE compliance_legal_templates
|
||||
ADD COLUMN IF NOT EXISTS functional_category TEXT;
|
||||
|
||||
-- Index fuer Filter-Performance
|
||||
CREATE INDEX IF NOT EXISTS idx_clt_lifecycle_stage ON compliance_legal_templates USING gin(lifecycle_stage);
|
||||
CREATE INDEX IF NOT EXISTS idx_clt_functional_category ON compliance_legal_templates(functional_category);
|
||||
|
||||
-- CHECK Constraint fuer functional_category (enum-aehnlich, aber erweiterbar)
|
||||
ALTER TABLE compliance_legal_templates
|
||||
DROP CONSTRAINT IF EXISTS chk_clt_functional_category;
|
||||
ALTER TABLE compliance_legal_templates
|
||||
ADD CONSTRAINT chk_clt_functional_category CHECK (
|
||||
functional_category IS NULL OR functional_category IN (
|
||||
'founding_legal',
|
||||
'employment',
|
||||
'investor_funding',
|
||||
'customer_b2b',
|
||||
'customer_b2c',
|
||||
'data_protection',
|
||||
'it_security',
|
||||
'ai_governance',
|
||||
'internal_policy',
|
||||
'public_facing',
|
||||
'compliance_process',
|
||||
'finance_tax',
|
||||
'vendor_supplier'
|
||||
)
|
||||
);
|
||||
|
||||
-- CHECK Constraint fuer lifecycle_stage Array-Werte (validate elements)
|
||||
ALTER TABLE compliance_legal_templates
|
||||
DROP CONSTRAINT IF EXISTS chk_clt_lifecycle_stage;
|
||||
ALTER TABLE compliance_legal_templates
|
||||
ADD CONSTRAINT chk_clt_lifecycle_stage CHECK (
|
||||
lifecycle_stage <@ ARRAY['pre_founding','founding','startup','kmu','konzern']::TEXT[]
|
||||
);
|
||||
|
||||
-- Verifikation: Schema-Erweiterung
|
||||
SELECT
|
||||
column_name, data_type, is_nullable, column_default
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 'compliance_legal_templates'
|
||||
AND column_name IN ('lifecycle_stage', 'functional_category')
|
||||
ORDER BY column_name;
|
||||
@@ -0,0 +1,163 @@
|
||||
-- Migration 138: Backfill aller Templates mit lifecycle_stage + functional_category
|
||||
-- Setzt Default-Werte fuer alle bekannten document_types
|
||||
-- Templates ohne explizite Zuordnung erhalten Default: startup+kmu+konzern, internal_policy
|
||||
|
||||
-- ============================================================
|
||||
-- FOUNDING LEGAL (Notartermin / Vorgruendung)
|
||||
-- ============================================================
|
||||
UPDATE compliance_legal_templates SET
|
||||
lifecycle_stage = '{pre_founding,founding}', functional_category = 'founding_legal'
|
||||
WHERE document_type = 'gesellschafterliste';
|
||||
|
||||
UPDATE compliance_legal_templates SET
|
||||
lifecycle_stage = '{founding}', functional_category = 'founding_legal'
|
||||
WHERE document_type IN ('gf_bestellungsbeschluss', 'hrb_anmeldung');
|
||||
|
||||
UPDATE compliance_legal_templates SET
|
||||
lifecycle_stage = '{pre_founding,founding,startup}', functional_category = 'founding_legal'
|
||||
WHERE document_type = 'ip_assignment_agreement';
|
||||
|
||||
UPDATE compliance_legal_templates SET
|
||||
lifecycle_stage = '{founding,startup,kmu,konzern}', functional_category = 'founding_legal'
|
||||
WHERE document_type IN ('articles_of_association', 'sha', 'geschaeftsordnung_gf');
|
||||
|
||||
-- ============================================================
|
||||
-- INVESTOR / FUNDING
|
||||
-- ============================================================
|
||||
UPDATE compliance_legal_templates SET
|
||||
lifecycle_stage = '{pre_founding,startup}', functional_category = 'investor_funding'
|
||||
WHERE document_type IN ('term_sheet', 'convertible_loan_agreement');
|
||||
|
||||
UPDATE compliance_legal_templates SET
|
||||
lifecycle_stage = '{startup,kmu}', functional_category = 'investor_funding'
|
||||
WHERE document_type IN ('subscription_agreement', 'esop_plan');
|
||||
|
||||
UPDATE compliance_legal_templates SET
|
||||
lifecycle_stage = '{founding,startup,kmu,konzern}', functional_category = 'investor_funding'
|
||||
WHERE document_type = 'cap_table';
|
||||
|
||||
-- ============================================================
|
||||
-- EMPLOYMENT (Mitarbeiter / Geschaeftsfuehrer)
|
||||
-- ============================================================
|
||||
UPDATE compliance_legal_templates SET
|
||||
lifecycle_stage = '{founding,startup,kmu,konzern}', functional_category = 'employment'
|
||||
WHERE document_type IN ('managing_director_employment_contract','employment_contract_de','nda','offboarding_policy');
|
||||
|
||||
-- ============================================================
|
||||
-- CUSTOMER B2B
|
||||
-- ============================================================
|
||||
UPDATE compliance_legal_templates SET
|
||||
lifecycle_stage = '{startup,kmu,konzern}', functional_category = 'customer_b2b'
|
||||
WHERE document_type IN ('agb','sla','dpa','data_processing_agreement','cloud_service_agreement','terms_of_service');
|
||||
|
||||
-- ============================================================
|
||||
-- DATA PROTECTION (DSGVO)
|
||||
-- ============================================================
|
||||
UPDATE compliance_legal_templates SET
|
||||
lifecycle_stage = '{startup,kmu,konzern}', functional_category = 'data_protection'
|
||||
WHERE document_type IN (
|
||||
'privacy_policy', 'cookie_policy', 'cookie_banner', 'consent_texts',
|
||||
'data_protection_concept', 'data_protection_policy', 'data_retention_policy',
|
||||
'data_transfer_policy', 'data_classification_policy', 'loeschkonzept',
|
||||
'pflichtenregister', 'dsfa', 'vvt_register', 'privacy_incident_policy',
|
||||
'scc_companion', 'transfer_impact_assessment', 'video_conference_dsi',
|
||||
'tom_documentation'
|
||||
);
|
||||
|
||||
-- ============================================================
|
||||
-- IT SECURITY
|
||||
-- ============================================================
|
||||
UPDATE compliance_legal_templates SET
|
||||
lifecycle_stage = '{startup,kmu,konzern}', functional_category = 'it_security'
|
||||
WHERE document_type IN (
|
||||
'it_security_concept', 'information_security_policy',
|
||||
'access_control_policy', 'access_control_concept',
|
||||
'password_policy', 'encryption_policy', 'secrets_management_policy',
|
||||
'backup_policy', 'backup_recovery_concept',
|
||||
'disaster_recovery_policy', 'business_continuity_policy', 'crisis_management_policy',
|
||||
'patch_management_policy', 'vulnerability_management_policy',
|
||||
'logging_policy', 'logging_concept',
|
||||
'byod_policy', 'cloud_security_policy',
|
||||
'security_awareness_policy', 'employee_security_policy',
|
||||
'supplier_security_policy', 'third_party_security_policy', 'vendor_risk_management_policy',
|
||||
'incident_response_policy', 'incident_response_plan',
|
||||
'isms_manual', 'risk_management_concept', 'devsecops_policy',
|
||||
'asset_management_policy'
|
||||
);
|
||||
|
||||
-- KMU-fokussierte IT-Security Themen (oft erst ab gewisser Groesse)
|
||||
UPDATE compliance_legal_templates SET
|
||||
lifecycle_stage = '{kmu,konzern}'
|
||||
WHERE document_type IN (
|
||||
'isms_manual', 'disaster_recovery_policy', 'business_continuity_policy',
|
||||
'crisis_management_policy', 'devsecops_policy'
|
||||
);
|
||||
|
||||
-- ============================================================
|
||||
-- AI GOVERNANCE
|
||||
-- ============================================================
|
||||
UPDATE compliance_legal_templates SET
|
||||
lifecycle_stage = '{startup,kmu,konzern}', functional_category = 'ai_governance'
|
||||
WHERE document_type = 'ai_usage_policy';
|
||||
|
||||
-- ============================================================
|
||||
-- INTERNAL POLICY
|
||||
-- ============================================================
|
||||
UPDATE compliance_legal_templates SET
|
||||
lifecycle_stage = '{startup,kmu,konzern}', functional_category = 'internal_policy'
|
||||
WHERE document_type IN (
|
||||
'whistleblower_policy', 'copyright_policy', 'community_guidelines',
|
||||
'acceptable_use', 'change_management_policy', 'remote_work_policy',
|
||||
'standard_operating_procedure'
|
||||
);
|
||||
|
||||
-- Whistleblower-Policy: erst ab KMU (>= 50 MA) Pflicht
|
||||
UPDATE compliance_legal_templates SET
|
||||
lifecycle_stage = '{kmu,konzern}'
|
||||
WHERE document_type = 'whistleblower_policy';
|
||||
|
||||
-- ============================================================
|
||||
-- PUBLIC FACING (Website / Impressum)
|
||||
-- ============================================================
|
||||
UPDATE compliance_legal_templates SET
|
||||
lifecycle_stage = '{founding,startup,kmu,konzern}', functional_category = 'public_facing'
|
||||
WHERE document_type = 'impressum';
|
||||
|
||||
-- ============================================================
|
||||
-- VENDOR / SUPPLIER
|
||||
-- ============================================================
|
||||
UPDATE compliance_legal_templates SET
|
||||
lifecycle_stage = '{startup,kmu,konzern}', functional_category = 'vendor_supplier'
|
||||
WHERE document_type IN ('supplier_security_policy','third_party_security_policy','vendor_risk_management_policy');
|
||||
|
||||
-- ============================================================
|
||||
-- DEFAULT FALLBACK fuer unkategorisierte Templates
|
||||
-- (Templates ohne lifecycle_stage erhalten Default-Set)
|
||||
-- ============================================================
|
||||
UPDATE compliance_legal_templates SET
|
||||
lifecycle_stage = '{startup,kmu,konzern}'
|
||||
WHERE lifecycle_stage = '{}' OR lifecycle_stage IS NULL;
|
||||
|
||||
UPDATE compliance_legal_templates SET
|
||||
functional_category = 'internal_policy'
|
||||
WHERE functional_category IS NULL;
|
||||
|
||||
-- ============================================================
|
||||
-- VERIFIKATION
|
||||
-- ============================================================
|
||||
SELECT
|
||||
functional_category,
|
||||
COUNT(*) AS template_count,
|
||||
array_agg(DISTINCT unnest_stage) AS lifecycle_stages
|
||||
FROM compliance_legal_templates,
|
||||
LATERAL unnest(lifecycle_stage) AS unnest_stage
|
||||
GROUP BY functional_category
|
||||
ORDER BY functional_category;
|
||||
|
||||
-- Detail-Pruefung: Notartermin-Bundle
|
||||
SELECT
|
||||
document_type, title, lifecycle_stage, functional_category
|
||||
FROM compliance_legal_templates
|
||||
WHERE 'founding' = ANY(lifecycle_stage)
|
||||
OR 'pre_founding' = ANY(lifecycle_stage)
|
||||
ORDER BY functional_category, document_type;
|
||||
@@ -0,0 +1,219 @@
|
||||
"""Unit-Tests fuer den Founding-Wizard Service.
|
||||
|
||||
Testet:
|
||||
- Template-Renderer mit verschiedenen Inputs
|
||||
- Wizard-State -> Context Mapping
|
||||
- Markdown -> DOCX Konvertierung
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
|
||||
from compliance.services.founding_wizard.template_renderer import (
|
||||
find_undefined_placeholders,
|
||||
render_template,
|
||||
)
|
||||
from compliance.services.founding_wizard.wizard_to_context import base_context
|
||||
|
||||
|
||||
class TestTemplateRenderer:
|
||||
def test_simple_variable_substitution(self):
|
||||
result = render_template("Hallo {{NAME}}!", {"NAME": "Welt"})
|
||||
assert result == "Hallo Welt!"
|
||||
|
||||
def test_missing_variable_placeholder(self):
|
||||
result = render_template("Hallo {{NAME}}!", {})
|
||||
assert "[NAME fehlt]" in result
|
||||
|
||||
def test_if_block_truthy(self):
|
||||
result = render_template(
|
||||
"Start {{#IF FLAG}}drin{{/IF}} Ende",
|
||||
{"FLAG": True}
|
||||
)
|
||||
assert result == "Start drin Ende"
|
||||
|
||||
def test_if_block_falsy(self):
|
||||
result = render_template(
|
||||
"Start {{#IF FLAG}}drin{{/IF}} Ende",
|
||||
{"FLAG": False}
|
||||
)
|
||||
assert result == "Start Ende"
|
||||
|
||||
def test_if_not_block(self):
|
||||
result = render_template(
|
||||
"{{#IF NOT FLAG}}negiert{{/IF}}",
|
||||
{"FLAG": False}
|
||||
)
|
||||
assert "negiert" in result
|
||||
|
||||
def test_truthy_int(self):
|
||||
result = render_template("{{#IF N}}yes{{/IF}}", {"N": 5})
|
||||
assert "yes" in result
|
||||
|
||||
def test_falsy_zero(self):
|
||||
result = render_template("{{#IF N}}yes{{/IF}}", {"N": 0})
|
||||
assert "yes" not in result
|
||||
|
||||
def test_truthy_list(self):
|
||||
result = render_template("{{#IF L}}yes{{/IF}}", {"L": [1, 2]})
|
||||
assert "yes" in result
|
||||
|
||||
def test_falsy_empty_list(self):
|
||||
result = render_template("{{#IF L}}yes{{/IF}}", {"L": []})
|
||||
assert "yes" not in result
|
||||
|
||||
def test_nested_if_blocks(self):
|
||||
template = "{{#IF A}}A-on{{#IF B}}+B-on{{/IF}}{{/IF}}"
|
||||
result = render_template(template, {"A": True, "B": True})
|
||||
assert result == "A-on+B-on"
|
||||
|
||||
def test_find_undefined_placeholders(self):
|
||||
template = "{{X}} {{Y}} {{#IF Z}}.{{/IF}}"
|
||||
undefined = find_undefined_placeholders(template, {"X": "1"})
|
||||
assert "Y" in undefined
|
||||
assert "Z" in undefined
|
||||
assert "X" not in undefined
|
||||
|
||||
|
||||
class TestWizardToContext:
|
||||
def _basic_state(self) -> dict:
|
||||
return {
|
||||
"basics": {
|
||||
"company_name": "Test GmbH",
|
||||
"legal_form": "GmbH",
|
||||
"company_seat": "Stuttgart",
|
||||
"company_address": "Königstraße 1, 70173 Stuttgart",
|
||||
"company_purpose_description": "Test purpose",
|
||||
"company_purpose_bullets": ["a) Test", "b) Test 2"],
|
||||
"industry": "SaaS",
|
||||
"business_year": "Kalenderjahr",
|
||||
"has_research_focus": True,
|
||||
},
|
||||
"capital": {
|
||||
"stammkapital_eur": 25000,
|
||||
"einlage_method": "Geld",
|
||||
"einlage_quote_initial_pct": 50,
|
||||
"has_sacheinlage": False,
|
||||
},
|
||||
"gesellschafter": [
|
||||
{
|
||||
"id": "g1", "anteil_nr": 1, "name": "Benjamin Bönisch",
|
||||
"geburtsdatum": "1980-01-01", "adresse": "Test 1",
|
||||
"nennbetrag_eur": 12500, "is_geschaeftsfuehrer": True,
|
||||
"internal_role": "CEO", "rolle": "founder",
|
||||
"has_academic_background": False,
|
||||
},
|
||||
{
|
||||
"id": "g2", "anteil_nr": 2, "name": "Sharang Parnerkar",
|
||||
"geburtsdatum": "1985-05-15", "adresse": "Test 2",
|
||||
"nennbetrag_eur": 12500, "is_geschaeftsfuehrer": True,
|
||||
"internal_role": "CTO", "rolle": "founder",
|
||||
"has_academic_background": False,
|
||||
},
|
||||
],
|
||||
"notar": {
|
||||
"notary_name": "Dr. Notar",
|
||||
"notary_place": "Stuttgart",
|
||||
"notarial_date": "2026-06-01",
|
||||
},
|
||||
"sha": {
|
||||
"has_sha": True,
|
||||
"vesting_months": 48,
|
||||
"cliff_months": 12,
|
||||
"drag_along_threshold_pct": 75,
|
||||
"tag_along_threshold_pct": 20,
|
||||
"reserved_matters_majority_pct": 75,
|
||||
"has_beirat": False,
|
||||
"has_texas_shootout": False,
|
||||
"has_ceo_designation": False,
|
||||
},
|
||||
}
|
||||
|
||||
def test_basics_in_context(self):
|
||||
ctx = base_context(self._basic_state())
|
||||
assert ctx["COMPANY_NAME"] == "Test GmbH"
|
||||
assert ctx["COMPANY_LEGAL_FORM"] == "GmbH"
|
||||
assert ctx["COMPANY_SEAT"] == "Stuttgart"
|
||||
assert ctx["STAMMKAPITAL_EUR"] == "25.000"
|
||||
|
||||
def test_num_gf_2_man(self):
|
||||
ctx = base_context(self._basic_state())
|
||||
assert ctx["NUM_GF"] == 2
|
||||
assert ctx["NUM_GF_TEXT"] == "zwei"
|
||||
assert ctx["IS_MULTI_GF"] is True
|
||||
assert ctx["NUM_GF_IS_2"] is True
|
||||
assert ctx["NUM_GF_GT_2"] is False
|
||||
|
||||
def test_parties_list_format(self):
|
||||
ctx = base_context(self._basic_state())
|
||||
plist = ctx["PARTIES_LIST"]
|
||||
assert "Benjamin Bönisch" in plist
|
||||
assert "Sharang Parnerkar" in plist
|
||||
assert "a)" in plist
|
||||
assert "b)" in plist
|
||||
|
||||
def test_flags_default(self):
|
||||
ctx = base_context(self._basic_state())
|
||||
assert ctx["HAS_SHA"] is True
|
||||
assert ctx["HAS_RESEARCH_FOCUS"] is True
|
||||
assert ctx["HAS_ACADEMIC_FOUNDER"] is False
|
||||
assert ctx["HAS_BEIRAT"] is False
|
||||
|
||||
def test_academic_flag_detection(self):
|
||||
state = self._basic_state()
|
||||
state["gesellschafter"][0]["has_academic_background"] = True
|
||||
ctx = base_context(state)
|
||||
assert ctx["HAS_ACADEMIC_FOUNDER"] is True
|
||||
|
||||
|
||||
class TestMarkdownToDocx:
|
||||
def test_basic_conversion(self):
|
||||
from compliance.services.founding_wizard.markdown_to_docx import markdown_to_docx_bytes
|
||||
md = "# Titel\n\nDas ist ein Absatz.\n\n## Unterthema\n\n- Punkt 1\n- Punkt 2"
|
||||
result = markdown_to_docx_bytes(md)
|
||||
assert isinstance(result, bytes)
|
||||
# DOCX is a ZIP file starting with PK\x03\x04
|
||||
assert result[:4] == b"PK\x03\x04"
|
||||
assert len(result) > 1000 # reasonable size
|
||||
|
||||
def test_table_conversion(self):
|
||||
from compliance.services.founding_wizard.markdown_to_docx import markdown_to_docx_bytes
|
||||
md = "| A | B |\n| --- | --- |\n| 1 | 2 |\n| 3 | 4 |"
|
||||
result = markdown_to_docx_bytes(md)
|
||||
assert result[:4] == b"PK\x03\x04"
|
||||
|
||||
def test_bold_italic(self):
|
||||
from compliance.services.founding_wizard.markdown_to_docx import markdown_to_docx_bytes
|
||||
md = "Das ist **fett** und _kursiv_ und `code`."
|
||||
result = markdown_to_docx_bytes(md)
|
||||
assert result[:4] == b"PK\x03\x04"
|
||||
|
||||
|
||||
class TestEndToEndRendering:
|
||||
"""Test mit echtem Template-aehnlichen Markdown + 2-Mann GmbH Daten."""
|
||||
|
||||
def test_minimum_satzung_render(self):
|
||||
template = """# Satzung der {{COMPANY_NAME}}
|
||||
|
||||
## § 1 Firma
|
||||
(1) Die Gesellschaft führt die Firma {{COMPANY_NAME}}.
|
||||
(2) Sitz ist {{COMPANY_SEAT}}.
|
||||
|
||||
{{#IF HAS_SHA}}
|
||||
## § 5 SHA-Verweis
|
||||
Es gilt das SHA.
|
||||
{{/IF}}
|
||||
|
||||
{{#IF NOT HAS_SHA}}
|
||||
## § 5 Hinweis
|
||||
Kein SHA vereinbart.
|
||||
{{/IF}}
|
||||
"""
|
||||
ctx = base_context(TestWizardToContext()._basic_state())
|
||||
result = render_template(template, ctx)
|
||||
|
||||
assert "Test GmbH" in result
|
||||
assert "Stuttgart" in result
|
||||
assert "§ 5 SHA-Verweis" in result
|
||||
assert "Kein SHA vereinbart" not in result
|
||||
Reference in New Issue
Block a user