RtnReqForm.html 70 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007
  1. <!DOCTYPE html>
  2. <html lang="ko" xmlns:th="http://www.thymeleaf.org">
  3. <!--
  4. *******************************************************************************
  5. * @source : RtnReqForm.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('popupReturnRequestForm');"><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="/orderChange/return" method="post" target="hdFrameForOrderCancel">
  24. <input type="hidden" name="ordNo" th:value="${ordNo}"/>
  25. <input type="hidden" name="ordChgSq" th:value="${ordChgSq}"/>
  26. <input type="hidden" name="delvFeeCd" th:value="${delvFeeCd}"/>
  27. <input type="hidden" name="delvFeeCdGrp" th:value="${delvFeeCdGrp}"/>
  28. <input type="hidden" name="chgReason" value=""/>
  29. <input type="hidden" name="chgReasonDesc" value=""/>
  30. <h4>주문정보</h4>
  31. <div id="gridOrderCancelRequestList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
  32. <h4 id="h4OrderCancelRequestToBeList">반품정보</h4>
  33. <div id="gridOrderCancelRequestToBeList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
  34. <div id="delvCdList">
  35. <h4>배송정보</h4>
  36. <div id="gridDelvCdList" style="width:100%; height: 66px;" class="ag-theme-balham"></div>
  37. </div>
  38. <h4 id="h4DelvInfoList">배송비정보</h4>
  39. <div id="gridDelvInfoList" 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="rtnReqBtn" onclick="fnCnclReq('rtnReq');">반품신청</button>
  42. <button type="button" class="btn btn-success" id="rtnReqCancelBtn" onclick="fnCnclReq('rtnReqCancel');">반품철회</button>
  43. <button type="button" class="btn btn-success" id="rtnToRtnBtn" onclick="fnCnclReq('rtnReq');">반품변경</button>
  44. <button type="button" class="btn btn-success" id="rtnToExcBtn" onclick="fnRtnToExc();">교환변경</button>
  45. <button type="button" class="btn btn-success" id="returnHold" npayChangeHoldYn="N" onclick="fnNpayReturnHold(this)">반품보류</button>
  46. <button type="button" class="btn btn-success" id="releaseReturnHold" npayChangeHoldYn="Y" onclick="fnNpayReturnHold(this)">반품보류해제</button>
  47. </div>
  48. <table class="frmStyle">
  49. <colgroup>
  50. <col style="width:160px;" />
  51. <col style="width:320px;" />
  52. <col style="width:160px;" />
  53. <col style="width:320px;" />
  54. <col style="width:160px;" />
  55. <col />
  56. </colgroup>
  57. <tbody>
  58. <tr>
  59. <th>반품사유 <i class="star"></i></th>
  60. <td>
  61. <select name="selectChgReason" onchange="fnChangeChgReason($(this).val());">
  62. <option value="">[선택하세요]</option>
  63. <option th:if="${chgReasonList}" th:each="oneData, status : ${chgReasonList}" th:value="|${oneData.cd}|" th:text="|${oneData.cdNm}|"></option>
  64. </select>
  65. </td>
  66. <th>회수방법</th>
  67. <td>
  68. <label class="rdoBtn"><input type="radio" name="wdGb" th:id="wdGb" value="W" onclick="fnChangeWdGb(this)"/>회수요청<span></span></label>
  69. <label class="rdoBtn"><input type="radio" name="wdGb" th:id="wdGb" value="D" onclick="fnChangeWdGb(this)"/>직접발송<span></span></label>
  70. </td>
  71. <th>귀책사유</th>
  72. <td><span id="imputeReason"></span></td>
  73. </tr>
  74. <tr>
  75. <th>알림톡미전송여부</th>
  76. <td colspan="5">
  77. <label class="chkBox">
  78. <input type="checkbox" name="msgStat" id="msgStat" checked/>
  79. </label>
  80. </td>
  81. </tr>
  82. <tr>
  83. <th>요청메모<br/><span id="chgMemoCount">0</span>/1,000Byte</th>
  84. <td colspan="5">
  85. <textarea id="chgMemo" name="chgMemo" style="height:80px;" onkeyup="cfnGetTextLength(this, 1000, $('#chgMemoCount'));"></textarea>
  86. </td>
  87. </tr>
  88. </tbody>
  89. </table>
  90. <h4>환불예정금액</h4>
  91. <table class="frmStyle">
  92. <colgroup>
  93. <col width="">
  94. <col width="">
  95. <col width="">
  96. <col width="">
  97. </colgroup>
  98. <thead>
  99. <tr>
  100. <th style="height:30px;">구분</th>
  101. <th style="height:30px;">항목</th>
  102. <th style="height:30px;">합계</th>
  103. <th style="height:30px;">내역</th>
  104. </tr>
  105. </thead>
  106. <tbody>
  107. <tr>
  108. <td style="height:25px;">상품금액</td>
  109. <td>취소상품금액</td>
  110. <td class="spanCnclRtnAmt">0원</td>
  111. <td></td>
  112. </tr>
  113. <tr>
  114. <td rowspan="2">할인금액차감</td>
  115. <td>쿠폰할인차감</td>
  116. <td class="spanCpnDcAmt">0원</td>
  117. <td style="line-height:25px;">
  118. <div style="height:25px;"><span>즉시할인쿠폰 : </span><span class="spanCpn1DcAmt">0원</span></div>
  119. <div style="height:25px;"><span>주문서상품쿠폰 : </span><span class="spanGoodsCpnDcAmt">0원</span></div>
  120. <div style="height:25px;"><span>장바구니쿠폰 : </span><span class="spanCartCpnDcAmt">0원</span></div>
  121. </td>
  122. </tr>
  123. <tr>
  124. <td>상품할인차감</td>
  125. <td class="goodsDcSumAmt">0원</td>
  126. <td style="line-height:25px;">
  127. <div style="height:25px;"><span>선포인트할인 : </span><span class="spanPrePntDcAmt">0원</span></div>
  128. <div style="height:25px;"><span>다다익선할인 : </span><span class="spanTmtbDcAmt">0원</span></div>
  129. </td>
  130. </tr>
  131. <tr>
  132. <td>배송비</td>
  133. <td>환불배송비</td>
  134. <td class="spanRealDelvAmt">0원</td>
  135. <td style="line-height:25px;">
  136. <div style="height:25px;"><span>배송비쿠폰 : </span><span class="delvCpnAmt">0원</span></div>
  137. <div style="height:25px;"><span>추가금결제 : </span><span class="addDelvFee">0원</span></div>
  138. </td>
  139. </tr>
  140. <tr>
  141. <td rowspan="4">환불금액</td>
  142. <td style="height:25px;">총환불금액</td>
  143. <td class="totalRefundAmt">0원</td>
  144. <td></td>
  145. </tr>
  146. <tr>
  147. <td style="height:25px;">결제수단환불</td>
  148. <td class="spanRefundAmt">0원</td>
  149. <td>
  150. <span class="pgGbNm"></span><span class="cardNm"></span>
  151. </td>
  152. </tr>
  153. <tr>
  154. <td style="height:25px;">상품권환불</td>
  155. <td class="spanGfcdUseAmt">0P</td>
  156. <td></td>
  157. </tr>
  158. <tr>
  159. <td style="height:25px;">포인트환불</td>
  160. <td class="spanPntDcAmt">0원</td>
  161. <td>
  162. <span>적립예정포인트환수 : </span><span class="spanSavePntAmt">0P</span>
  163. </td>
  164. </tr>
  165. </tbody>
  166. </table>
  167. <!-- 회수지정보 -->
  168. <div id="chgerAddress">
  169. <h4>회수지 정보</h4>
  170. <button style="float: right" type="button" class="btn btn-success" th:if="${ordChgSq > 0 and (chgStat == 'G685_50' or chgStat == 'G685_51')}" onclick="fnChangeChgerInfo();">회수지 수정</button>
  171. <table class="frmStyle">
  172. <colgroup>
  173. <col style="width:160px;" />
  174. <col style="width:320px;" />
  175. <col style="width:160px;" />
  176. <col />
  177. </colgroup>
  178. <tbody>
  179. <tr>
  180. <th>보내는사람 <i class="star"></i></th>
  181. <td colspan="3"><input type="text" name ="chgerNm" class=""/></td>
  182. </tr>
  183. <tr>
  184. <th>회수지주소 <i class="star"></i></th>
  185. <td colspan="3">
  186. <input type="text" name ="chgerZipcode" class="w100" readonly="readonly"/>
  187. <button type="button" class="btn btn-info" th:if="${ordChgSq == 0 or chgStat == 'G685_50' or chgStat == 'G685_51'}" onclick="fnOpenDaumAddr('delvLoc');">우편번호찾기</button>
  188. <input type="text" name ="chgerBaseAddr" class="w300" readonly="readonly"/>
  189. <input type="text" name ="chgerDtlAddr" class="w300"/>
  190. </td>
  191. </tr>
  192. <tr>
  193. <th>일반전화</th>
  194. <td>
  195. <select name="chgerTelno1" class="w100">
  196. <option value="">[선택하세요]</option>
  197. <option th:if="${TelExcNoList}" th:each="oneData, status : ${TelExcNoList}" th:value="${oneData.cd}" th:text="${oneData.cd}"></option>
  198. </select>
  199. - <input type="text" name ="chgerTelno2" class="w60"/>
  200. - <input type="text" name ="chgerTelno3" class="w60"/>
  201. </td>
  202. <th>휴대전화 <i class="star"></i></th>
  203. <td>
  204. <select name="chgerPhnno1" class="w100">
  205. <option value="">[선택하세요]</option>
  206. <option th:if="${PhnExcNoList}" th:each="oneData, status : ${PhnExcNoList}" th:value="${oneData.cd}" th:text="${oneData.cd}"></option>
  207. </select>
  208. - <input type="text" name ="chgerPhnno2" class="w60"/>
  209. - <input type="text" name ="chgerPhnno3" class="w60"/>
  210. </td>
  211. </tr>
  212. <tr>
  213. <th>반품메모<br/><span id="chgerRtnMemoCount">0</span>/1,000Byte</th>
  214. <td colspan="3">
  215. <textarea id="chgerRtnMemo" name="chgerRtnMemo" style="height:80px;" onkeyup="cfnGetTextLength(this, 1000, $('#chgerRtnMemoCount'));"></textarea>
  216. </td>
  217. </tr>
  218. </tbody>
  219. </table>
  220. </div>
  221. <!-- //회수지정보 -->
  222. <div id="refundAccount" style="width:100%">
  223. <h4>환불계좌정보</h4>
  224. <button type="button" id="btnSaveAccount" class="btn btnRight btn-base btn-sm" style="margin-left:10px;" onclick="fnCreateOrderRfAccount();">등록</button>
  225. <!-- TABLE -->
  226. <table class="tableStyle">
  227. <colgroup>
  228. <col width="">
  229. <col width="">
  230. <col width="">
  231. <col width="">
  232. <col width="">
  233. </colgroup>
  234. <thead>
  235. <tr>
  236. <th>은행명</th>
  237. <th>은행코드</th>
  238. <th>계좌번호</th>
  239. <th>예금주</th>
  240. <th>기본여부</th>
  241. </tr>
  242. </thead>
  243. <tbody>
  244. <tr style="height:30px;">
  245. <td class="bankNm"></td>
  246. <td class="bankCd"></td>
  247. <td class="accountNo"></td>
  248. <td class="accountNm"></td>
  249. <td class="defaultYn"></td>
  250. </tr>
  251. </tbody>
  252. </table>
  253. </div>
  254. <h4>접수자 정보</h4>
  255. <table class="frmStyle">
  256. <colgroup>
  257. <col style="width:15%;" />
  258. <col style="width:35%;" />
  259. <col style="width:15%;" />
  260. <col />
  261. </colgroup>
  262. <tbody>
  263. <tr>
  264. <th>접수자</th>
  265. <td id="rtnRequestRegNm"></td>
  266. <th>최종수정자</th>
  267. <td id="rtnRequestUpdNm"></td>
  268. </tr>
  269. </tbody>
  270. </table>
  271. <br>
  272. </form>
  273. </div>
  274. </div>
  275. </div>
  276. <!-- data -->
  277. <script th:inline="javascript">
  278. /*<![CDATA[*/
  279. var cancelRequestTargetList = [[${cancelRequestTargetList}]]; // 취소대상목록
  280. var cancelRequestTargetCnt = [[${cancelRequestTargetList.size()}]]; // 취소대상건수
  281. var ordNo = [[${ordNo}]]; // 주문번호
  282. var ordChgSq = [[${ordChgSq}]]; // 주문변경번호
  283. var delvFeeCd = [[${delvFeeCd}]]; // 배송정책코드
  284. var orderInfoList = [[${orderInfoList}]]; // 주문기본정보
  285. var orderDelvRtnAddrInfo = [[${orderDelvRtnAddrInfo}]]; // 회수지정보
  286. var orderChangeDetailList = [[${orderChangeDetailList}]]; // 취소/반품/교환요청 정보
  287. var chgStat = [[${chgStat}]]; // 변경상태
  288. var recallExceptionInfo = [[${recallExceptionInfo}]]; // 회수 예외 정보
  289. var rtnLocInfo = [[${rtnLocInfo}]]; // 반송지주소정보
  290. var payGb = orderInfoList[0].payGb; // 결제수단
  291. var payMeans = orderInfoList[0].payMeans; // 결제방법
  292. var payMeansNm = orderInfoList[0].payMeansNm; // 결제방법명
  293. var cardNm = orderInfoList[0].cardNm; // 결제카드명
  294. var pgGb = orderInfoList[0].pgGb; // PG구분
  295. var payStat = orderInfoList[0].payStat; // 결제상태
  296. var selfGoodsYn = cancelRequestTargetList[0].selfGoodsYn; // 자사,입점여부
  297. var chgReason = ""; // 변경사유코드
  298. var chgMemo = ""; // 변경사유메모
  299. var wdGb = ""; // 회수방법
  300. var ordChgGb = [[${ordChgGb}]]; // 주문변경요쳥변경구분
  301. var canRequestCancelYn = ""; // 반품철회가능여부
  302. var npayChangeHoldYn = ''; // 네이버페이 주문형 반품/교환 보류 여부
  303. // 변경요청정보
  304. if (ordChgSq > 0) {
  305. chgReason = orderChangeDetailList[0].chgReason; // 변경사유코드
  306. chgMemo = orderChangeDetailList[0].chgMemo; // 변경사유메모
  307. wdGb = orderChangeDetailList[0].wdGb; // 회수방법
  308. canRequestCancelYn = orderChangeDetailList[0].canRequestCancelYn; // 반품철회가능여부
  309. npayChangeHoldYn = orderChangeDetailList[0].npayChangeHoldYn; // 네이버페이 주문형 반품/교환 보류 여부
  310. }
  311. if (gagajf.isNull(ordChgGb)) {
  312. ordChgGb == '1';
  313. }
  314. var temp1 = true;
  315. var temp2 = false;
  316. var temp3 = true;
  317. // 1. 주문정보(변경요청가능대상)
  318. var columnCancelReqList = [
  319. {headerName: "주문번호" , field: "ordNo" , width: 80 , cellClass: 'text-center' , hide: temp1},
  320. {headerName: "주문상세" , field: "ordDtlNo" , width: 80 , cellClass: 'text-center'},
  321. {headerName: "주문상세" , field: "ordDtlStat" , width: 80 , cellClass: 'text-center' , hide: temp1},
  322. {headerName: "주문상세상태" , field: "ordDtlStatNm" , width: 100 , cellClass: 'text-center' , hide: temp1},
  323. {headerName: "상품코드" , field: "goodsCd" , width: 110 , cellClass: 'text-left' , hide: temp2},
  324. {headerName: "SKUCODE" , field: "optCd" , width: 100 , cellClass: 'text-center' , hide: temp2},
  325. {headerName: "상품명" , field: "goodsNm" , width: 200 , cellClass: 'text-left' , hide: temp2},
  326. {headerName: "상품타입" , field: "goodsTypeNm" , width: 80 , cellClass: 'text-center',
  327. cellRenderer: function (params) {
  328. var option;
  329. if (params.data.goodsType == 'G056_S') {
  330. option = "<a href=\"javascript:void(0);\" onclick=\"fnOrderDetailItemForm('" + params.data.ordDtlNo + "');\">" + params.value + "</a>";
  331. } else {
  332. option = params.value
  333. }
  334. return option;
  335. },
  336. hide: temp2
  337. },
  338. {headerName: "옵션1" , field: "colorNm" , width: 60 , cellClass: 'text-center' , hide: temp2},
  339. {headerName: "옵션2" , field: "optCd2" , width: 60 , cellClass: 'text-center' , hide: temp2},
  340. {
  341. headerName : "옵션금액"
  342. , field : "optAddPrice"
  343. , width : 80
  344. , cellClass : 'text-right'
  345. , cellRenderer : function (params) {
  346. return params.value.addComma();
  347. }
  348. , hide : temp1
  349. },
  350. {
  351. headerName : "주문"
  352. , field : "ordQty"
  353. , width : 80
  354. , cellClass : 'text-center'
  355. , cellRenderer : function (params) {
  356. return params.value.addComma();
  357. }
  358. },
  359. {
  360. headerName : "취소/요청"
  361. , field : "cnclRtnQty"
  362. , width : 80
  363. , cellClass : 'text-center'
  364. , cellRenderer : function (params) {
  365. var cnclRtnReqQty = parseInt(params.data.cnclRtnQty) + parseInt(params.data.ordReqChgQty);
  366. return cnclRtnReqQty;
  367. }
  368. , hide : temp1
  369. },
  370. {
  371. headerName : "취소/반품"
  372. , field : "ordCanChgQty"
  373. , width : 100
  374. , cellClass : 'text-center'
  375. , cellRenderer : function (params) {
  376. var ordQty = parseInt(params.data.ordQty);
  377. var cnclRtnQty = parseInt(params.data.cnclRtnQty);
  378. var ordReqChgQty = parseInt(params.data.ordReqChgQty);
  379. var ordCanChgQty = parseInt(params.value);
  380. var rtnStr = "";
  381. // 취소신청가능수량있으면 수량만 표시 (취소,반품,교환 신청정보 처리)
  382. // 2021.06.22 반품TO반품 수량 처리
  383. if (ordChgSq > 0) {
  384. if (ordChgGb == 'G681_30') {
  385. ordCanChgQty = params.data.chgQty;
  386. }
  387. rtnStr = ordCanChgQty;
  388. }
  389. // 2021.08.03 확정후품절 수량 처리
  390. else if (ordChgGb == 'G681_60') {
  391. rtnStr = params.data.chgQty;
  392. } else {
  393. ordCanChgQty = ordQty - (cnclRtnQty + ordReqChgQty);
  394. if (ordCanChgQty == 0) {
  395. rtnStr += "<select class='ordCanChgQty' name='ordCanChgQty' ordDtlNo='" + params.data.ordDtlNo + "' onChange='fnCalculateRefundAmt(this);' disabled='disabled'>";
  396. } else {
  397. rtnStr += "<select class='ordCanChgQty' name='ordCanChgQty' ordDtlNo='" + params.data.ordDtlNo + "' onChange='fnCalculateRefundAmt(this);'>";
  398. }
  399. for (i=0 ; i<=ordCanChgQty ; i++) {
  400. if (i == params.data.ordCanChgQty) {
  401. rtnStr += " <option value='"+i+"' selected>"+i+"</option>";
  402. } else {
  403. rtnStr += " <option value='"+i+"'>"+i+"</option>";
  404. }
  405. }
  406. rtnStr += "</select>";
  407. }
  408. return rtnStr;
  409. }
  410. },
  411. {
  412. headerName : "주문"
  413. , field : "ordAmt"
  414. , width : 80
  415. , cellClass : 'text-right'
  416. , cellRenderer : function (params) {
  417. return params.value.addComma();
  418. }
  419. },
  420. {
  421. headerName : "취소"
  422. , field : "cnclRtnAmt"
  423. , width : 80
  424. , cellClass : 'text-right'
  425. , cellRenderer : function (params) {
  426. return params.value.addComma();
  427. }
  428. },
  429. {
  430. headerName : "즉시할인"
  431. , field : "cpn1DcAmt"
  432. , width : 80
  433. , cellClass : 'text-right'
  434. , cellRenderer : function (params) {
  435. return params.value.addComma();
  436. }
  437. },
  438. {
  439. headerName : "다다익선1"
  440. , field : "tmtb1DcAmt"
  441. , width : 80
  442. , cellClass : 'text-right'
  443. , cellRenderer : function (params) {
  444. return params.value.addComma();
  445. }
  446. },
  447. {
  448. headerName : "다다익선2"
  449. , field : "tmtb2DcAmt"
  450. , width : 80
  451. , cellClass : 'text-right'
  452. , cellRenderer : function (params) {
  453. return params.value.addComma();
  454. }
  455. },
  456. {
  457. headerName : "상품쿠폰"
  458. , field : "goodsCpnDcAmt"
  459. , width : 80
  460. , cellClass : 'text-right'
  461. , cellRenderer : function (params) {
  462. return params.value.addComma();
  463. }
  464. },
  465. {
  466. headerName : "장바구니쿠폰"
  467. , field : "cartCpnDcAmt"
  468. , width : 100
  469. , cellClass : 'text-right'
  470. , cellRenderer : function (params) {
  471. return params.value.addComma();
  472. }
  473. },
  474. {
  475. headerName : "포인트"
  476. , field : "pntDcAmt"
  477. , width : 80
  478. , cellClass : 'text-right'
  479. , cellRenderer : function (params) {
  480. return params.value.addComma();
  481. }
  482. },
  483. {
  484. headerName : "선포인트"
  485. , field : "prePntDcAmt"
  486. , width : 80
  487. , cellClass : 'text-right'
  488. , cellRenderer : function (params) {
  489. return params.value.addComma();
  490. }
  491. },
  492. {
  493. headerName : "상품권"
  494. , field : "gfcdUseAmt"
  495. , width : 80
  496. , cellClass : 'text-right'
  497. , cellRenderer : function (params) {
  498. return params.value.addComma();
  499. }
  500. },
  501. {
  502. headerName : "실결제금액"
  503. , field : "realOrdAmt"
  504. , width : 100
  505. , cellClass : 'text-right'
  506. , cellRenderer : function (params) {
  507. return params.value.addComma();
  508. }
  509. },
  510. {
  511. headerName : "배송비"
  512. , field : "delvFee"
  513. , width : 80
  514. , cellClass : 'text-right'
  515. , cellRenderer : function (params) {
  516. return params.value.addComma();
  517. }
  518. , hide : temp1
  519. },
  520. {headerName: "업체" , field: "supplyCompCd" , width: 100 , cellClass: 'text-center', hide: temp1},
  521. {headerName: "배송비코드" , field: "delvFeeCd" , width: 100 , cellClass: 'text-center', hide: temp1},
  522. {
  523. headerName : "무료배송비"
  524. , field : "minOrdAmt"
  525. , width : 80
  526. , cellClass : 'text-right'
  527. , cellRenderer : function (params) {
  528. if (params.data.delvFeeCrite == 'G078_30') {
  529. return 0;
  530. } else {
  531. return params.value.addComma();
  532. }
  533. }
  534. , hide : temp1
  535. },
  536. {
  537. headerName : "기본배송비"
  538. , field : "orgDelvFee"
  539. , width : 80
  540. , cellClass : 'text-right'
  541. , cellRenderer : function (params) {
  542. return params.value.addComma();
  543. }
  544. , hide : temp1
  545. },
  546. {
  547. headerName : "반품배송비"
  548. , field : "rtnDelvFee"
  549. , width : 80
  550. , cellClass : 'text-right'
  551. , cellRenderer : function (params) {
  552. return params.value.addComma();
  553. }
  554. , hide : temp1
  555. },
  556. {
  557. headerName : "교환배송비"
  558. , field : "excDelvFee"
  559. , width : 80
  560. , cellClass : 'text-right'
  561. , cellRenderer : function (params) {
  562. return params.value.addComma();
  563. }
  564. , hide : temp1
  565. },
  566. {headerName: "전체취소가능" , field: "allCanYn" , width: 100 , cellClass: 'text-center', hide: temp1}
  567. ];
  568. var gridOptionsCancelReqList = gagaAgGrid.getGridOptions(columnCancelReqList);
  569. // Add on options
  570. gridOptionsCancelReqList.suppressRowClickSelection = true;
  571. gridOptionsCancelReqList.rowSelection = 'multiple';
  572. // 2. 반품정보(환불정보)
  573. var columnCancelReqToBeList = [
  574. {
  575. headerName : "주문상세정보",
  576. children : [
  577. {headerName: "주문번호" , field: "ordNo" , width: 80 , cellClass: 'text-center', hide: temp1},
  578. {headerName: "주문상세" , field: "ordDtlNo" , width: 80 , cellClass: 'text-center'},
  579. {headerName: "주문상세" , field: "ordDtlStat" , width: 80 , cellClass: 'text-center', hide: temp1},
  580. {headerName: "주문상세상태" , field: "ordDtlStatNm" , width: 100 , cellClass: 'text-center', hide: temp1},
  581. {headerName: "상품코드" , field: "goodsCd" , width: 100 , cellClass: 'text-center', hide: temp1},
  582. {headerName: "상품명" , field: "goodsNm" , width: 200 , cellClass: 'text-center', hide: temp1},
  583. {headerName: "상품타입" , field: "goodsTypeNm" , width: 100 , cellClass: 'text-center', hide: temp2}
  584. ]
  585. },
  586. {
  587. headerName : "주문상세단품정보",
  588. children : [
  589. {headerName: "단품번호" , field: "ordDtlItemSq" , width: 100 , cellClass: 'text-center', hide: temp2},
  590. {headerName: "단품코드" , field: "itemCd" , width: 100 , cellClass: 'text-center', hide: temp2},
  591. {headerName: "단품명" , field: "itemNm" , width: 200 , cellClass: 'text-center', hide: temp2},
  592. {headerName: "칼라코드" , field: "optCd1" , width: 80 , cellClass: 'text-center', hide: temp1},
  593. {headerName: "사이즈코드" , field: "optCd2" , width: 80 , cellClass: 'text-center', hide: temp2},
  594. {
  595. headerName : "단품수량"
  596. , field : "itemQty"
  597. , width : 80
  598. , cellClass : 'text-center'
  599. , cellRenderer : function (params) {
  600. return params.value.addComma();
  601. }
  602. },
  603. {
  604. headerName : "단품금액"
  605. , field : "itemPrice"
  606. , width : 80
  607. , cellClass : 'text-right'
  608. , cellRenderer : function (params) {
  609. return params.value.addComma();
  610. }
  611. },
  612. {
  613. headerName : "단품옵션금액"
  614. , field : "optAddPrice"
  615. , width : 80
  616. , cellClass : 'text-right'
  617. , cellRenderer : function (params) {
  618. return params.value.addComma();
  619. }
  620. }
  621. ]
  622. },
  623. {
  624. headerName : "주문상세수량",
  625. children : [
  626. {
  627. headerName : "주문"
  628. , field : "ordQty"
  629. , width : 80
  630. , cellClass : 'text-center'
  631. , cellRenderer : function (params) {
  632. return params.value.addComma();
  633. }
  634. },
  635. {
  636. headerName : "취소/요청"
  637. , field : "cnclRtnQty"
  638. , width : 80
  639. , cellClass : 'text-center'
  640. , cellRenderer : function (params) {
  641. var cnclRtnReqQty = parseInt(params.data.cnclRtnQty) + parseInt(params.data.ordReqChgQty);
  642. return cnclRtnReqQty;
  643. }
  644. },
  645. {
  646. headerName : "취소"
  647. , field : "ordCanChgQty"
  648. , width : 100
  649. , cellClass : 'text-center'
  650. , cellRenderer : function (params) {
  651. return params.value.addComma();
  652. }
  653. }
  654. ]
  655. },
  656. {
  657. headerName : "주문단품금액",
  658. children : [
  659. {
  660. headerName : "주문"
  661. , field : "ordAmt"
  662. , width : 80
  663. , cellClass : 'text-right'
  664. , cellRenderer : function (params) {
  665. return params.value.addComma();
  666. }
  667. },
  668. {
  669. headerName : "취소/반품"
  670. , field : "cnclRtnAmt"
  671. , width : 80
  672. , cellClass : 'text-right'
  673. , cellRenderer : function (params) {
  674. return params.value.addComma();
  675. }
  676. },
  677. {
  678. headerName : "즉시할인"
  679. , field : "cpn1DcAmt"
  680. , width : 80
  681. , cellClass : 'text-right'
  682. , cellRenderer : function (params) {
  683. return params.value.addComma();
  684. }
  685. },
  686. {
  687. headerName : "다다익선1"
  688. , field : "tmtb1DcAmt"
  689. , width : 80
  690. , cellClass : 'text-right'
  691. , cellRenderer : function (params) {
  692. return params.value.addComma();
  693. }
  694. },
  695. {
  696. headerName : "다다익선2"
  697. , field : "tmtb2DcAmt"
  698. , width : 80
  699. , cellClass : 'text-right'
  700. , cellRenderer : function (params) {
  701. return params.value.addComma();
  702. }
  703. },
  704. {
  705. headerName : "상품쿠폰"
  706. , field : "goodsCpnDcAmt"
  707. , width : 80
  708. , cellClass : 'text-right'
  709. , cellRenderer : function (params) {
  710. return params.value.addComma();
  711. }
  712. },
  713. {
  714. headerName : "장바구니쿠폰"
  715. , field : "cartCpnDcAmt"
  716. , width : 80
  717. , cellClass : 'text-right'
  718. , cellRenderer : function (params) {
  719. return params.value.addComma();
  720. }
  721. },
  722. {
  723. headerName : "포인트"
  724. , field : "pntDcAmt"
  725. , width : 80
  726. , cellClass : 'text-right'
  727. , cellRenderer : function (params) {
  728. return params.value.addComma();
  729. }
  730. },
  731. {
  732. headerName : "선포인트"
  733. , field : "prePntDcAmt"
  734. , width : 80
  735. , cellClass : 'text-right'
  736. , cellRenderer : function (params) {
  737. return params.value.addComma();
  738. }
  739. },
  740. {
  741. headerName : "상품권"
  742. , field : "gfcdUseAmt"
  743. , width : 80
  744. , cellClass : 'text-right'
  745. , cellRenderer : function (params) {
  746. return params.value.addComma();
  747. }
  748. },
  749. {
  750. headerName : "환불금액"
  751. , field : "realOrdAmt"
  752. , width : 80
  753. , cellClass : 'text-right'
  754. , cellRenderer : function (params) {
  755. return params.value.addComma();
  756. }
  757. }
  758. ]
  759. },
  760. {
  761. headerName : "주문배송비정보",
  762. children : [
  763. {
  764. headerName : "배송비"
  765. , field : "delvFee"
  766. , width : 80
  767. , cellClass : 'text-right'
  768. , cellRenderer : function (params) {
  769. return params.value.addComma();
  770. }
  771. , hide : temp2
  772. },
  773. {headerName: "업체" , field: "supplyCompCd" , width: 100 , cellClass: 'text-center', hide: temp2},
  774. {headerName: "배송비코드" , field: "delvFeeCd" , width: 100 , cellClass: 'text-center', hide: temp2},
  775. {
  776. headerName : "무료배송비"
  777. , field : "minOrdAmt"
  778. , width : 80
  779. , cellClass : 'text-right'
  780. , cellRenderer : function (params) {
  781. if (params.data.delvFeeCrite == 'G078_30') {
  782. return 0;
  783. } else {
  784. return params.value.addComma();
  785. }
  786. }
  787. , hide : temp2
  788. },
  789. {
  790. headerName : "기본배송비"
  791. , field : "orgDelvFee"
  792. , width : 80
  793. , cellClass : 'text-right'
  794. , cellRenderer : function (params) {
  795. return params.value.addComma();
  796. }
  797. , hide : temp2
  798. },
  799. {
  800. headerName : "반품배송비"
  801. , field : "rtnDelvFee"
  802. , width : 80
  803. , cellClass : 'text-right'
  804. , cellRenderer : function (params) {
  805. return params.value.addComma();
  806. }
  807. , hide : temp2
  808. },
  809. {
  810. headerName : "교환배송비"
  811. , field : "excDelvFee"
  812. , width : 80
  813. , cellClass : 'text-right'
  814. , cellRenderer : function (params) {
  815. return params.value.addComma();
  816. }
  817. , hide : temp2
  818. },
  819. {headerName: "전체취소가능" , field: "allCanYn" , width: 100 , cellClass: 'text-center', hide: temp2},
  820. ]
  821. }
  822. ];
  823. var gridOptionsCancelReqToBeList = gagaAgGrid.getGridOptions(columnCancelReqToBeList);
  824. // 3. 배송비정보(환불정보)
  825. var columnDelvInfoList = [
  826. {
  827. headerName : "배송코드기준금액",
  828. children : [
  829. {headerName: "업체" , field: "supplyCompCd" , width: 100 , cellClass: 'text-center', hide: temp2},
  830. {headerName: "배송비코드" , field: "delvFeeCd" , width: 100 , cellClass: 'text-center', hide: temp2},
  831. {
  832. headerName : "주문"
  833. , field : "ordAmt"
  834. , width : 100
  835. , cellClass : 'text-right'
  836. , cellRenderer : function (params) {
  837. return params.value.addComma();
  838. }
  839. },
  840. {
  841. headerName : "취소"
  842. , field : "cnclRtnAmt"
  843. , width : 100
  844. , cellClass : 'text-right'
  845. , cellRenderer : function (params) {
  846. return params.value.addComma();
  847. }
  848. },
  849. {
  850. headerName : "환불"
  851. , field : "realOrdAmt"
  852. , width : 100
  853. , cellClass : 'text-right'
  854. , cellRenderer : function (params) {
  855. return params.value.addComma();
  856. }
  857. }
  858. ]
  859. },
  860. {
  861. headerName : "배송비정보",
  862. children : [
  863. {
  864. headerName : "배송비"
  865. , field : "delvFee"
  866. , width : 100
  867. , cellClass : 'text-right'
  868. , cellRenderer : function (params) {
  869. return params.value.addComma();
  870. }
  871. , hide : temp2
  872. },
  873. {
  874. headerName : "무료배송비"
  875. , field : "minOrdAmt"
  876. , width : 100
  877. , cellClass : 'text-right'
  878. , cellRenderer : function (params) {
  879. if (params.data.delvFeeCrite == 'G078_30') {
  880. return 0;
  881. } else {
  882. return params.value.addComma();
  883. }
  884. }
  885. , hide : temp2
  886. },
  887. {
  888. headerName : "기본배송비"
  889. , field : "orgDelvFee"
  890. , width : 100
  891. , cellClass : 'text-right'
  892. , cellRenderer : function (params) {
  893. return params.value.addComma();
  894. }
  895. , hide : temp2
  896. },
  897. {
  898. headerName : "반품배송비"
  899. , field : "rtnDelvFee"
  900. , width : 80
  901. , cellClass : 'text-right'
  902. , cellRenderer : function (params) {
  903. return params.value.addComma();
  904. }
  905. , hide : temp2
  906. },
  907. {
  908. headerName : "교환배송비"
  909. , field : "excDelvFee"
  910. , width : 80
  911. , cellClass : 'text-right'
  912. , cellRenderer : function (params) {
  913. return params.value.addComma();
  914. }
  915. , hide : temp2
  916. },
  917. {headerName: "추가배송비여부" , field: "addDelvFeeYn" , width: 140 , cellClass: 'text-center', hide: temp2},
  918. {
  919. headerName : "추가배송비"
  920. , field : "addDelvFee"
  921. , width : 100
  922. , cellClass : 'text-right'
  923. , cellRenderer : function (params) {
  924. return params.value.addComma();
  925. }
  926. , hide : temp2
  927. },
  928. {headerName: "전체취소가능" , field: "allCanYn" , width: 100 , cellClass: 'text-center', hide: temp2},
  929. ]
  930. }
  931. ];
  932. var gridOptionsDelvInfoList = gagaAgGrid.getGridOptions(columnDelvInfoList);
  933. // 3. 배송정보(환불정보)
  934. var columnDelvCdList = [
  935. {headerName: "업체" , field: "supplyCompNm" , width: 150 , cellClass: 'text-center'},
  936. {headerName: "배송비코드" , field: "delvFeeCd" , width: 100 , cellClass: 'text-center'},
  937. {
  938. headerName : "추가배송비"
  939. , field : "addDelvFee"
  940. , width : 100
  941. , cellClass : 'text-right'
  942. , cellRenderer : function (params) {
  943. return params.value.addComma();
  944. }
  945. , hide : true
  946. },
  947. {headerName: "반품지명" , field: "rtnLocNm" , width: 100 , cellClass: 'text-center'},
  948. {headerName: "반품지전화번호" , field: "rtnLocTelno" , width: 100 , cellClass: 'text-center'},
  949. {headerName: "반품지우편번호" , field: "rtnLocZipcode" , width: 100 , cellClass: 'text-center'},
  950. {headerName: "반품지기본주소" , field: "rtnLocBaseAddr" , width: 300 , cellClass: 'text-center'},
  951. {headerName: "반품지상세주소" , field: "rtnLocDtlAddr" , width: 300 , cellClass: 'text-center'},
  952. ];
  953. var gridOptionsDelvCdList = gagaAgGrid.getGridOptions(columnDelvCdList);
  954. </script>
  955. <script>
  956. // 현재 사유는 고객 입니다.
  957. var isCustomer = false;
  958. var rtnChk = false;
  959. // 환불예상금액계산
  960. var fnCalculateRefundAmt = function (obj) {
  961. // 변경신청목록
  962. var cancelRequestTargetToBeList = [];
  963. if (obj != null) {
  964. for (i=0 ; i<cancelRequestTargetList.length ; i++) {
  965. var orDtlNo = $(obj).attr("ordDtlNo");
  966. var ordCanChgQty = $(obj).val();
  967. if (cancelRequestTargetList[i].ordDtlNo == orDtlNo) {
  968. cancelRequestTargetList[i].ordCanChgQty = ordCanChgQty;
  969. }
  970. }
  971. // 주문변경대상정보 재설정
  972. gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);
  973. }
  974. if (cancelRequestTargetList.length == 0) {
  975. alert("요청 대상정보가 존재 하지 않습니다.");
  976. uifnPopupClose('popupReturnRequestForm');
  977. return false;
  978. }
  979. // 2021.05.25 수정
  980. var ordDtlNoArr = [];
  981. var cnclRtnReqQtyArr = [];
  982. var chgQtyArr = [];
  983. // 1. 반품신청수량 체크
  984. var chk = 0;
  985. for (i=0 ; i<cancelRequestTargetList.length ; i++) {
  986. if (cancelRequestTargetList[i].ordCanChgQty > 0) {
  987. // 반품신청값설정
  988. ordDtlNoArr.push(cancelRequestTargetList[i].ordDtlNo);
  989. cnclRtnReqQtyArr.push(cancelRequestTargetList[i].ordCanChgQty);
  990. chgQtyArr.push(cancelRequestTargetList[i].chgQty);
  991. chk++;
  992. }
  993. }
  994. // 신청수량이 없거나 반품사유 선택 안했을 시 계산 안함
  995. //if (chk == 0 || $('#cancelRequestFrm input[name=chgReason]').val() == '') {
  996. //return false;
  997. //}
  998. // 2. 추가정보설정
  999. var chgerNm = orderInfoList[0].ordNm;
  1000. var chgerEmail = orderInfoList[0].ordEmail;
  1001. var chgerPhnno = orderInfoList[0].ordPhnno;
  1002. var chgerTelno = orderInfoList[0].ordTelno;
  1003. var custNo = orderInfoList[0].custNo;
  1004. var delvFeeCd = orderInfoList[0].delvFeeCd;
  1005. var delvFeeCdGrp = $('#cancelRequestFrm input[name=delvFeeCdGrp]').val();
  1006. // 환불금액계산호출
  1007. var jsonObj = {
  1008. "ordNo" : ordNo
  1009. ,"ordDtlNoArr" : ordDtlNoArr
  1010. ,"cnclRtnReqQtyArr" : cnclRtnReqQtyArr
  1011. ,"isCustomer" : isCustomer
  1012. ,"chgerNm" : chgerNm
  1013. ,"chgerEmail" : chgerEmail
  1014. ,"chgerPhnno" : chgerPhnno
  1015. ,"custNo" : custNo
  1016. ,"ordNm" : chgerNm
  1017. ,"ordPhnno" : chgerPhnno
  1018. ,"delvFeeCdGrp" : delvFeeCdGrp
  1019. }
  1020. var jsonData = JSON.stringify(jsonObj);
  1021. gagajf.ajaxJsonSubmit(
  1022. '/orderChange/cancel/refundAmt'
  1023. , jsonData
  1024. , function(result) {
  1025. $.each(result.cancelOrderRefundList, function(idx, item) {
  1026. let index = ordDtlNoArr.indexOf(item.ordDtlNo);
  1027. if (index >= 0) {
  1028. item.chgQty = chgQtyArr[index];
  1029. }
  1030. });
  1031. gridOptionsCancelReqToBeList.api.setRowData(result.cancelOrderRefundList);
  1032. gridOptionsDelvInfoList.api.setRowData(result.cancelDelvRefundList);
  1033. // 2021.12.01 취소금액설정
  1034. if (result.cancelOrderRefundList != null && result.cancelOrderRefundList.length > 0) {
  1035. for (i=0 ; i<result.cancelOrderRefundList.length ; i++) {
  1036. for (j=0 ; j<cancelRequestTargetList.length ; j++) {
  1037. if (result.cancelOrderRefundList[i].ordDtlNo == cancelRequestTargetList[j].ordDtlNo) {
  1038. cancelRequestTargetList[j].cnclRtnAmt = result.cancelOrderRefundList[i].cnclRtnAmt; // 취소금액
  1039. cancelRequestTargetList[j].cpn1DcAmt = result.cancelOrderRefundList[i].cpn1DcAmt; // 즉시할인쿠폰금액
  1040. cancelRequestTargetList[j].tmtb1DcAmt = result.cancelOrderRefundList[i].tmtb1DcAmt; // 수량할인다다익선금액
  1041. cancelRequestTargetList[j].tmtb2DcAmt = result.cancelOrderRefundList[i].tmtb2DcAmt; // 금액할인다다익선금액
  1042. cancelRequestTargetList[j].goodsCpnDcAmt = result.cancelOrderRefundList[i].goodsCpnDcAmt; // 상품쿠폰금액
  1043. cancelRequestTargetList[j].cartCpnDcAmt = result.cancelOrderRefundList[i].cartCpnDcAmt; // 장바구니쿠폰금액
  1044. cancelRequestTargetList[j].pntDcAmt = result.cancelOrderRefundList[i].pntDcAmt; // 포인트금액
  1045. cancelRequestTargetList[j].prePntDcAmt = result.cancelOrderRefundList[i].prePntDcAmt; // 선포인트금액
  1046. cancelRequestTargetList[j].gfcdUseAmt = result.cancelOrderRefundList[i].gfcdUseAmt; // 상품권적용금액
  1047. cancelRequestTargetList[j].realOrdAmt = result.cancelOrderRefundList[i].realOrdAmt; // 실결제금액
  1048. }
  1049. }
  1050. }
  1051. // 주문변경대상정보 재설정
  1052. gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);
  1053. }
  1054. let spanPntDcAmt = Number(result.spanPntDcAmt); // 환불 포인트 금액
  1055. let spanSavePntAmt = Number(result.spanSavePntAmt); // 적립 예정 포인트 환수 금액
  1056. let spanGfcdUseAmt = Number(result.spanGfcdUseAmt); // 환불 상품권 금액
  1057. let spanDelvGfcdUseAmt = Number(result.spanDelvGfcdUseAmt); // 환불 배송비 상품권 금액
  1058. let spanCnclRtnAmt = Number(result.spanCnclRtnAmt); // 환불 상품 금액
  1059. let spanCpn1DcAmt = Number(result.spanCpn1DcAmt); // 즉시할인 쿠폰 차감 금액
  1060. let spanGoodsCpnDcAmt = Number(result.spanGoodsCpnDcAmt); // 상품 쿠폰 차감 금액
  1061. let spanCartCpnDcAmt = Number(result.spanCartCpnDcAmt); // 장바구니 쿠폰 차감 금액
  1062. let spanDelvCpnDcAmt = Number(result.spanDelvCpnDcAmt); // 배송비 쿠폰 차감 금액
  1063. let spanTmtbDcAmt = Number(result.spanTmtbDcAmt); // 다다익선 할인 차감 금액
  1064. let spanPrePntDcAmt = Number(result.spanPrePntDcAmt); // 선포인트 할인 차감 금액
  1065. //let sumDeliveryFee = Number(result.sumDeliveryFee); // 원주문배송비
  1066. //let spanTotDeliveryFee = Number(result.spanTotDeliveryFee); // 추가배송비 (무료배송비 허들 깨져서 발생한 배송비)
  1067. let spanTotRtnDelvFee = Number(result.spanTotRtnDelvFee); // 반품배송비
  1068. let spanRealCnclRtnAmt = Number(result.spanRealCnclRtnAmt); // 환불 상품 실결제 금액 (환불상품금액 - 할인차감금액)
  1069. let goodsCancelAmt = spanCnclRtnAmt + spanCpn1DcAmt; // 상품취소금액
  1070. let spanRefundAmt = spanRealCnclRtnAmt; // 환불예정금액 (환불상품실결제금액)
  1071. let goodsDcSumAmt = spanPrePntDcAmt + spanTmtbDcAmt; // 상품 할인 차감 금액
  1072. let spanCpnDcAmt = spanCpn1DcAmt + spanGoodsCpnDcAmt + spanCartCpnDcAmt; // 쿠폰 할인 차감 금액
  1073. // 결제방식
  1074. let pgGbNm = "";
  1075. let cardGbNm = "";
  1076. if (pgGb == 'KCP') {
  1077. pgGbNm = payMeansNm;
  1078. cardGbNm = "(" + cardNm + ")";
  1079. } else if (pgGb == 'NAVER') {
  1080. pgGbNm = "네이버페이";
  1081. } else if (pgGb == 'NAVER_ORDER') {
  1082. pgGbNm = "네이버페이주문형";
  1083. } else if (pgGb == 'KAKAO') {
  1084. pgGbNm = "카카오페이";
  1085. } else if (pgGb == 'PAYCO') {
  1086. pgGbNm = "페이코";
  1087. } else if (pgGb == 'ISTYLE') {
  1088. pgGbNm = "상품권";
  1089. } else {
  1090. pgGbNm = "외부몰입금";
  1091. }
  1092. // 회사사유거나 고객사유(직접발송) 시 반품배송비 0
  1093. if (!isCustomer || $('#wdGb:checked').val() == 'D') {
  1094. spanTotRtnDelvFee = 0;
  1095. }
  1096. // 2021.08.10 card007 상품권100% 결제 로직 수정
  1097. let refundAmt = spanRefundAmt + spanGfcdUseAmt;
  1098. let leftAddDelvFee = spanTotRtnDelvFee;
  1099. if (refundAmt < spanTotRtnDelvFee) {
  1100. addDelvFee = spanTotRtnDelvFee;
  1101. } else {
  1102. if (leftAddDelvFee > spanRefundAmt) {
  1103. leftAddDelvFee -= spanRefundAmt;
  1104. spanRefundAmt = 0;
  1105. } else {
  1106. spanRefundAmt -= leftAddDelvFee;
  1107. leftAddDelvFee = 0;
  1108. }
  1109. if (leftAddDelvFee > 0) {
  1110. spanGfcdUseAmt -= leftAddDelvFee;
  1111. leftAddDelvFee = 0;
  1112. }
  1113. addDelvFee = 0;
  1114. }
  1115. let refundPayAmt = spanRefundAmt - leftAddDelvFee; // 결제금액 환불 (환불예정금액 - 환불 배송비 상품권 금액 - 추가배송비)
  1116. let deliveryFee = 0 - spanTotRtnDelvFee; // 환불배송비
  1117. let spanTotGfcdUseAmt = spanGfcdUseAmt; // 환불 상품권 금액 합계
  1118. let totalRefundAmt = spanRefundAmt + spanTotGfcdUseAmt + spanPntDcAmt; // 총 환불 금액
  1119. // 상품금액
  1120. $(".spanCnclRtnAmt").text(goodsCancelAmt.addComma()+"원"); // 취소상품금액
  1121. // 할인금액차감
  1122. $(".spanCpnDcAmt").text(spanCpnDcAmt.addComma()+"원"); // 쿠폰할인차감 > 합계
  1123. $(".spanCpn1DcAmt").text(spanCpn1DcAmt.addComma()+"원"); // 쿠폰할인차감 > 즉시할인쿠폰
  1124. $(".spanGoodsCpnDcAmt").text(spanGoodsCpnDcAmt.addComma()+"원"); // 쿠폰할인차감 > 주문서상품쿠폰
  1125. $(".spanCartCpnDcAmt").text(spanCartCpnDcAmt.addComma()+"원"); // 쿠폰할인차감 > 장바구니쿠폰
  1126. $(".goodsDcSumAmt").text(goodsDcSumAmt.addComma()+"원"); // 상품할인차감 > 합계
  1127. $(".spanPrePntDcAmt").text(spanPrePntDcAmt.addComma()+"원"); // 상품할인차감 > 선포인트할인
  1128. $(".spanTmtbDcAmt").text(spanTmtbDcAmt.addComma()+"원"); // 상품할인차감 > 다다익선할인
  1129. // 배송비
  1130. $(".spanRealDelvAmt").text(deliveryFee.addComma()+"원"); // 환불배송비 > 합계
  1131. $(".addDelvFee").text(addDelvFee.addComma()+"원"); // 환불배송비 > 추가금결제
  1132. $(".delvCpnAmt").text(spanDelvCpnDcAmt.addComma()+"원"); // 환불배송비 > 배송비쿠폰
  1133. // 환불금액
  1134. $(".totalRefundAmt").text(totalRefundAmt.addComma()+"원"); // 총환불금액
  1135. $(".spanRefundAmt").text(refundPayAmt.addComma()+"원"); // 결제수단환불
  1136. $(".pgGbNm").text(pgGbNm); // 결제수단환불 > 결제수단
  1137. $(".cardNm").text(cardGbNm); // 결제수단환불 > 카드명
  1138. $(".spanGfcdUseAmt").text(spanTotGfcdUseAmt.addComma()+"원"); // 상품권환불
  1139. $(".spanPntDcAmt").text(spanPntDcAmt.addComma()+"원"); // 포인트환불
  1140. $(".spanSavePntAmt").text(spanSavePntAmt.addComma()+"P"); // 포인트환불 > 적립예정포인트환수
  1141. /*
  1142. // 2021.08.10 card007 상품권100% 결제 로직 수정 기존 소스 백업
  1143. let spanSumDeliveryFee = result.spanSumDeliveryFee - result.spanDelvCpnDcAmt;
  1144. let sumDeliveryFee = result.sumDeliveryFee - result.spanRefundDelvCpnAmt;
  1145. // 2021.08.04 취소금액수정
  1146. var spanRealDelvAmt = 0;
  1147. var addDelvFee = 0;
  1148. if (result.spanRealCnclRtnAmt > 0) {
  1149. // 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
  1150. if (isCustomer) {
  1151. result.spanRefundAmt = (result.spanRealCnclRtnAmt + sumDeliveryFee) - result.spanTotDeliveryFee;
  1152. // 2021.07.01
  1153. // @ 마이너스금액이면 허들깨지면서 배송비 발생
  1154. // @ 플러스금액이면 마지막취소시 배송금액 환불
  1155. spanRealDelvAmt = sumDeliveryFee - result.spanTotDeliveryFee;
  1156. addDelvFee = result.spanTotDeliveryFee;
  1157. }
  1158. // 회사사유 : 환불금액계산 = (취소금액 + 배송비)
  1159. else {
  1160. result.spanRefundAmt = (result.spanRealCnclRtnAmt + sumDeliveryFee);
  1161. }
  1162. }
  1163. $("#spanRefundAmt").text(result.spanRefundAmt.addComma()+"원"); //환불 금액 합계
  1164. $(".spanCnclRtnAmt").text(result.spanCnclRtnAmt.addComma()+"원");
  1165. $(".spanCpn1DcAmt").text(result.spanCpn1DcAmt.addComma()+"원");
  1166. $(".spanGoodsCpnDcAmt").text(result.spanGoodsCpnDcAmt.addComma()+"원");
  1167. $(".spanCartCpnDcAmt").text(result.spanCartCpnDcAmt.addComma()+"원");
  1168. var spanCpnDcAmt = result.spanCpn1DcAmt + result.spanGoodsCpnDcAmt + result.spanGoodsCpnDcAmt;
  1169. $(".spanCpnDcAmt").text(spanCpnDcAmt.addComma()+"원");
  1170. $(".spanPrePntDcAmt").text(result.spanPrePntDcAmt.addComma()+"원");
  1171. $(".spanTmtbDcAmt").text(result.spanTmtbDcAmt.addComma()+"원");
  1172. var goodsDcSumAmt = result.spanPrePntDcAmt + result.spanTmtbDcAmt;
  1173. $(".goodsDcSumAmt").text(goodsDcSumAmt.addComma()+"원");
  1174. $(".delvCpnAmt").text(result.spanDelvCpnDcAmt.addComma()+"원");
  1175. $(".addDelvFee").text(addDelvFee.addComma()+"원");
  1176. $(".spanRealDelvAmt").text(spanSumDeliveryFee.addComma()+"원");
  1177. var totalRefundAmt = result.spanRefundAmt + result.spanGfcdUseAmt + result.spanPntDcAmt;
  1178. $(".totalRefundAmt").text(totalRefundAmt.addComma()+"원");
  1179. $(".spanRefundAmt").text(result.spanRefundAmt.addComma()+"원");
  1180. $(".spanGfcdUseAmt").text(result.spanGfcdUseAmt.addComma()+"원");
  1181. $(".spanPntDcAmt").text(result.spanPntDcAmt.addComma()+"원");
  1182. $(".spanSavePntAmt").text(result.spanSavePntAmt.addComma()+"P");
  1183. var pgGbNm = "";
  1184. var cardGbNm = "";
  1185. if (pgGb == 'KCP') {
  1186. pgGbNm = payMeansNm;
  1187. cardGbNm = "(" + cardNm + ")";
  1188. } else if (pgGb == 'NAVER') {
  1189. pgGbNm = "네이버페이";
  1190. } else if (pgGb == 'NAVER_ORDER') {
  1191. pgGbNm = "네이버페이주문형";
  1192. } else if (pgGb == 'KAKAO') {
  1193. pgGbNm = "카카오페이";
  1194. } else if (pgGb == 'PAYCO') {
  1195. pgGbNm = "페이코";
  1196. } else if (pgGb == 'ISTYLE') {
  1197. pgGbNm = "상품권";
  1198. } else {
  1199. pgGbNm = "외부몰입금";
  1200. }
  1201. $(".pgGbNm").text(pgGbNm);
  1202. $(".cardNm").text(cardGbNm);
  1203. */
  1204. /*
  1205. $("#spanPayAmt").text(result.spanPayAmt.addComma()); //총 결제 금액
  1206. $("#spanSumRealOrdAmt").text(result.spanSumRealOrdAmt.addComma()); //상품 실결제 금액
  1207. $("#spanSumDeliveryFee").text(spanSumDeliveryFee.addComma()); //배송금액
  1208. $("#spanOrdAmt").text(result.spanOrdAmt.addComma()); //주문 상품 금액
  1209. $("#spanCnclRtnAmt").text(result.spanCnclRtnAmt.addComma()); //취소 상품 금액
  1210. $("#spanTotPntDcAmt").text(result.spanTotPntDcAmt.addComma()); //취소 사용 포인트
  1211. $("#spanPntDcAmt").text(result.spanPntDcAmt.addComma()); //고객 포인트
  1212. $("#spanPrePntDcAmt").text(result.spanPrePntDcAmt.addComma()); //상품 선포인트
  1213. $("#spanCpnDcAmt").text(result.spanCpnDcAmt.addComma()); //취소 사용 쿠폰금액
  1214. $("#spanCpn1DcAmt").text(result.spanCpn1DcAmt.addComma()); //즉시할인쿠폰
  1215. $("#spanGoodsCpnDcAmt").text(result.spanGoodsCpnDcAmt.addComma()); //상품쿠폰
  1216. $("#spanCartCpnDcAmt").text(result.spanCartCpnDcAmt.addComma()); //장바구니쿠폰
  1217. $("#spanDelvCpnDcAmt").text(result.spanDelvCpnDcAmt.addComma()); //배송비쿠폰
  1218. $("#spanTmtbDcAmt").text(result.spanTmtbDcAmt.addComma()); //취소 다다익선 금액
  1219. $("#spanTmtb1DcAmt").text(result.spanTmtb1DcAmt.addComma()); //수량할인
  1220. $("#spanTmtb2DcAmt").text(result.spanTmtb2DcAmt.addComma()); //금액할인
  1221. $("#spanGfcdUseAmt").text(result.spanGfcdUseAmt.addComma()); //취소 고객 상품권 금액
  1222. $("#spanRealCnclRtnAmt").text(result.spanRealCnclRtnAmt.addComma()); //취소 상품 실결제 금액
  1223. //$("#spanTotDeliveryFee").text(result.spanTotDeliveryFee.addComma()); //취소 환불 배송 금액
  1224. //$("#spanRealDelvAmt").text(result.spanTotDeliveryFee.addComma()); //취소 환불 배송 금액
  1225. //$("#spanTotRtnDelvFee").text(result.spanTotRtnDelvFee.addComma()); //반품 환불 배송 금액
  1226. //$("#spanTotExcDelvFee").text(result.spanTotExcDelvFee.addComma()); //교환 환불 배송 금액
  1227. if (result.spanRealCnclRtnAmt > 0) {
  1228. let wdGb = $('#wdGb:checked').val();
  1229. // 고객사유(회수요청) : 환불금액게산 = (취소금액 + 배송비) - 추가배송비 - 반품배송비
  1230. if (isCustomer && wdGb == 'W') {
  1231. result.spanRefundAmt = result.spanRealCnclRtnAmt - result.spanTotRtnDelvFee;
  1232. // 2021.07.01
  1233. // @ 마이너스금액이면 허들깨지면서 배송비 발생
  1234. // @ 플러스금액이면 마지막취소시 배송금액 환불
  1235. var spanRealDelvAmt = result.spanTotRtnDelvFee;
  1236. if (spanRealDelvAmt > 0) {
  1237. spanRealDelvAmt * -1;
  1238. }
  1239. // 20212.07.07 환불배송비 -로 표시 (반품비용)
  1240. result.spanTotRtnDelvFee = result.spanTotRtnDelvFee * -1;
  1241. $("#spanRealDelvAmt").text(result.spanTotRtnDelvFee.addComma()); //환불배송비금액
  1242. }
  1243. // 고객사유(직접발송) : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
  1244. else if (isCustomer && wdGb == 'D') {
  1245. result.spanRefundAmt = result.spanRealCnclRtnAmt;
  1246. $("#spanRealDelvAmt").text(0); //환불배송비금액
  1247. }
  1248. // 회사사유 : 환불금액게산 = (취소금액 + 배송비)
  1249. else {
  1250. result.spanRefundAmt = result.spanRealCnclRtnAmt;
  1251. $("#spanRealDelvAmt").text(0); //취소 환불 배송 금액
  1252. }
  1253. }
  1254. $("#spanRefundAmt").text(result.spanRefundAmt.addComma()); //환불 금액 합계
  1255. */
  1256. }
  1257. );
  1258. }
  1259. // 귀책사유설정
  1260. var fnChangeChgReason = function(reasonCd){
  1261. var customerReasonArr = ['G688_10'];
  1262. isCustomer = false;
  1263. // 귀책사유체크(취소,반품,교환)
  1264. for (i=0 ; i<customerReasonArr.length ; i++) {
  1265. if (customerReasonArr[i] == reasonCd) {
  1266. isCustomer = true;
  1267. }
  1268. }
  1269. // 귀책사유설정
  1270. if (isCustomer) {
  1271. $("#imputeReason").text("고객");
  1272. } else {
  1273. $("#imputeReason").text("회사");
  1274. }
  1275. $('#cancelRequestFrm input[name=chgReason]').val(reasonCd);
  1276. // 환불예상금액계산
  1277. fnCalculateRefundAmt();
  1278. }
  1279. // 반품요청
  1280. var fnCnclReq = function (reqGbn) {
  1281. var temp = false;
  1282. var custNo = cancelRequestTargetList[0].custNo;
  1283. var ordDtlStat = cancelRequestTargetList[0].ordDtlStat;
  1284. var allCanYn = "N";
  1285. var accountNo = "";
  1286. var accountNm = "";
  1287. var bankCd = "";
  1288. var chgerNm = "";
  1289. var chgerZipcode = "";
  1290. var chgerBaseAddr = "";
  1291. var chgerDtlAddr = "";
  1292. var chgerPhnno1 = "";
  1293. var chgerPhnno2 = "";
  1294. var chgerPhnno3 = "";
  1295. var chgerTelno1 = "";
  1296. var chgerTelno2 = "";
  1297. var chgerTelno3 = "";
  1298. var chgerPhnno = "";
  1299. var chgerTelno = "";
  1300. var chgerEmail = "";
  1301. var chgerRtnMemo = "";
  1302. // 반품신청 버튼 클릭 여부 체크
  1303. if (rtnChk) {
  1304. return false;
  1305. }
  1306. // 반품신청
  1307. let chk = false;
  1308. if (reqGbn == "rtnReq") {
  1309. // 2021.05.25 수정
  1310. var ordDtlNoArr = [];
  1311. var cnclRtnReqQtyArr = [];
  1312. // 1. 반품신청수량 체크
  1313. for (i=0 ; i<cancelRequestTargetList.length ; i++) {
  1314. if (cancelRequestTargetList[i].ordCanChgQty > 0) {
  1315. // 반품신청값설정
  1316. ordDtlNoArr.push(cancelRequestTargetList[i].ordDtlNo);
  1317. cnclRtnReqQtyArr.push(cancelRequestTargetList[i].ordCanChgQty);
  1318. temp = true;
  1319. }
  1320. }
  1321. if (temp == false) {
  1322. mcxDialog.alert('반품신청수량을 선택하세요.');
  1323. return false;
  1324. }
  1325. // 2. 반품사유 체크
  1326. var chgReason = $("#cancelRequestFrm select[name=selectChgReason]").val();
  1327. if (gagajf.isNull(chgReason)) {
  1328. mcxDialog.alert("반품사유를 선택하세요.");
  1329. return false;
  1330. }
  1331. // 3. 환불계좌체크 (결제타입이 무통장 입금일때 사용)
  1332. if (payMeans == 'G014_20' && payStat == 'G016_30') {
  1333. if ($("#refundAccount .bankNm").eq(0).text() == null || $("#refundAccount .bankNm").eq(0).text() == '') {
  1334. mcxDialog.alert('환불계좌가 미등록 되어 있습니다.');
  1335. return false;
  1336. } else {
  1337. chk = true
  1338. }
  1339. accountNo = $("#refundAccount .accountNo").eq(0).text();
  1340. accountNm = $("#refundAccount .accountNm").eq(0).text();
  1341. bankCd = $("#refundAccount .bankCd").eq(0).text();
  1342. }
  1343. // 4. 회수지정보설정 (회수요청일때실행)
  1344. if ($('#wdGb:checked').val() == "W") {
  1345. chgerNm = $("#cancelRequestFrm input[name=chgerNm]").val();
  1346. chgerZipcode = $("#cancelRequestFrm input[name=chgerZipcode]").val();
  1347. chgerBaseAddr = $("#cancelRequestFrm input[name=chgerBaseAddr]").val();
  1348. chgerDtlAddr = $("#cancelRequestFrm input[name=chgerDtlAddr]").val();
  1349. chgerPhnno1 = $("#cancelRequestFrm select[name=chgerPhnno1]").val();
  1350. chgerPhnno2 = $("#cancelRequestFrm input[name=chgerPhnno2]").val();
  1351. chgerPhnno3 = $("#cancelRequestFrm input[name=chgerPhnno3]").val();
  1352. chgerTelno1 = $("#cancelRequestFrm select[name=chgerTelno1]").val();
  1353. chgerTelno2 = $("#cancelRequestFrm input[name=chgerTelno2]").val();
  1354. chgerTelno3 = $("#cancelRequestFrm input[name=chgerTelno3]").val();
  1355. if (gagajf.isNull(chgerZipcode)) {
  1356. mcxDialog.alert("회수지주소를 입력하세요."); return;
  1357. }
  1358. if (gagajf.isNull(chgerBaseAddr)) {
  1359. mcxDialog.alert("회수지주소를 입력하세요."); return;
  1360. }
  1361. if (gagajf.isNull(chgerDtlAddr)) {
  1362. mcxDialog.alert("회수지주소를 입력하세요."); return;
  1363. }
  1364. if (gagajf.isNull(chgerPhnno1)) {
  1365. mcxDialog.alert("휴대전화를 입력하세요."); return;
  1366. }
  1367. if (gagajf.isNull(chgerPhnno2)) {
  1368. mcxDialog.alert("휴대전화를 입력하세요."); return;
  1369. }
  1370. if (gagajf.isNull(chgerPhnno3)) {
  1371. mcxDialog.alert("휴대전화를 입력하세요."); return;
  1372. }
  1373. chgerPhnno = chgerPhnno1 + '-' + chgerPhnno2 + '-' + chgerPhnno3;
  1374. chgerEmail = orderInfoList[0].ordEmail;
  1375. chgerRtnMemo = $("#cancelRequestFrm textarea[name=chgerRtnMemo]").val();
  1376. if (gagajf.isNull(chgerTelno1) && gagajf.isNull(chgerTelno2) && gagajf.isNull(chgerTelno3)) {
  1377. chgerTelno = '';
  1378. } else {
  1379. chgerTelno = chgerTelno1 + '-' + chgerTelno2 + '-' + chgerTelno3;
  1380. }
  1381. // 2021.11.09 card007 휴대폰번호 유효성검증 추가
  1382. if (!gagajf.checkPhnno(chgerPhnno)) {
  1383. mcxDialog.alert("회수지 휴대폰 번호가 유효하지 않습니다.");
  1384. return false;
  1385. }
  1386. }
  1387. }
  1388. // 2021.01.26 화면통합
  1389. // 5. 반품신청, 반품철회
  1390. // 반품신청
  1391. if (reqGbn == "rtnReq" && ordChgGb != 'G681_30') {
  1392. confirmStr = "반품신청하시겠습니까?";
  1393. cnclUrl = '/orderChange/rtnReq/';
  1394. }
  1395. // 반품신청철회
  1396. else if (reqGbn == "rtnReqCancel") {
  1397. confirmStr = "요청번호 [" + ordChgSq + "] 에 대한 요청철회 처리를 하시겠습니까?";
  1398. cnclUrl = '/orderChange/rtnReqCancel/';
  1399. }
  1400. // 반품TO반품 신청
  1401. else if (ordChgGb == 'G681_30') {
  1402. confirmStr = "반품변경하시겠습니까?";
  1403. cnclUrl = '/orderChange/return/to/return/';
  1404. }
  1405. // 7. 추가정보설정
  1406. var ordNm = orderInfoList[0].ordNm;
  1407. var ordPhnno = orderInfoList[0].ordPhnno;
  1408. var custNo = orderInfoList[0].custNo;
  1409. var delvFeeCd = orderInfoList[0].delvFeeCd;
  1410. var delvFeeCdGrp = $('#cancelRequestFrm input[name=delvFeeCdGrp]').val();
  1411. var jsonObj = {
  1412. "ordNo" : $('#cancelRequestFrm input[name=ordNo]').val()
  1413. ,"chgReason" : $('#cancelRequestFrm input[name=chgReason]').val()
  1414. ,"chgMemo" : $('#chgMemo').val()
  1415. ,"ordDtlNoArr" : ordDtlNoArr
  1416. ,"cnclRtnReqQtyArr" : cnclRtnReqQtyArr
  1417. ,"accountNo" : accountNo
  1418. ,"accountNm" : accountNm
  1419. ,"bankCd" : bankCd
  1420. ,"allCanYn" : allCanYn
  1421. ,"allCanYnBeforePayment" : "N"
  1422. ,"isCustomer" : isCustomer
  1423. ,"chgerNm" : chgerNm
  1424. ,"chgerEmail" : chgerEmail
  1425. ,"chgerZipcode" : chgerZipcode
  1426. ,"chgerBaseAddr" : chgerBaseAddr
  1427. ,"chgerDtlAddr" : chgerDtlAddr
  1428. ,"chgerPhnno" : chgerPhnno
  1429. ,"chgerTelno" : chgerTelno
  1430. ,"chgerRtnMemo" : chgerRtnMemo
  1431. ,"ordChgSq" : ordChgSq
  1432. ,"wdGb" : $('#wdGb:checked').val()
  1433. ,"delvFeeCdGrp" : delvFeeCdGrp
  1434. ,"custNo" : custNo
  1435. ,"ordNm" : ordNm
  1436. ,"ordPhnno" : ordPhnno
  1437. ,"msgStat" : $('#msgStat').is(':checked') ? 'Y' : 'N'
  1438. }
  1439. // 주문번호, 취소사유, 취소메모, (취소, 반품, 교환 신청 정보 목록), 환불계좌
  1440. var jsonData = JSON.stringify(jsonObj);
  1441. mcxDialog.confirm(confirmStr, {
  1442. cancelBtnText : "취소",
  1443. sureBtnText : "확인",
  1444. sureBtnClick : function(){
  1445. if (chk) {
  1446. // 환불계좌 유효성 체크
  1447. gagajf.ajaxJsonSubmit('/business/account/check', jsonData, function(result) {
  1448. if (result.isValid) { // 유효하면 true
  1449. // 반품신청 버튼 클릭 여부 설정
  1450. rtnChk = true;
  1451. // 취소 실행
  1452. gagajf.ajaxJsonSubmit(
  1453. cnclUrl
  1454. , jsonData
  1455. , function () {
  1456. uifnPopupClose('popupOrderDetail');
  1457. fnReOpenOrderDetailPopup();
  1458. uifnPopupClose('popupReturnRequestForm');
  1459. }
  1460. , function () {
  1461. rtnChk = false;
  1462. }
  1463. );
  1464. } else {
  1465. mcxDialog.alert('환불계좌가 유효하지 않습니다.');
  1466. return false;
  1467. }
  1468. });
  1469. } else {
  1470. // 반품신청 버튼 클릭 여부 설정
  1471. rtnChk = true;
  1472. // 취소 실행
  1473. gagajf.ajaxJsonSubmit(
  1474. cnclUrl
  1475. , jsonData
  1476. , function () {
  1477. uifnPopupClose('popupOrderDetail');
  1478. fnReOpenOrderDetailPopup();
  1479. uifnPopupClose('popupReturnRequestForm');
  1480. }
  1481. , function () {
  1482. rtnChk = false;
  1483. }
  1484. );
  1485. }
  1486. }
  1487. });
  1488. }
  1489. // 환불계좌 등록
  1490. var fnCreateOrderRfAccount = function () {
  1491. var actionUrl = "/orderChange/refund/account/create/form?ordNo=" + ordNo ;
  1492. cfnOpenModalPopup(actionUrl, 'popupCreateRefundAccount');
  1493. };
  1494. //환불계좌 정보
  1495. var fnBindOrderRfAccountInfo = function () {
  1496. var jsonObj = {
  1497. "ordNo" : ordNo
  1498. }
  1499. var jsonData = JSON.stringify(jsonObj);
  1500. gagajf.ajaxJsonSubmit(
  1501. '/orderChange/refund/account/info/list'
  1502. , jsonData
  1503. , function (result) {
  1504. if (result.orderRfAccountInfo[0].bankNm != null && result.orderRfAccountInfo[0].bankNm != '') {
  1505. $("#refundAccount .bankNm").text(result.orderRfAccountInfo[0].bankNm);
  1506. $("#refundAccount .bankCd").text(result.orderRfAccountInfo[0].bankCd);
  1507. $("#refundAccount .accountNo").text(result.orderRfAccountInfo[0].accountNo);
  1508. $("#refundAccount .accountNm").text(result.orderRfAccountInfo[0].accountNm);
  1509. $("#refundAccount .defaultYn").text(result.orderRfAccountInfo[0].defaultYn);
  1510. }
  1511. }
  1512. );
  1513. };
  1514. // 우편번호 DAUM을 이용한 우편번호 팝업 레이어
  1515. var fnOpenDaumAddr = function() {
  1516. let daumZip = new daum.Postcode({
  1517. oncomplete: function(data) {
  1518. // 우편번호와 주소 정보를 해당 필드에 넣는다.
  1519. $('#cancelRequestFrm input[name=chgerZipcode]').val(data.zonecode);
  1520. $('#cancelRequestFrm input[name=chgerBaseAddr]').val(cfnGetDaumRoadAddr(data));
  1521. $('#cancelRequestFrm input[name=chgerDtlAddr]').focus();
  1522. cfnCloseDaumAddr();
  1523. },
  1524. width: '100%'
  1525. });
  1526. cfnOpenDaumAddr(daumZip);
  1527. }
  1528. // 회수지정보 설정
  1529. var fnSetChger = function(){
  1530. var data = orderDelvRtnAddrInfo[0];
  1531. var spRecipPhnno = (data.recipPhnno != null) ? data.recipPhnno.split('-') : null;
  1532. var spRecipTelno = (data.recipTelno != null) ? data.recipTelno.split('-') : null;
  1533. // 반품상세화면일때적용
  1534. if (ordChgSq > 0) {
  1535. data = orderChangeDetailList[0];
  1536. spRecipPhnno = (data.chgerPhnno != null) ? data.chgerPhnno.split('-') : null;
  1537. spRecipTelno = (data.chgerTelno != null) ? data.chgerTelno.split('-') : null;
  1538. // 회수지정보 히든 처리
  1539. if (wdGb == 'D') {
  1540. $('#chgerAddress').css('display', 'none');
  1541. } else {
  1542. $("#cancelRequestFrm input[name=chgerNm]").val(data.chgerNm);
  1543. $("#cancelRequestFrm input[name=chgerZipcode]").val(data.chgerZipcode);
  1544. $("#cancelRequestFrm input[name=chgerBaseAddr]").val(data.chgerBaseAddr);
  1545. $("#cancelRequestFrm input[name=chgerDtlAddr]").val(data.chgerDtlAddr);
  1546. $("#cancelRequestFrm textarea[name=chgerRtnMemo]").val(data.chgerRtnMemo);
  1547. }
  1548. } else {
  1549. $("#cancelRequestFrm input[name=chgerNm]").val(data.recipNm);
  1550. $("#cancelRequestFrm input[name=chgerZipcode]").val(data.recipZipcode);
  1551. $("#cancelRequestFrm input[name=chgerBaseAddr]").val(data.recipBaseAddr);
  1552. $("#cancelRequestFrm input[name=chgerDtlAddr]").val(data.recipDtlAddr);
  1553. $("#cancelRequestFrm textarea[name=chgerRtnMemo]").val(data.chgerRtnMemo);
  1554. }
  1555. if (spRecipPhnno) {
  1556. $("#cancelRequestFrm select[name=chgerPhnno1]").val(spRecipPhnno[0]);
  1557. $("#cancelRequestFrm input[name=chgerPhnno2]").val(spRecipPhnno[1]);
  1558. $("#cancelRequestFrm input[name=chgerPhnno3]").val(spRecipPhnno[2]);
  1559. }
  1560. if (spRecipTelno) {
  1561. $("#cancelRequestFrm select[name=chgerTelno1]").val(spRecipTelno[0]);
  1562. $("#cancelRequestFrm input[name=chgerTelno2]").val(spRecipTelno[1]);
  1563. $("#cancelRequestFrm input[name=chgerTelno3]").val(spRecipTelno[2]);
  1564. }
  1565. if (ordChgSq > 0 && chgStat != 'G685_50' && chgStat != 'G685_51') {
  1566. $('input[name=chgerNm]').attr('readOnly', true); // 회수지정보 > 보내는사람 비활성화
  1567. $('input[name=chgerBaseAddr]').attr('readOnly', true); // 회수지정보 > 기본주소 비활성화
  1568. $('input[name=chgerDtlAddr]').attr('readOnly', true); // 회수지정보 > 상세주소 비활성화
  1569. $('select[name=chgerTelno1]').attr('disabled', true); // 회수지정보 > 일반전화 비활성화
  1570. $('input[name=chgerTelno2]').attr('readOnly', true); // 회수지정보 > 일반전화 비활성화
  1571. $('input[name=chgerTelno3]').attr('readOnly', true); // 회수지정보 > 일반전화 비활성화
  1572. $('select[name=chgerPhnno1]').attr('disabled', true); // 회수지정보 > 휴대전화 비활성화
  1573. $('input[name=chgerPhnno2]').attr('readOnly', true); // 회수지정보 > 휴대전화 비활성화
  1574. $('input[name=chgerPhnno3]').attr('readOnly', true); // 회수지정보 > 휴대전화 비활성화
  1575. $('#chgerRtnMemo').attr('readOnly', true); // 회수지정보 > 반품메모 비활성화
  1576. }
  1577. }
  1578. // 회수방법설정이벤트
  1579. var fnChangeWdGb = function(param) {
  1580. let wdGb = $(param).val();
  1581. // 회수지정보 히든 처리
  1582. if (wdGb == 'D') {
  1583. $('#chgerAddress').css('display', 'none');
  1584. $('#delvCdList').css('display', '');
  1585. } else {
  1586. $('#chgerAddress').css('display', '');
  1587. $('#delvCdList').css('display', 'none');
  1588. }
  1589. // 환불예정금액 계산
  1590. fnCalculateRefundAmt();
  1591. }
  1592. // 반품TO교환 버튼 클릭 이벤트
  1593. var fnRtnToExc = function() {
  1594. let ordNo = $('#cancelRequestFrm input[name=ordNo]').val();
  1595. let ordChgSq = $('#cancelRequestFrm input[name=ordChgSq]').val();
  1596. let delvFeeCd = $('#cancelRequestFrm input[name=delvFeeCd]').val();
  1597. let delvFeeCdGrp = $('#cancelRequestFrm input[name=delvFeeCdGrp]').val();
  1598. // 취소요청 구분 (orChgSq null 이면 취소요청화면 있으면 취소요청정보화면)
  1599. if (ordChgSq == null) {
  1600. ordChgSq = 0;
  1601. }
  1602. var param = "";
  1603. param += "&ordNo=" + ordNo;
  1604. param += "&delvFeeCd=" + delvFeeCd;
  1605. param += "&delvFeeCdGrp=" + delvFeeCdGrp;
  1606. param += "&ordChgSq=" + ordChgSq;
  1607. param += "&ordChgGb=G681_40";
  1608. // 반품상세 팝업 닫기
  1609. uifnPopupClose('popupReturnRequestForm');
  1610. var actionUrl = "/orderChange/exchange/request/form?" + param;
  1611. cfnOpenModalPopup(actionUrl, 'popupExchangeRequestForm');
  1612. }
  1613. // 회수지 정보 수정
  1614. var fnChangeChgerInfo = function() {
  1615. let url = '/orderChange/change/chger/addr';
  1616. let chgerNm = $("#cancelRequestFrm input[name=chgerNm]").val();
  1617. let chgerZipcode = $("#cancelRequestFrm input[name=chgerZipcode]").val();
  1618. let chgerBaseAddr = $("#cancelRequestFrm input[name=chgerBaseAddr]").val();
  1619. let chgerDtlAddr = $("#cancelRequestFrm input[name=chgerDtlAddr]").val();
  1620. let chgerPhnno1 = $("#cancelRequestFrm select[name=chgerPhnno1]").val();
  1621. let chgerPhnno2 = $("#cancelRequestFrm input[name=chgerPhnno2]").val();
  1622. let chgerPhnno3 = $("#cancelRequestFrm input[name=chgerPhnno3]").val();
  1623. let chgerTelno1 = $("#cancelRequestFrm select[name=chgerTelno1]").val();
  1624. let chgerTelno2 = $("#cancelRequestFrm input[name=chgerTelno2]").val();
  1625. let chgerTelno3 = $("#cancelRequestFrm input[name=chgerTelno3]").val();
  1626. if (gagajf.isNull(chgerZipcode)) {
  1627. mcxDialog.alert("회수지주소를 입력하세요."); return;
  1628. }
  1629. if (gagajf.isNull(chgerBaseAddr)) {
  1630. mcxDialog.alert("회수지주소를 입력하세요."); return;
  1631. }
  1632. if (gagajf.isNull(chgerDtlAddr)) {
  1633. mcxDialog.alert("회수지주소를 입력하세요."); return;
  1634. }
  1635. if (gagajf.isNull(chgerPhnno1)) {
  1636. mcxDialog.alert("휴대전화를 입력하세요."); return;
  1637. }
  1638. if (gagajf.isNull(chgerPhnno2)) {
  1639. mcxDialog.alert("휴대전화를 입력하세요."); return;
  1640. }
  1641. if (gagajf.isNull(chgerPhnno3)) {
  1642. mcxDialog.alert("휴대전화를 입력하세요."); return;
  1643. }
  1644. let chgerPhnno = chgerPhnno1 + '-' + chgerPhnno2 + '-' + chgerPhnno3;
  1645. let chgerRtnMemo = $("#cancelRequestFrm textarea[name=chgerRtnMemo]").val();
  1646. let chgerTelno = '';
  1647. if (!gagajf.isNull(chgerTelno1) && !gagajf.isNull(chgerTelno2) && !gagajf.isNull(chgerTelno3)) {
  1648. chgerTelno = chgerTelno1 + '-' + chgerTelno2 + '-' + chgerTelno3;
  1649. }
  1650. // 2021.11.09 card007 휴대폰번호 유효성검증 추가
  1651. if (!gagajf.checkPhnno(chgerPhnno)) {
  1652. mcxDialog.alert("회수지 휴대폰 번호가 유효하지 않습니다.");
  1653. return false;
  1654. }
  1655. let data = {};
  1656. data.ordNo = ordNo;
  1657. data.ordChgSq = ordChgSq;
  1658. data.chgerNm = chgerNm;
  1659. data.chgerPhnno = chgerPhnno;
  1660. data.chgerZipcode = chgerZipcode;
  1661. data.chgerBaseAddr = chgerBaseAddr;
  1662. data.chgerDtlAddr = chgerDtlAddr;
  1663. data.chgerRtnMemo = chgerRtnMemo;
  1664. let jsonData = JSON.stringify(data);
  1665. gagajf.ajaxJsonSubmit(url, jsonData, function(result){
  1666. });
  1667. }
  1668. // 네이버페이 주문형 반품보류 버튼 클릭 이벤트
  1669. var fnNpayReturnHold = function(param) {
  1670. let url = '/orderChange/nPay/order/return/hold';
  1671. let npayChangeHoldYn = $(param).attr('npayChangeHoldYn');
  1672. let data = {};
  1673. data.cancelReqList = cancelRequestTargetList;
  1674. data.npayChangeHoldYn = npayChangeHoldYn;
  1675. data.ordChgSq = ordChgSq;
  1676. let jsonData = JSON.stringify(data);
  1677. gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
  1678. uifnPopupClose('popupOrderDetail');
  1679. fnReOpenOrderDetailPopup();
  1680. uifnPopupClose('popupReturnRequestForm');
  1681. });
  1682. }
  1683. $(document).ready(function() {
  1684. // 1. 그리드생성
  1685. gagaAgGrid.createGrid('gridOrderCancelRequestList' , gridOptionsCancelReqList); // 주문정보
  1686. gagaAgGrid.createGrid('gridOrderCancelRequestToBeList' , gridOptionsCancelReqToBeList); // 취소정보
  1687. gagaAgGrid.createGrid('gridDelvInfoList' , gridOptionsDelvInfoList); // 배송비정보
  1688. gagaAgGrid.createGrid('gridDelvCdList' , gridOptionsDelvCdList); // 배송정보
  1689. gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);
  1690. gridOptionsDelvCdList.api.setRowData(rtnLocInfo);
  1691. // 1.1 TOTAL ROWS 없애기
  1692. gagaAgGrid.hideStatusBar('gridOrderCancelRequestList');
  1693. gagaAgGrid.hideStatusBar('gridOrderCancelRequestToBeList');
  1694. gagaAgGrid.hideStatusBar('gridDelvCdList');
  1695. // 2. 회수구분처리
  1696. // 2021.11.22 입점업체인 경우에는 회수요청만 해당
  1697. if (selfGoodsYn == "N") {
  1698. $('input:radio[name="wdGb"]:radio[value="W"]').prop('checked', true);
  1699. $('input:radio[name=wdGb]').attr('disabled', true);
  1700. } else {
  1701. if (wdGb == 'D') {
  1702. $('input:radio[name="wdGb"]:radio[value="D"]').prop('checked', true);
  1703. } else {
  1704. $('input:radio[name="wdGb"]:radio[value="W"]').prop('checked', true);
  1705. $('#delvCdList').css('display', 'none');
  1706. }
  1707. }
  1708. // 3. 무통장입금아닐때 환불계좌 목록 숨김처리
  1709. if (payMeans !== 'G014_20') {
  1710. $('#refundAccount').addClass("off");
  1711. } else {
  1712. fnBindOrderRfAccountInfo();
  1713. }
  1714. // 4. 회수지정보설정
  1715. fnSetChger();
  1716. // 네이버페이 주문형 보류 버튼 처리
  1717. $('#returnHold').css('display', 'none');
  1718. $('#releaseReturnHold').css('display', 'none');
  1719. // 5. 반품신청, 반품철회 버튼 제어
  1720. if (ordChgSq > 0) {
  1721. $("#rtnReqBtn").css("display", "none");
  1722. $("#rtnReqCancelBtn").css("display", "none");
  1723. // 2021.05.25 반품접수, 반품대기 상태에서만 철회가능
  1724. // 2021.07.13 회수예외정보가 있고 회수요청, 상품검수중 상태에서 철회 가능 처리
  1725. // 2021.07.22 택배사 회수 불가 시 회수요청상태에서 반품철회 처리
  1726. //if (chgStat != "G685_50" && chgStat != "G685_51" && (recallExceptionInfo == null || (chgStat != "G685_30" && chgStat != 'G685_31'))) {
  1727. // 2021.09.07 반품철회 전체 상태 오픈 현업(정지혜 과장 요청)
  1728. //if (chgStat != "G685_50" && chgStat != "G685_51") {
  1729. //$("#rtnReqCancelBtn").css("display", "none");
  1730. //}
  1731. // 회수요청 상태에서 택배사 회수 불가 or 회수예외정보 존재 시 반품철회 가능
  1732. //if (chgStat == 'G685_30' && (recallExceptionInfo != null || canRequestCancelYn == 'Y')) {
  1733. // $("#rtnReqCancelBtn").css("display", "");
  1734. //}
  1735. // 상품검수중 상태에서 회수예외정보 존재 시 반품철회 가능
  1736. //if (chgStat == 'G685_31' && recallExceptionInfo != null) {
  1737. // $("#rtnReqCancelBtn").css("display", "");
  1738. //}
  1739. // 2021.10.01 card007 CS요청으로 반품접수, 반품대기, 회수요청, 상품검수중 상태에서 반품철회 가능
  1740. if (chgStat == 'G685_50' || chgStat == 'G685_51' || chgStat == 'G685_30' || chgStat == 'G685_31') {
  1741. $("#rtnReqCancelBtn").css("display", "");
  1742. }
  1743. // 반품TO교환 버튼
  1744. if ((chgStat != "G685_50" && chgStat != "G685_51" && chgStat != "G685_30") || pgGb == 'NAVER_ORDER') {
  1745. $("#rtnToExcBtn").css("display", "none");
  1746. }
  1747. // 반품TO반품 버튼
  1748. if (ordChgGb != 'G681_30') {
  1749. $("#rtnToRtnBtn").css("display", "none");
  1750. } else {
  1751. $("#rtnReqCancelBtn").css("display", "none");
  1752. $("#rtnToExcBtn").css("display", "none");
  1753. }
  1754. // 직접발송일때 회수지정보 숨김처리
  1755. if (wdGb == "D") {
  1756. $("#chgerAddress").css("display", "none");
  1757. } else {
  1758. $('#delvCdList').css('display', 'none');
  1759. }
  1760. // 네이버페이 주문형 보류 버튼 처리
  1761. if (!gagajf.isNull(npayChangeHoldYn)) {
  1762. if (npayChangeHoldYn == 'Y') {
  1763. $('#releaseReturnHold').css('display', '');
  1764. } else {
  1765. $('#returnHold').css('display', '');
  1766. }
  1767. }
  1768. } else {
  1769. $("#rtnReqCompleteBtn").css("display", "none");
  1770. $("#rtnReqCancelBtn").css("display", "none");
  1771. $("#rtnToExcBtn").css("display", "none");
  1772. $("#rtnToRtnBtn").css("display", "none");
  1773. }
  1774. // 6. 취소사유 선택
  1775. if (ordChgSq > 0) {
  1776. $("select[name='selectChgReason']").val(chgReason); // 변경사유코드
  1777. $("select[name='selectChgReason']").attr('disabled', true); // 변경사유 비활성화
  1778. $("#chgMemo").text(chgMemo); // 변경사유메모
  1779. $("#chgMemo").attr('readOnly', true); // 변경사유메모 비활성화
  1780. $('input:radio[name=wdGb]').attr('disabled', true); // 회수방법 비활성화
  1781. fnChangeChgReason(chgReason); // 귀책사유
  1782. }
  1783. // debug mode 해제
  1784. if (temp3) {
  1785. $("#h4OrderCancelRequestToBeList").css("display" , "none");
  1786. $("#gridOrderCancelRequestToBeList").css("display" , "none");
  1787. $("#h4DelvInfoList").css("display" , "none");
  1788. $("#gridDelvInfoList").css("display" , "none");
  1789. }
  1790. // 7. 환불예상금액계산
  1791. fnCalculateRefundAmt(null);
  1792. // 2021.05.13 높이자동조절
  1793. var cancelRequestTargetHeight = 50 + (40 * cancelRequestTargetCnt);
  1794. $("#gridOrderCancelRequestList").css("height" , cancelRequestTargetHeight+"px");
  1795. // 글자수 제한 byte 표기
  1796. cfnGetTextLength($('#chgMemo'), 1000, $('#chgMemoCount'));
  1797. cfnGetTextLength($('#chgerRtnMemo'), 1000, $('#chgerRtnMemoCount'));
  1798. // WMS 미접수, 확정후품절 처리
  1799. if (ordChgGb == 'G681_50' || ordChgGb == 'G681_60') {
  1800. $('input:radio[name="wdGb"]:radio[value="D"]').prop('checked', true);
  1801. $('#chgerAddress').css('display', 'none');
  1802. $('input:radio[name=wdGb]').attr('disabled', true);
  1803. $('#delvCdList').css('display', 'none');
  1804. // 확정후품절 반품사유 품절로 처리
  1805. if (ordChgGb == 'G681_60') {
  1806. $("select[name='selectChgReason']").val('G688_17'); // 변경사유코드
  1807. $("select[name='selectChgReason']").attr('disabled', true); // 변경사유 비활성화
  1808. fnChangeChgReason('G688_17'); // 귀책사유
  1809. }
  1810. }
  1811. if (orderChangeDetailList != null) {
  1812. $('#rtnRequestRegNm').text(orderChangeDetailList[0].regNm);
  1813. $('#rtnRequestUpdNm').text(orderChangeDetailList[0].updNm);
  1814. }
  1815. });
  1816. // 2021.06.17 구성상품 내역 팝업 호출
  1817. var fnOrderDetailItemForm = function (ordDtlNo) {
  1818. var actionUrl = "/delivery/detail/item/form/" + ordDtlNo;
  1819. cfnOpenModalPopup(actionUrl, 'popupDeliveryDetailItemForm');
  1820. }
  1821. </script>
  1822. </html>