Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,12 @@
import javax.persistence.Version;
import javax.validation.constraints.NotNull;
import lombok.Getter;
import org.apache.fineract.infrastructure.core.domain.AbstractAuditableCustom;
import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom;

@Getter
@Entity
@Table(name = "m_business_date", uniqueConstraints = { @UniqueConstraint(name = "uq_business_date_type", columnNames = { "type" }) })
public class BusinessDate extends AbstractAuditableCustom {
public class BusinessDate extends AbstractAuditableWithUTCDateTimeCustom {

@Enumerated(EnumType.STRING)
@Column(name = "type")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
Expand Down Expand Up @@ -65,8 +66,8 @@ public final class CalendarData implements Serializable {
private final String humanReadable;
private final LocalDate recentEligibleMeetingDate;

private final LocalDate createdDate;
private final LocalDate lastUpdatedDate;
private final OffsetDateTime createdDate;
private final OffsetDateTime lastUpdatedDate;
private final Long createdByUserId;
private final String createdByUsername;
private final Long lastUpdatedByUserId;
Expand Down Expand Up @@ -204,9 +205,10 @@ public static CalendarData instance(final Long id, final Long calendarInstanceId
final Integer duration, final EnumOptionData type, final boolean repeating, final String recurrence,
final EnumOptionData frequency, final Integer interval, final EnumOptionData repeatsOnDay,
final EnumOptionData repeatsOnNthDayOfMonth, final EnumOptionData remindBy, final Integer firstReminder,
final Integer secondReminder, final String humanReadable, final LocalDate createdDate, final LocalDate lastUpdatedDate,
final Long createdByUserId, final String createdByUsername, final Long lastUpdatedByUserId, final String lastUpdatedByUsername,
final LocalTime meetingTime, final Integer repeatsOnDayOfMonth) {
final Integer secondReminder, final String humanReadable, final OffsetDateTime createdDate,
final OffsetDateTime lastUpdatedDate, final Long createdByUserId, final String createdByUsername,
final Long lastUpdatedByUserId, final String lastUpdatedByUsername, final LocalTime meetingTime,
final Integer repeatsOnDayOfMonth) {

final Collection<LocalDate> recurringDates = null;
final Collection<LocalDate> nextTenRecurringDates = null;
Expand Down Expand Up @@ -287,8 +289,8 @@ public static CalendarData sensibleDefaultsForNewCalendarCreation() {
final List<EnumOptionData> repeatsOnDayOptions = null;
final List<EnumOptionData> frequencyNthDayTypeOptions = null;

final LocalDate createdDate = null;
final LocalDate lastUpdatedDate = null;
final OffsetDateTime createdDate = null;
final OffsetDateTime lastUpdatedDate = null;
final Long createdByUserId = null;
final String createdByUsername = null;
final Long lastUpdatedByUserId = null;
Expand Down Expand Up @@ -326,11 +328,12 @@ private CalendarData(final Long id, final Long calendarInstanceId, final Long en
final EnumOptionData frequency, final Integer interval, final EnumOptionData repeatsOnDay,
final EnumOptionData repeatsOnNthDayOfMonth, final EnumOptionData remindBy, final Integer firstReminder,
final Integer secondReminder, final Collection<LocalDate> recurringDates, final Collection<LocalDate> nextTenRecurringDates,
final String humanReadable, final LocalDate recentEligibleMeetingDate, final LocalDate createdDate,
final LocalDate lastUpdatedDate, final Long createdByUserId, final String createdByUsername, final Long lastUpdatedByUserId,
final String lastUpdatedByUsername, final Integer repeatsOnDayOfMonth, final List<EnumOptionData> entityTypeOptions,
final List<EnumOptionData> calendarTypeOptions, final List<EnumOptionData> remindByOptions,
final List<EnumOptionData> repeatsOptions, final List<EnumOptionData> repeatsOnDayOptions, final LocalTime meetingTime,
final String humanReadable, final LocalDate recentEligibleMeetingDate, final OffsetDateTime createdDate,
final OffsetDateTime lastUpdatedDate, final Long createdByUserId, final String createdByUsername,
final Long lastUpdatedByUserId, final String lastUpdatedByUsername, final Integer repeatsOnDayOfMonth,
final List<EnumOptionData> entityTypeOptions, final List<EnumOptionData> calendarTypeOptions,
final List<EnumOptionData> remindByOptions, final List<EnumOptionData> repeatsOptions,
final List<EnumOptionData> repeatsOnDayOptions, final LocalTime meetingTime,
final List<EnumOptionData> frequencyNthDayTypeOptions) {
this.id = id;
this.calendarInstanceId = calendarInstanceId;
Expand Down Expand Up @@ -404,7 +407,7 @@ public LocalDate getEndDate() {
return this.endDate;
}

public LocalDate getCreatedDate() {
public OffsetDateTime getCreatedDate() {
return this.createdDate;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
import org.apache.fineract.infrastructure.core.api.JsonCommand;
import org.apache.fineract.infrastructure.core.data.ApiParameterError;
import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder;
import org.apache.fineract.infrastructure.core.domain.AbstractAuditableCustom;
import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom;
import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException;
import org.apache.fineract.infrastructure.core.service.DateUtils;
import org.apache.fineract.portfolio.calendar.CalendarConstants.CalendarSupportedParameters;
Expand All @@ -50,7 +50,7 @@

@Entity
@Table(name = "m_calendar")
public class Calendar extends AbstractAuditableCustom {
public class Calendar extends AbstractAuditableWithUTCDateTimeCustom {

@Column(name = "title", length = 50, nullable = false)
private String title;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
Expand Down Expand Up @@ -56,9 +58,10 @@ public String schema() {
+ " c.duration as duration, c.calendar_type_enum as typeId, c.repeating as repeating, "
+ " c.recurrence as recurrence, c.remind_by_enum as remindById, c.first_reminder as firstReminder, c.second_reminder as secondReminder, "
+ " c.created_date as createdDate, c.lastmodified_date as updatedDate, creatingUser.id as creatingUserId, creatingUser.username as creatingUserName, "
+ " c.created_on_utc as createdDateUtc, c.last_modified_on_utc as updatedDateUtc, "
+ " updatingUser.id as updatingUserId, updatingUser.username as updatingUserName,c.meeting_time as meetingTime "
+ " from m_calendar c join m_calendar_instance ci on ci.calendar_id=c.id, m_appuser as creatingUser, m_appuser as updatingUser"
+ " where c.createdby_id=creatingUser.id and c.lastmodifiedby_id=updatingUser.id ";
+ " where c.created_by=creatingUser.id and c.last_modified_by=updatingUser.id ";
}

@Override
Expand Down Expand Up @@ -96,17 +99,23 @@ public CalendarData mapRow(final ResultSet rs, @SuppressWarnings("unused") final
humanReadable = CalendarUtils.getRRuleReadable(startDate, recurrence);
}
Integer monthOnDay = CalendarUtils.getMonthOnDay(recurrence);
final LocalDate createdDate = JdbcSupport.getLocalDate(rs, "createdDate");
final LocalDate lastUpdatedDate = JdbcSupport.getLocalDate(rs, "updatedDate");
final LocalDateTime createdDateLocal = JdbcSupport.getLocalDateTime(rs, "createdDate");
final OffsetDateTime createdDateUtc = JdbcSupport.getOffsetDateTime(rs, "createdDateUtc");
final LocalDateTime lastModifiedDateLocal = JdbcSupport.getLocalDateTime(rs, "updatedDate");
final OffsetDateTime lastModifiedDateUtc = JdbcSupport.getOffsetDateTime(rs, "updatedDateUtc");
final Long createdByUserId = rs.getLong("creatingUserId");
final String createdByUserName = rs.getString("creatingUserName");
final Long lastUpdatedByUserId = rs.getLong("updatingUserId");
final String lastUpdatedByUserName = rs.getString("updatingUserName");
final LocalTime meetingTime = JdbcSupport.getLocalTime(rs, "meetingTime");

final OffsetDateTime createdDate = createdDateUtc != null ? createdDateUtc
: OffsetDateTime.of(createdDateLocal, DateUtils.getDateTimeZoneOfTenant().getRules().getOffset(createdDateLocal));
final OffsetDateTime lastModifiedDate = lastModifiedDateUtc != null ? lastModifiedDateUtc
: OffsetDateTime.of(lastModifiedDateLocal,
DateUtils.getDateTimeZoneOfTenant().getRules().getOffset(lastModifiedDateLocal));
return CalendarData.instance(id, calendarInstanceId, entityId, entityType, title, description, location, startDate, endDate,
duration, type, repeating, recurrence, frequency, interval, repeatsOnDay, repeatsOnNthDayOfMonth, remindBy,
firstReminder, secondReminder, humanReadable, createdDate, lastUpdatedDate, createdByUserId, createdByUserName,
firstReminder, secondReminder, humanReadable, createdDate, lastModifiedDate, createdByUserId, createdByUserName,
lastUpdatedByUserId, lastUpdatedByUserName, meetingTime, monthOnDay);
}
}
Expand Down Expand Up @@ -487,8 +496,8 @@ public CalendarData mapRow(final ResultSet rs, @SuppressWarnings("unused") final
humanReadable = CalendarUtils.getRRuleReadable(startDate, recurrence);
}

final LocalDate createdDate = null;
final LocalDate lastUpdatedDate = null;
final OffsetDateTime createdDate = null;
final OffsetDateTime lastUpdatedDate = null;
final Long createdByUserId = null;
final String createdByUserName = null;
final Long lastUpdatedByUserId = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,13 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.fineract.infrastructure.codes.domain.CodeValue;
import org.apache.fineract.infrastructure.core.api.JsonCommand;
import org.apache.fineract.infrastructure.core.domain.AbstractAuditableCustom;
import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom;

@Entity
@Table(name = "m_client_identifier", uniqueConstraints = {
@UniqueConstraint(columnNames = { "document_type_id", "document_key" }, name = "unique_identifier_key"),
@UniqueConstraint(columnNames = { "client_id", "document_key", "active" }, name = "unique_active_client_identifier") })
public class ClientIdentifier extends AbstractAuditableCustom {
public class ClientIdentifier extends AbstractAuditableWithUTCDateTimeCustom {

@ManyToOne
@JoinColumn(name = "client_id", nullable = false)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,14 @@
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.apache.fineract.infrastructure.core.domain.AbstractAuditableCustom;
import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom;
import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency;
import org.apache.fineract.organisation.monetary.domain.Money;
import org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecks;

@Entity
@Table(name = "m_loan_repayment_schedule")
public final class LoanRepaymentScheduleInstallment extends AbstractAuditableCustom
public class LoanRepaymentScheduleInstallment extends AbstractAuditableWithUTCDateTimeCustom
implements Comparable<LoanRepaymentScheduleInstallment> {

@ManyToOne(optional = false)
Expand Down Expand Up @@ -135,7 +135,7 @@ public final class LoanRepaymentScheduleInstallment extends AbstractAuditableCus
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY, mappedBy = "installment")
private Set<LoanInstallmentCharge> installmentCharges = new HashSet<>();

LoanRepaymentScheduleInstallment() {
public LoanRepaymentScheduleInstallment() {
this.installmentNumber = null;
this.fromDate = null;
this.dueDate = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,13 @@
*/
package org.apache.fineract.portfolio.loanaccount.loanschedule.domain;

import static org.apache.fineract.infrastructure.core.domain.AuditableFieldsConstants.CREATED_DATE_DB_FIELD;
import static org.apache.fineract.infrastructure.core.domain.AuditableFieldsConstants.LAST_MODIFIED_DATE_DB_FIELD;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
Expand Down Expand Up @@ -65,7 +69,7 @@ public class LoanRepaymentScheduleHistory extends AbstractPersistableCustom {
private BigDecimal penaltyCharges;

@Column(name = "created_date")
private LocalDateTime createdOnDate;
private LocalDateTime oldCreatedOnDate;

@Column(name = "createdby_id")
private Long createdByUser;
Expand All @@ -74,7 +78,13 @@ public class LoanRepaymentScheduleHistory extends AbstractPersistableCustom {
private Long lastModifiedByUser;

@Column(name = "lastmodified_date")
private LocalDateTime lastModifiedOnDate;
private LocalDateTime oldLastModifiedOnDate;

@Column(name = CREATED_DATE_DB_FIELD)
private OffsetDateTime createdDate;

@Column(name = LAST_MODIFIED_DATE_DB_FIELD)
private OffsetDateTime lastModifiedDate;

@Column(name = "version")
private Integer version;
Expand All @@ -90,8 +100,9 @@ protected LoanRepaymentScheduleHistory() {}
private LoanRepaymentScheduleHistory(final Loan loan, final LoanRescheduleRequest loanRescheduleRequest,
final Integer installmentNumber, final LocalDate fromDate, final LocalDate dueDate, final BigDecimal principal,
final BigDecimal interestCharged, final BigDecimal feeChargesCharged, final BigDecimal penaltyCharges,
final LocalDateTime createdOnDate, final Long createdByUser, final Long lastModifiedByUser,
final LocalDateTime lastModifiedOnDate, final Integer version) {
final LocalDateTime oldCreatedOnDate, final Long createdByUser, final Long lastModifiedByUser,
final LocalDateTime oldLastModifiedOnDate, final Integer version, final OffsetDateTime createdDate,
final OffsetDateTime lastModifiedDate) {

this.loan = loan;
this.loanRescheduleRequest = loanRescheduleRequest;
Expand All @@ -102,11 +113,13 @@ private LoanRepaymentScheduleHistory(final Loan loan, final LoanRescheduleReques
this.interestCharged = interestCharged;
this.feeChargesCharged = feeChargesCharged;
this.penaltyCharges = penaltyCharges;
this.createdOnDate = createdOnDate;
this.oldCreatedOnDate = oldCreatedOnDate;
this.createdByUser = createdByUser;
this.lastModifiedByUser = lastModifiedByUser;
this.lastModifiedOnDate = lastModifiedOnDate;
this.oldLastModifiedOnDate = oldLastModifiedOnDate;
this.version = version;
this.createdDate = createdDate;
this.lastModifiedDate = lastModifiedDate;
}

/**
Expand All @@ -115,12 +128,13 @@ private LoanRepaymentScheduleHistory(final Loan loan, final LoanRescheduleReques
public static LoanRepaymentScheduleHistory instance(final Loan loan, final LoanRescheduleRequest loanRescheduleRequest,
final Integer installmentNumber, final LocalDate fromDate, final LocalDate dueDate, final BigDecimal principal,
final BigDecimal interestCharged, final BigDecimal feeChargesCharged, final BigDecimal penaltyCharges,
final LocalDateTime createdOnDate, final Long createdByUser, final Long lastModifiedByUser,
final LocalDateTime lastModifiedOnDate, final Integer version) {
final LocalDateTime oldCreatedOnDate, final Long createdByUser, final Long lastModifiedByUser,
final LocalDateTime oldLastModifiedOnDate, final Integer version, final OffsetDateTime createdDate,
final OffsetDateTime lastModifiedDate) {

return new LoanRepaymentScheduleHistory(loan, loanRescheduleRequest, installmentNumber, fromDate, dueDate, principal,
interestCharged, feeChargesCharged, penaltyCharges, createdOnDate, createdByUser, lastModifiedByUser, lastModifiedOnDate,
version);
interestCharged, feeChargesCharged, penaltyCharges, oldCreatedOnDate, createdByUser, lastModifiedByUser,
oldLastModifiedOnDate, version, createdDate, lastModifiedDate);

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
package org.apache.fineract.portfolio.loanaccount.loanschedule.service;

import java.util.Collection;
import java.util.Map;
import org.apache.fineract.portfolio.loanaccount.data.DisbursementData;
import org.apache.fineract.portfolio.loanaccount.data.RepaymentScheduleRelatedLoanData;
import org.apache.fineract.portfolio.loanaccount.loanschedule.data.LoanScheduleData;
Expand All @@ -29,4 +30,6 @@ public interface LoanScheduleHistoryReadPlatformService {

LoanScheduleData retrieveRepaymentArchiveSchedule(Long loanId, RepaymentScheduleRelatedLoanData repaymentScheduleRelatedLoanData,
Collection<DisbursementData> disbursementData);

Map<String, Object> fetchOldAuditDates(Long id);
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.fineract.infrastructure.core.domain.JdbcSupport;
import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
Expand Down Expand Up @@ -86,6 +87,12 @@ public LoanScheduleData retrieveRepaymentArchiveSchedule(final Long loanId,
}
}

@Override
public Map<String, Object> fetchOldAuditDates(Long id) {
final String sql = "select lrs.created_date, lrs.lastmodified_date from m_loan_repayment_schedule lrs where lrs.id = ?";
return this.jdbcTemplate.queryForMap(sql, id);
}

private static final class LoanScheduleArchiveResultSetExtractor implements ResultSetExtractor<LoanScheduleData> {

private final CurrencyData currency;
Expand Down
Loading