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} 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 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;