in service/src/main/java/org/apache/fineract/cn/accounting/service/internal/command/handler/LedgerCommandHandler.java [135:172]
public void addSubLedgersInternal(final List<Ledger> subLedgers, final LedgerEntity parentLedgerEntity) {
if (subLedgers != null) {
this.logger.debug(
"Add {} sub ledger(s) to parent ledger {}.", subLedgers.size(),
parentLedgerEntity.getIdentifier()
);
for (final Ledger subLedger : subLedgers) {
if (!subLedger.getType().equals(parentLedgerEntity.getType())) {
this.logger.error(
"Type of sub ledger {} must match parent ledger {}. Expected {}, was {}",
subLedger.getIdentifier(), parentLedgerEntity.getIdentifier(),
parentLedgerEntity.getType(), subLedger.getType()
);
throw ServiceException.badRequest(
"Type of sub ledger {0} must match parent ledger {1}. Expected {2}, was {3}",
subLedger.getIdentifier(), parentLedgerEntity.getIdentifier(),
parentLedgerEntity.getType(), subLedger.getType()
);
}
final LedgerEntity subLedgerEntity = new LedgerEntity();
subLedgerEntity.setIdentifier(subLedger.getIdentifier());
subLedgerEntity.setType(subLedger.getType());
subLedgerEntity.setName(subLedger.getName());
subLedgerEntity.setDescription(subLedger.getDescription());
subLedgerEntity.setCreatedBy(UserContextHolder.checkedGetUser());
subLedgerEntity.setCreatedOn(LocalDateTime.now(Clock.systemUTC()));
subLedgerEntity.setShowAccountsInChart(subLedger.getShowAccountsInChart());
subLedgerEntity.setParentLedger(parentLedgerEntity);
final LedgerEntity savedSubLedger = this.ledgerRepository.save(subLedgerEntity);
this.addSubLedgersInternal(subLedger.getSubLedgers(), savedSubLedger);
this.logger.debug("Sub ledger {} created.", subLedger.getIdentifier());
}
}
}