SettleConfirmForm.html 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org">
  4. <!--
  5. *******************************************************************************
  6. * @source : SettleConfirmForm.html
  7. * @desc : 정산확정관리 Page
  8. *============================================================================
  9. * STYLE24
  10. * Copyright(C) 2020 TSIT, All rights reserved.
  11. *============================================================================
  12. * VER DATE AUTHOR DESCRIPTION
  13. * === =========== ========== =============================================
  14. * 1.0 2020.10.26 gagamel 최초 작성
  15. *******************************************************************************
  16. -->
  17. <div id="main">
  18. <!-- 메인타이틀 영역 -->
  19. <div class="main-title">
  20. </div>
  21. <!-- //메인타이틀 영역 -->
  22. <!-- 메뉴 설명 -->
  23. <div class="infoBox menu-desc">
  24. </div>
  25. <!-- //메뉴 설명 -->
  26. <!-- 검색조건 영역 -->
  27. <div class="panelStyle">
  28. <form id="searchForm" name="searchForm" action="#" th:action="@{'/settle/confirm/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
  29. <table class="frmStyle" aria-describedby="검색조건">
  30. <colgroup>
  31. <col style="width:10%;"/>
  32. <col style="width:60%;"/>
  33. <col style="width:10%;"/>
  34. <col/>
  35. </colgroup>
  36. <tr>
  37. <th>매출기간<i class="required" title="필수" aria-hidden="true"></i></th>
  38. <td id="terms">
  39. </td>
  40. <th>유통구분</th>
  41. <td>
  42. <select name="distributionGb">
  43. <option value="">[전체]</option>
  44. <option th:if="${distributionGbList}" th:each="oneData, status : ${distributionGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  45. </select>
  46. </td>
  47. </tr>
  48. <tr>
  49. <th>공급업체/브랜드</th>
  50. <td colspan="3">
  51. <select name="supplyCompCd">
  52. <option value="">[전체]</option>
  53. <option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  54. </select>
  55. /
  56. <select name="brandCd">
  57. <option value="">[전체]</option>
  58. </select>
  59. </td>
  60. </tr>
  61. </table>
  62. <ul class="panelBar">
  63. <li class="center">
  64. <button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
  65. <button type="button" class="btn btn-gray btn-lg" onclick="$('#searchForm')[0].reset();">초기화</button>
  66. </li>
  67. </ul>
  68. </form>
  69. </div>
  70. <!-- 검색조건 영역 -->
  71. <!-- 리스트 영역 -->
  72. <div class="panelStyle">
  73. <!-- 버튼 배치 영역 -->
  74. <ul class="panelBar">
  75. <li class="right">
  76. <button type="button" class="btn btn-warning btn-lg" id="btnUpload">기타차감 엑셀업로드</button>
  77. <button type="button" class="btn btn-default btn-lg" id="btnExcel">세금계산서용 엑셀다운로드</button>
  78. </li>
  79. </ul>
  80. <!-- //버튼 배치 영역 -->
  81. <div id="gridList" style="width: 100%; height: 570px" class="ag-theme-balham"></div>
  82. </div>
  83. <!-- //리스트 영역 -->
  84. </div>
  85. <script th:inline="javascript">
  86. /*<![CDATA[*/
  87. let supplyCompList = gagajf.convertToArray([[${supplyCompList}]]);
  88. let distributionGbList = gagajf.convertToArray([[${distributionGbList}]]);
  89. let bankList = gagajf.convertToArray([[${bankList}]]);
  90. let columnDefs = [
  91. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  92. {
  93. headerName: "정산확정", field: "confirmYn", width: 100, cellClass: 'text-center',
  94. cellRenderer: function(params) {
  95. if (params.value == 'Y') {
  96. return '<button type="button" class="btn btn-success btn-sm">확정</button>';
  97. } else {
  98. return '<button type="button" class="btn btn-danger btn-sm">해제</button>';
  99. }
  100. }
  101. },
  102. {
  103. headerName: "공급업체", field: "supplyCompCd", width: 100, cellClass: 'text-center',
  104. valueGetter: function (params) {
  105. return gagaAgGrid.lookupValue(supplyCompList, params.data.supplyCompCd);
  106. }
  107. },
  108. { headerName: "전자계약여부", field: "econtractYn", width: 100, cellClass: 'text-center' },
  109. { headerName: "사업자등록번호", field: "bizNo", width: 120, cellClass: 'text-center' },
  110. { headerName: "정산주기", field: "settleDay", width: 100, cellClass: 'text-center' },
  111. { headerName: "판매수량", field: "sellQty", width: 100, cellClass: 'text-center' },
  112. { headerName: "판매총액", field: "sellAmt", width: 100, cellClass: 'text-right' },
  113. { headerName: "수수료", field: "sellFeeAmt", width: 100, cellClass: 'text-right' },
  114. { headerName: "쿠폰할인금액", field: "cpnDcAmt", width: 100, cellClass: 'text-right' },
  115. { headerName: "자사쿠폰분담액", field: "selfCpnDcAmt", width: 120, cellClass: 'text-right' },
  116. { headerName: "입점쿠폰분담액", field: "supplyCompCpnDcAmt", width: 120, cellClass: 'text-right' },
  117. { headerName: "계산서발행금액", field: "billAmt", width: 120, cellClass: 'text-right' },
  118. { headerName: "공급가액", field: "supplyAmt", width: 100, cellClass: 'text-right' },
  119. { headerName: "세액", field: "taxAmt", width: 100, cellClass: 'text-right' },
  120. { headerName: "배송비", field: "delvFeeAmt", width: 100, cellClass: 'text-right' },
  121. {
  122. headerName: "기타차감", field: "etcDeductAmt", width: 100, cellClass: 'text-right',
  123. editable: true, cellEditor: 'numericCellEditor', cellEditorParams: { maxlength: 12, validType: 'integer' },
  124. cellRenderer: function(params) { return gagajf.isNull(params.value) ? 0 : params.value.addComma(); },
  125. cellStyle: { color: '#fffff', 'background-color': '#aaaaff' }
  126. },
  127. { headerName: "지급금액", field: "giveAmt", width: 100, cellClass: 'text-right' },
  128. {
  129. headerName: "미수금", field: "receivableAmt", width: 100, cellClass: 'text-right',
  130. editable: true, cellEditor: 'numericCellEditor', cellEditorParams: { maxlength: 12, validType: 'integer' },
  131. cellRenderer: function(params) { return gagajf.isNull(params.value) ? 0 : params.value.addComma(); },
  132. cellStyle: { color: '#fffff', 'background-color': '#aaaaff' }
  133. },
  134. { headerName: "총지급금액", field: "totGiveAmt", width: 100, cellClass: 'text-right' },
  135. {
  136. headerName: "상태", field: "settleStat", width: 100, cellClass: 'text-center',
  137. cellRenderer: function (params) {
  138. // 전자계약이 안 되어 있으면 "보류"
  139. // 전자계약은 되어 있으나 지급금액 < 0 이면 "미수금" 그 외는 "정상"
  140. if (params.data.econtractYn == 'N') {
  141. return '보류';
  142. }
  143. if (params.data.giveAmt < 0) {
  144. return '미수금';
  145. }
  146. return '정상';
  147. }
  148. },
  149. {
  150. headerName: "은행", field: "bankCd", width: 100, cellClass: 'text-center',
  151. valueGetter: function (params) {
  152. return gagaAgGrid.lookupValue(bankList, params.data.bankCd);
  153. }
  154. },
  155. { headerName: "계좌번호", field: "accountNo", width: 150, cellClass: 'text-center' },
  156. { headerName: "예금주명", field: "depositorNm", width: 100, cellClass: 'text-center' },
  157. { headerName: "계산서이메일", field: "billEmail", width: 100, cellClass: 'text-center' }
  158. ];
  159. let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
  160. // 검색
  161. $('#btnSearch').on('click', function() {
  162. gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
  163. });
  164. // 세금계산서용 엑셀다운로드
  165. $('#btnExcel').on('click', function() {
  166. // DB 처리로 작업해야 함. 항목은 다음과 같음.
  167. // 작성일
  168. // 품목: "상품판매수수료"로 고정
  169. // 공급가액: ROUND(현금거래액 / 1.1)
  170. // 세액: 현금거래액 - 공급가액
  171. // 현금거래액: ROUND(수수료 - 자사쿠폰분담액). < 0인 경우 0으로 표기
  172. // 공급업체 / 사업자등록번호 / 대표자명 / 업태 / 업종 / 주소
  173. // 정산담당자 / 정산담당자연락처 / 계산서이메일
  174. // 세금계산서발행금액: ROUND(수수료 - 자사쿠폰분담액). < 0인 경우 0으로 표기
  175. });
  176. $(document).ready(function() {
  177. cfnCreateCalendar('#terms', 'startDt', 'endDt', true, '매출');
  178. $('.btnToday').trigger('click');
  179. // Create a agGrid
  180. gagaAgGrid.createGrid('gridList', gridOptions);
  181. });
  182. /*]]>*/
  183. </script>
  184. </html>