@pisell/pisellos 2.3.141 → 2.3.143

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.
Files changed (39) hide show
  1. package/dist/model/strategy/adapter/promotion/index.js +0 -9
  2. package/dist/modules/BookingContext/utils/resources.js +1 -1
  3. package/dist/modules/Cart/index.js +4 -3
  4. package/dist/modules/Cart/types.d.ts +2 -0
  5. package/dist/modules/Cart/utils/cartProduct.d.ts +3 -1
  6. package/dist/modules/Cart/utils/cartProduct.js +59 -32
  7. package/dist/modules/Order/index.d.ts +1 -1
  8. package/dist/modules/Order/types.d.ts +1 -0
  9. package/dist/modules/Order/utils.js +8 -0
  10. package/dist/modules/Product/types.d.ts +11 -0
  11. package/dist/server/index.js +118 -69
  12. package/dist/server/modules/order/types.d.ts +1 -0
  13. package/dist/shared/receipt/small-ticket.d.ts +2 -0
  14. package/dist/shared/receipt/small-ticket.js +188 -73
  15. package/dist/shared/receipt/templateVisibility.d.ts +23 -0
  16. package/dist/shared/receipt/templateVisibility.js +64 -0
  17. package/dist/solution/BookingByStep/index.d.ts +4 -2
  18. package/dist/solution/BookingByStep/index.js +8 -3
  19. package/dist/solution/OrderInvoicePreview/index.js +2 -1
  20. package/lib/model/strategy/adapter/promotion/index.js +46 -1
  21. package/lib/modules/BookingContext/utils/resources.js +1 -1
  22. package/lib/modules/Cart/index.js +4 -2
  23. package/lib/modules/Cart/types.d.ts +2 -0
  24. package/lib/modules/Cart/utils/cartProduct.d.ts +3 -1
  25. package/lib/modules/Cart/utils/cartProduct.js +39 -20
  26. package/lib/modules/Order/index.d.ts +1 -1
  27. package/lib/modules/Order/types.d.ts +1 -0
  28. package/lib/modules/Order/utils.js +8 -0
  29. package/lib/modules/Product/types.d.ts +11 -0
  30. package/lib/server/index.js +68 -28
  31. package/lib/server/modules/order/types.d.ts +1 -0
  32. package/lib/shared/receipt/small-ticket.d.ts +2 -0
  33. package/lib/shared/receipt/small-ticket.js +113 -22
  34. package/lib/shared/receipt/templateVisibility.d.ts +23 -0
  35. package/lib/shared/receipt/templateVisibility.js +63 -0
  36. package/lib/solution/BookingByStep/index.d.ts +4 -2
  37. package/lib/solution/BookingByStep/index.js +7 -3
  38. package/lib/solution/OrderInvoicePreview/index.js +2 -1
  39. package/package.json +1 -1
@@ -21,6 +21,7 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
21
21
  import dayjs from 'dayjs';
22
22
  import Decimal from 'decimal.js';
23
23
  import { isFulfillmentTimingBooking } from "../../modules/Order/pickupTiming";
24
+ import { resolveInvoiceDataVisibility } from "./templateVisibility";
24
25
  var DEFAULT_LOCALES = ['en', 'zh_CN'];
25
26
 
26
27
  // Attach provenance to a private copy BEFORE any locale-dependent filtering.
