CancelRequestFormBack.html 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092
  1. <!DOCTYPE html>
  2. <html lang="ko" xmlns:th="http://www.thymeleaf.org">
  3. <!--
  4. *******************************************************************************
  5. * @source : CancelRequestForm.html
  6. * @desc : 취소요청 화면
  7. *============================================================================
  8. * STYLE24
  9. * Copyright(C) 2019 TSIT, All rights reserved.
  10. *============================================================================
  11. * VER DATE AUTHOR DESCRIPTION
  12. * === =========== ========== =============================================
  13. * 1.0 2020.12.12 jsh77b 최초 작성
  14. *******************************************************************************
  15. -->
  16. <div class="modalPopup" data-width="1400" data-height="600">
  17. <div class="panelStyle">
  18. <div class="panelTitle">
  19. <h2>취소요청</h2>
  20. <button type="button" class="close" onclick="uifnPopupClose('popupCancelRequestForm');"><i class="fa fa-times"></i></button>
  21. </div>
  22. <div class="panelContent" style="height:90%; overflow-y:auto; padding:0px 20px !important; ">
  23. <form id="cancelRequestFrm" name="cancelRequestFrm" action="/order/cancel" method="post" target="hdFrameForOrderCancel">
  24. <input type="hidden" name="chgGb" value="30" />
  25. <input type="hidden" name="ordDtlNos" value="" />
  26. <input type="hidden" name="chgQtys" value="" />
  27. <input type="hidden" name="ordNo" th:value="${ordNo}" />
  28. <input type="hidden" name="mallGb" th:value="${orderInfo.mallGb}" />
  29. <input type="hidden" name="delvFee" value="0" />
  30. <input type="hidden" name="pgStat" value="" />
  31. <input type="hidden" name="chgReason" value="" />
  32. <input type="hidden" name="chgReasonDesc" value="" />
  33. <input type="hidden" name="cncWait" th:value="${cncWait}" />
  34. <h3>주문정보</h3>
  35. <div id="gridOrderCancelRequestList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
  36. <h3>취소정보</h3>
  37. <div id="gridOrderCancelRequestToBeList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
  38. <h3>배송비정보</h3>
  39. <div id="gridDelvCdList" style="width:100%; height: 140px;" class="ag-theme-balham"></div>
  40. <div style="text-align:right; padding-bottom:5px; padding-top:5px;">
  41. <button type="button" class="btn btn-success" id="btnCancelRequestEscrow" onclick="fnCancelRequestEscrow();" style="display:none;">에스크로 결제생성</button>
  42. <label th:if="${sessionInfo.userId == 'jsshin'
  43. || sessionInfo.userId == 'dlffyd7942'
  44. || sessionInfo.userId == 'card007'
  45. || sessionInfo.userId == 'hrkim'
  46. || sessionInfo.userId =='666badboy'
  47. || sessionInfo.userId =='yjyy83'}">
  48. <input type="checkbox" name="pgStats" value="N">PG 전문 미전송
  49. </label>
  50. <button type="button" class="btn btn-success" id="btnCancelRequestPartOk" onclick="fnCancelRequestPartOk();">요청</button>
  51. </div>
  52. <table class="frmStyle">
  53. <colgroup>
  54. <col style="width:160px;" />
  55. <col style="width:320px;" />
  56. <col style="width:160px;" />
  57. <col />
  58. </colgroup>
  59. <tbody>
  60. <tr>
  61. <th>취소사유 <i class="star"></i></th>
  62. <td>
  63. <select name="selectChgReason" onchange="fnChangeChgReason($(this).val());">
  64. <option value="">[선택하세요]</option>
  65. <option th:if="${chgReasonList}" th:each="oneData, status : ${chgReasonList}" th:value="|${oneData.cd}:${oneData.cdNm}|" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
  66. </select>
  67. </td>
  68. <th>귀책사유</th>
  69. <td><span id="imputeReason"></span></td>
  70. </tr>
  71. <tr>
  72. <th>요청메모</th>
  73. <td colspan="3">
  74. <textarea name="chgMemo" style="height:80px;" placeholder="취소사유를 300자내외로 작성해 주세요"></textarea>
  75. </td>
  76. </tr>
  77. </tbody>
  78. </table>
  79. <h4>환불예정금액</h4>
  80. <table class="frmStyle">
  81. <colgroup>
  82. <col style="width:20%;"/>
  83. <col style="width:30%;"/>
  84. <col style="width:20%;"/>
  85. <col style="width:30%;"/>
  86. </colgroup>
  87. <tbody>
  88. <tr>
  89. <th>총 결제 금액</th>
  90. <td colspan="3"><span id="spanPayAmt"></span>원 (상품 실결제 금액 : <span id="spanSumRealOrdAmt"></span>원, 배송금액 : <span id="spanSumDeliveryFee"></span>원) </td>
  91. </tr>
  92. <tr>
  93. <th>주문 상품 금액</th>
  94. <td><span id="spanOrdAmt"></span>원</td>
  95. <th>취소 상품 금액</th>
  96. <td><span id="spanCnclRtnAmt"></span>원</td>
  97. </tr>
  98. <tr>
  99. <th>취소 사용 포인트</th>
  100. <td colspan="3"><span id="spanTotPntDcAmt"></span>원 (고객 포인트 : <span id="spanPntDcAmt"></span>원 + 상품 선포인트 : <span id="spanPrePntDcAmt"></span>원) </td>
  101. </tr>
  102. <tr>
  103. <th>취소 사용 쿠폰금액</th>
  104. <td colspan="3"><span id="spanCpnDcAmt"></span>원 (즉시할인쿠폰 : <span id="spanCpn1DcAmt"></span>원 + 상품쿠폰 : <span id="spanGoodsCpnDcAmt"></span>원 + 장바구니쿠폰 : <span id="spanCartCpnDcAmt"></span>원)</td>
  105. </tr>
  106. <tr>
  107. <th>취소 다다익선 금액</th>
  108. <td colspan="3"><span id="spanTmtbDcAmt"></span>원 (수량할인 : <span id="spanTmtb1DcAmt"></span>원 + 금액할인 : <span id="spanTmtb2DcAmt"></span>원)</td>
  109. </tr>
  110. <tr>
  111. <th>취소 고객 상품권 금액</th>
  112. <td colspan="3"><span id="spanGfcdUseAmt"></span>원</td>
  113. </tr>
  114. <tr>
  115. <th>취소 상품 실결제 금액</th>
  116. <td><span id="spanRealCnclRtnAmt"></span>원</td>
  117. <th>추가 배송 금액</th>
  118. <td><span id="spanTotDeliveryFee"></span>원 </td>
  119. </tr>
  120. <tr>
  121. <th>환불 금액 합계</th>
  122. <td colspan="3"><span id="spanRefundAmt"></span>원</td>
  123. </tr>
  124. </tbody>
  125. </table>
  126. </form>
  127. </div>
  128. </div>
  129. </div>
  130. <!-- data -->
  131. <script th:inline="javascript">
  132. /*<![CDATA[*/
  133. var cancelRequestTargetList = [[${cancelRequestTargetList}]];
  134. var temp1 = true;
  135. var temp2 = false;
  136. // specify the columns
  137. var columnCancelReqList = [
  138. {
  139. headerName : "주문상세정보",
  140. children : [
  141. {headerName: "주문번호" , field: "ordNo" , width: 80 , cellClass: 'text-center', hide: temp1},
  142. {headerName: "주문상세" , field: "ordDtlNo" , width: 80 , cellClass: 'text-center'},
  143. {headerName: "주문상세" , field: "ordDtlStat" , width: 80 , cellClass: 'text-center', hide: temp1},
  144. {headerName: "주문상세상태" , field: "ordDtlStatNm" , width: 100 , cellClass: 'text-center', hide: temp1},
  145. {headerName: "상품코드" , field: "goodsCd" , width: 100 , cellClass: 'text-center', hide: temp1},
  146. {headerName: "상품명" , field: "goodsNm" , width: 200 , cellClass: 'text-center', hide: temp1},
  147. {headerName: "상품타입" , field: "goodsTypeNm" , width: 100 , cellClass: 'text-center', hide: temp2}
  148. ]
  149. },
  150. {
  151. headerName : "주문상세단품정보",
  152. children : [
  153. {headerName: "단품코드" , field: "itemCd" , width: 100 , cellClass: 'text-center', hide: temp2},
  154. {headerName: "단품명" , field: "itemNm" , width: 200 , cellClass: 'text-center', hide: temp2},
  155. {headerName: "칼라코드" , field: "optCd1" , width: 80 , cellClass: 'text-center', hide: temp1},
  156. {headerName: "사이즈코드" , field: "optCd2" , width: 80 , cellClass: 'text-center', hide: temp2},
  157. {
  158. headerName : "단품수량"
  159. , field : "itemQty"
  160. , width : 80
  161. , cellClass : 'text-center'
  162. , cellRenderer : function (params) {
  163. return params.value.addComma();
  164. }
  165. },
  166. {
  167. headerName : "단품금액"
  168. , field : "itemPrice"
  169. , width : 80
  170. , cellClass : 'text-right'
  171. , cellRenderer : function (params) {
  172. return params.value.addComma();
  173. }
  174. },
  175. {
  176. headerName : "단품옵션금액"
  177. , field : "optAddPrice"
  178. , width : 80
  179. , cellClass : 'text-right'
  180. , cellRenderer : function (params) {
  181. return params.value.addComma();
  182. }
  183. }
  184. ]
  185. },
  186. {
  187. headerName : "주문상세수량",
  188. children : [
  189. {
  190. headerName : "주문"
  191. , field : "ordQty"
  192. , width : 80
  193. , cellClass : 'text-center'
  194. , cellRenderer : function (params) {
  195. return params.value.addComma();
  196. }
  197. },
  198. {
  199. headerName : "취소/요청"
  200. , field : "cnclRtnQty"
  201. , width : 80
  202. , cellClass : 'text-center'
  203. , cellRenderer : function (params) {
  204. var cnclRtnReqQty = parseInt(params.data.cnclRtnQty) + parseInt(params.data.ordReqChgQty);
  205. return cnclRtnReqQty;
  206. }
  207. },
  208. {
  209. headerName : "취소"
  210. , field : "ordCanChgQty"
  211. , width : 100
  212. , cellClass : 'text-center'
  213. , cellRenderer : function (params) {
  214. var ordQty = parseInt(params.data.ordQty);
  215. var cnclRtnQty = parseInt(params.data.cnclRtnQty);
  216. var ordReqChgQty = parseInt(params.data.ordReqChgQty);
  217. var ordCanChgQty = ordQty - (cnclRtnQty + ordReqChgQty);
  218. var strVal = "";
  219. strVal += "<select class='ordCanChgQty' name='ordCanChgQty' ordDtlNo='"+params.data.ordDtlNo+"' onChange='fnCalculateRefundAmt(this);'>";
  220. for (i=0 ; i<=ordCanChgQty ; i++) {
  221. if (i == params.data.ordCanChgQty) {
  222. strVal += " <option value='"+i+"' selected>"+i+"</option>";
  223. } else {
  224. strVal += " <option value='"+i+"'>"+i+"</option>";
  225. }
  226. }
  227. strVal += "</select>";
  228. return strVal;
  229. }
  230. }
  231. ]
  232. },
  233. {
  234. headerName : "주문단품금액",
  235. children : [
  236. {
  237. headerName : "주문"
  238. , field : "ordAmt"
  239. , width : 80
  240. , cellClass : 'text-right'
  241. , cellRenderer : function (params) {
  242. return params.value.addComma();
  243. }
  244. },
  245. {
  246. headerName : "취소"
  247. , field : "cnclRtnAmt"
  248. , width : 80
  249. , cellClass : 'text-right'
  250. , cellRenderer : function (params) {
  251. return params.value.addComma();
  252. }
  253. },
  254. {
  255. headerName : "즉시할인"
  256. , field : "cpn1DcAmt"
  257. , width : 80
  258. , cellClass : 'text-right'
  259. , cellRenderer : function (params) {
  260. return params.value.addComma();
  261. }
  262. },
  263. {
  264. headerName : "다다익선1"
  265. , field : "tmtb1DcAmt"
  266. , width : 80
  267. , cellClass : 'text-right'
  268. , cellRenderer : function (params) {
  269. return params.value.addComma();
  270. }
  271. },
  272. {
  273. headerName : "다다익선2"
  274. , field : "tmtb2DcAmt"
  275. , width : 80
  276. , cellClass : 'text-right'
  277. , cellRenderer : function (params) {
  278. return params.value.addComma();
  279. }
  280. },
  281. {
  282. headerName : "상품쿠폰"
  283. , field : "goodsCpnDcAmt"
  284. , width : 80
  285. , cellClass : 'text-right'
  286. , cellRenderer : function (params) {
  287. return params.value.addComma();
  288. }
  289. },
  290. {
  291. headerName : "장바구니쿠폰"
  292. , field : "cartCpnDcAmt"
  293. , width : 80
  294. , cellClass : 'text-right'
  295. , cellRenderer : function (params) {
  296. return params.value.addComma();
  297. }
  298. },
  299. {
  300. headerName : "포인트"
  301. , field : "pntDcAmt"
  302. , width : 80
  303. , cellClass : 'text-right'
  304. , cellRenderer : function (params) {
  305. return params.value.addComma();
  306. }
  307. },
  308. {
  309. headerName : "선포인트"
  310. , field : "prePntDcAmt"
  311. , width : 80
  312. , cellClass : 'text-right'
  313. , cellRenderer : function (params) {
  314. return params.value.addComma();
  315. }
  316. },
  317. {
  318. headerName : "상품권"
  319. , field : "gfcdUseAmt"
  320. , width : 80
  321. , cellClass : 'text-right'
  322. , cellRenderer : function (params) {
  323. return params.value.addComma();
  324. }
  325. },
  326. {
  327. headerName : "실결제금액"
  328. , field : "realOrdAmt"
  329. , width : 80
  330. , cellClass : 'text-right'
  331. , cellRenderer : function (params) {
  332. return params.value.addComma();
  333. }
  334. }
  335. ]
  336. },
  337. {
  338. headerName : "주문배송비정보",
  339. children : [
  340. {
  341. headerName : "배송비"
  342. , field : "delvFee"
  343. , width : 80
  344. , cellClass : 'text-right'
  345. , cellRenderer : function (params) {
  346. return params.value.addComma();
  347. }
  348. , hide : temp2
  349. },
  350. {headerName: "업체" , field: "supplyCompCd" , width: 100 , cellClass: 'text-center', hide: temp2},
  351. {headerName: "배송비코드" , field: "delvFeeCd" , width: 100 , cellClass: 'text-center', hide: temp2},
  352. {
  353. headerName : "무료배송비"
  354. , field : "minOrdAmt"
  355. , width : 80
  356. , cellClass : 'text-right'
  357. , cellRenderer : function (params) {
  358. return params.value.addComma();
  359. }
  360. , hide : temp2
  361. },
  362. {
  363. headerName : "기본배송비"
  364. , field : "orgDelvFee"
  365. , width : 80
  366. , cellClass : 'text-right'
  367. , cellRenderer : function (params) {
  368. return params.value.addComma();
  369. }
  370. , hide : temp2
  371. },
  372. {headerName: "전체취소가능" , field: "allCanYn" , width: 100 , cellClass: 'text-center', hide: temp2},
  373. ]
  374. }
  375. ];
  376. var gridOptionsCancelReqList = orderAgGrid.getGridOptions(columnCancelReqList);
  377. // Add on options
  378. gridOptionsCancelReqList.suppressRowClickSelection = true;
  379. gridOptionsCancelReqList.rowSelection = 'multiple';
  380. //specify the columns
  381. var columnCancelReqToBeList = [
  382. {
  383. headerName : "주문상세정보",
  384. children : [
  385. {headerName: "주문번호" , field: "ordNo" , width: 80 , cellClass: 'text-center', hide: temp1},
  386. {headerName: "주문상세" , field: "ordDtlNo" , width: 80 , cellClass: 'text-center'},
  387. {headerName: "주문상세" , field: "ordDtlStat" , width: 80 , cellClass: 'text-center', hide: temp1},
  388. {headerName: "주문상세상태" , field: "ordDtlStatNm" , width: 100 , cellClass: 'text-center', hide: temp1},
  389. {headerName: "상품코드" , field: "goodsCd" , width: 100 , cellClass: 'text-center', hide: temp1},
  390. {headerName: "상품명" , field: "goodsNm" , width: 200 , cellClass: 'text-center', hide: temp1},
  391. {headerName: "상품타입" , field: "goodsTypeNm" , width: 100 , cellClass: 'text-center', hide: temp2}
  392. ]
  393. },
  394. {
  395. headerName : "주문상세단품정보",
  396. children : [
  397. {headerName: "단품코드" , field: "itemCd" , width: 100 , cellClass: 'text-center', hide: temp2},
  398. {headerName: "단품명" , field: "itemNm" , width: 200 , cellClass: 'text-center', hide: temp2},
  399. {headerName: "칼라코드" , field: "optCd1" , width: 80 , cellClass: 'text-center', hide: temp1},
  400. {headerName: "사이즈코드" , field: "optCd2" , width: 80 , cellClass: 'text-center', hide: temp2},
  401. {
  402. headerName : "단품수량"
  403. , field : "itemQty"
  404. , width : 80
  405. , cellClass : 'text-center'
  406. , cellRenderer : function (params) {
  407. return params.value.addComma();
  408. }
  409. },
  410. {
  411. headerName : "단품금액"
  412. , field : "itemPrice"
  413. , width : 80
  414. , cellClass : 'text-right'
  415. , cellRenderer : function (params) {
  416. return params.value.addComma();
  417. }
  418. },
  419. {
  420. headerName : "단품옵션금액"
  421. , field : "optAddPrice"
  422. , width : 80
  423. , cellClass : 'text-right'
  424. , cellRenderer : function (params) {
  425. return params.value.addComma();
  426. }
  427. }
  428. ]
  429. },
  430. {
  431. headerName : "주문상세수량",
  432. children : [
  433. {
  434. headerName : "주문"
  435. , field : "ordQty"
  436. , width : 80
  437. , cellClass : 'text-center'
  438. , cellRenderer : function (params) {
  439. return params.value.addComma();
  440. }
  441. },
  442. {
  443. headerName : "취소/요청"
  444. , field : "cnclRtnQty"
  445. , width : 80
  446. , cellClass : 'text-center'
  447. , cellRenderer : function (params) {
  448. var cnclRtnReqQty = parseInt(params.data.cnclRtnQty) + parseInt(params.data.ordReqChgQty);
  449. return cnclRtnReqQty;
  450. }
  451. },
  452. {
  453. headerName : "취소"
  454. , field : "ordCanChgQty"
  455. , width : 100
  456. , cellClass : 'text-center'
  457. , cellRenderer : function (params) {
  458. return params.value.addComma();
  459. }
  460. }
  461. ]
  462. },
  463. {
  464. headerName : "주문단품금액",
  465. children : [
  466. {
  467. headerName : "주문"
  468. , field : "ordAmt"
  469. , width : 80
  470. , cellClass : 'text-right'
  471. , cellRenderer : function (params) {
  472. return params.value.addComma();
  473. }
  474. },
  475. {
  476. headerName : "취소"
  477. , field : "cnclRtnAmt"
  478. , width : 80
  479. , cellClass : 'text-right'
  480. , cellRenderer : function (params) {
  481. return params.value.addComma();
  482. }
  483. },
  484. {
  485. headerName : "즉시할인"
  486. , field : "cpn1DcAmt"
  487. , width : 80
  488. , cellClass : 'text-right'
  489. , cellRenderer : function (params) {
  490. return params.value.addComma();
  491. }
  492. },
  493. {
  494. headerName : "다다익선1"
  495. , field : "tmtb1DcAmt"
  496. , width : 80
  497. , cellClass : 'text-right'
  498. , cellRenderer : function (params) {
  499. return params.value.addComma();
  500. }
  501. },
  502. {
  503. headerName : "다다익선2"
  504. , field : "tmtb2DcAmt"
  505. , width : 80
  506. , cellClass : 'text-right'
  507. , cellRenderer : function (params) {
  508. return params.value.addComma();
  509. }
  510. },
  511. {
  512. headerName : "상품쿠폰"
  513. , field : "goodsCpnDcAmt"
  514. , width : 80
  515. , cellClass : 'text-right'
  516. , cellRenderer : function (params) {
  517. return params.value.addComma();
  518. }
  519. },
  520. {
  521. headerName : "장바구니쿠폰"
  522. , field : "cartCpnDcAmt"
  523. , width : 80
  524. , cellClass : 'text-right'
  525. , cellRenderer : function (params) {
  526. return params.value.addComma();
  527. }
  528. },
  529. {
  530. headerName : "포인트"
  531. , field : "pntDcAmt"
  532. , width : 80
  533. , cellClass : 'text-right'
  534. , cellRenderer : function (params) {
  535. return params.value.addComma();
  536. }
  537. },
  538. {
  539. headerName : "선포인트"
  540. , field : "prePntDcAmt"
  541. , width : 80
  542. , cellClass : 'text-right'
  543. , cellRenderer : function (params) {
  544. return params.value.addComma();
  545. }
  546. },
  547. {
  548. headerName : "상품권"
  549. , field : "gfcdUseAmt"
  550. , width : 80
  551. , cellClass : 'text-right'
  552. , cellRenderer : function (params) {
  553. return params.value.addComma();
  554. }
  555. },
  556. {
  557. headerName : "환불금액"
  558. , field : "realOrdAmt"
  559. , width : 80
  560. , cellClass : 'text-right'
  561. , cellRenderer : function (params) {
  562. return params.value.addComma();
  563. }
  564. }
  565. ]
  566. },
  567. {
  568. headerName : "주문배송비정보",
  569. children : [
  570. {
  571. headerName : "배송비"
  572. , field : "delvFee"
  573. , width : 80
  574. , cellClass : 'text-right'
  575. , cellRenderer : function (params) {
  576. return params.value.addComma();
  577. }
  578. , hide : temp2
  579. },
  580. {headerName: "업체" , field: "supplyCompCd" , width: 100 , cellClass: 'text-center', hide: temp2},
  581. {headerName: "배송비코드" , field: "delvFeeCd" , width: 100 , cellClass: 'text-center', hide: temp2},
  582. {
  583. headerName : "무료배송비"
  584. , field : "minOrdAmt"
  585. , width : 80
  586. , cellClass : 'text-right'
  587. , cellRenderer : function (params) {
  588. return params.value.addComma();
  589. }
  590. , hide : temp2
  591. },
  592. {
  593. headerName : "기본배송비"
  594. , field : "orgDelvFee"
  595. , width : 80
  596. , cellClass : 'text-right'
  597. , cellRenderer : function (params) {
  598. return params.value.addComma();
  599. }
  600. , hide : temp2
  601. },
  602. {headerName: "전체취소가능" , field: "allCanYn" , width: 100 , cellClass: 'text-center', hide: temp2},
  603. ]
  604. }
  605. ];
  606. var gridOptionsCancelReqToBeList = orderAgGrid.getGridOptions(columnCancelReqToBeList);
  607. //specify the columns
  608. var columnDelvCdList = [
  609. {
  610. headerName : "배송코드기준금액",
  611. children : [
  612. {headerName: "업체" , field: "supplyCompCd" , width: 100 , cellClass: 'text-center', hide: temp2},
  613. {headerName: "배송비코드" , field: "delvFeeCd" , width: 100 , cellClass: 'text-center', hide: temp2},
  614. {
  615. headerName : "주문"
  616. , field : "ordAmt"
  617. , width : 100
  618. , cellClass : 'text-right'
  619. , cellRenderer : function (params) {
  620. return params.value.addComma();
  621. }
  622. },
  623. {
  624. headerName : "취소"
  625. , field : "cnclRtnAmt"
  626. , width : 100
  627. , cellClass : 'text-right'
  628. , cellRenderer : function (params) {
  629. return params.value.addComma();
  630. }
  631. },
  632. {
  633. headerName : "환불"
  634. , field : "realOrdAmt"
  635. , width : 100
  636. , cellClass : 'text-right'
  637. , cellRenderer : function (params) {
  638. return params.value.addComma();
  639. }
  640. }
  641. ]
  642. },
  643. {
  644. headerName : "배송비정보",
  645. children : [
  646. {
  647. headerName : "배송비"
  648. , field : "delvFee"
  649. , width : 100
  650. , cellClass : 'text-right'
  651. , cellRenderer : function (params) {
  652. return params.value.addComma();
  653. }
  654. , hide : temp2
  655. },
  656. {
  657. headerName : "무료배송비"
  658. , field : "minOrdAmt"
  659. , width : 100
  660. , cellClass : 'text-right'
  661. , cellRenderer : function (params) {
  662. return params.value.addComma();
  663. }
  664. , hide : temp2
  665. },
  666. {
  667. headerName : "기본배송비"
  668. , field : "orgDelvFee"
  669. , width : 100
  670. , cellClass : 'text-right'
  671. , cellRenderer : function (params) {
  672. return params.value.addComma();
  673. }
  674. , hide : temp2
  675. },
  676. {headerName: "추가배송비여부" , field: "addDelvFeeYn" , width: 140 , cellClass: 'text-center', hide: temp2},
  677. {
  678. headerName : "추가배송비"
  679. , field : "addDelvFee"
  680. , width : 100
  681. , cellClass : 'text-right'
  682. , cellRenderer : function (params) {
  683. return params.value.addComma();
  684. }
  685. , hide : temp2
  686. },
  687. {headerName: "전체취소가능" , field: "allCanYn" , width: 100 , cellClass: 'text-center', hide: temp2},
  688. ]
  689. }
  690. ];
  691. var gridOptionsDelvCdList = orderAgGrid.getGridOptions(columnDelvCdList);
  692. </script>
  693. <!-- AgGrid 컬럼 세팅 -->
  694. <script>
  695. // 공통1. 주문상세 그리드 옵션 정보 적용
  696. var orderAgGrid = {
  697. getGridOptions : function(colDefs) {
  698. return {
  699. columnDefs : colDefs
  700. , detailCellRendererParams : {
  701. detailGridOptions : {
  702. columnDefs : []
  703. , defaultColDef : {
  704. resizable: true
  705. }
  706. , suppressLoadingOverlay: false
  707. , onGridReady : function (params) {
  708. params.api.setDomLayout('autoHeight');
  709. }
  710. , onFirstDataRendered : function (params) {
  711. params.api.sizeColumnsToFit();
  712. }
  713. }
  714. , getDetailRowData: function (params) {
  715. params.successCallback(params.data.orderDetailList);
  716. }
  717. }
  718. , defaultColDef: {
  719. resizable: true
  720. }
  721. , isRowMaster: function (dataItem) {
  722. return dataItem ? dataItem.orderDetailList.length > 1 : false;
  723. }
  724. , suppressRowTransform: true
  725. , enableRangeSelection: true
  726. };
  727. }
  728. }
  729. </script>
  730. <script>
  731. // 취소정보계산
  732. var fnCalculateRefundAmt = function (obj) {
  733. // 취소정보담은목록
  734. var cancelRequestTargetToBeList = [];
  735. if (obj != null) {
  736. for (i=0 ; i<cancelRequestTargetList.length ; i++) {
  737. var orDtlNo = $(obj).attr("ordDtlNo");
  738. var ordCanChgQty = $(obj).val();
  739. if (cancelRequestTargetList[i].ordDtlNo == orDtlNo) {
  740. cancelRequestTargetList[i].ordCanChgQty = ordCanChgQty;
  741. }
  742. }
  743. // 주문정보 다시 셋팅 (체크해봐야할문제)
  744. gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);
  745. }
  746. /*
  747. // 취소 후 발생되는 배송정보 설정
  748. var delvFeeList = [];
  749. var delvObj = new Object();
  750. var k = 0;
  751. // 공급업체 와 배송정책코드가 같지안으면 주문금액, 취소금액 RESET
  752. delvObj.ordAmt = 0;
  753. delvObj.cnclRtnAmt = 0;
  754. delvObj.realOrdAmt = 0;
  755. delvObj.delvFee = cancelRequestTargetList[k].delvFee;
  756. delvObj.minOrdAmt = cancelRequestTargetList[k].minOrdAmt;
  757. delvObj.orgDelvFee = cancelRequestTargetList[k].orgDelvFee;
  758. delvObj.supplyCompCd = cancelRequestTargetList[k].supplyCompCd;
  759. delvObj.delvFeeCd = cancelRequestTargetList[k].delvFeeCd;
  760. delvObj.allCanYn = cancelRequestTargetList[k].allCanYn;
  761. delvFeeList[k] = delvObj;
  762. var spanPayAmt = 0; // 총 결제 금액
  763. var spanSumRealOrdAmt = 0; // 상품 실결제 금액
  764. var spanSumDeliveryFee = 0; // 배송금액
  765. var spanOrdAmt = 0; // 주문 상품 금액
  766. var spanCnclRtnAmt = 0; // 취소 상품 금액
  767. var spanTotPntDcAmt = 0; // 취소 사용 포인트
  768. var spanPntDcAmt = 0; // 고객 포인트
  769. var spanPrePntDcAmt = 0; // 상품 선포인트
  770. var spanCpnDcAmt = 0; // 취소 사용 쿠폰금액
  771. var spanCpn1DcAmt = 0; // 즉시할인쿠폰
  772. var spanGoodsCpnDcAmt = 0; // 상품쿠폰
  773. var spanCartCpnDcAmt = 0; // 장바구니쿠폰
  774. var spanTmtbDcAmt = 0; // 취소 다다익선 금액
  775. var spanTmtb1DcAmt = 0; // 수량할인
  776. var spanTmtb2DcAmt = 0; // 금액할인
  777. var spanGfcdUseAmt = 0; // 취소 고객 상품권 금액
  778. var spanRealCnclRtnAmt = 0; // 취소 상품 실결제 금액
  779. var spanTotDeliveryFee = 0; // 환불 배송 금액
  780. var spanRefundAmt = 0; // 환불 금액 합계
  781. // 취소정보 설정
  782. for (i=0 ; i<cancelRequestTargetList.length ; i++) {
  783. var obj = new Object();
  784. var itemQty = cancelRequestTargetList[i].itemQty;
  785. var ordQty = cancelRequestTargetList[i].ordQty;
  786. var cnclRtnQty = cancelRequestTargetList[i].cnclRtnQty;
  787. var ordReqChgQty = cancelRequestTargetList[i].ordReqChgQty;
  788. var ordCanChgQty = cancelRequestTargetList[i].ordCanChgQty;
  789. var itemPrice = cancelRequestTargetList[i].itemPrice;
  790. var optAddPrice = cancelRequestTargetList[i].optAddPrice;
  791. var ordAmt = cancelRequestTargetList[i].ordAmt;
  792. var cnclRtnAmt = cancelRequestTargetList[i].cnclRtnAmt;
  793. var cpn1DcAmt = cancelRequestTargetList[i].cpn1DcAmt;
  794. var tmtb1DcAmt = cancelRequestTargetList[i].tmtb1DcAmt;
  795. var tmtb2DcAmt = cancelRequestTargetList[i].tmtb2DcAmt;
  796. var goodsCpnDcAmt = cancelRequestTargetList[i].goodsCpnDcAmt;
  797. var cartCpnDcAmt = cancelRequestTargetList[i].cartCpnDcAmt;
  798. var pntDcAmt = cancelRequestTargetList[i].pntDcAmt;
  799. var prePntDcAmt = cancelRequestTargetList[i].prePntDcAmt;
  800. var gfcdUseAmt = cancelRequestTargetList[i].gfcdUseAmt;
  801. var realOrdAmt = cancelRequestTargetList[i].realOrdAmt;
  802. obj.ordNo = cancelRequestTargetList[i].ordNo;
  803. obj.ordDtlNo = cancelRequestTargetList[i].ordDtlNo;
  804. obj.goodsCd = cancelRequestTargetList[i].goodsCd;
  805. obj.goodsNm = cancelRequestTargetList[i].goodsNm;
  806. obj.itemCd = cancelRequestTargetList[i].itemCd;
  807. obj.itemNm = cancelRequestTargetList[i].itemNm;
  808. obj.optCd1 = cancelRequestTargetList[i].optCd1;
  809. obj.optCd2 = cancelRequestTargetList[i].optCd2;
  810. obj.itemQty = itemQty;
  811. obj.ordQty = ordQty;
  812. obj.cnclRtnQty = cnclRtnQty;
  813. obj.ordReqChgQty = ordReqChgQty;
  814. obj.ordCanChgQty = ordCanChgQty;
  815. obj.itemPrice = itemPrice;
  816. obj.optAddPrice = optAddPrice;
  817. obj.ordAmt = ordAmt;
  818. obj.cnclRtnAmt = ((itemPrice + optAddPrice) * itemQty) * ordCanChgQty;
  819. obj.cpn1DcAmt = cpn1DcAmt * (ordCanChgQty/ordQty);
  820. obj.tmtb1DcAmt = tmtb1DcAmt * (ordCanChgQty/ordQty);
  821. obj.tmtb2DcAmt = tmtb2DcAmt * (ordCanChgQty/ordQty);
  822. obj.goodsCpnDcAmt = goodsCpnDcAmt * (ordCanChgQty/ordQty);
  823. obj.cartCpnDcAmt = cartCpnDcAmt * (ordCanChgQty/ordQty);
  824. obj.pntDcAmt = pntDcAmt * (ordCanChgQty/ordQty);
  825. obj.prePntDcAmt = prePntDcAmt * (ordCanChgQty/ordQty);
  826. obj.gfcdUseAmt = gfcdUseAmt * (ordCanChgQty/ordQty);
  827. obj.realOrdAmt = obj.cnclRtnAmt - (obj.cpn1DcAmt + obj.tmtb1DcAmt + obj.tmtb2DcAmt + obj.goodsCpnDcAmt + obj.cartCpnDcAmt + obj.pntDcAmt + obj.prePntDcAmt + obj.gfcdUseAmt);
  828. // 배송관련 설정
  829. obj.ordDtlNo = cancelRequestTargetList[i].ordDtlNo;
  830. obj.goodsTypeNm = cancelRequestTargetList[i].goodsTypeNm;
  831. obj.delvFee = cancelRequestTargetList[i].delvFee;
  832. obj.supplyCompCd = cancelRequestTargetList[i].supplyCompCd;
  833. obj.delvFeeCd = cancelRequestTargetList[i].delvFeeCd;
  834. obj.minOrdAmt = cancelRequestTargetList[i].minOrdAmt;
  835. obj.orgDelvFee = cancelRequestTargetList[i].orgDelvFee;
  836. // 주문상세상태
  837. obj.ordDtlStat = cancelRequestTargetList[i].ordDtlSat;
  838. obj.ordDtlSatNm = cancelRequestTargetList[i].ordDtlSatNm;
  839. obj.allCanYn = cancelRequestTargetList[i].allCanYn;
  840. cancelRequestTargetToBeList[i] = obj;
  841. // 배송비 정책 기준으로 조건 처리
  842. if (delvFeeList[k].supplyCompCd == obj.supplyCompCd && delvFeeList[k].delvFeeCd == obj.delvFeeCd) {
  843. // 공급업체 와 배송정책코드가 같으면 주문금액, 취소금액 SUM
  844. delvFeeList[k].ordAmt += obj.ordAmt;
  845. delvFeeList[k].cnclRtnAmt += obj.cnclRtnAmt;
  846. delvFeeList[k].realOrdAmt += obj.realOrdAmt;
  847. if (obj.allCanYn == "N") {
  848. delvFeeList[k].allCanYn = "N";
  849. }
  850. } else {
  851. k++;
  852. var delvObj = new Object();
  853. // 공급업체 와 배송정책코드가 같지안으면 주문금액, 취소금액 RESET
  854. delvObj.ordAmt = obj.ordAmt;
  855. delvObj.cnclRtnAmt = obj.cnclRtnAmt;
  856. delvObj.realOrdAmt = obj.realOrdAmt;
  857. delvObj.delvFee = obj.delvFee;
  858. delvObj.minOrdAmt = obj.minOrdAmt;
  859. delvObj.orgDelvFee = obj.orgDelvFee;
  860. delvObj.supplyCompCd = obj.supplyCompCd;
  861. delvObj.delvFeeCd = obj.delvFeeCd;
  862. delvObj.allCanYn = obj.allCanYn;
  863. delvFeeList[k] = delvObj;
  864. }
  865. spanSumRealOrdAmt += realOrdAmt;
  866. spanPntDcAmt += obj.pntDcAmt;
  867. spanPrePntDcAmt += obj.prePntDcAmt;
  868. spanCpn1DcAmt += obj.cpn1DcAmt;
  869. spanGoodsCpnDcAmt += obj.goodsCpnDcAmt;
  870. spanCartCpnDcAmt += obj.cartCpnDcAmt;
  871. spanTmtb1DcAmt += obj.tmtb1DcAmt;
  872. spanTmtb2DcAmt += obj.tmtb2DcAmt;
  873. spanGfcdUseAmt += obj.gfcdUseAmt;
  874. spanRealCnclRtnAmt += obj.realOrdAmt;
  875. }
  876. // 추가배송비 발생여부 , 추가배송비, 배송비정책단위 전체취소 여부
  877. for (i=0 ; i<delvFeeList.length ; i++) {
  878. var obj = delvFeeList[i];
  879. // 무료배송비용 > (주문금액 - 취소금액)
  880. if (obj.minOrdAmt > (obj.ordAmt - obj.cnclRtnAmt)) {
  881. // 2020.12.28
  882. // case : 배송정책 기준으로 1,2 상품 주문 후 1번 출고 후 1번반품 2번취소 할 경우 전체 취소 가 아니므로 배송비 부과 있을지 모르겠음 주문업체 단위로 배송되기 때문에 발생하지 않을것 같음
  883. if ((obj.ordAmt - obj.cnclRtnAmt) == 0) {
  884. if (obj.allCanYn == "N") {
  885. obj.addDelvFeeYn = "Y";
  886. obj.addDelvFee = obj.orgDelvFee;
  887. } else {
  888. // 전체취소의 경우에 해당
  889. obj.addDelvFeeYn = "N";
  890. obj.addDelvFee = 0;
  891. }
  892. } else {
  893. // 취소신청화면에서 대부분 아래의 조건에 해당
  894. obj.addDelvFeeYn = "Y";
  895. obj.addDelvFee = obj.orgDelvFee;
  896. }
  897. //obj.addDelvFeeYn = "Y";
  898. //obj.addDelvFee = obj.orgDelvFee;
  899. } else {
  900. obj.addDelvFeeYn = "N";
  901. obj.addDelvFee = 0;
  902. }
  903. spanSumDeliveryFee += obj.delvFee;
  904. spanOrdAmt += obj.ordAmt;
  905. spanCnclRtnAmt += obj.cnclRtnAmt;
  906. spanTotDeliveryFee += obj.addDelvFee;
  907. delvFeeList[i] = obj;
  908. }
  909. gridOptionsCancelReqToBeList.api.setRowData(cancelRequestTargetToBeList);
  910. gridOptionsDelvCdList.api.setRowData(delvFeeList);
  911. // 환불금액표시
  912. spanPayAmt = spanSumRealOrdAmt + spanSumDeliveryFee;
  913. spanTotPntDcAmt = spanPntDcAmt + spanPrePntDcAmt;
  914. spanCpnDcAmt = spanCpn1DcAmt + spanGoodsCpnDcAmt + spanCartCpnDcAmt;
  915. spanTmtbDcAmt = spanTmtb1DcAmt + spanTmtb2DcAmt;
  916. spanRefundAmt = spanRealCnclRtnAmt - spanTotDeliveryFee;
  917. $("#spanPayAmt").text(spanPayAmt.addComma()); //총 결제 금액
  918. $("#spanSumRealOrdAmt").text(spanSumRealOrdAmt.addComma()); //상품 실결제 금액
  919. $("#spanSumDeliveryFee").text(spanSumDeliveryFee.addComma()); //배송금액
  920. $("#spanOrdAmt").text(spanOrdAmt.addComma()); //주문 상품 금액
  921. $("#spanCnclRtnAmt").text(spanCnclRtnAmt.addComma()); //취소 상품 금액
  922. $("#spanTotPntDcAmt").text(spanTotPntDcAmt.addComma()); //취소 사용 포인트
  923. $("#spanPntDcAmt").text(spanPntDcAmt.addComma()); //고객 포인트
  924. $("#spanPrePntDcAmt").text(spanPrePntDcAmt.addComma()); //상품 선포인트
  925. $("#spanCpnDcAmt").text(spanCpnDcAmt.addComma()); //취소 사용 쿠폰금액
  926. $("#spanCpn1DcAmt").text(spanCpn1DcAmt.addComma()); //즉시할인쿠폰
  927. $("#spanGoodsCpnDcAmt").text(spanGoodsCpnDcAmt.addComma()); //상품쿠폰
  928. $("#spanCartCpnDcAmt").text(spanCartCpnDcAmt.addComma()); //장바구니쿠폰
  929. $("#spanTmtbDcAmt").text(spanTmtbDcAmt.addComma()); //취소 다다익선 금액
  930. $("#spanTmtb1DcAmt").text(spanTmtb1DcAmt.addComma()); //수량할인
  931. $("#spanTmtb2DcAmt").text(spanTmtb2DcAmt.addComma()); //금액할인
  932. $("#spanGfcdUseAmt").text(spanGfcdUseAmt.addComma()); //취소 고객 상품권 금액
  933. $("#spanRealCnclRtnAmt").text(spanRealCnclRtnAmt.addComma()); //취소 상품 실결제 금액
  934. $("#spanTotDeliveryFee").text(spanTotDeliveryFee.addComma()); //환불 배송 금액
  935. $("#spanRefundAmt").text(spanRefundAmt.addComma()); //환불 금액 합계
  936. */
  937. // 환불금액계산호출
  938. var jsonData = JSON.stringify(cancelRequestTargetList);
  939. gagajf.ajaxJsonSubmit(
  940. '/order/cancel/refundAmt'
  941. , jsonData
  942. , function(result) {
  943. gridOptionsCancelReqToBeList.api.setRowData(result.cancelOrderRefundList);
  944. gridOptionsDelvCdList.api.setRowData(result.cancelDelvRefundList);
  945. $("#spanPayAmt").text(result.spanPayAmt.addComma()); //총 결제 금액
  946. $("#spanSumRealOrdAmt").text(result.spanSumRealOrdAmt.addComma()); //상품 실결제 금액
  947. $("#spanSumDeliveryFee").text(result.spanSumDeliveryFee.addComma()); //배송금액
  948. $("#spanOrdAmt").text(result.spanOrdAmt.addComma()); //주문 상품 금액
  949. $("#spanCnclRtnAmt").text(result.spanCnclRtnAmt.addComma()); //취소 상품 금액
  950. $("#spanTotPntDcAmt").text(result.spanTotPntDcAmt.addComma()); //취소 사용 포인트
  951. $("#spanPntDcAmt").text(result.spanPntDcAmt.addComma()); //고객 포인트
  952. $("#spanPrePntDcAmt").text(result.spanPrePntDcAmt.addComma()); //상품 선포인트
  953. $("#spanCpnDcAmt").text(result.spanCpnDcAmt.addComma()); //취소 사용 쿠폰금액
  954. $("#spanCpn1DcAmt").text(result.spanCpn1DcAmt.addComma()); //즉시할인쿠폰
  955. $("#spanGoodsCpnDcAmt").text(result.spanGoodsCpnDcAmt.addComma()); //상품쿠폰
  956. $("#spanCartCpnDcAmt").text(result.spanCartCpnDcAmt.addComma()); //장바구니쿠폰
  957. $("#spanTmtbDcAmt").text(result.spanTmtbDcAmt.addComma()); //취소 다다익선 금액
  958. $("#spanTmtb1DcAmt").text(result.spanTmtb1DcAmt.addComma()); //수량할인
  959. $("#spanTmtb2DcAmt").text(result.spanTmtb2DcAmt.addComma()); //금액할인
  960. $("#spanGfcdUseAmt").text(result.spanGfcdUseAmt.addComma()); //취소 고객 상품권 금액
  961. $("#spanRealCnclRtnAmt").text(result.spanRealCnclRtnAmt.addComma()); //취소 상품 실결제 금액
  962. $("#spanTotDeliveryFee").text(result.spanTotDeliveryFee.addComma()); //환불 배송 금액
  963. $("#spanRefundAmt").text(result.spanRefundAmt.addComma()); //환불 금액 합계
  964. //alert("a");
  965. //$('#btnSearch').trigger('click');
  966. }
  967. );
  968. }
  969. // 사유
  970. var fnChangeChgReason = function(reasonCd){
  971. var arrREasonCd = reasonCd.split(":");
  972. // 취소, 반품, 교환 사유 판단
  973. if (arrREasonCd[0] == 'G686_10') {
  974. $("#imputeReason").text("고객");
  975. isImputationCustomers = true;
  976. } else {
  977. $("#imputeReason").text("회사");
  978. isImputationCustomers = false;
  979. }
  980. $('#cancelRequestFrm input[name=chgReason]').val(arrREasonCd[0]);
  981. $('#cancelRequestFrm input[name=chgReasonDesc]').val(arrREasonCd[1]);
  982. //fnCalculateRefundAmt(); //환불예정금액 계산.
  983. }
  984. // 에스크로 전체취소, 부분취소 요청
  985. var fnCancelRequestPartOk = function () {
  986. // 취소, 반품, 교환 신청 정보 목록
  987. //cancelRequestTargetList;
  988. var jsonData = JSON.stringify(cancelRequestTargetList);
  989. gagajf.ajaxJsonSubmit(
  990. '/order/cancel/'
  991. , jsonData
  992. , function() {
  993. $('#btnSearch').trigger('click');
  994. }
  995. );
  996. }
  997. $(document).ready(function() {
  998. // Create a agGrid
  999. gagaAgGrid.createGrid('gridOrderCancelRequestList' , gridOptionsCancelReqList); // 주문정보
  1000. gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);
  1001. gagaAgGrid.createGrid('gridOrderCancelRequestToBeList' , gridOptionsCancelReqToBeList); // 취소정보
  1002. gagaAgGrid.createGrid('gridDelvCdList' , gridOptionsDelvCdList); // 배송비 정보
  1003. // 취소정보계산
  1004. fnCalculateRefundAmt(null);
  1005. });
  1006. </script>
  1007. </html>