Files
sake/src/main/webapp/WEB-INF/views/sopmal/ordr/MbrPurchsC.jsp
2026-09-28 15:48:48 +09:00

4896 lines
270 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<spring:eval expression="@environment.getProperty('currency-unit.default')" var="curUnit"/>
<spring:eval expression="@environment.getProperty('currency-unit.KR')" var="krUnit"/>
<%--
Class Name : MbrPurchsC.jsp
Description : 회원 구매하기
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-04-11 김혜인 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<jsp:include page="/WEB-INF/views/comm/Include.jsp"/>
<script src="<c:url value='/js/dlvylc/dlvylc.js'/>"></script>
<script>
$(document).ready(function() {
fn_event();
fn_init();
fn_modal_init();
});
var curUnit = '${curUnit}';
/* ********************************************************
* 초기 설정
**********************************************************/
const fn_modal_init = function() {
$('.gcpayGuideSlick').slick({
dots: true,
slidesToShow: 1,
slidesToScroll: 1,
arrows: false,
});
$('#gcpay-info').on($.modal.OPEN, function (event, modal) {
$('.gcpayGuideSlick').slick('setPosition').slick(); // 모달 팝업 열었을 때 slick 재설정
});
// gcpay 사용안할 경우 기본 세팅
const gcpayCardUseAt = $('#gcpayCardUseAt').val();
let gcpayAt = ( gcpayCardUseAt === 'Y')? 'Y' : 'N';
const setleTy = $('#setleSetupTyCd').val();
let setleTyCd = '#pg04';
if(setleTy==='01')setleTyCd = '#pg04'; //kcp
else if(setleTy==='02')setleTyCd = '#pg03'; //toss
else if(setleTy==='03')setleTyCd = '#pg06'; //kiwoom
if (gcpayAt === 'N') {
$(setleTyCd).click();
}
}
const fn_init = function() {
localStorage.clear();
const isDftDlvylc = $('#isDftDlvylc').val();
const dlvylcZip = $('#dlvylcZip').val();
const dlvylcAreaCd = $('#dlvylcAreaCd').val();
const prefcd = $('#prefcd').val();
if ('N' === isDftDlvylc) {
$('input[name="dlvylcDvCd"][value="New"]').trigger('click');
$('input[name="dlvylcDvCd"][value="Default"]').prop('disabled', true);
}
localStorage.setItem("dlvylcZip", dlvylcZip);
localStorage.setItem("dlvylcAreaCd", dlvylcAreaCd);
localStorage.setItem("prefcd", prefcd);
const mbrDvCd = $('#mbrDvCd').val();
const mbrId = $('#mbrId').val();
const sopmalCd = $('#sopmalCd').val();
let param = {
'mbrDvCd':mbrDvCd,
'mbrId':mbrId,
'sopmalCd':sopmalCd,
'goodsList':JSON.parse('${data.goodsListByJson}')
};
fn_get_goods_list(param, null);
fn_get_setle_amt();
fn_set_ordrty(); // 주문 유형별 영역 제어
let multiDlvyAt = '<c:out value="${ data.shopInfo.multiDlvyAt }"/>';
let giftDlvyAt = '<c:out value="${ data.shopInfo.giftDlvyAt }"/>';
if (multiDlvyAt === 'Y') {
} else if (giftDlvyAt === 'Y') {
} else {
$('.ordrTySec').hide();
}
}
/**
* 숫자 변경
* @param amount
* @returns {number|number|number}
*/
function parseAmount(amount) {
if (!amount) return 0;
return parseInt(amount.replace(/,/g, '').split('.')[0], 10) || 0;
}
/**
* 상품 목록 비교 함수
* @param list1
* @param list2
* @returns {boolean}
*/
const fn_compare_goodslists = function(list1, list2) {
// 리스트 길이 체크
if (list1.length !== list2.length) {
return false;
}
// 상품별 값 비교
for (let i = 0; i < list1.length; i++) {
const goods1 = list1[i];
const goods2 = list2[i];
if (
goods1.sopmalCd !== goods2.sopmalCd || // 쇼핑몰코드
goods1.goodsInnb !== goods2.goodsInnb || // 상품고유번호
goods1.goodsOptnInnb !== goods2.goodsOptnInnb || // 상품옵션 고유번호
goods1.qy !== goods2.qy // 주문 수량
) {
return false; // 상품 정보 중 하나로 다르면 false
}
}
return true;
}
/* ********************************************************
* 이벤트 설정
**********************************************************/
const fn_event = function() {
/* ****************************
* 공통
******************************/
/* input 숫자만 입력 */
$(document).on('input', '.number-only', function() {
$(this).val(($(this).val().replace(/[^0-9]/g, '')).replace(/^0+/, ''));
});
/* 배송지정보 > 배송지 선택 라디오 박스 선택 이벤트 */
$('input[name="dlvylcDvCd"]').on('click', function() {
$('[class*="deliveryAddress"]').hide();
$('.deliveryAddress' + $(this).val()).show();
$('#dlvylcForm').find('.new').val('');
if ('New' === $(this).val()) {
$('#btnDlvylcMngr').show();
} else {
$('#btnDlvylcMngr').hide();
// 기본 배송지 최신화
fn_get_dftdlvylc();
}
const dlvylcZip = $('#dlvylcZip').val();
const dlvylcAreaCd = $('#dlvylcAreaCd').val();
const prefcd = $('#prefcd').val();
localStorage.setItem("dlvylcZip", dlvylcZip);
localStorage.setItem("dlvylcAreaCd", dlvylcAreaCd);
localStorage.setItem("prefcd", prefcd);
fn_get_setle_amt();
if ($(this).val() === 'Gift') {
$('.order-method-normal__btn-container').find('.order-method-normal__btn:not(.gift_pay)').hide();
} else {
$('.order-method-normal__btn-container').find('.order-method-normal__btn').show();
}
});
/* 배송지정보 > 배송지 관리 버튼 선택 이벤트 */
$(document).on('click', '.btnDlvylcMngr', function() {
const form = $(this).closest('form');
const formId = $(form).attr('id');
if (formId === 'dlvylcForm') {
const dlvylcDvCd = $('input[name="dlvylcDvCd"]:checked').val();
if ('Default' === dlvylcDvCd) {
return false;
}
}
fn_move_dlvylc_manage_pop(1, 'fn_set_dlvylc', formId);
});
//배송지정보 > 배송 요청사항 직접입력 글자수제한 숫자표시
$(document).on('change', '.deliveryRequestSelect', function() {
const form = $(this).closest('form');
const value = $(this).val();
if ('write' === value) {
$(form).find('.deliveryRequestDetail').show();
$(form).find('input[name="dlvyMssageCn"]').val('');
} else {
$(form).find('.deliveryRequestDetail').hide();
$(form).find('input[name="dlvyMssageCn"]').val(value.trim());
}
});
// 배송지정보 > 배송 요청사항 직접입력 글자수제한 숫자표시
$('input[name="dlvyMssageCn"]').on("input", function () {
$(".inputLimit__current").text($(this).val().length);
});
/* 배송지정보 > 우편번호 찾기 버튼 선택 이벤트 */
$(document).on('click', '#btnPost', function() {
const button = $(this);
new daum.Postcode({
oncomplete: function (data) {
const postcode = data.zonecode;
const roadAddr = data.roadAddress;
const jibunAddress = data.jibunAddress;
let addressType = '';
let extraRoadAddr = '';
// userSelectedType R/J 검색 결과에서 사용자가 선택한 주소의 타입(R : 도로명, J : 지번)
if (data.userSelectedType === 'R') {
addressType = 'street';
} else {
addressType = 'zibun';
}
// 법정동명이 있을 경우 추가한다. (법정리는 제외)
// 법정동의 경우 마지막 문자가 "동/로/가"로 끝난다.
if (data.bname !== '' && /[동|로|가]$/g.test(data.bname)) {
extraRoadAddr += data.bname;
}
// 건물명이 있고, 공동주택일 경우 추가한다.
if (data.buildingName !== '' && data.apartment === 'Y') {
extraRoadAddr += (extraRoadAddr !== '' ? ', ' + data.buildingName : data.buildingName);
}
// 표시할 참고항목이 있을 경우, 괄호까지 추가한 최종 문자열을 만든다.
if (extraRoadAddr !== '' && roadAddr !== '') {
extraRoadAddr = ' (' + extraRoadAddr + ')';
}
fn_set_dlvylc({
postcode:postcode,
roadAddress:roadAddr,
jibunAddress:jibunAddress,
addressType:'street' === addressType ? '01' : '02',
extraAddress:extraRoadAddr
}, button);
}
}).open();
});
// 마일리지 입력 글자수제한 숫자표시
$('input[name="btnAllUseMlgAmt"]').on("input", function () {
$(".inputLimit__current").text($(this).val().length);
});
/* 배송지정보 > 배송비 쿠폰 선택 이벤트 */
$(document).on('change', '.dlvylcCouponList', function() {
// fn_check_dplct_lmtt_coupon('02', $(this));
if (!$(this).data('fromProductCoupon')) {
fn_check_dplct_lmtt_coupon('02', $(this));
}
const option = $('option:selected', this);
const couponInnb = $(option).attr('coupon-innb');
const dwldCouponInnb = $(this).val();
const dplctDscntAt = $(option).attr('dplct-dscnt-at'); // 중복 할인 여부
const otrCouponSmtmUseAt = $(option).attr('otr-coupon-smtm_use-at');
const form = $(this).closest('form');
$(form).find('input[name="couponInnb"]').val(couponInnb);
$(form).find('input[name="dwldCouponInnb"]').val(dwldCouponInnb);
$(form).find('input[name="dplctDscntAt"]').val(dplctDscntAt);
$(form).find('input[name="otrCouponSmtmUseAt"]').val(otrCouponSmtmUseAt);
localStorage.removeItem('dlvylc');
let ordrTyCd = $('input[name="ordrTy"]:checked').val();
if (ordrTyCd === '05') { // 여러곳 배송
$('.multiOrdrInnerShipping').each(function (idx) {
const innerForm = $(this).find('form');
const shippingUseDwldCoupon = parseAmount($(innerForm).find('input[name="dwldCouponInnb"]').val());
const thisDwldCoupon = parseAmount(dwldCouponInnb);
if (form.attr('id') !== innerForm.attr('id')) {
if (thisDwldCoupon === shippingUseDwldCoupon) {
$(innerForm).find('input[name="couponInnb"]').val(null);
$(innerForm).find('input[name="dwldCouponInnb"]').val(0);
$(innerForm).find('input[name="dplctDscntAt"]').val(null);
$(innerForm).find('input[name="otrCouponSmtmUseAt"]').val(null);
}
}
})
fn_set_multiordrdlcylc(); // 배송지별 상품 세팅
fn_get_dlvylc_coupon_list_multi();
} else {
fn_get_dlvylc_coupon_list();
}
fn_get_setle_amt();
});
/* 주문 상품 > 상품 쿠폰 선택 이벤트 */
$(document).on('change', '.useCoupons', function() {
$('#dlvylcCouponList').data('fromProductCoupon', true); // 플래그 설정
$('#dlvylcCouponList option:first').prop('selected', true).change();
$('#dlvylcCouponList').removeData('fromProductCoupon'); // 플래그 제거
$('#cartCouponList').data('fromProductCoupon', true); // 플래그 설정
$('#cartCouponList option:first').prop('selected', true).change();
$('#cartCouponList').removeData('fromProductCoupon'); // 플래그 제거
$('#useMlgAmt').val(0);
$('#useCashMlgAmt').val(0);
fn_set_enuri();
fn_check_dplct_lmtt_coupon('01', $(this));
const tbody = $('#goodsList');
const goodsTr = $(this).closest('tr').prev();
const useGoodsInnb = $(goodsTr).find('.goodsInnb').val();
const useGoodsOptnInnb = $(goodsTr).find('.goodsOptnInnb').val();
const option = $('option:selected', this);
const dplctDscntAt = $(option).attr('dplct-dscnt-at');
const otrCouponSmtmUseAt = $(option).attr('otr-coupon-smtm_use-at');
const couponInnb = $(option).attr('coupon-innb');
const dwldCouponInnb = $(this).val();
if ('Y' === otrCouponSmtmUseAt) {
if (!confirm('본 쿠폰은 다른 쿠폰과 함께 사용할 수 없는 단독사용쿠폰입니다.\n적용하시겠습니까?')) {
if ('0' !== dwldCouponInnb) {
$(this).val('0').change();
} else {
$(this).val('0').attr('selected', true).niceSelect('update');
}
return false;
}
}
const mbrDvCd = $('#mbrDvCd').val();
const mbrId = $('#mbrId').val();
const sopmalCd = $('#sopmalCd').val();
let isNonDwldCoupon = 'N' === dplctDscntAt ? '|' + couponInnb + '-' + dwldCouponInnb : '';
let goodsList = [];
$(tbody).find('.ordrGoods').each(function () {
const goodsInnb = $(this).find('.goodsInnb').val();
const goodsOptnInnb = $(this).find('.goodsOptnInnb').val();
const qy = $(this).find('.qy').val();
const inputOptn = $(this).find('.inputOptn').val();
let selected = false;
if (useGoodsInnb === goodsInnb && useGoodsOptnInnb === goodsOptnInnb) {
$(this).find('.usedCoupons').val('');
selected = true;
}
const usedCoupons = 'Y' !== otrCouponSmtmUseAt ? $(this).find('.usedCoupons').val() : '';
let goods = {
'sopmalCd': sopmalCd,
'goodsInnb': goodsInnb,
'goodsOptnInnb': goodsOptnInnb,
'qy': qy,
'mbrDvCd': mbrDvCd,
'inputOptn': inputOptn,
'couponInnb': selected ? couponInnb : '',
'dwldCouponInnb': selected ? dwldCouponInnb : '',
'dplctDscntAt': selected ? dplctDscntAt : '',
'otrCouponSmtmUseAt': selected ? otrCouponSmtmUseAt : '',
'usedCoupons': 'N' === dplctDscntAt ? usedCoupons.replaceAll(isNonDwldCoupon, '') : usedCoupons
};
goodsList.push(goods);
});
let param = {
'goodsList': goodsList
}
fn_get_goods_list(param, $(this));
let ordrTyCd = $('input[name="ordrTy"]:checked').val();
if (ordrTyCd === '05') { // 여러곳 배송
fn_update_product_remain(); // 상품 쿠폰 사용시 배송지별 상품 금액 갱신
fn_set_multiordrdlcylc(); // 배송지별 상품 세팅
fn_get_dlvylc_coupon_list_multi(); // 배송비 쿠폰 갱신
}
fn_get_setle_amt();
});
/* 할인 정보 > 장바구니 쿠폰 선택 이벤트 */
$('#cartCouponList').on('change', function() {
if (!$(this).data('fromProductCoupon')) {
fn_check_dplct_lmtt_coupon('03', $(this));
}
const option = $('option:selected', this);
const dplctDscntAt = $(option).attr('dplct-dscnt-at');
const otrCouponSmtmUseAt = $(option).attr('otr-coupon-smtm_use-at');
const couponInnb = $(option).attr('coupon-innb');
const dwldCouponInnb = $(this).val();
const form = $(this).closest('form');
$(form).find('#couponInnb').val(couponInnb);
$(form).find('#dwldCouponInnb').val(dwldCouponInnb);
$(form).find('#dplctDscntAt').val(dplctDscntAt);
$(form).find('#otrCouponSmtmUseAt').val(otrCouponSmtmUseAt);
fn_get_cart_coupon_list();
let enuri = JSON.parse(localStorage.getItem('enuri')) || {}; // 기존 값 가져오기
let preUseMlgAmt = $('#useMlgAmt').val();
let modifiedAmt = parseAmount(enuri.setleAmt) + parseAmount(preUseMlgAmt);
enuri.setleAmt = (modifiedAmt).toString();
localStorage.setItem('enuri', JSON.stringify(enuri));
$('#useMlgAmt').val(0);
$('#useCashMlgAmt').val(0);
fn_set_enuri();
fn_get_setle_amt();
});
/* 할인 정보 > 마일리지 할인 포커스 아웃 이벤트 */
$('#useMlgAmt').focusout(function() {
$('#useCashMlgAmt').val(0);
const useMlgAmt = $(this).val();
const mlgAmt = parseInt(!fn_is_empty(useMlgAmt) ? useMlgAmt : '0');
const ableMlgAmt = $(this).closest('div').find('input[name="ableMlgAmt"]').val();
fn_set_enuri();
fn_get_setle_amt();
});
/* 할인 정보 > GC 머니 할인 포커스 아웃 이벤트 */
$('#useCashMlgAmt').focusout(function() {
const useCashMlgAmt = $(this).val();
const cashMlgAmt = parseInt(!fn_is_empty(useCashMlgAmt) ? useCashMlgAmt : '0');
const ableCashMlgAmt = $(this).closest('div').find('input[name="ableCashMlgAmt"]').val();
fn_set_enuri();
fn_get_setle_amt();
$('#pg03').click();
});
/* 할인 정보 > 마일리지 모두사용 버튼 선택 이벤트 */
$('#btnAllUseMlgAmt').on('click', function() {
$('#useCashMlgAmt').val(0);
const ableMlgAmt = parseInt($(this).closest('div').find('input[name="ableMlgAmt"]').val(), 10);
const lmttUseMlg = parseInt($('#lmttUseMlg').val(), 10);
const useMlgAmt = lmttUseMlg > ableMlgAmt ? ableMlgAmt : lmttUseMlg;
$(this).closest('div').find('input[name="useMlgAmt"]').val(useMlgAmt)
fn_set_enuri();
fn_get_setle_amt();
});
/* 할인 정보 > GC 머니 모두사용 버튼 선택 이벤트 */
$('#btnAllUseCashMlgAmt').on('click', function() {
const ableCashMlgAmt = parseInt($(this).closest('div').find('input[name="ableCashMlgAmt"]').val(), 10);
const lmttUseCashMlg = parseInt($('#lmttUseCashMlg').val(), 10);
const useCashMlgAmt = lmttUseCashMlg > ableCashMlgAmt ? ableCashMlgAmt : lmttUseCashMlg;
$(this).closest('div').find('input[name="useCashMlgAmt"]').val(useCashMlgAmt)
fn_set_enuri();
fn_get_setle_amt();
$('#pg03').click();
});
/* 결제정보 결제수단 버튼 선택 이벤트 */
$('input[name="pg"]').on('click', function() {
const form = $(this).closest('#setleForm')
const id = $(this).attr('id');
const pgCmpnyNm = $(this).val();
$(form).find('.pgContent').hide();
$(form).find('#' + id + 'Content').show();
$('.cartOrderBox__totalKr').show();
//$(form).find('#setleSetupTyCd').val() === '01' ? $(form).find('#pg04Content').show() : $(form).find('#pg03Content').show();
if($(form).find('#setleSetupTyCd').val() === '01'){$(form).find('#pg04Content').show();}
else if($(form).find('#setleSetupTyCd').val() === '02'){$(form).find('#pg03Content').show();}
else if($(form).find('#setleSetupTyCd').val() === '03'){$(form).find('#pg06Content').show();}
$('.order-method-normal__btn').removeClass('active');
$(form).find('#pgCmpnyNm').val(pgCmpnyNm);
if ('pg01' === id || 'pg02' === id) { //GC페이
if ('pg02' === id) {
$('#gc-pay-bank-cash-receipt').prop('checked', true).trigger("click");
$(form).find('#gc-pay-bank-cash-receipt').on('click', function () {
const checked = $(this).is(':checked');
if (checked) {
$('#' + $(this).attr('id') + '-content-inner').show();
fn_set_csh_rcipt_issu($(this).attr('id'));
} else {
$('#' + $(this).attr('id') + '-content-inner').hide();
}
});
}
$(form).find('#setleTyCd').val('pg01' === id ? '01' : '03');
$('.bankSlideW, .cardSlideW').slick('setPosition');
} else if('pg05' === id){ //퀵계좌이체
$('#transfer-cash-receipt').prop('checked', true).trigger("click");
$(form).find('#transfer-cash-receipt').on('click', function () {
const checked = $(this).is(':checked');
if (checked) {
$('#' + $(this).attr('id') + '-content-inner').show();
fn_set_csh_rcipt_issu($(this).attr('id')); //퀵계좌 헌금영수증 폼
} else {
$('#' + $(this).attr('id') + '-content-inner').hide();
}
});
$(form).find('#setleTyCd').val('03');
} else if('st01' === id){ //Stripe
$(form).find('#setleTyCd').val('stripe');
$('.cartOrderBox__totalKr').hide();
} else {
$(form).find('#setleTyCd').val('');
$('.order-method-normal__btn').removeClass('active');
$('.order-method-normal__content').hide();
}
});
/* 결제정보 > 일반결제 > 결제수단 버튼 선택 이벤트 */
$('.order-method-normal__btn').on('click', function() {
const index = $(this).index();
const content = $('.order-method-normal__content');
const useCashMlgAmt = $('#useCashMlgAmt').val();
//$('#setleSetupTyCd').val() === '01' ? $('#pg04').click() : $('#pg03').click();
if($('#setleSetupTyCd').val() === '01'){$('#pg04').click();}
else if($('#setleSetupTyCd').val() === '02'){$('#pg03').click();}
else if($('#setleSetupTyCd').val() === '03'){$('#pg06').click();}
$('.order-method-normal__btn').removeClass('active');
$(this).addClass('active');
$(content).hide();
$(content[index]).show();
const id = $(this).attr('id');
const setleTyCd = $(this).attr('name');
const form = $(this).closest('#setleForm')
$(form).find('#isKeyIn').val('N'); // 수기결제여부
if ('tosspay' === id || 'naverpay' === id || 'kakaopay' === id) {
$(form).find('#pgCmpnyNm').val(id);
$(form).find('#setleTyCd').val('01');
if (useCashMlgAmt > 0) {
$('#' + id + '-content').show();
fn_set_csh_rcipt_issu(id);
}
} else {
if('bank' === id) {
$(form).find('#pgCmpnyNm').val(id);
} else {
$(form).find('#pgCmpnyNm').val($('input[name="pg"]:checked').val());
}
if ('hndwr-card' !== id) {
if ('payco' === id || 'card' === id) {
$('#' + id + '-content').show();
if (useCashMlgAmt > 0) {
fn_set_csh_rcipt_issu(id);
}
} else {
fn_set_csh_rcipt_issu(id);
}
} else {
$(form).find('#isKeyIn').val('Y');
$('#hndwr-card-content-inner').find('.order-method-hndwr-card').val('');
}
$(form).find('#setleTyCd').val(setleTyCd);
}
// Npay CID 세팅
const kcpMid = '<c:out value="${data.payInfo.kcpMid}"/>';
const bpayMid = '<c:out value="${data.payInfo.bpayMid}"/>';
// 개발서버 네이버페이 CPID 구분 적용 취소
$(form).find('#siteCdMid').val(kcpMid);
// if('naverpay' === id) {
// $(form).find('#siteCdMid').val(bpayMid);
// } else {
// $(form).find('#siteCdMid').val(kcpMid);
// }
});
/* 결제예정금액 > 약관 전체동의 선택 이벤트 */
$('#termCheckAll').click(function () {
if ($('#termCheckAll').is(':checked')) {
$('.termCheck').prop('checked', true);
} else {
$('.termCheck').prop('checked', false);
}
});
/* 결제예정금액 > 약관 전체 선택 이벤트 */
$('.termCheck').click(function () {
if ($('.termCheck').length === $('.termCheck:checked').length) {
$('#termCheckAll').prop('checked', true);
} else {
$('#termCheckAll').prop('checked', false);
}
});
/* 결제예정금액 > 구매하기 버튼 선택 이벤트 */
$('#btnBuy').click(function () {
let data = null;
/* 광고 수신 동의 체크 */
if(!fn_is_empty($("#marktRecptnAgreAt"))) {
if ($("#agreeChkAt").val() === 'N' && !$("#marktRecptnAgreAt").is(":checked")) { //광고 수신 동의 체크 안할 시 재확인 모달 창 띄우기
fn_select_clause('05','Y');//마케팅 동의 모달
}else{
data = fn_validate();
}
}else{
data = fn_validate();
}
if (!data) {
return false;
}
disableButton('#btnBuy');
$.ajax({
type: 'post',
contentType: 'application/json',
url: '<c:url value="/sopmal/ordr/selectBlclist"/>',
data: JSON.stringify(data),
success: function (resultData) {
let result = JSON.parse(resultData.resBody.result);
if(result.result == 'Y') {
alert(result.message);
}else {
$.ajax({
type: 'post',
contentType: 'application/json',
url: '<c:url value="/sopmal/ordr/insertOrder"/>',
data: JSON.stringify(data),
success: function (html) {
$('#setleDiv').html(html);
},
error: function (data) {
enableButton('#btnBuy');
alert('<spring:message code="error.internal-server"/>');
}
});
}
}
});
});
$('.ordrrInfoSet').on('change', function () {
const form = $(this).closest('form');
const radioValue = $('input[name="dlvylcDvCd"]:checked').val();
if (radioValue === 'Default') {
if ($(this).is(':checked')) {
$('#recpntNm').val($('#mbrNm').val());
$('.recpntNm_ordrInfo_text').text($('#mbrNm').val());
$('#recpntMbtlnb').val($('#mbtlnb').val());
$('.recpntMbtlnb_ordrInfo_text').text($('#mbtlnb').val());
$('#cstmclerCd').val($('#cstmclerCd').val());
$('.cstmclerCd_ordrInfo_text').text($('#cstmclerCd').val());
} else {
let data = {
'mbrInnb' : '<c:out value="${data.purchsr.mbrInnb}"/>',
'mbrDvCd' : '<c:out value="${data.purchsr.mbrDvCd}"/>'
}
$.ajax({
type: 'post',
contentType: 'application/json',
url: '<c:url value="/sopmal/ordr/selectDftDlvylc"/>',
data: JSON.stringify(data),
success: function (data) {
let parseJson = JSON.parse(data.resBody.result);
$('#recpntNm').val(parseJson.dftDlvylc.recpntNm);
$('.recpntNm_ordrInfo_text').text($('#recpntNm').val());
$('#recpntMbtlnb').val(parseJson.dftDlvylc.mbtlnb);
$('.recpntMbtlnb_ordrInfo_text').text($('#recpntMbtlnb').val());
$('#cstmclerCd').val(parseJson.dftDlvylc.cstmclerCd);
$('.cstmclerCd_ordrInfo_text').text($('#cstmclerCd').val());
}
});
<%--$('#recpntNm').val('<c:out value="${data.purchsr.dftDlvylc.recpntNm}"/>');--%>
<%--$('.recpntNm_ordrInfo_text').text('<c:out value="${data.purchsr.dftDlvylc.recpntNm}"/>');--%>
<%--$('#recpntMbtlnb').val('<c:out value="${data.purchsr.dftDlvylc.mbtlnb}"/>');--%>
<%--$('.recpntMbtlnb_ordrInfo_text').text('<c:out value="${data.purchsr.dftDlvylc.mbtlnb}"/>');--%>
}
} else {
if ($(this).is(':checked')) {
$(form).find('input[name="recpntNm"]').val($('#mbrNm').val());
$(form).find('input[name="recpntMbtlnb"]').val($('#mbtlnb').val());
} else {
$(form).find('input[name="recpntNm"]').val('');
$(form).find('input[name="recpntMbtlnb"]').val('');
}
}
});
let lastChecked = $('input[name="ordrTy"]:checked').val();
$('input[name="ordrTy"]').on('click', function (e) {
if ($(this).val() === lastChecked) {
e.preventDefault();
} else {
lastChecked = $(this).val();
fn_set_ordrty(); // 주문 유형별 제어
}
});
/* 여러곳 배송 > 배송지 추가 버튼 클릭 이벤트 */
$('#multiDlvylcAdd').on('click', function() {
fn_set_multi_dlvylc();
});
/* 여러곳 배송 > 배송지별 수량 클릭 이벤트 */
$(document).on('click', '.product-count__amount-btn', function() {
const tr = $(this).closest('tr');
const tbodyClass = $(this).closest('tbody').attr('class');
const goodsInnb = $(tr).find('.goodsInnb').val();
const goodsOptnInnb = $(tr).find('.goodsOptnInnb').val();
const trClass = tr.attr('class');
if (trClass && trClass.includes("ordrPrsnt")) {
/** ----------------------------------------- 사은품 수량 체크 ----------------------------------------- */
let qy_prsnt = $(tr).find('.product-count__amount-number').text();
let qyObject_prsnt = fn_update_product_count_prsnt(goodsOptnInnb);
let total_prsnt = 0;
let used_prsnt = 0;
let remain_prsnt = 0;
total_prsnt = parseInt(qyObject_prsnt.total);
used_prsnt = parseInt(qyObject_prsnt.used);
remain_prsnt = parseInt(qyObject_prsnt.remain);
if ($(this).hasClass("plus")) {
qy_prsnt = parseInt(qy_prsnt) + 1
used_prsnt = parseInt(used_prsnt) + 1
} else {
qy_prsnt = parseInt(qy_prsnt) - 1
used_prsnt = parseInt(used_prsnt) - 1
}
if (total_prsnt < used_prsnt) { // 최대 선택 수량 : total
return false;
}
if (qy_prsnt < 0) { // 최소 선택 수량 : 0
return false;
}
let prsnt = {
'goodsInnb': parseInt(goodsInnb),
'goodsOptnInnb': parseInt(goodsOptnInnb),
'qy': qy_prsnt
};
fn_set_multi_prsnt_qy_update(tbodyClass, prsnt); // 상품 수량 갱신
fn_set_multiordrdlcylc(); // 배송지별 상품 세팅
/** ----------------------------------------- 사은품 수량 체크 ----------------------------------------- */
} else {
let qy = $(tr).find('.product-count__amount-number').text();
let qyObject = fn_update_product_count(goodsOptnInnb);
let total = 0;
let used = 0;
let remain = 0;
total = parseInt(qyObject.total);
used = parseInt(qyObject.used);
remain = parseInt(qyObject.remain);
if ($(this).hasClass("plus")) {
qy = parseInt(qy) + 1
used = parseInt(used) + 1
} else {
qy = parseInt(qy) - 1
used = parseInt(used) - 1
}
if (total < used) { // 최대 선택 수량 : total
return false;
}
if (qy < 0) { // 최소 선택 수량 : 0
return false;
}
let goods = {
'goodsInnb': parseInt(goodsInnb),
'goodsOptnInnb': parseInt(goodsOptnInnb),
'qy': qy
};
let trgForm = $(this).closest('.multiOrdrInnerShipping').find('form');
trgForm.find('.dlvylcCouponList option:first').prop('selected', true).change(); // 수량 변경으로 인한 배송비 쿠폰 초기화
fn_set_multi_goods_qy_update(tbodyClass, goods); // 수량 갱신
fn_set_multiordrdlcylc(); // 배송지별 상품 세팅
fn_get_dlvylc_coupon_list_multi();
fn_get_setle_amt();
}
});
}
/* ********************************************************
* function
**********************************************************/
/**
* 기본배송지 최신화
*/
const fn_get_dftdlvylc = function() {
let data = {
'mbrInnb' : '<c:out value="${data.purchsr.mbrInnb}"/>',
'mbrDvCd' : '<c:out value="${data.purchsr.mbrDvCd}"/>'
}
$.ajax({
type: 'post',
contentType: 'application/json',
url: '<c:url value="/sopmal/ordr/selectDftDlvylc"/>',
data: JSON.stringify(data),
success: function (data) {
let parseJson = JSON.parse(data.resBody.result);
$('#recpntNm').val(parseJson.dftDlvylc.recpntNm);
$('#dlvylcAdresDvCd').val(parseJson.dftDlvylc.adresDv);
$('#dlvylcZip').val(parseJson.dftDlvylc.zip);
$('#dlvylcLnbAdres').val(parseJson.dftDlvylc.lnbAdres);
$('#dlvylcRnmAdres').val(parseJson.dftDlvylc.rnmAdres);
$('#dlvylcAdresDtl').val(parseJson.dftDlvylc.dtlAdres);
$('#recpntMbtlnb').val(parseJson.dftDlvylc.mbtlnb);
$('#dlvylcAreaCd').val(parseJson.dftDlvylc.dlvylcAreaCd);
$('#prefcd').val(parseJson.dftDlvylc.prefcd);
let adress = '(' + $('#dlvylcZip').val() + ')' + parseJson.dftDlvylc.adres + $('#dlvylcAdresDtl').val();
$('.recpntNm_ordrInfo_text').text($('#recpntNm').val());
$('.recpntNm_adress_text').text(adress);
$('.recpntMbtlnb_ordrInfo_text').text($('#recpntMbtlnb').val());
}
});
}
/* 여러곳 배송 > 배송지정보 > 배송지 쿠폰 목록 조회 */
const fn_get_dlvylc_coupon_list_multi = function() {
let dlvylcMulti = {};
dlvylcMulti['multiOrdrDlvylc'] = JSON.parse(localStorage.getItem('multiOrdrDlvylc'));
if (!fn_is_empty(dlvylcMulti)) {
$.ajax({
type: 'post',
contentType: 'application/json',
url: '<c:url value="/sopmal/ordr/selectDlvylcCouponListMulti"/>',
data: JSON.stringify(dlvylcMulti),
dataType: 'json',
async: false,
success: function (data) {
if (data.resBody != null) {
const result = JSON.parse(data.resBody.result);
// JSON 문자열을 실제 배열로 파싱
const resultArray = JSON.parse(data.resBody.result);
// 원본 객체 가져오기
let dlvylcMulti = JSON.parse(localStorage.getItem('multiOrdrDlvylc'));
let dlvyMessageIndex = 0;
// 배열인 경우 반복
resultArray.forEach((dlvylcResult, index) => {
if (!fn_is_empty(dlvylcResult.message)) {
let dlvyMessage = dlvylcResult.message;
dlvyMessageIndex = (index + 1);
if (index > 0) {
$('#dlvylcForm' + dlvyMessageIndex).find('.dlvyMultiAlertArea').html('<span style="color: #ff6b6b !important;">(' + dlvyMessage + ')</span>');
$('#dlvylcForm' + dlvyMessageIndex).find('#dlvylcCouponList' + dlvyMessageIndex).val('0').attr('selected', true).niceSelect('update');
} else {
$('#dlvylcForm').find('.dlvyMultiAlertArea').html('<span style="color: #ff6b6b !important;">(' + dlvyMessage + ')</span>');
$('#dlvylcForm').find('#dlvylcCouponList').val('0').attr('selected', true).niceSelect('update');
}
} else {
if (index > 0) {
$('#dlvylcForm' + dlvyMessageIndex).find('.dlvyMultiAlertArea').empty();
} else {
$('#dlvylcForm').find('.dlvyMultiAlertArea').empty();
}
}
const dlvylcCouponList = dlvylcResult.dlvylcCouponList;
if (!fn_is_empty(dlvylcCouponList)) {
fn_set_dlvylc_coupon_list_multi(dlvylcResult, index + 1);
}
// 배송지 쿠폰 스토리지 세팅
if (dlvylcMulti && dlvylcMulti.dlvylc && dlvylcMulti.dlvylc[index] && !fn_is_empty(dlvylcResult.dlvylcCouponList)) {
// Object.assign(dlvylcMulti.dlvylc[index], dlvylcResult);
dlvylcMulti.dlvylc[index].usedDlvylcCouponList = dlvylcResult.usedDlvylcCouponList;
dlvylcMulti.dlvylc[index].dlvylcCouponList = dlvylcResult.dlvylcCouponList;
dlvylcMulti.dlvylc[index].dlvylcDscntDtls = dlvylcResult.dlvylcDscntDtls;
}
localStorage.setItem('multiOrdrDlvylc', JSON.stringify(dlvylcMulti));
});
}
},
error: function (data) {
alert('<spring:message code="error.internal-server"/>');
}
});
}
}
/* 여러곳 배송 > 배송지정보 > 배송지 쿠폰 목록 세팅 */
const fn_set_dlvylc_coupon_list_multi = function(data, formIndex) {
if (!fn_is_empty(data)) {
let form = $('#dlvylcForm');
let select = $(form).find('#dlvylcCouponList');
if (formIndex > 1) {
form = $('#dlvylcForm' + formIndex);
select = $(form).find('#dlvylcCouponList' + formIndex);
}
const dlvylcCouponList = data.dlvylcCouponList;
if (!fn_is_empty(dlvylcCouponList)) {
const couponCnt = dlvylcCouponList.length;
let option = '<option value="0">선택</option>';
for (let i = 0; i < couponCnt; i++) {
const coupon = dlvylcCouponList[i];
option += '<option value="' + coupon.dwldCouponInnb +
'" coupon-innb="' + coupon.couponInnb +
'" dplct-dscnt-at="' + coupon.dplctDscntAt +
'" otr-coupon-smtm_use-at="' + coupon.otrCouponSmtmUseAt + '" ' + ('Y' == coupon.isUse ? 'selected' : '') + '/>';
option += ('Y' == coupon.otrCouponSmtmUseAt ? '' : '') + coupon.coupNm;
option += '</option>';
}
$(select).empty().append(option).niceSelect('update');
} else {
$(select).empty().append('<option value="0" selected>선택</option>').niceSelect('update');
}
if (!fn_is_empty(data.dlvyAmt)) {
$(form).find('.dlvyAmt').val(data.dlvyAmt);
}
}
}
/* 여러곳 배송 > 배송지별 상품목록 동기화 */
const fn_set_multiordrdlcylc = function() {
localStorage.removeItem('multiOrdrDlvylc');
const mbrDvCd = $('#mbrDvCd').val();
const mbrId = $('#mbrId').val();
const sopmalCd = $('#sopmalCd').val();
let multiOrdrDlvylc = {
dlvylc: []
};
const dlvylcDvCd = $('input[name="dlvylcDvCd"]:checked').val();
$('.multiOrdrInnerShipping').each(function (idx) {
let form = $(this).find('form');
let dftDlvyAmt = parseAmount($(form).find('input[name="dftDlvyAmt"]').val());
let dlvyAmt = parseAmount($(form).find('input[name="dlvyAmt"]').val());
let couponInnb = parseAmount($(form).find('input[name="couponInnb"]').val());
let dwldCouponInnb = parseAmount($(form).find('input[name="dwldCouponInnb"]').val());
let dplctDscntAt = $(form).find('input[name="dplctDscntAt"]').val();
let otrCouponSmtmUseAt = $(form).find('input[name="otrCouponSmtmUseAt"]').val();
let mngrFreeDlvyUseAt = $(form).find('input[name="mngrFreeDlvyUseAt"]').val();
let dlvylcZip = '';
let dlvylcAreaCd = '';
let prefcd = '';
let recpntNm = '';
let recpntMbtlnb = '';
let dlvylcAdresDvCd = '';
let dlvylcLnbAdres = '';
let dlvylcRnmAdres = '';
let dlvylcAdresDtl = '';
let dlvyMssageCn = '';
if ('Default' === dlvylcDvCd) {
if (idx < 1) { // 첫번째 배송지만
dlvylcZip = $(form).find('#dlvylcZip').val();
dlvylcAreaCd = $(form).find('#dlvylcAreaCd').val();
prefcd = $(form).find('#prefcd').val();
recpntNm = $(form).find('#recpntNm').val();
recpntMbtlnb = $(form).find('#recpntMbtlnb').val();
dlvylcAdresDvCd = $(form).find('#dlvylcAdresDvCd').val();
dlvylcLnbAdres = $(form).find('#dlvylcLnbAdres').val();
dlvylcRnmAdres = $(form).find('#dlvylcRnmAdres').val();
dlvylcAdresDtl = $(form).find('#dlvylcAdresDtl').val();
dlvyMssageCn = $(form).find('#dlvyMssageCn').val();
} else { // 나머지 배송지
dlvylcZip = $(form).find('input[name="dlvylcZip"]').val();
dlvylcAreaCd = $(form).find('#dlvylcAreaCd').val();
prefcd = $(form).find('#prefcd').val();
recpntNm = $(form).find('input[name="recpntNm"]').val();
recpntMbtlnb = $(form).find('input[name="recpntMbtlnb"]').val();
dlvylcAdresDvCd = $(form).find('input[name="dlvylcAdresDvCd"]').val();
dlvylcLnbAdres = $(form).find('input[name="dlvylcLnbAdres"]').val();
dlvylcRnmAdres = $(form).find('input[name="dlvylcRnmAdres"]').val();
dlvylcAdresDtl = $(form).find('input[name="dlvylcAdresDtl"]').val();
dlvyMssageCn = $(form).find('input[name="dlvyMssageCn"]').val();
}
} else {
dlvylcZip = $(form).find('input[name="dlvylcZip"]').val();
dlvylcAreaCd = $(form).find('#dlvylcAreaCd').val();
prefcd = $(form).find('#prefcd').val();
recpntNm = $(form).find('input[name="recpntNm"]').val();
recpntMbtlnb = $(form).find('input[name="recpntMbtlnb"]').val();
dlvylcAdresDvCd = $(form).find('input[name="dlvylcAdresDvCd"]').val();
dlvylcLnbAdres = $(form).find('input[name="dlvylcLnbAdres"]').val();
dlvylcRnmAdres = $(form).find('input[name="dlvylcRnmAdres"]').val();
dlvylcAdresDtl = $(form).find('input[name="dlvylcAdresDtl"]').val();
dlvyMssageCn = $(form).find('input[name="dlvyMssageCn"]').val();
}
let dlvylc = {
dftDlvyAmt: dftDlvyAmt,
dlvyAmt: dlvyAmt,
couponInnb: couponInnb,
dwldCouponInnb: dwldCouponInnb,
dplctDscntAt: dplctDscntAt,
otrCouponSmtmUseAt: otrCouponSmtmUseAt,
mngrFreeDlvyUseAt: mngrFreeDlvyUseAt,
dlvylcZip: dlvylcZip,
dlvylcAreaCd: dlvylcAreaCd,
prefcd: prefcd,
recpntNm: recpntNm,
recpntMbtlnb: recpntMbtlnb,
dlvylcAdresDvCd: dlvylcAdresDvCd,
dlvylcLnbAdres: dlvylcLnbAdres,
dlvylcRnmAdres: dlvylcRnmAdres,
dlvylcAdresDtl: dlvylcAdresDtl,
dlvyMssageCn: dlvyMssageCn,
goodsList: [],
prsntList: [],
};
$(this).find('tr.productRow').each(function () {
let goodsInnb = $(this).find('.goodsInnb').val();
let goodsOptnInnb = $(this).find('.productGoodsOptnInnb').val();
let qy = parseAmount($(this).find('.product-count__amount-number').text());
let dscntApplyAmt = parseAmount($(this).find('.product-dscntApplyAmt').text());
let dlvyGroupInnb = parseAmount($(this).find('.product-dlvyGroupInnb').val());
let slepric = parseAmount($(this).find('.product-slepric').val());
let subSlepric = parseAmount($(this).find('.product-slepric').val()) * qy;
let dscntAmt = parseAmount($(this).find('.product-dscntAmt').val());
let mbrInnb = parseAmount($(this).find('.product-mbrInnb').val());
let goods = {
goodsInnb: parseInt(goodsInnb),
goodsOptnInnb: parseInt(goodsOptnInnb),
qy: qy,
dscntApplyAmt: dscntApplyAmt,
dlvyGroupInnb: dlvyGroupInnb,
slepric: slepric,
subSlepric: subSlepric,
dscntAmt: dscntAmt,
mbrInnb: mbrInnb,
mbrDvCd: mbrDvCd,
sopmalCd: sopmalCd
};
if (qy > 0) {
dlvylc.goodsList.push(goods);
}
});
$(this).find('tr.productRow_prsnt').each(function () {
let goodsInnb = $(this).find('.goodsInnb').val();
let goodsOptnInnb = $(this).find('.productGoodsOptnInnb').val();
let qy = parseAmount($(this).find('.product-count__amount-number').text());
let evtInnb = parseAmount($(this).find('.productEvtInnb').text());
let isRcvPrsnt = $(this).find('.productIsRcvPrsnt').val();
// let mbrInnb = parseAmount($(this).find('.product-mbrInnb').val());
let prsnt = {
goodsInnb: parseInt(goodsInnb),
goodsOptnInnb: parseInt(goodsOptnInnb),
provdCnt: qy,
evtInnb: evtInnb,
isRcvPrsnt: isRcvPrsnt
// mbrInnb: mbrInnb,
// mbrDvCd: mbrDvCd,
// sopmalCd: sopmalCd
};
if (qy > 0) {
dlvylc.prsntList.push(prsnt);
}
});
multiOrdrDlvylc.dlvylc.push(dlvylc);
});
localStorage.setItem('multiOrdrDlvylc', JSON.stringify(multiOrdrDlvylc));
}
/**
* 여러곳 배송 > 배송지별 남은 수량 갱신
*/
const fn_update_product_remain = function() {
$('.multiOrdrInnerShipping').each(function (idx) {
let tbodyClass = $(this).closest('tbody').attr('class');
$(this).find('tr.productRow').each(function (idx2) {
let goodsInnb = $(this).find('.goodsInnb').val();
let goodsOptnInnb = $(this).find('.productGoodsOptnInnb').val();
let qy = $(this).find('.productQtyInput').val();
let qyObject = fn_update_product_count(goodsOptnInnb);
let goods = {
'goodsInnb': parseInt(goodsInnb),
'goodsOptnInnb': parseInt(goodsOptnInnb),
'qy': parseInt(qy)
};
fn_set_multi_goods_qy_update(tbodyClass, goods);
});
$(this).find('tr.productRow_prsnt').each(function (idx2) {
let goodsInnb = $(this).find('.goodsInnb').val();
let goodsOptnInnb = $(this).find('.productGoodsOptnInnb').val();
let qy = $(this).find('.productQtyInput').val();
let qyObject = fn_update_product_count_prsnt(goodsOptnInnb);
let prsnt = {
'goodsInnb': parseInt(goodsInnb),
'goodsOptnInnb': parseInt(goodsOptnInnb),
'qy': parseInt(qy)
};
fn_set_multi_prsnt_qy_update(tbodyClass, prsnt);
});
});
};
/**
* 여러곳 배송 > 배송지 삭제
* @param multiShippingId
*/
const fn_delete_multi_shipping = function(multiShippingId, btn) {
if (confirm("정말 삭제하시겠습니까?")) {
let trgForm = $('#' + multiShippingId).find('form');
trgForm.find('.dlvylcCouponList option:first').prop('selected', true).change(); // 수량 변경으로 인한 배송비 쿠폰 초기화
$('#' + multiShippingId).remove();
$(btn).closest('h3').remove();
fn_renumber_multi_shipping();
fn_update_product_remain(); // 배송지별 남은수량 갱신
fn_set_multiordrdlcylc();
fn_get_dlvylc_coupon_list_multi();
fn_get_setle_amt();
}
};
/**
* 여러곳 배송 > 총 상품 수량 계산
* @param multiGoodsOptnInnb
*/
const fn_update_product_count = function(multiGoodsOptnInnb) {
const total = parseAmount($('#goodsList .ordrGoods[data-product-id="'+ multiGoodsOptnInnb +'"]').find('.productQtyInput').val());
let used = 0;
let remain = 0;
$('.multiOrdrInnerShipping').each(function (idx) {
$(this).find('tr.productRow[data-product-id="'+ multiGoodsOptnInnb +'"]').each(function (idx2) {
let thisUseQy = parseAmount($(this).find('.product-count__amount-number').text());
used += thisUseQy;
});
});
remain = total - used;
let qyObject = {
'total' : total,
'used' : used,
'remain' : remain
};
return qyObject;
};
/**
* 여러곳 배송 > 총 상품 수량 계산
* @param multiGoodsOptnInnb
*/
const fn_update_product_count_prsnt = function(multiGoodsOptnInnb) {
const total = parseAmount($('#prsntList .ordrPrsnt[data-product-id="'+ multiGoodsOptnInnb +'"]').find('.productQtyInput').val());
let used = 0;
let remain = 0;
$('.multiOrdrInnerShipping').each(function (idx) {
$(this).find('tr.productRow_prsnt[data-product-id="'+ multiGoodsOptnInnb +'"]').each(function (idx2) {
let thisUseQy = parseAmount($(this).find('.product-count__amount-number').text());
used += thisUseQy;
});
});
remain = total - used;
let qyObject = {
'total' : total,
'used' : used,
'remain' : remain
};
return qyObject;
};
/**
* 여러곳 배송 > 배송지 번호 재정렬 함수
*/
const fn_renumber_multi_shipping = function() {
// 남은 배송지 재정렬
$('.multiOrdr .multiOrdrInnerShipping').each(function(index) {
const newIndex = index + 1;
if (newIndex > 1) {
const newDivId = 'multiShippingId' + newIndex;
// 배송지 ID 변경
$(this).attr('id', newDivId);
// 제목 텍스트 수정
$(this).prev('h3').html('배송지 정보 ' + newIndex + ' <button class="btn sm outline" type="button" onclick="fn_delete_multi_shipping(\'' + newDivId + '\', this)">삭제 -</button>');
// 상품 컨테이너 클래스 정리 및 재설정
$(this).find('[class^="multiOrdrGoodsList"]').removeClass(function (i, className) {
return (className.match(/multiOrdrGoodsList\d+/g) || []).join(' ');
}).addClass('multiOrdrGoodsList' + newIndex);
$(this).find('[id]').each(function () {
const oldId = $(this).attr('id');
const newId = oldId.replace(/(\D+)\d+$/, '$1' + newIndex);
$(this).attr('id', newId);
});
$(this).find('[name]').each(function () {
const oldName = $(this).attr('name');
const newName = oldName.replace(/(\D+)\d+$/, '$1' + newIndex);
$(this).attr('name', newName);
});
}
});
};
/**
* 여러곳 배송 > 수량 변경 text 업데이트
* @param multiGoodsOptnInnb
*/
const fn_set_multi_goods_qy_update = function(tbodyClass, goods) {
const tr = $('.' + tbodyClass).find('.ordrGoods[data-product-id="' + goods.goodsOptnInnb + '"]');
tr.find('.product-count__amount-number').text(goods.qy);
let product_subCnsmrpric = parseAmount($('#goodsList .ordrGoods[data-product-id="'+ goods.goodsOptnInnb +'"]').find('.product-subCnsmrpric').text());
let product_dscntAmt = parseAmount($('#goodsList .ordrGoods[data-product-id="'+ goods.goodsOptnInnb +'"]').find('.product-dscntAmt').val());
let product_dscntAmt_text = parseAmount($('#goodsList .ordrGoods[data-product-id="'+ goods.goodsOptnInnb +'"]').find('.product-dscntAmt-text').text());
let product_dscntApplyAmt = parseAmount($('#goodsList .ordrGoods[data-product-id="'+ goods.goodsOptnInnb +'"]').find('.product-dscntApplyAmt').text());
let subCnsmrpric = 0;
let dscntAmt = 0;
let dscntAmt_text = 0;
let dscntApplyAmt = 0;
let qyObject = fn_update_product_count(goods.goodsOptnInnb);
const total = qyObject.total;
$('.multiOrdrInnerShipping').each(function (idx) {
$(this).find('tr.productRow[data-product-id="'+ goods.goodsOptnInnb +'"]').each(function (idx2) {
// 남은 수량 최신화
$(this).find('.product-remain-qy').text(qyObject.remain);
$(this).find('.product-total-qy').text(qyObject.total);
let used = parseAmount($(this).find('.product-count__amount-number').text());
subCnsmrpric = product_subCnsmrpric * used / total;
dscntAmt = product_dscntAmt * used / total;
dscntAmt_text = product_dscntAmt_text * used / total;
dscntApplyAmt = product_dscntApplyAmt * used / total;
// 히든값 최신화
$(this).find('.product-dscntAmt').text(Math.floor(dscntAmt));
$(this).find('.product-dscntAmt').val(Math.floor(dscntAmt));
// 화면에 보이는 금액 최신화
$(this).find('.product-subCnsmrpric').text(Math.floor(subCnsmrpric).toLocaleString());
$(this).find('.product-dscntAmt-text').text(Math.floor(dscntAmt_text).toLocaleString());
$(this).find('.product-dscntApplyAmt').text(Math.floor(dscntApplyAmt).toLocaleString());
});
});
};
/**
* 여러곳 배송 > 사은품 수량 변경 text 업데이트
* @param multiGoodsOptnInnb
*/
const fn_set_multi_prsnt_qy_update = function(tbodyClass, goods) {
const tr = $('.' + tbodyClass).find('.ordrPrsnt[data-product-id="' + goods.goodsOptnInnb + '"]');
tr.find('.product-count__amount-number').text(goods.qy);
let qyObject = fn_update_product_count_prsnt(goods.goodsOptnInnb);
$('.multiOrdrInnerShipping').each(function (idx) {
$(this).find('tr.productRow_prsnt[data-product-id="'+ goods.goodsOptnInnb +'"]').each(function (idx2) {
// 남은 수량 최신화
$(this).find('.product-remain-qy').text(qyObject.remain);
$(this).find('.product-total-qy').text(qyObject.total);
});
});
};
/**
* 여러곳 배송 > 배송지 추가
* @param data multiDlvylcAdd
*/
const fn_set_multi_dlvylc = function() {
let count = 0;
count = $('.multiOrdr .multiOrdrInnerShipping').length + 1;
let html = '';
html += '<h3 class="orderInfo__sectionTitle">배송지 정보 ' + count + ' <button class="btn sm outline" type="button" onclick="fn_delete_multi_shipping(\'multiShippingId' + count + '\', this)">삭제 -</button></h3>';
html += '<div class="order-payment__recipient-wrapper multiOrdrInnerShipping" id="multiShippingId' + count + '">';
html += ' <div class="order-payment__multiDelivery-address address-hide">';
html += ' <form id="dlvylcForm' + count + '">';
html += ' <input type="hidden" name="dftDlvyAmt" >';
html += ' <input type="hidden" name="dlvyAmt" >';
html += ' <input type="hidden" name="couponInnb">';
html += ' <input type="hidden" name="dwldCouponInnb" value= "0">';
html += ' <input type="hidden" name="dplctDscntAt">';
html += ' <input type="hidden" name="otrCouponSmtmUseAt">';
html += ' <input type="hidden" name="mngrFreeDlvyUseAt" value="N">';
html += ' <div class="table-wrapper orderInfo__table">';
html += ' <table class="table">';
html += ' <caption>배송지 정보</caption>';
html += ' <!-- 각 열 width 설정 -->';
html += ' <colgroup>';
html += ' <col style="width: 180px;">';
html += ' <col style="width: auto;">';
html += ' </colgroup>';
html += ' <tbody>';
html += ' <tr class="" >';
html += ' <th><span class="orderInfo__title">받는분</span></th>';
html += ' <td><input type="text" name="recpntNm" class="new rqrd input-text" title="받는분 이름" placeholder="받는분 이름을 입력하세요.">';
html += ' <a href="javascript:void(0);" id="btnDlvylcMngr'+ count +'" class="btn md outline orderInfo__editBtn btnDlvylcMngr" >배송지 관리</a>';
html += ' </td>';
html += ' </tr>';
html += ' <tr class="" >';
html += ' <th><span class="orderInfo__title">주소</span></th>';
html += ' <td>';
html += ' <div class="inputAddress">';
html += ' <div class="inputAddress__postalCode">';
html += ' <input type="text" id="postcode' + count + '" name="dlvylcZip" class="new input-text rqrd" title="우편번호" placeholder="" readonly>';
html += ' <button type="button" id="btnPost1' + count + '" onclick="fn_select_postcode(fn_set_postcode, this); return false;" class="btn md theme outline">우편번호 찾기</button>';
html += ' </div>';
html += ' <input type="text" name="dlvylcAdres" class="new rqrd input-text full" title="주소" placeholder="" readonly>';
html += ' <input type="text" name="dlvylcAdresDtl" class="new rqrd input-text full" title="나머지 주소" placeholder="나머지 주소를 입력해 주세요.">';
html += ' <input type="hidden" name="dlvylcAdresDvCd" class="new">';
html += ' <input type="hidden" name="dlvylcLnbAdres" class="new">';
html += ' <input type="hidden" name="dlvylcRnmAdres" class="new">';
html += ' <input type="hidden" name="dlvylcAreaCd" class="new">';
html += ' <input type="hidden" name="prefcd" class="new">';
html += ' </div>';
html += ' </td>';
html += ' </tr>';
html += ' <tr class="">';
html += ' <th> <span class="orderInfo__title">휴대폰번호</span></th>';
html += ' <td>';
html += ' <input type="text" name="recpntMbtlnb" oninput="fn_set_event(this, \'keyup\', fn_fmt_telno)" maxlength="13" class="new rqrd input-text number" title="휴대폰번호" placeholder="휴대폰번호 입력 (’-’ 없이)">';
html += ' </td>';
html += ' </tr>';
html += ' <tr class="">';
html += ' <th> <span class="orderInfo__title">개인통관번호</span></th>';
html += ' <td>';
html += ' <input type="text" name="cstmclerCd" maxlength="13" class="m-input" title="개인통관번호" placeholder="P로 시작하는 13자리 부호를 입력하세요">';
html += ' </td>';
html += ' </tr>';
html += ' <!-- 신규 배송지 선택 시 End -->';
html += ' <tr>';
html += ' <th><span class="orderInfo__title">배송요청사항</span></th>';
html += ' <td>';
html += ' <div class="orderInfo__deliveryRequest">';
html += ' <div class="select-box">';
html += ' <select class="deliveryRequestSelect" title="배송요청사항">';
html += ' <option value="" selected>배송 시 요청 사항을 선택해주세요</option>';
html += ' <option value="배송 전 연락 주세요">배송 전 연락 주세요.</option>';
html += ' <option value="부재 시 문 앞에 놓아 주세요">부재 시 문 앞에 놓아 주세요</option>';
html += ' <option value="부재 시 경비실에 맡겨 주세요.">부재 시 경비실에 맡겨 주세요.</option>';
html += ' <option value="write">직접입력</option>';
html += ' </select>';
html += ' </div>';
html += ' <div class="inputLimit deliveryRequestDetail" style="display:none;">';
html += ' <input type="text" name="dlvyMssageCn" id="dlvyMssageCn' + count + '" maxlength="50" class="input-text dft" title="배송요청사항" placeholder="50자 이내로 입력해 주세요.">';
html += ' <span class="inputLimit__text">';
html += ' <span class="inputLimit__current">0</span>';
html += ' <span class="inputLimit__divider">/</span>';
html += ' <span class="inputLimit__total">50</span>';
html += ' </span>';
html += ' </div>';
html += ' </div>';
html += ' </td>';
html += ' </tr>';
html += ' <tr>';
html += ' <th><span class="orderInfo__title">배송비쿠폰</span></th>';
html += ' <td>';
html += ' <div class="cartItem__footer">';
html += ' <div class="select-box">';
html += ' <select name="dlvylcCouponList' + count + '" id="dlvylcCouponList' + count + '" class="lg dlvylcCouponList" title="배송지 쿠폰할인">';
html += ' <option value="" selected>선택</option>';
html += ' </select>';
html += ' </div>';
html += ' </div>';
html += ' <div class="dlvyMultiAlertArea">';
html += ' </div>';
html += ' </td>';
html += ' </tr>';
html += ' </tbody>';
html += ' </table>';
html += ' </div>';
html += ' </form>';
html += ' </div>';
html += ' <div class="cartOrder__list">';
html += ' <div class="table-wrapper">';
html += ' <table class="table vertical">';
html += ' <caption>해당 테이블에 대한 설명</caption>';
html += ' <!-- 각 열 width 설정 -->';
html += ' <colgroup>';
html += ' <col style="width: 400px;">';
html += ' <col style="width: 120px">';
html += ' <col style="width: 120px">';
html += ' <col style="width: auto;">';
html += ' </colgroup>';
html += ' <thead>';
html += ' <tr>';
html += ' <th>상품명</th>';
html += ' <th>주문수량</th>';
html += ' <th>할인금액</th>';
html += ' <th>상품금액</th>';
html += ' </tr>';
html += ' </thead>';
html += ' <tbody class="multiOrdrGoodsList' + count + '">';
html += ' </tbody>';
html += ' </table>';
html += ' </div>';
html += ' </div>';
html += '</div>';
$('#lastDlvylcArea').before(html);
$('#multiShippingId' + count).find('select').niceSelect();
$('#goodsList .ordrGoods').each(function () {
let cloneGoods = $(this).clone();
cloneGoods.addClass('productRow');
cloneGoods.find('td.qyTd').html(`
<div class="product-count__amount-counter">
<button class="product-count__amount-btn minus">
<span class="visually-hidden">감소</span>
</button>
<span class="product-count__amount-number">0</span>
<button class="product-count__amount-btn plus">
<span class="visually-hidden">추가</span>
</button>
</div>
<div>
( <span class="red-4 product-remain-qy">0</span> / <span class="gray-6 product-total-qy">0</span> )
</div>
`);
$('.multiOrdrGoodsList' + count).append(cloneGoods);
});
$('#prsntList .ordrPrsnt').each(function () {
let clonePrsnt = $(this).clone();
clonePrsnt.addClass('productRow_prsnt');
clonePrsnt.find('td.removeTd').remove();
clonePrsnt.find('td.qyTd').html(`
<div class="product-count__amount-counter">
<button class="product-count__amount-btn minus">
<span class="visually-hidden">감소</span>
</button>
<span class="product-count__amount-number">0</span>
<button class="product-count__amount-btn plus">
<span class="visually-hidden">추가</span>
</button>
</div>
<div>
( <span class="red-4 product-remain-qy">0</span> / <span class="gray-6 product-total-qy">0</span> )
</div>
`);
$('.multiOrdrGoodsList' + count).append(clonePrsnt);
});
fn_update_product_remain();
fn_set_multiordrdlcylc();
fn_get_dlvylc_coupon_list_multi();
}
/**
* 여러곳 배송 > 주문 유형별 영역 제어
* @param data
*/
const fn_set_ordrty = function () {
let ordrTyValue = $('input[name="ordrTy"]:checked').val();
const dlvylcDvCd = $('input[name="dlvylcDvCd"]:checked').val();
if ('01' === ordrTyValue || '04' === ordrTyValue) { // 일분 주문, 선물하기
$('.dftOrdr').show();
$('.multiOrdr').hide();
$('.multiFrstDlvylc #dlvylcForm').appendTo('.dftOrdr');
$('.multiOrdrGoodsList1').empty();
$('.multiOrdrInnerShipping').each(function (idx) {
if (idx > 0) {
$(this).remove();
}
});
$('.multiOrdr h3').each(function (idx) {
if (idx > 0) {
$(this).remove();
}
});
localStorage.removeItem('multiOrdrDlvylc');
fn_get_dlvylc_coupon_list();
fn_get_setle_amt(); // 결제예정금액 조회
} else if ('05' === ordrTyValue) { // 여러곳 배송
$('.dftOrdr').hide();
$('.multiOrdr').show();
$('#dlvylcForm').appendTo('.multiFrstDlvylc');
$('.multiOrdrGoodsList1').empty();
$('#goodsList .ordrGoods').each(function () {
let goodsQy = 0;
// goodsQy = $(this).find('.productQtyInput').val(); // (2025-06-05) CJH : 수량이 많아질 경우 분배하기 어려워서 기본 1세팅으로 수정.
goodsQy = 1;
let cloneGoods = $(this).clone();
cloneGoods.addClass('productRow');
let multiGoodsOptnInnb = $(this).find('.productGoodsOptnInnb').val();
let multiGoodsInnb = $(this).find('.goodsInnb').val();
cloneGoods.find('td.qyTd').html(`
<div class="product-count__amount-counter">
<button class="product-count__amount-btn minus">
<span class="visually-hidden">감소</span>
</button>
<span class="product-count__amount-number">0</span>
<button class="product-count__amount-btn plus">
<span class="visually-hidden">추가</span>
</button>
</div>
<div>
( <span class="red-4 product-remain-qy">0</span> / <span class="gray-6 product-total-qy">0</span> )
</div>
`);
$('.multiOrdrGoodsList1').append(cloneGoods);
let goods = {
'goodsInnb': parseInt(multiGoodsInnb),
'goodsOptnInnb': parseInt(multiGoodsOptnInnb),
'qy': parseInt(goodsQy)
};
fn_set_multi_goods_qy_update('multiOrdrGoodsList1', goods); // 남은 수량 갱신
});
$('#prsntList .ordrPrsnt').each(function () {
let goodsQy = 0;
// goodsQy = $(this).find('.productQtyInput').val(); // (2025-06-05) CJH : 수량이 많아질 경우 분배하기 어려워서 기본 1세팅으로 수정.
goodsQy = 1;
let clonePrsnt = $(this).clone();
clonePrsnt.addClass('productRow_prsnt');
let multiGoodsOptnInnb = $(this).find('.productGoodsOptnInnb').val();
let multiGoodsInnb = $(this).find('.goodsInnb').val();
clonePrsnt.find('td.removeTd').remove();
clonePrsnt.find('td.qyTd').html(`
<div class="product-count__amount-counter">
<button class="product-count__amount-btn minus">
<span class="visually-hidden">감소</span>
</button>
<span class="product-count__amount-number">0</span>
<button class="product-count__amount-btn plus">
<span class="visually-hidden">추가</span>
</button>
</div>
<div>
( <span class="red-4 product-remain-qy">0</span> / <span class="gray-6 product-total-qy">0</span> )
</div>
`);
$('.multiOrdrGoodsList1').append(clonePrsnt);
let prsnt = {
'goodsInnb': parseInt(multiGoodsInnb),
'goodsOptnInnb': parseInt(multiGoodsOptnInnb),
'qy': parseInt(goodsQy)
};
fn_set_multi_prsnt_qy_update('multiOrdrGoodsList1', prsnt); // 남은 수량 갱신
});
fn_set_multiordrdlcylc(); // 배송지별 상품객체 세팅
fn_get_dlvylc_coupon_list_multi();
fn_get_setle_amt(); // 결제예정금액 조회
}
if ('04' === ordrTyValue) { // 선물하기
$('#dlvylcNew').click();
$('input[name="dlvylcDvCd"]').prop('disabled', true);
$('.presentArea').hide();
$('.presentArea').find('input').prop('disabled', true);
$('.cstmclerArea').hide();
$('.cstmclerArea').find('input').prop('disabled', true);
$('.presentShowArea').show();
$('.presentShowArea').find('input').prop('disabled', false);
$('.order-method-normal__btn-container').find('.order-method-normal__btn:not(.gift_pay)').hide(); // 결제 유형 제어
$('#pg03').click();
} else {
$('.order-method-normal__btn-container').find('.order-method-normal__btn').show(); // 결제 유형 제어
if ('05' === ordrTyValue) {
$('.order-method-normal__btn-container').find('.not_multi_pay').hide(); // 결제 유형 제어
}
$('input[name="dlvylcDvCd"]').prop('disabled', false);
if (dlvylcDvCd === 'New') {
$('.presentArea').show();
$('.presentArea').find('input').prop('disabled', false);
$('.cstmclerArea').show();
$('.cstmclerArea').find('input').prop('disabled', false);
$('.presentShowArea').hide();
$('.presentShowArea').find('input').prop('disabled', true);
}
const isDftDlvylc = $('#isDftDlvylc').val();
if ('N' === isDftDlvylc) {
$('input[name="dlvylcDvCd"][value="New"]').trigger('click');
$('input[name="dlvylcDvCd"][value="Default"]').prop('disabled', true);
}
$('#pg03').click();
}
}
/* 배송지정보 > 신규 배송지 정보 세팅 */
const fn_set_dlvylc = function(data, formId) {
// const form = $('#dlvylcForm');
// $(form).find('input[name="recpntNm"]').val(data.recpntNm);
// let mbtlnb = fn_format_mbtlnb(data.mbtlnb);
//
// $(form).find('input[name="recpntMbtlnb"]').val(mbtlnb);
// $(form).find('input[name="dlvylcZip"]').val(data.postcode);
// $(form).find('input[name="dlvylcAdresDvCd"]').val(data.addressType);
// $(form).find('input[name="dlvylcLnbAdres"]').val(data.jibunAddress);
// $(form).find('input[name="dlvylcRnmAdres"]').val(data.roadAddress);
// $(form).find('input[name="dlvylcAdresDtl"]').val(data.dtlAdres);
// $(form).find('input[name="dlvylcAdres"]').val('01' === $(form).find('input[name="dlvylcAdresDvCd"]').val() ? $(form).find('input[name="dlvylcRnmAdres"]').val() : $(form).find('input[name="dlvylcLnbAdres"]').val());
if (!fn_is_empty(formId)) {
const form = $('#' + formId);
if (!fn_is_empty(data)) {
$(form).find('input[name="recpntNm"]').val(data.recpntNm);
let mbtlnb = fn_format_mbtlnb(data.mbtlnb);
$(form).find('input[name="recpntMbtlnb"]').val(mbtlnb);
$(form).find('input[name="dlvylcZip"]').val(data.postcode);
$(form).find('input[name="dlvylcAreaCd"]').val(data.dlvylcAreaCd);
$(form).find('input[name="prefcd"]').val(data.prefcd);
$(form).find('input[name="cstmclerCd"]').val(data.cstmclerCd);
$(form).find('input[name="dlvylcAdresDvCd"]').val(data.addressType);
$(form).find('input[name="dlvylcLnbAdres"]').val(data.jibunAddress);
$(form).find('input[name="dlvylcRnmAdres"]').val(data.roadAddress);
$(form).find('input[name="dlvylcAdresDtl"]').val(data.dtlAdres);
$(form).find('input[name="dlvylcAdres"]').val('01' === $(form).find('input[name="dlvylcAdresDvCd"]').val() ? $(form).find('input[name="dlvylcRnmAdres"]').val() : $(form).find('input[name="dlvylcLnbAdres"]').val());
let dlvylcAreaCd = $(form).find('input[name="dlvylcAreaCd"]').val();
if('JP' === dlvylcAreaCd){
$('.cstmclerArea').hide();
$('.cstmclerArea').find('input').prop('disabled', true);
} else {
$('.cstmclerArea').show();
$('.cstmclerArea').find('input').prop('disabled', false);
}
// 배송지 정보 세팅 이후 결제예정금액 재계산
fn_get_setle_amt();
}
}
}
/* 배송지정보 > 배송지 쿠폰 목록 조회 */
const fn_get_dlvylc_coupon_list = function() {
let goodsList = localStorage.getItem('goodsList');
if (!fn_is_empty(goodsList)) {
let formData = fn_get_form_obj('dlvylcForm');
formData['goodsList'] = JSON.parse(goodsList);
$.ajax({
type: 'post',
contentType: 'application/json',
url: '<c:url value="/sopmal/ordr/selectDlvylcCouponList"/>',
data: JSON.stringify(formData),
dataType: 'json',
async: false,
success: function (data) {
if (data.resBody != null) {
const result = JSON.parse(data.resBody.result);
if (!fn_is_empty(result.message)) {
alert(result.message);
$('#dlvylcForm').find('#dlvylcCouponList').val('0').attr('selected', true).niceSelect('update');
return false;
}
const dlvylcCouponList = result.dlvylcCouponList;
if (!fn_is_empty(dlvylcCouponList)) {
fn_set_dlvylc_coupon_list(result);
localStorage.setItem('dlvylc', JSON.stringify(result));
}
}
},
error: function (data) {
alert('<spring:message code="error.internal-server"/>');
}
});
}
}
/* 배송지정보 > 배송지 쿠폰 목록 세팅 */
const fn_set_dlvylc_coupon_list = function(data) {
if (!fn_is_empty(data)) {
const form = $('#dlvylcForm');
const select = $(form).find('#dlvylcCouponList');
const dlvylcCouponList = data.dlvylcCouponList;
if (!fn_is_empty(dlvylcCouponList)) {
const couponCnt = dlvylcCouponList.length;
let option = '<option value="0">선택</option>';
for (let i = 0; i < couponCnt; i++) {
const coupon = dlvylcCouponList[i];
option += '<option value="' + coupon.dwldCouponInnb +
'" coupon-innb="' + coupon.couponInnb +
'" dplct-dscnt-at="' + coupon.dplctDscntAt +
'" otr-coupon-smtm_use-at="' + coupon.otrCouponSmtmUseAt + '" ' + ('Y' == coupon.isUse ? 'selected' : '') + '/>';
option += ('Y' == coupon.otrCouponSmtmUseAt ? '' : '') + coupon.coupNm;
option += '</option>';
}
$(select).empty().append(option).niceSelect('update');
} else {
$(select).empty().append('<option value="0" selected>선택</option>').niceSelect('update');
}
if (!fn_is_empty(data.dlvyAmt)) {
$(form).find('.dlvyAmt').val(data.dlvyAmt);
}
}
}
/* 배송지정보 > 배송지 정보 조회 */
const fn_get_dlvylc_data = function() {
const dlvylcDvCd = $('input[name="dlvylcDvCd"]:checked').val();
let data = {};
if ('Default' === dlvylcDvCd) {
const form = $('#dlvylcForm');
$(form).find('.dft').each(function() {
const id = $(this).attr('id');
data[id] = $(this).val();
});
} else {
data = fn_get_form_obj('dlvylcForm');
}
return data;
}
/* 주문 상품 > 상품목록 조회 */
const fn_get_goods_list = function(param, obj) {
let setle = {};
setle['enuri'] = JSON.parse(localStorage.getItem('enuri'));
let requestData = Object.assign({}, param, setle);
$.ajax({
type: 'post',
contentType: 'application/json',
url: '<c:url value="/sopmal/ordr/selectOrderGoodsList"/>',
data: JSON.stringify(param),
// data: JSON.stringify(requestData),
dataType: 'json',
async: false,
success: function (data) {
if (data.resBody != null) {
const result = JSON.parse(data.resBody.result);
if (!fn_is_empty(result.message)) {
alert(result.message);
if (!fn_is_empty(obj)) {
$(obj).val('0').attr('selected', true).niceSelect('update');
}
return false;
}
localStorage.setItem('goodsList', JSON.stringify(result.goodsList));
fn_set_goods_list(result.goodsList);
fn_set_prsnt_list(result.prsnt);
fn_get_dlvylc_coupon_list();
}
},
error: function (data) {
alert('<spring:message code="error.internal-server"/>');
}
});
}
/* 주문 상품 > 상품목록 세팅 */
const fn_set_goods_list = function(data) {
const tbody = $('#goodsList');
const sopmalCd = $('#sopmalCd').val();
const cdnurl = $('#cdnurl').val(); // 이미지 주소
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(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>';
}
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' + (goods.subCnsmrpric == goods.dscntApplyAmt ? ' visually-hidden' : '') + '"><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>';
}
}
} else {
tr += '<tr><td colSpan="100%"><spring:message code="common.nodata"/></td></tr>';
}
$(tbody).empty().append(tr);
$(tbody).closest('table').find('.select-box select').niceSelect();
}
/* 주문 상품 > 사은품 목록 세팅 */
const fn_set_prsnt_list = function(data) {
if (!fn_is_empty(data)) {
const tbody = $('#prsntList');
const keys = Object.keys(data);
const cdnurl = $('#cdnurl').val(); // 이미지 주소
let tr = '';
for (let j = 0; j < keys.length; j++) {
const key = keys[j];
const prsntList = data[key];
for (let i = 0; i < prsntList.length; i++) {
const prsnt = prsntList[i];
tr += '<tr class="prsnt_' + key + ' ordrPrsnt" data-product-id="' + fn_nvl(prsnt.goodsOptnInnb, '') + '">';
tr += ' <td>';
tr += ' <div class="cartItem">';
tr += ' <div class="cartItem__image">';
tr += ' <a href=""><img src="' + cdnurl + prsnt.goodsImgCours + '" onerror="this.src=\'/pc/images/image_placeholder.png\'" alt="' + prsnt.goodsNm + '"/>"></a>';
tr += ' </div>';
tr += ' <div class="cartItem__productInfo">';
tr += ' <a href="javascript:void(0);" class="cartItem__productTitle">' + prsnt.goodsNm + '</a>';
tr += ' </div>';
tr += ' </div>';
tr += ' <input type="hidden" class="goodsInnb" value="' + fn_nvl(prsnt.goodsInnb, '') + '"/>';
tr += ' <input type="hidden" class="goodsOptnInnb productGoodsOptnInnb" value="' + fn_nvl(prsnt.goodsOptnInnb, '') + '"/>';
tr += ' <input type="hidden" class="goodsNm" value="' + fn_nvl(prsnt.goodsNm, '') + '"/>';
tr += ' <input type="hidden" class="goodsImgCours" value="' + fn_nvl(prsnt.goodsImgCours, '') + '"/>';
tr += ' <input type="hidden" class="evtInnb productEvtInnb" value="' + fn_nvl(prsnt.evtInnb, '') + '"/>';
tr += ' <input type="hidden" class="provdCnt productQtyInput" value="' + fn_nvl(prsnt.provdCnt, '') + '"/>';
tr += ' <input type="hidden" class="isRcvPrsnt productIsRcvPrsnt" value="Y"/>';
tr += ' </td>';
tr += ' <td class="qyTd"><span>' + (prsnt.provdCnt).toLocaleString() + '</span></td>';
if (i === 0) {
tr += ' <td rowspan="' + prsntList.length + '" class="removeTd">';
tr += ' <div class="custom-radio-container">';
tr += ' <div class="custom-radio">';
tr += ' <input type="radio" name="isRcvPrsnt' + prsnt.evtInnb + '" id="Y' + prsnt.evtInnb + '" class="rcvPrsnt" value="Y" checked>';
tr += ' <label for="Y' + prsnt.evtInnb + '">수령</label>';
tr += ' </div>';
tr += ' <div class="custom-radio">';
tr += ' <input type="radio" name="isRcvPrsnt' + prsnt.evtInnb + '" id="N' + prsnt.evtInnb + '" value="N" class="rcvPrsnt">';
tr += ' <label for="N' + prsnt.evtInnb + '">미수령</label>';
tr += ' </div>';
tr += ' </div>';
tr += ' </td>';
}
tr += '</tr>';
}
}
$(tbody).empty().append(tr);
$(tbody).closest('table').find('.select-box select').niceSelect();
/* 수령여부 라디오 선택 이벤트 */
$(tbody).find('.rcvPrsnt').on('click', function () {
const evtInnb = $(this).closest('tr').find('.evtInnb').val();// $(this).attr('evtInnb')
const isRcvPrsnt = $(this).val();
$(this).closest('table').find('.prsnt_' + evtInnb).each(function() {
$(this).find('.isRcvPrsnt').val(isRcvPrsnt);
});
$('.multiOrdrInnerShipping').each(function() {
$(this).find('tr.productRow_prsnt').each(function (idx2) {
$(this).find('.productIsRcvPrsnt').val(isRcvPrsnt);
if (isRcvPrsnt === 'N') {
$(this).find('.product-count__amount-btn').prop('disabled', true);
} else {
$(this).find('.product-count__amount-btn').prop('disabled', false);
}
});
});
});
} else {
$('#prsnt').hide();
}
}
/* 사은품 데이타 세팅 */
const fn_get_prsnt_data = function(goodsInnb) {
const rows = $('#prsntList').find('[class*=prsnt_]');
let prsnts = [];
$(rows).each(function() {
const goodsInnb = $(this).find('.goodsInnb').val();
const goodsOptnInnb = $(this).find('.goodsOptnInnb').val();
const goodsNm = $(this).find('.goodsNm').val();
const goodsImgCours = $(this).find('.goodsImgCours').val();
const evtInnb = $(this).find('.evtInnb').val();
const provdCnt = $(this).find('.provdCnt').val();
const isRcvPrsnt = $(this).find('.isRcvPrsnt').val();
let prsnt = {
'goodsInnb':Number(goodsInnb),
'goodsOptnInnb':Number(goodsOptnInnb),
'goodsNm':goodsNm,
'goodsImgCours':goodsImgCours,
'evtInnb':Number(evtInnb),
'provdCnt':Number(provdCnt),
'isRcvPrsnt':isRcvPrsnt
}
prsnts.push(prsnt);
});
if (!fn_is_empty(goodsInnb)) {
return prsnts.filter(data => data['goodsInnb'] === goodsInnb)[0];
}
return prsnts;
}
/* 할인 정보 > 장바구니 쿠폰 목록 조회 */
const fn_get_cart_coupon_list = function() {
let formData = fn_get_form_obj('enuriForm');
formData.setleAmt = String(Number(formData.setleAmt) - Number(formData.dlvyAmt));
$.ajax({
type: 'post',
contentType: 'application/json',
url: '<c:url value="/sopmal/ordr/selectCartCouponList"/>',
data: JSON.stringify(formData),
dataType: 'json',
async: false,
success: function (data) {
if (data.resBody != null) {
const result = JSON.parse(data.resBody.result);
if (!fn_is_empty(result)) {
if (!fn_is_empty(result.message)) {
alert(result.message);
return false;
}
fn_set_cart_coupon_list(result);
if (!fn_is_empty(result.dscntAmt > 0)) {
localStorage.setItem('cartCoupon', JSON.stringify(result));
fn_set_enuri();
}
}
}
},
error: function (data) {
alert('<spring:message code="error.internal-server"/>');
}
});
}
/* 할인 정보 > 장바구니 쿠폰 목록 세팅 */
const fn_set_cart_coupon_list = function(data) {
if (!fn_is_empty(data)) {
const select = $('#cartCouponList');
const cartCouponList = data.cartCouponList;
if (!fn_is_empty(cartCouponList)) {
let option = '<option value="0">선택</option>';
for (let i = 0; i < cartCouponList.length; i++) {
const coupon = cartCouponList[i];
option += '<option value="' + coupon.dwldCouponInnb +
'" coupon-innb="' + coupon.couponInnb +
'" dplct-dscnt-at="' + coupon.dplctDscntAt +
'" otr-coupon-smtm_use-at="' + coupon.otrCouponSmtmUseAt + '" ' + ('Y' == coupon.isUse ? 'selected' : '') + '/>';
option += ('Y' === coupon.otrCouponSmtmUseAt ? '' : '') + coupon.coupNm;
option += '</option>';
}
$(select).empty().append(option).niceSelect('update');
} else {
let option = '<option value="0">선택</option>';
$(select).empty().append(option).niceSelect('update');
}
}
}
/* 결제정보 > 일반결제 현금영수증 화면 세팅*/
const fn_set_csh_rcipt_issu = function(id) {
let div = $('#' + id + '-content-inner');
if ('tosspay' === id) {
div = $('#acount-content-inner');
}
let table = '';
if ('gc-pay-bank-cash-receipt' !== id && 'transfer-cash-receipt' !== id) {
table += '<table class="table-transparent" id="payCashReceipt">';
table += ' <colgroup>';
table += ' <col style="width:16%;">';
table += ' <col style="width:auto;">';
table += ' </colgroup>';
table += ' <tbody>';
if ('bank' === id) {
table += ' <tr>';
table += ' <th>입금자명</th>';
table += ' <td>';
table += ' <div class="td-inner">';
table += ' <input type="text" name="rcpmnyerNm" id="rcpmnyerNm" class="order-method-bank input-text md" maxlength="15" title="입금자명" placeholder="입금자명">';
table += ' </div>';
table += ' </td>';
table += ' </tr>';
table += ' <tr>';
table += ' <th>입금은행</th>';
table += ' <td>';
table += ' <div class="td-inner">';
table += ' <div class="select-box">';
table += ' <input type="hidden" name="dpstrNm" id="dpstrNm" value="">';
table += ' <input type="hidden" name="bnnkNm" id="bnnkNm" value="">';
table += ' <select name="rcpmnyAcntnb" id="rcpmnyAcntnb" class="order-method-bank md" title="입금은행">';
table += ' <option value="" selected>입금은행을 선택해 주세요.</option>';
table += ' </select>';
table += ' </div>';
table += ' </div>';
table += ' </td>';
table += ' </tr>';
}
table += ' <tr>';
table += ' <th></th>';
table += ' <td>';
table += ' <div style="display: none">';
table += ' <div class="custom-radio-container">';
table += ' <div class="custom-radio is-medium">';
table += ' <input type="radio" name="cshRciptIssuAt" id="cshRciptIssuAtN_' + id + '" value="" checked>';
// table += ' <label for="cshRciptIssuAtN_' + id + '">발급안함</label>';
table += ' </div>';
table += ' <div class="custom-radio is-medium">';
table += ' <input type="radio" name="cshRciptIssuAt" id="cshRciptIssuAtY_' + id + '" value="01" >';
// table += ' <label for="cshRciptIssuAtY_' + id + '">현금영수증</label>';
table += ' </div>';
table += ' </div>';
table += ' </div>';
table += ' </td>';
table += ' </tr>';
// table += ' <tr>';
// table += ' <th>발급정보</th>';
// table += ' <td>';
// table += ' <div class="td-inner">';
// table += ' <div class="custom-radio-container">';
// table += ' <div class="custom-radio is-medium">';
// table += ' <input type="radio" name="cshRciptIssuAt" id="cshRciptIssuAtN_' + id + '" value="" checked>';
// table += ' <label for="cshRciptIssuAtN_' + id + '">발급안함</label>';
// table += ' </div>';
// table += ' <div class="custom-radio is-medium">';
// table += ' <input type="radio" name="cshRciptIssuAt" id="cshRciptIssuAtY_' + id + '" value="01" >';
// table += ' <label for="cshRciptIssuAtY_' + id + '">현금영수증</label>';
// table += ' </div>';
// table += ' </div>';
// table += ' </div>';
// table += ' </td>';
// table += ' </tr>';
// table += ' <tr>';
// table += ' <th></th>';
// table += ' <td>';
// table += ' <div id="cshRciptIssu" style="display: none">';
// table += ' <div>';
// table += ' <span class="visually-hidden">발급안함</span>';
// table += ' </div>';
// table += ' <div class="td-inner vertical">';
// table += ' <div class="custom-radio-container cashReceipt-borderTop">';
// table += ' <div class="custom-radio is-medium">';
// table += ' <input type="radio" name="issuTrgetDvCd" id="issuTrgetDvCd0_' + id + '" value="01" checked>';
// table += ' <label for="issuTrgetDvCd0_' + id + '">개인 소득공제</label>';
// table += ' </div>';
// table += ' <div class="custom-radio is-medium">';
// table += ' <input type="radio" name="issuTrgetDvCd" id="issuTrgetDvCd1_' + id + '" value="02">';
// table += ' <label for="issuTrgetDvCd1_' + id + '">사업자 지출증빙</label>';
// table += ' </div>';
// table += ' </div>';
// table += ' <div class="w-full">';
// table += ' <input type="text" name="issuTrgetMbtlnb" id="issuTrgetMbtlnb" oninput="fn_set_event(this, \'keyup\', fn_fmt_telno);" class="input-text md csh-rcipt-issu" maxlength="13" title="휴대폰번호" placeholder="휴대폰번호(\' - \'없이 입력)">';
// table += ' <input type="text" name="issuTrgetBsnmNb" id="issuTrgetBsnmNb" class="number-only input-text md csh-rcipt-issu" maxlength="10" title="사업자번호" placeholder="사업자번호(\' - \'없이 입력)" style="display: none">';
// table += ' </div>';
// table += ' <p class="fyi gray-7 mt-10 ml-10">결제창에서 다시 현금영수증을 신청하지 마세요. 중복발행 됩니다.</p>';
// table += ' </div>';
// table += ' </div>';
// table += ' </td>';
// table += ' </tr>';
table += ' </tbody>';
table += '</table>';
$('.easyPayCashReceipt').empty(); //기존의 발급영역 제거
} else {
table += '<div class="easyPayCashReceipt" id="cshRciptIssu">';
table += ' <table class="table-transparent">';
table += ' <colgroup>';
table += ' <col style="width:auto;">';
table += ' </colgroup>';
table += ' <tbody>';
table += ' <tr>';
table += ' <td>';
table += ' <div class="td-inner vertical">';
table += ' <div class="custom-radio-container radio-tab-trigger" data-radiotab="radio-tab-1">';
table += ' <div class="custom-radio is-medium">';
table += ' <input type="radio" name="issuTrgetDvCd" id="issuTrgetDvCd0_' + id + '" value="01" checked>';
table += ' <label for="issuTrgetDvCd0_' + id + '">개인 소득공제</label>';
table += ' </div>';
table += ' <div class="custom-radio is-medium">';
table += ' <input type="radio" name="issuTrgetDvCd" id="issuTrgetDvCd1_' + id + '" value="02">';
table += ' <label for="issuTrgetDvCd1_' + id + '">사업자 지출증빙</label>';
table += ' </div>';
table += ' </div>';
table += ' <div class="radio-tab-content w-full" id="radio-tab-1">';
table += ' <input type="text" name="issuTrgetMbtlnb" id="issuTrgetMbtlnb" oninput="fn_set_event(this, \'keyup\', fn_fmt_telno);" class="input-text md csh-rcipt-issu" maxlength="13" title="휴대폰번호" placeholder="휴대폰번호(\' - \'없이 입력)">';
table += ' <input type="text" name="issuTrgetBsnmNb" id="issuTrgetBsnmNb" class="number-only input-text md csh-rcipt-issu" maxlength="10" title="사업자번호" placeholder="사업자번호(\' - \'없이 입력)" style="display: none">';
table += ' <input type="hidden" name="cshRciptIssuAt" value="" >';
table += ' </div>';
table += ' <p class="textInfo">';
table += ' <p class="fyi gray-7 mt-10 ml-10">결제창에서 다시 현금영수증을 신청하지 마세요. 중복발행 됩니다.</p>';
table += ' </p>';
table += ' </div>';
table += ' </td>';
table += ' </tr>';
table += ' </tbody>';
table += ' </table>';
table += '</div>';
$('#payCashReceipt').empty(); //기존의 발급영역 제거
}
if ('card' === id || 'payco' === id || 'tosspay' === id || 'naverpay' === id || 'kakaopay' === id) {
$(div).find('.noempty').nextAll().remove();
$(div).find('.noempty').after(table);
} else {
$(div).empty().append(table);
}
$(div).find('.select-box select').niceSelect();
if ('bank' === id) {
fn_get_rcpmny_acntnb_list();
}
/* 결제정보 > 일반결제 현금영수증 발급 라디오 선택 이벤트 */
$(div).find('input[name="cshRciptIssuAt"]').on('click', function () {
$(this).prop("checked", true);
if ('01' === $(this).val()) {
$(this).closest('table').find('#cshRciptIssu').show();
} else {
$(this).closest('table').find('#cshRciptIssu').hide();
}
});
/* 결제정보 > 일반결제 현금영수증 발급 라디오 선택 이벤트 */
$(div).find('input[name="issuTrgetDvCd"]').on('click', function () {
const div = $(this).closest('#cshRciptIssu');
$(div).find('.input-text').hide();
$(div).find('.input-text').val('');
if ('01' === $(this).val()) {
$(div).find('#issuTrgetMbtlnb').show();
} else {
$(div).find('#issuTrgetBsnmNb').show();
}
});
/* 결제정보 > 무통장 입금은행 선택 이벤트 */
$(div).find('#rcpmnyAcntnb').on('change', function () {
const option = $('option:selected', this);
const dpstrNm = $(option).attr('dpstr-nm');
const bnnkNm = $(option).attr('bnnk-nm');
const td = $(this).closest('td');
$(td).find('#dpstrNm').val(dpstrNm);
$(td).find('#bnnkNm').val(bnnkNm);
});
/* 결제정보 > 휴대폰번호 입력 이벤트 */
$(div).find('#issuTrgetMbtlnb').on('input', function () {
fn_set_event($(this), 'keyup', fn_fmt_telno)
});
}
/* 할인 정보 > 할인 정보 정보 세팅 */
const fn_set_enuri = function() {
let enuri = fn_get_form_obj('enuriForm');
const cartCoupon = JSON.parse(localStorage.getItem('cartCoupon'));
if (!fn_is_empty(cartCoupon)) {
enuri = Object.assign({}, enuri, cartCoupon);
}
localStorage.setItem('enuri', JSON.stringify(enuri));
}
/* 결제예정금액 > 결제금액 조회 */
const fn_get_setle_amt = function() {
let setle = {};
let dlvylc = JSON.parse(localStorage.getItem('dlvylc'));
if (!fn_is_empty(dlvylc)) {
dlvylc = Object.assign({}, fn_get_dlvylc_data(), dlvylc);
} else {
dlvylc = fn_get_dlvylc_data();
}
setle['shipping'] = dlvylc;
setle['sopmalCd'] = $('#sopmalCd').val();
setle['dlvylc'] = JSON.parse(localStorage.getItem('dlvylc'));
setle['goodsList'] = JSON.parse(localStorage.getItem('goodsList'));
setle['enuri'] = JSON.parse(localStorage.getItem('enuri'));
setle['dlvylcZip'] = localStorage.getItem('dlvylcZip');
setle['dlvylcAreaCd'] = localStorage.getItem('dlvylcAreaCd');
setle['prefcd'] = localStorage.getItem('prefcd');
setle['multiOrdrDlvylc'] = JSON.parse(localStorage.getItem('multiOrdrDlvylc'));
setle['ordrTyCd'] = $('input[name="ordrTy"]:checked').val();
$.ajax({
type: 'post',
contentType: 'application/json',
url: '<c:url value="/sopmal/ordr/selectSetleExpectAmt"/>',
data: JSON.stringify(setle),
dataType: 'json',
async : false,
success:function(data) {
if (data.resBody != null) {
let parseData = JSON.parse(data.resBody.result);
if (parseData.status === '1') {
alert(parseData.message);
let useMilg = $('.useMilg').text().replace(/,/g, '');
if (!fn_is_empty(parseData.mlgMxmmUseAmt)) {
let mlgMxmmUseAmt = parseAmount(parseData.mlgMxmmUseAmt);
useMilg = mlgMxmmUseAmt;
}
$('#useMlgAmt').val(useMilg);
let useCashMilg = $('.useCashMilg').text().replace(/,/g, '');
$('#useCashMlgAmt').val(useCashMilg);
fn_set_enuri();
fn_get_setle_amt();
} else {
const result = JSON.parse(data.resBody.result);
localStorage.setItem('goodsList', JSON.stringify(result.goodsList));
fn_set_setle_amt(result.setleExpectAmt);
let ordrTyCd = $('input[name="ordrTy"]:checked').val();
if (ordrTyCd === '05') { // 여러곳 배송
fn_set_multiordrdlcylc();
fn_get_dlvylc_coupon_list_multi();
} else {
fn_get_dlvylc_coupon_list();
}
fn_get_cart_coupon_list();
}
}
},
error: function (data) {
alert('<spring:message code="error.internal-server"/>');
}
});
}
/* 결제예정금액 > 결제금액 세팅 */
const fn_set_setle_amt = function(data) {
<c:set var="totSaveMlg" value="0"/>
<c:forEach var="ntc" items="${data.mlgAccmlNtcList}">
<c:choose>
<c:when test="${'06' == ntc.bbsTyCd}">
<c:set var="totSaveMlg" value="${totSaveMlg + ntc.gnrlRvwAmt+ntc.photoRvwAmt}"/>
</c:when>
<c:otherwise>
<c:set var="totSaveMlg" value="${totSaveMlg + ntc.photoRvwAmt}"/>
</c:otherwise>
</c:choose>
</c:forEach>
var totSaveMlg = ${totSaveMlg};
if (!fn_is_empty(data)) {
const ul = $('.cartOrderBox__list');
$(ul).find('#goodsAmtSapn').text((data.goodsAmt).toLocaleString());
$(ul).find('#dlvyAmtSapn').text((data.dlvyAmt).toLocaleString());
$(ul).find('#dscntAmtSapn').text((data.dscntAmt).toLocaleString());
$('#accmlMlgAmtSapn').text((data.accmlMlgAmt).toLocaleString());
$('#setleAmtSapn').text((data.setleAmt).toLocaleString());
$('#setleAmtKrSapn').text((data.setleAmtKr).toLocaleString());
totSaveMlg = totSaveMlg + data.accmlMlgAmt;
// 적립예상 마일리지가 0이면 보이지 않게 처리
if (totSaveMlg == 0) {
$('#saveMlg').hide();
}else{
$('#saveMlg').show();
}
let li = '';
if (data.evtDscntAmt > 0) {
li += '<li class="cartOrderBox__miscItem first">';
li += ' <span class="cartOrderBox__miscTh">이벤트</span>';
li += ' <span class="cartOrderBox__miscTd"><span class="comma">' + (data.evtDscntAmt).toLocaleString() + '</span><span class="priceUnit">' + curUnit + '</span></span>';
li += '</li>';
}
if (data.goodsCouponDscntAmt > 0) {
li += '<li class="cartOrderBox__miscItem">';
li += ' <span class="cartOrderBox__miscTh">상품 쿠폰</span>';
li += ' <span class="cartOrderBox__miscTd"><span class="comma">' + (data.goodsCouponDscntAmt).toLocaleString() + '</span><span class="priceUnit">' + curUnit + '</span></span>';
li += '</li>';
}
if (data.dlvyCouponDscntAmt > 0) {
li += '<li class="cartOrderBox__miscItem">';
li += ' <span class="cartOrderBox__miscTh">배송비 쿠폰</span>';
li += ' <span class="cartOrderBox__miscTd"><span class="comma">' + (data.dlvyCouponDscntAmt).toLocaleString() + '</span><span class="priceUnit">' + curUnit + '</span></span>';
li += '</li>';
}
if (data.cartCouponDscntAmt > 0) {
li += '<li class="cartOrderBox__miscItem">';
li += ' <span class="cartOrderBox__miscTh">장바구니 쿠폰</span>';
li += ' <span class="cartOrderBox__miscTd"><span class="comma">' + (data.cartCouponDscntAmt).toLocaleString() + '</span><span class="priceUnit">' + curUnit + '</span></span>';
li += '</li>';
}
if (data.useMlgAmt > 0) {
li += '<li class="cartOrderBox__miscItem">';
li += ' <span class="cartOrderBox__miscTh">마일리지 할인</span>';
li += ' <span class="cartOrderBox__miscTd"><span class="comma useMilg">' + (data.useMlgAmt).toLocaleString() + '</span><span class="priceUnit">점</span></span>';
li += '</li>';
}
if (data.useCashMlgAmt > 0) {
li += '<li class="cartOrderBox__miscItem">';
li += ' <span class="cartOrderBox__miscTh">GC 머니 할인</span>';
li += ' <span class="cartOrderBox__miscTd"><span class="comma useCashMilg">' + (data.useCashMlgAmt).toLocaleString() + '</span><span class="priceUnit">' + curUnit + '</span></span>';
li += '</li>';
}
if (!fn_is_empty(data.dlvyAmtMap)) {
const form = $('#dlvylcForm');
const dlvyMap = data.dlvyAmtMap;
$(form).find('input[name="dlvyGroupInnb"]').val(dlvyMap.dlvyGroupInnb);
$(form).find('input[name="dftDlvyAmt"]').val(dlvyMap.dftDlvyAmt);
$(form).find('input[name="dlvyAmt"]').val(dlvyMap.dlvyAmt);
}
let ordrTyCd = $('input[name="ordrTy"]:checked').val();
if (ordrTyCd === '05') { // 여러곳 배송
if (!fn_is_empty(data.dlvyAmtMulti)) {
const dlvyAmtMulti = data.dlvyAmtMulti;
$('.multiOrdrInnerShipping').each(function (idx) {
let form = $(this).find('form');
const dlvyAmtKey = 'shippingDlvyAmt' + idx;
const dlvyAmt = dlvyAmtMulti[dlvyAmtKey];
const dftDlvyAmtKey = 'shippingDftDlvyAmt' + idx;
const dftDlvyAmt = dlvyAmtMulti[dftDlvyAmtKey];
$(form).find('input[name="dlvyAmt"]').val(dlvyAmt);
$(form).find('input[name="dftDlvyAmt"]').val(dftDlvyAmt);
});
}
}
if (!fn_is_empty(data.setleAmt)) {
$('#enuriForm').find('#setleAmt').val(data.setleAmt);
$('#enuriForm').find('#stdrGoodsSetleAmt').val(data.stdrGoodsSetleAmt);
$('#enuriForm').find('#cartCoupondlvyAmt').val(data.dlvyAmt);
$('#setleForm').find('#rlSetleAmt').val(data.setleAmt);
$('#setleForm').find('#wonRlSetleAmt').val(data.setleAmtKr);
}
if (!fn_is_empty(data.lmttUseMlg)) {
$('#lmttUseMlg').val(data.lmttUseMlg); // 사용 가능 마일리지 한도
}
if (!fn_is_empty(data.lmttUseCashMlg)) {
$('#lmttUseCashMlg').val(data.lmttUseCashMlg); // 사용 가능 마일리지 한도
}
$(ul).find('.cartOrderBox__miscItem').remove();
$(ul).append(li);
}
}
/* 결제예정금액 > 정합성 검사 */
const fn_validate = function() {
let order = {};
let isValid = true;
let localGoods = localStorage.getItem('goodsList');
let goodsLists = JSON.parse(localGoods);
const ordrTyCd = $('input[name="ordrTy"]:checked').val();
// 상품 고유번호로 그룹화
let groupedGoods = goodsLists.reduce((groups, item) => {
if (!groups[item.goodsInnb]) {
groups[item.goodsInnb] = [];
}
groups[item.goodsInnb].push(item);
return groups;
}, {});
Object.keys(groupedGoods).forEach(goodsInnb => {
let items = groupedGoods[goodsInnb];
let all03 = items.every(item => item.optnTy === '03');
if (all03) {
alert(`추가상품만 구매할 수 없습니다. 기본상품을 같이 구매해주세요.`);
isValid = false;
return false;
}
});
/* 배송지 정합성 검사 시작 */
const dlvylcDvCd = $('input[name="dlvylcDvCd"]:checked').val();
/* 선물하기 > 정합성 검사 시작 */
if (ordrTyCd === '04') {
$('#dlvylcForm').find('.rqrd_gift').each(function () {
const val = $(this).val();
const name = $(this).attr('name');
const title = $(this).attr('title');
if (fn_is_empty(val) && (name === 'recpntNm' || name === 'recpntMbtlnb')) {
$('#dlvylcForm').find('input[name="' + name + '"]').focus();
alert(title + '을 입력해 주십시오');
isValid = false;
return false;
}
});
/* 선물하기 > 정합성 검사 종료 */
} else {
// console.log("dlvylcDvCd : ",dlvylcDvCd);
const requiredMap = {
KR: 'cstmclerCd',
JP: 'prefcd'
};
if ('New' === dlvylcDvCd) {
const dlvylcAreaCdNew = $('#dlvylcForm').find('input[name="dlvylcAreaCd"]').val();
// console.log("dlvylcAreaCd(new) : ",dlvylcAreaCdNew);
$('#dlvylcForm').find('.rqrd').each(function () {
const val = $(this).val();
if (fn_is_empty(val)) {
const name = $(this).attr('name');
const title = $(this).attr('title');
$('#dlvylcForm').find('input[name="' + name + '"]').focus();
alert(title + '을 입력해 주십시오');
isValid = false;
return false;
}
});
const required = requiredMap[dlvylcAreaCdNew];
if (required) {
const $input = $('input.new[name="' + required + '"]');
const title = $input.attr('title');
const value = $input.val();
if (fn_is_empty(value)) {
alert(title + '을 입력해 주십시오');
isValid = false;
return false;
}
}
} else {
const dlvylcAreaCd = $('#dlvylcAreaCd').val();
// console.log("dlvylcAreaCd(dft) : ",dlvylcAreaCd);
const required = requiredMap[dlvylcAreaCd];
if (required) {
const $input = $('#' + required);
const title = $input.attr('title');
const value = $input.val();
if (fn_is_empty(value)) {
alert(title + '을 입력해 주십시오');
isValid = false;
return false;
}
} else {
alert('배송지역코드를 입력해 주십시오');
isValid = false;
return false;
}
}
}
if (!isValid) {
return false;
}
let dlvylc = JSON.parse(localStorage.getItem('dlvylc'));
if (!fn_is_empty(dlvylc)) {
dlvylc = Object.assign({}, fn_get_dlvylc_data(), dlvylc);
} else {
dlvylc = fn_get_dlvylc_data();
}
order['shipping'] = dlvylc;
/* 배송지 정합성 검사 종료 */
order['dlvylcZip'] = localStorage.getItem('dlvylcZip');
order['dlvylcAreaCd'] = localStorage.getItem('dlvylcAreaCd');
order['prefcd'] = localStorage.getItem('prefcd');
// order['subsvcInnb'] = 0;
// order['subsvcAt'] = 'N';
/* 여러곳 배송 > 배송지별 정합성 검사 시작 */
if (ordrTyCd === '05') { // 여러곳 배송
fn_set_multiordrdlcylc();
fn_get_dlvylc_coupon_list_multi();
// 상품 수량 채크
$('.multiOrdrInnerShipping').each(function (idx) {
let form = $(this).find('form');
if (idx > 0) {
$(form).find('.rqrd').each(function () {
let val = $(this).val();
if (fn_is_empty(val)) {
let name = $(this).attr('name');
let title = $(this).attr('title');
alert(title + '을 입력해 주십시요');
$(form).find('input[name="' + name + '"]').focus();
isValid = false;
return false;
}
});
}
if (!isValid) {
return false;
}
// 수량 체크
$(this).find('tr.productRow').each(function (idx2) {
let remain = parseAmount($(this).find('.product-remain-qy').text());
if (remain > 0) {
alert("주문 수량과 분배 수량이 맞지 않습니다. 다시 확인해주세요.");
isValid = false;
return false;
}
});
const isRcvPrscnt = $('.rcvPrsnt:checked').val(); // 사은품 수령여부
if (isRcvPrscnt === 'Y') {
// 사은품 수량 체크
$(this).find('tr.productRow_prsnt').each(function (idx2) {
let remain = parseAmount($(this).find('.product-remain-qy').text());
if (remain > 0) {
alert("사은품 분배 수량이 맞지 않습니다. 다시 확인해주세요.");
isValid = false;
return false;
}
});
}
// 배송지별 최소수량 체크
let shippingGoodsCntTot = 0;
$(this).find('tr.productRow').each(function (idx2) {
let plus_amount = parseAmount($(this).find('.product-count__amount-number').text());
shippingGoodsCntTot = shippingGoodsCntTot + plus_amount;
});
if (shippingGoodsCntTot < 1) {
alert("상품이 없는 배송지가 있습니다. 상품을 추가해 주세요.");
isValid = false;
return false;
}
if (!isValid) {
return false;
}
});
order['multiOrdrDlvylc'] = JSON.parse(localStorage.getItem('multiOrdrDlvylc'));
if (!isValid) {
return false;
}
}
/* 여러곳 배송 > 배송지별 정합성 검사 종료 */
/* 주문자 정보 정합성 검사 시작 */
const purchsrForm = $('#purchsrForm');
$(purchsrForm).find('.input-text').each(function () {
const val = $(this).val();
if (fn_is_empty(val)) {
const id = $(this).attr('id');
const title = $(this).attr('title');
alert(title + ' 항목을 입력해 주십시요');
$('#' + id).focus();
isValid = false;
return false;
}
});
if (!isValid) {
return false;
}
let purchsr = {};
$(purchsrForm).find('input').each(function () {
const id = $(this).attr('id');
const val = $(this).val().trim();
purchsr[id] = val;
});
order['sopmalCd'] = $(purchsrForm).find('#sopmalCd').val();
order['purchsr'] = purchsr;
/* 주문자 정보 정합성 검사 종료 */
/* 결제정보 정합성 검사 시작 */
let pgCmpnyNm = $('input[name="pg"]:checked').val();
let setleTyCd = $('#setleTyCd').val();
const setleAmt = parseInt(!fn_is_empty($('#rlSetleAmt').val()) ? $('#rlSetleAmt').val() : '0');
const useMlgAmt = parseInt(!fn_is_empty($('#useMlgAmt').val()) ? $('#useMlgAmt').val() : '0');
const useCashMlgAmt = parseInt(!fn_is_empty($('#useCashMlgAmt').val()) ? $('#useCashMlgAmt').val() : '0');
if(setleAmt === 0 && useMlgAmt > 0 && useCashMlgAmt === 0){
pgCmpnyNm = "mileage";
setleTyCd = "08";
$('#setleForm').find('#pgCmpnyNm').val(pgCmpnyNm);
$('#setleForm').find('#setleTyCd').val(setleTyCd);
} else if( setleAmt===0 && useMlgAmt === 0 && useCashMlgAmt > 0 ){
pgCmpnyNm = "cash";
setleTyCd = "12";
$('#setleForm').find('#pgCmpnyNm').val(pgCmpnyNm);
$('#setleForm').find('#setleTyCd').val(setleTyCd);
}
if (fn_is_empty(pgCmpnyNm)) {
alert('결제유형을 선택해 주십시요.');
return false;
}
if ('kcp' === pgCmpnyNm || 'toss' === pgCmpnyNm || 'kiwoom' === pgCmpnyNm) {
const div = $('#setleForm').find('.order-method-normal');
if (!$(div).find('.order-method-normal__btn-container button').hasClass('active')) {
alert('결제방법을 선택해 주십시요.');
isValid = false;
return false;
}
if ('02' === setleTyCd) {
const div = $('#bank-content-inner');
const input = $(div).find('#rcpmnyerNm');
if (fn_is_empty($(input).val())) {
alert($(input).attr('title') + ' 항목을 입력해 주십시요');
$('#' + $(input).attr('id')).focus();
isValid = false;
return false;
}
const rcpmnyAcntnb = $(div).find('#rcpmnyAcntnb option:selected');
if (fn_is_empty($(rcpmnyAcntnb).val())) {
alert($(div).find('#rcpmnyAcntnb').attr('title') + ' 항목을 선택해 주십시요');
return false;
}
}
const cshRciptIssuAt = $('input[name="cshRciptIssuAt"]:checked').val();
if (!fn_is_empty(cshRciptIssuAt) && '01' === cshRciptIssuAt) {
const issuTrgetDvCd = $('input[name="issuTrgetDvCd"]:checked').val();
const id = '01' === issuTrgetDvCd ? 'issuTrgetMbtlnb' : 'issuTrgetBsnmNb';
let rlPgCmpnyNm = $('#pgCmpnyNm').val();
let pgCont = "";
if('kiwoom' === pgCmpnyNm) pgCont='pg06Content';
else if('kcp' === pgCmpnyNm) pgCont='pg04Content';
else pgCont='pg03Content';
let setleTyId = $('#'+pgCont).find('button[name="' + setleTyCd + '"]').attr('id');
if ('tosspay' === rlPgCmpnyNm) {
setleTyId = 'acount'
}
const div = $('#' + setleTyId + '-content-inner');
const input = $(div).find('#' + id);
if (fn_is_empty($(input).val())) {
alert($(div).find('#' + id).attr('title') + ' 항목을 입력해 주십시요');
$(div).find('#' + id).focus();
isValid = false;
return false;
}
}
} else if ('toss03' === pgCmpnyNm){ //퀵계좌이체(추가된 결제수단이라 기존코드 유지위해 toss03이름으로 임시지정 후 toss로 변환)
const isChecked = $('#transfer-cash-receipt').is(':checked');
if (isChecked) {
const div = $('#transfer-cash-receipt').closest('.selectWrap');
const issuTrgetDvCd = $(div).find('input[name="issuTrgetDvCd"]:checked').val();
const id = '01' === issuTrgetDvCd ? 'issuTrgetMbtlnb' : 'issuTrgetBsnmNb';
const content = $(div).find('#transfer-cash-receipt-content-inner');
const input = $(content).find('#' + id);
if (fn_is_empty($(input).val())) {
alert($(content).find('#' + id).attr('title') + ' 항목을 입력해 주십시요');
$(content).find('#' + id).focus();
isValid = false;
return false;
}else{
$('#setleForm').find('input[name="cshRciptIssuAt"]').val('01');
}
}
pgCmpnyNm = "toss";
setleTyCd = "03";
$('#setleForm').find('#pgCmpnyNm').val(pgCmpnyNm);
$('#setleForm').find('#setleTyCd').val(setleTyCd);
} else { //gc페이
if ('01' === setleTyCd) { // 카드
const index = $('.cardSlideW').slick('slickCurrentSlide');
const curCardId = $('#gcCardId' + index).val();
const curCardInstallmentPlan = $('#instl-month-' + index).val();
const curUseCardPoint = $('#use-card-point' + index);
if (!fn_is_empty(curCardId)) {
$('#gcpayMethodId').val(curCardId);
$('#gcpayCardInstallmentPlan').val(curCardInstallmentPlan);
$('#gcpayUseCardPoint').val(!!$(curUseCardPoint).is(':checked'));
} else {
alert('GCpay 간편결제의 선택된 카드가 없습니다.');
isValid = false;
return false;
}
} else if ('03' === setleTyCd){
const accountId = $('.bankSlideW').slick('slickCurrentSlide');
const curAccountId = $('#gcAccId' + accountId).val();
if (!fn_is_empty(curAccountId)) {
$('#gcpayMethodId').val(curAccountId);
} else {
alert('GCpay 간편결제의 선택된 계좌가 없습니다.');
isValid = false;
return false;
}
const isChecked = $('#gc-pay-bank-cash-receipt').is(':checked');
if (isChecked) {
const div = $('#gc-pay-bank-cash-receipt').closest('.selectWrap');
const issuTrgetDvCd = $(div).find('input[name="issuTrgetDvCd"]:checked').val();
const id = '01' === issuTrgetDvCd ? 'issuTrgetMbtlnb' : 'issuTrgetBsnmNb';
const content = $(div).find('#gc-pay-bank-cash-receipt-content-inner');
const input = $(content).find('#' + id);
if (fn_is_empty($(input).val())) {
alert($(content).find('#' + id).attr('title') + ' 항목을 입력해 주십시요');
$(content).find('#' + id).focus();
isValid = false;
return false;
}
}
}
}
if (!isValid) {
return false;
}
order['setle'] = fn_get_form_obj('setleForm');
/* 결제정보 정합성 검사 종료 */
/* 주문상품, 사은품 데이터 세팅 시작 */
let goodsList = localStorage.getItem('goodsList');
if (!fn_is_empty(goodsList)) {
order['goodsList'] = JSON.parse(goodsList);
}
order['prsnt'] = fn_get_prsnt_data();
/* 주문상품, 사은품 데이터 세팅 종료 */
/* 에누리 데이터 세팅 시작 */
const enuri = localStorage.getItem('enuri');
if (!fn_is_empty(enuri)) {
order['enuri'] = JSON.parse(enuri);
}
/* 에누리 데이터 세팅 종료 */
/* ********************* 실 결제금액 세팅 결제금액 비교 시작 ********************* */
const ordrCheckMsg = "구매 정보가 갱신되었습니다. 확인 후 다시 진행해주세요.";
const sopmalCd = $('#sopmalCd').val();
let stdrGoodsList = [];
$('#goodsList').find('.ordrGoods').each(function () {
const goodsInnb = $(this).find('.goodsInnb').val();
const goodsOptnInnb = $(this).find('.goodsOptnInnb').val();
const qy = $(this).find('.qy').val();
let goods = {
'sopmalCd': sopmalCd,
'goodsInnb': goodsInnb,
'goodsOptnInnb': goodsOptnInnb,
'qy': qy
};
stdrGoodsList.push(goods);
});
let storageGoodsList = [];
if (!fn_is_empty(goodsList)) {
let storageTempGoodsList = JSON.parse(goodsList);
storageTempGoodsList.forEach((item, index) => {
let goods = {
'sopmalCd': sopmalCd,
'goodsInnb': item.goodsInnb.toString(),
'goodsOptnInnb': item.goodsOptnInnb.toString(),
'qy': item.qy.toString()
};
storageGoodsList.push(goods);
});
}
if (!fn_compare_goodslists(stdrGoodsList, storageGoodsList)) {
alert(ordrCheckMsg);
location.reload();
return false;
}
const setleAmtFromOrder = order['setle']['rlSetleAmt']; // 실 결제금액
const enuriObj = JSON.parse(enuri);
const setleAmtFromEnuri = enuriObj['setleAmt']; // 계산된 결제금액
if (setleAmtFromOrder !== setleAmtFromEnuri) {
alert(ordrCheckMsg);
location.reload();
return false;
}
/* ********************* 실 결제금액 세팅 결제금액 비교 종료 ********************* */
if (ordrTyCd === '04') { // 선물하기
order['ordrTyCd'] = '04';
} else if (ordrTyCd === '05') { // 여러곳 배송
order['ordrTyCd'] = '05';
} else {
order['ordrTyCd'] = '01'; // 일반 주문
}
/* 광고 수신 동의 체크 */
if(!fn_is_empty($("#marktRecptnAgreAt"))) {
if ($("#marktRecptnAgreAt").is(":checked")) {
order['marktRecptnAgreAt'] = 'Y';
} else {
order['marktRecptnAgreAt'] = 'N';
}
}
return order;
}
/* 무통장 입금 계좌번호 목록 조회 */
const fn_get_rcpmny_acntnb_list = function() {
$.ajax({
type:'post',
contentType:'application/json',
url:'<c:url value="/sopmal/ordr/selectRcpmnyAcntnbList"/>',
data:JSON.stringify({'sopmalCd':$('#sopmalCd').val()}),
dataType:'json',
success:function(data) {
if (data.resBody != null) {
const result = JSON.parse(data.resBody.result);
if (!fn_is_empty(result)) {
const setupNbkDpstVOList = result.setupNbkDpstVOList;
const div = $('#bank-content #bank-content-inner');
for (let i = 0; i < setupNbkDpstVOList.length; i++) {
const setup = setupNbkDpstVOList[i];
const title = setup.bankNm + ' ' + setup.acntnb + ' ' + setup.dpstrNm;
let option = '<option value="' + setup.acntnb + '" bnnk-nm="' + setup.bankNm + '" dpstr-nm="' + setup.dpstrNm + '">' + title + '</option>';
if(i === 0) {
// 첫번째만 selected 되게 설정
option = '<option value="' + setup.acntnb + '" bnnk-nm="' + setup.bankNm + '" dpstr-nm="' + setup.dpstrNm + '" selected>' + title + '</option>';
} else {
option = '<option value="' + setup.acntnb + '" bnnk-nm="' + setup.bankNm + '" dpstr-nm="' + setup.dpstrNm + '">' + title + '</option>';
}
$(div).find('table tr #rcpmnyAcntnb').append(option);
}
$(div).find('.select-box select').niceSelect('update');
}
}
},
error:function(data) {
alert('<spring:message code="error.internal-server"/>');
}
});
}
/* 중복제한 쿠폰 체크 */
const fn_check_dplct_lmtt_coupon = function(cpnDvCd, obj) {
const objGoodsOptnInnb = obj.closest('tr').prev('tr').find('.goodsOptnInnb').val(); // 이벤트 발생 상품옵션고유번호
$('#goodsList').find('.ordrGoods').each(function () {
const dplctLmttCoupon = $(this).find('.dplctLmttCoupon').val();
const thisGoodsOptnInnb = $(this).find('.goodsOptnInnb').val();
// 이벤트 중복제한 체크
const dplctLmttCheck = () => {
if (!fn_is_empty(dplctLmttCoupon)) {
const dplctLmttEvtnm = $(this).find('.dplctLmttEvtnm').val();
if (dplctLmttCoupon.includes(cpnDvCd)) {
alert(dplctLmttEvtnm + '의 할인이 적용된경우 해당 쿠폰을 적용 할 수 없습니다.');
$(obj).val('0').attr('selected', true).niceSelect('update');
return false;
}
}
}
if (cpnDvCd === '01') { // 상품쿠폰은 적용상품만 제한
if (thisGoodsOptnInnb === objGoodsOptnInnb) {
dplctLmttCheck();
}
} else { // 배송비, 장바구니 쿠폰은 대상상품 포함시 모두 제한
dplctLmttCheck();
}
});
return false;
}
/* form 정보 조회 */
const fn_get_form_obj = function(id) {
let formObj = {};
const inputs = $('#' + id).serializeArray();
let cartCoupon = localStorage.getItem('cartCoupon');
let dscntAmt = 0;
if (cartCoupon) {
let parsedCoupon = JSON.parse(cartCoupon);
if (parsedCoupon && parsedCoupon.dscntAmt) {
dscntAmt = parseFloat(parsedCoupon.dscntAmt);
}
}
let enuri = localStorage.getItem('enuri');
let useMlgAmt = 0;
if (enuri) {
let parsedUseMlg = JSON.parse(enuri);
if (parsedUseMlg && parsedUseMlg.useMlgAmt) {
useMlgAmt = parseFloat(parsedUseMlg.useMlgAmt);
}
}
let goodsList = localStorage.getItem('goodsList');
let parsedGoodsList = fn_is_empty(goodsList) ? '' : JSON.parse(goodsList);
let goodsDscntDtlsList = fn_is_empty(parsedGoodsList) ? '' : parsedGoodsList[0].goodsDscntDtlsList;
let totalDscntAmt = 0;
if(!fn_is_empty(goodsDscntDtlsList)){
goodsDscntDtlsList.forEach(item => {
totalDscntAmt += item.dscntAmt;
});
}
let goodsDscntAmt = 0;
if (goodsList) {
/**
let parsedGoodsList = JSON.parse(goodsList);
if (parsedGoodsList && parsedGoodsList.useMlgAmt) {
goodsDscntAmt = parseFloat(parsedGoodsList.useMlgAmt);
}
*/
}
$('#cartDscntAmt').val(dscntAmt);
$('#milgDscntAmt').val(useMlgAmt);
$('#totalGoodsDscntAmt').val(totalDscntAmt);
$.each(inputs, function (i, input) {
formObj[input.name] = input.value.trim();
});
return formObj;
}
/* ********************************************************
* 우편번호 찾기
******************************************************** */
const fn_set_postcode = function(data, btn) {
const form = $(btn).closest('form');
// $('#postcode').val(data.postcode);
$(form).find('input[name="dlvylcZip"]').val(data.postcode);
if (data.addressType == '02' ) {
$(form).find('input[name="dlvylcAdresDvCd"]').val(data.addressType);
$(form).find('input[name="dlvylcLnbAdres"]').val(data.jibunAddress);
$(form).find('input[name="dlvylcAdres"]').val($(form).find('input[name="dlvylcLnbAdres"]').val());
} else if (data.addressType == '01') {
$(form).find('input[name="dlvylcAdresDvCd"]').val(data.addressType);
$(form).find('input[name="dlvylcRnmAdres"]').val(data.roadAddress);
$(form).find('input[name="dlvylcAdres"]').val($(form).find('input[name="dlvylcRnmAdres"]').val());
}
const dlvylcZip = $('#postcode').val();
localStorage.setItem("dlvylcZip", dlvylcZip);
fn_get_setle_amt();
}
/* 약관 상세 보기, 마케팅동의여부 모달 데이터 정제*/
const fn_select_clause = (stplatDvCd,agreeAt) => {
$.ajax({
type: 'post',
url: "/sopmal/main/selectIndvdlInfoProcsCn",
data: {stplatDvCd: stplatDvCd},
success: function (data) {
data = JSON.parse(data.resBody.result);
//약관 내용
const clauseList = data.clauseList;
let stplatCn = '';
let sj = '' ;
if (!fn_is_empty(clauseList)) {
let i = 0;
clauseList.forEach(function (item) {
if (i === 0) {
stplatCn = item.stplatCn;
return false;
}
});
}
//약관제목
const stplatList = data.stplat;
let clauseSj = '';
if (!fn_is_empty(stplatList)) {
clauseSj = stplatList.filter(stplatList => stplatList.cd === stplatDvCd);
if (!fn_is_empty(clauseSj)) {
sj = clauseSj[0].cdNm;
}
}
const sjCn = {sj: sj,
cn: stplatCn};
fn_select_clause2(sjCn,agreeAt);
}
});
}
/*약관동의, 마케팅동의 재확인 모달 값 세팅*/
const fn_select_clause2 = (data, agreeAt) => {
const sj = data.sj;
const cn = data.cn;
let tgtModalNm = '';
let tgtModalSj = ''
let tgtModalCn = ''
//마케팅 동의 여부 모달
if(agreeAt === 'Y'){
tgtModalNm = "nmbrClauseAgree";
tgtModalSj = "nmbrClauseAgree-sj";
tgtModalCn = "nmbrClauseAgree-content";
}else{ //약관동의 모달
tgtModalNm = "nmbrClause";
tgtModalSj = "nmbrClause-sj";
tgtModalCn = "nmbrClause-content";
}
$("#"+tgtModalCn).html(cn);
$("#"+tgtModalCn).addClass("ck-content");
$("#"+tgtModalSj).text(sj);
$("#"+tgtModalNm).modal('open');
}
</script>
<script>
/****************************************************************/
/* m_Completepayment 설명 */
/****************************************************************/
/* 인증완료시 재귀 함수 */
/* 해당 함수명은 절대 변경하면 안됩니다. */
/* 해당 함수의 위치는 kcp_spay_hub.js 보다먼저 선언되어여 합니다. */
/* Web 방식의 경우 리턴 값이 form 으로 넘어옴 */
/****************************************************************/
function m_Completepayment(FormOrJson, closeEvent) {
var frm = document.order_info;
/********************************************************************/
/* FormOrJson은 가맹점 임의 활용 금지 */
/* frm 값에 FormOrJson 값이 설정 된 frm 값으로 활용 하셔야 됩니다. */
/********************************************************************/
GetField(frm, FormOrJson);
if (frm.res_cd.value == "0000"){
/* 결제인증 완료 후 결제승인 요청을 위한 비즈니스 로직 구현 */
frm.submit();
} else {
/* 결제인증 실패에 대한 처리 */
alert( "[" + frm.res_cd.value + "] " + frm.res_msg.value );
location.reload();
closeEvent();
}
}
</script>
<c:choose>
<c:when test="${data.payInfo.kcpMid eq 'T0007'}">
<script type="text/javascript" src="https://testspay.kcp.co.kr/plugin/kcp_spay_hub.js"></script>
</c:when>
<c:otherwise>
<script type="text/javascript" src="https://spay.kcp.co.kr/plugin/kcp_spay_hub.js"></script>
</c:otherwise>
</c:choose>
<script>
/* 표준웹 실행 */
function jsf__pay(form) {
try {
KCP_Pay_Execute_Web(form);
} catch (e) {
console.log(e)
/* IE 에서 결제 정상종료시 throw로 스크립트 종료 */
}
}
</script>
<script src="https://js.tosspayments.com/v1"></script>
<script>
let tossPayments = TossPayments("${data.payInfo.tossClntKey}");
function pay(method, requestJson, pgNm) {
//if(pgNm === "naverpay"||pgNm === "kakaopay")
if(pgNm === "kakaopay")
tossPayments = TossPayments("${data.payInfo.easypayClntKey}");
tossPayments.requestPayment(method, requestJson)
.catch(function (error) {
if (error.code === "USER_CANCEL") {
alert("결제를 취소하였습니다.");
location.reload();
} else {
alert(error.message);
}
});
}
</script>
<script>
function kiwoom_Completepayment() {
var frm = document.order_info;
const encoded = btoa(unescape(encodeURIComponent(frm.ordrrNm.value)));
frm.ordrrNm.value = encoded;
frm.submit();
}
</script>
</head>
<body>
<%-- 공통 Header --%>
<jsp:include page="/WEB-INF/views/comm/Header.jsp"/>
<!-- 메인 컨텐츠 영역 -->
<main>
<div class="sub-wrapper">
<div class="sub-content">
<div class="cartOrder">
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
<input type="hidden" id="cdnurl" value="${cdnurl}"/>
<h2 class="cartOrder__title">주문결제</h2>
<div class="cartOrder__inner">
<div class="cartOrder__left">
<div class="orderInfo">
<form id="purchsrForm">
<c:set var="purchsr" value="${data.purchsr}"/>
<input type="hidden" name="sopmalCd" id="sopmalCd" value="<c:out value="${purchsr.sopmalCd}"/>">
<input type="hidden" name="mbrId" id="mbrId" value="<c:out value="${purchsr.mbrId}"/>">
<input type="hidden" name="mbrDvCd" id="mbrDvCd" value="<c:out value="${purchsr.mbrDvCd}"/>">
<input type="hidden" name="mbrTyCd" id="mbrTyCd" value="<c:out value="${purchsr.mbrTyCd}"/>">
<input type="hidden" name="deviceType" id="deviceType" value="<c:out value="${deviceType}"/>">
<div class="orderInfo__section ordrTySec">
<div id="ordrTyRadio" class="custom-radio-container">
<div class="custom-radio">
<input type="radio" name="ordrTy" id="ordrTy01" value="01" checked>
<label for="ordrTy01">일반 주문</label>
</div>
<c:if test = "${data.shopInfo.multiDlvyAt eq 'Y'}">
<div class="custom-radio">
<input type="radio" name="ordrTy" id="ordrTy02" value="05">
<label for="ordrTy02">여러곳 배송</label>
</div>
</c:if>
<c:if test="${ data.shopInfo.giftDlvyAt eq 'Y'}">
<div class="custom-radio">
<input type="radio" name="ordrTy" id="ordrTy03" value="04">
<label for="ordrTy03">선물하기</label>
</div>
</c:if>
</div>
</div>
<div class="orderInfo__section">
<h3 class="orderInfo__sectionTitle">주문자 정보</h3>
<div class="table-wrapper orderInfo__table">
<table class="table">
<caption>주문자 정보</caption>
<colgroup>
<col style="width: 180px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th><span class="orderInfo__title">이름</span></th>
<td>
<input type="text" name="mbrNm" id="mbrNm" value="<c:out value="${purchsr.mbrNm}"/>" class="input-text" title="이름" placeholder=""
<c:if test="${ not empty purchsr.mbrNm }">
readonly
</c:if>
>
</td>
</tr>
<tr>
<th><span class="orderInfo__title">휴대폰 번호</span></th>
<td><input type="text" name="mbtlnb" id="mbtlnb" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)" maxlength="13" value="<c:out value="${purchsr.mbtlnb}"/>" class="input-text number" title="휴대폰번호" placeholder="휴대폰번호 입력 (’-’ 없이)"></td>
</tr>
<tr>
<th><span class="orderInfo__title">이메일</span></th>
<td><input type="text" name="email" id="email" value="<c:out value="${purchsr.email}"/>" class="input-text" title="이메일" placeholder="이메일을 입력하세요."></td>
</tr>
</tbody>
</table>
</div>
</div>
</form>
<div class="orderInfo__section dftOrdr">
<h3 class="orderInfo__sectionTitle">배송지 정보</h3>
<form id="dlvylcForm">
<input type="hidden" id="isDftDlvylc" value="<c:out value="${not empty data.purchsr.dftDlvylc ? 'Y' : 'N'}"/>">
<input type="hidden" name="dlvyGroupInnb" id="dlvyGroupInnb" class="dft">
<input type="hidden" name="dftDlvyAmt" id="dftDlvyAmt" class="dft">
<input type="hidden" name="dlvyAmt" id="dlvyAmt" class="dft">
<input type="hidden" name="couponInnb">
<input type="hidden" name="dwldCouponInnb">
<input type="hidden" name="dplctDscntAt">
<input type="hidden" name="otrCouponSmtmUseAt">
<input type="hidden" name="mngrFreeDlvyUseAt" value="N">
<c:set var="dftDlvylc" value="${data.purchsr.dftDlvylc}"/>
<c:set var="multiDlvyAt" value="${data.shopInfo.multiDlvyAt}"/>
<c:set var="fdrmDlvyAt" value="${data.shopInfo.fdrmDlvyAt}"/>
<c:set var="giftDlvyAt" value="${data.shopInfo.giftDlvyAt}"/>
<div class="table-wrapper orderInfo__table">
<table class="table">
<caption>배송지 정보</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 180px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th><span class="orderInfo__title">배송지 선택</span></th>
<td class="td-inner vertical">
<div id="deliveryAddressRadio" class="custom-radio-container">
<div class="custom-radio is-medium">
<input type="radio" name="dlvylcDvCd" id="dlvylcDft" value="Default" checked>
<label for="dlvylcDft">기본 배송지</label>
</div>
<div class="custom-radio is-medium">
<input type="radio" name="dlvylcDvCd" id="dlvylcNew" value="New">
<label for="dlvylcNew">신규 배송지</label>
</div>
<%-- <c:if test="${ giftDlvyAt eq 'Y'}">--%>
<%-- <div class="custom-radio is-medium">--%>
<%-- <input type="radio" name="dlvylcDvCd" id="dlvylcGift" value="Gift">--%>
<%-- <label for="dlvylcGift">선물하기</label>--%>
<%-- </div>--%>
<%-- </c:if>--%>
</div>
<a href="javascript:void(0);" id="btnDlvylcMngr" class="btn md outline orderInfo__editBtn btnDlvylcMngr presentArea" style="display: none;">배송지 관리</a>
<%--일본 배송지 추가 - 일부 기능 삭제--%>
<%-- <label class="b-checkbox checkbox">--%>
<%-- <input type="checkbox" class="ordrrInfoSet" value="">--%>
<%-- <span class="check"></span>--%>
<%-- <span class="control-label">주문자와 동일</span>--%>
<%-- </label>--%>
</td>
</tr>
<!-- 기본 배송지 선택 시 Start -->
<tr class="deliveryAddressDefault">
<th><span class="orderInfo__title">받는분</span></th>
<td>
<input type="hidden" id="recpntNm" class="dft" value="<c:out value="${dftDlvylc.recpntNm}"/>">
<span class="orderInfo__text recpntNm_ordrInfo_text"><c:out value="${dftDlvylc.recpntNm}"/></span>
</td>
</tr>
<tr class="deliveryAddressDefault">
<th><span class="orderInfo__title">주소</span></th>
<td>
<input type="hidden" id="dlvylcAdresDvCd" class="dft" value="<c:out value="${dftDlvylc.adresDv}"/>">
<input type="hidden" id="dlvylcZip" class="dft" value="<c:out value="${dftDlvylc.zip}"/>">
<input type="hidden" id="dlvylcAreaCd" class="dft" value="<c:out value="${dftDlvylc.dlvylcAreaCd}"/>">
<input type="hidden" id="prefcd" class="dft" title="도도부현코드" value="<c:out value="${dftDlvylc.prefcd}"/>">
<input type="hidden" id="dlvylcLnbAdres" class="dft" value="<c:out value="${dftDlvylc.lnbAdres}"/>">
<input type="hidden" id="dlvylcRnmAdres" class="dft" value="<c:out value="${dftDlvylc.rnmAdres}"/>">
<input type="hidden" id="dlvylcAdresDtl" class="dft" value="<c:out value="${dftDlvylc.dtlAdres}"/>">
<span class="orderInfo__text recpntNm_adress_text">
<c:out value="${not empty dftDlvylc.zip ? '(' += dftDlvylc.zip += ')' : ''}"/>
<c:out value="${dftDlvylc.adres}"/>
<c:out value="${dftDlvylc.dtlAdres}"/>
</span>
</td>
</tr>
<tr class="deliveryAddressDefault">
<th><span class="orderInfo__title">휴대폰번호</span></th>
<td>
<input type="hidden" id="recpntMbtlnb" class="dft" value="<c:out value="${dftDlvylc.mbtlnb}"/>">
<span class="orderInfo__text recpntMbtlnb_ordrInfo_text"><c:out value="${dftDlvylc.mbtlnb}"/></span>
</td>
</tr>
<c:if test="${dftDlvylc.dlvylcAreaCd eq 'KR'}">
<tr class="deliveryAddressDefault">
<th><span class="orderInfo__title">개인통관번호</span></th>
<td>
<input type="hidden" id="cstmclerCd" class="dft" title="개인통관번호" value="<c:out value="${dftDlvylc.cstmclerCd}"/>">
<span class="orderInfo__text cstmclerCd_ordrInfo_text">
<c:choose>
<c:when test="${not empty dftDlvylc.cstmclerCd}">
<c:out value="${dftDlvylc.cstmclerCd}"/>
</c:when>
<c:otherwise>
배송지 관리에서 입력하세요.
</c:otherwise>
</c:choose>
</span>
</td>
</tr>
</c:if>
<!-- 기본 배송지 선택 시 End -->
<!-- 신규 배송지 선택 시 Start -->
<tr class="deliveryAddressNew" style="display:none;">
<th><span class="orderInfo__title">받는분</span></th>
<td><input type="text" name="recpntNm" class="new rqrd input-text rqrd_gift" title="받는분 이름" placeholder="받는분 이름을 입력하세요." readonly></td>
</tr>
<tr class="deliveryAddressNew presentArea" style="display:none;">
<th><span class="orderInfo__title">주소</span></th>
<td>
<div class="inputAddress">
<div class="inputAddress__postalCode">
<input type="text" id="postcode" name="dlvylcZip" class="new rqrd input-text" title="우편번호" placeholder="" readonly>
<%--일본 배송지 추가 - 일부 기능 삭제--%>
<%-- <button type="button" id="btnPost1" onclick="fn_select_postcode(fn_set_postcode, this); return false;" class="btn md theme outline">우편번호 찾기</button>--%>
</div>
<input type="text" name="dlvylcAdres" class="new rqrd input-text full" title="주소" placeholder="" readonly>
<input type="text" name="dlvylcAdresDtl" class="new rqrd input-text full" title="나머지 주소" placeholder="나머지 주소를 입력해 주세요." readonly>
<input type="hidden" name="dlvylcAdresDvCd" class="new">
<input type="hidden" name="dlvylcLnbAdres" class="new">
<input type="hidden" name="dlvylcRnmAdres" class="new">
<input type="hidden" name="dlvylcAreaCd" class="new rqrd" title="배송지역코드">
<input type="hidden" name="prefcd" class="new" title="도도부현코드">
</div>
</td>
</tr>
<tr class="deliveryAddressNew" style="display:none;">
<th> <span class="orderInfo__title">휴대폰번호</span></th>
<td>
<input type="text" name="recpntMbtlnb" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)" maxlength="13" class="new rqrd input-text number rqrd_gift" title="휴대폰번호" placeholder="휴대폰번호 입력 (’-’ 없이)" readonly>
</td>
</tr>
<tr class="deliveryAddressNew cstmclerArea" style="display:none;">
<th> <span class="orderInfo__title">개인통관번호</span></th>
<td>
<input type="text" name="cstmclerCd" maxlength="13" class="new input-text" title="개인통관번호" placeholder="배송지 관리에서 입력하세요." readonly>
</td>
</tr>
<!-- 신규 배송지 선택 시 End -->
<tr class="presentShowArea" style="display:none;">
<th> <span class="orderInfo__title">선물메세지</span></th>
<td>
<input type="text" name="giftMssageCn" class="gift input-text" title="선물메세지" placeholder="선물 메세지를 입력하세요.">
</td>
</tr>
<!-- 선물하기 선택 시 Start -->
<%-- <tr class="deliveryAddressGift" style="display:none;">--%>
<%-- <th><span class="orderInfo__title">받는분</span></th>--%>
<%-- <td><input type="text" name="recpntNm" class="gift rqrd_gift input-text" title="받는분 이름" placeholder="받는분 이름을 입력하세요."></td>--%>
<%-- </tr>--%>
<%-- <tr class="deliveryAddressGift" style="display:none;">--%>
<%-- <th> <span class="orderInfo__title">휴대폰번호</span></th>--%>
<%-- <td>--%>
<%-- <input type="text" name="recpntMbtlnb" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)" maxlength="13" class="gift rqrd_gift input-text number" title="휴대폰번호" placeholder="휴대폰번호 입력 (’-’ 없이)">--%>
<%-- </td>--%>
<%-- </tr>--%>
<%-- <tr class="deliveryAddressGift" style="display:none;">--%>
<%-- <th> <span class="orderInfo__title">선물메세지</span></th>--%>
<%-- <td>--%>
<%-- <input type="text" name="giftMssageCn" class="gift input-text" title="선물메세지" placeholder="선물 메세지를 입력하세요.">--%>
<%-- </td>--%>
<%-- </tr>--%>
<!-- 선물하기 선택 시 End -->
<tr>
<th><span class="orderInfo__title">배송요청사항</span></th>
<td>
<div class="orderInfo__deliveryRequest">
<div class="select-box">
<select class="deliveryRequestSelect" title="배송요청사항">
<option value="" selected>배송 시 요청 사항을 선택해주세요</option>
<option value="배송 전 연락 주세요">배송 전 연락 주세요.</option>
<option value="부재 시 문 앞에 놓아 주세요">부재 시 문 앞에 놓아 주세요</option>
<option value="부재 시 경비실에 맡겨 주세요.">부재 시 경비실에 맡겨 주세요.</option>
<option value="write">직접입력</option>
</select>
</div>
<div class="inputLimit deliveryRequestDetail" style="display:none;">
<input type="text" name="dlvyMssageCn" id="dlvyMssageCn" maxlength="50" class="input-text dft" title="배송요청사항" placeholder="50자 이내로 입력해 주세요.">
<span class="inputLimit__text">
<span class="inputLimit__current">0</span>
<span class="inputLimit__divider">/</span>
<span class="inputLimit__total">50</span>
</span>
</div>
</div>
</td>
</tr>
<tr>
<th><span class="orderInfo__title">배송비쿠폰</span></th>
<td>
<div class="cartItem__footer">
<div class="select-box">
<select name="dlvylcCouponList" id="dlvylcCouponList" class="lg dlvylcCouponList" title="배송지 쿠폰할인">
<option value="" selected>선택</option>
</select>
</div>
</div>
<div class="dlvyMultiAlertArea">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</form>
</div>
<div class="orderInfo__section">
<h3 class="orderInfo__sectionTitle">주문 상품</h3>
<div class="cartOrder__list">
<div class="table-wrapper">
<table class="table vertical">
<caption>주문 상품</caption>
<colgroup>
<col style="width: 400px;">
<col style="width: 120px">
<col style="width: 128px">
<col style="width: 128px">
<col style="width: auto;">
</colgroup>
<thead>
<tr>
<th>상품명</th>
<th>주문수량</th>
<th>할인금액</th>
<th>상품금액</th>
</tr>
</thead>
<tbody id="goodsList"></tbody>
</table>
</div>
</div>
</div>
<div id="prsnt" class="orderInfo__section">
<h3 class="orderInfo__sectionTitle">사은품</h3>
<div class="cartOrder__list">
<div class="table-wrapper">
<table class="table vertical">
<caption>사은품</caption>
<colgroup>
<col style="width: 400px;">
<col style="width: 128px">
<col style="width: 128px">
<col style="width: auto;">
</colgroup>
<thead>
<tr>
<th>상품명</th>
<th>수량</th>
<th>수령여부</th>
</tr>
</thead>
<tbody id="prsntList"></tbody>
</table>
</div>
</div>
</div>
<div class="orderInfo__section multiDeliveryAddress multiOrdr">
<h3 class="orderInfo__sectionTitle">배송지 정보 1</h3>
<div class="order-payment__recipient-wrapper multiOrdrInnerShipping multiShippingId1">
<div class="order-payment__multiDelivery-address address-hide multiFrstDlvylc">
</div>
<div class="cartOrder__list">
<div class="table-wrapper">
<table class="table vertical">
<caption>해당 테이블에 대한 설명</caption>
<!-- 각 열 width 설정 -->
<colgroup>
<col style="width: 400px;">
<col style="width: 120px">
<col style="width: 120px">
<col style="width: auto;">
</colgroup>
<thead>
<tr>
<th>상품명</th>
<th>주문수량</th>
<th>할인금액</th>
<th>상품금액</th>
</tr>
</thead>
<tbody class="multiOrdrGoodsList1">
<%-- <tr>--%>
<%-- <td>--%>
<%-- <div class="cartItem">--%>
<%-- <div class="cartItem__image">--%>
<%-- <a href="">--%>
<%-- <img src="../resources/images/상품이미지01.png"--%>
<%-- alt="">--%>
<%-- </a>--%>
<%-- </div>--%>
<%-- <div class="cartItem__productInfo">--%>
<%-- <a href="" class="cartItem__productTitle">초임계--%>
<%-- 식물성 알티지 오메가3 fd fd</a>--%>
<%-- <span class="cartItem__productOption">--%>
<%-- <span class="option-badge">옵션</span>--%>
<%-- 식물성알티지오메가3 1박스--%>
<%-- </span>--%>
<%-- </div>--%>
<%-- </div>--%>
<%-- </td>--%>
<%-- <td>--%>
<%-- <div class="product-count__amount-counter">--%>
<%-- <button--%>
<%-- class="product-count__amount-btn minus"><span--%>
<%-- class="visually-hidden">감소</span></button>--%>
<%-- <span class="product-count__amount-number">1</span>--%>
<%-- <button class="product-count__amount-btn plus"><span--%>
<%-- class="visually-hidden">추가</span></button>--%>
<%-- </div>--%>
<%-- <div>--%>
<%-- ( <span class="red-4">2</span> / <span class="gray-6">10</span> )--%>
<%-- </div>--%>
<%-- </td>--%>
<%-- <td>--%>
<%-- <span class="cartItem__discountPrice"><span--%>
<%-- class="cartItem__discountMinus">(-)</span><span--%>
<%-- class="comma">20000</span><span--%>
<%-- class="priceUnit">${curUnit}</span></span>--%>
<%-- </td>--%>
<%-- <td>--%>
<%-- <span class="cartItem__beforePrice"><span--%>
<%-- class="comma">79000</span>${curUnit}</span>--%>
<%-- <span class="cartItem__afterPrice"><span--%>
<%-- class="comma">59000</span><span--%>
<%-- class="priceUnit">${curUnit}</span></span>--%>
<%-- </td>--%>
<%-- <td>--%>
<%-- <span class="cartItem__shippingFee"><span--%>
<%-- class=" comma">3000</span><span--%>
<%-- class="priceUnit">${curUnit}</span></span>--%>
<%-- </td>--%>
<%-- </tr>--%>
</tbody>
</table>
</div>
</div>
</div>
<div id="lastDlvylcArea">
</div>
<div class="center">
<button class="theme btn sm outline" id="multiDlvylcAdd">
배송지 추가 +
</button>
</div>
</div>
<div class="orderInfo__section">
<h3 class="orderInfo__sectionTitle">할인 정보</h3>
<form id="enuriForm">
<input type="hidden" name="setleAmt" id="setleAmt" value="">
<input type="hidden" name="stdrGoodsSetleAmt" id="stdrGoodsSetleAmt" value="">
<input type="hidden" name="dlvyAmt" id="cartCoupondlvyAmt" value="">
<input type="hidden" name="couponInnb" id="couponInnb" value="">
<input type="hidden" name="dwldCouponInnb" id="dwldCouponInnb" value="">
<input type="hidden" name="dplctDscntAt" id="dplctDscntAt" value="">
<input type="hidden" name="otrCouponSmtmUseAt" id="otrCouponSmtmUseAt" value="">
<input type="hidden" name="mngrFreeDlvyUseAt" value="N">
<input type="hidden" name="sopmalCd" id="sopmalCd" value="<c:out value="${purchsr.sopmalCd}"/>">
<input type="hidden" name="mbrDvCd" id="mbrDvCd" value="<c:out value="${purchsr.mbrDvCd}"/>">
<input type="hidden" name="cartDscntAmt" id="cartDscntAmt" value="0">
<input type="hidden" name="totalGoodsDscntAmt" id="totalGoodsDscntAmt" value="0">
<div class="table-wrapper orderInfo__table">
<table class="table">
<caption>할인 정보</caption>
<colgroup>
<col style="width: 180px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th><span class="orderInfo__title">장바구니 쿠폰</span></th>
<td>
<div class="select-box orderInfo__cartCoupon">
<select name="cartCouponList" id="cartCouponList" class="lg" title="장바구니 쿠폰">
<option value="" selected>선택</option>
</select>
</div>
</td>
</tr>
<tr <c:if test="${purchsr.ableMlgAmt <= 0}">style="display: none"</c:if>>
<th><span class="orderInfo__title">마일리지</span></th>
<td>
<div class="orderInfo__mileage">
<div class="inputWithBtn">
<input type="hidden" name="ableMlgAmt" id="ableMlgAmt" value="<c:out value="${purchsr.ableMlgAmt}"/>">
<input type="text" name="useMlgAmt" id="useMlgAmt" class="input-text text-right number" title="마일리지" placeholder="0">
<button type="button" id="btnAllUseMlgAmt" class="btn md outline">모두 사용</button>
</div>
<span class="orderInfo__mileageText">사용가능 마일리지 : <em><span class="comma"><c:out value="${purchsr.ableMlgAmt}"/></span>점</em></span>
</div>
</td>
</tr>
<c:if test = "${data.shopInfo.cashAt eq 'Y'}">
<tr>
<th><span class="orderInfo__title">GC 머니</span></th>
<td>
<div class="orderInfo__mileage">
<div class="inputWithBtn">
<input type="hidden" name="ableCashMlgAmt" id="ableCashMlgAmt" value="<c:out value="${purchsr.ableCashMlgAmt}"/>">
<input type="text" name="useCashMlgAmt" id="useCashMlgAmt" class="input-text text-right number" title="마일리지" placeholder="0">
<button type="button" id="btnAllUseCashMlgAmt" class="btn md outline">모두 사용</button>
</div>
<span class="orderInfo__mileageText">사용가능 GC 머니 : <em><span class="comma"><c:out value="${purchsr.ableCashMlgAmt}"/></span>${curUnit}</em></span>
</div>
</td>
</tr>
</c:if>
</tbody>
</table>
</div>
</form>
<div class="infoBox" id="saveMlg">
<div class="infoBox__title">예상 적립혜택</div>
<ul class="infoBox__list">
<li> 구매 확정 시 <i id="accmlMlgAmtSapn"></i> 적립
<c:forEach var="ntc" items="${data.mlgAccmlNtcList}">
<li>
<c:choose>
<c:when test="${'06' == ntc.bbsTyCd}">
리뷰 작성시 일반리뷰 <i><c:out value="${ntc.gnrlRvwAmt}"/>점</i> 적립, 사진리뷰 <i><c:out value="${ntc.photoRvwAmt}"/>점</i> 적립
</c:when>
<c:otherwise>
한달리뷰 <i><c:out value="${ntc.photoRvwAmt}"/>점</i> 적립
</c:otherwise>
</c:choose>
<c:if test="${not empty ntc.bgnDe && not empty ntc.endDe}">
<fmt:parseDate value="${ntc.bgnDe}" var="bgnDeDate" pattern="yyyyMMdd"/>
<fmt:formatDate value="${bgnDeDate}" var="bgnDe" pattern="yyyy-MM-dd"/>
<fmt:parseDate value="${ntc.endDe}" var="endDeDate" pattern="yyyyMMdd"/>
<fmt:formatDate value="${endDeDate}" var="endDe" pattern="yyyy-MM-dd"/>
(<c:out value="${bgnDe}"/> ~ <c:out value="${endDe}"/> 까지 <i><c:out value="${ntc.aditMlgAmt}"/>점</i> 추가 적립)
</c:if>
</li>
</c:forEach>
</ul>
</div>
</div>
<div class="orderInfo__section">
<c:set var="payInfo" value="${data.payInfo}"/>
<c:set var="gcpayCardUseAt" value="${'Y' == payInfo.gcpayCardUseAt}"/>
<c:set var="gcpayAcntnbUseAt" value="${'Y' == payInfo.gcpayAcntnbUseAt}"/>
<c:choose>
<c:when test="${gcpayCardUseAt || gcpayAcntnbUseAt}"><%-- GCpay 일때만 보여줌 --%>
<div class="orderInfo__sectionHeader">
<h3 class="orderInfo__sectionTitle">결제 정보</h3>
<div class="orderInfo__btnContainer">
<a href="#gcpay-cardInfo-pop" rel="modal:open" class="btn sm outline"><i class="icon icon_info"></i>GC PAY 카드 무이자 할부 행사 안내</a>
<a href="#gcpay-info" rel="modal:open" class="btn sm outline"><i class="icon icon_info"></i>GC PAY 안내</a>
<a href="javascript:void(0);" id="gcpay_set" class="btn sm outline">GC PAY 설정</a>
</div>
</div>
<div class="orderInfo__orderInfoTop">
<div class="gcpayEvent">
<img class="gcpayEvent__icon" src="/pc/images/icon_couponEvent.png" alt="">
<p class="gcpayEvent__title">[EVENT] GC PAY 간편결제 등록 시 500점 쿠폰 증정 <span class="misc">(계정당 최초 1회)</span></p>
<p class="gcpayEvent__content">사용 조건 : 3000${curUnit} 이상 구매 시 사용 가능 (자사몰, 오프라인 매장)<br>유효 기간 : 발급일 기준 15일 이내 사용 가능</p>
</div>
<p class="textInfo textInfo--dot">GC PAY 기존 등록 고객은 <em>"[GC PAY 설정]을 눌러 본인인증 후 좌측상단의 [&#60;]를 클릭"</em>하시면 목록에 보입니다.</p>
</div>
</c:when>
<c:otherwise>
<div class="orderInfo__sectionHeader">
<h3 class="orderInfo__sectionTitle">결제 정보</h3>
</div>
</c:otherwise>
</c:choose>
<form id="setleForm">
<input type="hidden" name="rlSetleAmt" id="rlSetleAmt" value="">
<input type="hidden" name="wonRlSetleAmt" id="wonRlSetleAmt" value="">
<input type="hidden" name="lmttUseMlg" id="lmttUseMlg" value="">
<input type="hidden" name="lmttUseCashMlg" id="lmttUseCashMlg" value="">
<input type="hidden" name="siteCdMid" id="siteCdMid" value="<c:out value="${payInfo.kcpMid}"/>">
<input type="hidden" name="dueDt" id="dueDt" value="<c:out value="${payInfo.dueDt}"/>">
<c:choose>
<c:when test="${gcpayCardUseAt || gcpayAcntnbUseAt}">
<input type="hidden" name="pgCmpnyNm" id="pgCmpnyNm" value="gcpay">
<input type="hidden" name="setleTyCd" id="setleTyCd" value="${gcpayCardUseAt ? '01' : '03'}">
</c:when>
<c:otherwise>
<input type="hidden" name="pgCmpnyNm" id="pgCmpnyNm" value="">
<input type="hidden" name="setleTyCd" id="setleTyCd" value="">
</c:otherwise>
</c:choose>
<input type="hidden" name="ordrDvCd" id="ordrDvCd" value="01">
<input type="hidden" name="gcpayCardUseAt" id="gcpayCardUseAt" value="${payInfo.gcpayCardUseAt}">
<input type="hidden" name="gcpayAcntnbUseAt" id="gcpayAcntnbUseAt" value="${payInfo.gcpayAcntnbUseAt}">
<input type="hidden" name="gcpayMethodId" id="gcpayMethodId" value="">
<input type="hidden" name="gcpayCardInstallmentPlan" id="gcpayCardInstallmentPlan" value="">
<input type="hidden" name="gcpayUseCardPoint" id="gcpayUseCardPoint" value="">
<input type="hidden" name="setleSetupTyCd" id="setleSetupTyCd" value="${payInfo.setleSetupTyCd}">
<div class="order-method ${gcpayCardUseAt || gcpayAcntnbUseAt ? 'order_gcPay' : ''}">
<c:if test="${gcpayCardUseAt}">
<div class="custom-radio is-medium listW chk_on">
<input type="radio" name="pg" id="pg01" value="gcpay" ${gcpayCardUseAt ? 'checked' : ''}>
<label for="pg01"><i class="icon icon_gcpay ml-5 mr-5"></i>카드간편결제</label>
</div>
<!--간편결제 영역-->
<div id="pg01Content" class="conW pgContent">
<div class="slideW cardSlideW">
</div>
<!--무이자 할부 하단영역-->
<div class="slideDep selectWrap">
</div>
<!--//무이자 할부 영역-->
</div>
<div id="cardMonth"></div>
<!--//간편결제 영역-->
</c:if>
<c:if test="${gcpayAcntnbUseAt}">
<div class="custom-radio is-medium ${gcpayCardUseAt ? '' : 'listW chk_on'}">
<input type="radio" name="pg" id="pg02" value="gcpay" ${gcpayCardUseAt ? '' : 'checked'}>
<label for="pg02"><i class="icon icon_gcpay ml-5 mr-5"></i>계좌간편결제</label>
</div>
<div id="pg02Content" class="conW pgContent" ${gcpayCardUseAt ? 'style="display: none"' : ''}>
<div class="slideW bankSlideW">
</div>
<div class="selectWrap">
<div class="b-checkbox-container cashReceipt-container">
<label class="b-checkbox checkbox is-medium" id="cashReceipt-check">
<input type="checkbox" id="gc-pay-bank-cash-receipt" value="">
<span class="check"></span>
<span class="control-label">현금영수증 신청하기</span>
</label>
</div>
<div id="gc-pay-bank-cash-receipt-content-inner"></div>
</div>
</div>
</c:if>
<%-- 퀵계좌이체 시작 --%>
<c:if test="${'Y' eq payInfo.rltmAcntUseAt}">
<div class="custom-radio is-medium">
<input type="radio" name="pg" id="pg05" value="toss03">
<label for="pg05">퀵계좌이체(0.5% 즉시할인)</label>
</div>
<div id="pg05Content" class="pgContent" style="display: none">
<div class="selectWrap">
<div class="b-checkbox-container cashReceipt-container">
<label class="b-checkbox checkbox is-medium" id="transfer-cashReceipt-check">
<input type="checkbox" id="transfer-cash-receipt" value="">
<span class="check"></span>
<span class="control-label">현금영수증 신청하기</span>
</label>
</div>
<div id="transfer-cash-receipt-content-inner"></div>
</div>
</div>
</c:if>
<%-- 퀵계좌이체 끝 --%>
<%-- Stripe 시작 --%>
<%-- <c:if test="${'Y' eq payInfo.rltmAcntUseAt}">--%>
<div class="custom-radio is-medium">
<input type="radio" name="pg" id="st01" value="stripe">
<label for="st01">엔화 결제</label>
</div>
<%-- </c:if>--%>
<%-- Stripe 끝 --%>
<%-- toss 결제 시작 --%>
<c:if test="${'02' eq payInfo.setleSetupTyCd}">
<div class="custom-radio is-medium">
<input type="radio" name="pg" id="pg03" value="toss">
<label for="pg03">일반결제</label>
</div>
<div id="pg03Content" class="pgContent order-method-normal" <%-- style="display: none"--%>>
<div class="order-method-normal__btn-container">
<c:if test="${'Y' eq payInfo.cardUseAt}">
<button type="button" name="01" id="card" class="order-method-normal__btn gift_pay">
<div class="order-method-normal__icon order-method-normal__icon--card"></div>신용카드
</button>
</c:if>
<%--
<c:if test="${'Y' eq payInfo.rltmAcntUseAt}">
<button type="button" name="03" id="acount" class="order-method-normal__btn gift_pay">
<div class="order-method-normal__icon order-method-normal__icon--transfer"></div>실시간 계좌이체
</button>
</c:if>
--%>
<c:if test="${'Y' eq payInfo.virtlAcntUseAt}">
<button type="button" name="04" id="virtual" class="order-method-normal__btn">
<div class="order-method-normal__icon order-method-normal__icon--account"></div>가상계좌
</button>
</c:if>
<c:if test="${'Y' eq payInfo.virtlAcntEscwUseAt}">
<button type="button" name="05" id="escrow-virtual" class="order-method-normal__btn not_multi_pay">
<div class="order-method-normal__icon order-method-normal__icon--account"></div>가상계좌(에스크로)
</button>
</c:if>
<c:if test="${'Y' eq payInfo.nbkkUseAt}">
<button type="button" name="02" id="bank" class="order-method-normal__btn">
<div class="order-method-normal__icon order-method-normal__icon--deposit"></div>무통장
</button>
</c:if>
<c:if test="${'Y' eq payInfo.paycoUseAt}">
<button type="button" name="10" id="payco" class="order-method-normal__btn gift_pay">
<div class="order-method-normal__icon order-method-normal__icon--payco"></div>PAYCO
</button>
</c:if>
<c:if test="${'Y' eq payInfo.tpayUseAt}">
<button type="button" name="tosspay" id="tosspay" class="order-method-normal__btn gift_pay">
<div class="order-method-normal__icon order-method-normal__icon--toss"></div>토스페이
</button>
</c:if>
<c:if test="${'Y' eq payInfo.npayUseAt}">
<button type="button" name="naverpay" id="naverpay" class="order-method-normal__btn gift_pay">
<div class="order-method-normal__icon order-method-normal__icon--naver"></div>네이버페이
</button>
</c:if>
<c:if test="${'Y' eq payInfo.kpayUseAt}">
<button type="button" name="kakaopay" id="kakaopay" class="order-method-normal__btn gift_pay">
<div class="order-method-normal__icon order-method-normal__icon--kakao"></div>카카오페이
</button>
</c:if>
</div>
<div class="order-method-normal__content-wrapper">
<c:if test="${'Y' eq payInfo.cardUseAt}">
<div id="card-content" class="order-method-normal__content" style="display: none">
<div id="card-content-inner" class="order-method-normal__content-inner">
<p class="fyi gray-7 mt-10 ml-10 noempty">발급정보 : 카드매출전표(또는 휴대폰결제전표)로 대체합니다.</p>
</div>
</div>
</c:if>
<%--
<c:if test="${'Y' eq payInfo.rltmAcntUseAt}">
<div id="acount-content" class="order-method-normal__content" style="display: none">
<div id="acount-content-inner" class="order-method-normal__content-inner"></div>
</div>
</c:if>
--%>
<c:if test="${'Y' eq payInfo.virtlAcntUseAt}">
<div id="virtual-content" class="order-method-normal__content" style="display: none">
<div id="virtual-content-inner" class="order-method-normal__content-inner"></div>
</div>
</c:if>
<c:if test="${'Y' eq payInfo.virtlAcntEscwUseAt}">
<div id="escrow-virtual-content" class="order-method-normal__content" style="display: none">
<div id="escrow-virtual-content-inner" class="order-method-normal__content-inner"></div>
</div>
</c:if>
<c:if test="${'Y' eq payInfo.nbkkUseAt}">
<div id="bank-content" class="order-method-normal__content" style="display: none">
<div id="bank-content-inner" class="order-method-normal__content-inner"></div>
</div>
</c:if>
<c:if test="${'Y' eq payInfo.paycoUseAt}">
<div id="payco-content" class="order-method-normal__content" style="display: none">
<div id="payco-content-inner" class="order-method-normal__content-inner">
<div class="infoBox noempty">
<h6 class="infoBox__title">PAYCO 간편결제 안내</h6>
<ol class="infoBox__list">
<li>PAYCO는 온/오프라인 쇼핑은 물론 송금, 멤버십 적립까지 가능한 통합 서비스입니다.</li>
<li>휴대폰과 카드 명의자가 동일해야 결제 가능하며, 결제금액 제한은 없습니다.
<br>- 지원카드: 모든 국내 신용/체크카드
</li>
</ol>
</div>
<p class="textInfo noempty"><i class="icon icon_textInfo--sm"></i>발급정보 : 카드매출전표(또는 휴대폰결제전표)로 대체합니다.</p>
</div>
</div>
</c:if>
<c:if test="${'Y' eq payInfo.tpayUseAt}">
<div id="acount-content" class="order-method-normal__content" style="display: none">
<div id="acount-content-inner" class="order-method-normal__content-inner">
<p class="fyi gray-7 mt-10 ml-10 noempty">발급정보 : 카드매출전표(또는 휴대폰결제전표)로 대체합니다.</p>
</div>
</div>
</c:if>
<c:if test="${'Y' eq payInfo.npayUseAt}">
<div id="naverpay-content" class="order-method-normal__content" style="display: none">
<div id="naverpay-content-inner" class="order-method-normal__content-inner">
<div class="noempty">
</div>
</div>
</div>
</c:if>
<c:if test="${'Y' eq payInfo.kpayUseAt}">
<div id="kakaopay-content" class="order-method-normal__content" style="display: none">
<div id="kakaopay-content-inner" class="order-method-normal__content-inner">
<div class="noempty">
</div>
</div>
</div>
</c:if>
</div>
</div>
</c:if>
<%-- toss 결제 종료 --%>
<%-- kcp 결제 시작 --%>
<c:if test="${'01' eq payInfo.setleSetupTyCd}">
<div class="custom-radio is-medium">
<input type="radio" name="pg" id="pg04" value="kcp">
<label for="pg04">일반결제</label>
</div>
<div id="pg04Content" class="pgContent order-method-normal" <%-- style="display: none"--%>>
<div class="order-method-normal__btn-container">
<c:if test="${'Y' eq payInfo.cardUseAt}">
<button type="button" name="01" id="card" class="order-method-normal__btn gift_pay">
<div class="order-method-normal__icon order-method-normal__icon--card"></div>신용카드
</button>
</c:if>
<%--
<c:if test="${'Y' eq payInfo.rltmAcntUseAt}">
<button type="button" name="03" id="acount" class="order-method-normal__btn gift_pay">
<div class="order-method-normal__icon order-method-normal__icon--transfer"></div>실시간 계좌이체
</button>
</c:if>
--%>
<c:if test="${'Y' eq payInfo.virtlAcntUseAt}">
<button type="button" name="04" id="virtual" class="order-method-normal__btn">
<div class="order-method-normal__icon order-method-normal__icon--account"></div>가상계좌
</button>
</c:if>
<c:if test="${'Y' eq payInfo.virtlAcntEscwUseAt}">
<button type="button" name="05" id="escrow-virtual" class="order-method-normal__btn not_multi_pay">
<div class="order-method-normal__icon order-method-normal__icon--account"></div>가상계좌(에스크로)
</button>
</c:if>
<c:if test="${'Y' eq payInfo.nbkkUseAt}">
<button type="button" name="02" id="bank" class="order-method-normal__btn">
<div class="order-method-normal__icon order-method-normal__icon--deposit"></div>무통장
</button>
</c:if>
<c:if test="${'Y' eq payInfo.paycoUseAt}">
<button type="button" name="10" id="payco" class="order-method-normal__btn gift_pay">
<div class="order-method-normal__icon order-method-normal__icon--payco"></div>PAYCO
</button>
</c:if>
<c:if test="${'Y' eq payInfo.tpayUseAt}">
<button type="button" name="tosspay" id="tosspay" class="order-method-normal__btn gift_pay">
<div class="order-method-normal__icon order-method-normal__icon--toss"></div>토스페이
</button>
</c:if>
<c:if test="${'Y' eq payInfo.npayUseAt}">
<button type="button" name="naverpay" id="naverpay" class="order-method-normal__btn gift_pay">
<div class="order-method-normal__icon order-method-normal__icon--naver"></div>네이버페이
</button>
</c:if>
<c:if test="${'Y' eq payInfo.kpayUseAt}">
<button type="button" name="kakaopay" id="kakaopay" class="order-method-normal__btn gift_pay">
<div class="order-method-normal__icon order-method-normal__icon--kakao"></div>카카오페이
</button>
</c:if>
</div>
<div class="order-method-normal__content-wrapper">
<c:if test="${'Y' eq payInfo.cardUseAt}">
<div id="card-content" class="order-method-normal__content" style="display: none">
<div id="card-content-inner" class="order-method-normal__content-inner">
<p class="fyi gray-7 mt-10 ml-10 noempty">발급정보 : 카드매출전표(또는 휴대폰결제전표)로 대체합니다.</p>
</div>
</div>
</c:if>
<%--
<c:if test="${'Y' eq payInfo.rltmAcntUseAt}">
<div id="acount-content" class="order-method-normal__content" style="display: none">
<div id="acount-content-inner" class="order-method-normal__content-inner"></div>
</div>
</c:if>
--%>
<c:if test="${'Y' eq payInfo.virtlAcntUseAt}">
<div id="virtual-content" class="order-method-normal__content" style="display: none">
<div id="virtual-content-inner" class="order-method-normal__content-inner"></div>
</div>
</c:if>
<c:if test="${'Y' eq payInfo.virtlAcntEscwUseAt}">
<div id="escrow-virtual-content" class="order-method-normal__content" style="display: none">
<div id="escrow-virtual-content-inner" class="order-method-normal__content-inner"></div>
</div>
</c:if>
<c:if test="${'Y' eq payInfo.nbkkUseAt}">
<div id="bank-content" class="order-method-normal__content" style="display: none">
<div id="bank-content-inner" class="order-method-normal__content-inner"></div>
</div>
</c:if>
<c:if test="${'Y' eq payInfo.paycoUseAt}">
<div id="payco-content" class="order-method-normal__content" style="display: none">
<div id="payco-content-inner" class="order-method-normal__content-inner">
<div class="infoBox noempty">
<h6 class="infoBox__title">PAYCO 간편결제 안내</h6>
<ol class="infoBox__list">
<li>PAYCO는 온/오프라인 쇼핑은 물론 송금, 멤버십 적립까지 가능한 통합 서비스입니다.</li>
<li>휴대폰과 카드 명의자가 동일해야 결제 가능하며, 결제금액 제한은 없습니다.
<br>- 지원카드: 모든 국내 신용/체크카드
</li>
</ol>
</div>
<p class="textInfo noempty"><i class="icon icon_textInfo--sm"></i>발급정보 : 카드매출전표(또는 휴대폰결제전표)로 대체합니다.</p>
</div>
</div>
</c:if>
<c:if test="${'Y' eq payInfo.tpayUseAt}">
<div id="acount-content" class="order-method-normal__content" style="display: none">
<div id="acount-content-inner" class="order-method-normal__content-inner">
<p class="fyi gray-7 mt-10 ml-10 noempty">발급정보 : 카드매출전표(또는 휴대폰결제전표)로 대체합니다.</p>
</div>
</div>
</c:if>
<c:if test="${'Y' eq payInfo.npayUseAt}">
<div id="naverpay-content" class="order-method-normal__content" style="display: none">
<div id="naverpay-content-inner" class="order-method-normal__content-inner">
<div class="noempty">
</div>
</div>
</div>
</c:if>
<c:if test="${'Y' eq payInfo.kpayUseAt}">
<div id="kakaopay-content" class="order-method-normal__content" style="display: none">
<div id="kakaopay-content-inner" class="order-method-normal__content-inner">
<div class="noempty">
</div>
</div>
</div>
</c:if>
</div>
</div>
</c:if>
<%-- kcp 결제 종료 --%>
<%-- 키움 결제 시작 --%>
<c:if test="${'03' eq payInfo.setleSetupTyCd}">
<div class="custom-radio is-medium">
<input type="radio" name="pg" id="pg06" value="kiwoom">
<label for="pg06">일반결제</label>
</div>
<div id="pg06Content" class="pgContent order-method-normal" <%-- style="display: none"--%>>
<div class="order-method-normal__btn-container">
<c:if test="${'Y' eq payInfo.cardUseAt}">
<button type="button" name="01" id="card" class="order-method-normal__btn gift_pay">
<div class="order-method-normal__icon order-method-normal__icon--card"></div>신용카드
</button>
</c:if>
<%--
<c:if test="${'Y' eq payInfo.rltmAcntUseAt}">
<button type="button" name="03" id="acount" class="order-method-normal__btn gift_pay">
<div class="order-method-normal__icon order-method-normal__icon--transfer"></div>실시간 계좌이체
</button>
</c:if>
--%>
<c:if test="${'Y' eq payInfo.virtlAcntUseAt}">
<button type="button" name="04" id="virtual" class="order-method-normal__btn">
<div class="order-method-normal__icon order-method-normal__icon--account"></div>가상계좌
</button>
</c:if>
<c:if test="${'Y' eq payInfo.virtlAcntEscwUseAt}">
<button type="button" name="05" id="escrow-virtual" class="order-method-normal__btn not_multi_pay">
<div class="order-method-normal__icon order-method-normal__icon--account"></div>가상계좌(에스크로)
</button>
</c:if>
<c:if test="${'Y' eq payInfo.nbkkUseAt}">
<button type="button" name="02" id="bank" class="order-method-normal__btn">
<div class="order-method-normal__icon order-method-normal__icon--deposit"></div>무통장
</button>
</c:if>
<c:if test="${'Y' eq payInfo.paycoUseAt}">
<button type="button" name="10" id="payco" class="order-method-normal__btn gift_pay">
<div class="order-method-normal__icon order-method-normal__icon--payco"></div>PAYCO
</button>
</c:if>
<c:if test="${'Y' eq payInfo.tpayUseAt}">
<button type="button" name="tosspay" id="tosspay" class="order-method-normal__btn gift_pay">
<div class="order-method-normal__icon order-method-normal__icon--toss"></div>토스페이
</button>
</c:if>
<c:if test="${'Y' eq payInfo.npayUseAt}">
<button type="button" name="naverpay" id="naverpay" class="order-method-normal__btn gift_pay">
<div class="order-method-normal__icon order-method-normal__icon--naver"></div>네이버페이
</button>
</c:if>
<c:if test="${'Y' eq payInfo.kpayUseAt}">
<button type="button" name="kakaopay" id="kakaopay" class="order-method-normal__btn gift_pay">
<div class="order-method-normal__icon order-method-normal__icon--kakao"></div>카카오페이
</button>
</c:if>
</div>
<div class="order-method-normal__content-wrapper">
<c:if test="${'Y' eq payInfo.cardUseAt}">
<div id="card-content" class="order-method-normal__content" style="display: none">
<div id="card-content-inner" class="order-method-normal__content-inner">
<p class="fyi gray-7 mt-10 ml-10 noempty">발급정보 : 카드매출전표(또는 휴대폰결제전표)로 대체합니다.</p>
</div>
</div>
</c:if>
<%--
<c:if test="${'Y' eq payInfo.rltmAcntUseAt}">
<div id="acount-content" class="order-method-normal__content" style="display: none">
<div id="acount-content-inner" class="order-method-normal__content-inner"></div>
</div>
</c:if>
--%>
<c:if test="${'Y' eq payInfo.virtlAcntUseAt}">
<div id="virtual-content" class="order-method-normal__content" style="display: none">
<div id="virtual-content-inner" class="order-method-normal__content-inner"></div>
</div>
</c:if>
<c:if test="${'Y' eq payInfo.virtlAcntEscwUseAt}">
<div id="escrow-virtual-content" class="order-method-normal__content" style="display: none">
<div id="escrow-virtual-content-inner" class="order-method-normal__content-inner"></div>
</div>
</c:if>
<c:if test="${'Y' eq payInfo.nbkkUseAt}">
<div id="bank-content" class="order-method-normal__content" style="display: none">
<div id="bank-content-inner" class="order-method-normal__content-inner"></div>
</div>
</c:if>
<c:if test="${'Y' eq payInfo.paycoUseAt}">
<div id="payco-content" class="order-method-normal__content" style="display: none">
<div id="payco-content-inner" class="order-method-normal__content-inner">
<div class="infoBox noempty">
<h6 class="infoBox__title">PAYCO 간편결제 안내</h6>
<ol class="infoBox__list">
<li>PAYCO는 온/오프라인 쇼핑은 물론 송금, 멤버십 적립까지 가능한 통합 서비스입니다.</li>
<li>휴대폰과 카드 명의자가 동일해야 결제 가능하며, 결제금액 제한은 없습니다.
<br>- 지원카드: 모든 국내 신용/체크카드
</li>
</ol>
</div>
<p class="textInfo noempty"><i class="icon icon_textInfo--sm"></i>발급정보 : 카드매출전표(또는 휴대폰결제전표)로 대체합니다.</p>
</div>
</div>
</c:if>
<c:if test="${'Y' eq payInfo.tpayUseAt}">
<div id="acount-content" class="order-method-normal__content" style="display: none">
<div id="acount-content-inner" class="order-method-normal__content-inner">
<p class="fyi gray-7 mt-10 ml-10 noempty">발급정보 : 카드매출전표(또는 휴대폰결제전표)로 대체합니다.</p>
</div>
</div>
</c:if>
<%--
<c:if test="${'Y' eq payInfo.npayUseAt}">
<div id="naverpay-content" class="order-method-normal__content" style="display: none">
<div id="naverpay-content-inner" class="order-method-normal__content-inner"></div>
</div>
</c:if>
<c:if test="${'Y' eq payInfo.kpayUseAt}">
<div id="kakaopay-content" class="order-method-normal__content" style="display: none">
<div id="kakaopay-content-inner" class="order-method-normal__content-inner">
<div class="noempty">
</div>
</div>
</div>
</c:if>
--%>
</div>
</div>
</c:if>
<%-- 키움 결제 종료 --%>
</div>
</form>
</div>
</div>
</div>
<div class="cartOrder__right">
<div class="cartOrder__sticky">
<div class="cartOrderBox">
<h5 class="cartOrderBox__title">결제예정금액</h5>
<ul class="cartOrderBox__list">
<li>
<span class="cartOrderBox__th">총 주문금액</span>
<span class="cartOrderBox__td"><span class="comma" id="goodsAmtSapn">0</span><span class="priceUnit">${curUnit}</span></span>
</li>
<li>
<span class="cartOrderBox__th">배송비</span>
<span class="cartOrderBox__td"><span class="comma" id="dlvyAmtSapn">0</span><span class="priceUnit">${curUnit}</span></span>
</li>
<li>
<span class="cartOrderBox__th">총 할인금액</span>
<span class="cartOrderBox__td"><span class="cartOrderBox__discountMinus">(-)</span><span id="dscntAmtSapn" class="comma">0</span><span class="priceUnit">${curUnit}</span></span>
</li>
</ul>
<div class="cartOrderBox__total">
<span class="cartOrderBox__totalTh">총 결제금액</span>
<span class="cartOrderBox__td"><span id="setleAmtSapn" class="comma">0</span><span class="priceUnit">${curUnit}</span></span>
</div>
<div class="cartOrderBox__total cartOrderBox__totalKr" style="margin-top: 10px;">
<span class="cartOrderBox__totalTh"></span>
<span class="cartOrderBox__totalTd"><span id="setleAmtKrSapn" class="comma">0</span><span class="priceUnit">${krUnit}</span></span>
</div>
<%--광고 수신 동의 여부가 null 일 시 --%>
<c:if test="${empty purchsr.marktRecptnAgreAt}">
<c:if test = "${not empty stplat.resultList}">
<c:forEach var = "stplat" items = "${stplat.resultList}">
<c:if test = "${stplat.stplatDvCd eq '05'}">
<div class="nonMemberTerms__item">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input class="termCheck" type="checkbox" value="Y" name="marktRecptnAgreAt" id="marktRecptnAgreAt">
<span class="check"></span>
<span class="control-label"><c:if test = "${stplat.essntlAt eq 'Y'}">[필수]</c:if> <c:out value="${stplat.stplatDvNm}"/></span>
</label>
<input type = "hidden" value = "N" id = "agreeChkAt"/>
</div>
<c:if test = "${stplat.cnWritngAt eq 'Y'}">
<a class="nonMemberTerms__detail"
href="javascript:fn_select_clause('<c:out value="${stplat.stplatDvCd}"/>');">보기</a>
</c:if>
</div>
</c:if>
</c:forEach>
</c:if>
</c:if>
<div class="product-btn-container"><button type="button" id="btnBuy" class="btn theme large cartOrderBox__buyBtn">구매하기</button></div>
<%--
<div class="product-btn-container">
<button class="gift-btn">선물</button>
<button class="btn large outline">여러곳 배송</button>
<button onclick="fn_go_ordr_failr()" class="btn large gray2">정기배송</button>
</div>
--%>
</div>
<%--
<div style="margin-top: 24px;">
<div id="NC_ID_1699495131279295" class="npay_storebtn_bx">
<div id="NPAY_BUTTON_BOX_ID" class="npay_button_box ">
<div class="npay_button">
<div class="npay_text"><span class="npay_blind">NAVER 네이버 ID로 간편구매 네이버페이</span></div>
<table class="npay_btn_list" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="npay_btn_item">
<a id="NPAY_BUY_LINK_IDNC_ID_1699495131279295" href="#" class="npay_btn_link npay_btn_pay btn_green" style="box-sizing:content-box; " title="새창">
<span class="npay_blind">네이버페이 구매하기 @@@@@@@@@@@@@@@</span>
</a>
</td>
<td class="npay_btn_item btn_width">
<a id="NPAY_WISH_LINK_IDNC_ID_1699495131279295" href="#" class="npay_btn_link npay_btn_zzim" style="box-sizing:content-box; " title="새창">
<span class="npay_blind">찜하기</span>
</a>
</td>
</tr>
</tbody>
</table>
</div>
<div id="NPAY_EVENT_ID" class="npay_event">
<a id="NPAY_PROMOTION_PREV_IDNC_ID_1699495131279295" href="#" class="npay_more npay_more_prev">
<span class="npay_blind">이전</span>
</a>
<p id="NPAY_PROMOTION_IDNC_ID_1699495131279295" class="npay_event_text">
<strong class="event_title">이벤트</strong>
<a href="https://new-m.pay.naver.com/pcpay/eventbenefit" class="event_link" target="_blank">네이버페이</a>
</p>
<a id="NPAY_PROMOTION_NEXT_IDNC_ID_1699495131279295" href="#" class="npay_more npay_more_next">
<span class="npay_blind">다음</span>
</a>
</div>
</div>
</div>
</div>
--%>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
<%-- 공통 Footer --%>
<jsp:include page="/WEB-INF/views/comm/Footer.jsp"/>
<c:if test="${'Y' == data.payInfo.gcpayCardUseAt || 'Y' == payInfo.gcpayAcntnbUseAt}">
<script src="https://js.tosspayments.com/v1/brandpay"></script>
<script>
const gcPayClientKey = '${data.payInfo.bpayClntKey}';
let tokenYn = false;
</script>
<script type="text/javascript" src="<c:url value='/pc/js/gcpay.js'/>"></script>
<script type="text/javascript" src="<c:url value='/pc/css/jqueryui/slick.min.js'/>"></script>
<link rel="stylesheet" href="<c:url value='/pc/css/gcpay.css'/>">
<link rel="stylesheet" href="<c:url value='/pc/css/slick.css'/>">
<link rel="stylesheet" href="<c:url value='/pc/css/slick-theme.css'/>">
<c:if test="${not empty sessionScope.gcpay_token && not empty sessionScope.gcpay_id}">
<c:if test="${sessionScope.gcpay_id == data.purchsr.mbrInnb}">
<script>
tokenYn = true;
</script>
</c:if>
</c:if>
<script>
set_slick(true);
gcpay_add_info();
get_promotion_data();
initBrandPay('<c:out value="${data.purchsr.mbrInnb}"/>',tokenYn);
</script>
<!-- GC PAY 카드 무이자 할부 행사 안내 모달 -->
<div id="gcpay-cardInfo-pop" class="modal" style="max-width: 540px;">
<div class="modal-header">
<h4>GC PAY 카드 무이자 할부 행사 안내</h4>
</div>
<div class="modal-content">
<div class="table-wrapper">
<table class="table vertical tight">
<caption>카드 무이자 할부 행사</caption>
<colgroup>
<col style="width: 24%;">
<col style="width: 38%;">
<col style="width: 38%;">
</colgroup>
<thead>
<tr>
<th>카드명</th>
<th>금액기준(이상)</th>
<th>행사 개월수</th>
</tr>
</thead>
<tbody>
<tr class="row-no-data">
<td colspan="100%" class="text-center">조회된 데이터가 없습니다.</td>
</tr>
</tbody>
</table>
</div>
<div class="gcpay-eventInfo">
<p class="fyi">GC PAY 카드간편결제 시 무이자 할부 결제 금액과 행사 개월수에 대한 안내입니다.</p>
<p class="fyi">일반결제의 신용카드 및 타 결제 수단에 대한 무이자 할부 기준은 다르며, 별도 안내를 참고해 이용해주세요.</p>
<p class="fyi">법인(개인사업자카드 포함)/체크/기프트카드 등 일부 카드 제외.</p>
<p class="fyi">제휴사이트를 통한 접속 시 무이자 혜택이 제외될 수 있습니다.</p>
<p class="fyi">※ 별도 고지없이 행사 내용/기간 변경될 수 있으며, 자세한 문의는 각 카드사로 확인 부탁드립니다.</p>
</div>
</div>
</div>
<!-- GC PAY 사용안내 모달 -->
<div id="gcpay-info" class="modal default" style="max-width: 500px;">
<div class="modal-header">
<div class="modal-header__title">GC PAY 안내</div>
</div>
<div class="modal-content">
<div class="gcpayGuide">
<img src="/pc/images/popup_setting_top.png" alt="">
<div class="gcpayGuideSlick">
<div class="gcpayGuideSlick__item">
<img src="/pc/images/popup_setting_01.png" alt="">
</div>
<div class="gcpayGuideSlick__item">
<img src="/pc/images/popup_setting_02.png" alt="">
</div>
<div class="gcpayGuideSlick__item">
<img src="/pc/images/popup_setting_03.png" alt="">
</div>
</div>
</div>
<div class="infoBox">
<div class="infoBox__title">GCPay 간편결제의 장점</div>
<ul class="infoBox__list">
<li>주로 사용하는 결제 수단(카드, 계좌)을 쉽게 등록 관리할 수 있어요.</li>
<li>결제 비밀번호만 입력하면 등록 결제 수단으로 빠르게 결제할 수 있어요.</li>
<li>간편결제로 등록한 신용카드도 각 카드사의 혜택은 그대로 받을 수 있어요.</li>
<li>※ 카드사 행사에 따라 무이자 할부 가능. 카드사에 따라 카드사 포인트 사용 가능</li>
</ul>
</div>
</div>
</div>
</c:if>
<div id="modalDiv"></div>
<div id="setleDiv"></div>
<!-- 약관팝업 -->
<div id="nmbrClause" class="modal default" style="max-width: 620px;">
<div class="modal-header">
<div class="modal-header__title" id = "nmbrClause-sj"></div>
</div>
<div class="modal-content" id = "nmbrClause-content">
</div>
<div class="modal-footer">
<a href="#" rel="modal:close" class="btn theme large">확인</a>
</div>
</div>
<!-- 마케팅 동의 팝업 -->
<div id="nmbrClauseAgree" class="modal default" style="max-width: 620px;">
<div class="modal-header">
<div class="modal-header__title" id = "nmbrClauseAgree-sj"></div>
</div>
<div class="modal-content" id = "nmbrClauseAgree-content">
</div>
<div class="modal-footer">
<a href="#" rel="modal:close" class="btn theme large" onclick="fn_agree_pop('Y');">동의</a>
<a href="#" rel="modal:close" class="btn large outline" onclick="fn_agree_pop('N');">비동의</a>
</div>
</div>
<script>
/*마케팅 동의 팝업 버튼 클릭시 스크립트 조작 함수*/
const fn_agree_pop = (agreeAt) => {
if(agreeAt === 'Y'){
$('#marktRecptnAgreAt').click();
}
$('#agreeChkAt').val('Y');
$('#btnBuy').click();
}
</script>
</body>
</html>