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), balanceSheetTotal: z.coerce.number().nonnegative(), netResult: z.coerce.number(), approvalDate: z.string().min(8), notes: z.string().optional(), }) export const annualFinancialsApproval: ResolutionTemplate = { key: 'annual_financials_approval', titleDe: 'Feststellung des Jahresabschlusses', titleEn: 'Annual financial statements approval', descriptionDe: 'Gesellschafterbeschluss zur Feststellung des Jahresabschlusses gemäß § 46 Nr. 1 GmbHG.', schema, fields: [ { key: 'fiscalYear', labelDe: 'Geschäftsjahr', labelEn: 'Fiscal year', type: 'text', required: true }, { key: 'balanceSheetTotal', labelDe: 'Bilanzsumme (EUR)', labelEn: 'Balance sheet total (EUR)', type: 'currency', required: true }, { key: 'netResult', labelDe: 'Jahresergebnis (EUR)', labelEn: 'Net result (EUR)', type: 'currency', required: true }, { key: 'approvalDate', labelDe: 'Datum der Feststellung', labelEn: 'Approval 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 profitOrLoss = v.netResult >= 0 ? 'Jahresüberschuss' : 'Jahresfehlbetrag' const body = `
Feststellung des Jahresabschlusses für das Geschäftsjahr ${escapeHtml(v.fiscalYear)} gemäß § 46 Nr. 1 GmbHG.
Die Gesellschafter stellen den Jahresabschluss zum ${escapeHtml(formatDateDe(v.approvalDate))} fest mit einer Bilanzsumme von ${escapeHtml(formatEur(v.balanceSheetTotal))} und einem ${escapeHtml(profitOrLoss)} von ${escapeHtml(formatEur(v.netResult))}.
${v.notes ? `${escapeHtml(v.notes)}
` : ''}