@@ -0,0 +1,64 @@
|
||||
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm';
|
||||
|
||||
@Entity('invoices')
|
||||
export class Invoice {
|
||||
@PrimaryGeneratedColumn('uuid')
|
||||
id: string;
|
||||
|
||||
@Column({ unique: true })
|
||||
invoiceNumber: string;
|
||||
|
||||
@Column({ type: 'date' })
|
||||
date: string;
|
||||
|
||||
@Column({ type: 'date' })
|
||||
dueDate: string;
|
||||
|
||||
@Column({ default: 'draft' })
|
||||
status: 'draft' | 'sent' | 'paid' | 'overdue';
|
||||
|
||||
// Kunde
|
||||
@Column()
|
||||
customerName: string;
|
||||
|
||||
@Column({ nullable: true })
|
||||
customerEmail: string;
|
||||
|
||||
@Column({ nullable: true })
|
||||
customerAddress: string;
|
||||
|
||||
@Column({ nullable: true })
|
||||
customerCity: string;
|
||||
|
||||
@Column({ nullable: true })
|
||||
customerZip: string;
|
||||
|
||||
// Positionen als JSON
|
||||
@Column({ type: 'json' })
|
||||
items: {
|
||||
id: string;
|
||||
description: string;
|
||||
quantity: number;
|
||||
unit: string;
|
||||
unitPrice: number;
|
||||
}[];
|
||||
|
||||
@Column({ type: 'decimal', precision: 5, scale: 2, default: 19 })
|
||||
taxRate: number;
|
||||
|
||||
@Column({ type: 'text', nullable: true })
|
||||
notes: string;
|
||||
|
||||
// Berechnete Werte für einfache Queries
|
||||
@Column({ type: 'decimal', precision: 10, scale: 2, default: 0 })
|
||||
totalNet: number;
|
||||
|
||||
@Column({ type: 'decimal', precision: 10, scale: 2, default: 0 })
|
||||
totalGross: number;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
|
||||
@UpdateDateColumn()
|
||||
updatedAt: Date;
|
||||
}
|
||||
Reference in New Issue
Block a user