const BaseFinancialRepository = require('./BaseFinancialRepository'); /** * Expense Repository * * Manages expense tracking. */ class ExpenseRepository extends BaseFinancialRepository { constructor() { super('pg_fn_expenses'); } async findBySiteId(siteId) { return await this.findAll({ site_id: siteId }, { orderBy: 'expense_date', orderDirection: 'desc' }); } async findByStatus(siteId, status) { return await this.findAll({ site_id: siteId, payment_status: status }); } async createExpense(expenseData) { if (!expenseData.site_id || !expenseData.expense_date || !expenseData.amount) { throw new Error('Missing required fields for expense'); } return await this.create({ ...expenseData, payment_status: expenseData.payment_status || 'pending', total_amount: parseFloat(expenseData.amount) + parseFloat(expenseData.tax_amount || 0), created_at: new Date().toISOString(), updated_at: new Date().toISOString() }); } } module.exports = ExpenseRepository;