import { z } from 'zod' import type { ResolutionTemplate } from './index.js' import { baseDocument, escapeHtml, formatDateDe, formatEur, renderMembers, } from './shared.js' const schema = z.object({ fiscalYear: z.string().min(4), distributableProfit: z.coerce.number().nonnegative(), distributedAmount: z.coerce.number().nonnegative(), retainedAmount: z.coerce.number().nonnegative(), paymentDate: z.string().min(8), notes: z.string().optional(), }) export const profitDistribution: ResolutionTemplate = { key: 'profit_distribution', titleDe: 'Beschluss zur Gewinnverwendung', titleEn: 'Profit distribution', descriptionDe: 'Gesellschafterbeschluss über die Verwendung des Jahresergebnisses gemäß § 29 GmbHG.', schema, fields: [ { key: 'fiscalYear', labelDe: 'Geschäftsjahr', labelEn: 'Fiscal year', type: 'text', required: true }, { key: 'distributableProfit', labelDe: 'Bilanzgewinn (EUR)', labelEn: 'Distributable profit (EUR)', type: 'currency', required: true }, { key: 'distributedAmount', labelDe: 'Auszuschüttender Betrag (EUR)', labelEn: 'Amount to distribute (EUR)', type: 'currency', required: true }, { key: 'retainedAmount', labelDe: 'Gewinnvortrag (EUR)', labelEn: 'Retained amount (EUR)', type: 'currency', required: true }, { key: 'paymentDate', labelDe: 'Auszahlungsdatum', labelEn: 'Payment date', type: 'date', required: true }, { key: 'notes', labelDe: 'Anmerkungen', labelEn: 'Notes', type: 'textarea' }, ], render: ({ values, company, members, createdBy, date }) => { const v = schema.parse(values) const body = `
Verwendung des Jahresergebnisses für das Geschäftsjahr ${escapeHtml(v.fiscalYear)} gemäß § 29 GmbHG.
Die Ausschüttung erfolgt im Verhältnis der Geschäftsanteile.
${v.notes ? `${escapeHtml(v.notes)}
` : ''}