import mongoose, { Schema, models, model } from "mongoose";

// Manuell erfasste Einnahmen, die NICHT über einen Auftrag laufen (z. B.
// Workshop, Print-Verkauf, sonstiger Zufluss) — ergänzt die aus bezahlten
// Aufträgen abgeleiteten Einnahmen in Statistiken/Steuer/EÜR-Export, statt
// sie zu ersetzen. Kein VAT-Feld wie bei Expense: Als Kleinunternehmer:in
// wird auf Einnahmen ohnehin keine USt. ausgewiesen (siehe admin/tax).
export interface IncomeDoc {
  _id: string;
  date: Date;
  description: string;
  amount: number;
  createdBy: mongoose.Types.ObjectId;
  createdAt: Date;
}

const incomeSchema = new Schema<IncomeDoc>(
  {
    date: { type: Date, required: true },
    description: { type: String, required: true, trim: true, maxlength: 300 },
    amount: { type: Number, required: true, min: 0 },
    createdBy: { type: Schema.Types.ObjectId, ref: "Client", required: true },
  },
  { timestamps: true }
);

export const Income = (models.Income as mongoose.Model<IncomeDoc>) || model<IncomeDoc>("Income", incomeSchema);
