@zeniai/client-epic-state 4.11.37 → 4.11.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,9 +7,9 @@ const mapCardPaymentPayloadToCardPayment = (payload) => ({
7
7
  brand: payload.brand,
8
8
  expiryMonth: payload.expiry_month,
9
9
  expiryYear: payload.expiry_year,
10
- firstName: payload.first_name,
10
+ firstName: payload.first_name.trim(),
11
11
  last4: payload.last4,
12
- lastName: payload.last_name,
12
+ lastName: payload.last_name.trim(),
13
13
  maskedNumber: payload.masked_number,
14
14
  });
15
15
  exports.mapCardPaymentPayloadToCardPayment = mapCardPaymentPayloadToCardPayment;
@@ -8,7 +8,7 @@ const chargeCard_1 = require("./chargeCard");
8
8
  const mapChargeCardPayloadToChargeCard = (payload) => ({
9
9
  id: payload.card_id,
10
10
  type: (0, chargeCard_1.toCardType)(payload.card_type),
11
- cardName: payload.card_name,
11
+ cardName: payload.card_name.trim(),
12
12
  limit: (0, amount_1.toAmount)(payload.credit_limit, payload.currency_code, payload.currency_symbol),
13
13
  balance: (0, amount_1.toAmount)(payload.balance_amount, payload.currency_code, payload.currency_symbol),
14
14
  hold: (0, amount_1.toAmount)(payload.hold_amount, payload.currency_code, payload.currency_symbol),
@@ -17,7 +17,7 @@ const toCompanyInfo = (payload, companyIdTenantIdMapping, companyInStore) => {
17
17
  ? (0, zeniDayJS_1.date)(payload.book_close_date)
18
18
  : undefined,
19
19
  companyId: payload.company_id,
20
- tenantId: companyIdTenantIdMapping != null
20
+ tenantId: (companyIdTenantIdMapping === null || companyIdTenantIdMapping === void 0 ? void 0 : companyIdTenantIdMapping[payload.company_id]) != null
21
21
  ? companyIdTenantIdMapping[payload.company_id]
22
22
  : companyInStore === null || companyInStore === void 0 ? void 0 : companyInStore.companyInfo.tenantId,
23
23
  createTime: (0, zeniDayJS_1.date)(payload.create_time),
@@ -36,8 +36,12 @@ const company = (0, toolkit_1.createSlice)({
36
36
  }
37
37
  else if (companyInStore != null &&
38
38
  (newCompany.companyInfo.updateTime.isAfter(companyInStore.companyInfo.updateTime) ||
39
- !(0, isEqual_1.default)(newCompany.parentSubsidiaryInfo, companyInStore.parentSubsidiaryInfo))) {
40
- // Note: If company data already exists, save it iff the new data is the latest one or parent subsidiary relationship has changed
39
+ !(0, isEqual_1.default)(newCompany.parentSubsidiaryInfo, companyInStore.parentSubsidiaryInfo) ||
40
+ newCompany.companyInfo.tenantId !==
41
+ companyInStore.companyInfo.tenantId)) {
42
+ // Note: If company data already exists, save it if the new data is the latest one
43
+ // or parent subsidiary relationship has changed
44
+ // or tenant id has changed
41
45
  draft.companiesById[companyPayload.company_id] = newCompany;
42
46
  }
43
47
  });
@@ -22,8 +22,8 @@ const toCustomerBasePayload = (customer) => {
22
22
  };
23
23
  exports.toCustomerBasePayload = toCustomerBasePayload;
24
24
  const toCustomer = (payload, parseOutParentName = false) => {
25
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
26
- return (Object.assign(Object.assign({}, (0, exports.toCustomerBase)(payload, parseOutParentName)), { addressId: (_a = payload.address_id) !== null && _a !== void 0 ? _a : undefined, lastName: (_b = payload.last_name) !== null && _b !== void 0 ? _b : undefined, paymentMethodId: (_c = payload.payment_method_id) !== null && _c !== void 0 ? _c : undefined, suffix: (_d = payload.suffix) !== null && _d !== void 0 ? _d : undefined, createTime: payload.create_time != null ? (0, zeniDayJS_1.date)(payload.create_time) : undefined, qboCreateTime: payload.qbo_create_time != null ? (0, zeniDayJS_1.date)(payload.qbo_create_time) : undefined, nameOnCheck: (_e = payload.name_on_check) !== null && _e !== void 0 ? _e : undefined, firstName: (_f = payload.first_name) !== null && _f !== void 0 ? _f : undefined, middleName: (_g = payload.middle_name) !== null && _g !== void 0 ? _g : undefined, contacts: (_h = payload.contacts) !== null && _h !== void 0 ? _h : undefined, termId: (_j = payload.term_id) !== null && _j !== void 0 ? _j : undefined, note: (_k = payload.note) !== null && _k !== void 0 ? _k : undefined, syncToken: payload.sync_token, email: (_l = payload.email) !== null && _l !== void 0 ? _l : undefined, websiteUrl: (_m = payload.website_url) !== null && _m !== void 0 ? _m : undefined, parentCustomerId: (_o = payload.parent_customer_id) !== null && _o !== void 0 ? _o : undefined, qboParentCustomerId: (_p = payload.qbo_parent_customer_id) !== null && _p !== void 0 ? _p : undefined, isBillWithParent: Boolean(payload.is_bill_with_parent), updateTime: payload.update_time != null ? (0, zeniDayJS_1.date)(payload.update_time) : undefined, accountId: (_q = payload.account_id) !== null && _q !== void 0 ? _q : undefined, phone: (_r = payload.phone) !== null && _r !== void 0 ? _r : undefined, bankAccountIds: (_s = payload.bank_account_ids) !== null && _s !== void 0 ? _s : undefined, balance: (_t = payload.balance) !== null && _t !== void 0 ? _t : undefined, isDeleted: Boolean(payload.is_deleted), tenantId: payload.tenant_id, title: (_u = payload.title) !== null && _u !== void 0 ? _u : undefined, isSubCustomer: Boolean(payload.is_sub_customer), isTaxable: Boolean(payload.is_taxable), shippingAddressId: (_v = payload.shipping_address_id) !== null && _v !== void 0 ? _v : undefined, billingAddressId: (_w = payload.billing_address_id) !== null && _w !== void 0 ? _w : undefined, currencySymbol: (_x = payload.currency_symbol) !== null && _x !== void 0 ? _x : undefined, qboUpdateTime: payload.qbo_update_time != null ? (0, zeniDayJS_1.date)(payload.qbo_update_time) : undefined, accountingClassId: (_y = payload.accounting_class_id) !== null && _y !== void 0 ? _y : undefined, currencyCode: (_z = payload.currency_code) !== null && _z !== void 0 ? _z : undefined }));
25
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3;
26
+ return (Object.assign(Object.assign({}, (0, exports.toCustomerBase)(payload, parseOutParentName)), { addressId: (_a = payload.address_id) !== null && _a !== void 0 ? _a : undefined, lastName: (_c = (_b = payload.last_name) === null || _b === void 0 ? void 0 : _b.trim()) !== null && _c !== void 0 ? _c : undefined, paymentMethodId: (_d = payload.payment_method_id) !== null && _d !== void 0 ? _d : undefined, suffix: (_e = payload.suffix) !== null && _e !== void 0 ? _e : undefined, createTime: payload.create_time != null ? (0, zeniDayJS_1.date)(payload.create_time) : undefined, qboCreateTime: payload.qbo_create_time != null ? (0, zeniDayJS_1.date)(payload.qbo_create_time) : undefined, nameOnCheck: (_f = payload.name_on_check) !== null && _f !== void 0 ? _f : undefined, firstName: (_h = (_g = payload.first_name) === null || _g === void 0 ? void 0 : _g.trim()) !== null && _h !== void 0 ? _h : undefined, middleName: (_k = (_j = payload.middle_name) === null || _j === void 0 ? void 0 : _j.trim()) !== null && _k !== void 0 ? _k : undefined, contacts: (_l = payload.contacts) !== null && _l !== void 0 ? _l : undefined, termId: (_m = payload.term_id) !== null && _m !== void 0 ? _m : undefined, note: (_o = payload.note) !== null && _o !== void 0 ? _o : undefined, syncToken: payload.sync_token, email: (_q = (_p = payload.email) === null || _p === void 0 ? void 0 : _p.trim()) !== null && _q !== void 0 ? _q : undefined, websiteUrl: (_r = payload.website_url) !== null && _r !== void 0 ? _r : undefined, parentCustomerId: (_s = payload.parent_customer_id) !== null && _s !== void 0 ? _s : undefined, qboParentCustomerId: (_t = payload.qbo_parent_customer_id) !== null && _t !== void 0 ? _t : undefined, isBillWithParent: Boolean(payload.is_bill_with_parent), updateTime: payload.update_time != null ? (0, zeniDayJS_1.date)(payload.update_time) : undefined, accountId: (_u = payload.account_id) !== null && _u !== void 0 ? _u : undefined, phone: (_v = payload.phone) !== null && _v !== void 0 ? _v : undefined, bankAccountIds: (_w = payload.bank_account_ids) !== null && _w !== void 0 ? _w : undefined, balance: (_x = payload.balance) !== null && _x !== void 0 ? _x : undefined, isDeleted: Boolean(payload.is_deleted), tenantId: payload.tenant_id, title: (_y = payload.title) !== null && _y !== void 0 ? _y : undefined, isSubCustomer: Boolean(payload.is_sub_customer), isTaxable: Boolean(payload.is_taxable), shippingAddressId: (_z = payload.shipping_address_id) !== null && _z !== void 0 ? _z : undefined, billingAddressId: (_0 = payload.billing_address_id) !== null && _0 !== void 0 ? _0 : undefined, currencySymbol: (_1 = payload.currency_symbol) !== null && _1 !== void 0 ? _1 : undefined, qboUpdateTime: payload.qbo_update_time != null ? (0, zeniDayJS_1.date)(payload.qbo_update_time) : undefined, accountingClassId: (_2 = payload.accounting_class_id) !== null && _2 !== void 0 ? _2 : undefined, currencyCode: (_3 = payload.currency_code) !== null && _3 !== void 0 ? _3 : undefined }));
27
27
  };
28
28
  exports.toCustomer = toCustomer;
29
29
  /**
@@ -404,8 +404,8 @@ function mapLoggedInUserPayloadToLoggedInUser(payload, zeniSessionId) {
404
404
  return {
405
405
  userId: payload.user_id,
406
406
  zeniSessionId: zeniSessionId,
407
- firstName: payload.first_name,
408
- lastName: payload.last_name,
407
+ firstName: payload.first_name.trim(),
408
+ lastName: payload.last_name.trim(),
409
409
  photo: (0, urlPayload_1.toURL)(payload.photo),
410
410
  };
411
411
  }
@@ -50,17 +50,17 @@ exports.default = user.reducer;
50
50
  * Helper functions.
51
51
  */
52
52
  function mapUserPayloadToUser(payload) {
53
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
53
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
54
54
  return {
55
55
  userId: payload.user_id,
56
56
  email: payload.email,
57
- firstName: (_a = payload.first_name) !== null && _a !== void 0 ? _a : '',
58
- lastName: (_b = payload.last_name) !== null && _b !== void 0 ? _b : '',
59
- middleName: (_c = payload.middle_name) !== null && _c !== void 0 ? _c : '',
57
+ firstName: (_b = (_a = payload.first_name) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : '',
58
+ lastName: (_d = (_c = payload.last_name) === null || _c === void 0 ? void 0 : _c.trim()) !== null && _d !== void 0 ? _d : '',
59
+ middleName: (_f = (_e = payload.middle_name) === null || _e === void 0 ? void 0 : _e.trim()) !== null && _f !== void 0 ? _f : '',
60
60
  birthday: payload.birthday != null ? (0, zeniDayJS_1.date)(payload.birthday) : undefined,
61
- countryCode: (_d = payload.country_code) !== null && _d !== void 0 ? _d : undefined,
62
- phone: (_e = payload.phone) !== null && _e !== void 0 ? _e : undefined,
63
- ssn: (_f = payload.ssn) !== null && _f !== void 0 ? _f : undefined,
61
+ countryCode: (_g = payload.country_code) !== null && _g !== void 0 ? _g : undefined,
62
+ phone: (_h = payload.phone) !== null && _h !== void 0 ? _h : undefined,
63
+ ssn: (_j = payload.ssn) !== null && _j !== void 0 ? _j : undefined,
64
64
  photo: payload.photo != null ? (0, exports.toPhotoURL)(payload.photo) : undefined,
65
65
  lastSeenTime: payload.last_seen_time != null ? (0, zeniDayJS_1.date)(payload.last_seen_time) : undefined,
66
66
  createTime: payload.create_time != null ? (0, zeniDayJS_1.date)(payload.create_time) : undefined,
@@ -70,13 +70,13 @@ function mapUserPayloadToUser(payload) {
70
70
  * it should be a calculated from createTime or updateTime.
71
71
  * Lets do it when we enable support in platform.
72
72
  */
73
- syncToken: (_g = payload.sync_token) !== null && _g !== void 0 ? _g : undefined,
74
- roleAtCompany: (_h = payload.role_at_company) !== null && _h !== void 0 ? _h : undefined,
75
- gender: (_j = payload.gender) !== null && _j !== void 0 ? _j : undefined,
73
+ syncToken: (_k = payload.sync_token) !== null && _k !== void 0 ? _k : undefined,
74
+ roleAtCompany: (_l = payload.role_at_company) !== null && _l !== void 0 ? _l : undefined,
75
+ gender: (_m = payload.gender) !== null && _m !== void 0 ? _m : undefined,
76
76
  isPotentialFraud: payload.is_potential_fraud,
77
77
  isDeleted: payload.is_deleted,
78
- addressId: (_k = payload.address_id) !== null && _k !== void 0 ? _k : undefined,
79
- companyId: (_l = payload.company_id) !== null && _l !== void 0 ? _l : undefined,
78
+ addressId: (_o = payload.address_id) !== null && _o !== void 0 ? _o : undefined,
79
+ companyId: (_p = payload.company_id) !== null && _p !== void 0 ? _p : undefined,
80
80
  isPhoneVerified: payload.is_phone_verified,
81
81
  };
82
82
  }
@@ -31,8 +31,13 @@ const getAllZeniUsersFromState = (state) => {
31
31
  exports.getAllZeniUsersFromState = getAllZeniUsersFromState;
32
32
  const getUserName = (user) => {
33
33
  if (user != null) {
34
- if (user.firstName || user.lastName) {
35
- return `${user.firstName} ${user.lastName}`;
34
+ const firstName = user.firstName;
35
+ const lastName = user.lastName;
36
+ if (Boolean(firstName) && Boolean(lastName)) {
37
+ return `${firstName} ${lastName}`;
38
+ }
39
+ else if (Boolean(firstName) || Boolean(lastName)) {
40
+ return firstName || lastName;
36
41
  }
37
42
  else {
38
43
  return user.email;
@@ -28,12 +28,12 @@ const toVendorBasePayload = (tranVendor, vendorUpdates) => {
28
28
  };
29
29
  exports.toVendorBasePayload = toVendorBasePayload;
30
30
  const mapVendorPayloadToVendor = (payload) => {
31
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5;
32
- return Object.assign(Object.assign({}, (0, exports.mapVendorBasePayloadToVendorBase)(payload)), { qboId: payload.qbo_id, title: (_a = payload.title) !== null && _a !== void 0 ? _a : '', suffix: (_b = payload.suffix) !== null && _b !== void 0 ? _b : '', firstName: (_c = payload.first_name) !== null && _c !== void 0 ? _c : '', middleName: (_d = payload.middle_name) !== null && _d !== void 0 ? _d : '', lastName: (_e = payload.last_name) !== null && _e !== void 0 ? _e : '', vendorType: (_f = payload.vendor_type) !== null && _f !== void 0 ? _f : '', isDeleted: (_g = payload.is_deleted) !== null && _g !== void 0 ? _g : false, createTime: payload.create_time != null ? (0, zeniDayJS_1.date)(payload.create_time) : (0, zeniDayJS_1.dateNow)(), updateTime: payload.update_time != null ? (0, zeniDayJS_1.date)(payload.update_time) : (0, zeniDayJS_1.dateNow)(), syncToken: (_h = payload.sync_token) !== null && _h !== void 0 ? _h : '', email: (_j = payload.email) !== null && _j !== void 0 ? _j : '', phone: (_k = payload.phone) !== null && _k !== void 0 ? _k : '', websiteUrl: (_l = payload.website_url) !== null && _l !== void 0 ? _l : '', currencyCode: payload.currency_code, currencySymbol: payload.currency_symbol, vendorCurrencyCode: (_m = payload.vendor_currency_code) !== null && _m !== void 0 ? _m : payload.currency_code, vendorCurrencySymbol: (_o = payload.vendor_currency_symbol) !== null && _o !== void 0 ? _o : payload.currency_symbol, countryCode: (_p = payload.country_code) !== null && _p !== void 0 ? _p : undefined, accountId: (_r = (_q = payload.account) === null || _q === void 0 ? void 0 : _q.account_id) !== null && _r !== void 0 ? _r : undefined, classId: (_t = (_s = payload.accounting_class) === null || _s === void 0 ? void 0 : _s.accounting_class_id) !== null && _t !== void 0 ? _t : undefined, contactIds: (_v = (_u = payload.contacts) === null || _u === void 0 ? void 0 : _u.map((contact) => contact.contact_id)) !== null && _v !== void 0 ? _v : [], billingAddressId: payload.billing_address != null
31
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9;
32
+ return Object.assign(Object.assign({}, (0, exports.mapVendorBasePayloadToVendorBase)(payload)), { qboId: payload.qbo_id, title: (_a = payload.title) !== null && _a !== void 0 ? _a : '', suffix: (_b = payload.suffix) !== null && _b !== void 0 ? _b : '', firstName: (_d = (_c = payload.first_name) === null || _c === void 0 ? void 0 : _c.trim()) !== null && _d !== void 0 ? _d : '', middleName: (_f = (_e = payload.middle_name) === null || _e === void 0 ? void 0 : _e.trim()) !== null && _f !== void 0 ? _f : '', lastName: (_h = (_g = payload.last_name) === null || _g === void 0 ? void 0 : _g.trim()) !== null && _h !== void 0 ? _h : '', vendorType: (_j = payload.vendor_type) !== null && _j !== void 0 ? _j : '', isDeleted: (_k = payload.is_deleted) !== null && _k !== void 0 ? _k : false, createTime: payload.create_time != null ? (0, zeniDayJS_1.date)(payload.create_time) : (0, zeniDayJS_1.dateNow)(), updateTime: payload.update_time != null ? (0, zeniDayJS_1.date)(payload.update_time) : (0, zeniDayJS_1.dateNow)(), syncToken: (_l = payload.sync_token) !== null && _l !== void 0 ? _l : '', email: (_o = (_m = payload.email) === null || _m === void 0 ? void 0 : _m.trim()) !== null && _o !== void 0 ? _o : '', phone: (_p = payload.phone) !== null && _p !== void 0 ? _p : '', websiteUrl: (_q = payload.website_url) !== null && _q !== void 0 ? _q : '', currencyCode: payload.currency_code, currencySymbol: payload.currency_symbol, vendorCurrencyCode: (_r = payload.vendor_currency_code) !== null && _r !== void 0 ? _r : payload.currency_code, vendorCurrencySymbol: (_s = payload.vendor_currency_symbol) !== null && _s !== void 0 ? _s : payload.currency_symbol, countryCode: (_t = payload.country_code) !== null && _t !== void 0 ? _t : undefined, accountId: (_v = (_u = payload.account) === null || _u === void 0 ? void 0 : _u.account_id) !== null && _v !== void 0 ? _v : undefined, classId: (_x = (_w = payload.accounting_class) === null || _w === void 0 ? void 0 : _w.accounting_class_id) !== null && _x !== void 0 ? _x : undefined, contactIds: (_z = (_y = payload.contacts) === null || _y === void 0 ? void 0 : _y.map((contact) => contact.contact_id)) !== null && _z !== void 0 ? _z : [], billingAddressId: payload.billing_address != null
33
33
  ? payload.billing_address.address_id
34
34
  : undefined, addressId: payload.address != null ? payload.address.address_id : undefined, shippingAddressId: payload.shipping_address != null
35
35
  ? payload.shipping_address.address_id
36
- : undefined, bankAccountIds: (_x = (_w = payload.bank_accounts) === null || _w === void 0 ? void 0 : _w.map((bankAcc) => bankAcc.bank_account_id)) !== null && _x !== void 0 ? _x : [], paymentInstrumentIds: (_z = (_y = payload.payment_instruments) === null || _y === void 0 ? void 0 : _y.map((piAcc) => piAcc.zeni_payment_instrument_id)) !== null && _z !== void 0 ? _z : [], ownerId: (_1 = (_0 = payload.owner) === null || _0 === void 0 ? void 0 : _0.user_id) !== null && _1 !== void 0 ? _1 : undefined, balance: (_2 = payload.balance) !== null && _2 !== void 0 ? _2 : 0, matchScore: ((_3 = payload.match_score) === null || _3 === void 0 ? void 0 : _3.value) != null ? payload.match_score.value : 0, isVendor1099: (_4 = payload.is_vendor_1099) !== null && _4 !== void 0 ? _4 : false, documentIds: (_5 = payload.document_ids) !== null && _5 !== void 0 ? _5 : [], last30DaysSpend: payload.last_30_days_spend, last90DaysSpend: payload.last_90_days_spend, yearToDateSpend: payload.year_to_date_spend, lastMonthSpend: payload.last_month_spend, last3MonthsSpend: payload.last_3_months_spend, last6MonthsSpend: payload.last_6_months_spend, last12MonthsSpend: payload.last_12_months_spend, previousYearSpend: payload.previous_year_spend, recommendations: payload.recommendation != null && payload.recommendation.length > 0
36
+ : undefined, bankAccountIds: (_1 = (_0 = payload.bank_accounts) === null || _0 === void 0 ? void 0 : _0.map((bankAcc) => bankAcc.bank_account_id)) !== null && _1 !== void 0 ? _1 : [], paymentInstrumentIds: (_3 = (_2 = payload.payment_instruments) === null || _2 === void 0 ? void 0 : _2.map((piAcc) => piAcc.zeni_payment_instrument_id)) !== null && _3 !== void 0 ? _3 : [], ownerId: (_5 = (_4 = payload.owner) === null || _4 === void 0 ? void 0 : _4.user_id) !== null && _5 !== void 0 ? _5 : undefined, balance: (_6 = payload.balance) !== null && _6 !== void 0 ? _6 : 0, matchScore: ((_7 = payload.match_score) === null || _7 === void 0 ? void 0 : _7.value) != null ? payload.match_score.value : 0, isVendor1099: (_8 = payload.is_vendor_1099) !== null && _8 !== void 0 ? _8 : false, documentIds: (_9 = payload.document_ids) !== null && _9 !== void 0 ? _9 : [], last30DaysSpend: payload.last_30_days_spend, last90DaysSpend: payload.last_90_days_spend, yearToDateSpend: payload.year_to_date_spend, lastMonthSpend: payload.last_month_spend, last3MonthsSpend: payload.last_3_months_spend, last6MonthsSpend: payload.last_6_months_spend, last12MonthsSpend: payload.last_12_months_spend, previousYearSpend: payload.previous_year_spend, recommendations: payload.recommendation != null && payload.recommendation.length > 0
37
37
  ? (0, transactionPayload_1.transformRecommendation)(payload.recommendation[0]) // In this case, there will be only one recommendation item since this is entity recommendation payload.
38
38
  : [], preferredInternationalTransferFeeBearerPaymentMethod: payload.preferred_international_transfer_fee_bearer_payment_method != null
39
39
  ? (0, billTransactionState_1.toInternationalTransferFeeBearerPaymentMethod)(payload.preferred_international_transfer_fee_bearer_payment_method)
@@ -42,9 +42,9 @@ const createCompanyOfficersEpic = (actions$, state$, zeniAPI) => actions$.pipe((
42
42
  (0, userRoleReducer_1.updateUserRoles)((_f = (_e = response.data) === null || _e === void 0 ? void 0 : _e.user_roles) !== null && _f !== void 0 ? _f : []),
43
43
  ];
44
44
  const officersData = officers.map((officer) => {
45
- var _a, _b, _c;
45
+ var _a, _b, _c, _d, _e;
46
46
  const user = users.find((user) => user.email === officer.email);
47
- return Object.assign(Object.assign({}, officer), { firstName: (_a = user === null || user === void 0 ? void 0 : user.first_name) !== null && _a !== void 0 ? _a : officer.firstName, lastName: (_b = user === null || user === void 0 ? void 0 : user.last_name) !== null && _b !== void 0 ? _b : officer.lastName, phone: (_c = user === null || user === void 0 ? void 0 : user.phone) !== null && _c !== void 0 ? _c : '', userId: user === null || user === void 0 ? void 0 : user.user_id });
47
+ return Object.assign(Object.assign({}, officer), { firstName: (_b = (_a = user === null || user === void 0 ? void 0 : user.first_name) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : officer.firstName, lastName: (_d = (_c = user === null || user === void 0 ? void 0 : user.last_name) === null || _c === void 0 ? void 0 : _c.trim()) !== null && _d !== void 0 ? _d : officer.lastName, phone: (_e = user === null || user === void 0 ? void 0 : user.phone) !== null && _e !== void 0 ? _e : '', userId: user === null || user === void 0 ? void 0 : user.user_id });
48
48
  });
49
49
  actions.push((0, companyViewReducer_1.companyPassportSaveDataInLocalStore)({
50
50
  officers: officersData,
@@ -39,7 +39,7 @@ const updatePrimaryContactEpic = (actions$, state$, zeniAPI) => actions$.pipe((0
39
39
  : // User PUT call is on individual user so User will be updated across tenants wherever its present
40
40
  zeniAPI.putAndGetJSON(`${zeniAPI.apiEndPoints.tenantMicroServiceBaseUrl}/1.0/users/${userId}`, payload);
41
41
  return userAPI.pipe((0, operators_1.mergeMap)((response) => {
42
- var _a, _b, _c, _d, _e, _f, _g, _h;
42
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
43
43
  const users = (_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.users) !== null && _b !== void 0 ? _b : [];
44
44
  if ((0, responsePayload_1.isSuccessResponse)(response) && users.length > 0) {
45
45
  const actions = [(0, userReducer_1.updateAllUsers)({ users })];
@@ -48,7 +48,7 @@ const updatePrimaryContactEpic = (actions$, state$, zeniAPI) => actions$.pipe((0
48
48
  payload: (_d = (_c = response.data) === null || _c === void 0 ? void 0 : _c.companies) !== null && _d !== void 0 ? _d : [],
49
49
  schema: {},
50
50
  }), (0, userRoleReducer_1.updateUserRoles)((_f = (_e = response.data) === null || _e === void 0 ? void 0 : _e.user_roles) !== null && _f !== void 0 ? _f : []), (0, companyViewReducer_1.companyPassportSaveDataInLocalStore)({
51
- primaryContact: Object.assign(Object.assign({}, action.payload.primaryContact), { firstName: (_g = users[0].first_name) !== null && _g !== void 0 ? _g : action.payload.primaryContact.firstName, lastName: (_h = users[0].last_name) !== null && _h !== void 0 ? _h : action.payload.primaryContact.lastName, userId: users[0].user_id }),
51
+ primaryContact: Object.assign(Object.assign({}, action.payload.primaryContact), { firstName: (_h = (_g = users[0].first_name) === null || _g === void 0 ? void 0 : _g.trim()) !== null && _h !== void 0 ? _h : action.payload.primaryContact.firstName, lastName: (_k = (_j = users[0].last_name) === null || _j === void 0 ? void 0 : _j.trim()) !== null && _k !== void 0 ? _k : action.payload.primaryContact.lastName, userId: users[0].user_id }),
52
52
  }));
53
53
  }
54
54
  actions.push((0, companyViewReducer_1.companyPassportUpdatePrimaryContactSuccess)(companyId));
@@ -14,6 +14,7 @@ const orderBy_1 = __importDefault(require("lodash/orderBy"));
14
14
  const zeniDayJS_1 = require("../../../zeniDayJS");
15
15
  const customerSatisfactionState_1 = require("../../../entity/customerSatisfaction/customerSatisfactionState");
16
16
  const cockpitHelpers_1 = require("../helpers/cockpitHelpers");
17
+ const sortOrderPayload_1 = require("../../../commonPayloadTypes/sortOrderPayload");
17
18
  const getManagementViewFromCompanyIds = (rootState, companyIds, fetchState) => {
18
19
  const uiState = rootState.companyViewState.managementView.uiState;
19
20
  const { sortKey, sortOrder, filterText, filters } = uiState;
@@ -334,12 +335,27 @@ const sortAndFilterCompanies = (sortKey, sortOrder, filterText, companies, userS
334
335
  break;
335
336
  }
336
337
  });
338
+ const sortOrderKey = (0, sortOrderPayload_1.getSortOrder)(sortOrder);
339
+ const sortOrderKeys = [];
340
+ if (sortKey === 'plans') {
341
+ let maxPlansCount = 0;
342
+ companiesWithSortKeyValue.forEach((company) => {
343
+ var _a;
344
+ maxPlansCount = Math.max(maxPlansCount, (_a = (0, exports.getPlanList)(company)) === null || _a === void 0 ? void 0 : _a.length);
345
+ });
346
+ for (let i = 0; i < maxPlansCount; i++) {
347
+ sortOrderKeys.push(sortOrderKey);
348
+ }
349
+ }
350
+ if (sortOrderKeys.length === 0) {
351
+ sortOrderKeys.push(sortOrderKey, sortOrderKey);
352
+ }
337
353
  const sortedCompaniesWithSortKeyValue = (0, orderBy_1.default)(companiesWithSortKeyValue, [
338
354
  (company) => {
339
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
355
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
340
356
  let primarySortValue;
341
- let secondarySortValue;
342
- let isSecondarySortApplicable;
357
+ let multiSortValues = [];
358
+ let isMultiSortApplicable = false;
343
359
  const managegmentInfo = company.company.company.managegmentInfo;
344
360
  switch (sortKey) {
345
361
  case 'companyName':
@@ -350,10 +366,11 @@ const sortAndFilterCompanies = (sortKey, sortOrder, filterText, companies, userS
350
366
  primarySortValue = (_a = managegmentInfo.companyGroupId) === null || _a === void 0 ? void 0 : _a.toLowerCase();
351
367
  break;
352
368
  case 'plans':
353
- primarySortValue = (_b = (0, exports.getPlanList)(company)[0]) === null || _b === void 0 ? void 0 : _b.label;
369
+ isMultiSortApplicable = true;
370
+ multiSortValues = (0, exports.getPlanList)(company).map((plan) => plan === null || plan === void 0 ? void 0 : plan.zeniSku);
354
371
  break;
355
372
  case 'task':
356
- primarySortValue = (_c = company.taskSummary) === null || _c === void 0 ? void 0 : _c.count;
373
+ primarySortValue = (_b = company.taskSummary) === null || _b === void 0 ? void 0 : _b.count;
357
374
  break;
358
375
  case 'controller':
359
376
  primarySortValue = (0, userSelector_1.getUserNameById)(userState, managegmentInfo.controllerUserIds[0]).toLowerCase();
@@ -371,50 +388,53 @@ const sortAndFilterCompanies = (sortKey, sortOrder, filterText, companies, userS
371
388
  primarySortValue = (0, userSelector_1.getUserNameById)(userState, managegmentInfo.apAnalystUserIds[0]).toLowerCase();
372
389
  break;
373
390
  case 'reportSent':
374
- primarySortValue = ((_d = managegmentInfo.lastReportSentDate) !== null && _d !== void 0 ? _d : (0, zeniDayJS_1.date)('1970-01-01T00:00:00.000Z')).valueOf();
391
+ primarySortValue = ((_c = managegmentInfo.lastReportSentDate) !== null && _c !== void 0 ? _c : (0, zeniDayJS_1.date)('1970-01-01T00:00:00.000Z')).valueOf();
375
392
  break;
376
393
  case 'taxStatus':
377
- primarySortValue = (_e = managegmentInfo.taxStatusCode) === null || _e === void 0 ? void 0 : _e.toLowerCase();
394
+ primarySortValue = (_d = managegmentInfo.taxStatusCode) === null || _d === void 0 ? void 0 : _d.toLowerCase();
378
395
  break;
379
396
  case 'taxLead':
380
397
  primarySortValue = (0, userSelector_1.getUserNameById)(userState, managegmentInfo.taxLeadUserIds[0]).toLowerCase();
381
398
  break;
382
399
  case 'monthlyRecurringRevenue':
383
400
  primarySortValue =
384
- (_h = (_g = (_f = company.primarySubscription) === null || _f === void 0 ? void 0 : _f.summary) === null || _g === void 0 ? void 0 : _g.summary.monthlyRecurringRevenue.amount) !== null && _h !== void 0 ? _h : 0;
401
+ (_g = (_f = (_e = company.primarySubscription) === null || _e === void 0 ? void 0 : _e.summary) === null || _f === void 0 ? void 0 : _f.summary.monthlyRecurringRevenue.amount) !== null && _g !== void 0 ? _g : 0;
385
402
  break;
386
403
  case 'annualRecurringRevenue':
387
404
  primarySortValue =
388
- (_l = (_k = (_j = company.primarySubscription) === null || _j === void 0 ? void 0 : _j.summary) === null || _k === void 0 ? void 0 : _k.summary.annualRecurringRevenue.amount) !== null && _l !== void 0 ? _l : 0;
405
+ (_k = (_j = (_h = company.primarySubscription) === null || _h === void 0 ? void 0 : _h.summary) === null || _j === void 0 ? void 0 : _j.summary.annualRecurringRevenue.amount) !== null && _k !== void 0 ? _k : 0;
389
406
  break;
390
407
  case 'notes':
391
- primarySortValue = (_m = managegmentInfo.note) === null || _m === void 0 ? void 0 : _m.length;
408
+ primarySortValue = (_l = managegmentInfo.note) === null || _l === void 0 ? void 0 : _l.length;
392
409
  break;
393
410
  case 'satisfaction':
394
- isSecondarySortApplicable = true;
395
- primarySortValue =
396
- ((_o = managegmentInfo.customerSatisfaction) === null || _o === void 0 ? void 0 : _o.customerRating) != null
397
- ? customerSatisfactionState_1.customerRatingValues[managegmentInfo.customerSatisfaction.customerRating]
398
- : 0;
399
- secondarySortValue =
400
- ((_p = managegmentInfo.customerSatisfaction) === null || _p === void 0 ? void 0 : _p.teamRating) != null
401
- ? customerSatisfactionState_1.teamRatingValues[managegmentInfo.customerSatisfaction.teamRating]
402
- : 0;
411
+ isMultiSortApplicable = true;
412
+ multiSortValues.push(((_m = managegmentInfo.customerSatisfaction) === null || _m === void 0 ? void 0 : _m.customerRating) != null
413
+ ? customerSatisfactionState_1.customerRatingValues[managegmentInfo.customerSatisfaction.customerRating]
414
+ : 0);
415
+ multiSortValues.push(((_o = managegmentInfo.customerSatisfaction) === null || _o === void 0 ? void 0 : _o.teamRating) != null
416
+ ? customerSatisfactionState_1.teamRatingValues[managegmentInfo.customerSatisfaction.teamRating]
417
+ : 0);
403
418
  break;
404
419
  case 'bookCloseDate':
405
- primarySortValue = ((_q = company.company.company.companyInfo.bookCloseDate) !== null && _q !== void 0 ? _q : (0, zeniDayJS_1.date)('1970-01-01T00:00:00.000Z')).valueOf();
420
+ primarySortValue = ((_p = company.company.company.companyInfo.bookCloseDate) !== null && _p !== void 0 ? _p : (0, zeniDayJS_1.date)('1970-01-01T00:00:00.000Z')).valueOf();
406
421
  break;
407
422
  case 'status':
408
- default:
409
- isSecondarySortApplicable = true;
410
- primarySortValue = cockpitTypes_1.MANAGEMENT_STATUS_CODES.indexOf((_r = managegmentInfo.statusCode) === null || _r === void 0 ? void 0 : _r.toLowerCase());
411
- secondarySortValue = (_s = managegmentInfo.companyGroupId) === null || _s === void 0 ? void 0 : _s.toLowerCase();
423
+ default: {
424
+ isMultiSortApplicable = true;
425
+ let statusCode = '';
426
+ if (managegmentInfo.statusCode) {
427
+ statusCode = (0, cockpitTypes_1.toManagementStatusCodeType)(managegmentInfo.statusCode.toLowerCase());
428
+ }
429
+ multiSortValues.push(cockpitTypes_1.MANAGEMENT_STATUS_CODES.indexOf(statusCode));
430
+ multiSortValues.push((_q = managegmentInfo.companyGroupId) === null || _q === void 0 ? void 0 : _q.toLowerCase());
431
+ }
412
432
  }
413
- return isSecondarySortApplicable === true
414
- ? [primarySortValue, secondarySortValue]
433
+ return isMultiSortApplicable === true
434
+ ? multiSortValues
415
435
  : primarySortValue;
416
436
  },
417
- ], sortOrder === 'ascending' ? ['asc', 'asc'] : ['desc', 'desc']);
437
+ ], sortOrderKeys);
418
438
  return [...sortedCompaniesWithSortKeyValue, ...companiesWithNoSortKeyValue];
419
439
  };
420
440
  const getTotalRecurringRevenue = (companies) => companies.reduce((prev, curr) => {
@@ -98,6 +98,7 @@ const sendOnboardingCustomerViewInviteEpic = (actions$, _state$, zeniAPI) => act
98
98
  }));
99
99
  exports.sendOnboardingCustomerViewInviteEpic = sendOnboardingCustomerViewInviteEpic;
100
100
  const getUserNameForEmailSent = (onboardingInfo, users) => {
101
+ var _a, _b, _c, _d;
101
102
  const customerUserId = (onboardingInfo === null || onboardingInfo === void 0 ? void 0 : onboardingInfo.onboarding_customer_user_ids) != null &&
102
103
  onboardingInfo.onboarding_customer_user_ids.length > 0
103
104
  ? onboardingInfo.onboarding_customer_user_ids[0]
@@ -106,7 +107,14 @@ const getUserNameForEmailSent = (onboardingInfo, users) => {
106
107
  if (customerUserId != null) {
107
108
  const user = users.find((user) => user.user_id === customerUserId);
108
109
  if (user != null) {
109
- userName = `${user.first_name} ${user.last_name}`;
110
+ const firstName = (_b = (_a = user.first_name) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : '';
111
+ const lastName = (_d = (_c = user.last_name) === null || _c === void 0 ? void 0 : _c.trim()) !== null && _d !== void 0 ? _d : '';
112
+ if (Boolean(firstName) && Boolean(lastName)) {
113
+ userName = `${firstName} ${lastName}`;
114
+ }
115
+ else {
116
+ userName = firstName || lastName || '';
117
+ }
110
118
  }
111
119
  }
112
120
  return userName;
@@ -68,6 +68,7 @@ exports.getReviewCompanySelectorView = (0, toolkit_1.createSelector)((state) =>
68
68
  break;
69
69
  }
70
70
  });
71
+ const sortOrderValue = (0, sortOrderPayload_1.getSortOrder)(sortOrder);
71
72
  const sortedCompaniesWithSortKeyValue = (0, orderBy_1.default)(companiesWithSortKeyValues, (company) => {
72
73
  var _a;
73
74
  const warningCount = (0, exports.getAuditWarningsCount)(company);
@@ -113,7 +114,7 @@ exports.getReviewCompanySelectorView = (0, toolkit_1.createSelector)((state) =>
113
114
  return isSecondarySortApplicable === true
114
115
  ? [primarySortValue, secondarySortValue]
115
116
  : primarySortValue;
116
- }, (0, sortOrderPayload_1.getSortOrder)(sortOrder));
117
+ }, [sortOrderValue, sortOrderValue]);
117
118
  return {
118
119
  companies: [
119
120
  ...sortedCompaniesWithSortKeyValue,
@@ -13,6 +13,7 @@ import { RecurringBillConfig } from '../../../../entity/billPay/recurringBills/r
13
13
  import { BulkOperationType, BulkSelectExceptionInfoType } from '../billsBulkActionView/billsBulkActionViewState';
14
14
  export interface BillBulkSelectInfo {
15
15
  isSelectableForBulkAction: boolean;
16
+ isSelectableForBulkActionSelectAll: boolean;
16
17
  bulkSelectExceptionInfo?: BulkSelectExceptionInfoType;
17
18
  }
18
19
  export interface BillListBulkActionInfo {
@@ -49,4 +50,4 @@ export declare const getBillList: (state: RootState, currentTimePeriod: TimePeri
49
50
  export declare const getApproversOrRejectors: (billTransaction: BillTransaction, entityApprovalStatusState: EntityApprovalStatusState, userState: UserState) => Approvers;
50
51
  export declare const getBillListOnSort: (sortKey: BillPayViewSortKey, sortOrder: SortOrder, currentTab: BillTab, transactions: BillTransactionView[]) => BillTransactionView[];
51
52
  export declare const checkIfBulkActionAllowed: (selectedTab: BillTab, selectedSubTab: BillsSubTabType) => boolean;
52
- export declare const getAllowedBulkActions: (selectedTab: BillTab, selectedSubTab: BillsSubTabType, isAllAwaitingMyApproval: boolean, isFirstBillProcessing: boolean) => BulkOperationType[];
53
+ export declare const getAllowedBulkActions: (selectedTab: BillTab, selectedSubTab: BillsSubTabType, isAllAwaitingMyApproval: boolean, isFirstBillProcessing: boolean, isBookClosedForAnySelectedBill: boolean, isRecurringBillInBulkActionList: boolean) => BulkOperationType[];
@@ -100,21 +100,7 @@ const getBillList = (state, currentTimePeriod, isBulkActionFeatureEnabled) => {
100
100
  }
101
101
  break;
102
102
  }
103
- const bulkSubmissionFetchState = billsBulkActionViewState.bulkSubmissionFetchState.fetchState;
104
- let isRecurringBillInBulkActionList = false;
105
- let billListBulkActionInfo = {
106
- isBulkActionAllowed: false,
107
- billsSelectedForBulkAction: [],
108
- allowedBulkActions: [],
109
- bulkSubmissionFetchState,
110
- isRecurringBillInBulkActionList,
111
- };
112
- let firstBillInBulkList = undefined;
113
- const isBulkActionAllowed = isBulkActionFeatureEnabled
114
- ? (0, exports.checkIfBulkActionAllowed)(billListState.currentTab, billListState.currentSubTab)
115
- : false;
116
103
  let transactionsView = transactions.map((transaction) => {
117
- var _a, _b;
118
104
  let approvers = {
119
105
  users: [],
120
106
  attributes: [],
@@ -128,51 +114,10 @@ const getBillList = (state, currentTimePeriod, isBulkActionFeatureEnabled) => {
128
114
  recurringBillDetail = (0, get_1.default)(recurringBillState.recurringBillDetailByConfigId, transaction.recurringBillConfigId, undefined);
129
115
  }
130
116
  const recurringBillConfig = recurringBillDetail === null || recurringBillDetail === void 0 ? void 0 : recurringBillDetail.recurringBillConfig;
131
- let billBulkSelectInfo;
132
- if (isBulkActionAllowed) {
133
- const isProcessing = (0, helpers_1.isBillProcessing)((_a = transaction.bulkProcessingDetail) === null || _a === void 0 ? void 0 : _a.type);
134
- const isError = ((_b = transaction.bulkProcessingDetail) === null || _b === void 0 ? void 0 : _b.type) === 'error';
135
- const isBookClosedForBill = transaction.bookCloseDate != null &&
136
- transaction.date.isBefore(transaction.bookCloseDate);
137
- const { isSelectableForBulkAction, bulkSelectExceptionInfo } = isProcessing || isError
138
- ? {
139
- isSelectableForBulkAction: false,
140
- bulkSelectExceptionInfo: undefined,
141
- }
142
- : isBillSelectableForBulkAction(transaction, billListState.currentTab, isBookClosedForBill, firstBillInBulkList);
143
- if (isBulkActionAllowed &&
144
- billsBulkActionViewState.billsSelectedForBulkAction.includes(transaction.id)) {
145
- if (isRecurring) {
146
- isRecurringBillInBulkActionList = true;
147
- }
148
- }
149
- billBulkSelectInfo = {
150
- isSelectableForBulkAction,
151
- bulkSelectExceptionInfo,
152
- };
153
- }
154
117
  return Object.assign(Object.assign({}, transaction), { approvers,
155
118
  isRecurring,
156
- billBulkSelectInfo,
157
119
  recurringBillConfig });
158
120
  });
159
- if (isBulkActionAllowed) {
160
- const billsSelectedForBulkAction = billsBulkActionViewState.billsSelectedForBulkAction;
161
- firstBillInBulkList = (0, get_1.default)(billTransactionState.transactionById, billsSelectedForBulkAction[0], undefined);
162
- const allBulkBillsAwaitingMyApproval = (0, difference_1.default)(billsSelectedForBulkAction, pendingApprovalTransactionIDs)
163
- .length === 0;
164
- const allowedBulkActions = isBulkActionAllowed
165
- ? (0, exports.getAllowedBulkActions)(billListState.currentTab, billListState.currentSubTab, allBulkBillsAwaitingMyApproval, (firstBillInBulkList === null || firstBillInBulkList === void 0 ? void 0 : firstBillInBulkList.billPayInfo.billPaymentStatus.code) ===
166
- 'processing')
167
- : [];
168
- billListBulkActionInfo = {
169
- isBulkActionAllowed,
170
- billsSelectedForBulkAction,
171
- allowedBulkActions,
172
- bulkSubmissionFetchState,
173
- isRecurringBillInBulkActionList,
174
- };
175
- }
176
121
  transactionsView = (0, spendManagementFilterHelpers_1.applyAdvancedFiltersOnList)('bill_pay', transactionsView, billListState.filters);
177
122
  const TransactionsPendingForMyApprovalLength = pendingApprovalTransactionIDs.length;
178
123
  const fetchState = (_f = (_e = billListState.byBillListKey[key]) === null || _e === void 0 ? void 0 : _e.fetchState) !== null && _f !== void 0 ? _f : 'Not-Started';
@@ -195,6 +140,73 @@ const getBillList = (state, currentTimePeriod, isBulkActionFeatureEnabled) => {
195
140
  ((_c = transaction.documentId) === null || _c === void 0 ? void 0 : _c.toLowerCase().includes(loweredSearchText)) ===
196
141
  true);
197
142
  }));
143
+ //BulkActions
144
+ const bulkSubmissionFetchState = billsBulkActionViewState.bulkSubmissionFetchState.fetchState;
145
+ let isRecurringBillInBulkActionList = false;
146
+ let isBookClosedForAnySelectedBill = false;
147
+ let billListBulkActionInfo = {
148
+ isBulkActionAllowed: false,
149
+ billsSelectedForBulkAction: [],
150
+ allowedBulkActions: [],
151
+ bulkSubmissionFetchState,
152
+ isRecurringBillInBulkActionList,
153
+ };
154
+ const billsSelectedForBulkAction = billsBulkActionViewState.billsSelectedForBulkAction;
155
+ const firstBillInBulkList = (0, get_1.default)(billTransactionState.transactionById, billsSelectedForBulkAction[0], undefined);
156
+ const isBulkActionAllowed = isBulkActionFeatureEnabled
157
+ ? (0, exports.checkIfBulkActionAllowed)(billListState.currentTab, billListState.currentSubTab)
158
+ : false;
159
+ let firstSelectableBill = undefined;
160
+ if (isBulkActionAllowed) {
161
+ transactionsView = transactionsView.map((transaction) => {
162
+ var _a, _b;
163
+ let billBulkSelectInfo;
164
+ if (isBulkActionAllowed) {
165
+ const isProcessing = (0, helpers_1.isBillProcessing)((_a = transaction.bulkProcessingDetail) === null || _a === void 0 ? void 0 : _a.type);
166
+ const isError = ((_b = transaction.bulkProcessingDetail) === null || _b === void 0 ? void 0 : _b.type) === 'error';
167
+ const isBookClosedForBill = transaction.bookCloseDate != null &&
168
+ transaction.date.isBefore(transaction.bookCloseDate);
169
+ const { isSelectableForBulkAction, isSelectableForBulkActionSelectAll, bulkSelectExceptionInfo, } = isProcessing || isError
170
+ ? {
171
+ isSelectableForBulkAction: false,
172
+ isSelectableForBulkActionSelectAll: false,
173
+ bulkSelectExceptionInfo: undefined,
174
+ }
175
+ : isBillSelectableForBulkAction(transaction, billListState.currentTab, isBookClosedForBill, pendingApprovalTransactionIDs.includes(transaction.id), firstSelectableBill, firstBillInBulkList);
176
+ if (isBulkActionAllowed &&
177
+ billsBulkActionViewState.billsSelectedForBulkAction.includes(transaction.id)) {
178
+ if (transaction.isRecurring) {
179
+ isRecurringBillInBulkActionList = true;
180
+ }
181
+ if (isBookClosedForBill) {
182
+ isBookClosedForAnySelectedBill = true;
183
+ }
184
+ }
185
+ if (firstSelectableBill == null && isSelectableForBulkAction) {
186
+ firstSelectableBill = transaction;
187
+ }
188
+ billBulkSelectInfo = {
189
+ isSelectableForBulkAction,
190
+ isSelectableForBulkActionSelectAll,
191
+ bulkSelectExceptionInfo,
192
+ };
193
+ }
194
+ return Object.assign(Object.assign({}, transaction), { billBulkSelectInfo });
195
+ });
196
+ const allBulkBillsAwaitingMyApproval = (0, difference_1.default)(billsSelectedForBulkAction, pendingApprovalTransactionIDs)
197
+ .length === 0;
198
+ const allowedBulkActions = isBulkActionAllowed
199
+ ? (0, exports.getAllowedBulkActions)(billListState.currentTab, billListState.currentSubTab, allBulkBillsAwaitingMyApproval, (firstBillInBulkList === null || firstBillInBulkList === void 0 ? void 0 : firstBillInBulkList.billPayInfo.billPaymentStatus.code) ===
200
+ 'processing', isBookClosedForAnySelectedBill, isRecurringBillInBulkActionList)
201
+ : [];
202
+ billListBulkActionInfo = {
203
+ isBulkActionAllowed,
204
+ billsSelectedForBulkAction,
205
+ allowedBulkActions,
206
+ bulkSubmissionFetchState,
207
+ isRecurringBillInBulkActionList,
208
+ };
209
+ }
198
210
  const isDownloadEnabled = (0, spendManagementFilterHelpers_1.isBillListDownloadable)(state, currentTimePeriod);
199
211
  const billBulkSubmissionLimit = billPayConfigState.billBulkSubmissionLimit;
200
212
  return {
@@ -506,28 +518,66 @@ const checkIfBulkActionAllowed = (selectedTab, selectedSubTab) => {
506
518
  return true;
507
519
  };
508
520
  exports.checkIfBulkActionAllowed = checkIfBulkActionAllowed;
509
- const isBillSelectableForBulkAction = (bill, selectedTab, isBookClosedForBill, firstBillSelected) => {
521
+ const isBillSelectableForBulkAction = (bill, selectedTab, isBookClosedForBill, isAwaitingMyApproval, firstSelectableBill, firstBillSelected) => {
510
522
  const result = {
511
523
  isSelectableForBulkAction: true,
524
+ isSelectableForBulkActionSelectAll: true,
512
525
  bulkSelectExceptionInfo: undefined,
513
526
  };
514
- if (isBookClosedForBill && selectedTab !== 'draft') {
515
- return {
516
- isSelectableForBulkAction: false,
517
- bulkSelectExceptionInfo: 'bookCloseDateProcessing',
518
- };
527
+ if (isBookClosedForBill) {
528
+ if (selectedTab === 'scheduled' ||
529
+ (selectedTab === 'pending_approval' && !isAwaitingMyApproval)) {
530
+ return {
531
+ isSelectableForBulkAction: false,
532
+ isSelectableForBulkActionSelectAll: false,
533
+ bulkSelectExceptionInfo: 'bookCloseDateProcessing',
534
+ };
535
+ }
519
536
  }
520
537
  if (selectedTab === 'scheduled') {
538
+ //for cases where user attempts select all on scheduled tab
539
+ if (firstBillSelected == null && firstSelectableBill != null) {
540
+ if (firstSelectableBill.billPayInfo.billPaymentStatus.code === 'processing') {
541
+ if (bill.isRecurring &&
542
+ Boolean(firstSelectableBill.isRecurring) === false) {
543
+ return {
544
+ isSelectableForBulkAction: true,
545
+ isSelectableForBulkActionSelectAll: false,
546
+ bulkSelectExceptionInfo: undefined,
547
+ };
548
+ }
549
+ if (bill.billPayInfo.billPaymentStatus.code !== 'processing') {
550
+ return {
551
+ isSelectableForBulkAction: true,
552
+ isSelectableForBulkActionSelectAll: false,
553
+ bulkSelectExceptionInfo: undefined,
554
+ };
555
+ }
556
+ }
557
+ if (bill.billPayInfo.billPaymentStatus.code === 'processing') {
558
+ if (firstSelectableBill.billPayInfo.billPaymentStatus.code !==
559
+ 'processing') {
560
+ return {
561
+ isSelectableForBulkAction: true,
562
+ isSelectableForBulkActionSelectAll: false,
563
+ bulkSelectExceptionInfo: undefined,
564
+ };
565
+ }
566
+ }
567
+ }
521
568
  if ((firstBillSelected === null || firstBillSelected === void 0 ? void 0 : firstBillSelected.billPayInfo.billPaymentStatus.code) === 'processing') {
522
- if (bill.isRecurring) {
569
+ if (bill.isRecurring &&
570
+ Boolean(firstBillSelected === null || firstBillSelected === void 0 ? void 0 : firstBillSelected.isRecurring) === false) {
523
571
  return {
524
572
  isSelectableForBulkAction: false,
573
+ isSelectableForBulkActionSelectAll: true,
525
574
  bulkSelectExceptionInfo: 'cancelRecurring',
526
575
  };
527
576
  }
528
577
  if (bill.billPayInfo.billPaymentStatus.code !== 'processing') {
529
578
  return {
530
579
  isSelectableForBulkAction: false,
580
+ isSelectableForBulkActionSelectAll: true,
531
581
  bulkSelectExceptionInfo: 'processingSelectTogether',
532
582
  };
533
583
  }
@@ -537,6 +587,7 @@ const isBillSelectableForBulkAction = (bill, selectedTab, isBookClosedForBill, f
537
587
  if (firstBillSelected.billPayInfo.billPaymentStatus.code !== 'processing') {
538
588
  return {
539
589
  isSelectableForBulkAction: false,
590
+ isSelectableForBulkActionSelectAll: true,
540
591
  bulkSelectExceptionInfo: 'processingWithOthers',
541
592
  };
542
593
  }
@@ -544,7 +595,7 @@ const isBillSelectableForBulkAction = (bill, selectedTab, isBookClosedForBill, f
544
595
  }
545
596
  return result;
546
597
  };
547
- const getAllowedBulkActions = (selectedTab, selectedSubTab, isAllAwaitingMyApproval, isFirstBillProcessing) => {
598
+ const getAllowedBulkActions = (selectedTab, selectedSubTab, isAllAwaitingMyApproval, isFirstBillProcessing, isBookClosedForAnySelectedBill, isRecurringBillInBulkActionList) => {
548
599
  switch (selectedTab) {
549
600
  case 'draft':
550
601
  return ['send_for_approval', 'delete'];
@@ -553,11 +604,16 @@ const getAllowedBulkActions = (selectedTab, selectedSubTab, isAllAwaitingMyAppro
553
604
  case 'all':
554
605
  case 'awaiting_approval':
555
606
  case 'overdue':
556
- return isAllAwaitingMyApproval
557
- ? ['approve', 'reject', 'delete']
558
- : ['delete'];
607
+ if (isAllAwaitingMyApproval) {
608
+ return isBookClosedForAnySelectedBill
609
+ ? ['approve', 'reject']
610
+ : ['approve', 'reject', 'delete'];
611
+ }
612
+ return isBookClosedForAnySelectedBill ? [] : ['delete'];
559
613
  case 'awaiting_my_approval':
560
- return ['approve', 'reject', 'delete'];
614
+ return isBookClosedForAnySelectedBill
615
+ ? ['approve', 'reject']
616
+ : ['approve', 'reject', 'delete'];
561
617
  case 'rejected':
562
618
  return ['delete'];
563
619
  default:
@@ -567,6 +623,9 @@ const getAllowedBulkActions = (selectedTab, selectedSubTab, isAllAwaitingMyAppro
567
623
  case 'scheduled': {
568
624
  switch (selectedSubTab) {
569
625
  case 'all':
626
+ if (isRecurringBillInBulkActionList) {
627
+ return ['delete'];
628
+ }
570
629
  return isFirstBillProcessing ? ['cancel'] : ['delete'];
571
630
  case 'failed':
572
631
  case 'cancelled':
@@ -40,14 +40,23 @@ const getChargeCardListView = (state, includeCreditAccountAndCashbackInfo) => {
40
40
  const sortKey = chargeCardListState.uiState.sortKey;
41
41
  const sortOrder = (0, sortOrderPayload_1.getSortOrder)(chargeCardListState.uiState.sortOrder);
42
42
  const cardsInOrder = (0, orderBy_1.default)(cards, (card) => {
43
- var _a, _b, _c, _d, _e;
43
+ var _a, _b, _c, _d;
44
44
  switch (sortKey) {
45
- case 'owner':
46
- return ((_c = `${(_a = card.cardHolderUser) === null || _a === void 0 ? void 0 : _a.firstName.toLowerCase()} ${(_b = card.cardHolderUser) === null || _b === void 0 ? void 0 : _b.lastName.toLowerCase()}`) !== null && _c !== void 0 ? _c : '');
45
+ case 'owner': {
46
+ const firstName = (_a = card.cardHolderUser) === null || _a === void 0 ? void 0 : _a.firstName.toLowerCase();
47
+ const lastName = (_b = card.cardHolderUser) === null || _b === void 0 ? void 0 : _b.lastName.toLowerCase();
48
+ if (Boolean(firstName) && Boolean(lastName)) {
49
+ return `${firstName} ${lastName}`;
50
+ }
51
+ else if (Boolean(firstName) || Boolean(lastName)) {
52
+ return firstName !== null && firstName !== void 0 ? firstName : lastName;
53
+ }
54
+ return '';
55
+ }
47
56
  case 'cardName':
48
57
  return card.cardName.toLowerCase();
49
58
  case 'department':
50
- return (_e = (_d = card.department) === null || _d === void 0 ? void 0 : _d.className.toLowerCase()) !== null && _e !== void 0 ? _e : '';
59
+ return (_d = (_c = card.department) === null || _c === void 0 ? void 0 : _c.className.toLowerCase()) !== null && _d !== void 0 ? _d : '';
51
60
  case 'utilisation':
52
61
  return card.limit.amount - card.available.amount;
53
62
  case 'limit':
@@ -33,7 +33,7 @@ const issueChargeCardEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, ope
33
33
  keepExistingListItems: true,
34
34
  }), (0, chargeCardListReducer_1.issueChargeCardSuccessOrFailure)({ fetchState: 'Completed' }));
35
35
  const names = response.data.users
36
- .map((user) => { var _a; return (_a = user.first_name) !== null && _a !== void 0 ? _a : user.last_name; })
36
+ .map((user) => { var _a, _b, _c; return (_b = (_a = user.first_name) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : (_c = user.last_name) === null || _c === void 0 ? void 0 : _c.trim(); })
37
37
  .join(', ');
38
38
  actions.push((0, snackbarReducer_1.openSnackbar)({
39
39
  messageSection: 'issue_charge_card',
@@ -18,8 +18,10 @@ const fetchZeniAccountListEpic = (actions$, state$) => actions$.pipe((0, operato
18
18
  }
19
19
  else {
20
20
  const depositAccountList = state.depositAccountListState;
21
- if (depositAccountList.hasValidState() === false &&
22
- depositAccountList.fetchState !== 'In-Progress') {
21
+ const zeniAccountList = state.zeniAccountListState;
22
+ if ((depositAccountList.hasValidState() === false &&
23
+ depositAccountList.fetchState !== 'In-Progress') ||
24
+ zeniAccountList.summary.zeniAccounts == null) {
23
25
  zeniAccountActions.push((0, depositAccountListReducer_1.fetchDepositAccountList)());
24
26
  }
25
27
  const paymentAccountList = state.paymentAccountListState;
@@ -10,10 +10,11 @@ const globalMerchantPayload_1 = require("../../../../entity/globalMerchant/globa
10
10
  * Helpers
11
11
  */
12
12
  const toUserPayload = (user) => {
13
+ var _a, _b;
13
14
  return {
14
15
  user_id: user.user_id,
15
- first_name: user.first_name,
16
- last_name: user.last_name,
16
+ first_name: (_a = user.first_name) === null || _a === void 0 ? void 0 : _a.trim(),
17
+ last_name: (_b = user.last_name) === null || _b === void 0 ? void 0 : _b.trim(),
17
18
  email: '',
18
19
  };
19
20
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "4.11.37",
3
+ "version": "4.11.39",
4
4
  "description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -48,7 +48,7 @@
48
48
  },
49
49
  "dependencies": {
50
50
  "@reduxjs/toolkit": "^1.6.2",
51
- "@stripe/stripe-js": "4.2.0",
51
+ "@stripe/stripe-js": "^4.1.0",
52
52
  "cross-fetch": "^3.1.2",
53
53
  "date-holidays": "^3.23.8",
54
54
  "dayjs": "^1.10.7",