"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");

var _typeof3 = require("@babel/runtime/helpers/typeof");

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = void 0;

require("maycur-antd/lib/modal/style/css");

var _modal = _interopRequireDefault(require("maycur-antd/lib/modal"));

var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));

require("maycur-antd/lib/alert/style/css");

var _alert = _interopRequireDefault(require("maycur-antd/lib/alert"));

var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));

var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));

require("maycur-antd/lib/message/style/css");

var _message2 = _interopRequireDefault(require("maycur-antd/lib/message"));

var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));

var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));

var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));

var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));

var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));

var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));

var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));

var _react = _interopRequireWildcard(require("react"));

var _EditPaymentForm = _interopRequireDefault(require("./EditPaymentForm"));

var _NewEditPaymentForm = _interopRequireDefault(require("./NewEditPaymentForm"));

var _i18next = _interopRequireDefault(require("i18next"));

var _lodash = _interopRequireDefault(require("lodash"));

var _excluded = ["isCompany", "showDescription", "showActive", "showCurrency", "currencyLabel", "fetchCities", "cities", "currencys", "canAddBranch", "fetchBanks", "fetchCountryList", "countryList", "banks", "fetchBankBranches", "fetchCertificationTypes", "getBankname", "extra", "extraName", "certificateNoRequired", "paymentTypes", "autoRequired", "fetchEntities", "modalManager", "alertMsg", "isAutomatic", "codeAndRange", "showExtraCurrency", "needCountry", "chooseCurrency", "newPaymentModal", "accountType", "fetchItemList"];

function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }

function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }

function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }

function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }

