plugin-financials/repositories/ExpenseRepository.js
2025-11-03 13:51:33 +02:00

38 lines
1 KiB
JavaScript

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;