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

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions