RefundDetailForm.html 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org">
  4. <!--
  5. *******************************************************************************
  6. * @source : RefundDetailForm.html
  7. * @desc : 환불상세팝업
  8. *============================================================================
  9. * STYLE24
  10. * Copyright(C) 2020 TSIT, All rights reserved.
  11. *============================================================================
  12. * VER DATE AUTHOR DESCRIPTION
  13. * === =========== ========== =============================================
  14. * 1.0 2020.11.16 moon 최초 작성
  15. *******************************************************************************
  16. -->
  17. <div class="modalPopup" data-width="1200" data-height="800">
  18. <div class="panelStyle">
  19. <!-- TITLE -->
  20. <div class="panelTitle">
  21. <h2>환불컨펌 상세</h2>
  22. <button type="button" class="close" onclick="uifnPopupClose('popupWithdrawDetail')"><i class="fa fa-times"></i></button>
  23. </div>
  24. <!-- //TITLE -->
  25. <div class="panelContent" style="height:90%; overflow-y:auto; padding:0px 20px !important; ">
  26. <form id="withdrawDetailForm" name="withdrawDetailForm" action="#" th:method="post" onSubmit="return false">
  27. <input type="hidden" name="orgChgReason" readonly/>
  28. <input type="hidden" name="orgEncloseFee" readonly/>
  29. <table class="frmStyle">
  30. <colgroup>
  31. <col style="width:20%;" />
  32. <col style="width:30%;" />
  33. <col style="width:20%;" />
  34. <col style="width:30%;" />
  35. <col />
  36. </colgroup>
  37. <tr>
  38. <th>회수구분</th>
  39. <td>
  40. <span id="wdGbNm"></span>
  41. </td>
  42. <th>도착일자</th>
  43. <td>
  44. <span id="arriValDt"></span>
  45. </td>
  46. </tr>
  47. <tr>
  48. <th>최종요청사유</th>
  49. <td>
  50. <span id="chgReasonNm">
  51. <select name="selectChgReason" onchange="fnChangeChgReason($(this).val());">
  52. <option value="">[선택하세요]</option>
  53. <option th:if="${chgReasonList}" th:each="oneData, status : ${chgReasonList}" th:value="|${oneData.cd}|" th:text="|${oneData.cdNm}|"></option>
  54. </select>
  55. </span>
  56. </td>
  57. <th>귀책사유<i class="star"></i></th>
  58. <td>
  59. <span id="chgReasonText"></span>
  60. </td>
  61. </tr>
  62. <tr>
  63. <th>동봉비</th>
  64. <td>
  65. <input type="text" name="encloseFee" data-valid-type="integer" onchange="fnChangeAmt()" class="w100 aR"/>원
  66. </td>
  67. <th>착불비</th>
  68. <td>
  69. <input type="text" name="codFee" data-valid-type="integer" onChange="fnChangeAmt()" class="w100 aR"/>원
  70. </td>
  71. </tr>
  72. <tr>
  73. <th>추가결제비</th>
  74. <td>
  75. <input type="text" name="addPayCost" data-valid-type="integer" readonly="readonly" onChange="fnChangeAmt()" class="w100 aR"/>원
  76. </td>
  77. <th>알림톡미전송여부</th>
  78. <td>
  79. <label class="chkBox">
  80. <input type="checkbox" name="msgStat" id="msgStat" checked/>
  81. </label>
  82. </td>
  83. </tr>
  84. <tr>
  85. <th>PG점프</th>
  86. <td>
  87. <label class="chkBox" onclick="fnChangePgStat();">
  88. <input type="checkbox" name="pgStats" id="pgStats"/>
  89. </label>
  90. </td>
  91. <th>입금액</th>
  92. <td>
  93. <input type="text" name="depositAmt" id="depositAmt" data-valid-type="integer" readonly="readonly" class="w100 aR" />원
  94. </td>
  95. </tr>
  96. <tr>
  97. <th>클레임메모</th>
  98. <td colspan="3">
  99. <span id="chgMemo"></span>
  100. </td>
  101. </tr>
  102. <tr>
  103. <th>회수메모</th>
  104. <td colspan="3">
  105. <span id="wdMemo"></span>
  106. </td>
  107. </tr>
  108. </table>
  109. <div id="divRefundInfo2">
  110. <h4>환불금액</h4>
  111. <table class="frmStyle">
  112. <colgroup>
  113. <col style="width:20%;"/>
  114. <col style="width:30%;"/>
  115. <col style="width:20%;"/>
  116. <col style="width:30%;"/>
  117. </colgroup>
  118. <tbody>
  119. <tr>
  120. <th>환불 금액</th>
  121. <td colspan="3"><span id="refundAmt"></span>원 </td>
  122. </tr>
  123. </tbody>
  124. </table>
  125. </div>
  126. <div id="divRefundInfo">
  127. <h4>환불예정금액</h4>
  128. <table class="frmStyle">
  129. <colgroup>
  130. <col width="">
  131. <col width="">
  132. <col width="">
  133. <col width="">
  134. </colgroup>
  135. <thead>
  136. <tr>
  137. <th style="height:30px;">구분</th>
  138. <th style="height:30px;">항목</th>
  139. <th style="height:30px;">합계</th>
  140. <th style="height:30px;">내역</th>
  141. </tr>
  142. </thead>
  143. <tbody>
  144. <tr>
  145. <td style="height:25px;">상품금액</td>
  146. <td>취소상품금액</td>
  147. <td class="spanCnclRtnAmt">15,000원</td>
  148. <td></td>
  149. </tr>
  150. <tr>
  151. <td rowspan="2">할인금액차감</td>
  152. <td>쿠폰할인차감</td>
  153. <td class="spanCpnDcAmt">15,000원</td>
  154. <td style="line-height:25px;">
  155. <div style="height:25px;"><span>즉시할인쿠폰 : </span><span class="spanCpn1DcAmt">-60,000원</span></div>
  156. <div style="height:25px;"><span>주문서상품쿠폰 : </span><span class="spanGoodsCpnDcAmt">-60,000원</span></div>
  157. <div style="height:25px;"><span>장바구니쿠폰 : </span><span class="spanCartCpnDcAmt">-60,000원</span></div>
  158. </td>
  159. </tr>
  160. <tr>
  161. <td>상품할인차감</td>
  162. <td class="goodsDcSumAmt">15,000원</td>
  163. <td style="line-height:25px;">
  164. <div style="height:25px;"><span>선포인트할인 : </span><span class="spanPrePntDcAmt">-60,000원</span></div>
  165. <div style="height:25px;"><span>다다익선할인 : </span><span class="spanTmtbDcAmt">-60,000원</span></div>
  166. </td>
  167. </tr>
  168. <tr>
  169. <td>배송비</td>
  170. <td>환불배송비</td>
  171. <td class="spanRealDelvAmt">-60,000원</td>
  172. <td style="line-height:25px;">
  173. <div style="height:25px;"><span>배송비쿠폰 : </span><span class="delvCpnAmt">-60,000원</span></div>
  174. <div style="height:25px;"><span>추가금결제 : </span><span class="addDelvFee">-60,000원</span></div>
  175. </td>
  176. </tr>
  177. <tr>
  178. <td rowspan="4">환불금액</td>
  179. <td style="height:25px;">총환불금액</td>
  180. <td class="totalRefundAmt">70,000원</td>
  181. <td></td>
  182. </tr>
  183. <tr>
  184. <td style="height:25px;">결제수단환불</td>
  185. <td class="spanRefundAmt">70,000원</td>
  186. <td>
  187. <span class="pgGbNm"></span><span class="cardNm"></span>
  188. </td>
  189. </tr>
  190. <tr>
  191. <td style="height:25px;">상품권환불</td>
  192. <td class="spanGfcdUseAmt">70,000P</td>
  193. <td></td>
  194. </tr>
  195. <tr>
  196. <td style="height:25px;">포인트환불</td>
  197. <td class="spanPntDcAmt">70,000원</td>
  198. <td>
  199. <span>적립예정포인트환수 : </span><span class="spanSavePntAmt">60,000P</span>
  200. </td>
  201. </tr>
  202. </tbody>
  203. </table>
  204. </div>
  205. <div>
  206. <h4 style="width:85%;">회수대상 상품 정보</h4>
  207. <div id="refundGridList" style="width: 100%; height: 200px; padding-top:10PX;" class="ag-theme-balham"></div>
  208. </div>
  209. </form>
  210. </div>
  211. </div>
  212. </div>
  213. <script th:inline="javascript">
  214. /*<![CDATA[*/
  215. var ordChgSq = [[${ordChgSq}]]; // 주문변경번호
  216. var ordNo = [[${ordNo}]]; // 주문번호
  217. var userNo = [[${userNo}]]; // 회원번호
  218. var ordChgCnt = 0; // 회수신청건수
  219. var chgGb = "반품"; // 변경구분값
  220. var toTalOrdQty = 0; // 주문 총수량
  221. var ordInQty = 0; // 반품 입고총수량
  222. var ordChgQty = 0; // 반품 신청총수량
  223. var delvExpnYn = ""; // 출고예외(확정후 품절,불량)여부
  224. var wdGb = ""; // 회수요청구분
  225. var mallGb = ""; // 몰구분
  226. var reFundInfo = [[${refundConfirmPreInfo}]]; // 환불컨펌 정보
  227. var temp1 = false;
  228. var returnOrderInfo;
  229. var columnDefsDetail = [
  230. {headerName: "주문변경번호", field: "ordChgSq", width: 100, minWidth: 100, cellClass: 'text-center'},
  231. {headerName: "주문번호", field: "ordNo", width: 100, minWidth: 100, cellClass: 'text-center',
  232. cellRenderer: function(params) {
  233. return "<a href=\"javascript:void(0);\" onclick=\"cfnOpenOrderDetailPopup('" + params.value + "');\">" + params.value + "</a>";
  234. }
  235. },
  236. {headerName: "상품명", field: "goodsNm", width: 150, minWidth: 100},
  237. {headerName: "상품코드", field: "goodsCd", width: 120, minWidth: 100, cellClass: 'text-center',
  238. cellRenderer: function(params) {
  239. return "<a href=\"javascript:void(0);\" onclick=\"cfnOpenGoodsDetailPopup('U','" + params.value + "','');\">" + params.value + "</a>";
  240. }
  241. },
  242. {headerName: "SKUCODE", field: "optCd", width: 100, minWidth: 100, cellClass: 'text-center'},
  243. {headerName: "옵션1", field: "optCd1", width: 60, minWidth: 100, cellClass: 'text-center'},
  244. {headerName: "옵션2", field: "optCd2", width: 60, minWidth: 100, cellClass: 'text-center'},
  245. {headerName: "신청수량", field: "chgQty", width: 80, minWidth: 100, cellClass: 'text-center'},
  246. {headerName: "회수수량", field: "wdQty", width: 80, minWidth: 100, cellClass: 'text-center'},
  247. {headerName: "회수처리상태", field: "wdStat", width: 120, minWidth: 100, cellClass: 'text-center'},
  248. {headerName: "회수처리", field: "chgStat", width: 120, minWidth: 100, cellClass: 'text-center'
  249. , cellRenderer : function(params) {
  250. if (params.data.wdStatYn == 'N') {
  251. if (params.data.wdQty > 0) {
  252. return "<a href=\"javascript:void(0);\" class=\"btn btn-base btn-sm\">환불컨펌</a>";
  253. } else {
  254. return "";
  255. }
  256. } else if (params.data.wdStatYn == 'Y') {
  257. return "환불완료";
  258. }
  259. }
  260. },
  261. {headerName: "주문상세번호", field: "ordDtlNo", width: 100, minWidth: 100, cellClass: 'text-center'},
  262. {
  263. headerName : "주문금액"
  264. , field : "ordAmt"
  265. , width : 80
  266. , cellClass : 'text-right'
  267. , cellRenderer : function (params) {
  268. return params.value.addComma();
  269. }
  270. , hide : temp1
  271. },
  272. {
  273. headerName : "취소금액"
  274. , field : "cnclRtnAmt"
  275. , width : 80
  276. , cellClass : 'text-right'
  277. , cellRenderer : function (params) {
  278. return params.value.addComma();
  279. }
  280. , hide : temp1
  281. },
  282. {
  283. headerName : "즉시할인금액"
  284. , field : "cpn1DcAmt"
  285. , width : 80
  286. , cellClass : 'text-right'
  287. , cellRenderer : function (params) {
  288. return params.value.addComma();
  289. }
  290. , hide : temp1
  291. },
  292. {
  293. headerName : "다다익선1금액"
  294. , field : "tmtb1DcAmt"
  295. , width : 80
  296. , cellClass : 'text-right'
  297. , cellRenderer : function (params) {
  298. return params.value.addComma();
  299. }
  300. , hide : temp1
  301. },
  302. {
  303. headerName : "다다익선2금액"
  304. , field : "tmtb2DcAmt"
  305. , width : 80
  306. , cellClass : 'text-right'
  307. , cellRenderer : function (params) {
  308. return params.value.addComma();
  309. }
  310. , hide : temp1
  311. },
  312. {
  313. headerName : "상품쿠폰금액"
  314. , field : "goodsCpnDcAmt"
  315. , width : 80
  316. , cellClass : 'text-right'
  317. , cellRenderer : function (params) {
  318. return params.value.addComma();
  319. }
  320. , hide : temp1
  321. },
  322. {
  323. headerName : "장바구니쿠폰금액"
  324. , field : "cartCpnDcAmt"
  325. , width : 80
  326. , cellClass : 'text-right'
  327. , cellRenderer : function (params) {
  328. return params.value.addComma();
  329. }
  330. , hide : temp1
  331. },
  332. {
  333. headerName : "선포인트금액"
  334. , field : "prePntDcAmt"
  335. , width : 80
  336. , cellClass : 'text-right'
  337. , cellRenderer : function (params) {
  338. return params.value.addComma();
  339. }
  340. , hide : temp1
  341. },
  342. {
  343. headerName : "포인트금액"
  344. , field : "pntDcAmt"
  345. , width : 80
  346. , cellClass : 'text-right'
  347. , cellRenderer : function (params) {
  348. return params.value.addComma();
  349. }
  350. , hide : temp1
  351. },
  352. {
  353. headerName : "실결제금액"
  354. , field : "realOrdAmt"
  355. , width : 80
  356. , cellClass : 'text-right'
  357. , cellRenderer : function (params) {
  358. return params.value.addComma();
  359. }
  360. , hide : temp1
  361. },
  362. {
  363. headerName : "상품권금액"
  364. , field : "gfcdUseAmt"
  365. , width : 80
  366. , cellClass : 'text-right'
  367. , cellRenderer : function (params) {
  368. return params.value.addComma();
  369. }
  370. , hide : temp1
  371. },
  372. {headerName: "등록일", field: "regDt", width: 100, minWidth: 100, cellClass: 'text-right'}
  373. ];
  374. // Get withDrawDetailGridOptions
  375. var withdrawDetailGridOptions = gagaAgGrid.getGridOptions(columnDefsDetail);
  376. var isCustomer = true;
  377. /*************************************************************************
  378. * 회수 상세내역 조회
  379. **************************************************************************/
  380. var initFlag = '';
  381. var fnRefundDetailSearch = function() {
  382. //initFlag = Init;
  383. var params = {};
  384. params.ordChgSq = ordChgSq;
  385. params.userNo = userNo;
  386. var jsonData = JSON.stringify(params);
  387. gagajf.ajaxJsonSubmit('/withdraw/detail/list', jsonData, fnWithdrawDetailCallback);
  388. }
  389. /*************************************************************************
  390. * 상세 정보 콜백 함수
  391. **************************************************************************/
  392. var fnWithdrawDetailCallback = function(result) {
  393. reFundInfo = result.refundConfirmPreInfo; // 환불 컨펌 환불 정보
  394. returnOrderInfo = result.returnOrderInfo;
  395. if (result.dataList.length < 1) {
  396. mcxDialog.alert('회수데이터 오류입니다. 운영팀에 문의 해주세요! ');
  397. return;
  398. }
  399. var confirmCnt = 0;
  400. $(result.dataList).each(function(idx) {
  401. if (result.dataList[idx].wdStatYn == 'Y') {
  402. confirmCnt++;
  403. }
  404. ordInQty = ordInQty + result.dataList[idx].wdQty;
  405. ordChgQty = ordChgQty + result.dataList[idx].chgQty;
  406. });
  407. // 전체 회수 완료 일 때
  408. if (result.dataList.length == confirmCnt ) {
  409. //setReadOnly(true);
  410. $('#pgBtn').hide();
  411. $('#divRefundInfo').hide();
  412. $('#divRefundInfo2').show();
  413. }
  414. // 2021.12.06 취소금액설정
  415. if (reFundInfo.cancelOrderRefundList != null && reFundInfo.cancelOrderRefundList.length > 0) {
  416. for (i=0 ; i<reFundInfo.cancelOrderRefundList.length ; i++) {
  417. for (j=0 ; j<result.dataList.length ; j++) {
  418. if (reFundInfo.cancelOrderRefundList[i].ordDtlNo == result.dataList[j].ordDtlNo) {
  419. result.dataList[j].cnclRtnAmt = reFundInfo.cancelOrderRefundList[i].cnclRtnAmt; // 취소금액
  420. result.dataList[j].cpn1DcAmt = reFundInfo.cancelOrderRefundList[i].cpn1DcAmt; // 즉시할인쿠폰금액
  421. result.dataList[j].tmtb1DcAmt = reFundInfo.cancelOrderRefundList[i].tmtb1DcAmt; // 수량할인다다익선금액
  422. result.dataList[j].tmtb2DcAmt = reFundInfo.cancelOrderRefundList[i].tmtb2DcAmt; // 금액할인다다익선금액
  423. result.dataList[j].goodsCpnDcAmt = reFundInfo.cancelOrderRefundList[i].goodsCpnDcAmt; // 상품쿠폰금액
  424. result.dataList[j].cartCpnDcAmt = reFundInfo.cancelOrderRefundList[i].cartCpnDcAmt; // 장바구니쿠폰금액
  425. result.dataList[j].pntDcAmt = reFundInfo.cancelOrderRefundList[i].pntDcAmt; // 포인트금액
  426. result.dataList[j].prePntDcAmt = reFundInfo.cancelOrderRefundList[i].prePntDcAmt; // 선포인트금액
  427. result.dataList[j].gfcdUseAmt = reFundInfo.cancelOrderRefundList[i].gfcdUseAmt; // 상품권적용금액
  428. result.dataList[j].realOrdAmt = reFundInfo.cancelOrderRefundList[i].realOrdAmt; // 실결제금액
  429. }
  430. }
  431. }
  432. // 주문변경대상정보 재설정
  433. withdrawDetailGridOptions.api.setRowData(result.dataList);
  434. }
  435. $("#refundAmt").text(result.dataList[0].refundAmt.addComma());
  436. fnSetWithdrawInfo(result.dataList[0]); // 회수정보 설정
  437. }
  438. /*************************************************************************
  439. * 회수정보 설정
  440. **************************************************************************/
  441. var fnSetWithdrawInfo = function(data) {
  442. toTalOrdQty = data.totalOrdQty;
  443. delvExpnYn = data.delvExpnYn;
  444. wdGb = data.wdGb;
  445. mallGb = data.mallGb;
  446. reFundInfo.chgReasonNm = data.chgReasonNm; // 변경사유
  447. reFundInfo.chgReason = data.chgReason; // 변경사유코드
  448. reFundInfo.accountNm = data.accountNm; // 환불계좌이름
  449. reFundInfo.accountNo = data.accountNo; // 환불계좌번호
  450. reFundInfo.bankCd = data.bankCd; // 환불계좌은행코드
  451. reFundInfo.custNo = data.custNo; // 고객번호
  452. reFundInfo.ordNm = data.ordNm; // 주문자명
  453. reFundInfo.delvAddrSq = data.delvAddrSq; // 회수지번호
  454. reFundInfo.delvExpnYn = data.delvExpnYn; // 확정후 품절,불량 여부
  455. reFundInfo.wdInvoiceNo = data.wdInvoiceNo; // 회수송장번호
  456. reFundInfo.mallGb = mallGb; // 몰구분
  457. reFundInfo.ordNo = ordNo; // 주문번호
  458. reFundInfo.ordChgSq = ordChgSq; // 변경요청번호
  459. reFundInfo.wdGb = wdGb; // 회수구분
  460. if (reFundInfo.chgReason != 'G688_10') {
  461. isCustomer = false;
  462. }
  463. // 결제방식
  464. let pgGbNm = "";
  465. let cardGbNm = "";
  466. if (data.pgGb == 'KCP') {
  467. pgGbNm = data.payMeansNm;
  468. if(!gagajf.isNull(data.cardNm)) {
  469. cardGbNm = "(" + data.cardNm + ")";
  470. }
  471. } else if (data.pgGb == 'NAVER') {
  472. pgGbNm = "네이버페이";
  473. } else if (data.pgGb == 'NAVER_ORDER') {
  474. pgGbNm = "네이버페이주문형";
  475. } else if (data.pgGb == 'KAKAO') {
  476. pgGbNm = "카카오페이";
  477. } else if (data.pgGb == 'PAYCO') {
  478. pgGbNm = "페이코";
  479. } else if (data.pgGb == 'ISTYLE') {
  480. pgGbNm = "상품권";
  481. } else {
  482. pgGbNm = "외부몰입금";
  483. }
  484. reFundInfo.pgGbNm = pgGbNm;
  485. reFundInfo.cardGbNm = cardGbNm;
  486. // 환불컨펌 상세
  487. $("#wdGbNm").text(data.wdGbNm); // 회수구분
  488. $("#arriValDt").text(data.arrivalDt); // arriValDt 도착일
  489. //$("#chgReasonNm").text(data.chgReasonNm); // 최종요청사유
  490. $("#chgReasonText").text(data.chgReasonText); // 귀책사유
  491. $("#withdrawDetailForm input[name=encloseFee]").val(data.encloseFee); // 동봉비
  492. $("#withdrawDetailForm input[name=codFee]").val(data.codFee); // 착불비
  493. $("#withdrawDetailForm input[name=addPayCost]").val(data.addPayCost); // 추가결제비
  494. $("#chgMemo").text(data.chgMemo); // 클레임메모
  495. $("#wdMemo").text(data.wdMemo); // 회수메모
  496. // 2021.11.15 사유변경설정
  497. $("#withdrawDetailForm select[name=selectChgReason]").val(data.chgReason);
  498. // 2021.11.15 동봉비, 착불비 칼럼 전체 허용 (CS 개선업무)
  499. //if(delvExpnYn == "Y"){
  500. //$('#withdrawDetailForm input[name=codFee]').attr('readonly', 'readonly');
  501. //$('#withdrawDetailForm input[name=encloseFee]').attr('readonly', 'readonly');
  502. //} else {
  503. //if(wdGb == "W"){
  504. //$('#withdrawDetailForm input[name=codFee]').attr('readonly', 'readonly');
  505. //} else {
  506. //$('#withdrawDetailForm input[name=codFee]').remove('readonly');
  507. //}
  508. //}
  509. fnSetTotRefundData();
  510. }
  511. var addDeliveryFee = 0;
  512. var addDeliveryFeeYn = "N";
  513. var codFeeAmt = 0;
  514. var codFeeYn = 'N';
  515. var enCloseFeeAmt = 0;
  516. var enCloseFeeYn = "N";
  517. /*************************************************************************
  518. * 환불 금액 계산
  519. **************************************************************************/
  520. var fnSetTotRefundData = function() {
  521. var enCloseFee = $("#withdrawDetailForm input[name=encloseFee]").val(); //동봉비
  522. var codFee = $("#withdrawDetailForm input[name=codFee]").val(); //착불비
  523. var addPaycost = $("#withdrawDetailForm input[name=addPayCost]").val(); //추가결제비
  524. var chgReason = $("#withdrawDetailForm select[name=selectChgReason]").val(); //변경사유
  525. if (chgReason != 'G688_10') {
  526. isCustomer = false;
  527. }
  528. enCloseFee = enCloseFee.replaceAll(',', '');
  529. codFee = codFee.replaceAll(',', '');
  530. addPaycost = addPaycost.replaceAll(',', '');
  531. addDeliveryFee = 0;
  532. addDeliveryFeeYn = "N";
  533. codFeeAmt = 0;
  534. codFeeYn = "N";
  535. enCloseFeeAmt = Number(enCloseFee);
  536. enCloseFeeYn = "N";
  537. // 2021.07.02 환불컨펌 환불금액계산
  538. let spanPntDcAmt = Number(reFundInfo.spanPntDcAmt); // 환불 포인트 금액
  539. let spanSavePntAmt = Number(reFundInfo.spanSavePntAmt); // 적립 예정 포인트 환수 금액
  540. let spanGfcdUseAmt = Number(reFundInfo.spanGfcdUseAmt); // 환불 상품권 금액
  541. let spanDelvGfcdUseAmt = Number(reFundInfo.spanDelvGfcdUseAmt); // 환불 배송비 상품권 금액
  542. let spanCnclRtnAmt = Number(reFundInfo.spanCnclRtnAmt); // 환불 상품 금액
  543. let spanCpn1DcAmt = Number(reFundInfo.spanCpn1DcAmt); // 즉시할인 쿠폰 차감 금액
  544. let spanGoodsCpnDcAmt = Number(reFundInfo.spanGoodsCpnDcAmt); // 상품 쿠폰 차감 금액
  545. let spanCartCpnDcAmt = Number(reFundInfo.spanCartCpnDcAmt); // 장바구니 쿠폰 차감 금액
  546. let spanDelvCpnDcAmt = Number(reFundInfo.spanDelvCpnDcAmt); // 배송비 쿠폰 차감 금액
  547. let spanTmtbDcAmt = Number(reFundInfo.spanTmtbDcAmt); // 다다익선 할인 차감 금액
  548. let spanPrePntDcAmt = Number(reFundInfo.spanPrePntDcAmt); // 선포인트 할인 차감 금액
  549. let spanSumDeliveryFee = Number(reFundInfo.spanSumDeliveryFee); // 원주문배송비
  550. let spanTotDeliveryFee = Number(reFundInfo.spanTotDeliveryFee); // 추가배송비 (무료배송비 허들 깨져서 발생한 배송비)
  551. let spanTotRtnDelvFee = Number(reFundInfo.spanTotRtnDelvFee); // 반품배송비
  552. let spanRealCnclRtnAmt = Number(reFundInfo.spanRealCnclRtnAmt); // 환불 상품 실결제 금액 (환불상품금액 - 할인차감금액)
  553. let goodsCancelAmt = spanCnclRtnAmt + spanCpn1DcAmt; // 상품취소금액
  554. let goodsDcSumAmt = spanPrePntDcAmt + spanTmtbDcAmt; // 상품 할인 차감 금액
  555. let spanCpnDcAmt = spanCpn1DcAmt + spanGoodsCpnDcAmt + spanCartCpnDcAmt; // 쿠폰 할인 차감 금액
  556. let pgGbNm = reFundInfo.pgGbNm; // 결제수단
  557. let cardGbNm = reFundInfo.cardGbNm; // 카드명
  558. // 2021.08.10 card007 상품권 100% 결제 관련 로직 변경
  559. let delvGfcdUseAmt = 0;
  560. let delvFee = 0;
  561. let addDelvFee = 0;
  562. let refundAmt;
  563. // 2021.09.07 card007 전체반품 원배송비 무료 해택 차감 처리
  564. let delvFeeCdCanList = reFundInfo.delvCanYn.delvFeeCdCanList;
  565. let allDelvCanYnList = reFundInfo.delvCanYn.allDelvCanYnList;
  566. let index = -1;
  567. $.each(delvFeeCdCanList, function(idx, item) {
  568. if (reFundInfo.delvFeeCd == item) {
  569. index = idx;
  570. }
  571. });
  572. let allDelvCanYn;
  573. if (index > -1) {
  574. allDelvCanYn = allDelvCanYnList[index]
  575. }
  576. let orgDelvFee = 0;
  577. if (allDelvCanYn == 'Y' && returnOrderInfo != null && returnOrderInfo[0].delvGfcdUseAmt + returnOrderInfo[0].realDelvAmt == 0) {
  578. orgDelvFee = returnOrderInfo[0].orgDelvFee;
  579. }
  580. // 2021.11.15 착불비, 동봉비 사용 허용 개발
  581. if (Number(codFee) > 0) {
  582. codFeeAmt = Number(codFee);
  583. codFeeYn = "Y";
  584. }
  585. if (Number(enCloseFee) > 0) {
  586. enCloseFeeYn = "Y";
  587. }
  588. // 출고예외(확정후 품절,불량)일 경우
  589. if (delvExpnYn == "Y") {
  590. // 총 주문수량 = 반품수량 배송비가 있을시 환불해줌
  591. if (allDelvCanYn == 'Y') {
  592. if (spanSumDeliveryFee > 0) {
  593. addDeliveryFee = spanSumDeliveryFee - spanDelvCpnDcAmt;
  594. addDeliveryFeeYn = "Y";
  595. }
  596. //alert("총수량 출고예외");
  597. // 환불금액 = 취소 상품 실결제 금액 + 배송비
  598. refundAmt = spanRealCnclRtnAmt + spanSumDeliveryFee - spanDelvCpnDcAmt - spanDelvGfcdUseAmt;
  599. delvGfcdUseAmt = spanDelvGfcdUseAmt;
  600. } else { // 총 주문수량 <> 반품수량
  601. //alert("출고예외");
  602. refundAmt = spanRealCnclRtnAmt;
  603. }
  604. }
  605. // 반품일 경우
  606. else {
  607. var leftRefundAmt = 0;
  608. var leftDelvFee = 0;
  609. var leftGfcdUseAmt = spanGfcdUseAmt;
  610. // 총 주문수량 = 반품수량
  611. if (toTalOrdQty == ordChgQty) {
  612. // 귀책사유고객
  613. if (isCustomer) {
  614. // 회수요청
  615. if (wdGb == "W") {
  616. // 환불금액 = 취소 상품 실결제 금액 + 배송비 - 추가배송비 - 반품배송비
  617. if (Number(enCloseFee) > 0) {
  618. enCloseFeeYn = "Y";
  619. }
  620. // 환불비용 = (취소상품실결제금액 + 동봉비 + 추가결제비) - 반품배송비 - 착불비
  621. // 2021.08.10 card007 상품권 100% 결제 관련 로직 변경
  622. leftRefundAmt = (spanRealCnclRtnAmt + Number(enCloseFee) + Number(addPaycost));
  623. leftDelvFee = spanTotRtnDelvFee + Number(codFee) + orgDelvFee;
  624. delvFee = 0 - spanTotRtnDelvFee - orgDelvFee;
  625. //reFundInfo.spanRefundAmt = (spanRealCnclRtnAmt + Number(enCloseFee) + Number(addPaycost)) - spanTotRtnDelvFee - Number(codFee);
  626. }
  627. // 직접배송
  628. else {
  629. leftRefundAmt = (spanRealCnclRtnAmt + Number(enCloseFee) + Number(addPaycost));
  630. leftDelvFee = Number(codFee) + orgDelvFee;
  631. delvFee = 0 - orgDelvFee;
  632. if (Number(codFee) > 0) {
  633. codFeeAmt = Number(codFee);
  634. codFeeYn = "Y";
  635. }
  636. if (Number(enCloseFee) > 0) {
  637. enCloseFeeYn = "Y";
  638. }
  639. // 2021.07.02 환불컨펌 환불금액계산
  640. // 환불비용 = (취소상품실결제금액 + 동봉비 + 추가결제비) - 착불비
  641. //reFundInfo.spanRefundAmt = (reFundInfo.spanRealCnclRtnAmt + Number(enCloseFee) + Number(addPaycost)) - Number(codFee);
  642. }
  643. if (leftRefundAmt < leftDelvFee) {
  644. leftDelvFee -= leftRefundAmt;
  645. leftRefundAmt = 0;
  646. } else {
  647. leftRefundAmt -= leftDelvFee;
  648. leftDelvFee = 0;
  649. }
  650. if (leftDelvFee > 0) {
  651. leftGfcdUseAmt -= leftDelvFee;
  652. leftDelvFee = 0;
  653. }
  654. refundAmt = leftRefundAmt;
  655. spanGfcdUseAmt = leftGfcdUseAmt;
  656. addDelvFee = leftDelvFee;
  657. }
  658. // 회사귀책
  659. else {
  660. if (spanSumDeliveryFee > 0) {
  661. addDeliveryFee = spanSumDeliveryFee - spanDelvCpnDcAmt;
  662. addDeliveryFeeYn = "Y";
  663. }
  664. // 2021.07.02 환불컨펌 환불금액계산
  665. // 환불비용 = (취소상품실결제금액) + (원주문배송비- 배송비쿠폰할인금액)
  666. refundAmt = spanRealCnclRtnAmt + spanSumDeliveryFee - spanDelvCpnDcAmt - spanDelvGfcdUseAmt;
  667. delvFee = spanSumDeliveryFee - spanDelvCpnDcAmt;
  668. delvGfcdUseAmt = spanDelvGfcdUseAmt;
  669. }
  670. }
  671. // 총 주문수량 <> 반품수량
  672. else {
  673. // 고객귀책
  674. if (isCustomer) {
  675. // 회수요청
  676. if (wdGb == "W") {
  677. if (Number(enCloseFee) > 0) {
  678. enCloseFeeYn = "Y";
  679. }
  680. // 2021.07.02 환불컨펌 환불금액계산
  681. // 환불금액 = (취소상품실결제금액 + 동봉비 + 추가결제비) - (추가배송비 + 반품배송비 + 착불비)
  682. //reFundInfo.spanRefundAmt = (reFundInfo.spanRealCnclRtnAmt + Number(enCloseFee) + Number(addPaycost)) - (spanTotDeliveryFee + spanTotRtnDelvFee);
  683. leftRefundAmt = (spanRealCnclRtnAmt + Number(enCloseFee) + Number(addPaycost));
  684. leftDelvFee = spanTotDeliveryFee + spanTotRtnDelvFee + Number(codFee) + orgDelvFee;
  685. delvFee = 0 - spanTotDeliveryFee - spanTotRtnDelvFee - orgDelvFee;
  686. }
  687. // 직접배송
  688. else {
  689. if (Number(codFee) > 0) {
  690. codFeeAmt = Number(codFee);
  691. codFeeYn = "Y";
  692. }
  693. if (Number(enCloseFee) > 0) {
  694. enCloseFeeYn = "Y";
  695. }
  696. // 2021.07.02 환불컨펌 환불금액계산
  697. // 환불금액 = (취소상품실결제금액 + 동봉비 + 추가결제비) - (추가배송비 + 착불비)
  698. //reFundInfo.spanRefundAmt = (reFundInfo.spanRealCnclRtnAmt + Number(enCloseFee) - Number(addPaycose)) - (spanTotDeliveryFee + Number(codeFee);
  699. leftRefundAmt = (spanRealCnclRtnAmt + Number(enCloseFee) + Number(addPaycost));
  700. leftDelvFee = spanTotDeliveryFee + Number(codFee) + orgDelvFee;
  701. delvFee = 0 - spanTotDeliveryFee - orgDelvFee;
  702. }
  703. if (leftRefundAmt < leftDelvFee) {
  704. leftDelvFee -= leftRefundAmt;
  705. leftRefundAmt = 0;
  706. } else {
  707. leftRefundAmt -= leftDelvFee;
  708. leftDelvFee = 0;
  709. }
  710. if (leftDelvFee > 0) {
  711. leftGfcdUseAmt -= leftDelvFee;
  712. leftDelvFee = 0;
  713. }
  714. refundAmt = leftRefundAmt;
  715. spanGfcdUseAmt = leftGfcdUseAmt;
  716. addDelvFee = leftDelvFee;
  717. }
  718. // 회사귀책
  719. else {
  720. // 2021.07.02 환불컨펌 환불금액계산
  721. // 환불금액 = (취소상품실결제금액)
  722. if (allDelvCanYn == 'Y') {
  723. refundAmt = spanRealCnclRtnAmt + spanSumDeliveryFee - spanDelvCpnDcAmt - spanDelvGfcdUseAmt;
  724. delvFee = spanSumDeliveryFee - spanDelvCpnDcAmt;
  725. delvGfcdUseAmt = spanDelvGfcdUseAmt;
  726. } else {
  727. refundAmt = spanRealCnclRtnAmt;
  728. }
  729. }
  730. }
  731. }
  732. //$("#spanRefundAmt").text(reFundInfo.spanRefundAmt.addComma()); //환불 금액 합계
  733. var totalRefundAmt = refundAmt + spanGfcdUseAmt + spanPntDcAmt + delvGfcdUseAmt;
  734. var totalGfcdUseAmt = spanGfcdUseAmt + delvGfcdUseAmt;
  735. reFundInfo.totalRefundAmt = totalRefundAmt;
  736. // 상품금액
  737. $(".spanCnclRtnAmt").text(goodsCancelAmt.addComma()+"원"); // 취소상품금액
  738. // 할인금액차감
  739. $(".spanCpnDcAmt").text(spanCpnDcAmt.addComma()+"원"); // 쿠폰할인차감 > 합계
  740. $(".spanCpn1DcAmt").text(spanCpn1DcAmt.addComma()+"원"); // 쿠폰할인차감 > 즉시할인쿠폰
  741. $(".spanGoodsCpnDcAmt").text(spanGoodsCpnDcAmt.addComma()+"원"); // 쿠폰할인차감 > 주문서상품쿠폰
  742. $(".spanCartCpnDcAmt").text(spanCartCpnDcAmt.addComma()+"원"); // 쿠폰할인차감 > 장바구니쿠폰
  743. $(".goodsDcSumAmt").text(goodsDcSumAmt.addComma()+"원"); // 상품할인차감 > 합계
  744. $(".spanPrePntDcAmt").text(spanPrePntDcAmt.addComma()+"원"); // 상품할인차감 > 선포인트할인
  745. $(".spanTmtbDcAmt").text(spanTmtbDcAmt.addComma()+"원"); // 상품할인차감 > 다다익선할인
  746. // 배송비
  747. $(".spanRealDelvAmt").text(delvFee.addComma()+"원"); // 환불배송비 > 합계
  748. $(".addDelvFee").text(addDelvFee.addComma()+"원"); // 환불배송비 > 추가금결제
  749. $(".delvCpnAmt").text(spanDelvCpnDcAmt.addComma()+"원"); // 환불배송비 > 배송비쿠폰
  750. // 환불금액
  751. $(".totalRefundAmt").text(totalRefundAmt.addComma()+"원"); // 총환불금액
  752. $(".spanRefundAmt").text(refundAmt.addComma()+"원"); // 결제수단환불
  753. $(".pgGbNm").text(pgGbNm); // 결제수단환불 > 결제수단
  754. $(".cardNm").text(cardGbNm); // 결제수단환불 > 카드명
  755. $(".spanGfcdUseAmt").text(totalGfcdUseAmt.addComma()+"원"); // 상품권환불
  756. $(".spanPntDcAmt").text(spanPntDcAmt.addComma()+"원"); // 포인트환불
  757. $(".spanSavePntAmt").text(spanSavePntAmt.addComma()+"P"); // 포인트환불 > 적립예정포인트환수
  758. }
  759. /*************************************************************************
  760. * 동봉비, 착불비, 추가결제비 변경시 재계산
  761. **************************************************************************/
  762. var fnChangeAmt = function(){
  763. var enCloseFee = $("#withdrawDetailForm input[name=encloseFee]").val(); // 동봉비
  764. var codFee = $("#withdrawDetailForm input[name=codFee]").val(); // 착불비
  765. var addPaycost = $("#withdrawDetailForm input[name=addPayCost]").val(); // 추가결제비
  766. fnSetTotRefundData();
  767. }
  768. var ordInQty = 0; // 반품 입고총수량
  769. var ordChgQty = 0; // 반품 신청총수량
  770. /*************************************************************************
  771. * 회수컨펌 클릭 시
  772. **************************************************************************/
  773. withdrawDetailGridOptions.onCellClicked = function(event) {
  774. if (event.colDef.field != 'chgStat') {
  775. return;
  776. }
  777. if (ordChgQty != ordInQty) {
  778. mcxDialog.alert('반품신청 수량과 회수입고수량이 맞지 않습니다.<br/>반품신청수량 : ' + ordChgQty + '<br/>회수입고수량 : ' + ordInQty);
  779. return;
  780. }
  781. // 회수컨펌
  782. fnWithdrawDetailConfirm();
  783. }
  784. /*************************************************************************
  785. * 회수 컨펌
  786. **************************************************************************/
  787. var confirmFlag = true;
  788. var fnWithdrawDetailConfirm = function() {
  789. //var totPayAmt = $('#totPayAmt').text().replace(/,/gi,"");
  790. //var totRefundAmt = $('#totRefundAmt').text().replace(/,/gi,"");
  791. if (mallGb == 'G011_10') {
  792. // 아웃바운드 필요. (동동 및 계좌이체로 받아야함)
  793. // 2021.08.12 card007 환불금액(총환불금액)으로 변경
  794. //if (reFundInfo.spanRefundAmt < 0) {
  795. if (reFundInfo.totalRefundAmt < 0) {
  796. mcxDialog.alert('환불금액 부족합니다.');
  797. return;
  798. }
  799. if (reFundInfo.spanRefundAmt > reFundInfo.spanPayAmt) {
  800. mcxDialog.alert('환불금액이 총 결제금액보다 큽니다.<br/>환불금액 : ' + reFundInfo.spanRefundAmt + '<br/>총 결제금액 : ' + reFundInfo.spanPayAmt);
  801. return;
  802. }
  803. }
  804. var depositAmt = 0;
  805. var pgStat = $('#withdrawDetailForm input:checkbox[name=pgStats]').is(":checked") ? "Y" : "N";
  806. if (pgStat == 'Y') {
  807. depositAmt = $('#withdrawDetailForm input[name=depositAmt]').val().replace(/,/gi,"");
  808. }
  809. reFundInfo.addDeliveryFee = addDeliveryFee;
  810. reFundInfo.addDeliveryFeeYn = addDeliveryFeeYn;
  811. reFundInfo.codFee = codFeeAmt;
  812. reFundInfo.codFeeYn = codFeeYn;
  813. reFundInfo.pgStat = pgStat;
  814. reFundInfo.enCloseFeeYn = enCloseFeeYn;
  815. reFundInfo.enCloseFee = enCloseFeeAmt;
  816. reFundInfo.depositAmt = depositAmt;
  817. reFundInfo.msgStat = $('#msgStat').is(':checked') ? 'Y' : 'N';
  818. reFundInfo.chgReason = $("#withdrawDetailForm select[name=selectChgReason]").val(); //변경사유
  819. var jsonData = JSON.stringify(reFundInfo);
  820. if (!confirmFlag) {
  821. mcxDialog.alert('데이터 처리 중입니다.');
  822. return;
  823. }
  824. mcxDialog.confirm('환불컨펌 하시겠습니까?', {
  825. cancelBtnText : "취소",
  826. sureBtnText : "확인",
  827. sureBtnClick : function(){
  828. gagajf.ajaxJsonSubmit('/withdraw/detail/confirm', jsonData, function(result) {
  829. //confirmFlag = true;
  830. fnSearch();
  831. $('#divRefundInfo').hide();
  832. $('#divRefundInfo2').show();
  833. fnRefundDetailSearch();
  834. $('#withdrawDetailForm input[name=depositAmt]').attr('readonly', true);
  835. });
  836. }
  837. });
  838. }
  839. // readonly 설정
  840. var setReadOnly = function(flag) {
  841. if (flag) {
  842. $('#withdrawDetailForm input[name=encloseFee]').attr('readonly', 'readonly');
  843. $('#withdrawDetailForm input[name=encloseFee]').addClass('formControl');
  844. } else {
  845. $('#withdrawDetailForm input[name=encloseFee]').remove('readonly');
  846. $('#withdrawDetailForm input[name=encloseFee]').removeClass('formControl');
  847. }
  848. }
  849. // PG점프 변경 이벤트 처리
  850. var fnChangePgStat = function() {
  851. if ($('#withdrawDetailForm input:checkbox[name=pgStats]').is(':checked')) {
  852. $('#withdrawDetailForm input[name=depositAmt]').attr('readonly', false);
  853. } else {
  854. $('#withdrawDetailForm input[name=depositAmt]').val(0);
  855. $('#withdrawDetailForm input[name=depositAmt]').attr('readonly', true);
  856. }
  857. }
  858. /*************************************************************************
  859. * init
  860. **************************************************************************/
  861. $(document).ready(function() {
  862. // Create a agGrid
  863. gagaAgGrid.createGrid('refundGridList', withdrawDetailGridOptions);
  864. $('#divRefundInfo2').hide();
  865. // 회수 상세내역 조회
  866. fnRefundDetailSearch();
  867. // PG점프 변경 이벤트 처리
  868. fnChangePgStat();
  869. });
  870. // 2021.11.15 추가 귀책사유설정
  871. var fnChangeChgReason = function(reasonCd){
  872. var customerReasonArr = ['G688_10'];
  873. isCustomer = false;
  874. // 귀책사유체크(취소,반품,교환)
  875. for (i=0 ; i<customerReasonArr.length ; i++) {
  876. if (customerReasonArr[i] == reasonCd) {
  877. isCustomer = true;
  878. }
  879. }
  880. // 귀책사유설정
  881. if (isCustomer) {
  882. $("#chgReasonText").text("고객");
  883. } else {
  884. $("#chgReasonText").text("회사");
  885. }
  886. // 2021.11.15 변경사유변경 환불금액 재계산
  887. fnSetTotRefundData();
  888. }
  889. /*]]>*/
  890. </script>
  891. </html>