refactor: add lombok to provisioning module
This commit is contained in:
committed by
Arnold Gálovics
parent
2c4f6e4c61
commit
aa12de397d
+25
-69
@@ -19,77 +19,33 @@
|
||||
package org.apache.fineract.accounting.provisioning.data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import lombok.Getter;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Getter
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class LoanProductProvisioningEntryData {
|
||||
|
||||
private final Long historyId;
|
||||
private final Long officeId;
|
||||
private final String officeName;
|
||||
private final String currencyCode;
|
||||
private final Long productId;
|
||||
private final String productName;
|
||||
private final Long categoryId;
|
||||
private final String categoryName;
|
||||
private final Long overdueInDays;
|
||||
private final BigDecimal percentage;
|
||||
private final BigDecimal balance;
|
||||
private final BigDecimal amountreserved;
|
||||
private final Long liablityAccount;
|
||||
private final String liabilityAccountCode;
|
||||
private final String liabilityAccountName;
|
||||
private final Long expenseAccount;
|
||||
private final String expenseAccountCode;
|
||||
private final String expenseAccountName;
|
||||
private final Long criteriaId;
|
||||
private Long historyId;
|
||||
private Long officeId;
|
||||
private String officeName;
|
||||
private String currencyCode;
|
||||
private Long productId;
|
||||
private String productName;
|
||||
private Long categoryId;
|
||||
private String categoryName;
|
||||
private Long overdueInDays;
|
||||
private BigDecimal percentage;
|
||||
private BigDecimal balance;
|
||||
private BigDecimal amountreserved;
|
||||
private Long liablityAccount;
|
||||
private String liabilityAccountCode;
|
||||
private String liabilityAccountName;
|
||||
private Long expenseAccount;
|
||||
private String expenseAccountCode;
|
||||
private String expenseAccountName;
|
||||
private Long criteriaId;
|
||||
|
||||
public LoanProductProvisioningEntryData(final Long historyId, final Long officeId, final String currencyCode, final Long productId,
|
||||
final Long categoryId, final Long overdueInDays, final BigDecimal percentage, final BigDecimal balance, Long liablityAccount,
|
||||
Long expenseAccount, final Long criteriaId) {
|
||||
this.historyId = historyId;
|
||||
this.officeId = officeId;
|
||||
this.currencyCode = currencyCode;
|
||||
this.productId = productId;
|
||||
this.categoryId = categoryId;
|
||||
this.overdueInDays = overdueInDays;
|
||||
this.percentage = percentage;
|
||||
this.balance = balance;
|
||||
this.liablityAccount = liablityAccount;
|
||||
this.expenseAccount = expenseAccount;
|
||||
this.amountreserved = null;
|
||||
this.officeName = null;
|
||||
this.productName = null;
|
||||
this.categoryName = null;
|
||||
this.liabilityAccountCode = null;
|
||||
this.liabilityAccountName = null;
|
||||
this.expenseAccountCode = null;
|
||||
this.expenseAccountName = null;
|
||||
this.criteriaId = criteriaId;
|
||||
}
|
||||
|
||||
public LoanProductProvisioningEntryData(final Long historyId, final Long officeId, final String officeName, final String currencyCode,
|
||||
final Long productId, final String productName, final Long categoryId, final String categoryName, final Long overdueInDays,
|
||||
final BigDecimal amountreserved, Long liablityAccount, String liabilityAccountglCode, String liabilityAccountName,
|
||||
Long expenseAccount, String expenseAccountglCode, String expenseAccountName, final Long criteriaId) {
|
||||
this.historyId = historyId;
|
||||
this.officeId = officeId;
|
||||
this.currencyCode = currencyCode;
|
||||
this.productId = productId;
|
||||
this.categoryId = categoryId;
|
||||
this.categoryName = categoryName;
|
||||
this.overdueInDays = overdueInDays;
|
||||
this.percentage = null;
|
||||
this.balance = null;
|
||||
this.liablityAccount = liablityAccount;
|
||||
this.expenseAccount = expenseAccount;
|
||||
this.officeName = officeName;
|
||||
this.productName = productName;
|
||||
this.amountreserved = amountreserved;
|
||||
this.liabilityAccountCode = liabilityAccountglCode;
|
||||
this.liabilityAccountName = liabilityAccountName;
|
||||
this.expenseAccountCode = expenseAccountglCode;
|
||||
this.expenseAccountName = expenseAccountName;
|
||||
this.criteriaId = criteriaId;
|
||||
}
|
||||
}
|
||||
|
||||
+6
-28
@@ -21,7 +21,13 @@ package org.apache.fineract.accounting.provisioning.data;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
@SuppressWarnings("unused")
|
||||
public class ProvisioningEntryData {
|
||||
|
||||
@@ -43,32 +49,4 @@ public class ProvisioningEntryData {
|
||||
|
||||
private Collection<LoanProductProvisioningEntryData> provisioningEntries;
|
||||
|
||||
public ProvisioningEntryData(final Long id, final Collection<LoanProductProvisioningEntryData> provisioningEntries) {
|
||||
this.provisioningEntries = provisioningEntries;
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public ProvisioningEntryData(Long id, Boolean journalEntry, Long createdById, String createdUser, LocalDate createdDate,
|
||||
Long modifiedById, String modifiedUser, BigDecimal totalReservedAmount) {
|
||||
this.id = id;
|
||||
this.journalEntry = journalEntry;
|
||||
this.createdById = createdById;
|
||||
this.createdUser = createdUser;
|
||||
this.modifiedById = modifiedById;
|
||||
this.modifiedUser = modifiedUser;
|
||||
this.createdDate = createdDate;
|
||||
this.reservedAmount = totalReservedAmount;
|
||||
}
|
||||
|
||||
public void setEntries(Collection<LoanProductProvisioningEntryData> provisioningEntries) {
|
||||
this.provisioningEntries = provisioningEntries;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public LocalDate getCreatedDate() {
|
||||
return this.createdDate;
|
||||
}
|
||||
}
|
||||
|
||||
+8
-44
@@ -25,12 +25,20 @@ import javax.persistence.Entity;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.Table;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.apache.fineract.accounting.glaccount.domain.GLAccount;
|
||||
import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
|
||||
import org.apache.fineract.organisation.office.domain.Office;
|
||||
import org.apache.fineract.organisation.provisioning.domain.ProvisioningCategory;
|
||||
import org.apache.fineract.portfolio.loanproduct.domain.LoanProduct;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
@Entity
|
||||
@Table(name = "m_loanproduct_provisioning_entry")
|
||||
public class LoanProductProvisioningEntry extends AbstractPersistableCustom {
|
||||
@@ -71,50 +79,6 @@ public class LoanProductProvisioningEntry extends AbstractPersistableCustom {
|
||||
@JoinColumn(name = "expense_account", nullable = false)
|
||||
private GLAccount expenseAccount;
|
||||
|
||||
protected LoanProductProvisioningEntry() {}
|
||||
|
||||
public LoanProductProvisioningEntry(final LoanProduct loanProduct, final Office office, final String currencyCode,
|
||||
final ProvisioningCategory provisioningCategory, final Long overdueInDays, final BigDecimal reservedAmount,
|
||||
final GLAccount liabilityAccount, final GLAccount expenseAccount, Long criteriaId) {
|
||||
this.loanProduct = loanProduct;
|
||||
this.office = office;
|
||||
this.currencyCode = currencyCode;
|
||||
this.provisioningCategory = provisioningCategory;
|
||||
this.overdueInDays = overdueInDays;
|
||||
this.reservedAmount = reservedAmount;
|
||||
this.liabilityAccount = liabilityAccount;
|
||||
this.expenseAccount = expenseAccount;
|
||||
this.criteriaId = criteriaId;
|
||||
}
|
||||
|
||||
public void setProvisioningEntry(ProvisioningEntry provisioningEntry) {
|
||||
this.entry = provisioningEntry;
|
||||
}
|
||||
|
||||
public BigDecimal getReservedAmount() {
|
||||
return this.reservedAmount;
|
||||
}
|
||||
|
||||
public void addReservedAmount(BigDecimal value) {
|
||||
this.reservedAmount = this.reservedAmount.add(value);
|
||||
}
|
||||
|
||||
public Office getOffice() {
|
||||
return this.office;
|
||||
}
|
||||
|
||||
public GLAccount getLiabilityAccount() {
|
||||
return this.liabilityAccount;
|
||||
}
|
||||
|
||||
public String getCurrencyCode() {
|
||||
return this.currencyCode;
|
||||
}
|
||||
|
||||
public GLAccount getExpenseAccount() {
|
||||
return this.expenseAccount;
|
||||
}
|
||||
|
||||
// TODO Note that this domain class does equals() & hashCode() on getId()
|
||||
// for @JoinColumn attributes, which not all other classes do...
|
||||
|
||||
|
||||
+8
-21
@@ -30,9 +30,17 @@ import javax.persistence.JoinColumn;
|
||||
import javax.persistence.OneToMany;
|
||||
import javax.persistence.OneToOne;
|
||||
import javax.persistence.Table;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
|
||||
import org.apache.fineract.useradministration.domain.AppUser;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
@Entity
|
||||
@Table(name = "m_provisioning_history")
|
||||
public class ProvisioningEntry extends AbstractPersistableCustom {
|
||||
@@ -57,19 +65,6 @@ public class ProvisioningEntry extends AbstractPersistableCustom {
|
||||
@Column(name = "lastmodified_date")
|
||||
private LocalDate lastModifiedDate;
|
||||
|
||||
protected ProvisioningEntry() {
|
||||
|
||||
}
|
||||
|
||||
public ProvisioningEntry(AppUser createdBy, LocalDate createdDate, AppUser lastModifiedBy, LocalDate lastModifiedDate,
|
||||
Set<LoanProductProvisioningEntry> provisioningEntries) {
|
||||
this.provisioningEntries = provisioningEntries;
|
||||
this.createdBy = createdBy;
|
||||
this.createdDate = createdDate;
|
||||
this.lastModifiedBy = lastModifiedBy;
|
||||
this.lastModifiedDate = lastModifiedDate;
|
||||
}
|
||||
|
||||
public void setProvisioningEntries(Collection<LoanProductProvisioningEntry> provisioningEntries) {
|
||||
if (this.provisioningEntries == null) {
|
||||
this.provisioningEntries = new HashSet<>();
|
||||
@@ -81,12 +76,4 @@ public class ProvisioningEntry extends AbstractPersistableCustom {
|
||||
return this.provisioningEntries;
|
||||
}
|
||||
|
||||
public void setJournalEntryCreated(Boolean bool) {
|
||||
this.isJournalEntryCreated = bool;
|
||||
}
|
||||
|
||||
public LocalDate getCreatedDate() {
|
||||
return this.createdDate;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+21
-12
@@ -95,8 +95,10 @@ public class ProvisioningEntriesReadPlatformServiceImpl implements ProvisioningE
|
||||
Long criteriaId = rs.getLong("criteriaid");
|
||||
Long historyId = null;
|
||||
|
||||
return new LoanProductProvisioningEntryData(historyId, officeId, currentcyCode, productId, categoryId, overdueDays, percentage,
|
||||
outstandingBalance, liabilityAccountCode, expenseAccountCode, criteriaId);
|
||||
return new LoanProductProvisioningEntryData().setHistoryId(historyId).setOfficeId(officeId).setCurrencyCode(currentcyCode)
|
||||
.setProductId(productId).setCategoryId(categoryId).setOverdueInDays(overdueDays).setPercentage(percentage)
|
||||
.setBalance(outstandingBalance).setLiablityAccount(liabilityAccountCode).setExpenseAccount(expenseAccountCode)
|
||||
.setCriteriaId(criteriaId);
|
||||
}
|
||||
|
||||
public String schema() {
|
||||
@@ -131,8 +133,9 @@ public class ProvisioningEntriesReadPlatformServiceImpl implements ProvisioningE
|
||||
String modifieUser = rs.getString("modifieduser");
|
||||
BigDecimal totalReservedAmount = null;
|
||||
LocalDate createdLocalDate = createdDate != null ? createdDate.toLocalDate() : null;
|
||||
return new ProvisioningEntryData(id, journalEntry, createdById, createdUser, createdLocalDate, modifiedById, modifieUser,
|
||||
totalReservedAmount);
|
||||
return new ProvisioningEntryData().setId(id).setJournalEntry(journalEntry).setCreatedById(createdById)
|
||||
.setCreatedUser(createdUser).setCreatedDate(createdLocalDate).setModifiedById(modifiedById).setModifiedUser(modifieUser)
|
||||
.setReservedAmount(totalReservedAmount);
|
||||
}
|
||||
|
||||
public String getSchema() {
|
||||
@@ -173,9 +176,13 @@ public class ProvisioningEntriesReadPlatformServiceImpl implements ProvisioningE
|
||||
Long criteriaId = rs.getLong("criteriaid");
|
||||
String liabilityAccountName = rs.getString("liabilityname");
|
||||
String expenseAccountName = rs.getString("expensename");
|
||||
return new LoanProductProvisioningEntryData(historyId, officeId, officeName, currentcyCode, productId, productName, categoryId,
|
||||
categoryName, overdueDays, amountreserved, liabilityAccountCode, liabilityAccountglCode, liabilityAccountName,
|
||||
expenseAccountCode, expenseAccountglCode, expenseAccountName, criteriaId);
|
||||
return new LoanProductProvisioningEntryData().setHistoryId(historyId).setOfficeId(officeId).setOfficeName(officeName)
|
||||
.setCurrencyCode(currentcyCode).setProductId(productId).setProductName(productName).setCategoryId(categoryId)
|
||||
.setCategoryName(categoryName).setOverdueInDays(overdueDays).setAmountreserved(amountreserved)
|
||||
.setLiablityAccount(liabilityAccountCode).setLiabilityAccountCode(liabilityAccountglCode)
|
||||
.setLiabilityAccountName(liabilityAccountName).setExpenseAccount(expenseAccountCode)
|
||||
.setExpenseAccountCode(expenseAccountglCode).setExpenseAccountName(expenseAccountName).setCriteriaId(criteriaId);
|
||||
|
||||
}
|
||||
|
||||
public String getSchema() {
|
||||
@@ -205,8 +212,9 @@ public class ProvisioningEntriesReadPlatformServiceImpl implements ProvisioningE
|
||||
String modifieUser = rs.getString("modifieduser");
|
||||
BigDecimal totalReservedAmount = rs.getBigDecimal("totalreserved");
|
||||
LocalDate createdLocalDate = createdDate != null ? createdDate.toLocalDate() : null;
|
||||
return new ProvisioningEntryData(id, journalEntry, createdById, createdUser, createdLocalDate, modifiedById, modifieUser,
|
||||
totalReservedAmount);
|
||||
return new ProvisioningEntryData().setId(id).setJournalEntry(journalEntry).setCreatedById(createdById)
|
||||
.setCreatedUser(createdUser).setCreatedDate(createdLocalDate).setModifiedById(modifiedById).setModifiedUser(modifieUser)
|
||||
.setReservedAmount(totalReservedAmount);
|
||||
}
|
||||
|
||||
public String getSchema() {
|
||||
@@ -260,7 +268,7 @@ public class ProvisioningEntriesReadPlatformServiceImpl implements ProvisioningE
|
||||
ProvisioningEntryDataMapper mapper1 = new ProvisioningEntryDataMapper();
|
||||
final String sql1 = "select " + mapper1.getSchema() + " where entry.id = ?";
|
||||
data = this.jdbcTemplate.queryForObject(sql1, mapper1, entryId); // NOSONAR
|
||||
data.setEntries(entries);
|
||||
data.setProvisioningEntries(entries);
|
||||
}
|
||||
return data;
|
||||
}
|
||||
@@ -293,8 +301,9 @@ public class ProvisioningEntriesReadPlatformServiceImpl implements ProvisioningE
|
||||
String modifiedName = null;
|
||||
BigDecimal totalReservedAmount = null;
|
||||
LocalDate createdLocalDate = createdDate != null ? createdDate.toLocalDate() : null;
|
||||
return new ProvisioningEntryData(id, Boolean.TRUE, createdBy, createdName, createdLocalDate, modifiedBy, modifiedName,
|
||||
totalReservedAmount);
|
||||
return new ProvisioningEntryData().setId(id).setJournalEntry(Boolean.TRUE).setCreatedById(createdBy).setCreatedUser(createdName)
|
||||
.setCreatedDate(createdLocalDate).setModifiedById(modifiedBy).setModifiedUser(modifiedName)
|
||||
.setReservedAmount(totalReservedAmount);
|
||||
}
|
||||
|
||||
public String schema() {
|
||||
|
||||
+9
-8
@@ -95,9 +95,9 @@ public class ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl implements
|
||||
existingEntryData.getId(), PortfolioProductType.PROVISIONING.getValue());
|
||||
}
|
||||
if (requestedEntry.getLoanProductProvisioningEntries() == null || requestedEntry.getLoanProductProvisioningEntries().size() == 0) {
|
||||
requestedEntry.setJournalEntryCreated(Boolean.FALSE);
|
||||
requestedEntry.setIsJournalEntryCreated(Boolean.FALSE);
|
||||
} else {
|
||||
requestedEntry.setJournalEntryCreated(Boolean.TRUE);
|
||||
requestedEntry.setIsJournalEntryCreated(Boolean.TRUE);
|
||||
}
|
||||
|
||||
this.provisioningEntryRepository.saveAndFlush(requestedEntry);
|
||||
@@ -150,7 +150,7 @@ public class ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl implements
|
||||
throw new ProvisioningEntryAlreadyCreatedException(existingEntry.getId(), existingEntry.getCreatedDate());
|
||||
}
|
||||
AppUser currentUser = this.platformSecurityContext.authenticatedUser();
|
||||
ProvisioningEntry requestedEntry = new ProvisioningEntry(currentUser, date, null, null, null);
|
||||
ProvisioningEntry requestedEntry = new ProvisioningEntry().setCreatedBy(currentUser).setCreatedDate(date);
|
||||
Collection<LoanProductProvisioningEntry> entries = generateLoanProvisioningEntry(requestedEntry, date);
|
||||
requestedEntry.setProvisioningEntries(entries);
|
||||
if (addJournalEntries) {
|
||||
@@ -189,15 +189,16 @@ public class ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl implements
|
||||
Money money = Money.of(currency, data.getBalance());
|
||||
Money amountToReserve = money.percentageOf(data.getPercentage(), MoneyHelper.getRoundingMode());
|
||||
Long criteraId = data.getCriteriaId();
|
||||
LoanProductProvisioningEntry entry = new LoanProductProvisioningEntry(loanProduct, office, data.getCurrencyCode(),
|
||||
provisioningCategory, data.getOverdueInDays(), amountToReserve.getAmount(), liabilityAccount, expenseAccount,
|
||||
criteraId);
|
||||
entry.setProvisioningEntry(parent);
|
||||
LoanProductProvisioningEntry entry = new LoanProductProvisioningEntry().setLoanProduct(loanProduct).setOffice(office)
|
||||
.setCurrencyCode(data.getCurrencyCode()).setProvisioningCategory(provisioningCategory)
|
||||
.setOverdueInDays(data.getOverdueInDays()).setReservedAmount(amountToReserve.getAmount())
|
||||
.setLiabilityAccount(liabilityAccount).setExpenseAccount(expenseAccount).setCriteriaId(criteraId);
|
||||
entry.setEntry(parent);
|
||||
if (!provisioningEntries.containsKey(entry.partialHashCode())) {
|
||||
provisioningEntries.put(entry.partialHashCode(), entry);
|
||||
} else {
|
||||
LoanProductProvisioningEntry entry1 = provisioningEntries.get(entry.partialHashCode());
|
||||
entry1.addReservedAmount(entry.getReservedAmount());
|
||||
entry1.setReservedAmount(entry1.getReservedAmount().add(entry.getReservedAmount()));
|
||||
}
|
||||
}
|
||||
return provisioningEntries.values();
|
||||
|
||||
Reference in New Issue
Block a user