44c1d4351f
- Prisma-Modelle HandelswareDatevConfig und HandelswareKonto mit Zeilenschutz (Migration 20261002130000) - XLSX lesen (B1 Kopf, A/B ab Zeile 2, Zahl oder deutscher Text), Konten zuordnen, TXT erzeugen - neue Konten werden nur beim Export in einer mandantengebundenen Transaktion gespeichert (409 bei geaenderter Liste) - Konten-CSV Import (alles ersetzen) und Export mit Schutz vor Formeleinschleusung - Einstellungen nur fuer Administratoren, statische Routen vor accounts/:id Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
26 lines
1.1 KiB
TypeScript
26 lines
1.1 KiB
TypeScript
import { Transform } from 'class-transformer';
|
|
import { IsInt, IsString, Length, Matches, Max, Min } from 'class-validator';
|
|
|
|
const trim = ({ value }: { value: unknown }) => (typeof value === 'string' ? value.trim() : value);
|
|
|
|
/** Anlegen und Aendern eines Kontos der Kontenliste (quick-261002-fm5). */
|
|
export class HandelswareAccountDto {
|
|
@Transform(trim)
|
|
@IsString({ message: 'Der Name muss angegeben werden' })
|
|
@Length(1, 120, { message: 'Der Name muss 1 bis 120 Zeichen lang sein' })
|
|
@Matches(/^[^\t\r\n]*$/, {
|
|
message: 'Der Name darf keine Tabulatoren oder Zeilenumbrüche enthalten',
|
|
})
|
|
name!: string;
|
|
|
|
@IsInt({ message: 'Das Gegenkonto muss eine ganze Zahl sein' })
|
|
@Min(1, { message: 'Das Gegenkonto muss mindestens 1 sein' })
|
|
@Max(999999999, { message: 'Das Gegenkonto darf höchstens 999999999 sein' })
|
|
gegenkonto!: number;
|
|
|
|
@IsInt({ message: 'Das Erlöskonto muss eine ganze Zahl sein' })
|
|
@Min(1, { message: 'Das Erlöskonto muss mindestens 1 sein' })
|
|
@Max(999999999, { message: 'Das Erlöskonto darf höchstens 999999999 sein' })
|
|
erloeskonto!: number;
|
|
}
|