Skip to content

Commit

Permalink
[Feat/#81] Card 말일 로직 처리
Browse files Browse the repository at this point in the history
  • Loading branch information
ahnsugyeong committed Feb 5, 2024
1 parent a4c41a5 commit c469f4c
Showing 1 changed file with 30 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.YearMonth;
import java.time.temporal.TemporalAdjusters;
import java.util.ArrayList;
import java.util.List;
import lombok.RequiredArgsConstructor;
Expand Down Expand Up @@ -68,18 +69,32 @@ private BigDecimal calculateUpcomingCardPayment(Card card, LocalDate today) {
}

private LocalDate findNextPaymentDate(Card card, LocalDate referenceDate) {
LocalDate nextPaymentDate = referenceDate.withDayOfMonth(card.getPaymentDate());
if (nextPaymentDate.isBefore(referenceDate) || nextPaymentDate.isEqual(referenceDate)) {
nextPaymentDate = nextPaymentDate.plusMonths(1);
LocalDate nextPaymentDate;
if (card.getPaymentDate() == -1) {
nextPaymentDate = referenceDate.plusMonths(1).with(TemporalAdjusters.lastDayOfMonth());
} else {
nextPaymentDate = referenceDate.withDayOfMonth(card.getPaymentDate());
if (nextPaymentDate.isBefore(referenceDate) || nextPaymentDate.isEqual(referenceDate)) {
nextPaymentDate = nextPaymentDate.plusMonths(1);
}
}
return nextPaymentDate;
}


private LocalDate findUsageStartDate(Card card, LocalDate nextPaymentDate) {
LocalDate usageStartDate = nextPaymentDate.minusMonths(1).withDayOfMonth(card.getStartDate());
LocalDate usageStartDate;
if (card.getStartDate() == -1) {
usageStartDate = nextPaymentDate.minusMonths(1).with(TemporalAdjusters.lastDayOfMonth());
} else {
usageStartDate = nextPaymentDate.minusMonths(1).withDayOfMonth(card.getStartDate());
}

if (card.getEndDate() >= card.getPaymentDate()) {
boolean isEndDateAfterOrEqualPaymentDate =
card.getEndDate() >= card.getPaymentDate() || card.getEndDate() == -1;
boolean isPaymentDateLastDayOfMonth = card.getPaymentDate() == -1;

if (isEndDateAfterOrEqualPaymentDate || isPaymentDateLastDayOfMonth) {
usageStartDate = usageStartDate.minusMonths(1);
}

Expand All @@ -89,15 +104,22 @@ private LocalDate findUsageStartDate(Card card, LocalDate nextPaymentDate) {
private LocalDate findUsageEndDate(Card card, LocalDate nextPaymentDate) {
LocalDate usageEndDate;

if (card.getEndDate() < card.getPaymentDate()) {
usageEndDate = nextPaymentDate.withDayOfMonth(card.getEndDate());
if (card.getEndDate() == -1) {
usageEndDate = nextPaymentDate.with(TemporalAdjusters.lastDayOfMonth());
} else {
usageEndDate = nextPaymentDate.minusMonths(1).withDayOfMonth(card.getEndDate());
if (card.getPaymentDate() == -1) {
usageEndDate = nextPaymentDate.minusMonths(1).withDayOfMonth(card.getEndDate());
} else if (card.getEndDate() < card.getPaymentDate()) {
usageEndDate = nextPaymentDate.withDayOfMonth(card.getEndDate());
} else {
usageEndDate = nextPaymentDate.minusMonths(1).withDayOfMonth(card.getEndDate());
}
}

return usageEndDate;
}


@Override
public FinancialStatementDto getFinancialStatement() {
Long memberId = 1L;
Expand Down

0 comments on commit c469f4c

Please sign in to comment.