@fas-core/shared-types 1.0.104 → 1.0.107

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.
package/dist/index.d.mts CHANGED
@@ -391,8 +391,6 @@ interface IAddonConfig extends BaseEntity {
391
391
  quantity: number;
392
392
  sortOrder: number;
393
393
  applyToAll: boolean;
394
- appliesFromPrice?: number;
395
- appliesToPrice?: number;
396
394
  isDefault: boolean;
397
395
  isVisible: boolean;
398
396
  status: boolean;
@@ -505,6 +503,13 @@ interface OfferedAddonGroup {
505
503
  name: string;
506
504
  addons: OfferedAddon[];
507
505
  }
506
+ interface OfferedServicePlan {
507
+ planKey: string;
508
+ name: string;
509
+ description: string;
510
+ longDescription: string;
511
+ price: number;
512
+ }
508
513
  declare const CartStatusEnum: {
509
514
  readonly ACTIVE: "ACTIVE";
510
515
  readonly CONVERTED: "CONVERTED";
@@ -692,13 +697,14 @@ declare const OrderStatusEnum: {
692
697
  readonly PARTIALLY_REFUNDED: "PARTIALLY_REFUNDED";
693
698
  readonly QUOTE_REQUESTED: "QUOTE_REQUESTED";
694
699
  readonly QUOTE_OPEN: "QUOTE_OPEN";
700
+ readonly QUOTE_APPROVED: "QUOTE_APPROVED";
695
701
  readonly QUOTE_PROCESSED: "QUOTE_PROCESSED";
696
702
  readonly QUOTE_CLOSED: "QUOTE_CLOSED";
697
703
  readonly QUOTE_VOIDED: "QUOTE_VOIDED";
698
704
  readonly QUOTE_EXPIRED: "QUOTE_EXPIRED";
699
705
  };
700
706
  type OrderStatusEnum = (typeof OrderStatusEnum)[keyof typeof OrderStatusEnum];
701
- declare const ORDER_STATUS_VALUES: ("CANCELLED" | "REFUNDED" | "PARTIALLY_REFUNDED" | "CREATED" | "PAYMENT_FAILED" | "PENDING_APPROVAL" | "PENDING_FULFILLMENT" | "PARTIALLY_FULFILLED" | "PENDING_BILLING" | "BILLED" | "CLOSED" | "PENDING_RECEIPT" | "PENDING_REFUND" | "QUOTE_REQUESTED" | "QUOTE_OPEN" | "QUOTE_PROCESSED" | "QUOTE_CLOSED" | "QUOTE_VOIDED" | "QUOTE_EXPIRED")[];
707
+ declare const ORDER_STATUS_VALUES: ("CANCELLED" | "REFUNDED" | "PARTIALLY_REFUNDED" | "CREATED" | "PAYMENT_FAILED" | "PENDING_APPROVAL" | "PENDING_FULFILLMENT" | "PARTIALLY_FULFILLED" | "PENDING_BILLING" | "BILLED" | "CLOSED" | "PENDING_RECEIPT" | "PENDING_REFUND" | "QUOTE_REQUESTED" | "QUOTE_OPEN" | "QUOTE_APPROVED" | "QUOTE_PROCESSED" | "QUOTE_CLOSED" | "QUOTE_VOIDED" | "QUOTE_EXPIRED")[];
702
708
  declare const statusColors: Record<OrderStatusEnum, string>;
703
709
  declare const PURCHASE_ORDER_STATUSES: OrderStatusEnum[];
704
710
  declare const OPEN_ORDER_STATUSES: OrderStatusEnum[];
@@ -814,6 +820,10 @@ declare const ADMIN_RESOURCE_LIST: readonly [{
814
820
  readonly value: "addon-configs";
815
821
  readonly label: "Addon Configs";
816
822
  readonly group: "Catalog";
823
+ }, {
824
+ readonly value: "service-plans";
825
+ readonly label: "Service Plans";
826
+ readonly group: "Catalog";
817
827
  }, {
818
828
  readonly value: "relation-groups";
819
829
  readonly label: "Relation Groups";
@@ -911,7 +921,7 @@ declare const ADMIN_RESOURCE_LIST: readonly [{
911
921
  readonly label: "Account";
912
922
  readonly group: "Settings";
913
923
  }];
914
- declare const ADMIN_RESOURCES: ("stores" | "categories" | "podcast" | "blog" | "dashboard" | "metrics" | "products" | "brands" | "technical-specs" | "addon-configs" | "relation-groups" | "configurators" | "orders" | "quotes" | "carts" | "transactions" | "coupons" | "store-fees" | "tax-rates" | "customers" | "contact-us" | "subscribers" | "faqs" | "email-templates" | "notifications" | "campaigns" | "currencies" | "redirects" | "cache" | "admins" | "account")[];
924
+ declare const ADMIN_RESOURCES: ("stores" | "categories" | "podcast" | "blog" | "dashboard" | "metrics" | "products" | "brands" | "technical-specs" | "addon-configs" | "service-plans" | "relation-groups" | "configurators" | "orders" | "quotes" | "carts" | "transactions" | "coupons" | "store-fees" | "tax-rates" | "customers" | "contact-us" | "subscribers" | "faqs" | "email-templates" | "notifications" | "campaigns" | "currencies" | "redirects" | "cache" | "admins" | "account")[];
915
925
  type IAdminResource = (typeof ADMIN_RESOURCE_LIST)[number]['value'];
916
926
  declare const ADMIN_ACTIONS: readonly ["read", "write", "delete"];
917
927
  type IAdminBaseAction = (typeof ADMIN_ACTIONS)[number];
@@ -1013,6 +1023,43 @@ interface IContact extends BaseEntity {
1013
1023
  resolvedAt?: Date;
1014
1024
  }
1015
1025
 
1026
+ declare const SERVICE_PLAN_ELIGIBILITY_FIELD = "custitem520";
1027
+
1028
+ interface IServicePlan extends BaseEntity {
1029
+ key: string;
1030
+ name: string;
1031
+ description: string;
1032
+ longDescription: string;
1033
+ price: number;
1034
+ appliesFromPrice?: number;
1035
+ appliesToPrice?: number;
1036
+ sortOrder: number;
1037
+ isVisible: boolean;
1038
+ status: boolean;
1039
+ stores: IStore[];
1040
+ netsuite?: ServicePlanNetsuiteLink | null;
1041
+ }
1042
+ interface ServicePlanNetsuiteLink {
1043
+ itemId: string;
1044
+ itemName?: string;
1045
+ syncedAt?: Date;
1046
+ }
1047
+ interface ICartServicePlanSnapshot {
1048
+ id: string;
1049
+ key: string;
1050
+ name: string;
1051
+ description: string;
1052
+ price: number;
1053
+ netsuiteItemId?: string;
1054
+ }
1055
+
1056
+ interface ProductServicePlanScope {
1057
+ storeId?: string;
1058
+ productPrice?: number;
1059
+ productFlags?: Record<string, boolean | undefined>;
1060
+ }
1061
+ declare const resolveProductServicePlans: (plans: IServicePlan[], scope?: ProductServicePlanScope, requiresField?: string) => IServicePlan[];
1062
+
1016
1063
  interface ITechnicalSpecColumn extends BaseEntity {
1017
1064
  name: string;
1018
1065
  key: string;
@@ -1352,6 +1399,13 @@ interface PricedLineLike {
1352
1399
  };
1353
1400
  metaData?: unknown;
1354
1401
  }
1402
+ interface LineChargeInput extends AddonAmountInput {
1403
+ key: string;
1404
+ name: string;
1405
+ kind: "addon" | "servicePlan";
1406
+ netsuiteItemId?: string;
1407
+ }
1408
+ declare const chargesOfLine: (line: PricedLineLike) => LineChargeInput[];
1355
1409
  declare const addonsOfLine: (line: PricedLineLike) => AddonAmountInput[];
1356
1410
  declare const baseUnitPriceOfLine: (line: PricedLineLike) => number | null;
1357
1411
  declare const feeHint: (fee: IAppliedFee) => string;
@@ -2181,7 +2235,7 @@ declare const RELATION_FIELDS: {
2181
2235
  readonly target: "relationGroups.models-available";
2182
2236
  readonly policy: "seed";
2183
2237
  readonly pending: true;
2184
- readonly note: "Populated on 1,365 items. No relation group is seeded for it yet.";
2238
+ readonly note: string;
2185
2239
  };
2186
2240
  };
2187
2241
 
@@ -2553,13 +2607,6 @@ declare const addonFields: NetsuiteFieldProvider<{
2553
2607
  readonly conditional: true;
2554
2608
  readonly note: string;
2555
2609
  };
2556
- readonly priceBand: {
2557
- readonly before: "featureddescription";
2558
- readonly target: "appliesFromPrice / appliesToPrice";
2559
- readonly policy: "always";
2560
- readonly conditional: true;
2561
- readonly note: string;
2562
- };
2563
2610
  readonly eligibilityGate: {
2564
2611
  readonly before: "custitem520";
2565
2612
  readonly target: "AddonGroup.netsuite.requiresField";
@@ -2567,6 +2614,92 @@ declare const addonFields: NetsuiteFieldProvider<{
2567
2614
  readonly note: string;
2568
2615
  };
2569
2616
  }>;
2617
+ declare const servicePlanFields: NetsuiteFieldProvider<{
2618
+ readonly netsuiteItemId: {
2619
+ readonly before: "item.id";
2620
+ readonly target: "netsuite.itemId";
2621
+ readonly policy: "always";
2622
+ readonly conditional: true;
2623
+ readonly note: string;
2624
+ };
2625
+ readonly netsuiteItemName: {
2626
+ readonly before: "item.itemid";
2627
+ readonly target: "netsuite.itemName";
2628
+ readonly policy: "always";
2629
+ readonly conditional: true;
2630
+ readonly note: "A native NetSuite item field, not a SuiteCommerce one, so it survives the cutover.";
2631
+ };
2632
+ readonly key: {
2633
+ readonly before: "urlcomponent";
2634
+ readonly target: "key";
2635
+ readonly policy: "always";
2636
+ readonly identity: true;
2637
+ readonly note: string;
2638
+ readonly caution: "Changing urlcomponent in NetSuite orphans the existing plan and creates a new one.";
2639
+ };
2640
+ readonly name: {
2641
+ readonly before: "storedisplayname";
2642
+ readonly target: "name";
2643
+ readonly policy: "always";
2644
+ readonly conditional: true;
2645
+ readonly note: "A native NetSuite item field, not a SuiteCommerce one, so it survives the cutover.";
2646
+ };
2647
+ readonly webVisible: {
2648
+ readonly before: "isonline";
2649
+ readonly target: "isVisible";
2650
+ readonly policy: "always";
2651
+ readonly conditional: true;
2652
+ readonly note: string;
2653
+ };
2654
+ readonly active: {
2655
+ readonly before: "isinactive";
2656
+ readonly target: "status";
2657
+ readonly policy: "always";
2658
+ readonly conditional: true;
2659
+ readonly note: string;
2660
+ };
2661
+ readonly price: {
2662
+ readonly before: "itemprice at price level 1";
2663
+ readonly target: "price";
2664
+ readonly policy: "always";
2665
+ readonly conditional: true;
2666
+ readonly note: string;
2667
+ };
2668
+ readonly sellingPoints: {
2669
+ readonly before: "salesdescription";
2670
+ readonly target: "description";
2671
+ readonly policy: "always";
2672
+ readonly conditional: true;
2673
+ readonly note: string;
2674
+ };
2675
+ readonly detail: {
2676
+ readonly before: "storedetaileddescription";
2677
+ readonly target: "longDescription";
2678
+ readonly policy: "always";
2679
+ readonly conditional: true;
2680
+ readonly note: string;
2681
+ };
2682
+ readonly bandFrom: {
2683
+ readonly before: "featureddescription";
2684
+ readonly target: "appliesFromPrice";
2685
+ readonly policy: "always";
2686
+ readonly conditional: true;
2687
+ readonly note: "NetSuite states the applicable range in prose — \"for select tools between $600 and $1,200\" — so that prose is the source. Read into a half-open range (from <= price < to) so neighbouring tiers cannot both match. Stating no range means the plan applies at any price, which is how NIST CERT and Pre-set are offered.";
2688
+ };
2689
+ readonly bandTo: {
2690
+ readonly before: "featureddescription";
2691
+ readonly target: "appliesToPrice";
2692
+ readonly policy: "always";
2693
+ readonly conditional: true;
2694
+ readonly note: "NetSuite states the applicable range in prose — \"for select tools between $600 and $1,200\" — so that prose is the source. Read into a half-open range (from <= price < to) so neighbouring tiers cannot both match. Stating no range means the plan applies at any price, which is how NIST CERT and Pre-set are offered.";
2695
+ };
2696
+ readonly sortOrder: {
2697
+ readonly before: "storedisplayname (ordering)";
2698
+ readonly target: "sortOrder";
2699
+ readonly policy: "always";
2700
+ readonly note: string;
2701
+ };
2702
+ }>;
2570
2703
  declare const brandFields: NetsuiteFieldProvider<{
2571
2704
  readonly name: {
2572
2705
  readonly before: "commercecategory.name";
@@ -3688,19 +3821,97 @@ declare const PROVIDERS: readonly [NetsuiteFieldProvider<{
3688
3821
  readonly conditional: true;
3689
3822
  readonly note: string;
3690
3823
  };
3691
- readonly priceBand: {
3692
- readonly before: "featureddescription";
3693
- readonly target: "appliesFromPrice / appliesToPrice";
3694
- readonly policy: "always";
3695
- readonly conditional: true;
3696
- readonly note: string;
3697
- };
3698
3824
  readonly eligibilityGate: {
3699
3825
  readonly before: "custitem520";
3700
3826
  readonly target: "AddonGroup.netsuite.requiresField";
3701
3827
  readonly policy: "seed";
3702
3828
  readonly note: string;
3703
3829
  };
3830
+ }>, NetsuiteFieldProvider<{
3831
+ readonly netsuiteItemId: {
3832
+ readonly before: "item.id";
3833
+ readonly target: "netsuite.itemId";
3834
+ readonly policy: "always";
3835
+ readonly conditional: true;
3836
+ readonly note: string;
3837
+ };
3838
+ readonly netsuiteItemName: {
3839
+ readonly before: "item.itemid";
3840
+ readonly target: "netsuite.itemName";
3841
+ readonly policy: "always";
3842
+ readonly conditional: true;
3843
+ readonly note: "A native NetSuite item field, not a SuiteCommerce one, so it survives the cutover.";
3844
+ };
3845
+ readonly key: {
3846
+ readonly before: "urlcomponent";
3847
+ readonly target: "key";
3848
+ readonly policy: "always";
3849
+ readonly identity: true;
3850
+ readonly note: string;
3851
+ readonly caution: "Changing urlcomponent in NetSuite orphans the existing plan and creates a new one.";
3852
+ };
3853
+ readonly name: {
3854
+ readonly before: "storedisplayname";
3855
+ readonly target: "name";
3856
+ readonly policy: "always";
3857
+ readonly conditional: true;
3858
+ readonly note: "A native NetSuite item field, not a SuiteCommerce one, so it survives the cutover.";
3859
+ };
3860
+ readonly webVisible: {
3861
+ readonly before: "isonline";
3862
+ readonly target: "isVisible";
3863
+ readonly policy: "always";
3864
+ readonly conditional: true;
3865
+ readonly note: string;
3866
+ };
3867
+ readonly active: {
3868
+ readonly before: "isinactive";
3869
+ readonly target: "status";
3870
+ readonly policy: "always";
3871
+ readonly conditional: true;
3872
+ readonly note: string;
3873
+ };
3874
+ readonly price: {
3875
+ readonly before: "itemprice at price level 1";
3876
+ readonly target: "price";
3877
+ readonly policy: "always";
3878
+ readonly conditional: true;
3879
+ readonly note: string;
3880
+ };
3881
+ readonly sellingPoints: {
3882
+ readonly before: "salesdescription";
3883
+ readonly target: "description";
3884
+ readonly policy: "always";
3885
+ readonly conditional: true;
3886
+ readonly note: string;
3887
+ };
3888
+ readonly detail: {
3889
+ readonly before: "storedetaileddescription";
3890
+ readonly target: "longDescription";
3891
+ readonly policy: "always";
3892
+ readonly conditional: true;
3893
+ readonly note: string;
3894
+ };
3895
+ readonly bandFrom: {
3896
+ readonly before: "featureddescription";
3897
+ readonly target: "appliesFromPrice";
3898
+ readonly policy: "always";
3899
+ readonly conditional: true;
3900
+ readonly note: "NetSuite states the applicable range in prose — \"for select tools between $600 and $1,200\" — so that prose is the source. Read into a half-open range (from <= price < to) so neighbouring tiers cannot both match. Stating no range means the plan applies at any price, which is how NIST CERT and Pre-set are offered.";
3901
+ };
3902
+ readonly bandTo: {
3903
+ readonly before: "featureddescription";
3904
+ readonly target: "appliesToPrice";
3905
+ readonly policy: "always";
3906
+ readonly conditional: true;
3907
+ readonly note: "NetSuite states the applicable range in prose — \"for select tools between $600 and $1,200\" — so that prose is the source. Read into a half-open range (from <= price < to) so neighbouring tiers cannot both match. Stating no range means the plan applies at any price, which is how NIST CERT and Pre-set are offered.";
3908
+ };
3909
+ readonly sortOrder: {
3910
+ readonly before: "storedisplayname (ordering)";
3911
+ readonly target: "sortOrder";
3912
+ readonly policy: "always";
3913
+ readonly note: string;
3914
+ };
3704
3915
  }>, NetsuiteFieldProvider<{
3705
3916
  readonly name: {
3706
3917
  readonly before: "commercecategory.name";
@@ -3951,7 +4162,7 @@ declare const PROVIDERS: readonly [NetsuiteFieldProvider<{
3951
4162
  readonly target: "relationGroups.models-available";
3952
4163
  readonly policy: "seed";
3953
4164
  readonly pending: true;
3954
- readonly note: "Populated on 1,365 items. No relation group is seeded for it yet.";
4165
+ readonly note: string;
3955
4166
  };
3956
4167
  }>, NetsuiteFieldProvider<{
3957
4168
  netsuiteId: {
@@ -4869,13 +5080,6 @@ declare const BY_ENTITY: {
4869
5080
  readonly conditional: true;
4870
5081
  readonly note: string;
4871
5082
  };
4872
- readonly priceBand: {
4873
- readonly before: "featureddescription";
4874
- readonly target: "appliesFromPrice / appliesToPrice";
4875
- readonly policy: "always";
4876
- readonly conditional: true;
4877
- readonly note: string;
4878
- };
4879
5083
  readonly eligibilityGate: {
4880
5084
  readonly before: "custitem520";
4881
5085
  readonly target: "AddonGroup.netsuite.requiresField";
@@ -4883,6 +5087,92 @@ declare const BY_ENTITY: {
4883
5087
  readonly note: string;
4884
5088
  };
4885
5089
  }>;
5090
+ readonly 'service-plan': NetsuiteFieldProvider<{
5091
+ readonly netsuiteItemId: {
5092
+ readonly before: "item.id";
5093
+ readonly target: "netsuite.itemId";
5094
+ readonly policy: "always";
5095
+ readonly conditional: true;
5096
+ readonly note: string;
5097
+ };
5098
+ readonly netsuiteItemName: {
5099
+ readonly before: "item.itemid";
5100
+ readonly target: "netsuite.itemName";
5101
+ readonly policy: "always";
5102
+ readonly conditional: true;
5103
+ readonly note: "A native NetSuite item field, not a SuiteCommerce one, so it survives the cutover.";
5104
+ };
5105
+ readonly key: {
5106
+ readonly before: "urlcomponent";
5107
+ readonly target: "key";
5108
+ readonly policy: "always";
5109
+ readonly identity: true;
5110
+ readonly note: string;
5111
+ readonly caution: "Changing urlcomponent in NetSuite orphans the existing plan and creates a new one.";
5112
+ };
5113
+ readonly name: {
5114
+ readonly before: "storedisplayname";
5115
+ readonly target: "name";
5116
+ readonly policy: "always";
5117
+ readonly conditional: true;
5118
+ readonly note: "A native NetSuite item field, not a SuiteCommerce one, so it survives the cutover.";
5119
+ };
5120
+ readonly webVisible: {
5121
+ readonly before: "isonline";
5122
+ readonly target: "isVisible";
5123
+ readonly policy: "always";
5124
+ readonly conditional: true;
5125
+ readonly note: string;
5126
+ };
5127
+ readonly active: {
5128
+ readonly before: "isinactive";
5129
+ readonly target: "status";
5130
+ readonly policy: "always";
5131
+ readonly conditional: true;
5132
+ readonly note: string;
5133
+ };
5134
+ readonly price: {
5135
+ readonly before: "itemprice at price level 1";
5136
+ readonly target: "price";
5137
+ readonly policy: "always";
5138
+ readonly conditional: true;
5139
+ readonly note: string;
5140
+ };
5141
+ readonly sellingPoints: {
5142
+ readonly before: "salesdescription";
5143
+ readonly target: "description";
5144
+ readonly policy: "always";
5145
+ readonly conditional: true;
5146
+ readonly note: string;
5147
+ };
5148
+ readonly detail: {
5149
+ readonly before: "storedetaileddescription";
5150
+ readonly target: "longDescription";
5151
+ readonly policy: "always";
5152
+ readonly conditional: true;
5153
+ readonly note: string;
5154
+ };
5155
+ readonly bandFrom: {
5156
+ readonly before: "featureddescription";
5157
+ readonly target: "appliesFromPrice";
5158
+ readonly policy: "always";
5159
+ readonly conditional: true;
5160
+ readonly note: "NetSuite states the applicable range in prose — \"for select tools between $600 and $1,200\" — so that prose is the source. Read into a half-open range (from <= price < to) so neighbouring tiers cannot both match. Stating no range means the plan applies at any price, which is how NIST CERT and Pre-set are offered.";
5161
+ };
5162
+ readonly bandTo: {
5163
+ readonly before: "featureddescription";
5164
+ readonly target: "appliesToPrice";
5165
+ readonly policy: "always";
5166
+ readonly conditional: true;
5167
+ readonly note: "NetSuite states the applicable range in prose — \"for select tools between $600 and $1,200\" — so that prose is the source. Read into a half-open range (from <= price < to) so neighbouring tiers cannot both match. Stating no range means the plan applies at any price, which is how NIST CERT and Pre-set are offered.";
5168
+ };
5169
+ readonly sortOrder: {
5170
+ readonly before: "storedisplayname (ordering)";
5171
+ readonly target: "sortOrder";
5172
+ readonly policy: "always";
5173
+ readonly note: string;
5174
+ };
5175
+ }>;
4886
5176
  readonly brand: NetsuiteFieldProvider<{
4887
5177
  readonly name: {
4888
5178
  readonly before: "commercecategory.name";
@@ -5747,6 +6037,13 @@ interface NetsuiteLinkResult {
5747
6037
  created: boolean;
5748
6038
  }
5749
6039
 
6040
+ declare const NetsuiteRecordTypeEnum: {
6041
+ readonly SALES_ORDER: "salesOrder";
6042
+ readonly ESTIMATE: "estimate";
6043
+ readonly CASH_SALE: "cashSale";
6044
+ };
6045
+ type NetsuiteRecordTypeEnum = (typeof NetsuiteRecordTypeEnum)[keyof typeof NetsuiteRecordTypeEnum];
6046
+ declare const NETSUITE_RECORD_TYPE_VALUES: ("salesOrder" | "estimate" | "cashSale")[];
5750
6047
  declare const PushCheckStatusEnum: {
5751
6048
  readonly PASS: "pass";
5752
6049
  readonly WARN: "warn";
@@ -5850,6 +6147,42 @@ interface NetsuiteSyncDefinition {
5850
6147
  fields: string[];
5851
6148
  source: string;
5852
6149
  }
6150
+ interface NetsuiteCashSaleCheck {
6151
+ key: string;
6152
+ label: string;
6153
+ status: "pass" | "fail";
6154
+ detail?: string;
6155
+ }
6156
+ interface NetsuiteCashSaleReceipt {
6157
+ id: string;
6158
+ tranId?: string;
6159
+ status?: string;
6160
+ total?: number;
6161
+ postingPeriod?: string;
6162
+ paymentReference?: string;
6163
+ createdFrom?: string;
6164
+ recordUrl?: string;
6165
+ httpStatus?: number;
6166
+ pushedAt?: Date | string;
6167
+ checks?: NetsuiteCashSaleCheck[];
6168
+ totalMismatch?: {
6169
+ charged: number;
6170
+ landed: number;
6171
+ drift: number;
6172
+ };
6173
+ lastError?: {
6174
+ message: string;
6175
+ failedAt?: Date | string;
6176
+ };
6177
+ }
6178
+ interface NetsuiteCashSalePreview {
6179
+ orderId: string;
6180
+ checks: NetsuiteCashSaleCheck[];
6181
+ blockers: string[];
6182
+ canBill: boolean;
6183
+ writesEnabled: boolean;
6184
+ alreadyBilled: NetsuiteCashSaleReceipt | null;
6185
+ }
5853
6186
 
5854
6187
  interface RevalidationResult {
5855
6188
  domain: string;
@@ -5954,4 +6287,4 @@ interface IWishlist extends BaseEntity {
5954
6287
  items: IWishlistItem[];
5955
6288
  }
5956
6289
 
5957
- export { ACTIVE_SUBSCRIPTION_CHANNELS, ADMIN_ACTIONS, ADMIN_AUDIT_ACTIONS, ADMIN_RESOURCES, ADMIN_RESOURCE_LIST, ALL_STORES, AWAITING_PAYMENT_STATUSES, type AddonAmountInput, type AddonGroupNetsuiteLink, type AddonNetsuiteLink, type AddonSelectionRef, type AddonSnapshot, type ApiResponse, type AppliedTax, BRAND_FIELDS, type BaseEntity, CAMPAIGN_RECIPIENT_STATUS_VALUES, CAMPAIGN_STATUS_VALUES, CART_STATUS_VALUES, CATEGORY_FIELDS, CONFIGURATOR_CONDITION_TYPE_VALUES, CONFIGURATOR_EFFECT_TYPE_VALUES, CONFIGURATOR_SELECT_MODE_VALUES, CONFIGURATOR_SOURCE_VALUES, type CacheStatus, type CacheStoreTarget, CampaignRecipientStatusEnum, CampaignStatusEnum, type CartIssue, type CartIssueType, CartIssueTypes, CartStatusEnum, type CartValidation, type CategoryImportSummary, type CheckoutAddressInput, type CheckoutPayload, type CheckoutResult, ConfiguratorConditionTypeEnum, ConfiguratorEffectTypeEnum, ConfiguratorErrorCodeEnum, type ConfiguratorEvalContext, type ConfiguratorEvalError, type ConfiguratorEvalResult, ConfiguratorSelectModeEnum, type ConfiguratorSelections, ConfiguratorSourceEnum, type CouponNetsuiteLink, DEFAULT_SUBSCRIPTION_TOPICS, DISCOUNT_TYPE_VALUES, DiscountTypeEnum, EMAIL_PARAM_MISMATCH_KIND_VALUES, EMAIL_TEMPLATE_EVENT_VALUES, EMAIL_TEMPLATE_VARIABLES_BY_EVENT, EMPTY_ACCESS, type EffectiveAccess, type EmailParamMismatch, EmailParamMismatchKindEnum, EmailTemplateEventEnum, FEE_APPLIES_TO_VALUES, FeeAppliesToEnum, type FieldMap, type FieldMapping, type FieldSource, type IAddonConfig, type IAddonGroup, type IAddress, type IAdmin, type IAdminAction, type IAdminAuditAction, type IAdminAuditLog, type IAdminBaseAction, type IAdminPermission, type IAdminResource, type IAdminRole, type IAdminRoleCreate, type IAdminSafe, type IAdminStoreAccess, type IAppliedFee, type IBannerSlide, type IBlogAuthor, type IBlogCategory, type IBlogPost, type IBrand, type ICampaign, type ICampaignRecipient, type ICampaignStats, type ICart, type ICartItem, type ICategory, type ICategorySubcategory, type IConfigurator, type IConfiguratorCondition, type IConfiguratorEffect, type IConfiguratorFacet, type IConfiguratorFacetValue, type IConfiguratorOption, type IConfiguratorPriceAdjustment, type IConfiguratorQuery, type IConfiguratorRule, type IConfiguratorSection, type IConfiguratorStep, type IConfiguratorTarget, type IContact, type ICountry, type ICoupon, type ICurrency, type ICustomer, type IDiscountType, type IEmailTemplate, type IFaq, type IFaqCategory, type IKeyValue, type ILinePricing, type IMediaAsset, INVENTORY_POLICY_VALUES, type INetsuiteEvent, type INetsuiteOrderLink, type INetsuiteQueueEntry, type INotification, type IOrder, type IOrderItem, type IOrderLog, type IOrderShipment, type IOrderTransaction, type IPaymentLink, type IPodcastEpisode, type IPrice, type IProduct, type IProductDailyStat, type IProductRelationGroup, type IProductTechnicalSpec, type IProductTechnicalSpecTable, type IProductVariantFields, type IProductVariantOptionGroup, type IProductVariantOptionMatrix, type IProductVariantOptionValue, type IRedirect, type IRedirectSuggestion, type IRefundTransaction, type IRelationGroup, type ISEOMetaData, type ISelectableFee, type IShipFromAddress, type IShipping, type IShippingRate, type IState, type IStock, type IStore, type IStoreFee, type IStoreSettings, type ISubscriber, type ISubscriberConsent, type ISubscription, type ISummaryPricing, type ITaxRate, type ITechnicalSpecColumn, type ITechnicalSpecGroup, type ITransactionBase, type IUnmatched404, type IVariant, type IVariantOptionSelection, type IWishlist, type IWishlistItem, type Id, type InventoryPolicy, InventoryPolicyEnum, type MatchResult, type Metadata, NETSUITE_EVENT_STATE_VALUES, NETSUITE_OWNED_FIELDS, NETSUITE_RELATION_GROUPS, NOTIFICATION_TYPE_VALUES, NetsuiteEventStateEnum, NetsuiteFieldProvider, type NetsuiteLinkResult, type NetsuiteOrderPreview, type NetsuiteOwnedEntity, type NetsuitePreviewLine, type NetsuiteReceipt, type NetsuiteRelationSource, type NetsuiteSyncDefinition, NotificationTypeEnum, OPEN_ORDER_STATUSES, ORDER_LOG_TYPE_VALUES, ORDER_STATUS_VALUES, type OfferedAddon, type OfferedAddonGroup, OrderLogTypeEnum, OrderStatusEnum, PAYMENT_GATEWAY_VALUES, PAYMENT_LINK_STATUS_VALUES, PAYMENT_METHOD_VALUES, PAYMENT_STATUS_VALUES, PRICING_TYPE_VALUES, PRODUCT_FIELDS, PRODUCT_VARIANT_TYPE_VALUES, PROVIDERS, PURCHASE_ORDER_STATUSES, PUSH_CHECK_STATUS_VALUES, PaymentGatewayEnum, PaymentLinkStatusEnum, PaymentMethodEnum, PaymentStatusEnum, type PricedLineLike, type PricingType, PricingTypeEnum, type ProductAddonScope, ProductEventTypeEnum, type ProductVariantType, ProductVariantTypeEnum, type PromotionSyncResult, type PushCheck, PushCheckStatusEnum, type PushField, QUOTE_ORDER_STATUSES, RELATION_FIELDS, RESOURCE_OPERATIONS, RETIRED_CART_STATUSES, type RedirectTargetType, type ResolveAccessInput, type ResolvedAddonSelection, type RevalidationResult, SALE_TYPE_VALUES, SUBSCRIPTION_CHANNEL_VALUES, SUBSCRIPTION_TOPIC_LABELS, SUBSCRIPTION_TOPIC_VALUES, type SaleType, SaleTypeEnum, type SaleTypedLike, type SelectedShippingMethod, type StockDemandLine, type StockStatus, StockStatusEnum, type StockVerdict, StockVerdictEnum, type StoreAccessCheckInput, type StoreScopeInput, SubscriptionChannelEnum, SubscriptionTopicEnum, type SyncPolicy, type SyncRisk, TAX_RATE_SOURCE_VALUES, TRANSACTION_TYPE_VALUES, TaxRateSourceEnum, type TaxSyncResult, TransactionTypeEnum, type VariantOptionMode, WIRED_EMAIL_TEMPLATE_EVENTS, actionsForResource, addonFields, addonUnitAmount, addonsOfLine, addonsUnitAmount, adjustmentsFor, applyPriceAdjustments, baseUnitPriceOfLine, blogAuthorFields, blogCategoryFields, blogPostFields, brandFields, can, canAny, canonicalizePath, canonicalizeSlug, categoryFields, conditionHolds, couponFields, demandByKey, evaluateConfigurator, feeHint, formatMoney, grantedPermissions, groupHasDefaultAddon, hasStoreAccess, isConfigurationValid, isNetsuiteOwned, isNonEmptyString, isQuoteOnlyItem, isValidAction, isValidEmail, missingGrants, netsuiteFieldCaution, netsuiteFieldConditional, netsuiteFieldNote, netsuiteFieldRisk, netsuiteFieldSource, netsuiteRelationSource, normalizeLineQuantity, normalizeNumber, normalizePath, orderLogTypeColorMap, paymentLinkStatusColorMap, paymentMethodColorMap, paymentStatusColorMap, podcastFields, productFields, readMapped, resolveAddonSelections, resolveEffectivePermissions, resolveProductAddonGroups, resolveStoreScope, roundMoney, saleTypeOf, statusColors, stockVerdict, syncOwnerFor, toIdString, typeColorMap };
6290
+ export { ACTIVE_SUBSCRIPTION_CHANNELS, ADMIN_ACTIONS, ADMIN_AUDIT_ACTIONS, ADMIN_RESOURCES, ADMIN_RESOURCE_LIST, ALL_STORES, AWAITING_PAYMENT_STATUSES, type AddonAmountInput, type AddonGroupNetsuiteLink, type AddonNetsuiteLink, type AddonSelectionRef, type AddonSnapshot, type ApiResponse, type AppliedTax, BRAND_FIELDS, type BaseEntity, CAMPAIGN_RECIPIENT_STATUS_VALUES, CAMPAIGN_STATUS_VALUES, CART_STATUS_VALUES, CATEGORY_FIELDS, CONFIGURATOR_CONDITION_TYPE_VALUES, CONFIGURATOR_EFFECT_TYPE_VALUES, CONFIGURATOR_SELECT_MODE_VALUES, CONFIGURATOR_SOURCE_VALUES, type CacheStatus, type CacheStoreTarget, CampaignRecipientStatusEnum, CampaignStatusEnum, type CartIssue, type CartIssueType, CartIssueTypes, CartStatusEnum, type CartValidation, type CategoryImportSummary, type CheckoutAddressInput, type CheckoutPayload, type CheckoutResult, ConfiguratorConditionTypeEnum, ConfiguratorEffectTypeEnum, ConfiguratorErrorCodeEnum, type ConfiguratorEvalContext, type ConfiguratorEvalError, type ConfiguratorEvalResult, ConfiguratorSelectModeEnum, type ConfiguratorSelections, ConfiguratorSourceEnum, type CouponNetsuiteLink, DEFAULT_SUBSCRIPTION_TOPICS, DISCOUNT_TYPE_VALUES, DiscountTypeEnum, EMAIL_PARAM_MISMATCH_KIND_VALUES, EMAIL_TEMPLATE_EVENT_VALUES, EMAIL_TEMPLATE_VARIABLES_BY_EVENT, EMPTY_ACCESS, type EffectiveAccess, type EmailParamMismatch, EmailParamMismatchKindEnum, EmailTemplateEventEnum, FEE_APPLIES_TO_VALUES, FeeAppliesToEnum, type FieldMap, type FieldMapping, type FieldSource, type IAddonConfig, type IAddonGroup, type IAddress, type IAdmin, type IAdminAction, type IAdminAuditAction, type IAdminAuditLog, type IAdminBaseAction, type IAdminPermission, type IAdminResource, type IAdminRole, type IAdminRoleCreate, type IAdminSafe, type IAdminStoreAccess, type IAppliedFee, type IBannerSlide, type IBlogAuthor, type IBlogCategory, type IBlogPost, type IBrand, type ICampaign, type ICampaignRecipient, type ICampaignStats, type ICart, type ICartItem, type ICartServicePlanSnapshot, type ICategory, type ICategorySubcategory, type IConfigurator, type IConfiguratorCondition, type IConfiguratorEffect, type IConfiguratorFacet, type IConfiguratorFacetValue, type IConfiguratorOption, type IConfiguratorPriceAdjustment, type IConfiguratorQuery, type IConfiguratorRule, type IConfiguratorSection, type IConfiguratorStep, type IConfiguratorTarget, type IContact, type ICountry, type ICoupon, type ICurrency, type ICustomer, type IDiscountType, type IEmailTemplate, type IFaq, type IFaqCategory, type IKeyValue, type ILinePricing, type IMediaAsset, INVENTORY_POLICY_VALUES, type INetsuiteEvent, type INetsuiteOrderLink, type INetsuiteQueueEntry, type INotification, type IOrder, type IOrderItem, type IOrderLog, type IOrderShipment, type IOrderTransaction, type IPaymentLink, type IPodcastEpisode, type IPrice, type IProduct, type IProductDailyStat, type IProductRelationGroup, type IProductTechnicalSpec, type IProductTechnicalSpecTable, type IProductVariantFields, type IProductVariantOptionGroup, type IProductVariantOptionMatrix, type IProductVariantOptionValue, type IRedirect, type IRedirectSuggestion, type IRefundTransaction, type IRelationGroup, type ISEOMetaData, type ISelectableFee, type IServicePlan, type IShipFromAddress, type IShipping, type IShippingRate, type IState, type IStock, type IStore, type IStoreFee, type IStoreSettings, type ISubscriber, type ISubscriberConsent, type ISubscription, type ISummaryPricing, type ITaxRate, type ITechnicalSpecColumn, type ITechnicalSpecGroup, type ITransactionBase, type IUnmatched404, type IVariant, type IVariantOptionSelection, type IWishlist, type IWishlistItem, type Id, type InventoryPolicy, InventoryPolicyEnum, type LineChargeInput, type MatchResult, type Metadata, NETSUITE_EVENT_STATE_VALUES, NETSUITE_OWNED_FIELDS, NETSUITE_RECORD_TYPE_VALUES, NETSUITE_RELATION_GROUPS, NOTIFICATION_TYPE_VALUES, type NetsuiteCashSaleCheck, type NetsuiteCashSalePreview, type NetsuiteCashSaleReceipt, NetsuiteEventStateEnum, NetsuiteFieldProvider, type NetsuiteLinkResult, type NetsuiteOrderPreview, type NetsuiteOwnedEntity, type NetsuitePreviewLine, type NetsuiteReceipt, NetsuiteRecordTypeEnum, type NetsuiteRelationSource, type NetsuiteSyncDefinition, NotificationTypeEnum, OPEN_ORDER_STATUSES, ORDER_LOG_TYPE_VALUES, ORDER_STATUS_VALUES, type OfferedAddon, type OfferedAddonGroup, type OfferedServicePlan, OrderLogTypeEnum, OrderStatusEnum, PAYMENT_GATEWAY_VALUES, PAYMENT_LINK_STATUS_VALUES, PAYMENT_METHOD_VALUES, PAYMENT_STATUS_VALUES, PRICING_TYPE_VALUES, PRODUCT_FIELDS, PRODUCT_VARIANT_TYPE_VALUES, PROVIDERS, PURCHASE_ORDER_STATUSES, PUSH_CHECK_STATUS_VALUES, PaymentGatewayEnum, PaymentLinkStatusEnum, PaymentMethodEnum, PaymentStatusEnum, type PricedLineLike, type PricingType, PricingTypeEnum, type ProductAddonScope, ProductEventTypeEnum, type ProductServicePlanScope, type ProductVariantType, ProductVariantTypeEnum, type PromotionSyncResult, type PushCheck, PushCheckStatusEnum, type PushField, QUOTE_ORDER_STATUSES, RELATION_FIELDS, RESOURCE_OPERATIONS, RETIRED_CART_STATUSES, type RedirectTargetType, type ResolveAccessInput, type ResolvedAddonSelection, type RevalidationResult, SALE_TYPE_VALUES, SERVICE_PLAN_ELIGIBILITY_FIELD, SUBSCRIPTION_CHANNEL_VALUES, SUBSCRIPTION_TOPIC_LABELS, SUBSCRIPTION_TOPIC_VALUES, type SaleType, SaleTypeEnum, type SaleTypedLike, type SelectedShippingMethod, type ServicePlanNetsuiteLink, type StockDemandLine, type StockStatus, StockStatusEnum, type StockVerdict, StockVerdictEnum, type StoreAccessCheckInput, type StoreScopeInput, SubscriptionChannelEnum, SubscriptionTopicEnum, type SyncPolicy, type SyncRisk, TAX_RATE_SOURCE_VALUES, TRANSACTION_TYPE_VALUES, TaxRateSourceEnum, type TaxSyncResult, TransactionTypeEnum, type VariantOptionMode, WIRED_EMAIL_TEMPLATE_EVENTS, actionsForResource, addonFields, addonUnitAmount, addonsOfLine, addonsUnitAmount, adjustmentsFor, applyPriceAdjustments, baseUnitPriceOfLine, blogAuthorFields, blogCategoryFields, blogPostFields, brandFields, can, canAny, canonicalizePath, canonicalizeSlug, categoryFields, chargesOfLine, conditionHolds, couponFields, demandByKey, evaluateConfigurator, feeHint, formatMoney, grantedPermissions, groupHasDefaultAddon, hasStoreAccess, isConfigurationValid, isNetsuiteOwned, isNonEmptyString, isQuoteOnlyItem, isValidAction, isValidEmail, missingGrants, netsuiteFieldCaution, netsuiteFieldConditional, netsuiteFieldNote, netsuiteFieldRisk, netsuiteFieldSource, netsuiteRelationSource, normalizeLineQuantity, normalizeNumber, normalizePath, orderLogTypeColorMap, paymentLinkStatusColorMap, paymentMethodColorMap, paymentStatusColorMap, podcastFields, productFields, readMapped, resolveAddonSelections, resolveEffectivePermissions, resolveProductAddonGroups, resolveProductServicePlans, resolveStoreScope, roundMoney, saleTypeOf, servicePlanFields, statusColors, stockVerdict, syncOwnerFor, toIdString, typeColorMap };