VM暫存
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

member_invoice_report.php 10KB

8 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. <?php /* ----- 電子發票查詢 ----- */?>
  2. <div data-items="member_invoice_report" class="row" style="display:none;">
  3. <div class="col-lg-12">
  4. <div class="panel panel-default">
  5. <div class="panel-heading">
  6. <form id="member_invoice_form" role="form">
  7. <label class="input-inline" for="member_invoice_search_station_no_modify">電子發票查詢</label>&nbsp;&nbsp;
  8. <select id="member_invoice_search_station_no_modify" name="member_invoice_search_station_no_modify"></select>
  9. &nbsp;<span class="input-inline" >,</span>&nbsp;
  10. <label class="input-inline" for="member_invoice_search_time_from">開始</label>&nbsp;&nbsp;
  11. <input type="text" class="date" id="member_invoice_search_time_from" name="member_invoice_search_time_from">
  12. &nbsp;<span class="input-inline" > ~ </span>&nbsp;
  13. <label class="input-inline" for="member_invoice_search_time_to">結束</label>&nbsp;&nbsp;
  14. <input type="text" class="date" id="member_invoice_search_time_to" name="member_invoice_search_time_to">
  15. &nbsp;&nbsp;
  16. <label class="input-inline"><input type="submit" value="查詢" /></label>
  17. </form>
  18. </div>
  19. <!-- /.panel-heading -->
  20. <div class="panel-body">
  21. <div class="dataTable_wrapper">
  22. <table class="table table-striped table-bordered table-hover">
  23. <thead>
  24. <tr>
  25. <th style="text-align:left;">建立時間</th>
  26. <th style="text-align:center;">車牌號碼</th>
  27. <th style="text-align:center;">發票金額</th>
  28. <th style="text-align:center;">發票號碼</th>
  29. <th style="text-align:center;">發票統編</th>
  30. <th style="text-align:center;">通知信箱</th>
  31. <th style="text-align:center;">通知簡訊</th>
  32. <th style="text-align:center;">備註</th>
  33. <th style="text-align:center;">操作</th>
  34. </tr>
  35. </thead>
  36. <tbody id="member_invoice_list" style="font-size:18px;"></tbody>
  37. </table>
  38. </div><?php /* ----- end of dataTable_wrapper ----- */?>
  39. </div><?php /* ----- end of panel-body ----- */?>
  40. </div><?php /* ----- end of panel panel-default ----- */?>
  41. </div><?php /* ----- end of col-lg-12 ----- */?>
  42. </div>
  43. <?php /* ----- 關帳查詢(結束) ----- */?>
  44. <script>
  45. // 設定場站資訊
  46. for(station_no in st)
  47. {
  48. $(new Option(st[station_no],station_no)).appendTo('#member_invoice_search_station_no_modify'); // 場站
  49. }
  50. var initMinDate = moment("00:00", "HH:mm").subtract(10, 'days');
  51. var initMaxDate = moment("23:59", "HH:mm");
  52. var searchTimeFromPicker = $( "#member_invoice_search_time_from" );
  53. var searchTimeToPicker = $( "#member_invoice_search_time_to" );
  54. // 日期
  55. /* DatePicker 設定start */
  56. searchTimeFromPicker.datetimepicker({
  57. dateFormat: 'yy-mm-dd',
  58. maxDate: '0',
  59. changeMonth: true,
  60. numberOfMonths: 1,
  61. timeFormat: "HH:mm",
  62. addSliderAccess: true,
  63. sliderAccessArgs: { touchonly: false },
  64. onClose: function( selectedDate ) {
  65. searchTimeToPicker.datetimepicker( "option", "minDate", selectedDate );
  66. console.log("search_time_from: " + selectedDate);
  67. }
  68. });
  69. searchTimeFromPicker.datetimepicker('setDate', initMinDate.toDate());
  70. searchTimeToPicker.datetimepicker({
  71. dateFormat: 'yy-mm-dd',
  72. maxDate: '0',
  73. changeMonth: true,
  74. numberOfMonths: 1,
  75. timeFormat: "HH:mm",
  76. addSliderAccess: true,
  77. sliderAccessArgs: { touchonly: false },
  78. onClose: function( selectedDate ) {
  79. searchTimeFromPicker.datetimepicker( "option", "maxDate", selectedDate );
  80. console.log("search_time_to: " + selectedDate);
  81. }
  82. });
  83. searchTimeToPicker.datetimepicker('setDate', initMaxDate.toDate());
  84. /* DatePicker 設定end */
  85. $("#member_invoice_form").submit(function(event)
  86. {
  87. event.preventDefault();
  88. var station_no = $("#member_invoice_search_station_no_modify").val();
  89. var member_invoice_time_from = $( "#member_invoice_search_time_from" ).val();
  90. var member_invoice_time_to = $( "#member_invoice_search_time_to" ).val();
  91. $("#member_invoice_list").html("");
  92. $.ajax
  93. ({
  94. url:APP_URL+"member_invoice_query",
  95. dataType:"json",
  96. type:"post",
  97. data:
  98. {
  99. "station_no": station_no,
  100. "member_invoice_time_from": member_invoice_time_from,
  101. "member_invoice_time_to": member_invoice_time_to
  102. },
  103. error:function(xhr, ajaxOptions, thrownError)
  104. {
  105. var error_msg = xhr.responseText ? xhr.responseText : "連線失敗, 請稍候再試";
  106. alertify_msg(error_msg);
  107. console.log("error:"+error_msg+"|"+ajaxOptions+"|"+thrownError);
  108. },
  109. success:function(jdata)
  110. {
  111. var member_invoice_list = ["<tr>"];
  112. for(idx in jdata)
  113. {
  114. order_no = jdata[idx]['order_no'];
  115. member_invoice_list = member_invoice_list.concat(["<td id='member_invoice_data_", idx,
  116. "' data-station_no='", jdata[idx]['station_no'],
  117. "' data-order_no='", jdata[idx]['order_no'],
  118. "' data-lpr='", jdata[idx]['lpr'],
  119. "' data-tx_time='", jdata[idx]['tx_time'],
  120. "' data-tx_type='", jdata[idx]['tx_type'],
  121. "' data-invoice_no='", jdata[idx]['invoice_no'],
  122. "' data-invoice_remark='", jdata[idx]['invoice_remark'],
  123. "' data-company_no='", jdata[idx]['company_no'],
  124. "' data-amt='", jdata[idx]['amt'],
  125. "' data-email='", jdata[idx]['email'],
  126. "' data-mobile='", jdata[idx]['mobile'],
  127. "' data-status='", jdata[idx]['status'],
  128. "' style='text-align:left;'>", jdata[idx]['tx_time'], "</td>"]);
  129. member_invoice_list = member_invoice_list.concat(["<td style='text-align:center;'>", jdata[idx]['lpr'], "</td>"]);
  130. member_invoice_list = member_invoice_list.concat(["<td style='text-align:center;'>", jdata[idx]['amt'], "</td>"]);
  131. member_invoice_list = member_invoice_list.concat(["<td style='text-align:center;'>", jdata[idx]['invoice_no'], "</td>"]);
  132. member_invoice_list = member_invoice_list.concat(["<td style='text-align:center;'>", jdata[idx]['company_no'], "</td>"]);
  133. member_invoice_list = member_invoice_list.concat(["<td style='text-align:left;'>", jdata[idx]['email'], "</td>"]);
  134. member_invoice_list = member_invoice_list.concat(["<td style='text-align:left;'>", jdata[idx]['mobile'], "</td>"]);
  135. if(jdata[idx]['status'] == 104)
  136. {
  137. member_invoice_list = member_invoice_list.concat(["<td style='text-align:left;color:red;'>已作廢</td>"]);
  138. member_invoice_list = member_invoice_list.concat(["<td style='text-align:center;'></td>"]);
  139. }
  140. else if(jdata[idx]['status'] == 105)
  141. {
  142. member_invoice_list = member_invoice_list.concat(["<td style='text-align:left;'>已折讓</td>"]);
  143. member_invoice_list = member_invoice_list.concat(["<td style='text-align:center;'></td>"]);
  144. }
  145. else
  146. {
  147. member_invoice_list = member_invoice_list.concat(["<td style='text-align:left;'></td>"]);
  148. member_invoice_list = member_invoice_list.concat(["<td style='text-align:center;'><select id='member_invoice_sel_", idx,"' onclick='member_invoice_modify(", idx, "); '><option value='choice'>請選擇</option><option value='void'>作廢</option></select></td>"]);
  149. }
  150. member_invoice_list = member_invoice_list.concat(["</tr>"]);
  151. }
  152. $("#member_invoice_list").append(member_invoice_list.join(''));
  153. }
  154. });
  155. });
  156. // 電子發票選項
  157. function member_invoice_modify(idx)
  158. {
  159. select_item = $("#member_invoice_sel_" + idx).val();
  160. $("#member_invoice_sel_"+idx+" option[value='choice']").prop("selected", true);
  161. // 已超過一天禁止操作
  162. if(moment().subtract(1, 'days').isAfter($("#member_invoice_data_"+idx).data("tx_time")))
  163. {
  164. alertify_msg("已逾時,請通知營管處理。。");
  165. return false;
  166. }
  167. // 建立電子發票資訊
  168. xvars["invoice"] = Array();
  169. xvars["invoice"]["station_no"] = $("#member_invoice_data_"+idx).data("station_no");
  170. xvars["invoice"]["invoice_no"] = $("#member_invoice_data_"+idx).data("invoice_no");
  171. xvars["invoice"]["order_no"] = $("#member_invoice_data_"+idx).data("order_no");
  172. switch(select_item)
  173. {
  174. // 作廢發票
  175. case "void":
  176. invoice_void();
  177. break;
  178. // 折讓發票
  179. case "allowance":
  180. alertify_log('開發中..');
  181. break;
  182. default: // -- 其餘選擇(忽略不處理) --
  183. return false;
  184. }
  185. }
  186. // 作廢發票
  187. function invoice_void()
  188. {
  189. var ok_msg = "作廢發票 " + xvars["invoice"]["invoice_no"];
  190. alertify.set({
  191. buttonFocus: "cancel",
  192. labels: {
  193. cancel : "取消",
  194. ok : ok_msg
  195. }
  196. });
  197. alertify.confirm("確定 " + ok_msg + " 嗎?", function (e){
  198. if (e) {
  199. // 執行作廢
  200. $.ajax
  201. ({
  202. url:APP_URL+"member_invoice_void",
  203. dataType:"text",
  204. type:"post",
  205. data:
  206. {
  207. "station_no":xvars["invoice"]["station_no"],
  208. "invoice_no":xvars["invoice"]["invoice_no"],
  209. "order_no":xvars["invoice"]["order_no"],
  210. },
  211. error:function(xhr, ajaxOptions, thrownError)
  212. {
  213. alertify_msg(xhr.responseText);
  214. console.log("error:"+xhr.responseText+"|"+ajaxOptions+"|"+thrownError);
  215. },
  216. success:function(jdata)
  217. {
  218. if (jdata == "ok")
  219. {
  220. alertify_msg("發票作廢完成 ! ");
  221. $("#member_invoice_form").submit();
  222. }
  223. else
  224. {
  225. alertify_msg("操作失敗。。" + jdata);
  226. }
  227. }
  228. });
  229. delete xvars["invoice"];
  230. } else {
  231. alertify_log('操作已取消');
  232. }
  233. });
  234. }
  235. </script>