public void addSubLedgersInternal()

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