37 lines
932 B
JavaScript
37 lines
932 B
JavaScript
const BaseFinancialRepository = require('./BaseFinancialRepository');
|
|
|
|
/**
|
|
* Budget Repository
|
|
*
|
|
* Manages budget planning and tracking (PREMIUM FEATURE).
|
|
*/
|
|
class BudgetRepository extends BaseFinancialRepository {
|
|
constructor() {
|
|
super('pg_fn_budgets');
|
|
}
|
|
|
|
async findBySiteId(siteId) {
|
|
return await this.findAll({ site_id: siteId }, { orderBy: 'fiscal_year' });
|
|
}
|
|
|
|
async findByFiscalYear(siteId, fiscalYear) {
|
|
return await this.findOne({ site_id: siteId, fiscal_year: fiscalYear });
|
|
}
|
|
|
|
async createBudget(budgetData) {
|
|
if (!budgetData.site_id || !budgetData.name || !budgetData.fiscal_year) {
|
|
throw new Error('Missing required fields for budget');
|
|
}
|
|
|
|
return await this.create({
|
|
...budgetData,
|
|
status: budgetData.status || 'draft',
|
|
created_at: new Date().toISOString(),
|
|
updated_at: new Date().toISOString()
|
|
});
|
|
}
|
|
}
|
|
|
|
module.exports = BudgetRepository;
|
|
|
|
|