public String createProductInstance()

in service/src/main/java/org/apache/fineract/cn/deposit/service/internal/command/handler/ProductInstanceAggregate.java [81:116]


  public String createProductInstance(final CreateProductInstanceCommand createProductInstanceCommand) {
    final ProductInstance productInstance = createProductInstanceCommand.productInstance();

    final ProductInstanceEntity productInstanceEntity =
        ProductInstanceMapper.map(productInstance, this.productDefinitionRepository);

    final Optional<ProductDefinitionEntity> optionalProductDefinition =
        productDefinitionRepository.findByIdentifier(productInstance.getProductIdentifier());

    optionalProductDefinition.ifPresent(productDefinitionEntity -> {

      final List<ProductInstanceEntity> currentProductInstances =
          this.productInstanceRepository.findByCustomerIdentifier(productInstance.getCustomerIdentifier());

      final int accountSuffix = currentProductInstances.size() + 1;
      final String accountNumber = fixedAccountId ? productInstance.getCustomerIdentifier() :
          productInstance.getCustomerIdentifier() +
              "." + productDefinitionEntity.getEquityLedgerIdentifier() +
              "." + String.format("%05d", accountSuffix);

      productInstanceEntity.setAccountIdentifier(accountNumber);

      this.accountingService.createAccount(productDefinitionEntity.getEquityLedgerIdentifier(),
          productDefinitionEntity.getName(), productInstanceEntity.getCustomerIdentifier(),
          accountNumber, productInstance.getAlternativeAccountNumber(),
          productInstance.getBalance());
      this.logger.info("Account Created Successfully for the Product !!!!!!!!!!!");
    });

    productInstanceEntity.setCreatedBy(UserContextHolder.checkedGetUser());
    productInstanceEntity.setCreatedOn(LocalDateTime.now(Clock.systemUTC()));
    productInstanceEntity.setState("PENDING");

    this.productInstanceRepository.save(productInstanceEntity);
    return productInstance.getCustomerIdentifier();
  }