@@ -309,12 +310,14 @@ export function buildSmallTicketData(params) {
309
310
  var shopInfo = params.shopInfo || {};
310
311
  var locales = resolveLocales(shopInfo, params.locales);
311
312
  var productMap = params.productMap || {};
313
+ var visibility = resolveInvoiceDataVisibility(params.templateSettings);
312
314
  var result = locales.reduce(function (data, locale) {
313
315
  data[locale] = buildLocaleData({
314
316
  order: order,
315
317
  shopInfo: shopInfo,
316
318
  locale: locale,
317
- productMap: productMap
319
+ productMap: productMap,
320
+ visibility: visibility
318
321
  });
319
322
  return data;
320
323
  }, {});
@@ -328,12 +331,13 @@ function buildLocaleData(params) {
328
331
  var order = params.order,
329
332
  shopInfo = params.shopInfo,
330
333
  locale = params.locale,
331
- productMap = params.productMap;
334
+ productMap = params.productMap,
335
+ visibility = params.visibility;
332
336
  var products = buildProducts(order, locale, productMap);
333
337
  var summary = getSummary(order);
334
338
  var currencySymbol = getCurrencySymbol(order, shopInfo);
335
339
  var financials = resolveReceiptFinancials(order, summary);
336
- var delivery = buildDelivery(order, locale);
340
+ var delivery = buildDelivery(order, locale, visibility.handover);
337
341
  return _objectSpread(_objectSpread({
338
342
  base_data: buildBaseData({
339
343
  order: order,
@@ -352,7 +356,7 @@ function buildLocaleData(params) {
352
356
  currencySymbol: currencySymbol,
353
357
  financials: financials
354
358
  }),
355
- customer: buildCustomer(order, locale),
359
+ customer: buildCustomer(order, locale, visibility.customer),
356
360
  appointment: buildAppointment(order, locale)
357
361
  }, delivery.length ? {
358
362
  delivery: delivery
@@ -363,12 +367,15 @@ function buildLocaleData(params) {
363
367
  locale: locale,
364
368
  currencySymbol: currencySymbol
365
369
  }),
366
- wallets: buildWallets({
370
+ wallets: visibility.card.show ? buildWallets({
367
371
  order: order,
368
372
  locale: locale,
369
- currencySymbol: currencySymbol
370
- }),
371
- tickets: Array.isArray(order.tickets) ? order.tickets.map(function (group) {
373
+ currencySymbol: currencySymbol,
374
+ passTypes: visibility.card.passTypes
375
+ }) : [],
376
+ // Native printers fall back to tickets when wallets is empty. Legacy rows
377
+ // have no trustworthy asset tags, so they cannot bypass a card whitelist.
378
+ tickets: visibility.card.show && visibility.card.passTypes === null && Array.isArray(order.tickets) ? order.tickets.map(function (group) {
372
379
  return Array.isArray(group) ? group.map(function (row) {
373
380
  return row && _typeof(row) === 'object' ? _objectSpread(_objectSpread({}, row), receiptKey(row, 'ticket')) : row;
374
381
  }) : group;
@@ -1299,8 +1306,10 @@ function calculateProductOriginalAmount(order) {
1299
1306
  return total.plus(new Decimal(toMoneyNumber(originalPrice)).mul(quantity));
1300
1307
  }, new Decimal(0));
1301
1308
  }
1302
- function buildCustomer(order, locale) {
1309
+ function buildCustomer(order, locale, visibility) {
1303
1310
  var _order$customer, _order$customer2, _order$customer3, _order$customer4;
1311
+ if (!visibility.show) return [];
1312
+ var fields = [visibility.name, visibility.phone, visibility.email];
1304
1313
  return [_objectSpread(_objectSpread({}, receiptKey(order, 'customer.contactName')), {}, {
1305
1314
  item: label(locale, 'contactName'),
1306
1315
  value: normalizeCustomerDisplayValue(order.customer_name || ((_order$customer = order.customer) === null || _order$customer === void 0 ? void 0 : _order$customer.name) || ((_order$customer2 = order.customer) === null || _order$customer2 === void 0 ? void 0 : _order$customer2.display_name))
@@ -1310,7 +1319,9 @@ function buildCustomer(order, locale) {
1310
1319
  }), _objectSpread(_objectSpread({}, receiptKey(order, 'customer.email')), {}, {
1311
1320
  item: label(locale, 'email'),
1312
1321
  value: stringify(order.email || ((_order$customer4 = order.customer) === null || _order$customer4 === void 0 ? void 0 : _order$customer4.email))
1313
- })];
1322
+ })].filter(function (_row, index) {
1323
+ return fields[index];
1324
+ });
1314
1325
  }
1315
1326
  function normalizeCustomerDisplayValue(value) {
1316
1327
  var text = stringify(value).trim();
@@ -1318,16 +1329,18 @@ function normalizeCustomerDisplayValue(value) {
1318
1329
  if (text.toLowerCase() === 'select a customer') return 'Walk-In';
1319
1330
  return text;
1320
1331
  }
1321
- function buildDelivery(order, locale) {
1332
+ function buildDelivery(order, locale, visibility) {
1322
1333
  var _order$metadata2, _order$metadata3, _order$metadata4, _order$metadata5, _order$metadata6, _order$metadata7, _order$metadata8, _order$metadata9, _order$metadata10, _order$metadata11, _order$metadata12;
1334
+ if (!visibility.show) return [];
1323
1335
  var serviceType = stringify((_order$metadata2 = order.metadata) === null || _order$metadata2 === void 0 || (_order$metadata2 = _order$metadata2.shop_service_data) === null || _order$metadata2 === void 0 ? void 0 : _order$metadata2.service_type).trim();
1324
1336
  var serviceTypeLabelKey = resolveServiceTypeLabelKey(serviceType);
1325
1337
  if (!serviceTypeLabelKey) return [];
1326
- var items = [_objectSpread(_objectSpread({}, receiptKey(order, 'service-type')), {}, {
1338
+ var items = visibility.method ? [_objectSpread(_objectSpread({}, receiptKey(order, 'service-type')), {}, {
1327
1339
  item: label(locale, serviceTypeLabelKey),
1328
1340
  value: '',
1329
1341
  size: 2
1330
- })];
1342
+ })] : [];
1343
+ if (!visibility.fulfillmentTime) return items;
1331
1344
  if (serviceType === 'pick_up') {
1332
1345
  var pickupTime = formatPickupBookingStart(order.bookings, locale);
1333
1346
  if (pickupTime) {
@@ -1657,10 +1670,100 @@ function resolveRefundPayment(refund, payments) {
1657
1670
  });
1658
1671
  return matchedPayment || refund;
1659
1672
  }
1673
+ function getPaymentWalletAssetIdentity(payment) {
1674
+ var record = getFundRecord(payment);
1675
+ return {
1676
+ id: firstNormalizedWalletAssetId(record === null || record === void 0 ? void 0 : record.voucher_id, payment.voucher_id),
1677
+ codes: normalizeWalletAssetCodes(record === null || record === void 0 ? void 0 : record.code, record === null || record === void 0 ? void 0 : record.encoded)
1678
+ };
1679
+ }
1680
+ function getProductWalletAssetTag(record) {
1681
+ // Rules normalizes product_discount_card to type=discount_card. That
1682
+ // ambiguous alias cannot establish the original asset tag for a whitelist.
1683
+ for (var _i6 = 0, _arr2 = [record.tag, (_record$discount = record.discount) === null || _record$discount === void 0 ? void 0 : _record$discount.tag]; _i6 < _arr2.length; _i6++) {
1684
+ var _record$discount;
1685
+ var _tag = _arr2[_i6];
1686
+ if (typeof _tag === 'string' && _tag) return _tag;
1687
+ }
1688
+ for (var _i7 = 0, _arr3 = [record.type, (_record$discount2 = record.discount) === null || _record$discount2 === void 0 ? void 0 : _record$discount2.type]; _i7 < _arr3.length; _i7++) {
1689
+ var _record$discount2;
1690
+ var type = _arr3[_i7];
1691
+ if (typeof type === 'string' && type !== 'discount_card' && PRODUCT_WALLET_DISCOUNT_TYPES.has(type)) return type;
1692
+ }
1693
+ return undefined;
1694
+ }
1695
+ function createWalletAssetFilter(order, passTypes) {
1696
+ if (passTypes === null) return function () {
1697
+ return true;
1698
+ };
1699
+ var assets = [];
1700
+ var remember = function remember(identity, tag) {
1701
+ if (typeof tag === 'string' && tag && (identity.id || identity.codes.length)) assets.push({
1702
+ identity: identity,
1703
+ tag: tag
1704
+ });
1705
+ };
1706
+ for (var _i8 = 0, _arr4 = [].concat(_toConsumableArray(normalizeArray(order.vouchers)), _toConsumableArray(normalizeArray((_order$order_meta_lis = order.order_meta_list) === null || _order$order_meta_lis === void 0 ? void 0 : _order$order_meta_lis.point_cards_snapshot)), _toConsumableArray(normalizeArray((_order$order_meta_lis2 = order.order_meta_list) === null || _order$order_meta_lis2 === void 0 ? void 0 : _order$order_meta_lis2.virtual_currency_snapshot))); _i8 < _arr4.length; _i8++) {
1707
+ var _order$order_meta_lis, _order$order_meta_lis2;
1708
+ var asset = _arr4[_i8];
1709
+ if (asset && _typeof(asset) === 'object') remember(getVoucherAssetIdentity(asset), asset.tag);
1710
+ }
1711
+ // Some order snapshots retain the original selected assets at the root.
1712
+ // Only their explicit tag is authoritative; do not infer it from type.
1713
+ for (var _i9 = 0, _normalizeArray3 = normalizeArray(order.discount_list); _i9 < _normalizeArray3.length; _i9++) {
1714
+ var _record$tag, _record$discount3;
1715
+ var record = _normalizeArray3[_i9];
1716
+ if (!record || _typeof(record) !== 'object') continue;
1717
+ remember({
1718
+ id: getProductWalletDiscountAssetId(record),
1719
+ codes: getProductWalletDiscountCodes(record)
1720
+ }, (_record$tag = record.tag) !== null && _record$tag !== void 0 ? _record$tag : (_record$discount3 = record.discount) === null || _record$discount3 === void 0 ? void 0 : _record$discount3.tag);
1721
+ }
1722
+ var visit = function visit(product) {
1723
+ if (!product || _typeof(product) !== 'object') return;
1724
+ for (var _i10 = 0, _normalizeArray4 = normalizeArray(product.discount_list); _i10 < _normalizeArray4.length; _i10++) {
1725
+ var _record = _normalizeArray4[_i10];
1726
+ if (!_record || _typeof(_record) !== 'object') continue;
1727
+ remember({
1728
+ id: getProductWalletDiscountAssetId(_record),
1729
+ codes: getProductWalletDiscountCodes(_record)
1730
+ }, getProductWalletAssetTag(_record));
1731
+ }
1732
+ for (var _i11 = 0, _arr5 = ['combinations', 'product_bundle', 'bundle']; _i11 < _arr5.length; _i11++) {
1733
+ var _key3 = _arr5[_i11];
1734
+ normalizeArray(product[_key3]).forEach(visit);
1735
+ }
1736
+ };
1737
+ normalizeArray(order.products).forEach(function (product) {
1738
+ if (product && _typeof(product) === 'object') visit(restoreReceiptDiscountHierarchy(product));
1739
+ });
1740
+ return function (identity, tag) {
1741
+ var resolvePaymentSource = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
1742
+ var directTag = typeof tag === 'string' && tag ? tag : undefined;
1743
+ if (directTag && !resolvePaymentSource) return passTypes.has(directTag);
1744
+ var exactMatches = identity.id ? assets.filter(function (asset) {
1745
+ return asset.identity.id === identity.id;
1746
+ }) : [];
1747
+ // A known asset ID is stronger than an unrelated code-only snapshot.
1748
+ var matches = exactMatches.length ? exactMatches : assets.filter(function (asset) {
1749
+ return isSameWalletAssetIdentity(asset.identity, identity);
1750
+ });
1751
+ var tags = new Set(matches.map(function (asset) {
1752
+ return asset.tag;
1753
+ }));
1754
+ if (!tags.size) return !!directTag && passTypes.has(directTag);
1755
+ // A conflicting fund record is not reliable evidence for a payment's tag.
1756
+ // It must not claim the identity ahead of the original typed asset.
1757
+ if (tags.size !== 1 || directTag && !tags.has(directTag)) return false;
1758
+ return passTypes.has(matches[0].tag);
1759
+ };
1760
+ }
1660
1761
  function buildWallets(params) {
1661
- var virtualCurrencySnapshots = collectVirtualCurrencySnapshots(params.order);
1762
+ var allowAsset = createWalletAssetFilter(params.order, params.passTypes);
1763
+ var virtualCurrencySnapshots = collectVirtualCurrencySnapshots(params.order, allowAsset);
1662
1764
  var displayedWalletPayments = normalizeArray(params.order.payments).filter(function (payment) {
1663
- return isPrintablePayment(payment) && !!getFundRecord(payment);
1765
+ var _getFundRecord;
1766
+ return isPrintablePayment(payment) && !!getFundRecord(payment) && allowAsset(getPaymentWalletAssetIdentity(payment), (_getFundRecord = getFundRecord(payment)) === null || _getFundRecord === void 0 ? void 0 : _getFundRecord.tag, true);
1664
1767
  });
1665
1768
  var paymentWallets = displayedWalletPayments.map(function (payment) {
1666
1769
  var virtualCurrencySnapshot = findVirtualCurrencySnapshotForPayment(payment, virtualCurrencySnapshots.byId);
@@ -1676,19 +1779,23 @@ function buildWallets(params) {
1676
1779
  });
1677
1780
  var displayedWalletAssetIdentities = collectDisplayedWalletAssetIdentities(displayedWalletPayments);
1678
1781
  var voucherWallets = buildVoucherAssets(_objectSpread(_objectSpread({}, params), {}, {
1782
+ allowAsset: allowAsset,
1679
1783
  displayedWalletAssetIdentities: displayedWalletAssetIdentities
1680
1784
  }));
1681
1785
  var productDiscountWallets = buildProductDiscountAssets(_objectSpread(_objectSpread({}, params), {}, {
1786
+ allowAsset: allowAsset,
1682
1787
  displayedWalletAssetIdentities: displayedWalletAssetIdentities
1683
1788
  }));
1684
1789
  return [].concat(_toConsumableArray(paymentWallets), voucherWallets, productDiscountWallets, _toConsumableArray(buildPointCardSnapshotAssets({
1685
1790
  order: params.order,
1686
1791
  locale: params.locale,
1792
+ allowAsset: allowAsset,
1687
1793
  displayedWalletAssetIdentities: displayedWalletAssetIdentities
1688
1794
  })), _toConsumableArray(buildVirtualCurrencySnapshotAssets({
1689
1795
  snapshots: virtualCurrencySnapshots.items,
1690
1796
  order: params.order,
1691
1797
  locale: params.locale,
1798
+ allowAsset: allowAsset,
1692
1799
  displayedWalletAssetIdentities: displayedWalletAssetIdentities
1693
1800
  })));
1694
1801
  }
@@ -1721,7 +1828,7 @@ function collectDisplayedWalletAssetIdentities(payments) {
1721
1828
  var PRODUCT_WALLET_DISCOUNT_TYPES = new Set(['good_pass', 'discount_card', 'product_discount_card', 'entitlement_pass']);
1722
1829
  function buildProductDiscountAssets(params) {
1723
1830
  var fallbackAssetTime = firstPresentValue(params.order.updated_at, params.order.created_at);
1724
- return collectProductWalletDiscountAssets(params.order).flatMap(function (asset) {
1831
+ return collectProductWalletDiscountAssets(params.order, params.allowAsset).flatMap(function (asset) {
1725
1832
  var _getProductWalletDisc;
1726
1833
  if (!claimWalletAssetIdentity(params.displayedWalletAssetIdentities, {
1727
1834
  id: asset.id,
@@ -1760,16 +1867,16 @@ function buildProductDiscountAssets(params) {
1760
1867
  })] : []), _toConsumableArray(timeRow ? [timeRow] : []))];
1761
1868
  });
1762
1869
  }
1763
- function collectProductWalletDiscountAssets(order) {
1870
+ function collectProductWalletDiscountAssets(order, allowAsset) {
1764
1871
  var assets = [];
1765
1872
  var assetsById = new Map();
1766
1873
  normalizeArray(order.products).forEach(function (rawProduct) {
1767
1874
  if (!rawProduct || _typeof(rawProduct) !== 'object') return;
1768
- visitProductWalletDiscounts(restoreReceiptDiscountHierarchy(rawProduct), assets, assetsById);
1875
+ visitProductWalletDiscounts(restoreReceiptDiscountHierarchy(rawProduct), assets, assetsById, allowAsset);
1769
1876
  });
1770
1877
  return assets;
1771
1878
  }
1772
- function visitProductWalletDiscounts(product, assets, assetsById) {
1879
+ function visitProductWalletDiscounts(product, assets, assetsById, allowAsset) {
1773
1880
  normalizeArray(product.discount_list).forEach(function (record) {
1774
1881
  if (!record || _typeof(record) !== 'object' || Array.isArray(record)) return;
1775
1882
  var type = getProductWalletDiscountType(record);
@@ -1777,6 +1884,10 @@ function visitProductWalletDiscounts(product, assets, assetsById) {
1777
1884
  var id = getProductWalletDiscountAssetId(record);
1778
1885
  if (!id) return;
1779
1886
  var codes = getProductWalletDiscountCodes(record);
1887
+ if (allowAsset && !allowAsset({
1888
+ id: id,
1889
+ codes: codes
1890
+ }, getProductWalletAssetTag(record))) return;
1780
1891
  var existing = assetsById.get(id);
1781
1892
  if (existing) {
1782
1893
  existing.records.push(record);
@@ -1792,35 +1903,35 @@ function visitProductWalletDiscounts(product, assets, assetsById) {
1792
1903
  assetsById.set(id, asset);
1793
1904
  assets.push(asset);
1794
1905
  });
1795
- for (var _i6 = 0, _arr2 = ['combinations', 'product_bundle', 'bundle']; _i6 < _arr2.length; _i6++) {
1796
- var childKey = _arr2[_i6];
1906
+ for (var _i12 = 0, _arr6 = ['combinations', 'product_bundle', 'bundle']; _i12 < _arr6.length; _i12++) {
1907
+ var childKey = _arr6[_i12];
1797
1908
  normalizeArray(product[childKey]).forEach(function (child) {
1798
1909
  if (!child || _typeof(child) !== 'object' || Array.isArray(child)) return;
1799
- visitProductWalletDiscounts(child, assets, assetsById);
1910
+ visitProductWalletDiscounts(child, assets, assetsById, allowAsset);
1800
1911
  });
1801
1912
  }
1802
1913
  }
1803
1914
  function getProductWalletDiscountType(record) {
1804
- for (var _i7 = 0, _arr3 = [record.tag, record.type, (_record$discount = record.discount) === null || _record$discount === void 0 ? void 0 : _record$discount.tag, (_record$discount2 = record.discount) === null || _record$discount2 === void 0 ? void 0 : _record$discount2.type]; _i7 < _arr3.length; _i7++) {
1805
- var _record$discount, _record$discount2;
1806
- var value = _arr3[_i7];
1915
+ for (var _i13 = 0, _arr7 = [record.tag, record.type, (_record$discount4 = record.discount) === null || _record$discount4 === void 0 ? void 0 : _record$discount4.tag, (_record$discount5 = record.discount) === null || _record$discount5 === void 0 ? void 0 : _record$discount5.type]; _i13 < _arr7.length; _i13++) {
1916
+ var _record$discount4, _record$discount5;
1917
+ var value = _arr7[_i13];
1807
1918
  var type = stringify(value).trim().toLowerCase();
1808
1919
  if (PRODUCT_WALLET_DISCOUNT_TYPES.has(type)) return type;
1809
1920
  }
1810
1921
  return null;
1811
1922
  }
1812
1923
  function getProductWalletDiscountAssetId(record) {
1813
- for (var _i8 = 0, _arr4 = [(_record$discount3 = record.discount) === null || _record$discount3 === void 0 ? void 0 : _record$discount3.resource_id, record.resource_id, record.id, record.discount_id]; _i8 < _arr4.length; _i8++) {
1814
- var _record$discount3;
1815
- var value = _arr4[_i8];
1924
+ for (var _i14 = 0, _arr8 = [(_record$discount6 = record.discount) === null || _record$discount6 === void 0 ? void 0 : _record$discount6.resource_id, record.resource_id, record.id, record.discount_id]; _i14 < _arr8.length; _i14++) {
1925
+ var _record$discount6;
1926
+ var value = _arr8[_i14];
1816
1927
  var id = normalizeWalletPassId(value);
1817
1928
  if (id && id !== '0') return id;
1818
1929
  }
1819
1930
  return null;
1820
1931
  }
1821
1932
  function getProductWalletDiscountCodes(record) {
1822
- var _record$discount4, _record$discount5;
1823
- return normalizeWalletAssetCodes(record.code, record.encoded, (_record$discount4 = record.discount) === null || _record$discount4 === void 0 ? void 0 : _record$discount4.code, (_record$discount5 = record.discount) === null || _record$discount5 === void 0 ? void 0 : _record$discount5.encoded);
1933
+ var _record$discount7, _record$discount8;
1934
+ return normalizeWalletAssetCodes(record.code, record.encoded, (_record$discount7 = record.discount) === null || _record$discount7 === void 0 ? void 0 : _record$discount7.code, (_record$discount8 = record.discount) === null || _record$discount8 === void 0 ? void 0 : _record$discount8.encoded);
1824
1935
  }
1825
1936
  function getProductWalletDiscountName(asset, locale) {
1826
1937
  var _iterator4 = _createForOfIteratorHelper(asset.records),
@@ -1828,9 +1939,9 @@ function getProductWalletDiscountName(asset, locale) {
1828
1939
  try {
1829
1940
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
1830
1941
  var record = _step4.value;
1831
- for (var _i9 = 0, _arr5 = [(_record$discount6 = record.discount) === null || _record$discount6 === void 0 ? void 0 : _record$discount6.title, (_record$discount7 = record.discount) === null || _record$discount7 === void 0 ? void 0 : _record$discount7.name, (_record$discount8 = record.discount) === null || _record$discount8 === void 0 ? void 0 : _record$discount8.message, record.product_name, record.format_title, record.title, record.name, record.message]; _i9 < _arr5.length; _i9++) {
1832
- var _record$discount6, _record$discount7, _record$discount8;
1833
- var value = _arr5[_i9];
1942
+ for (var _i15 = 0, _arr9 = [(_record$discount9 = record.discount) === null || _record$discount9 === void 0 ? void 0 : _record$discount9.title, (_record$discount10 = record.discount) === null || _record$discount10 === void 0 ? void 0 : _record$discount10.name, (_record$discount11 = record.discount) === null || _record$discount11 === void 0 ? void 0 : _record$discount11.message, record.product_name, record.format_title, record.title, record.name, record.message]; _i15 < _arr9.length; _i15++) {
1943
+ var _record$discount9, _record$discount10, _record$discount11;
1944
+ var value = _arr9[_i15];
1834
1945
  var name = getLocalizedValue(value, locale).trim();
1835
1946
  if (name) return name;
1836
1947
  }
@@ -1843,15 +1954,15 @@ function getProductWalletDiscountName(asset, locale) {
1843
1954
  return asset.codes[0] || label(locale, 'giftCard');
1844
1955
  }
1845
1956
  function getProductWalletDiscountTime(asset) {
1846
- for (var _i10 = 0, _arr6 = ['updated_at', 'created_at', 'collection_time']; _i10 < _arr6.length; _i10++) {
1847
- var field = _arr6[_i10];
1957
+ for (var _i16 = 0, _arr10 = ['updated_at', 'created_at', 'collection_time']; _i16 < _arr10.length; _i16++) {
1958
+ var field = _arr10[_i16];
1848
1959
  var _iterator5 = _createForOfIteratorHelper(asset.records),
1849
1960
  _step5;
1850
1961
  try {
1851
1962
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
1852
- var _record$discount9;
1963
+ var _record$discount12;
1853
1964
  var record = _step5.value;
1854
- var value = firstPresentValue(record[field], (_record$discount9 = record.discount) === null || _record$discount9 === void 0 ? void 0 : _record$discount9[field]);
1965
+ var value = firstPresentValue(record[field], (_record$discount12 = record.discount) === null || _record$discount12 === void 0 ? void 0 : _record$discount12[field]);
1855
1966
  if (isPresentId(value)) return value;
1856
1967
  }
1857
1968
  } catch (err) {
@@ -1879,15 +1990,15 @@ function getProductEntitlementBalance(asset) {
1879
1990
  return null;
1880
1991
  }
1881
1992
  function getProductDiscountEntitlementBalance(record) {
1882
- var _record$metadata, _record$discount10, _record$discount11;
1883
- return getEntitlementBalance((_record$metadata = record.metadata) === null || _record$metadata === void 0 ? void 0 : _record$metadata.balance, record.balance, (_record$discount10 = record.discount) === null || _record$discount10 === void 0 || (_record$discount10 = _record$discount10.metadata) === null || _record$discount10 === void 0 ? void 0 : _record$discount10.balance, (_record$discount11 = record.discount) === null || _record$discount11 === void 0 ? void 0 : _record$discount11.balance);
1993
+ var _record$metadata, _record$discount13, _record$discount14;
1994
+ return getEntitlementBalance((_record$metadata = record.metadata) === null || _record$metadata === void 0 ? void 0 : _record$metadata.balance, record.balance, (_record$discount13 = record.discount) === null || _record$discount13 === void 0 || (_record$discount13 = _record$discount13.metadata) === null || _record$discount13 === void 0 ? void 0 : _record$discount13.balance, (_record$discount14 = record.discount) === null || _record$discount14 === void 0 ? void 0 : _record$discount14.balance);
1884
1995
  }
1885
1996
  function getEntitlementBalance() {
1886
- for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
1887
- values[_key3] = arguments[_key3];
1997
+ for (var _len3 = arguments.length, values = new Array(_len3), _key4 = 0; _key4 < _len3; _key4++) {
1998
+ values[_key4] = arguments[_key4];
1888
1999
  }
1889
- for (var _i11 = 0, _values2 = values; _i11 < _values2.length; _i11++) {
1890
- var value = _values2[_i11];
2000
+ for (var _i17 = 0, _values2 = values; _i17 < _values2.length; _i17++) {
2001
+ var value = _values2[_i17];
1891
2002
  if (!isNumericAmount(value)) continue;
1892
2003
  var balance = new Decimal(value);
1893
2004
  if (balance.isFinite() && balance.isInteger() && balance.gte(0)) {
@@ -1916,17 +2027,17 @@ function getProductWalletDiscountPercent(asset) {
1916
2027
  _step7;
1917
2028
  try {
1918
2029
  for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
1919
- var _record$metadata2, _record$discount12, _record$discount13, _record$discount14;
2030
+ var _record$metadata2, _record$discount15, _record$discount16, _record$discount17;
1920
2031
  var record = _step7.value;
1921
- var discountType = stringify(firstPresentValue(record.discount_card_type, (_record$metadata2 = record.metadata) === null || _record$metadata2 === void 0 ? void 0 : _record$metadata2.discount_card_type, (_record$discount12 = record.discount) === null || _record$discount12 === void 0 ? void 0 : _record$discount12.discount_card_type, (_record$discount13 = record.discount) === null || _record$discount13 === void 0 || (_record$discount13 = _record$discount13.metadata) === null || _record$discount13 === void 0 ? void 0 : _record$discount13.discount_card_type)).trim().toLowerCase();
2032
+ var discountType = stringify(firstPresentValue(record.discount_card_type, (_record$metadata2 = record.metadata) === null || _record$metadata2 === void 0 ? void 0 : _record$metadata2.discount_card_type, (_record$discount15 = record.discount) === null || _record$discount15 === void 0 ? void 0 : _record$discount15.discount_card_type, (_record$discount16 = record.discount) === null || _record$discount16 === void 0 || (_record$discount16 = _record$discount16.metadata) === null || _record$discount16 === void 0 ? void 0 : _record$discount16.discount_card_type)).trim().toLowerCase();
1922
2033
  if (discountType && discountType !== 'percent' && discountType !== 'percentage') continue;
1923
- var candidates = [record.percent, (_record$discount14 = record.discount) === null || _record$discount14 === void 0 ? void 0 : _record$discount14.percent];
2034
+ var candidates = [record.percent, (_record$discount17 = record.discount) === null || _record$discount17 === void 0 ? void 0 : _record$discount17.percent];
1924
2035
  if (discountType === 'percent' || discountType === 'percentage') {
1925
- var _record$discount15;
1926
- candidates.push(record.par_value, (_record$discount15 = record.discount) === null || _record$discount15 === void 0 ? void 0 : _record$discount15.par_value);
2036
+ var _record$discount18;
2037
+ candidates.push(record.par_value, (_record$discount18 = record.discount) === null || _record$discount18 === void 0 ? void 0 : _record$discount18.par_value);
1927
2038
  }
1928
- for (var _i12 = 0, _candidates = candidates; _i12 < _candidates.length; _i12++) {
1929
- var value = _candidates[_i12];
2039
+ for (var _i18 = 0, _candidates = candidates; _i18 < _candidates.length; _i18++) {
2040
+ var value = _candidates[_i18];
1930
2041
  if (!isNumericAmount(value)) continue;
1931
2042
  var percent = new Decimal(value);
1932
2043
  if (percent.isFinite() && percent.gt(0) && percent.lte(100)) {
@@ -1947,9 +2058,9 @@ function getProductWalletMoneyBalance(asset) {
1947
2058
  try {
1948
2059
  for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
1949
2060
  var record = _step8.value;
1950
- for (var _i13 = 0, _arr7 = [(_record$metadata3 = record.metadata) === null || _record$metadata3 === void 0 ? void 0 : _record$metadata3.balance, record.balance, (_record$discount16 = record.discount) === null || _record$discount16 === void 0 || (_record$discount16 = _record$discount16.metadata) === null || _record$discount16 === void 0 ? void 0 : _record$discount16.balance, (_record$discount17 = record.discount) === null || _record$discount17 === void 0 ? void 0 : _record$discount17.balance]; _i13 < _arr7.length; _i13++) {
1951
- var _record$metadata3, _record$discount16, _record$discount17;
1952
- var value = _arr7[_i13];
2061
+ for (var _i19 = 0, _arr11 = [(_record$metadata3 = record.metadata) === null || _record$metadata3 === void 0 ? void 0 : _record$metadata3.balance, record.balance, (_record$discount19 = record.discount) === null || _record$discount19 === void 0 || (_record$discount19 = _record$discount19.metadata) === null || _record$discount19 === void 0 ? void 0 : _record$discount19.balance, (_record$discount20 = record.discount) === null || _record$discount20 === void 0 ? void 0 : _record$discount20.balance]; _i19 < _arr11.length; _i19++) {
2062
+ var _record$metadata3, _record$discount19, _record$discount20;
2063
+ var value = _arr11[_i19];
1953
2064
  if (!isNumericAmount(value)) continue;
1954
2065
  return Decimal.max(new Decimal(value), 0);
1955
2066
  }
@@ -1963,10 +2074,10 @@ function getProductWalletMoneyBalance(asset) {
1963
2074
  _step9;
1964
2075
  try {
1965
2076
  for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
1966
- var _record$discount18, _record$discount19;
1967
- var _record = _step9.value;
1968
- var parValue = firstPresentValue(_record.par_value, (_record$discount18 = _record.discount) === null || _record$discount18 === void 0 ? void 0 : _record$discount18.par_value);
1969
- var usedParValue = firstPresentValue(_record.used_par_value, (_record$discount19 = _record.discount) === null || _record$discount19 === void 0 ? void 0 : _record$discount19.used_par_value);
2077
+ var _record2$discount, _record2$discount2;
2078
+ var _record2 = _step9.value;
2079
+ var parValue = firstPresentValue(_record2.par_value, (_record2$discount = _record2.discount) === null || _record2$discount === void 0 ? void 0 : _record2$discount.par_value);
2080
+ var usedParValue = firstPresentValue(_record2.used_par_value, (_record2$discount2 = _record2.discount) === null || _record2$discount2 === void 0 ? void 0 : _record2$discount2.used_par_value);
1970
2081
  if (!isNumericAmount(parValue) || !isNumericAmount(usedParValue)) continue;
1971
2082
  return Decimal.max(new Decimal(parValue).minus(new Decimal(usedParValue)), 0);
1972
2083
  }
@@ -1987,6 +2098,7 @@ function buildPointCardSnapshotAssets(params) {
1987
2098
  var pointCard = snapshot;
1988
2099
  if (stringify(pointCard.tag).trim().toLowerCase() !== 'point_card') return [];
1989
2100
  var assetId = normalizeWalletPassId(pointCard.id);
2101
+ if (!params.allowAsset(getVoucherAssetIdentity(pointCard), pointCard.tag)) return [];
1990
2102
  if (!assetId || !claimWalletAssetIdentity(params.displayedWalletAssetIdentities, {
1991
2103
  id: assetId,
1992
2104
  codes: []
@@ -2011,11 +2123,11 @@ function buildPointCardSnapshotAssets(params) {
2011
2123
  return [rows];
2012
2124
  });
2013
2125
  }
2014
- function collectVirtualCurrencySnapshots(order) {
2015
- var _order$order_meta_lis;
2126
+ function collectVirtualCurrencySnapshots(order, allowAsset) {
2127
+ var _order$order_meta_lis3;
2016
2128
  var items = [];
2017
2129
  var byId = new Map();
2018
- var snapshots = (_order$order_meta_lis = order.order_meta_list) === null || _order$order_meta_lis === void 0 ? void 0 : _order$order_meta_lis.virtual_currency_snapshot;
2130
+ var snapshots = (_order$order_meta_lis3 = order.order_meta_list) === null || _order$order_meta_lis3 === void 0 ? void 0 : _order$order_meta_lis3.virtual_currency_snapshot;
2019
2131
  if (!Array.isArray(snapshots)) return {
2020
2132
  items: items,
2021
2133
  byId: byId
@@ -2024,6 +2136,7 @@ function collectVirtualCurrencySnapshots(order) {
2024
2136
  if (!snapshot || _typeof(snapshot) !== 'object' || Array.isArray(snapshot)) return;
2025
2137
  var virtualCurrency = snapshot;
2026
2138
  if (stringify(virtualCurrency.tag).trim().toLowerCase() !== 'virtual_currency') return;
2139
+ if (!allowAsset(getVoucherAssetIdentity(virtualCurrency), virtualCurrency.tag)) return;
2027
2140
  var id = normalizeWalletPassId(virtualCurrency.id);
2028
2141
  if (!id || byId.has(id)) return;
2029
2142
  byId.set(id, virtualCurrency);
@@ -2036,8 +2149,8 @@ function collectVirtualCurrencySnapshots(order) {
2036
2149
  }
2037
2150
  function findVirtualCurrencySnapshotForPayment(payment, snapshotsById) {
2038
2151
  var fundRecord = getFundRecord(payment);
2039
- for (var _i14 = 0, _arr8 = [fundRecord === null || fundRecord === void 0 ? void 0 : fundRecord.voucher_id, payment.voucher_id]; _i14 < _arr8.length; _i14++) {
2040
- var value = _arr8[_i14];
2152
+ for (var _i20 = 0, _arr12 = [fundRecord === null || fundRecord === void 0 ? void 0 : fundRecord.voucher_id, payment.voucher_id]; _i20 < _arr12.length; _i20++) {
2153
+ var value = _arr12[_i20];
2041
2154
  var id = normalizeWalletPassId(value);
2042
2155
  if (!id) continue;
2043
2156
  var snapshot = snapshotsById.get(id);
@@ -2049,12 +2162,13 @@ function buildVirtualCurrencySnapshotAssets(params) {
2049
2162
  var snapshotTime = firstPresentValue(params.order.updated_at, params.order.created_at);
2050
2163
  return params.snapshots.flatMap(function (virtualCurrency) {
2051
2164
  var assetId = normalizeWalletPassId(virtualCurrency.id);
2165
+ if (!params.allowAsset(getVoucherAssetIdentity(virtualCurrency), virtualCurrency.tag)) return [];
2052
2166
  if (!assetId || !claimWalletAssetIdentity(params.displayedWalletAssetIdentities, {
2053
2167
  id: assetId,
2054
2168
  codes: []
2055
2169
  })) return [];
2056
2170
  var rows = [_objectSpread(_objectSpread({}, receiptKey(virtualCurrency, 'asset-name')), {}, {
2057
- item: stringify(virtualCurrency.product_name).trim(),
2171
+ item: appendMaskedCardCode(stringify(virtualCurrency.product_name).trim(), virtualCurrency.code),
2058
2172
  value: ''
2059
2173
  })];
2060
2174
  var balance = getVirtualCurrencySnapshotBalance(virtualCurrency);
@@ -2087,8 +2201,8 @@ function getNonEmptyLocalizedValue(value, locale) {
2087
2201
  if (_typeof(value) !== 'object' || Array.isArray(value)) return stringify(value).trim();
2088
2202
  var dashedLocale = locale.replace('_', '-');
2089
2203
  var underscoredLocale = locale.replace('-', '_');
2090
- for (var _i15 = 0, _arr9 = [value[locale], value[dashedLocale], value[underscoredLocale], value.original, value.auto, value.default, value.en]; _i15 < _arr9.length; _i15++) {
2091
- var candidate = _arr9[_i15];
2204
+ for (var _i21 = 0, _arr13 = [value[locale], value[dashedLocale], value[underscoredLocale], value.original, value.auto, value.default, value.en]; _i21 < _arr13.length; _i21++) {
2205
+ var candidate = _arr13[_i21];
2092
2206
  var text = stringify(candidate).trim();
2093
2207
  if (text) return text;
2094
2208
  }
@@ -2105,19 +2219,19 @@ function normalizeWalletPassId(value) {
2105
2219
  return value.trim() || null;
2106
2220
  }
2107
2221
  function firstNormalizedWalletAssetId() {
2108
- for (var _len4 = arguments.length, values = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
2109
- values[_key4] = arguments[_key4];
2222
+ for (var _len4 = arguments.length, values = new Array(_len4), _key5 = 0; _key5 < _len4; _key5++) {
2223
+ values[_key5] = arguments[_key5];
2110
2224
  }
2111
- for (var _i16 = 0, _values3 = values; _i16 < _values3.length; _i16++) {
2112
- var value = _values3[_i16];
2225
+ for (var _i22 = 0, _values3 = values; _i22 < _values3.length; _i22++) {
2226
+ var value = _values3[_i22];
2113
2227
  var id = normalizeWalletPassId(value);
2114
2228
  if (id) return id;
2115
2229
  }
2116
2230
  return null;
2117
2231
  }
2118
2232
  function normalizeWalletAssetCodes() {
2119
- for (var _len5 = arguments.length, values = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
2120
- values[_key5] = arguments[_key5];
2233
+ for (var _len5 = arguments.length, values = new Array(_len5), _key6 = 0; _key6 < _len5; _key6++) {
2234
+ values[_key6] = arguments[_key6];
2121
2235
  }
2122
2236
  return Array.from(new Set(values.map(function (value) {
2123
2237
  return normalizeWalletPassId(value);
@@ -2174,6 +2288,7 @@ function buildVoucherAssets(params) {
2174
2288
  var fallbackAssetTime = firstPresentValue(params.order.updated_at, params.order.created_at);
2175
2289
  return normalizeArray(params.order.vouchers).flatMap(function (voucher) {
2176
2290
  if (!voucher || _typeof(voucher) !== 'object' || Array.isArray(voucher)) return [];
2291
+ if (!params.allowAsset(getVoucherAssetIdentity(voucher), voucher.tag)) return [];
2177
2292
  if (!claimWalletAssetIdentity(params.displayedWalletAssetIdentities, getVoucherAssetIdentity(voucher))) return [];
2178
2293
  var name = getVoucherAssetName(voucher, params.locale);
2179
2294
  var assetTime = firstPresentValue(voucher.updated_at, voucher.created_at, voucher.collection_time, fallbackAssetTime);
@@ -2334,9 +2449,9 @@ function formatVoucherDiscount(percent, locale) {
2334
2449
  return normalizedLocale === 'en' ? "Discount ".concat(trimDecimal(percent), "% OFF") : "".concat(trimDecimal(percent), "% OFF");
2335
2450
  }
2336
2451
  function getVoucherBalance(voucher) {
2337
- for (var _i17 = 0, _arr10 = [(_voucher$metadata15 = voucher.metadata) === null || _voucher$metadata15 === void 0 ? void 0 : _voucher$metadata15.balance, voucher.balance]; _i17 < _arr10.length; _i17++) {
2452
+ for (var _i23 = 0, _arr14 = [(_voucher$metadata15 = voucher.metadata) === null || _voucher$metadata15 === void 0 ? void 0 : _voucher$metadata15.balance, voucher.balance]; _i23 < _arr14.length; _i23++) {
2338
2453
  var _voucher$metadata15;
2339
- var value = _arr10[_i17];
2454
+ var value = _arr14[_i23];
2340
2455
  if (!isNumericAmount(value)) continue;
2341
2456
  return Decimal.max(new Decimal(value), 0);
2342
2457
  }
@@ -0,0 +1,23 @@
1
+ /** Template children are direct module members; legacy missing values stay visible. */
2
+ export interface InvoiceDataVisibility {
3
+ handover: {
4
+ show: boolean;
5
+ method: boolean;
6
+ fulfillmentTime: boolean;
7
+ };
8
+ customer: {
9
+ show: boolean;
10
+ name: boolean;
11
+ email: boolean;
12
+ phone: boolean;
13
+ };
14
+ card: {
15
+ show: boolean;
16
+ passTypes: ReadonlySet<string> | null;
17
+ };
18
+ }
19
+ export declare function invoiceSettingIsVisible(value: unknown): boolean;
20
+ export declare function getInvoiceTemplateModules(settings: unknown): Record<string, any>[];
21
+ export declare function resolveInvoiceDataVisibility(settings: unknown): InvoiceDataVisibility;
22
+ /** Whether an old unfiltered snapshot is unsafe for this template. */
23
+ export declare function requiresInvoiceDataFiltering(settings: unknown): boolean;
@@ -0,0 +1,64 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ /** Template children are direct module members; legacy missing values stay visible. */
3
+
4
+ export function invoiceSettingIsVisible(value) {
5
+ return value !== 0 && value !== false;
6
+ }
7
+ export function getInvoiceTemplateModules(settings) {
8
+ var _settings$modules;
9
+ if (Array.isArray(settings)) return settings.filter(isRecord);
10
+ if (!isRecord(settings)) return [];
11
+ if (isRecord(settings.template_settings)) {
12
+ return getInvoiceTemplateModules(settings.template_settings);
13
+ }
14
+ var modules = (_settings$modules = settings.modules) !== null && _settings$modules !== void 0 ? _settings$modules : settings.module;
15
+ return Array.isArray(modules) ? modules.filter(isRecord) : [];
16
+ }
17
+ function isRecord(value) {
18
+ return !!value && _typeof(value) === 'object' && !Array.isArray(value);
19
+ }
20
+ export function resolveInvoiceDataVisibility(settings) {
21
+ var modules = getInvoiceTemplateModules(settings);
22
+ // Native templates use the first occurrence of each module.
23
+ var module = function module(key) {
24
+ return modules.find(function (item) {
25
+ return item.key === key;
26
+ });
27
+ };
28
+ var handover = module('handover');
29
+ var customer = module('customer');
30
+ var card = module('card');
31
+ var field = function field(config, key) {
32
+ var _config$key;
33
+ return invoiceSettingIsVisible(config === null || config === void 0 || (_config$key = config[key]) === null || _config$key === void 0 ? void 0 : _config$key.is_show);
34
+ };
35
+ var passTypes = Array.isArray(card === null || card === void 0 ? void 0 : card.pass_type) && card.pass_type.length > 0 ? new Set(card.pass_type.filter(function (tag) {
36
+ return typeof tag === 'string' && tag.length > 0;
37
+ })) : null;
38
+ return {
39
+ handover: {
40
+ show: invoiceSettingIsVisible(handover === null || handover === void 0 ? void 0 : handover.is_show),
41
+ method: field(handover, 'method'),
42
+ fulfillmentTime: field(handover, 'fulfillment_time')
43
+ },
44
+ customer: {
45
+ show: invoiceSettingIsVisible(customer === null || customer === void 0 ? void 0 : customer.is_show),
46
+ name: field(customer, 'name'),
47
+ email: field(customer, 'email'),
48
+ phone: field(customer, 'phone')
49
+ },
50
+ card: {
51
+ show: invoiceSettingIsVisible(card === null || card === void 0 ? void 0 : card.is_show),
52
+ passTypes: passTypes
53
+ }
54
+ };
55
+ }
56
+
57
+ /** Whether an old unfiltered snapshot is unsafe for this template. */
58
+ export function requiresInvoiceDataFiltering(settings) {
59
+ var _resolveInvoiceDataVi = resolveInvoiceDataVisibility(settings),
60
+ handover = _resolveInvoiceDataVi.handover,
61
+ customer = _resolveInvoiceDataVi.customer,
62
+ card = _resolveInvoiceDataVi.card;
63
+ return !handover.show || !handover.method || !handover.fulfillmentTime || !customer.show || !customer.name || !customer.email || !customer.phone || !card.show || card.passTypes !== null;
64
+ }