RefundDetailForm.html 32 KB

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