86 lines
2.1 KiB
JavaScript
86 lines
2.1 KiB
JavaScript
const BaseFinancialRepository = require('./BaseFinancialRepository');
|
|
|
|
/**
|
|
* Bank Account Repository
|
|
*
|
|
* Manages bank account information for reconciliation purposes.
|
|
*/
|
|
class BankAccountRepository extends BaseFinancialRepository {
|
|
constructor() {
|
|
super('pg_fn_bank_accounts');
|
|
}
|
|
|
|
/**
|
|
* Find bank accounts by site
|
|
* @param {string} siteId - Site ID
|
|
* @returns {Promise<Array>} Array of bank accounts
|
|
*/
|
|
async findBySiteId(siteId) {
|
|
try {
|
|
return await this.findAll({ site_id: siteId, is_active: true });
|
|
} catch (error) {
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Find bank account by ID with ledger account details
|
|
* @param {string} accountId - Bank account ID
|
|
* @returns {Promise<Object>} Bank account with ledger account details
|
|
*/
|
|
async findByIdWithLedger(accountId) {
|
|
try {
|
|
const account = await this.findById(accountId);
|
|
if (!account) {
|
|
return null;
|
|
}
|
|
|
|
// Get ledger account details if linked
|
|
if (account.ledger_account_id) {
|
|
const { chartOfAccountsRepository } = require('./index');
|
|
const ledgerAccount = await chartOfAccountsRepository.findById(account.ledger_account_id);
|
|
return {
|
|
...account,
|
|
ledger_account: ledgerAccount
|
|
};
|
|
}
|
|
|
|
return account;
|
|
} catch (error) {
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Create bank account
|
|
* @param {Object} accountData - Bank account data
|
|
* @returns {Promise<Object>} Created bank account
|
|
*/
|
|
async createBankAccount(accountData) {
|
|
try {
|
|
return await this.create(accountData);
|
|
} catch (error) {
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Update bank account balance
|
|
* @param {string} accountId - Bank account ID
|
|
* @param {number} balance - New balance
|
|
* @returns {Promise<Object>} Updated account
|
|
*/
|
|
async updateBalance(accountId, balance) {
|
|
try {
|
|
return await this.updateById(accountId, {
|
|
current_balance: balance,
|
|
updated_at: new Date()
|
|
});
|
|
} catch (error) {
|
|
throw error;
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = BankAccountRepository;
|
|
|