Merge remote-tracking branch 'origin/master'

This commit is contained in:
jazz
2026-02-26 14:11:50 +09:00
9 changed files with 332 additions and 147 deletions

View File

@@ -3821,50 +3821,6 @@ public class BOOrdrService{
return content;
}
/**
* 사용자 > 구독상품 > 구매/결제 > 구독서비스 결제 > 결제 예정금액
* @param param
* @return Map<String, Object>
*/
public Map<String, Object> selectSubsvcSetleExpectAmt(DataMap param) throws Exception {
Map<String, Object> content = new HashMap<>();
log.debug("selectSetleExpectAmt-param : {}", param);
LinkedHashMap setleExpectAmtMap = new LinkedHashMap() {{
put("goodsAmt", 0);
put("dlvyAmt", 0);
put("evtDscntAmt", 0);
put("goodsCouponDscntAmt", 0);
put("dlvyCouponDscntAmt", 0);
put("cartCouponDscntAmt", 0);
put("useMlgAmt", 0);
put("useCashMlgAmt", 0);
put("dscntAmt", 0);
put("setleAmt", 0);
put("accmlMlgAmt", 0);
}};
BigDecimal goodsAmt = new BigDecimal(0);
List<LinkedHashMap> goodsList = (List<LinkedHashMap>) param.get("goodsList");
log.debug("goodsList : {}", goodsList);
BOSubsvcVO subsvcVO = new BOSubsvcVO();
subsvcVO.setSubsvcInnb((String) param.get("subsvcInnb"));
subsvcVO.setSopmalCd((String) param.get("sopmalCd"));
DataMap subsvcDetail = subsvcService.selectBOSubsvcDetail(subsvcVO);
goodsAmt = (BigDecimal) subsvcDetail.get("subsvcCt");
// ############################################## 결제 예정 금액 적용 ##############################################
setleExpectAmtMap.put("goodsAmt", goodsAmt.intValue());
content.put("setleExpectAmt", setleExpectAmtMap);
content.put("goodsList", goodsList);
return content;
}
/**
* 사용자 > 상품 > 구매/결제 > 회원구매하기 > 구매 정보 등록
* @param param
@@ -6186,6 +6142,119 @@ public class BOOrdrService{
사용자 > 상품 > 구매/결제 > 비회원구매하기 종료
#################################### */
/* ####################################
사용자 > 구독상품 > 구매/결제 > 구독서비스 결제 시작
#################################### */
/**
* 사용자 > 구독상품 > 구매/결제 > 구독서비스 결제 > 구독서비스 결제 화면 정보 조회
* @param ordrVO
* @return Map<String, Object>
*/
public Map<String, Object> selectSubsvcPurchs(BOOrdrVO ordrVO) {
Map<String, Object> content = new HashMap<>();
//구독서비스 조회
BOSubsvcVO subsvcVO = new BOSubsvcVO();
subsvcVO.setSopmalCd(ordrVO.getSopmalCd());
subsvcVO.setSubsvcInnb(ordrVO.getSubsvcInnb());
DataMap subsvcOne = subsvcService.selectBOSubsvcDetail(subsvcVO);
BOPurchsrVO purchsrVO = new BOPurchsrVO();
purchsrVO.setSopmalCd(ordrVO.getSopmalCd());
purchsrVO.setMbrDvCd(ordrVO.getMbrDvCd());
purchsrVO.setMbrInnb(String.valueOf(ordrVO.getMbrInnb()));
purchsrVO.setMbrId(ordrVO.getMbrId());
BOCashVO cashVO = new BOCashVO();
cashVO.setSopmalCd(ordrVO.getSopmalCd());
cashVO.setMbrDvCd(ordrVO.getMbrDvCd());
cashVO.setMbrInnb(String.valueOf(ordrVO.getMbrInnb()));
//구매자조회
DataMap purchsrMap = purchsService.selectPurchsr(purchsrVO);
if (!CollectionUtils.isEmpty(purchsrMap)) {
BOMlgVO mlgVo = new BOMlgVO();
mlgVo.setMbrDvCd((String) purchsrMap.get("mbrDvCd"));
mlgVo.setMbrInnb(purchsrMap.get("mbrInnb").toString());
// 마일리지 잔액 총액
BigDecimal blceSum = mlgService.selectBOMlgBlceSum(mlgVo);
// 충전형 마일리지 잔액 총액
BigDecimal cashBlceSum = mlgService.selectBOCashBlce(cashVO);
purchsrMap.put("sopmalCd", ordrVO.getSopmalCd());
purchsrMap.put("dftDlvylc", purchsService.selectDftDlvylc(purchsrVO));
purchsrMap.put("ableMlgAmt", blceSum.intValue());
purchsrMap.put("ableCashMlgAmt", cashBlceSum.intValue());
}
DataMap paramMap = new DataMap(){{
put("sopmalCd", ordrVO.getSopmalCd());
put("setlePltfomTyCd", ordrVO.getSetlePltfomTyCd()); // PC
}};
DataMap payInfo = purchsMapper.selectPayInfo(paramMap);
DataMap shopInfo = purchsMapper.selectOrdrShopInfo(ordrVO);
content.put("purchsr", purchsrMap);
content.put("mlgAccmlNtcList", purchsMapper.selectMlgAccmlNtcList(purchsrVO));
content.put("subsvcOne", subsvcOne);
content.put("payInfo", payInfo);
content.put("shopInfo", shopInfo);
return content;
}
/**
* 사용자 > 구독상품 > 구매/결제 > 구독서비스 결제 > 결제 예정금액
* @param param
* @return Map<String, Object>
*/
public Map<String, Object> selectSubsvcSetleExpectAmt(DataMap param) throws Exception {
Map<String, Object> content = new HashMap<>();
log.debug("selectSetleExpectAmt-param : {}", param);
LinkedHashMap setleExpectAmtMap = new LinkedHashMap() {{
put("goodsAmt", 0);
put("dlvyAmt", 0);
put("evtDscntAmt", 0);
put("goodsCouponDscntAmt", 0);
put("dlvyCouponDscntAmt", 0);
put("cartCouponDscntAmt", 0);
put("useMlgAmt", 0);
put("useCashMlgAmt", 0);
put("dscntAmt", 0);
put("setleAmt", 0);
put("accmlMlgAmt", 0);
}};
BigDecimal goodsAmt = new BigDecimal(0);
BigDecimal setleAmt = new BigDecimal(0);
LinkedHashMap subsvcOne = (LinkedHashMap) param.get("subsvcOne");
log.debug("subsvcOne : {}", subsvcOne);
goodsAmt = BigDecimal.valueOf((Integer) subsvcOne.get("selpric"));
setleAmt = BigDecimal.valueOf((Integer) subsvcOne.get("selpric"));
// ############################################## 결제 예정 금액 적용 ##############################################
setleExpectAmtMap.put("goodsAmt", goodsAmt.intValue());
setleExpectAmtMap.put("setleAmt", setleAmt.intValue());
content.put("setleExpectAmt", setleExpectAmtMap);
content.put("subsvcOne", param.get("subsvcOne"));
return content;
}
/* ####################################
사용자 > 구독상품 > 구매/결제 > 구독서비스 결제 종료
#################################### */
/* ####################################
사용자 > 상품 > 구매/결제 > 개인결제 시작
#################################### */

