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

54 lines
1.6 KiB
JavaScript

const BaseFinancialRepository = require('./BaseFinancialRepository');
/**
* Special Assessment Repository
*
* Manages special assessments - one-time charges divided among units equally.
*/
class SpecialAssessmentRepository extends BaseFinancialRepository {
constructor() {
super('pg_fn_special_assessments');
}
/**
* Create special assessment and auto-generate invoices
* @param {Object} assessmentData - Assessment data
* @returns {Promise<Object>} Created assessment with invoices
*/
async createAssessment(assessmentData) {
try {
const { invoiceRepository } = require('./index');
// Note: unitRepository is not in financials plugin - we'll need to get units differently
// Create the assessment record
const assessment = await this.create(assessmentData);
// Calculate per-unit amount
const amountPerUnit = parseFloat(assessmentData.total_amount) / assessmentData.unit_count;
return {
...assessment,
amount_per_unit: amountPerUnit,
units_affected: assessmentData.unit_count
};
} catch (error) {
throw new Error(`Failed to create special assessment: ${error.message}`);
}
}
/**
* Find assessments by site
* @param {string} siteId - Site ID
* @returns {Promise<Array>} Array of assessments
*/
async findBySiteId(siteId) {
try {
return await this.findAll({ site_id: siteId }, { orderBy: 'created_at', orderDirection: 'desc' });
} catch (error) {
throw error;
}
}
}
module.exports = SpecialAssessmentRepository;