private void postJournalEntries( final Loan loanAccount, final List<Long> existingTransactionIds, final List<Long> existingReversedTransactionIds) { final MonetaryCurrency currency = loanAccount.getCurrency(); final ApplicationCurrency applicationCurrency = this.applicationCurrencyRepositoryWrapper.findOneWithNotFoundDetection(currency); final Map<String, Object> accountingBridgeData = loanAccount.deriveAccountingBridgeData( applicationCurrency.toData(), existingTransactionIds, existingReversedTransactionIds); this.journalEntryWritePlatformService.createJournalEntriesForLoan(accountingBridgeData); }
@Transactional @Override public CommandProcessingResult officeTransaction(final JsonCommand command) { context.authenticatedUser(); this.moneyTransferCommandFromApiJsonDeserializer.validateOfficeTransfer(command.json()); Long officeId = null; Office fromOffice = null; final Long fromOfficeId = command.longValueOfParameterNamed("fromOfficeId"); if (fromOfficeId != null) { fromOffice = this.officeRepository.findOne(fromOfficeId); officeId = fromOffice.getId(); } Office toOffice = null; final Long toOfficeId = command.longValueOfParameterNamed("toOfficeId"); if (toOfficeId != null) { toOffice = this.officeRepository.findOne(toOfficeId); officeId = toOffice.getId(); } if (fromOffice == null && toOffice == null) { throw new OfficeNotFoundException(toOfficeId); } final String currencyCode = command.stringValueOfParameterNamed("currencyCode"); final ApplicationCurrency appCurrency = this.applicationCurrencyRepository.findOneByCode(currencyCode); if (appCurrency == null) { throw new CurrencyNotFoundException(currencyCode); } final MonetaryCurrency currency = new MonetaryCurrency(appCurrency.getCode(), appCurrency.getDecimalPlaces()); final Money amount = Money.of(currency, command.bigDecimalValueOfParameterNamed("transactionAmount")); final OfficeTransaction entity = OfficeTransaction.fromJson(fromOffice, toOffice, amount, command); this.officeTransactionRepository.save(entity); return new CommandProcessingResultBuilder() // .withCommandId(command.commandId()) // .withEntityId(entity.getId()) // .withOfficeId(officeId) // .build(); }