View File

@@ -151,6 +151,9 @@ public class BOOrdrVO extends AbstractVO {
/** 장바구니 고유번호 배열 */
private String[] cartInnbs;
/** 구독서비스 고유번호 */
private String subsvcInnb;
/** 주문배송 고유번호 */
private String ordrDlvyInnb;

View File

@@ -3,7 +3,7 @@ package com.wb.domainserver.domain.sopmal.ordr.controller;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.nimbusds.jose.shaded.gson.Gson;
import com.wb.domainserver.common.msg.GconeMessageSource;
import com.wb.domainserver.common.msg.GconeMessageSource;
import com.wb.domainserver.common.mvc.tags.ui.pagination.PaginationInfo;
import com.wb.domainserver.common.prop.PaginationProperties;
import com.wb.domainserver.domain.admin.instcSle.mtng.service.BOMaMtngService;
@@ -20,12 +20,13 @@ import com.wb.domainserver.domain.gcone.goods.goods.service.BOGoodsService;
import com.wb.domainserver.domain.gcone.goods.purchs.service.BOOrderService;
import com.wb.domainserver.domain.gcone.goods.purchs.service.BOPurchsService;
import com.wb.domainserver.domain.gcone.goods.purchs.vo.*;
import com.wb.domainserver.domain.gcone.goods.subsvc.service.BOSubsvcService;
import com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO;
import com.wb.domainserver.domain.gcone.mbr.mbr.service.BOMbrService;
import com.wb.domainserver.domain.gcone.mbr.mbr.vo.BOMbrVO;
import com.wb.domainserver.domain.gcone.ordr.dlivy.service.BODlivyService;
import com.wb.domainserver.domain.gcone.ordr.npay.service.BONpayConfigService;
import com.wb.domainserver.domain.gcone.ordr.npay.vo.BONpayConfigVO;
import com.wb.domainserver.domain.gcone.ordr.ordr.service.BOOrderCommonService;
import com.wb.domainserver.domain.gcone.ordr.ordr.service.BOOrdrLogService;
import com.wb.domainserver.domain.gcone.ordr.ordr.service.BOOrdrService;
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOCrmDlvylcVO;
@@ -36,36 +37,27 @@ import com.wb.domainserver.domain.gcone.promtn.coupon.service.BOCouponService;
import com.wb.domainserver.domain.gcone.setup.dlvygrp.service.BODlvygrpService;
import com.wb.domainserver.domain.gcone.setup.nbkk.service.BONbkkService;
import com.wb.domainserver.domain.gcone.setup.site.vo.BOSiteVO;
import com.wb.domainserver.domain.sample.vo.PrevewVO;
import com.wb.domainserver.domain.sopmal.goods.vo.GoodsVO;
import com.wb.domainserver.domain.sopmal.ordr.vo.OrdrVO;
import com.wb.domainserver.domain.sopmal.ordr.vo.PayVO;
import com.wb.domainserver.domain.sopmal.ordr.vo.SpbkVO;
import com.wb.domainserver.domain.sopmal.ordr.vo.OrdrVO;
import com.wb.domainserver.exception.WnbtRestException;
import com.wb.domainserver.exception.code.PurchsValidCode;
import com.wb.domainserver.response.ApiResponse;
import com.wb.domainserver.response.WnbtResponse;
import com.wb.domainserver.response.WnbtResponseBody;
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
import com.wb.domainserver.security.authentication.AnonymousUser;
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
import com.wb.domainserver.security.authorization.annotation.Policy;
import com.wb.domainserver.util.CookieUtils;
import com.wb.domainserver.util.communicate.RESRC;
import com.wb.domainserver.util.communicate.ReplyFromResrc;
import com.wb.domainserver.util.communicate.SendToResrc;
import com.wb.domainserver.util.cookie.CookieUtil;
import com.wb.domainserver.util.dataaccess.DataMap;
import com.wb.domainserver.util.string.StringUtil;
import com.wb.domainserver.util.util.Util;
import com.wb.domainserver.response.WnbtResponse;
import com.wb.domainserver.response.WnbtResponseBody;
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
import com.wb.domainserver.security.authentication.AnonymousUser;
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
import com.wb.domainserver.security.authorization.annotation.Policy;
import com.wb.domainserver.util.communicate.SendToResrc;
import com.wb.domainserver.util.cookie.CookieUtil;
import com.wb.domainserver.util.dataaccess.DataMap;
import com.wb.domainserver.util.string.StringUtil;
import com.wb.domainserver.util.util.Util;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Base64Util;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
@@ -74,7 +66,10 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import java.io.InputStream;
import java.io.InputStreamReader;
@@ -136,6 +131,8 @@ public class OrdrController {
private BOMaMtngService boMaMtngService;
@Autowired
private BOPurchsService boPurchsService;
@Autowired
private BOSubsvcService subsvcService;
/* ####################################
사용자 > 상품 > 구매/결제 > 회원구매하기 시작
@@ -399,6 +396,73 @@ public class OrdrController {
// );
}
/* ####################################
사용자 > 구독상품 > 구매/결제 > 회원구매하기 시작
#################################### */
/**
* 사용자 > 구독상품 > 구매/결제 > 구독서비스 결제 > 구독서비스 결제 화면 이동
* @return SubsvcPurchsC.jsp
*/
@Policy(AuthPolicy.RESTRICTED)
@RequestMapping(value="/selectSubsvcPurchsForm")
public String selectSubsvcSetleInqire(HttpServletRequest request, ModelMap model, BOOrdrVO ordrVO) throws Exception {
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
//결재 플랫폼 구분 코드
ordrVO.setSetlePltfomTyCd("PC".equals(request.getAttribute("env"))?"01":"02");
//약관정보 세팅
BOStplatVO stplatVO = new BOStplatVO();
stplatVO.setPageIndex(1);
stplatVO.setPageUnit(paginationProperties.getPageUnit());
stplatVO.setNmbrPurchsAt("Y");
stplatVO.setSrchSopmalCd(user.getSopmalCd());
DataMap stplat = selectBOStplatListInqire(stplatVO);
//주문 상품정보 세팅
if ("01".equals(user.getSysDvCd())) {
ordrVO.setSopmalCd(user.getSopmalCd());
}
ordrVO.setMbrInnb(user.getUserInnb());
ordrVO.setMbrId(user.getMbrId());
ordrVO.setMbrDvCd(user.getMbrDvCd());
Map<String, Object> content = service.selectSubsvcPurchs(ordrVO);
model.addAttribute("data", content);
model.addAttribute("paramVO", new ObjectMapper().writeValueAsString(ordrVO));
model.addAttribute("deviceType", Util.getDeviceType(request));
model.addAttribute("stplat", stplat);
return Util.getDeviceType(request) + "/ordr/SubsvcPurchsC";
}
/**
* 사용자 > 구독상품 > 구매/결제 > 구독서비스 결제 > 구독서비스 조회
* @param param
* @return ResponseEntity<WnbtResponse>
*/
@Policy(AuthPolicy.RESTRICTED)
@RequestMapping(value="/selectOrderSubsvcOne", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<WnbtResponse> selectOrderSubsvcOne(@RequestBody HashMap<String, Object> param) {
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
BOSubsvcVO subsvcVO = new BOSubsvcVO();
if ("01".equals(user.getSysDvCd())) {
subsvcVO.setSopmalCd(user.getSopmalCd());
}
subsvcVO.setSubsvcInnb(String.valueOf(param.get("subsvcInnb")));
DataMap content = subsvcService.selectBOSubsvcDetail(subsvcVO);
return ResponseEntity.ok(
WnbtResponse.builder()
.resBody(new WnbtResponseBody(content))
.build()
);
}
/**
* 사용자 > 구독상품 > 구매/결제 > 구독서비스 결제 > 결제 예정금액 조회
* @param param

View File

@@ -39,6 +39,20 @@ const fn_save_dftDlvylcAt = function (msg, adbkInnb) {
});
}
}
/**********************************************
리턴 formId 세팅
***********************************************/
let formIdSave;
const fn_set_formId = function (formId) {
if (formId !== ''){
formIdSave = formId;
} else {
formId = formIdSave;
}
return formId;
}
/**********************************************
배송지 관리 팝업 ()
***********************************************/
@@ -46,7 +60,9 @@ const fn_move_dlvylc_manage_pop = function (pageIndex,callback, formId = '') {
if (callback == undefined) {
callback = 'fn_set_dlvylc';
}
formId = fn_set_formId(formId);
console.log("배송지 관리 팝업 : ", formId);
$.ajax({
type: 'post',
url: '/sopmal/mpage/mbr/selectDlvylcManagePopup',
@@ -77,7 +93,9 @@ const fn_move_dlvylc_manage_full = function (pageIndex, callback, formId = '') {
if (callback == undefined) {
callback = 'fn_set_dlvylc';
}
formId = fn_set_formId(formId);
console.log("모바일 배송지 팝업 formId : ", formId);
$.ajax({
type: 'post',
url: '/sopmal/mpage/mbr/selectDlvylcManagePopup',

View File

@@ -72,6 +72,20 @@ const fn_select_recentDlvylcList = function (pageIndex, ordering) {
}
});
}
/**********************************************
리턴 formId 세팅
***********************************************/
let formIdSave;
const fn_set_formId = function (formId) {
if (formId !== ''){
formIdSave = formId;
} else {
formId = formIdSave;
}
return formId;
}
/**********************************************
배송지 관리 팝업 (처음 호출 할 때)
***********************************************/
@@ -82,6 +96,8 @@ const fn_move_dlvylc_manage_pop = function (pageIndex, mbrInnb, mbrDvCd, callbac
if (callback == undefined) {
callback = fn_set_dlvylc;
}
formId = fn_set_formId(formId);
$.ajax({
type: 'post',
url: '/crm/dlvylc/selectRpuseDlvylcListInqire',

View File

@@ -72,6 +72,20 @@ const fn_select_recentDlvylcList = function (pageIndex, ordering) {
}
});
}
/**********************************************
리턴 formId 세팅
***********************************************/
let formIdSave;
const fn_set_formId = function (formId) {
if (formId !== ''){
formIdSave = formId;
} else {
formId = formIdSave;
}
return formId;
}
/**********************************************
배송지 관리 팝업 (처음 호출 할 때)
***********************************************/
@@ -82,6 +96,8 @@ const fn_move_dlvylc_manage_pop = function (pageIndex, mbrInnb, mbrDvCd, callbac
if (callback == undefined) {
callback = fn_set_dlvylc;
}
formId = fn_set_formId(formId);
$.ajax({
type: 'post',
url: '/crm/dlvylc/selectRpuseDlvylcListInqire',

View File

@@ -48,8 +48,8 @@
<script src="<c:url value='/mngr/vendor/time-picker/timepicker.min.js'/>"></script>
<script src="<c:url value='/mngr/vendor/dropzone/dropzone.min.js'/>"></script>
<script src="<c:url value='/crm/js/script.js'/>" defer></script>
<script src="<c:url value='/js/gcone.js'/>"></script>
<script src="<c:url value='/js/fileupload_comm.js'/>"></script>
<script src="<c:url value='/js/mngr/gcone.js'/>"></script>
<script src="<c:url value='/js/mngr/fileupload_comm.js'/>"></script>
<script src="<c:url value='/ckeditor/ckeditor.js'/>"></script>
<script src="<c:url value='/mngr/vendor/chart.js/chart.umd.min.js'/>"></script>
<script src="<c:url value='/admin/vendor/jstree/jstree.min.js'/>"></script>

View File

@@ -77,6 +77,9 @@
});
}
/******************************************************
* 숫자 자릿점 포메팅
* ****************************************************/
const fn_format_number = function(number) {
return Number(number).toLocaleString();
}
@@ -176,7 +179,7 @@
<main>
<div class="sub-wrapper">
<div class="sub-content">
<form>
<form method="post" action="/sopmal/ordr/selectSubsvcPurchsForm">
<h2 class="subList__title">구독 서비스</h2>
<div class="ck-content" style="border: 1px solid #e9ecef; background-color: #f8f9fB;">
<c:out value="${ resultMap.sopmalInfo[0].subsvcGuidanceWords }" escapeXml="false"/>

View File

@@ -8,7 +8,7 @@
<spring:eval expression="@environment.getProperty('currency-unit.default')" var="curUnit"/>
<%--
Class Name : MbrSubscribeC.jsp
Class Name : SubsvcPurchsC.jsp
Description : 회원 구독상품 구매하기
Modification Information
@@ -84,7 +84,7 @@
'mbrDvCd':mbrDvCd,
'mbrId':mbrId,
'sopmalCd':sopmalCd,
'goodsList':JSON.parse('${data.goodsListByJson}')
'subsvcInnb':${data.subsvcOne.subsvcInnb}
};
fn_get_goods_list(param, null);
@@ -1950,7 +1950,7 @@
$.ajax({
type: 'post',
contentType: 'application/json',
url: '<c:url value="/sopmal/ordr/selectOrderGoodsList"/>',
url: '<c:url value="/sopmal/ordr/selectOrderSubsvcOne"/>',
data: JSON.stringify(param),
// data: JSON.stringify(requestData),
dataType: 'json',
@@ -1969,9 +1969,9 @@
return false;
}
localStorage.setItem('goodsList', JSON.stringify(result.goodsList));
localStorage.setItem('subsvcOne', JSON.stringify(result));
fn_set_goods_list(result.goodsList);
fn_set_goods_list(result);
fn_set_prsnt_list(result.prsnt);
@@ -1993,75 +1993,71 @@
let tr = '';
if (!fn_is_empty(data)) {
for (let i = 0; i < data.length; i++) {
const goods = data[i];
tr += '<tr class="ordrGoods" data-product-id="' + fn_nvl(data.subsvcInnb, '') + '">';
tr += ' <td>';
tr += ' <div class="cartItem">';
tr += ' <div class="cartItem__image">';
tr += ' <a href="/sopmal/main/selectSubscribeForm?subsvcInnb=' + data.subsvcInnb + '">';
tr += ' <img src="' + cdnurl + data.img + '" onerror="this.src=\'<c:url value="/pc/images/image_placeholder.png"/>\'" alt="' + data.subsvcConcatNm + '">';
tr += ' </a>';
tr += ' </div>';
tr += ' <div class="cartItem__productInfo">';
tr += ' <a href="javascript:void(0);" class="cartItem__productTitle">' + data.subsvcNm + '</a>';
tr += ' <span class="cartItem__productOption"><span class="option-badge">옵션</span> ' + data.subsvcGnrNm + '</span>';
tr += '<tr class="ordrGoods" data-product-id="' + fn_nvl(goods.goodsOptnInnb, '') + '">';
tr += ' <td>';
tr += ' <div class="cartItem">';
tr += ' <div class="cartItem__image">';
tr += ' <a href="/sopmal/goods/selectGoodsDtl?sopmalCd=' + sopmalCd + '&goodsInnb=' + goods.goodsInnb + '">';
tr += ' <img src="' + cdnurl + goods.goodsImgCours + '" onerror="this.src=\'<c:url value="/pc/images/image_placeholder.png"/>\'" alt="' + goods.goodsNm + '">';
tr += ' </a>';
tr += ' </div>';
tr += ' <div class="cartItem__productInfo">';
tr += ' <a href="javascript:void(0);" class="cartItem__productTitle">' + goods.goodsNm + '</a>';
tr += ' <span class="cartItem__productOption"><span class="option-badge">옵션</span> ' + goods.optn + '</span>';
// if (!fn_is_empty(goods.inputOptnText)) {
// tr += ' <span class="cartItem__productOption">' + goods.inputOptnText + '</span>';
// }
if (!fn_is_empty(goods.inputOptnText)) {
tr += ' <span class="cartItem__productOption">' + goods.inputOptnText + '</span>';
}
tr += ' </div>';
tr += ' </div>'
// tr += ' <input type="hidden" class="dplctLmttCoupon" value="' + fn_nvl(goods.dplctLmttCoupon, '') + '"/>';
// tr += ' <input type="hidden" class="dplctLmttEvtnm" value="' + fn_nvl(goods.dplctLmttEvtnm, '') + '"/>';
// tr += ' <input type="hidden" class="goodsInnb" value="' + fn_nvl(goods.goodsInnb, '') + '"/>';
// tr += ' <input type="hidden" class="goodsOptnInnb productGoodsOptnInnb" value="' + fn_nvl(goods.goodsOptnInnb, '') + '"/>';
// tr += ' <input type="hidden" class="inputOptn" value="' + fn_nvl(goods.inputOptn, '') + '"/>';
// tr += ' <input type="hidden" class="inputOptnText" value="' + fn_nvl(goods.inputOptnText, '') + '"/>';
// tr += ' <input type="hidden" class="qy productQtyInput" value="' + fn_nvl(goods.qy, '') + '"/>';
// tr += ' <input type="hidden" class="usedCoupons" value="' + fn_nvl(goods.usedCoupons, '') + '"/>';
// tr += ' <input type="hidden" class="product-dlvyGroupInnb" value="' + fn_nvl(goods.dlvyGroupInnb, '') + '"/>';
// tr += ' <input type="hidden" class="product-slepric" value="' + fn_nvl(goods.slepric, '') + '"/>';
// tr += ' <input type="hidden" class="product-dscntAmt" value="' + fn_nvl(goods.dscntAmt, '') + '"/>';
// tr += ' <input type="hidden" class="product-mbrInnb" value="' + fn_nvl(goods.mbrInnb, '') + '"/>';
tr += ' </td>';
tr += ' <td class="qyTd">';
tr += ' <span>' + 1 + '</span>';
tr += ' </td>';
tr += ' <td>';
tr += ' <span class="cartItem__discountPrice"><span class="cartItem__discountMinus">(-)</span><span class="comma product-dscntAmt-text">' + 0 + '</span><span class="priceUnit">' + curUnit + '</span></span>';
tr += ' </td>';
tr += ' <td>';
tr += ' <span class="cartItem__beforePrice"><span class="comma product-subCnsmrpric">' + (data.cnsmrpric).toLocaleString() + '</span>' + curUnit + '</span>';
tr += ' <span class="cartItem__afterPrice"><span class="comma product-dscntApplyAmt">' + (data.selpric).toLocaleString() + '</span><span class="priceUnit">' + curUnit + '</span></span>';
tr += ' </td>';
tr += '</tr>';
tr += ' </div>';
tr += ' </div>'
tr += ' <input type="hidden" class="dplctLmttCoupon" value="' + fn_nvl(goods.dplctLmttCoupon, '') + '"/>';
tr += ' <input type="hidden" class="dplctLmttEvtnm" value="' + fn_nvl(goods.dplctLmttEvtnm, '') + '"/>';
tr += ' <input type="hidden" class="goodsInnb" value="' + fn_nvl(goods.goodsInnb, '') + '"/>';
tr += ' <input type="hidden" class="goodsOptnInnb productGoodsOptnInnb" value="' + fn_nvl(goods.goodsOptnInnb, '') + '"/>';
tr += ' <input type="hidden" class="inputOptn" value="' + fn_nvl(goods.inputOptn, '') + '"/>';
tr += ' <input type="hidden" class="inputOptnText" value="' + fn_nvl(goods.inputOptnText, '') + '"/>';
tr += ' <input type="hidden" class="qy productQtyInput" value="' + fn_nvl(goods.qy, '') + '"/>';
tr += ' <input type="hidden" class="usedCoupons" value="' + fn_nvl(goods.usedCoupons, '') + '"/>';
tr += ' <input type="hidden" class="product-dlvyGroupInnb" value="' + fn_nvl(goods.dlvyGroupInnb, '') + '"/>';
tr += ' <input type="hidden" class="product-slepric" value="' + fn_nvl(goods.slepric, '') + '"/>';
tr += ' <input type="hidden" class="product-dscntAmt" value="' + fn_nvl(goods.dscntAmt, '') + '"/>';
tr += ' <input type="hidden" class="product-mbrInnb" value="' + fn_nvl(goods.mbrInnb, '') + '"/>';
tr += ' </td>';
tr += ' <td class="qyTd">';
tr += ' <span>' + goods.qy + '</span>';
tr += ' </td>';
tr += ' <td>';
tr += ' <span class="cartItem__discountPrice"><span class="cartItem__discountMinus">(-)</span><span class="comma product-dscntAmt-text">' + (goods.dscntAmt).toLocaleString() + '</span><span class="priceUnit">' + curUnit + '</span></span>';
tr += ' </td>';
tr += ' <td>';
tr += ' <span class="cartItem__beforePrice"><span class="comma product-subCnsmrpric">' + (goods.subCnsmrpric).toLocaleString() + '</span>' + curUnit + '</span>';
tr += ' <span class="cartItem__afterPrice"><span class="comma product-dscntApplyAmt">' + (goods.dscntApplyAmt).toLocaleString() + '</span><span class="priceUnit">' + curUnit + '</span></span>';
tr += ' </td>';
tr += '</tr>';
if (!fn_is_empty(goods.goodsCouponList)) {
tr += '<tr>';
tr += ' <td>';
tr += ' <div class="cartItem__footer">';
tr += ' <div class="select-box">';
tr += ' <select class="useCoupons lg" title="상품쿠폰">';
tr += ' <option value="0" selected>선택</option>';
for (let j = 0; j < goods.goodsCouponList.length; j++) {
const coupon = goods.goodsCouponList[j];
tr += ' <option value="' + coupon.dwldCouponInnb + '" coupon-innb="' + coupon.couponInnb + '" dplct-dscnt-at="' + coupon.dplctDscntAt + '" otr-coupon-smtm_use-at="' + coupon.otrCouponSmtmUseAt + '" ' + ('Y' == coupon.isUse ? 'selected' : '') + '/>';
tr += ' ' + ('Y' === coupon.otrCouponSmtmUseAt ? '' : '') + coupon.coupNm;
tr += ' </option>';
}
tr += ' </select>';
tr += ' </div>';
tr += ' </div>';
tr += ' </td>';
tr += '</tr>';
}
}
// if (!fn_is_empty(goods.goodsCouponList)) {
// tr += '<tr>';
// tr += ' <td>';
// tr += ' <div class="cartItem__footer">';
// tr += ' <div class="select-box">';
// tr += ' <select class="useCoupons lg" title="상품쿠폰">';
// tr += ' <option value="0" selected>선택</option>';
//
// for (let j = 0; j < goods.goodsCouponList.length; j++) {
// const coupon = goods.goodsCouponList[j];
//
// tr += ' <option value="' + coupon.dwldCouponInnb + '" coupon-innb="' + coupon.couponInnb + '" dplct-dscnt-at="' + coupon.dplctDscntAt + '" otr-coupon-smtm_use-at="' + coupon.otrCouponSmtmUseAt + '" ' + ('Y' == coupon.isUse ? 'selected' : '') + '/>';
// tr += ' ' + ('Y' === coupon.otrCouponSmtmUseAt ? '' : '') + coupon.coupNm;
// tr += ' </option>';
// }
//
// tr += ' </select>';
// tr += ' </div>';
// tr += ' </div>';
// tr += ' </td>';
// tr += '</tr>';
// }
} else {
tr += '<tr><td colSpan="100%"><spring:message code="common.nodata"/></td></tr>';
}
@@ -2460,7 +2456,7 @@
setle['sopmalCd'] = $('#sopmalCd').val();
setle['dlvylc'] = JSON.parse(localStorage.getItem('dlvylc'));
setle['goodsList'] = JSON.parse(localStorage.getItem('goodsList'));
setle['subsvcOne'] = JSON.parse(localStorage.getItem('subsvcOne'));
setle['enuri'] = JSON.parse(localStorage.getItem('enuri'));
setle['dlvylcZip'] = localStorage.getItem('dlvylcZip');
setle['dlvylcAreaCd'] = localStorage.getItem('dlvylcAreaCd');
@@ -2471,7 +2467,7 @@
$.ajax({
type: 'post',
contentType: 'application/json',
url: '<c:url value="/sopmal/ordr/selectSetleExpectAmt"/>',
url: '<c:url value="/sopmal/ordr/selectSubsvcSetleExpectAmt"/>',
data: JSON.stringify(setle),
dataType: 'json',
async : false,
@@ -3708,7 +3704,7 @@
</div>
</div>
<div id="prsnt" class="orderInfo__section">
<%--<div id="prsnt" class="orderInfo__section">
<h3 class="orderInfo__sectionTitle">사은품</h3>
<div class="cartOrder__list">
<div class="table-wrapper">
@@ -3731,7 +3727,7 @@
</table>
</div>
</div>
</div>
</div>--%>
<div class="orderInfo__section multiDeliveryAddress multiOrdr">
<h3 class="orderInfo__sectionTitle">배송지 정보 1</h3>