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), totalBudget: z.coerce.number().nonnegative(), notes: z.string().optional(), }) export const annualBudgetApproval: ResolutionTemplate = { key: 'annual_budget_approval', titleDe: 'Beschluss zur Genehmigung des Jahresbudgets', titleEn: 'Annual budget approval', descriptionDe: 'Gesellschafterbeschluss zur Feststellung und Genehmigung des Jahresbudgets der Gesellschaft.', schema, fields: [ { key: 'fiscalYear', labelDe: 'Geschäftsjahr', labelEn: 'Fiscal year', type: 'text', required: true }, { key: 'totalBudget', labelDe: 'Gesamtbudget (EUR)', labelEn: 'Total budget (EUR)', type: 'currency', required: true }, { key: 'notes', labelDe: 'Anmerkungen', labelEn: 'Notes', type: 'textarea' }, ], render: ({ values, company, members, createdBy, date }) => { const v = schema.parse(values) const body = `

Gesellschafterbeschluss

${escapeHtml(company.name)}${company.registryNo ? `, ${escapeHtml(company.registryNo)}` : ''}
${company.address ? escapeHtml(company.address) + '
' : ''} Beschlussdatum: ${escapeHtml(formatDateDe(date))}

Gegenstand des Beschlusses

Genehmigung des Jahresbudgets für das Geschäftsjahr ${escapeHtml(v.fiscalYear)}.

Beschluss

Die Gesellschafter beschließen einstimmig, das Jahresbudget in Höhe von ${escapeHtml(formatEur(v.totalBudget))} für das Geschäftsjahr ${escapeHtml(v.fiscalYear)} festzustellen und zu genehmigen.

${v.notes ? `

${escapeHtml(v.notes)}

` : ''}

Gesellschafter

${renderMembers(members)}
${escapeHtml(createdBy.displayName)}
${escapeHtml(createdBy.email)}
Ort, Datum
` return baseDocument('Beschluss – Jahresbudget', body) }, }