const mongoose = require('mongoose'); const invoiceSchema = new mongoose.Schema( { invoiceNumber: { type: String, // e.g., "INV-2026-001" unique: true, required: true, }, bookingId: { type: mongoose.Schema.Types.ObjectId, ref: 'Booking', required: true, }, photographerId: { type: mongoose.Schema.Types.ObjectId, ref: 'Photographer', required: true, }, customerId: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true, }, issueDate: { type: Date, default: Date.now, }, dueDate: { type: Date, }, items: [ { description: String, quantity: Number, unitPrice: Number, total: Number, }, ], subtotal: { type: Number, required: true, }, tax: { type: Number, default: 0, }, taxRate: { type: Number, default: 18, // 18% GST in India }, discount: { type: Number, default: 0, }, totalAmount: { type: Number, required: true, }, paymentStatus: { type: String, enum: ['pending', 'paid', 'overdue'], default: 'pending', }, paidAt: { type: Date, default: null, }, notes: { type: String, default: '', }, pdfUrl: { type: String, default: null, // URL to generated PDF }, }, { timestamps: true } ); module.exports = mongoose.model('Invoice', invoiceSchema);