var PaymentAccountModal = /*#__PURE__*/function (_Component) {
  (0, _inherits2.default)(PaymentAccountModal, _Component);

  var _super = _createSuper(PaymentAccountModal);

  function PaymentAccountModal(props) {
    var _this;

    (0, _classCallCheck2.default)(this, PaymentAccountModal);
    _this = _super.call(this, props);
    var data = props.data || {};

    if (data && data.abroadExpand) {
      data = _objectSpread(_objectSpread(_objectSpread({}, data), data.abroadExpand), {}, {
        code: props.data.code
      });
    }

    if (data.hasBankBranch === false && data.bankBranchName) {
      data = _objectSpread(_objectSpread({}, data), {}, {
        bankBranchBizCode: data.bankBranchName
      });
    }

    _this.state = {
      data: data,
      fields: {},
      loading: false
    };
    _this.onErrors = _this.onErrors.bind((0, _assertThisInitialized2.default)(_this));
    _this.onSubmit = _this.onSubmit.bind((0, _assertThisInitialized2.default)(_this));
    _this.submit = _this.submit.bind((0, _assertThisInitialized2.default)(_this));
    _this.onChangeBank = _this.onChangeBank.bind((0, _assertThisInitialized2.default)(_this));
    _this.onChangeBankCountry = _this.onChangeBankCountry.bind((0, _assertThisInitialized2.default)(_this));
    _this.onChangeBankBranch = _this.onChangeBankBranch.bind((0, _assertThisInitialized2.default)(_this));
    _this.onFieldChange = _this.onFieldChange.bind((0, _assertThisInitialized2.default)(_this));
    return _this;
  }

  (0, _createClass2.default)(PaymentAccountModal, [{
    key: "onErrors",
    value: function onErrors() {
      _message2.default.warning(_i18next.default.t('MK_PaymentAccountModal:warnMsg'));
    }
  }, {
    key: "onSubmit",
    value: function onSubmit() {
      var _this2 = this;

      var _this$props = this.props,
          onSubmit = _this$props.onSubmit,
          promise = _this$props.promise,
          isCompany = _this$props.isCompany,
          _this$props$needCount = _this$props.needCountry,
          needCountry = _this$props$needCount === void 0 ? true : _this$props$needCount;

      if (typeof onSubmit === 'function') {
        this.setState({
          loading: true
        });

        var data = _lodash.default.clone(this.state.data); // hard code


        data.countryCode = data.bankCountry;
        data.paymentScope = ['pay_employee'];
        data.account = _lodash.default.replace(data.account, /\s/g, ''); // clear data

        var needClearValues = [];

        switch (data.paymentType) {
          case 'CASH':
            needClearValues.push('bankAcctNumber');
          // fallthrough  // 不要 break  因为 CASH 和 ALIPAY 都需要重置以下属性的值

          case 'ALIPAY':
            needClearValues.push('bankCountry', 'bankCode', 'bankName', 'bankLocation', 'bankBranchBizCode', 'bankBranchNo', 'bankBranchName');
            break;

          case 'BANK':
            if (data.bankBranchBizCode === data.bankBranchName) // 手动添加的分支行 因为展示需要 所以将 bankBranchBizCode 和 bankBranchName 设为同样的值了，这里需要再改回bankBranchNo
              data.bankBranchBizCode = data.bankBranchNo;
            break;

          default:
            break;
        }

        needClearValues.forEach(function (key) {
          return data[key] = undefined;
        });

        if (!isCompany || data.bankCode !== 'cmbc') {
          data.agencyBizCode = undefined;
        }

        var _this$props2 = this.props,
            showDescription = _this$props2.showDescription,
            showActive = _this$props2.showActive;
        if (!showDescription) data.description = undefined;
        if (!showActive) data.active = undefined;

        if (!needCountry) {
          data.countryCode = undefined;
          data.bankCountry = undefined;
        }

        if (!!data.bankBranchBizCode && (0, _typeof2.default)(data.bankBranchBizCode) === 'object') {
          var _data$bankBranchBizCo = data.bankBranchBizCode,
              code = _data$bankBranchBizCo.code,
              name = _data$bankBranchBizCo.name;
          data.bankBranchBizCode = code;
          data.bankBranchName = name;
        }

        data.abroadExpand = _objectSpread(_objectSpread({}, data), {}, {
          iban: data.iban ? data.iban : undefined,
          bankAcctName: data.bankAcctName ? data.bankAcctName : undefined,
          swiftCode: data.swiftCode ? data.swiftCode : undefined,
          abroadPayeeAddress: data.abroadPayeeAddress ? data.abroadPayeeAddress : undefined,
          abroadBankAddress: data.abroadBankAddress ? data.abroadBankAddress : undefined,
          acceptCcyDetail: data.acceptCcyDetail ? data.acceptCcyDetail : undefined,
          remark: data.remark ? data.remark : undefined,
          abroadBankBranchNo: data.abroadBankBranchNo,
          bankIdentificationNumber: data.bankIdentificationNumber,
          payeeAccountType: data.payeeAccountType,
          abroadPayeeAccountType: data.abroadPayeeAccountType,
          payeeDutyParagraph: data.payeeDutyParagraph,
          cci: data.cci,
          routingNumber: data.routingNumber,
          payeePhoneNumber: data.payeePhoneNumber,
          bankId: data.bankId,
          branchTransitNumber: data.branchTransitNumber,
          cuit: data.cuit,
          cbu: data.cbu,
          dniPassport: data.dniPassport,
          ifsc: data.ifsc,
          bsb: data.bsb,
          abroadBankBizCode: data.abroadBankBizCode,
          abroadPayeeType: data.abroadPayeeType,
          abroadBankNumber: data.abroadBankNumber,
          paymentTypeBizCode: data.paymentTypeBizCode,
          businessStructureOfBeneficiaryCompany: data.businessStructureOfBeneficiaryCompany,
          paymentPurposeCode: data.paymentPurposeCode,
          dutyParagraph: data.dutyParagraph,
          abroadBankBranchCode: data.abroadBankBranchCode,
          edrpou: data.edrpou
        });
        onSubmit(data).then(function () {
          _this2.setState({
            loading: false
          });

          if (promise) promise.resolve();
        }, function (err) {
          _this2.setState({
            loading: false
          });

          if (err) _message2.default.error(err);
        });
      }
    }
  }, {
    key: "submit",
    value: function submit() {
      if (this.formRef) {
        this.formRef.handleSubmit({});
      }
    }
  }, {
    key: "onFieldChange",
    value: function onFieldChange(changedFields) {
      var _this$state = this.state,
          data = _this$state.data,
          fields = _this$state.fields;

      _lodash.default.map(_lodash.default.values(changedFields), function (item) {
        data[item.name] = item.value;
      });

      this.setState({
        data: _lodash.default.clone(data),
        fields: _lodash.default.assign({}, fields, changedFields)
      });
    }
  }, {
    key: "onChangeBank",
    value: function onChangeBank(bank) {
      if (bank) {
        var data = this.state.data;
        data.bankName = bank.name;
        this.setState({
          data: _objectSpread({}, data)
        });
      }
    }
  }, {
    key: "onChangeBankCountry",
    value: function onChangeBankCountry(bankCountry) {
      var data = this.state.data;
      data.bankCode = null;
      this.setState({
        data: _objectSpread({}, data)
      });
    }
  }, {
    key: "onChangeBankBranch",
    value: function onChangeBankBranch(branch) {
      // 支行改变时更新 bankBranchName 和 bankBranchNo
      var data = this.state.data;

      if (branch) {
        data.bankBranchName = branch.name;
        data.bankBranchNo = branch.branchNo;
      } else {
        data.bankBranchName = '';
        data.bankBranchNo = undefined;
      }

      this.setState({
        data: _objectSpread({}, data)
      });
    }
  }, {
    key: "render",
    value: function render() {
      var _this3 = this;

      var _this$state2 = this.state,
          data = _this$state2.data,
          fields = _this$state2.fields,
          loading = _this$state2.loading;
      var _this$props3 = this.props,
          isCompany = _this$props3.isCompany,
          showDescription = _this$props3.showDescription,
          showActive = _this$props3.showActive,
          showCurrency = _this$props3.showCurrency,
          currencyLabel = _this$props3.currencyLabel,
          fetchCities = _this$props3.fetchCities,
          cities = _this$props3.cities,
          currencys = _this$props3.currencys,
          canAddBranch = _this$props3.canAddBranch,
          fetchBanks = _this$props3.fetchBanks,
          fetchCountryList = _this$props3.fetchCountryList,
          countryList = _this$props3.countryList,
          banks = _this$props3.banks,
          fetchBankBranches = _this$props3.fetchBankBranches,
          fetchCertificationTypes = _this$props3.fetchCertificationTypes,
          getBankname = _this$props3.getBankname,
          extra = _this$props3.extra,
          extraName = _this$props3.extraName,
          certificateNoRequired = _this$props3.certificateNoRequired,
          paymentTypes = _this$props3.paymentTypes,
          autoRequired = _this$props3.autoRequired,
          fetchEntities = _this$props3.fetchEntities,
          modalManager = _this$props3.modalManager,
          alertMsg = _this$props3.alertMsg,
          isAutomatic = _this$props3.isAutomatic,
          codeAndRange = _this$props3.codeAndRange,
          showExtraCurrency = _this$props3.showExtraCurrency,
          _this$props3$needCoun = _this$props3.needCountry,
          needCountry = _this$props3$needCoun === void 0 ? true : _this$props3$needCoun,
          chooseCurrency = _this$props3.chooseCurrency,
          newPaymentModal = _this$props3.newPaymentModal,
          accountType = _this$props3.accountType,
          fetchItemList = _this$props3.fetchItemList,
          resprops = (0, _objectWithoutProperties2.default)(_this$props3, _excluded);
      return /*#__PURE__*/_react.default.createElement(_modal.default, (0, _extends2.default)({
        onOk: this.submit,
        destroyOnClose: true,
        confirmLoading: loading,
        maskClosable: false,
        keyboard: false,
        visible: true,
        cancelButtonProps: {
          type: 'info',
          size: 'large'
        },
        bodyStyle: {
          height: 500,
          overflow: 'auto'
        }
      }, resprops), data.paymentType === 'BANK' && /*#__PURE__*/_react.default.createElement(_alert.default, {
        style: {
          marginBottom: 10
        },
        message: alertMsg || _i18next.default.t('MK_PaymentAccountModal:alertMsg'),
        type: "info",
        showIcon: true
      }), newPaymentModal ? /*#__PURE__*/_react.default.createElement(_NewEditPaymentForm.default, {
        data: data,
        fields: fields,
        cities: cities,
        banks: banks,
        countryList: countryList,
        accountType: accountType,
        currencys: currencys,
        canAddBranch: canAddBranch,
        wrappedComponentRef: function wrappedComponentRef(ref) {
          _this3.formRef = ref;
        },
        codeAndRange: codeAndRange,
        certificateNoRequired: certificateNoRequired,
        extra: extra,
        extraName: extraName,
        isCompany: isCompany,
        isAutomatic: isAutomatic,
        fetchCities: fetchCities,
        fetchBanks: fetchBanks,
        fetchCountryList: fetchCountryList,
        paymentTypes: paymentTypes,
        autoRequired: autoRequired,
        modalManager: modalManager,
        fetchBankBranches: fetchBankBranches,
        fetchCertificationTypes: fetchCertificationTypes,
        fetchEntities: fetchEntities,
        fetchItemList: fetchItemList,
        getBankname: getBankname,
        showActive: showActive,
        currencyLabel: currencyLabel,
        chooseCurrency: chooseCurrency,
        onChangeBank: this.onChangeBank,
        onChangeBankBranch: this.onChangeBankBranch,
        onChangeBankCountry: this.onChangeBankCountry,
        onErrors: this.onErrors,
        onSubmit: this.onSubmit,
        onChange: this.onFieldChange
      }) : /*#__PURE__*/_react.default.createElement(_EditPaymentForm.default, {
        data: data,
        fields: fields,
        cities: cities,
        banks: banks,
        countryList: countryList,
        currencys: currencys,
        canAddBranch: canAddBranch,
        wrappedComponentRef: function wrappedComponentRef(ref) {
          _this3.formRef = ref;
        },
        codeAndRange: codeAndRange,
        needCountry: needCountry,
        showExtraCurrency: showExtraCurrency,
        certificateNoRequired: certificateNoRequired,
        extra: extra,
        extraName: extraName,
        isCompany: isCompany,
        isAutomatic: isAutomatic,
        fetchCities: fetchCities,
        fetchBanks: fetchBanks,
        fetchCountryList: fetchCountryList,
        paymentTypes: paymentTypes,
        autoRequired: autoRequired,
        modalManager: modalManager,
        fetchBankBranches: fetchBankBranches,
        fetchCertificationTypes: fetchCertificationTypes,
        fetchEntities: fetchEntities,
        getBankname: getBankname,
        showDescription: showDescription,
        showActive: showActive,
        showCurrency: showCurrency,
        currencyLabel: currencyLabel,
        chooseCurrency: chooseCurrency,
        onChangeBank: this.onChangeBank,
        onChangeBankBranch: this.onChangeBankBranch,
        onErrors: this.onErrors,
        onSubmit: this.onSubmit,
        onChange: this.onFieldChange
      }));
    }
  }]);
  return PaymentAccountModal;
}(_react.Component);

PaymentAccountModal.defaultProps = {
  okText: _i18next.default.t('MK_Global:ok'),
  paymentTypes: []
};
var _default = PaymentAccountModal;
exports.default = _default;