/webccr/src/com/emis/caesar/senao/event/button/TBtnCreditStage.java

https://bitbucket.org/sanliou/synccr · Java · 102 lines · 75 code · 4 blank · 23 comment · 13 complexity · 49ff6f3c1519250a0074a0116902005d MD5 · raw file

  1. package com.emis.caesar.senao.event.button;
  2. import com.emis.caesar.senao.event.TButtonEventContext;
  3. import com.emis.caesar.senao.unit.TCcrConst;
  4. import com.emis.caesar.senao.util.CcrUtil;
  5. import com.emis.caesar.senao.util.EDCUtil;
  6. import com.emis.caesar.senao.util.GenUtil;
  7. import com.emis.caesarui.webccr.webccr;
  8. import com.emis.util.emisUtil;
  9. import com.vaadin.ui.UI;
  10. /**
  11. * Created by Jenny on 2017/1/11.
  12. * 信用卡分期付款
  13. */
  14. public class TBtnCreditStage extends TButtonEventContext {
  15. /**
  16. * 來源是否為信用卡分期、信用卡無分期(一次)
  17. * isCreditStage: true(分期);false(無分期)
  18. */
  19. boolean isCreditStage = false;
  20. int iEntryAmt = 0;
  21. public TBtnCreditStage(boolean isCreditStage) {
  22. super();
  23. this.isCreditStage = isCreditStage;
  24. FiNextState = TCcrConst.CPS_PAY;
  25. //增加是否為信用卡分期CREDIT_STAGE or 一般刷卡 CREDIT_PAY add by daff 20181227 start
  26. if (isCreditStage) {
  27. FoSale.setSTAGE_BANK("CREDIT_STAGE");
  28. }else{
  29. FoSale.setSTAGE_BANK("CREDIT_PAY");
  30. }
  31. //增加是否為信用卡分期CREDIT_STAGE or 一般刷卡 CREDIT_PAY add by daff 20181227 end
  32. }
  33. /**
  34. * 檢核在哪些交易流程狀態下可執行
  35. */
  36. protected boolean inCcrSate() {
  37. int aRunSate[] = {TCcrConst.CPS_WAIT_PAY, TCcrConst.CPS_PAY,TCcrConst.CPS_LOCK_PAY};
  38. return GenUtil.isIntKeyInArray(aRunSate, FoCcr.getCurrnetState());
  39. }
  40. //轉換狀態是否可合法
  41. protected boolean trsCcrStateIsOK() {
  42. //add by Ares 20200729 線下繳費限定付款方式
  43. // 檢查是否有設定限定付款別
  44. String sLimitPayNo = FoSale.getFsLimitPayNo();
  45. if (!emisUtil.isEmpty(sLimitPayNo)) {
  46. CcrUtil.setMessage("限定付款別 = " + sLimitPayNo);
  47. //CcrUtil.setMessage("目前限定付款別 = " + FsPAY_NO);
  48. if (sLimitPayNo.indexOf("," + TCcrConst.PAY_CREDIT + ",") < 0) {
  49. FsErrMsg ="無法使用此付款方式";
  50. return eventOver(false);
  51. }
  52. }
  53. if (isCreditStage) {
  54. if (FoCcr.getCurrentSale().IsOnlyOrder()) {
  55. FsErrMsg = "純客訂不可信用卡分期";
  56. return eventOver(false);
  57. }
  58. }
  59. // 行動支付不能混合付款
  60. if (FoSale.getSaleItemCount() > 0) {
  61. if (FoSale.isExistedLinePay()) {
  62. FsErrMsg = "行動支付不能和其他付款方式併用";
  63. return eventOver(false);
  64. }
  65. }
  66. //
  67. String _sEntryAmt = FoCcr.UInotify.receivceMainDisplayEntryData();
  68. if (emisUtil.isEmpty(_sEntryAmt)) {
  69. iEntryAmt = (int)FoCcr.getCurrentSale().getUnpaidAmout();
  70. } else {
  71. iEntryAmt = emisUtil.parseInt(_sEntryAmt);
  72. }
  73. // ((webccr) UI.getCurrent()).getlog().info(webccr.class, "信用卡金額:" + iEntryAmt);
  74. CcrUtil.setMessage("信用卡金額:" + iEntryAmt);
  75. if (iEntryAmt > FoCcr.getCurrentSale().getUnpaidAmout()
  76. || iEntryAmt <= 0) {
  77. FsErrMsg = "超過已未付金額";
  78. return eventOver(false);
  79. }
  80. //
  81. loadWindow();
  82. return eventOver(true);
  83. }
  84. private void loadWindow() {
  85. int iTransType = EDCUtil.NORMAIL_SALE; // 一般銷售
  86. if (isCreditStage) {
  87. iTransType = EDCUtil.CARD_CREDITSTAGE; // 分期
  88. }
  89. // isCreditStage = true 表示需要開商品分期數視窗,反之則否
  90. EDCUtil edcUtil = new EDCUtil(iTransType, this, isCreditStage);
  91. // 不開窗,傳入金額與分期數
  92. if (!isCreditStage) {
  93. edcUtil.setiCreditStageAmt(iEntryAmt); // 刷卡金額
  94. edcUtil.setsStage(""); // 分期數
  95. }
  96. edcUtil.openPartWin();
  97. }
  98. }