RtnReqForm.html 68 KB

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