Skip to content

[Bug] 정산 완료된 구매 내역 수정 시 정산 금액 불일치 문제 #23

Description

@coderabbitai

개요

정산이 완료된 구매 내역(isSettled=true)도 updatePurchase()를 통해 수정이 가능하여, Settlement에 저장된 totalAmount / amountPerMember와 실제 구매 내역이 영구히 불일치하게 됩니다.

관련 파일

  • src/main/java/com/partition/domain/supply/service/SupplyPurchaseService.java

재현 시나리오

  1. 구매 내역을 등록한다.
  2. 해당 구매 내역을 포함하여 정산을 완료한다 (isSettled=true).
  3. PATCH /api/supplies/purchases/{purchaseId}로 금액을 변경한다.
  4. SettlementtotalAmount·amountPerMember는 변경 전 금액을 그대로 유지하여 불일치 발생.

제안 해결 방안

방안 A – 정산된 구매 수정 금지 (권장)

SupplyPurchase purchase = supplyPurchaseRepository.findById(purchaseId)
        .orElseThrow(() -> new CustomException(SupplyErrorCode.SUPPLY_3009));
if (Boolean.TRUE.equals(purchase.getIsSettled())) {
    throw new CustomException(SupplyErrorCode.SUPPLY_5003); // 적절한 에러코드 사용
}

방안 B – 정산 재계산

정산된 구매 수정 허용 시, 연관 SettlementtotalAmount·amountPerMember를 함께 재계산하여 저장.

참고

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions