동일상품 여러개 주문 시 배송료 누적 계산(1)

This commit is contained in:
김현욱
2025-12-30 16:51:25 +09:00
parent 54c0266824
commit 65d920874f
2 changed files with 23 additions and 3 deletions

View File

@@ -2158,6 +2158,9 @@ public class BOPurchsService {
for (Map.Entry<BigInteger, List<DataMap>> dlvyGroupEtry : goodsByDlvyGroupMap.entrySet()) { for (Map.Entry<BigInteger, List<DataMap>> dlvyGroupEtry : goodsByDlvyGroupMap.entrySet()) {
int dlvyGroupInnb = dlvyGroupEtry.getKey().intValue(); int dlvyGroupInnb = dlvyGroupEtry.getKey().intValue();
List<DataMap> goodsByDlvyGroupList = dlvyGroupEtry.getValue(); List<DataMap> goodsByDlvyGroupList = dlvyGroupEtry.getValue();
log.debug("goodsByDlvyGroupList : {}", goodsByDlvyGroupList);
// BigDecimal goodsQy = (BigDecimal) goodsByDlvyGroupList.get("qy");
// log.debug("goodsByDlvyGroupList qy : {}", qy);
finalDlvyGroupInnb = dlvyGroupInnb; finalDlvyGroupInnb = dlvyGroupInnb;
@@ -2182,6 +2185,8 @@ public class BOPurchsService {
for (DataMap goodsMap : goodsByDlvyGroupList) { for (DataMap goodsMap : goodsByDlvyGroupList) {
BigDecimal qy = (BigDecimal) goodsMap.get("qy"); // 수량
// 금액 조건 // 금액 조건
if ("Y".equals(amtCndUseAt)) { if ("Y".equals(amtCndUseAt)) {
BigDecimal amtCndAditAmt = (BigDecimal) shippingGrouping.get("amtCndAditAmt"); // 금액조건 추가금액 BigDecimal amtCndAditAmt = (BigDecimal) shippingGrouping.get("amtCndAditAmt"); // 금액조건 추가금액
@@ -2189,16 +2194,21 @@ public class BOPurchsService {
if (slepric.compareTo(amtCndAditAmt) > 0) { if (slepric.compareTo(amtCndAditAmt) > 0) {
dlvyAmt = new BigDecimal(0); dlvyAmt = new BigDecimal(0);
} else {
//배송비 합(같은상품 수량당 배송비 책정)
dlvyAmt = dlvyAmt.multiply(qy);
} }
} }
// 수량 조건 // 수량 조건
if ("Y".equals(cntCndUseAt)) { if ("Y".equals(cntCndUseAt)) {
BigDecimal cntCndAditAmt = (BigDecimal) shippingGrouping.get("cntCndAditAmt"); // 금액조건 추가금액 BigDecimal cntCndAditAmt = (BigDecimal) shippingGrouping.get("cntCndAditAmt"); // 금액조건 추가금액
BigDecimal qy = (BigDecimal) goodsMap.get("qy"); // 수량
if (qy.compareTo(cntCndAditAmt) > 0) { if (qy.compareTo(cntCndAditAmt) > 0) {
dlvyAmt = new BigDecimal(0); dlvyAmt = new BigDecimal(0);
} else {
//배송비 합(같은상품 수량당 배송비 책정)
dlvyAmt = dlvyAmt.multiply(qy);
} }
} }
} }
@@ -2258,7 +2268,16 @@ public class BOPurchsService {
} else if ("03".equals(dlvyGroupDvCd)) { // 유료배송 } else if ("03".equals(dlvyGroupDvCd)) { // 유료배송
paidDlvyAmt = paidDlvyAmt.add(dlvyAmt); // 유료배송비 합 BigDecimal goodsQy = new BigDecimal(0);
// 유료배송비 합(같은상품 수량당 배송비 책정)
for (DataMap goodsMap : goodsByDlvyGroupList) {
goodsQy = (BigDecimal) goodsMap.get("qy");
dlvyAmt = dlvyAmt.multiply(goodsQy);
paidDlvyAmt = paidDlvyAmt.add(dlvyAmt);
}
// 유료배송비 합(같은상품 묶음 처리)
//paidDlvyAmt = paidDlvyAmt.add(dlvyAmt);
if (!StringUtils.isEmpty(dlvyAreaAditAt) && "Y".equals(dlvyAreaAditAt)) { if (!StringUtils.isEmpty(dlvyAreaAditAt) && "Y".equals(dlvyAreaAditAt)) {
if (!StringUtils.isEmpty(defaultAdressAt) && "Y".equals(defaultAdressAt)) { if (!StringUtils.isEmpty(defaultAdressAt) && "Y".equals(defaultAdressAt)) {
@@ -2281,7 +2300,7 @@ public class BOPurchsService {
log.debug("@@@ 유료배송비 합 : {}", paidDlvyAmt); log.debug("@@@ 유료배송비 합 : {}", paidDlvyAmt);
dlvyAmtByDlvyGroupList.add(dlvyGroupMap); // 배송그룹별 배송비 목록 dlvyAmtByDlvyGroupList.add(dlvyGroupMap); // 배송그룹별 배송비 목록
} } // for
// TODO : 도서산간 추가배송비 정채 :: 무료일 경우 무조건 무료인지 추가배송비는 발생 시킬건지 정의 필요 ( 2024-10-01 ) // TODO : 도서산간 추가배송비 정채 :: 무료일 경우 무조건 무료인지 추가배송비는 발생 시킬건지 정의 필요 ( 2024-10-01 )
addFreeDlvyAmt = addFreeDlvyAmt.compareTo(addBundleDlvyAmtY) > 0 ? addFreeDlvyAmt : addBundleDlvyAmtY; // 무료배송 추가 배송비와 조건부 무료배송 묶음 O 의 추가 배송비 중 큰 배송비 addFreeDlvyAmt = addFreeDlvyAmt.compareTo(addBundleDlvyAmtY) > 0 ? addFreeDlvyAmt : addBundleDlvyAmtY; // 무료배송 추가 배송비와 조건부 무료배송 묶음 O 의 추가 배송비 중 큰 배송비

View File

@@ -3041,6 +3041,7 @@ public class BOOrdrService{
LinkedHashMap<String, Object> enuriMap = (LinkedHashMap) param.get("enuri"); // 애누리 ( 장바구니 쿠폰, 마일리지, 애누리 ) LinkedHashMap<String, Object> enuriMap = (LinkedHashMap) param.get("enuri"); // 애누리 ( 장바구니 쿠폰, 마일리지, 애누리 )
List<LinkedHashMap> goodsList = (List<LinkedHashMap>) param.get("goodsList"); List<LinkedHashMap> goodsList = (List<LinkedHashMap>) param.get("goodsList");
log.debug("goodsList : {}", goodsList);
if (!CollectionUtils.isEmpty(goodsList)) { if (!CollectionUtils.isEmpty(goodsList)) {
for (LinkedHashMap goods : goodsList) { for (LinkedHashMap goods : goodsList) {