Subcategory transferInCategory = Subcategory.findBySubcategory("category.transfer.in", user);
AccountTransaction send = AccountTransaction.createInstance(origin, payee, transferCategory, calculateAmount(amount), operationDate, memo);
AccountTransaction receive = AccountTransaction.createInstance(target, payee, transferInCategory, calculateTargetAmount(amount, rate), operationDate, memo);
receive.setOriginOfTheFunds(origin.getName());
send.persist();
receive.persist();
if ((chargeAmount != null) && (!BigDecimal.ZERO.equals(chargeAmount))) {
Subcategory chargeCategory = Subcategory.findBySubcategory("category.bankcharges", user);
AccountTransaction charge = AccountTransaction.createInstance(origin, Payee.findByFinancialInstitution(origin.getHeldAt()), chargeCategory, calculateAmount(chargeAmount), DateUtils.nextDate(operationDate), memo);
charge.persist();
}