@fas-core/shared-types 1.0.102 → 1.0.104
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 +4550 -120
- package/dist/index.d.ts +4550 -120
- package/dist/index.js +1181 -56
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1181 -56
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -39,7 +39,6 @@ interface ISEOMetaData {
|
|
|
39
39
|
description: string;
|
|
40
40
|
keywords: string[];
|
|
41
41
|
headerTag: string;
|
|
42
|
-
canonicalUrl: string;
|
|
43
42
|
}
|
|
44
43
|
interface IBannerSlide {
|
|
45
44
|
desktop: string;
|
|
@@ -54,6 +53,7 @@ interface IBannerSlide {
|
|
|
54
53
|
interface IMediaAsset {
|
|
55
54
|
url: string;
|
|
56
55
|
sortOrder: number;
|
|
56
|
+
alt?: string;
|
|
57
57
|
}
|
|
58
58
|
interface IPrice {
|
|
59
59
|
price: number;
|
|
@@ -158,9 +158,15 @@ interface IStore extends BaseEntity {
|
|
|
158
158
|
storeAdmins: Array<string | Types.ObjectId>;
|
|
159
159
|
}
|
|
160
160
|
|
|
161
|
+
declare const DISCOUNT_TYPE_VALUES: ("PERCENTAGE" | "FIXED" | "FREE_SHIPPING")[];
|
|
161
162
|
declare const DiscountTypeEnum: {
|
|
162
163
|
readonly PERCENTAGE: "PERCENTAGE";
|
|
163
164
|
readonly FIXED: "FIXED";
|
|
165
|
+
/**
|
|
166
|
+
* Waives the shipping charge instead of discounting the goods, so `value` is unused and stays 0.
|
|
167
|
+
* NetSuite expresses this as a promotion with a `freeshipmethod` and no rate.
|
|
168
|
+
*/
|
|
169
|
+
readonly FREE_SHIPPING: "FREE_SHIPPING";
|
|
164
170
|
};
|
|
165
171
|
type DiscountTypeEnum = (typeof DiscountTypeEnum)[keyof typeof DiscountTypeEnum];
|
|
166
172
|
interface IDiscountType {
|
|
@@ -169,6 +175,7 @@ interface IDiscountType {
|
|
|
169
175
|
}
|
|
170
176
|
interface ICoupon extends BaseEntity {
|
|
171
177
|
title: string;
|
|
178
|
+
description: string;
|
|
172
179
|
couponCode: string;
|
|
173
180
|
startTime: Date;
|
|
174
181
|
endTime: Date;
|
|
@@ -177,6 +184,20 @@ interface ICoupon extends BaseEntity {
|
|
|
177
184
|
isPromotional: boolean;
|
|
178
185
|
status: boolean;
|
|
179
186
|
stores: IStore[];
|
|
187
|
+
netsuite?: CouponNetsuiteLink | null;
|
|
188
|
+
metaData: Metadata;
|
|
189
|
+
}
|
|
190
|
+
interface CouponNetsuiteLink {
|
|
191
|
+
promotionId: string;
|
|
192
|
+
promotionName?: string;
|
|
193
|
+
couponId?: string;
|
|
194
|
+
discountItemId?: string;
|
|
195
|
+
discountItemName?: string;
|
|
196
|
+
discountReducesTax: boolean;
|
|
197
|
+
singleUse: boolean;
|
|
198
|
+
itemSkus: string[];
|
|
199
|
+
applyDiscountTo?: string;
|
|
200
|
+
syncedAt?: Date | string;
|
|
180
201
|
}
|
|
181
202
|
|
|
182
203
|
interface IBrand extends BaseEntity {
|
|
@@ -189,15 +210,24 @@ interface IBrand extends BaseEntity {
|
|
|
189
210
|
sortOrder: number;
|
|
190
211
|
status: boolean;
|
|
191
212
|
isOnline: boolean;
|
|
213
|
+
netsuiteId: string;
|
|
192
214
|
metaData: Metadata;
|
|
193
215
|
seoMetaData: ISEOMetaData;
|
|
194
216
|
}
|
|
195
217
|
|
|
218
|
+
interface ICategorySubcategory {
|
|
219
|
+
category: ICategory | string;
|
|
220
|
+
name: string;
|
|
221
|
+
urlFragment: string;
|
|
222
|
+
image: string;
|
|
223
|
+
sortOrder: number;
|
|
224
|
+
}
|
|
196
225
|
interface ICategory extends BaseEntity {
|
|
197
226
|
name: string;
|
|
198
227
|
slug: string;
|
|
199
228
|
description: string;
|
|
200
229
|
parent: ICategory;
|
|
230
|
+
subcategories?: ICategorySubcategory[];
|
|
201
231
|
stores: (IStore | string)[];
|
|
202
232
|
childOnly?: boolean;
|
|
203
233
|
image: string;
|
|
@@ -205,9 +235,9 @@ interface ICategory extends BaseEntity {
|
|
|
205
235
|
sortOrder: number;
|
|
206
236
|
status: boolean;
|
|
207
237
|
isOnline: boolean;
|
|
238
|
+
netsuiteId: string;
|
|
208
239
|
metaData: Metadata;
|
|
209
240
|
seoMetaData: ISEOMetaData;
|
|
210
|
-
subCategories?: ICategory[];
|
|
211
241
|
}
|
|
212
242
|
|
|
213
243
|
declare const StockStatusEnum: {
|
|
@@ -258,6 +288,15 @@ interface IProductVariantFields {
|
|
|
258
288
|
price: IPrice;
|
|
259
289
|
saleType?: SaleType;
|
|
260
290
|
quantity: number;
|
|
291
|
+
minimumQuantity?: number;
|
|
292
|
+
maximumQuantity?: number;
|
|
293
|
+
enforceMinimum?: boolean;
|
|
294
|
+
isSparePart?: boolean;
|
|
295
|
+
stockDescription?: string;
|
|
296
|
+
noPriceMessage?: string;
|
|
297
|
+
itemType?: string;
|
|
298
|
+
isSeriesComponent?: boolean;
|
|
299
|
+
flexWarrantyEligible?: boolean;
|
|
261
300
|
inventoryPolicy: InventoryPolicy;
|
|
262
301
|
brand: IBrand;
|
|
263
302
|
stores: (IStore | string)[];
|
|
@@ -345,17 +384,23 @@ interface IAddonConfig extends BaseEntity {
|
|
|
345
384
|
name: string;
|
|
346
385
|
key: string;
|
|
347
386
|
description: string;
|
|
387
|
+
longDescription?: string;
|
|
348
388
|
stores: (IStore | string)[];
|
|
349
389
|
price: number;
|
|
350
390
|
pricingType: PricingType;
|
|
351
391
|
quantity: number;
|
|
352
392
|
sortOrder: number;
|
|
353
393
|
applyToAll: boolean;
|
|
394
|
+
appliesFromPrice?: number;
|
|
395
|
+
appliesToPrice?: number;
|
|
354
396
|
isDefault: boolean;
|
|
355
397
|
isVisible: boolean;
|
|
356
398
|
status: boolean;
|
|
399
|
+
metaData: Metadata;
|
|
400
|
+
netsuite?: AddonNetsuiteLink | null;
|
|
357
401
|
}
|
|
358
402
|
interface IAddonGroup extends BaseEntity {
|
|
403
|
+
netsuite?: AddonGroupNetsuiteLink | null;
|
|
359
404
|
name: string;
|
|
360
405
|
key: string;
|
|
361
406
|
description: string;
|
|
@@ -364,10 +409,29 @@ interface IAddonGroup extends BaseEntity {
|
|
|
364
409
|
isVisible: boolean;
|
|
365
410
|
status: boolean;
|
|
366
411
|
}
|
|
412
|
+
interface AddonGroupNetsuiteLink {
|
|
413
|
+
requiresField?: string;
|
|
414
|
+
syncedAt?: Date | string;
|
|
415
|
+
}
|
|
416
|
+
interface AddonNetsuiteLink {
|
|
417
|
+
itemId: string;
|
|
418
|
+
itemName?: string;
|
|
419
|
+
syncedAt?: Date | string;
|
|
420
|
+
}
|
|
421
|
+
interface AddonSnapshot {
|
|
422
|
+
groupKey: string;
|
|
423
|
+
addonKey: string;
|
|
424
|
+
name: string;
|
|
425
|
+
price: number;
|
|
426
|
+
pricingType: PricingType;
|
|
427
|
+
quantity: number;
|
|
428
|
+
}
|
|
367
429
|
|
|
368
430
|
interface ProductAddonScope {
|
|
369
431
|
storeId?: string;
|
|
370
432
|
productAddonIds?: string[];
|
|
433
|
+
productPrice?: number;
|
|
434
|
+
productFlags?: Record<string, boolean | undefined>;
|
|
371
435
|
}
|
|
372
436
|
declare const resolveProductAddonGroups: (groups: IAddonGroup[], scope?: ProductAddonScope) => IAddonGroup[];
|
|
373
437
|
declare const groupHasDefaultAddon: (group: IAddonGroup) => boolean;
|
|
@@ -381,16 +445,135 @@ interface ResolvedAddonSelection extends AddonSelectionRef {
|
|
|
381
445
|
declare const resolveAddonSelections: (groups: IAddonGroup[], selections: AddonSelectionRef[]) => ResolvedAddonSelection[];
|
|
382
446
|
|
|
383
447
|
interface IProduct extends BaseEntity, IProductVariantFields {
|
|
448
|
+
netsuiteId: string;
|
|
384
449
|
name: string;
|
|
385
450
|
slug: string;
|
|
386
451
|
sku: string;
|
|
387
452
|
hasVariants: boolean;
|
|
388
|
-
variantType
|
|
453
|
+
variantType: ProductVariantType;
|
|
389
454
|
variantOptions?: IProductVariantOptionGroup[];
|
|
390
455
|
variantOptionSignatures?: string[];
|
|
391
456
|
variants: IVariant[];
|
|
392
457
|
relationGroups: IProductRelationGroup[];
|
|
393
458
|
addons: (IAddonConfig | string)[];
|
|
459
|
+
googleCategory: string;
|
|
460
|
+
department: string;
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
interface ICartItem extends BaseEntity {
|
|
464
|
+
cart: ICart;
|
|
465
|
+
product: IProduct;
|
|
466
|
+
variant?: IVariant;
|
|
467
|
+
pricing: ILinePricing;
|
|
468
|
+
metaData: Metadata;
|
|
469
|
+
/** Buyer-entered line note. Survives to the order and appears on the confirmation. */
|
|
470
|
+
note?: string;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
interface StockDemandLine {
|
|
474
|
+
key: string;
|
|
475
|
+
quantity: number;
|
|
476
|
+
}
|
|
477
|
+
declare const demandByKey: (lines: StockDemandLine[]) => Map<string, number>;
|
|
478
|
+
declare const StockVerdictEnum: {
|
|
479
|
+
readonly OK: "OK";
|
|
480
|
+
readonly OUT_OF_STOCK: "OUT_OF_STOCK";
|
|
481
|
+
readonly INSUFFICIENT_STOCK: "INSUFFICIENT_STOCK";
|
|
482
|
+
};
|
|
483
|
+
type StockVerdict = {
|
|
484
|
+
type: typeof StockVerdictEnum.OK;
|
|
485
|
+
} | {
|
|
486
|
+
type: typeof StockVerdictEnum.OUT_OF_STOCK;
|
|
487
|
+
available: 0;
|
|
488
|
+
requested: number;
|
|
489
|
+
} | {
|
|
490
|
+
type: typeof StockVerdictEnum.INSUFFICIENT_STOCK;
|
|
491
|
+
available: number;
|
|
492
|
+
requested: number;
|
|
493
|
+
};
|
|
494
|
+
declare const stockVerdict: (available: number, requested: number) => StockVerdict;
|
|
495
|
+
|
|
496
|
+
interface OfferedAddon {
|
|
497
|
+
addonKey: string;
|
|
498
|
+
name: string;
|
|
499
|
+
description: string;
|
|
500
|
+
price: number;
|
|
501
|
+
pricingType: PricingType;
|
|
502
|
+
}
|
|
503
|
+
interface OfferedAddonGroup {
|
|
504
|
+
groupKey: string;
|
|
505
|
+
name: string;
|
|
506
|
+
addons: OfferedAddon[];
|
|
507
|
+
}
|
|
508
|
+
declare const CartStatusEnum: {
|
|
509
|
+
readonly ACTIVE: "ACTIVE";
|
|
510
|
+
readonly CONVERTED: "CONVERTED";
|
|
511
|
+
readonly QUOTED: "QUOTED";
|
|
512
|
+
readonly ABANDONED: "ABANDONED";
|
|
513
|
+
};
|
|
514
|
+
type CartStatusEnum = (typeof CartStatusEnum)[keyof typeof CartStatusEnum];
|
|
515
|
+
declare const CART_STATUS_VALUES: ("ACTIVE" | "CONVERTED" | "QUOTED" | "ABANDONED")[];
|
|
516
|
+
declare const RETIRED_CART_STATUSES: CartStatusEnum[];
|
|
517
|
+
interface ICart extends BaseEntity {
|
|
518
|
+
tax?: AppliedTax | null;
|
|
519
|
+
shippingMethod?: SelectedShippingMethod | null;
|
|
520
|
+
cartId: string;
|
|
521
|
+
cartItems: ICartItem[];
|
|
522
|
+
user?: ICustomer;
|
|
523
|
+
coupon?: ICoupon;
|
|
524
|
+
store: IStore;
|
|
525
|
+
metaData: Metadata;
|
|
526
|
+
optionalFees?: Record<string, boolean>;
|
|
527
|
+
pricing: ISummaryPricing;
|
|
528
|
+
selectedShippingRate?: IShippingRate;
|
|
529
|
+
status: CartStatusEnum;
|
|
530
|
+
type: SaleType;
|
|
531
|
+
order?: IOrder | string;
|
|
532
|
+
convertedAt?: Date;
|
|
533
|
+
quoteToken?: string;
|
|
534
|
+
quotedAt?: Date;
|
|
535
|
+
quoteEmail?: string;
|
|
536
|
+
sourceCart?: ICart | string;
|
|
537
|
+
}
|
|
538
|
+
declare const CartIssueTypes: {
|
|
539
|
+
readonly ITEM_UNAVAILABLE: "ITEM_UNAVAILABLE";
|
|
540
|
+
readonly OUT_OF_STOCK: "OUT_OF_STOCK";
|
|
541
|
+
readonly INSUFFICIENT_STOCK: "INSUFFICIENT_STOCK";
|
|
542
|
+
readonly BELOW_MINIMUM_QUANTITY: "BELOW_MINIMUM_QUANTITY";
|
|
543
|
+
readonly COUPON_INVALID: "COUPON_INVALID";
|
|
544
|
+
};
|
|
545
|
+
type CartIssueType = (typeof CartIssueTypes)[keyof typeof CartIssueTypes];
|
|
546
|
+
interface CartIssue {
|
|
547
|
+
type: CartIssueType;
|
|
548
|
+
itemId?: string;
|
|
549
|
+
name?: string;
|
|
550
|
+
available?: number;
|
|
551
|
+
requested?: number;
|
|
552
|
+
minimum?: number;
|
|
553
|
+
message: string;
|
|
554
|
+
}
|
|
555
|
+
interface CartValidation {
|
|
556
|
+
ok: boolean;
|
|
557
|
+
issues: CartIssue[];
|
|
558
|
+
}
|
|
559
|
+
interface SelectedShippingMethod {
|
|
560
|
+
id: string;
|
|
561
|
+
name: string;
|
|
562
|
+
shipping: number;
|
|
563
|
+
handling: number;
|
|
564
|
+
total: number;
|
|
565
|
+
free: boolean;
|
|
566
|
+
estimated: boolean;
|
|
567
|
+
cartFingerprint?: string;
|
|
568
|
+
}
|
|
569
|
+
interface AppliedTax {
|
|
570
|
+
rate: number;
|
|
571
|
+
state: string;
|
|
572
|
+
county?: string;
|
|
573
|
+
groupId: string;
|
|
574
|
+
groupName: string;
|
|
575
|
+
shippingTaxable: boolean;
|
|
576
|
+
cartFingerprint?: string;
|
|
394
577
|
}
|
|
395
578
|
|
|
396
579
|
interface IOrderItem extends BaseEntity {
|
|
@@ -423,23 +606,20 @@ declare const AWAITING_PAYMENT_STATUSES: PaymentStatusEnum[];
|
|
|
423
606
|
declare const paymentStatusColorMap: Record<PaymentStatusEnum, string>;
|
|
424
607
|
declare const PaymentMethodEnum: {
|
|
425
608
|
readonly CREDIT_CARD: "CREDIT_CARD";
|
|
426
|
-
readonly PAYPAL: "PAYPAL";
|
|
427
609
|
readonly STRIPE: "STRIPE";
|
|
428
610
|
readonly CHECK: "CHECK";
|
|
429
611
|
readonly APPLE_PAY: "APPLE_PAY";
|
|
430
612
|
readonly PURCHASE_ORDER: "PURCHASE_ORDER";
|
|
431
613
|
};
|
|
432
614
|
type PaymentMethodEnum = (typeof PaymentMethodEnum)[keyof typeof PaymentMethodEnum];
|
|
433
|
-
declare const PAYMENT_METHOD_VALUES: ("CREDIT_CARD" | "
|
|
615
|
+
declare const PAYMENT_METHOD_VALUES: ("CREDIT_CARD" | "STRIPE" | "CHECK" | "APPLE_PAY" | "PURCHASE_ORDER")[];
|
|
434
616
|
declare const paymentMethodColorMap: Record<PaymentMethodEnum, string>;
|
|
435
617
|
declare const PaymentGatewayEnum: {
|
|
436
618
|
readonly STRIPE: "STRIPE";
|
|
437
|
-
readonly PAYPAL: "PAYPAL";
|
|
438
|
-
readonly BRAINTREE: "BRAINTREE";
|
|
439
619
|
readonly MANUAL: "MANUAL";
|
|
440
620
|
};
|
|
441
621
|
type PaymentGatewayEnum = (typeof PaymentGatewayEnum)[keyof typeof PaymentGatewayEnum];
|
|
442
|
-
declare const PAYMENT_GATEWAY_VALUES: ("MANUAL" | "
|
|
622
|
+
declare const PAYMENT_GATEWAY_VALUES: ("MANUAL" | "STRIPE")[];
|
|
443
623
|
declare const TransactionTypeEnum: {
|
|
444
624
|
readonly ORDER: "ORDER";
|
|
445
625
|
readonly REFUND: "REFUND";
|
|
@@ -471,28 +651,54 @@ interface IRefundTransaction extends ITransactionBase {
|
|
|
471
651
|
originalTransaction?: ITransactionBase;
|
|
472
652
|
}
|
|
473
653
|
|
|
654
|
+
interface INetsuiteOrderLink {
|
|
655
|
+
id: string;
|
|
656
|
+
recordType: string;
|
|
657
|
+
externalId?: string;
|
|
658
|
+
tranId?: string;
|
|
659
|
+
statusText?: string;
|
|
660
|
+
total?: number;
|
|
661
|
+
entityId?: string;
|
|
662
|
+
entityLabel?: string;
|
|
663
|
+
recordUrl?: string;
|
|
664
|
+
createdDate?: string;
|
|
665
|
+
httpStatus?: number;
|
|
666
|
+
pushedAt?: Date | string;
|
|
667
|
+
statusCode?: string;
|
|
668
|
+
statusCheckedAt?: Date | string;
|
|
669
|
+
}
|
|
670
|
+
interface IOrderShipment {
|
|
671
|
+
netsuiteId: string;
|
|
672
|
+
tranId?: string;
|
|
673
|
+
carrier?: string;
|
|
674
|
+
shipMethod?: string;
|
|
675
|
+
shippedAt?: Date | string;
|
|
676
|
+
trackingNumbers: string[];
|
|
677
|
+
syncedAt?: Date | string;
|
|
678
|
+
}
|
|
474
679
|
declare const OrderStatusEnum: {
|
|
475
680
|
readonly CREATED: "CREATED";
|
|
476
|
-
readonly
|
|
477
|
-
readonly
|
|
478
|
-
readonly
|
|
479
|
-
readonly
|
|
480
|
-
readonly
|
|
481
|
-
readonly
|
|
482
|
-
readonly
|
|
483
|
-
readonly
|
|
681
|
+
readonly PAYMENT_FAILED: "PAYMENT_FAILED";
|
|
682
|
+
readonly PENDING_APPROVAL: "PENDING_APPROVAL";
|
|
683
|
+
readonly PENDING_FULFILLMENT: "PENDING_FULFILLMENT";
|
|
684
|
+
readonly PARTIALLY_FULFILLED: "PARTIALLY_FULFILLED";
|
|
685
|
+
readonly PENDING_BILLING: "PENDING_BILLING";
|
|
686
|
+
readonly BILLED: "BILLED";
|
|
687
|
+
readonly CLOSED: "CLOSED";
|
|
688
|
+
readonly CANCELLED: "CANCELLED";
|
|
689
|
+
readonly PENDING_RECEIPT: "PENDING_RECEIPT";
|
|
690
|
+
readonly PENDING_REFUND: "PENDING_REFUND";
|
|
484
691
|
readonly REFUNDED: "REFUNDED";
|
|
485
692
|
readonly PARTIALLY_REFUNDED: "PARTIALLY_REFUNDED";
|
|
486
|
-
readonly ARCHIVED: "ARCHIVED";
|
|
487
|
-
readonly RETURNED: "RETURNED";
|
|
488
693
|
readonly QUOTE_REQUESTED: "QUOTE_REQUESTED";
|
|
489
|
-
readonly
|
|
490
|
-
readonly
|
|
491
|
-
readonly
|
|
694
|
+
readonly QUOTE_OPEN: "QUOTE_OPEN";
|
|
695
|
+
readonly QUOTE_PROCESSED: "QUOTE_PROCESSED";
|
|
696
|
+
readonly QUOTE_CLOSED: "QUOTE_CLOSED";
|
|
697
|
+
readonly QUOTE_VOIDED: "QUOTE_VOIDED";
|
|
492
698
|
readonly QUOTE_EXPIRED: "QUOTE_EXPIRED";
|
|
493
699
|
};
|
|
494
700
|
type OrderStatusEnum = (typeof OrderStatusEnum)[keyof typeof OrderStatusEnum];
|
|
495
|
-
declare const ORDER_STATUS_VALUES: ("
|
|
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")[];
|
|
496
702
|
declare const statusColors: Record<OrderStatusEnum, string>;
|
|
497
703
|
declare const PURCHASE_ORDER_STATUSES: OrderStatusEnum[];
|
|
498
704
|
declare const OPEN_ORDER_STATUSES: OrderStatusEnum[];
|
|
@@ -504,7 +710,7 @@ interface IOrder extends BaseEntity {
|
|
|
504
710
|
coupon: ICoupon;
|
|
505
711
|
store: IStore;
|
|
506
712
|
status: OrderStatusEnum;
|
|
507
|
-
type
|
|
713
|
+
type: SaleType;
|
|
508
714
|
sourceQuote?: IOrder | string;
|
|
509
715
|
convertedOrder?: IOrder | string;
|
|
510
716
|
quoteValidUntil?: Date;
|
|
@@ -513,9 +719,17 @@ interface IOrder extends BaseEntity {
|
|
|
513
719
|
paymentGateway: PaymentGatewayEnum;
|
|
514
720
|
shippingAddress: IAddress;
|
|
515
721
|
billingAddress: IAddress;
|
|
516
|
-
shippingMethod
|
|
722
|
+
shippingMethod?: SelectedShippingMethod | null;
|
|
723
|
+
shipments?: IOrderShipment[];
|
|
724
|
+
tax?: AppliedTax | null;
|
|
517
725
|
acceptedTermsAt: Date;
|
|
518
726
|
customerNote: string;
|
|
727
|
+
netsuite?: INetsuiteOrderLink | null;
|
|
728
|
+
netsuiteLastError?: {
|
|
729
|
+
message: string;
|
|
730
|
+
recordType?: string;
|
|
731
|
+
failedAt?: Date | string;
|
|
732
|
+
} | null;
|
|
519
733
|
metaData: Metadata;
|
|
520
734
|
orderTransactions: IOrderTransaction[];
|
|
521
735
|
refundTransactions: IRefundTransaction[];
|
|
@@ -523,6 +737,7 @@ interface IOrder extends BaseEntity {
|
|
|
523
737
|
}
|
|
524
738
|
|
|
525
739
|
interface ICustomer extends BaseEntity {
|
|
740
|
+
netsuiteId: string;
|
|
526
741
|
firstName: string;
|
|
527
742
|
lastName: string;
|
|
528
743
|
profileImage: string;
|
|
@@ -542,6 +757,7 @@ interface ICustomer extends BaseEntity {
|
|
|
542
757
|
resetPasswordTokenHash: string;
|
|
543
758
|
resetPasswordTokenExpiresAt: Date | null;
|
|
544
759
|
marketingOptOut?: boolean;
|
|
760
|
+
metaData: Metadata;
|
|
545
761
|
unsubscribeToken?: string;
|
|
546
762
|
}
|
|
547
763
|
|
|
@@ -630,6 +846,10 @@ declare const ADMIN_RESOURCE_LIST: readonly [{
|
|
|
630
846
|
readonly value: "store-fees";
|
|
631
847
|
readonly label: "Store Fees";
|
|
632
848
|
readonly group: "Commerce";
|
|
849
|
+
}, {
|
|
850
|
+
readonly value: "tax-rates";
|
|
851
|
+
readonly label: "Tax Rates";
|
|
852
|
+
readonly group: "Commerce";
|
|
633
853
|
}, {
|
|
634
854
|
readonly value: "customers";
|
|
635
855
|
readonly label: "Customers";
|
|
@@ -691,7 +911,7 @@ declare const ADMIN_RESOURCE_LIST: readonly [{
|
|
|
691
911
|
readonly label: "Account";
|
|
692
912
|
readonly group: "Settings";
|
|
693
913
|
}];
|
|
694
|
-
declare const ADMIN_RESOURCES: ("stores" | "
|
|
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")[];
|
|
695
915
|
type IAdminResource = (typeof ADMIN_RESOURCE_LIST)[number]['value'];
|
|
696
916
|
declare const ADMIN_ACTIONS: readonly ["read", "write", "delete"];
|
|
697
917
|
type IAdminBaseAction = (typeof ADMIN_ACTIONS)[number];
|
|
@@ -842,6 +1062,7 @@ declare const FeeAppliesToEnum: {
|
|
|
842
1062
|
type FeeAppliesToEnum = (typeof FeeAppliesToEnum)[keyof typeof FeeAppliesToEnum];
|
|
843
1063
|
declare const FEE_APPLIES_TO_VALUES: ("SUBTOTAL" | "TOTAL")[];
|
|
844
1064
|
interface IStoreFee extends BaseEntity {
|
|
1065
|
+
netsuiteId?: string;
|
|
845
1066
|
stores: (IStore | string)[];
|
|
846
1067
|
name: string;
|
|
847
1068
|
key: string;
|
|
@@ -855,6 +1076,7 @@ interface IStoreFee extends BaseEntity {
|
|
|
855
1076
|
defaultSelected: boolean;
|
|
856
1077
|
sortOrder: number;
|
|
857
1078
|
status: boolean;
|
|
1079
|
+
metaData: Metadata;
|
|
858
1080
|
}
|
|
859
1081
|
interface ISelectableFee {
|
|
860
1082
|
key: string;
|
|
@@ -883,7 +1105,7 @@ declare const EmailTemplateEventEnum: {
|
|
|
883
1105
|
readonly NOTIFICATION: "NOTIFICATION";
|
|
884
1106
|
};
|
|
885
1107
|
type EmailTemplateEventEnum = (typeof EmailTemplateEventEnum)[keyof typeof EmailTemplateEventEnum];
|
|
886
|
-
declare const EMAIL_TEMPLATE_EVENT_VALUES: ("QUOTE" | "QUOTE_REQUESTED" | "
|
|
1108
|
+
declare const EMAIL_TEMPLATE_EVENT_VALUES: ("QUOTE" | "QUOTE_REQUESTED" | "ORDER_RECEIVED" | "ORDER_CANCELLED" | "WELCOME" | "PASSWORD_RESET" | "QUOTE_SENT" | "QUOTE_DECLINED" | "INVOICE" | "PROMOTIONAL" | "CONTACT_US" | "NOTIFICATION")[];
|
|
887
1109
|
declare const WIRED_EMAIL_TEMPLATE_EVENTS: EmailTemplateEventEnum[];
|
|
888
1110
|
declare const EMAIL_TEMPLATE_VARIABLES_BY_EVENT: Partial<Record<EmailTemplateEventEnum, string[]>>;
|
|
889
1111
|
interface IEmailTemplate extends BaseEntity {
|
|
@@ -899,6 +1121,17 @@ interface IEmailTemplate extends BaseEntity {
|
|
|
899
1121
|
isVisible: boolean;
|
|
900
1122
|
status: boolean;
|
|
901
1123
|
}
|
|
1124
|
+
declare const EmailParamMismatchKindEnum: {
|
|
1125
|
+
readonly MISSING: "missing";
|
|
1126
|
+
readonly UNDECLARED: "undeclared";
|
|
1127
|
+
readonly UNLISTED: "unlisted";
|
|
1128
|
+
};
|
|
1129
|
+
type EmailParamMismatchKindEnum = (typeof EmailParamMismatchKindEnum)[keyof typeof EmailParamMismatchKindEnum];
|
|
1130
|
+
declare const EMAIL_PARAM_MISMATCH_KIND_VALUES: ("missing" | "undeclared" | "unlisted")[];
|
|
1131
|
+
interface EmailParamMismatch {
|
|
1132
|
+
kind: EmailParamMismatchKindEnum;
|
|
1133
|
+
token: string;
|
|
1134
|
+
}
|
|
902
1135
|
|
|
903
1136
|
declare const ConfiguratorSelectModeEnum: {
|
|
904
1137
|
readonly SINGLE: "SINGLE";
|
|
@@ -1091,6 +1324,12 @@ interface IUnmatched404 extends BaseEntity {
|
|
|
1091
1324
|
stores?: (IStore | string)[];
|
|
1092
1325
|
suggestions?: IRedirectSuggestion[];
|
|
1093
1326
|
}
|
|
1327
|
+
interface MatchResult {
|
|
1328
|
+
best: IRedirectSuggestion | null;
|
|
1329
|
+
score: number;
|
|
1330
|
+
autoLink: boolean;
|
|
1331
|
+
suggestions: IRedirectSuggestion[];
|
|
1332
|
+
}
|
|
1094
1333
|
|
|
1095
1334
|
declare const normalizePath: (input: string) => string;
|
|
1096
1335
|
declare const canonicalizeSlug: (input: string) => string;
|
|
@@ -1129,7 +1368,7 @@ declare const OrderLogTypeEnum: {
|
|
|
1129
1368
|
readonly NOTE: "NOTE";
|
|
1130
1369
|
};
|
|
1131
1370
|
type OrderLogTypeEnum = (typeof OrderLogTypeEnum)[keyof typeof OrderLogTypeEnum];
|
|
1132
|
-
declare const ORDER_LOG_TYPE_VALUES: ("REFUND" | "
|
|
1371
|
+
declare const ORDER_LOG_TYPE_VALUES: ("REFUND" | "PAYMENT_FAILED" | "ORDER_PLACED" | "PAYMENT_PENDING" | "PAYMENT_SUCCEEDED" | "PAYMENT_CANCELLED" | "ORDER_STATUS" | "EMAIL" | "NOTE")[];
|
|
1133
1372
|
declare const orderLogTypeColorMap: Record<OrderLogTypeEnum, string>;
|
|
1134
1373
|
interface IOrderLog extends BaseEntity {
|
|
1135
1374
|
order: IOrder | string;
|
|
@@ -1162,87 +1401,6 @@ interface IPaymentLink extends BaseEntity {
|
|
|
1162
1401
|
baseUrl: string;
|
|
1163
1402
|
}
|
|
1164
1403
|
|
|
1165
|
-
interface ICartItem extends BaseEntity {
|
|
1166
|
-
cart: ICart;
|
|
1167
|
-
product: IProduct;
|
|
1168
|
-
variant?: IVariant;
|
|
1169
|
-
pricing: ILinePricing;
|
|
1170
|
-
metaData: Metadata;
|
|
1171
|
-
/** Buyer-entered line note. Survives to the order and appears on the confirmation. */
|
|
1172
|
-
note?: string;
|
|
1173
|
-
}
|
|
1174
|
-
|
|
1175
|
-
interface StockDemandLine {
|
|
1176
|
-
key: string;
|
|
1177
|
-
quantity: number;
|
|
1178
|
-
}
|
|
1179
|
-
declare const demandByKey: (lines: StockDemandLine[]) => Map<string, number>;
|
|
1180
|
-
declare const StockVerdictEnum: {
|
|
1181
|
-
readonly OK: "OK";
|
|
1182
|
-
readonly OUT_OF_STOCK: "OUT_OF_STOCK";
|
|
1183
|
-
readonly INSUFFICIENT_STOCK: "INSUFFICIENT_STOCK";
|
|
1184
|
-
};
|
|
1185
|
-
type StockVerdict = {
|
|
1186
|
-
type: typeof StockVerdictEnum.OK;
|
|
1187
|
-
} | {
|
|
1188
|
-
type: typeof StockVerdictEnum.OUT_OF_STOCK;
|
|
1189
|
-
available: 0;
|
|
1190
|
-
requested: number;
|
|
1191
|
-
} | {
|
|
1192
|
-
type: typeof StockVerdictEnum.INSUFFICIENT_STOCK;
|
|
1193
|
-
available: number;
|
|
1194
|
-
requested: number;
|
|
1195
|
-
};
|
|
1196
|
-
declare const stockVerdict: (available: number, requested: number) => StockVerdict;
|
|
1197
|
-
|
|
1198
|
-
declare const CartStatusEnum: {
|
|
1199
|
-
readonly ACTIVE: "ACTIVE";
|
|
1200
|
-
readonly CONVERTED: "CONVERTED";
|
|
1201
|
-
readonly QUOTED: "QUOTED";
|
|
1202
|
-
readonly ABANDONED: "ABANDONED";
|
|
1203
|
-
};
|
|
1204
|
-
type CartStatusEnum = (typeof CartStatusEnum)[keyof typeof CartStatusEnum];
|
|
1205
|
-
declare const CART_STATUS_VALUES: ("QUOTED" | "ACTIVE" | "CONVERTED" | "ABANDONED")[];
|
|
1206
|
-
declare const RETIRED_CART_STATUSES: CartStatusEnum[];
|
|
1207
|
-
interface ICart extends BaseEntity {
|
|
1208
|
-
cartId: string;
|
|
1209
|
-
cartItems: ICartItem[];
|
|
1210
|
-
user?: ICustomer;
|
|
1211
|
-
coupon?: ICoupon;
|
|
1212
|
-
store: IStore;
|
|
1213
|
-
metaData: Metadata;
|
|
1214
|
-
optionalFees?: Record<string, boolean>;
|
|
1215
|
-
pricing: ISummaryPricing;
|
|
1216
|
-
selectedShippingRate?: IShippingRate;
|
|
1217
|
-
status: CartStatusEnum;
|
|
1218
|
-
type: SaleType;
|
|
1219
|
-
order?: IOrder | string;
|
|
1220
|
-
convertedAt?: Date;
|
|
1221
|
-
quoteToken?: string;
|
|
1222
|
-
quotedAt?: Date;
|
|
1223
|
-
quoteEmail?: string;
|
|
1224
|
-
sourceCart?: ICart | string;
|
|
1225
|
-
}
|
|
1226
|
-
declare const CartIssueTypes: {
|
|
1227
|
-
readonly ITEM_UNAVAILABLE: "ITEM_UNAVAILABLE";
|
|
1228
|
-
readonly OUT_OF_STOCK: "OUT_OF_STOCK";
|
|
1229
|
-
readonly INSUFFICIENT_STOCK: "INSUFFICIENT_STOCK";
|
|
1230
|
-
readonly COUPON_INVALID: "COUPON_INVALID";
|
|
1231
|
-
};
|
|
1232
|
-
type CartIssueType = (typeof CartIssueTypes)[keyof typeof CartIssueTypes];
|
|
1233
|
-
interface CartIssue {
|
|
1234
|
-
type: CartIssueType;
|
|
1235
|
-
itemId?: string;
|
|
1236
|
-
name?: string;
|
|
1237
|
-
available?: number;
|
|
1238
|
-
requested?: number;
|
|
1239
|
-
message: string;
|
|
1240
|
-
}
|
|
1241
|
-
interface CartValidation {
|
|
1242
|
-
ok: boolean;
|
|
1243
|
-
issues: CartIssue[];
|
|
1244
|
-
}
|
|
1245
|
-
|
|
1246
1404
|
declare const SubscriptionChannelEnum: {
|
|
1247
1405
|
readonly EMAIL: "EMAIL";
|
|
1248
1406
|
readonly SMS: "SMS";
|
|
@@ -1304,7 +1462,7 @@ declare const CampaignRecipientStatusEnum: {
|
|
|
1304
1462
|
readonly FAILED: "FAILED";
|
|
1305
1463
|
};
|
|
1306
1464
|
type CampaignRecipientStatusEnum = (typeof CampaignRecipientStatusEnum)[keyof typeof CampaignRecipientStatusEnum];
|
|
1307
|
-
declare const CAMPAIGN_RECIPIENT_STATUS_VALUES: ("FAILED" | "
|
|
1465
|
+
declare const CAMPAIGN_RECIPIENT_STATUS_VALUES: ("FAILED" | "SENT" | "QUEUED" | "DELIVERED" | "OPENED" | "CLICKED" | "BOUNCED" | "COMPLAINED")[];
|
|
1308
1466
|
interface ICampaignStats {
|
|
1309
1467
|
sent: number;
|
|
1310
1468
|
delivered: number;
|
|
@@ -1340,34 +1498,32 @@ interface ICampaignRecipient extends BaseEntity {
|
|
|
1340
1498
|
}
|
|
1341
1499
|
|
|
1342
1500
|
interface IBlogAuthor extends BaseEntity {
|
|
1501
|
+
netsuiteId: string;
|
|
1343
1502
|
name: string;
|
|
1344
1503
|
slug: string;
|
|
1345
1504
|
bio: string;
|
|
1346
1505
|
avatar: string;
|
|
1347
1506
|
role: string;
|
|
1348
1507
|
status: boolean;
|
|
1349
|
-
isOnline: boolean;
|
|
1350
1508
|
metaData: Metadata;
|
|
1351
1509
|
seoMetaData: ISEOMetaData;
|
|
1352
1510
|
}
|
|
1353
1511
|
interface IBlogCategory extends BaseEntity {
|
|
1512
|
+
netsuiteId: string;
|
|
1354
1513
|
name: string;
|
|
1355
1514
|
slug: string;
|
|
1356
1515
|
description: string;
|
|
1357
1516
|
image: string;
|
|
1358
1517
|
sortOrder: number;
|
|
1359
1518
|
status: boolean;
|
|
1360
|
-
isOnline: boolean;
|
|
1361
1519
|
metaData: Metadata;
|
|
1362
1520
|
seoMetaData: ISEOMetaData;
|
|
1363
1521
|
}
|
|
1364
|
-
interface IBlogCitation {
|
|
1365
|
-
label: string;
|
|
1366
|
-
url: string;
|
|
1367
|
-
source?: string;
|
|
1368
|
-
}
|
|
1369
1522
|
interface IBlogPost extends BaseEntity {
|
|
1523
|
+
netsuiteId: string;
|
|
1524
|
+
netsuitePostId: string;
|
|
1370
1525
|
title: string;
|
|
1526
|
+
subtitle: string;
|
|
1371
1527
|
slug: string;
|
|
1372
1528
|
excerpt: string;
|
|
1373
1529
|
content: string;
|
|
@@ -1378,13 +1534,12 @@ interface IBlogPost extends BaseEntity {
|
|
|
1378
1534
|
author: IBlogAuthor | string | null;
|
|
1379
1535
|
category: IBlogCategory | string | null;
|
|
1380
1536
|
tags: string[];
|
|
1381
|
-
|
|
1537
|
+
pinnedTo: string[];
|
|
1382
1538
|
relatedProducts: unknown[];
|
|
1383
1539
|
readingMinutes: number;
|
|
1384
1540
|
publishedAt: Date | string | null;
|
|
1385
1541
|
stores: IStore[];
|
|
1386
1542
|
status: boolean;
|
|
1387
|
-
isOnline: boolean;
|
|
1388
1543
|
metaData: Metadata;
|
|
1389
1544
|
seoMetaData: ISEOMetaData;
|
|
1390
1545
|
}
|
|
@@ -1444,6 +1599,4281 @@ interface IPodcastEpisode extends BaseEntity {
|
|
|
1444
1599
|
seoMetaData: ISEOMetaData;
|
|
1445
1600
|
}
|
|
1446
1601
|
|
|
1602
|
+
declare const BRAND_FIELDS: {
|
|
1603
|
+
readonly name: {
|
|
1604
|
+
readonly before: "commercecategory.name";
|
|
1605
|
+
readonly after: "item.manufacturer";
|
|
1606
|
+
readonly target: "name";
|
|
1607
|
+
readonly policy: "always";
|
|
1608
|
+
};
|
|
1609
|
+
readonly online: {
|
|
1610
|
+
readonly before: "isonline";
|
|
1611
|
+
readonly after: "custitem_display_online";
|
|
1612
|
+
readonly target: "isOnline";
|
|
1613
|
+
readonly policy: "always";
|
|
1614
|
+
};
|
|
1615
|
+
readonly netsuiteId: {
|
|
1616
|
+
readonly before: "commercecategory.id";
|
|
1617
|
+
readonly target: "netsuiteId";
|
|
1618
|
+
readonly policy: "always";
|
|
1619
|
+
readonly conditional: true;
|
|
1620
|
+
readonly note: "No successor. The manufacturer name becomes the key.";
|
|
1621
|
+
};
|
|
1622
|
+
readonly slug: {
|
|
1623
|
+
readonly before: "commercecategory.urlfragment";
|
|
1624
|
+
readonly target: "slug";
|
|
1625
|
+
readonly policy: "seed";
|
|
1626
|
+
readonly identity: true;
|
|
1627
|
+
readonly note: string;
|
|
1628
|
+
readonly caution: string;
|
|
1629
|
+
};
|
|
1630
|
+
readonly logo: {
|
|
1631
|
+
readonly before: "thumbnail";
|
|
1632
|
+
readonly target: "logo";
|
|
1633
|
+
readonly policy: "always";
|
|
1634
|
+
readonly conditional: true;
|
|
1635
|
+
readonly note: "No successor. custrecord35 holds the same logo as a plain URL on all 52 brands.";
|
|
1636
|
+
};
|
|
1637
|
+
readonly description: {
|
|
1638
|
+
readonly before: "commercecategory.description";
|
|
1639
|
+
readonly target: "description";
|
|
1640
|
+
readonly policy: "always";
|
|
1641
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
1642
|
+
};
|
|
1643
|
+
readonly sortOrder: {
|
|
1644
|
+
readonly before: "sequencenumber";
|
|
1645
|
+
readonly target: "sortOrder";
|
|
1646
|
+
readonly policy: "always";
|
|
1647
|
+
readonly conditional: true;
|
|
1648
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
1649
|
+
};
|
|
1650
|
+
readonly seoTitle: {
|
|
1651
|
+
readonly before: "pagetitle";
|
|
1652
|
+
readonly target: "seoMetaData.title";
|
|
1653
|
+
readonly policy: "always";
|
|
1654
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
1655
|
+
};
|
|
1656
|
+
readonly seoDescription: {
|
|
1657
|
+
readonly before: "metadescription";
|
|
1658
|
+
readonly target: "seoMetaData.description";
|
|
1659
|
+
readonly policy: "always";
|
|
1660
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
1661
|
+
};
|
|
1662
|
+
readonly seoKeywords: {
|
|
1663
|
+
readonly before: "metakeywords";
|
|
1664
|
+
readonly target: "seoMetaData.keywords";
|
|
1665
|
+
readonly policy: "always";
|
|
1666
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
1667
|
+
};
|
|
1668
|
+
readonly status: {
|
|
1669
|
+
readonly before: "isinactive + displayinsite";
|
|
1670
|
+
readonly target: "status";
|
|
1671
|
+
readonly policy: "always";
|
|
1672
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
1673
|
+
};
|
|
1674
|
+
readonly headerTag: {
|
|
1675
|
+
readonly before: "pageheading";
|
|
1676
|
+
readonly target: "seoMetaData.headerTag";
|
|
1677
|
+
readonly policy: "always";
|
|
1678
|
+
readonly note: string;
|
|
1679
|
+
};
|
|
1680
|
+
readonly banners: {
|
|
1681
|
+
readonly before: "pagebanner";
|
|
1682
|
+
readonly target: "banners";
|
|
1683
|
+
readonly policy: "seed";
|
|
1684
|
+
readonly note: string;
|
|
1685
|
+
};
|
|
1686
|
+
readonly logoUrl: {
|
|
1687
|
+
readonly before: "custrecord35";
|
|
1688
|
+
readonly target: "logo";
|
|
1689
|
+
readonly policy: "seed";
|
|
1690
|
+
readonly pending: true;
|
|
1691
|
+
readonly note: "A plain logo URL on all 52 brands, needing no file lookup. Never imported.";
|
|
1692
|
+
};
|
|
1693
|
+
};
|
|
1694
|
+
|
|
1695
|
+
declare const CATEGORY_FIELDS: {
|
|
1696
|
+
readonly name: {
|
|
1697
|
+
readonly before: "commercecategory.name";
|
|
1698
|
+
readonly after: "custitem_category";
|
|
1699
|
+
readonly target: "name";
|
|
1700
|
+
readonly policy: "always";
|
|
1701
|
+
readonly note: "After is a flat string stamped on the item, not a record.";
|
|
1702
|
+
};
|
|
1703
|
+
readonly online: {
|
|
1704
|
+
readonly before: "isonline";
|
|
1705
|
+
readonly after: "custitem_display_online";
|
|
1706
|
+
readonly target: "isOnline";
|
|
1707
|
+
readonly policy: "always";
|
|
1708
|
+
};
|
|
1709
|
+
readonly netsuiteId: {
|
|
1710
|
+
readonly before: "commercecategory.id";
|
|
1711
|
+
readonly target: "netsuiteId";
|
|
1712
|
+
readonly policy: "always";
|
|
1713
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
1714
|
+
};
|
|
1715
|
+
readonly slug: {
|
|
1716
|
+
readonly before: "urlfragment";
|
|
1717
|
+
readonly target: "slug";
|
|
1718
|
+
readonly policy: "seed";
|
|
1719
|
+
readonly identity: true;
|
|
1720
|
+
readonly note: string;
|
|
1721
|
+
readonly caution: string;
|
|
1722
|
+
};
|
|
1723
|
+
readonly image: {
|
|
1724
|
+
readonly before: "thumbnail";
|
|
1725
|
+
readonly target: "image";
|
|
1726
|
+
readonly policy: "always";
|
|
1727
|
+
readonly note: "No successor. custrecord35 holds 3,735 of these as plain URLs.";
|
|
1728
|
+
};
|
|
1729
|
+
readonly description: {
|
|
1730
|
+
readonly before: "commercecategory.description";
|
|
1731
|
+
readonly target: "description";
|
|
1732
|
+
readonly policy: "always";
|
|
1733
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
1734
|
+
};
|
|
1735
|
+
readonly sortOrder: {
|
|
1736
|
+
readonly before: "sequencenumber";
|
|
1737
|
+
readonly target: "sortOrder";
|
|
1738
|
+
readonly policy: "always";
|
|
1739
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
1740
|
+
};
|
|
1741
|
+
readonly seoTitle: {
|
|
1742
|
+
readonly before: "pagetitle";
|
|
1743
|
+
readonly target: "seoMetaData.title";
|
|
1744
|
+
readonly policy: "always";
|
|
1745
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
1746
|
+
};
|
|
1747
|
+
readonly seoDescription: {
|
|
1748
|
+
readonly before: "metadescription";
|
|
1749
|
+
readonly target: "seoMetaData.description";
|
|
1750
|
+
readonly policy: "always";
|
|
1751
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
1752
|
+
};
|
|
1753
|
+
readonly seoKeywords: {
|
|
1754
|
+
readonly before: "metakeywords";
|
|
1755
|
+
readonly target: "seoMetaData.keywords";
|
|
1756
|
+
readonly policy: "always";
|
|
1757
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
1758
|
+
};
|
|
1759
|
+
readonly status: {
|
|
1760
|
+
readonly before: "isinactive + displayinsite";
|
|
1761
|
+
readonly target: "status";
|
|
1762
|
+
readonly policy: "always";
|
|
1763
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
1764
|
+
};
|
|
1765
|
+
readonly parent: {
|
|
1766
|
+
readonly before: "primaryparent";
|
|
1767
|
+
readonly after: "custitem_primary_category";
|
|
1768
|
+
readonly target: "parent";
|
|
1769
|
+
readonly policy: "always";
|
|
1770
|
+
readonly note: "The single primary parent. Mirrors NetSuite on every sync, so a parent changed here is overwritten. After is populated on only 3,150 items.";
|
|
1771
|
+
};
|
|
1772
|
+
readonly subcategories: {
|
|
1773
|
+
readonly before: "commercecategoryassociation.subcategory";
|
|
1774
|
+
readonly target: "subcategories";
|
|
1775
|
+
readonly policy: "always";
|
|
1776
|
+
readonly note: "The children list, rebuilt from the association table on every sync — NetSuite categories are multi-parent, so 23% of them sit under more than one. `primaryparent` alone misses those. Edits here are overwritten.";
|
|
1777
|
+
readonly caution: "The association row also carries nameoverride / urlfragmentoverride / thumbnailoverride per parent, so the same category is labelled differently under each. Those overrides are applied for the primary parent only.";
|
|
1778
|
+
};
|
|
1779
|
+
readonly headerTag: {
|
|
1780
|
+
readonly before: "pageheading";
|
|
1781
|
+
readonly target: "seoMetaData.headerTag";
|
|
1782
|
+
readonly policy: "always";
|
|
1783
|
+
readonly note: "The H1, on 4,789 categories. addtohead is head markup and is not a substitute.";
|
|
1784
|
+
};
|
|
1785
|
+
readonly banners: {
|
|
1786
|
+
readonly before: "pagebanner";
|
|
1787
|
+
readonly target: "banners";
|
|
1788
|
+
readonly policy: "seed";
|
|
1789
|
+
readonly note: "Seeded from pagebanner on first import; 50 categories carry one. Edits here are never overwritten.";
|
|
1790
|
+
};
|
|
1791
|
+
readonly imageUrl: {
|
|
1792
|
+
readonly before: "custrecord35";
|
|
1793
|
+
readonly target: "image";
|
|
1794
|
+
readonly policy: "seed";
|
|
1795
|
+
readonly pending: true;
|
|
1796
|
+
readonly note: "A plain image URL on 3,735 categories, needing no file lookup. Never imported.";
|
|
1797
|
+
};
|
|
1798
|
+
readonly faq: {
|
|
1799
|
+
readonly before: "custrecord_faq_q1";
|
|
1800
|
+
readonly target: "metaData.faq";
|
|
1801
|
+
readonly policy: "seed";
|
|
1802
|
+
readonly pending: true;
|
|
1803
|
+
readonly note: "Ten question and answer pairs on 34 categories. Editorial copy held nowhere else.";
|
|
1804
|
+
};
|
|
1805
|
+
};
|
|
1806
|
+
|
|
1807
|
+
declare const PRODUCT_FIELDS: {
|
|
1808
|
+
readonly netsuiteId: {
|
|
1809
|
+
readonly before: "item.id";
|
|
1810
|
+
readonly target: "netsuiteId";
|
|
1811
|
+
readonly policy: "always";
|
|
1812
|
+
readonly conditional: true;
|
|
1813
|
+
readonly note: string;
|
|
1814
|
+
};
|
|
1815
|
+
readonly sku: {
|
|
1816
|
+
readonly before: "item.itemid";
|
|
1817
|
+
readonly target: "sku";
|
|
1818
|
+
readonly policy: "always";
|
|
1819
|
+
readonly conditional: true;
|
|
1820
|
+
readonly note: "A native item field, not a SuiteCommerce one, so it survives the cutover unchanged.";
|
|
1821
|
+
};
|
|
1822
|
+
readonly originalPrice: {
|
|
1823
|
+
readonly before: "itemprice at the Base Price level (1)";
|
|
1824
|
+
readonly target: "price.originalPrice";
|
|
1825
|
+
readonly policy: "always";
|
|
1826
|
+
readonly conditional: true;
|
|
1827
|
+
readonly note: string;
|
|
1828
|
+
};
|
|
1829
|
+
readonly discount: {
|
|
1830
|
+
readonly before: "derived from Base Price vs Online Price";
|
|
1831
|
+
readonly target: "price.discount";
|
|
1832
|
+
readonly policy: "always";
|
|
1833
|
+
readonly conditional: true;
|
|
1834
|
+
readonly note: string;
|
|
1835
|
+
};
|
|
1836
|
+
readonly weight: {
|
|
1837
|
+
readonly before: "weight + weightunit";
|
|
1838
|
+
readonly target: "shipping.weightLb";
|
|
1839
|
+
readonly policy: "always";
|
|
1840
|
+
readonly conditional: true;
|
|
1841
|
+
readonly note: "weight is on 299,354 items, weightunit on 107,131. Converted to lb and kg on import.";
|
|
1842
|
+
};
|
|
1843
|
+
readonly dimensions: {
|
|
1844
|
+
readonly target: "shipping.lengthIn";
|
|
1845
|
+
readonly policy: "seed";
|
|
1846
|
+
readonly note: string;
|
|
1847
|
+
};
|
|
1848
|
+
readonly price: {
|
|
1849
|
+
readonly before: "itemprice at the online price level";
|
|
1850
|
+
readonly target: "price";
|
|
1851
|
+
readonly policy: "always";
|
|
1852
|
+
readonly conditional: true;
|
|
1853
|
+
readonly note: string;
|
|
1854
|
+
};
|
|
1855
|
+
readonly quantity: {
|
|
1856
|
+
readonly before: "quantityavailable";
|
|
1857
|
+
readonly target: "quantity";
|
|
1858
|
+
readonly policy: "always";
|
|
1859
|
+
readonly conditional: true;
|
|
1860
|
+
readonly note: "A native item field, not a SuiteCommerce one, so it survives the cutover unchanged.";
|
|
1861
|
+
};
|
|
1862
|
+
readonly minimumQuantity: {
|
|
1863
|
+
readonly before: "minimumquantity";
|
|
1864
|
+
readonly target: "minimumQuantity";
|
|
1865
|
+
readonly policy: "always";
|
|
1866
|
+
readonly conditional: true;
|
|
1867
|
+
readonly note: string;
|
|
1868
|
+
};
|
|
1869
|
+
readonly maximumQuantity: {
|
|
1870
|
+
readonly before: "maximumquantity";
|
|
1871
|
+
readonly target: "maximumQuantity";
|
|
1872
|
+
readonly policy: "always";
|
|
1873
|
+
readonly conditional: true;
|
|
1874
|
+
readonly note: string;
|
|
1875
|
+
};
|
|
1876
|
+
readonly enforceMinimum: {
|
|
1877
|
+
readonly before: "enforceminqtyinternally";
|
|
1878
|
+
readonly target: "enforceMinimum";
|
|
1879
|
+
readonly policy: "always";
|
|
1880
|
+
readonly conditional: true;
|
|
1881
|
+
readonly note: string;
|
|
1882
|
+
};
|
|
1883
|
+
readonly isSparePart: {
|
|
1884
|
+
readonly before: "custitem303";
|
|
1885
|
+
readonly target: "isSparePart";
|
|
1886
|
+
readonly policy: "always";
|
|
1887
|
+
readonly conditional: true;
|
|
1888
|
+
readonly note: string;
|
|
1889
|
+
};
|
|
1890
|
+
readonly itemType: {
|
|
1891
|
+
readonly before: "itemtype";
|
|
1892
|
+
readonly target: "itemType";
|
|
1893
|
+
readonly policy: "always";
|
|
1894
|
+
readonly conditional: true;
|
|
1895
|
+
readonly note: string;
|
|
1896
|
+
};
|
|
1897
|
+
readonly stockDescription: {
|
|
1898
|
+
readonly before: "stockdescription";
|
|
1899
|
+
readonly target: "stockDescription";
|
|
1900
|
+
readonly policy: "always";
|
|
1901
|
+
readonly conditional: true;
|
|
1902
|
+
readonly note: string;
|
|
1903
|
+
};
|
|
1904
|
+
readonly noPriceMessage: {
|
|
1905
|
+
readonly before: "nopricemessage";
|
|
1906
|
+
readonly target: "noPriceMessage";
|
|
1907
|
+
readonly policy: "always";
|
|
1908
|
+
readonly conditional: true;
|
|
1909
|
+
readonly note: string;
|
|
1910
|
+
};
|
|
1911
|
+
readonly isSeriesComponent: {
|
|
1912
|
+
readonly before: "custitem40";
|
|
1913
|
+
readonly target: "isSeriesComponent";
|
|
1914
|
+
readonly policy: "always";
|
|
1915
|
+
readonly conditional: true;
|
|
1916
|
+
readonly note: string;
|
|
1917
|
+
};
|
|
1918
|
+
readonly flexWarrantyEligible: {
|
|
1919
|
+
readonly before: "custitem520";
|
|
1920
|
+
readonly target: "flexWarrantyEligible";
|
|
1921
|
+
readonly policy: "always";
|
|
1922
|
+
readonly conditional: true;
|
|
1923
|
+
readonly note: string;
|
|
1924
|
+
};
|
|
1925
|
+
readonly inventoryPolicy: {
|
|
1926
|
+
readonly before: "outofstockbehavior";
|
|
1927
|
+
readonly target: "inventoryPolicy";
|
|
1928
|
+
readonly policy: "always";
|
|
1929
|
+
readonly conditional: true;
|
|
1930
|
+
readonly note: string;
|
|
1931
|
+
};
|
|
1932
|
+
readonly status: {
|
|
1933
|
+
readonly before: "isinactive";
|
|
1934
|
+
readonly target: "status";
|
|
1935
|
+
readonly policy: "always";
|
|
1936
|
+
readonly conditional: true;
|
|
1937
|
+
readonly note: "A native item field, not a SuiteCommerce one, so it survives the cutover unchanged.";
|
|
1938
|
+
};
|
|
1939
|
+
readonly shipping: {
|
|
1940
|
+
readonly before: "weight + weightunit";
|
|
1941
|
+
readonly target: "shipping";
|
|
1942
|
+
readonly policy: "always";
|
|
1943
|
+
readonly conditional: true;
|
|
1944
|
+
readonly note: string;
|
|
1945
|
+
};
|
|
1946
|
+
readonly slug: {
|
|
1947
|
+
readonly before: "urlcomponent";
|
|
1948
|
+
readonly after: "custitem_slug";
|
|
1949
|
+
readonly target: "slug";
|
|
1950
|
+
readonly policy: "seed";
|
|
1951
|
+
readonly identity: true;
|
|
1952
|
+
readonly note: "The storefront URL never moves once a product exists.";
|
|
1953
|
+
readonly caution: "The sync matches on netsuiteId first and falls back to slug. Changing it on a product NetSuite has never supplied makes the next run miss it and insert a second one.";
|
|
1954
|
+
};
|
|
1955
|
+
readonly name: {
|
|
1956
|
+
readonly before: "storedisplayname";
|
|
1957
|
+
readonly after: "custitem_product_name";
|
|
1958
|
+
readonly target: "name";
|
|
1959
|
+
readonly policy: "always";
|
|
1960
|
+
readonly conditional: true;
|
|
1961
|
+
readonly note: string;
|
|
1962
|
+
};
|
|
1963
|
+
readonly featured: {
|
|
1964
|
+
readonly before: "featureddescription";
|
|
1965
|
+
readonly after: "custitem_product_featured_description";
|
|
1966
|
+
readonly target: "description";
|
|
1967
|
+
readonly policy: "always";
|
|
1968
|
+
readonly conditional: true;
|
|
1969
|
+
readonly note: string;
|
|
1970
|
+
};
|
|
1971
|
+
readonly overview: {
|
|
1972
|
+
readonly before: "storedetaileddescription";
|
|
1973
|
+
readonly after: "custitem_product_description";
|
|
1974
|
+
readonly target: "overview";
|
|
1975
|
+
readonly policy: "always";
|
|
1976
|
+
readonly conditional: true;
|
|
1977
|
+
};
|
|
1978
|
+
readonly pageTitle: {
|
|
1979
|
+
readonly before: "pagetitle";
|
|
1980
|
+
readonly after: "custitem_page_title";
|
|
1981
|
+
readonly target: "seoMetaData.title";
|
|
1982
|
+
readonly policy: "always";
|
|
1983
|
+
readonly conditional: true;
|
|
1984
|
+
};
|
|
1985
|
+
readonly online: {
|
|
1986
|
+
readonly before: "isonline";
|
|
1987
|
+
readonly after: "custitem_display_online";
|
|
1988
|
+
readonly target: "isOnline";
|
|
1989
|
+
readonly policy: "always";
|
|
1990
|
+
readonly conditional: true;
|
|
1991
|
+
readonly note: string;
|
|
1992
|
+
};
|
|
1993
|
+
readonly saleType: {
|
|
1994
|
+
readonly before: "dontshowprice";
|
|
1995
|
+
readonly after: "custitem_quote_only";
|
|
1996
|
+
readonly target: "saleType";
|
|
1997
|
+
readonly policy: "always";
|
|
1998
|
+
readonly conditional: true;
|
|
1999
|
+
readonly note: "Derived from the quote-only flag and the price by saleTypeOf, so it is recomputed on every refresh.";
|
|
2000
|
+
};
|
|
2001
|
+
readonly quoteOnly: {
|
|
2002
|
+
readonly before: "dontshowprice";
|
|
2003
|
+
readonly after: "custitem_quote_only";
|
|
2004
|
+
readonly target: "metaData.quoteOnly";
|
|
2005
|
+
readonly policy: "seed";
|
|
2006
|
+
readonly note: "Written only at creation, so a later flip in NetSuite is never picked up.";
|
|
2007
|
+
};
|
|
2008
|
+
readonly image: {
|
|
2009
|
+
readonly before: "storedisplayimage";
|
|
2010
|
+
readonly after: "custitem_itemimages";
|
|
2011
|
+
readonly target: "images";
|
|
2012
|
+
readonly policy: "always";
|
|
2013
|
+
readonly conditional: true;
|
|
2014
|
+
readonly note: "Before is a file id needing a lookup; after is a ready CDN URL.";
|
|
2015
|
+
};
|
|
2016
|
+
readonly category: {
|
|
2017
|
+
readonly before: "commercecategoryitemassociation.category";
|
|
2018
|
+
readonly after: "custitem_primary_category";
|
|
2019
|
+
readonly target: "category";
|
|
2020
|
+
readonly policy: "always";
|
|
2021
|
+
readonly conditional: true;
|
|
2022
|
+
readonly note: string;
|
|
2023
|
+
};
|
|
2024
|
+
readonly seoDescription: {
|
|
2025
|
+
readonly before: "metataghtml";
|
|
2026
|
+
readonly after: "custitem_meta_description";
|
|
2027
|
+
readonly target: "seoMetaData.description";
|
|
2028
|
+
readonly policy: "always";
|
|
2029
|
+
readonly conditional: true;
|
|
2030
|
+
readonly note: "The replacement exists but carries no data yet.";
|
|
2031
|
+
};
|
|
2032
|
+
readonly brand: {
|
|
2033
|
+
readonly before: "manufacturer";
|
|
2034
|
+
readonly target: "brand";
|
|
2035
|
+
readonly policy: "always";
|
|
2036
|
+
readonly conditional: true;
|
|
2037
|
+
readonly note: string;
|
|
2038
|
+
};
|
|
2039
|
+
readonly googleCategory: {
|
|
2040
|
+
readonly after: "custitemproducttype";
|
|
2041
|
+
readonly target: "googleCategory";
|
|
2042
|
+
readonly policy: "always";
|
|
2043
|
+
readonly conditional: true;
|
|
2044
|
+
readonly note: string;
|
|
2045
|
+
};
|
|
2046
|
+
readonly department: {
|
|
2047
|
+
readonly after: "custitemfas_product_category";
|
|
2048
|
+
readonly target: "department";
|
|
2049
|
+
readonly policy: "always";
|
|
2050
|
+
readonly conditional: true;
|
|
2051
|
+
readonly note: string;
|
|
2052
|
+
};
|
|
2053
|
+
readonly imageAlt: {
|
|
2054
|
+
readonly after: "custitemaltimgtext";
|
|
2055
|
+
readonly target: "images.alt";
|
|
2056
|
+
readonly policy: "always";
|
|
2057
|
+
readonly conditional: true;
|
|
2058
|
+
readonly note: string;
|
|
2059
|
+
};
|
|
2060
|
+
readonly family: {
|
|
2061
|
+
readonly after: "custitem_family";
|
|
2062
|
+
readonly target: "metaData.family";
|
|
2063
|
+
readonly policy: "seed";
|
|
2064
|
+
readonly pending: true;
|
|
2065
|
+
readonly note: "Populated on 17,552 items. No storefront field consumes it yet.";
|
|
2066
|
+
};
|
|
2067
|
+
readonly primaryCategory: {
|
|
2068
|
+
readonly before: "commercecategoryitemassociation.primarycategory";
|
|
2069
|
+
readonly after: "custitem_primary_category";
|
|
2070
|
+
readonly target: "metaData.primaryCategory";
|
|
2071
|
+
readonly policy: "seed";
|
|
2072
|
+
readonly note: string;
|
|
2073
|
+
};
|
|
2074
|
+
readonly additionalCategories: {
|
|
2075
|
+
readonly sourceTable: "commercecategoryitemassociation";
|
|
2076
|
+
readonly after: "custitem_additional_categories";
|
|
2077
|
+
readonly target: "categories";
|
|
2078
|
+
readonly policy: "always";
|
|
2079
|
+
readonly note: string;
|
|
2080
|
+
readonly caution: string;
|
|
2081
|
+
};
|
|
2082
|
+
readonly micrositeDescription: {
|
|
2083
|
+
readonly after: "custitem_microsite_description";
|
|
2084
|
+
readonly target: "metaData.micrositeDescription";
|
|
2085
|
+
readonly policy: "seed";
|
|
2086
|
+
readonly pending: true;
|
|
2087
|
+
readonly note: "Populated on 2,284 items.";
|
|
2088
|
+
};
|
|
2089
|
+
readonly features: {
|
|
2090
|
+
readonly after: "custitem_features";
|
|
2091
|
+
readonly target: "metaData.features";
|
|
2092
|
+
readonly policy: "seed";
|
|
2093
|
+
readonly pending: true;
|
|
2094
|
+
readonly note: "Field exists in NetSuite and carries no data yet.";
|
|
2095
|
+
};
|
|
2096
|
+
readonly childStoreOnly: {
|
|
2097
|
+
readonly after: "custitem_child_store_only";
|
|
2098
|
+
readonly target: "childOnly";
|
|
2099
|
+
readonly policy: "seed";
|
|
2100
|
+
readonly pending: true;
|
|
2101
|
+
readonly note: "Nothing is flagged yet. Our stores[] array already covers this.";
|
|
2102
|
+
};
|
|
2103
|
+
};
|
|
2104
|
+
|
|
2105
|
+
type SyncPolicy = "always" | "seed";
|
|
2106
|
+
interface FieldMapping {
|
|
2107
|
+
before?: string;
|
|
2108
|
+
after?: string;
|
|
2109
|
+
sourceTable?: string;
|
|
2110
|
+
target: string;
|
|
2111
|
+
policy: SyncPolicy;
|
|
2112
|
+
pending?: boolean;
|
|
2113
|
+
conditional?: boolean;
|
|
2114
|
+
identity?: boolean;
|
|
2115
|
+
caution?: string;
|
|
2116
|
+
note?: string;
|
|
2117
|
+
}
|
|
2118
|
+
type FieldMap = Record<string, FieldMapping>;
|
|
2119
|
+
|
|
2120
|
+
declare const readMapped: (row: Record<string, unknown>, field: FieldMapping) => string | undefined;
|
|
2121
|
+
declare class NetsuiteFieldProvider<M extends FieldMap> {
|
|
2122
|
+
readonly entity: string;
|
|
2123
|
+
readonly fields: M;
|
|
2124
|
+
constructor(entity: string, fields: M);
|
|
2125
|
+
columns(extra?: readonly string[]): string[];
|
|
2126
|
+
select(alias: string, extra?: readonly string[]): string;
|
|
2127
|
+
read(row: Record<string, unknown>, key: keyof M): string | undefined;
|
|
2128
|
+
alwaysWritten(): string[];
|
|
2129
|
+
orphaned(): Array<[string, FieldMapping]>;
|
|
2130
|
+
pending(): Array<[string, FieldMapping]>;
|
|
2131
|
+
targetForSource(column: string): string | undefined;
|
|
2132
|
+
private entries;
|
|
2133
|
+
}
|
|
2134
|
+
|
|
2135
|
+
declare const RELATION_FIELDS: {
|
|
2136
|
+
readonly accessories: {
|
|
2137
|
+
readonly after: "custitem_accessories";
|
|
2138
|
+
readonly target: "relationGroups.accessories";
|
|
2139
|
+
readonly policy: "seed";
|
|
2140
|
+
readonly pending: true;
|
|
2141
|
+
readonly note: "Field exists in NetSuite and carries no data yet.";
|
|
2142
|
+
};
|
|
2143
|
+
readonly toolKits: {
|
|
2144
|
+
readonly after: "custitem_tool_kits";
|
|
2145
|
+
readonly target: "relationGroups.tool-kits";
|
|
2146
|
+
readonly policy: "seed";
|
|
2147
|
+
readonly pending: true;
|
|
2148
|
+
readonly note: "Field exists in NetSuite and carries no data yet.";
|
|
2149
|
+
};
|
|
2150
|
+
readonly parts: {
|
|
2151
|
+
readonly after: "custitem_parts";
|
|
2152
|
+
readonly target: "relationGroups.parts";
|
|
2153
|
+
readonly policy: "seed";
|
|
2154
|
+
readonly pending: true;
|
|
2155
|
+
readonly note: "Field exists in NetSuite and carries no data yet.";
|
|
2156
|
+
};
|
|
2157
|
+
readonly similarProducts: {
|
|
2158
|
+
readonly after: "custitem_similiar_products";
|
|
2159
|
+
readonly target: "relationGroups.similar-products";
|
|
2160
|
+
readonly policy: "seed";
|
|
2161
|
+
readonly pending: true;
|
|
2162
|
+
readonly note: "The scriptid misspells Similar. That spelling is the real identifier.";
|
|
2163
|
+
};
|
|
2164
|
+
readonly frequentlyBought: {
|
|
2165
|
+
readonly before: "itemcorrelateditem";
|
|
2166
|
+
readonly after: "custitem_frequently_bought";
|
|
2167
|
+
readonly target: "relationGroups.frequently-bought-together";
|
|
2168
|
+
readonly policy: "seed";
|
|
2169
|
+
readonly pending: true;
|
|
2170
|
+
readonly note: "Before is NetSuite's own correlation feed, 894 rows, derived from SuiteCommerce traffic.";
|
|
2171
|
+
};
|
|
2172
|
+
readonly includedItems: {
|
|
2173
|
+
readonly after: "custitem_included_items";
|
|
2174
|
+
readonly target: "relationGroups.kit-contents";
|
|
2175
|
+
readonly policy: "seed";
|
|
2176
|
+
readonly pending: true;
|
|
2177
|
+
readonly note: "Field exists in NetSuite and carries no data yet.";
|
|
2178
|
+
};
|
|
2179
|
+
readonly modelsAvailable: {
|
|
2180
|
+
readonly after: "custitem_models_available";
|
|
2181
|
+
readonly target: "relationGroups.models-available";
|
|
2182
|
+
readonly policy: "seed";
|
|
2183
|
+
readonly pending: true;
|
|
2184
|
+
readonly note: "Populated on 1,365 items. No relation group is seeded for it yet.";
|
|
2185
|
+
};
|
|
2186
|
+
};
|
|
2187
|
+
|
|
2188
|
+
declare const productFields: NetsuiteFieldProvider<{
|
|
2189
|
+
readonly netsuiteId: {
|
|
2190
|
+
readonly before: "item.id";
|
|
2191
|
+
readonly target: "netsuiteId";
|
|
2192
|
+
readonly policy: "always";
|
|
2193
|
+
readonly conditional: true;
|
|
2194
|
+
readonly note: string;
|
|
2195
|
+
};
|
|
2196
|
+
readonly sku: {
|
|
2197
|
+
readonly before: "item.itemid";
|
|
2198
|
+
readonly target: "sku";
|
|
2199
|
+
readonly policy: "always";
|
|
2200
|
+
readonly conditional: true;
|
|
2201
|
+
readonly note: "A native item field, not a SuiteCommerce one, so it survives the cutover unchanged.";
|
|
2202
|
+
};
|
|
2203
|
+
readonly originalPrice: {
|
|
2204
|
+
readonly before: "itemprice at the Base Price level (1)";
|
|
2205
|
+
readonly target: "price.originalPrice";
|
|
2206
|
+
readonly policy: "always";
|
|
2207
|
+
readonly conditional: true;
|
|
2208
|
+
readonly note: string;
|
|
2209
|
+
};
|
|
2210
|
+
readonly discount: {
|
|
2211
|
+
readonly before: "derived from Base Price vs Online Price";
|
|
2212
|
+
readonly target: "price.discount";
|
|
2213
|
+
readonly policy: "always";
|
|
2214
|
+
readonly conditional: true;
|
|
2215
|
+
readonly note: string;
|
|
2216
|
+
};
|
|
2217
|
+
readonly weight: {
|
|
2218
|
+
readonly before: "weight + weightunit";
|
|
2219
|
+
readonly target: "shipping.weightLb";
|
|
2220
|
+
readonly policy: "always";
|
|
2221
|
+
readonly conditional: true;
|
|
2222
|
+
readonly note: "weight is on 299,354 items, weightunit on 107,131. Converted to lb and kg on import.";
|
|
2223
|
+
};
|
|
2224
|
+
readonly dimensions: {
|
|
2225
|
+
readonly target: "shipping.lengthIn";
|
|
2226
|
+
readonly policy: "seed";
|
|
2227
|
+
readonly note: string;
|
|
2228
|
+
};
|
|
2229
|
+
readonly price: {
|
|
2230
|
+
readonly before: "itemprice at the online price level";
|
|
2231
|
+
readonly target: "price";
|
|
2232
|
+
readonly policy: "always";
|
|
2233
|
+
readonly conditional: true;
|
|
2234
|
+
readonly note: string;
|
|
2235
|
+
};
|
|
2236
|
+
readonly quantity: {
|
|
2237
|
+
readonly before: "quantityavailable";
|
|
2238
|
+
readonly target: "quantity";
|
|
2239
|
+
readonly policy: "always";
|
|
2240
|
+
readonly conditional: true;
|
|
2241
|
+
readonly note: "A native item field, not a SuiteCommerce one, so it survives the cutover unchanged.";
|
|
2242
|
+
};
|
|
2243
|
+
readonly minimumQuantity: {
|
|
2244
|
+
readonly before: "minimumquantity";
|
|
2245
|
+
readonly target: "minimumQuantity";
|
|
2246
|
+
readonly policy: "always";
|
|
2247
|
+
readonly conditional: true;
|
|
2248
|
+
readonly note: string;
|
|
2249
|
+
};
|
|
2250
|
+
readonly maximumQuantity: {
|
|
2251
|
+
readonly before: "maximumquantity";
|
|
2252
|
+
readonly target: "maximumQuantity";
|
|
2253
|
+
readonly policy: "always";
|
|
2254
|
+
readonly conditional: true;
|
|
2255
|
+
readonly note: string;
|
|
2256
|
+
};
|
|
2257
|
+
readonly enforceMinimum: {
|
|
2258
|
+
readonly before: "enforceminqtyinternally";
|
|
2259
|
+
readonly target: "enforceMinimum";
|
|
2260
|
+
readonly policy: "always";
|
|
2261
|
+
readonly conditional: true;
|
|
2262
|
+
readonly note: string;
|
|
2263
|
+
};
|
|
2264
|
+
readonly isSparePart: {
|
|
2265
|
+
readonly before: "custitem303";
|
|
2266
|
+
readonly target: "isSparePart";
|
|
2267
|
+
readonly policy: "always";
|
|
2268
|
+
readonly conditional: true;
|
|
2269
|
+
readonly note: string;
|
|
2270
|
+
};
|
|
2271
|
+
readonly itemType: {
|
|
2272
|
+
readonly before: "itemtype";
|
|
2273
|
+
readonly target: "itemType";
|
|
2274
|
+
readonly policy: "always";
|
|
2275
|
+
readonly conditional: true;
|
|
2276
|
+
readonly note: string;
|
|
2277
|
+
};
|
|
2278
|
+
readonly stockDescription: {
|
|
2279
|
+
readonly before: "stockdescription";
|
|
2280
|
+
readonly target: "stockDescription";
|
|
2281
|
+
readonly policy: "always";
|
|
2282
|
+
readonly conditional: true;
|
|
2283
|
+
readonly note: string;
|
|
2284
|
+
};
|
|
2285
|
+
readonly noPriceMessage: {
|
|
2286
|
+
readonly before: "nopricemessage";
|
|
2287
|
+
readonly target: "noPriceMessage";
|
|
2288
|
+
readonly policy: "always";
|
|
2289
|
+
readonly conditional: true;
|
|
2290
|
+
readonly note: string;
|
|
2291
|
+
};
|
|
2292
|
+
readonly isSeriesComponent: {
|
|
2293
|
+
readonly before: "custitem40";
|
|
2294
|
+
readonly target: "isSeriesComponent";
|
|
2295
|
+
readonly policy: "always";
|
|
2296
|
+
readonly conditional: true;
|
|
2297
|
+
readonly note: string;
|
|
2298
|
+
};
|
|
2299
|
+
readonly flexWarrantyEligible: {
|
|
2300
|
+
readonly before: "custitem520";
|
|
2301
|
+
readonly target: "flexWarrantyEligible";
|
|
2302
|
+
readonly policy: "always";
|
|
2303
|
+
readonly conditional: true;
|
|
2304
|
+
readonly note: string;
|
|
2305
|
+
};
|
|
2306
|
+
readonly inventoryPolicy: {
|
|
2307
|
+
readonly before: "outofstockbehavior";
|
|
2308
|
+
readonly target: "inventoryPolicy";
|
|
2309
|
+
readonly policy: "always";
|
|
2310
|
+
readonly conditional: true;
|
|
2311
|
+
readonly note: string;
|
|
2312
|
+
};
|
|
2313
|
+
readonly status: {
|
|
2314
|
+
readonly before: "isinactive";
|
|
2315
|
+
readonly target: "status";
|
|
2316
|
+
readonly policy: "always";
|
|
2317
|
+
readonly conditional: true;
|
|
2318
|
+
readonly note: "A native item field, not a SuiteCommerce one, so it survives the cutover unchanged.";
|
|
2319
|
+
};
|
|
2320
|
+
readonly shipping: {
|
|
2321
|
+
readonly before: "weight + weightunit";
|
|
2322
|
+
readonly target: "shipping";
|
|
2323
|
+
readonly policy: "always";
|
|
2324
|
+
readonly conditional: true;
|
|
2325
|
+
readonly note: string;
|
|
2326
|
+
};
|
|
2327
|
+
readonly slug: {
|
|
2328
|
+
readonly before: "urlcomponent";
|
|
2329
|
+
readonly after: "custitem_slug";
|
|
2330
|
+
readonly target: "slug";
|
|
2331
|
+
readonly policy: "seed";
|
|
2332
|
+
readonly identity: true;
|
|
2333
|
+
readonly note: "The storefront URL never moves once a product exists.";
|
|
2334
|
+
readonly caution: "The sync matches on netsuiteId first and falls back to slug. Changing it on a product NetSuite has never supplied makes the next run miss it and insert a second one.";
|
|
2335
|
+
};
|
|
2336
|
+
readonly name: {
|
|
2337
|
+
readonly before: "storedisplayname";
|
|
2338
|
+
readonly after: "custitem_product_name";
|
|
2339
|
+
readonly target: "name";
|
|
2340
|
+
readonly policy: "always";
|
|
2341
|
+
readonly conditional: true;
|
|
2342
|
+
readonly note: string;
|
|
2343
|
+
};
|
|
2344
|
+
readonly featured: {
|
|
2345
|
+
readonly before: "featureddescription";
|
|
2346
|
+
readonly after: "custitem_product_featured_description";
|
|
2347
|
+
readonly target: "description";
|
|
2348
|
+
readonly policy: "always";
|
|
2349
|
+
readonly conditional: true;
|
|
2350
|
+
readonly note: string;
|
|
2351
|
+
};
|
|
2352
|
+
readonly overview: {
|
|
2353
|
+
readonly before: "storedetaileddescription";
|
|
2354
|
+
readonly after: "custitem_product_description";
|
|
2355
|
+
readonly target: "overview";
|
|
2356
|
+
readonly policy: "always";
|
|
2357
|
+
readonly conditional: true;
|
|
2358
|
+
};
|
|
2359
|
+
readonly pageTitle: {
|
|
2360
|
+
readonly before: "pagetitle";
|
|
2361
|
+
readonly after: "custitem_page_title";
|
|
2362
|
+
readonly target: "seoMetaData.title";
|
|
2363
|
+
readonly policy: "always";
|
|
2364
|
+
readonly conditional: true;
|
|
2365
|
+
};
|
|
2366
|
+
readonly online: {
|
|
2367
|
+
readonly before: "isonline";
|
|
2368
|
+
readonly after: "custitem_display_online";
|
|
2369
|
+
readonly target: "isOnline";
|
|
2370
|
+
readonly policy: "always";
|
|
2371
|
+
readonly conditional: true;
|
|
2372
|
+
readonly note: string;
|
|
2373
|
+
};
|
|
2374
|
+
readonly saleType: {
|
|
2375
|
+
readonly before: "dontshowprice";
|
|
2376
|
+
readonly after: "custitem_quote_only";
|
|
2377
|
+
readonly target: "saleType";
|
|
2378
|
+
readonly policy: "always";
|
|
2379
|
+
readonly conditional: true;
|
|
2380
|
+
readonly note: "Derived from the quote-only flag and the price by saleTypeOf, so it is recomputed on every refresh.";
|
|
2381
|
+
};
|
|
2382
|
+
readonly quoteOnly: {
|
|
2383
|
+
readonly before: "dontshowprice";
|
|
2384
|
+
readonly after: "custitem_quote_only";
|
|
2385
|
+
readonly target: "metaData.quoteOnly";
|
|
2386
|
+
readonly policy: "seed";
|
|
2387
|
+
readonly note: "Written only at creation, so a later flip in NetSuite is never picked up.";
|
|
2388
|
+
};
|
|
2389
|
+
readonly image: {
|
|
2390
|
+
readonly before: "storedisplayimage";
|
|
2391
|
+
readonly after: "custitem_itemimages";
|
|
2392
|
+
readonly target: "images";
|
|
2393
|
+
readonly policy: "always";
|
|
2394
|
+
readonly conditional: true;
|
|
2395
|
+
readonly note: "Before is a file id needing a lookup; after is a ready CDN URL.";
|
|
2396
|
+
};
|
|
2397
|
+
readonly category: {
|
|
2398
|
+
readonly before: "commercecategoryitemassociation.category";
|
|
2399
|
+
readonly after: "custitem_primary_category";
|
|
2400
|
+
readonly target: "category";
|
|
2401
|
+
readonly policy: "always";
|
|
2402
|
+
readonly conditional: true;
|
|
2403
|
+
readonly note: string;
|
|
2404
|
+
};
|
|
2405
|
+
readonly seoDescription: {
|
|
2406
|
+
readonly before: "metataghtml";
|
|
2407
|
+
readonly after: "custitem_meta_description";
|
|
2408
|
+
readonly target: "seoMetaData.description";
|
|
2409
|
+
readonly policy: "always";
|
|
2410
|
+
readonly conditional: true;
|
|
2411
|
+
readonly note: "The replacement exists but carries no data yet.";
|
|
2412
|
+
};
|
|
2413
|
+
readonly brand: {
|
|
2414
|
+
readonly before: "manufacturer";
|
|
2415
|
+
readonly target: "brand";
|
|
2416
|
+
readonly policy: "always";
|
|
2417
|
+
readonly conditional: true;
|
|
2418
|
+
readonly note: string;
|
|
2419
|
+
};
|
|
2420
|
+
readonly googleCategory: {
|
|
2421
|
+
readonly after: "custitemproducttype";
|
|
2422
|
+
readonly target: "googleCategory";
|
|
2423
|
+
readonly policy: "always";
|
|
2424
|
+
readonly conditional: true;
|
|
2425
|
+
readonly note: string;
|
|
2426
|
+
};
|
|
2427
|
+
readonly department: {
|
|
2428
|
+
readonly after: "custitemfas_product_category";
|
|
2429
|
+
readonly target: "department";
|
|
2430
|
+
readonly policy: "always";
|
|
2431
|
+
readonly conditional: true;
|
|
2432
|
+
readonly note: string;
|
|
2433
|
+
};
|
|
2434
|
+
readonly imageAlt: {
|
|
2435
|
+
readonly after: "custitemaltimgtext";
|
|
2436
|
+
readonly target: "images.alt";
|
|
2437
|
+
readonly policy: "always";
|
|
2438
|
+
readonly conditional: true;
|
|
2439
|
+
readonly note: string;
|
|
2440
|
+
};
|
|
2441
|
+
readonly family: {
|
|
2442
|
+
readonly after: "custitem_family";
|
|
2443
|
+
readonly target: "metaData.family";
|
|
2444
|
+
readonly policy: "seed";
|
|
2445
|
+
readonly pending: true;
|
|
2446
|
+
readonly note: "Populated on 17,552 items. No storefront field consumes it yet.";
|
|
2447
|
+
};
|
|
2448
|
+
readonly primaryCategory: {
|
|
2449
|
+
readonly before: "commercecategoryitemassociation.primarycategory";
|
|
2450
|
+
readonly after: "custitem_primary_category";
|
|
2451
|
+
readonly target: "metaData.primaryCategory";
|
|
2452
|
+
readonly policy: "seed";
|
|
2453
|
+
readonly note: string;
|
|
2454
|
+
};
|
|
2455
|
+
readonly additionalCategories: {
|
|
2456
|
+
readonly sourceTable: "commercecategoryitemassociation";
|
|
2457
|
+
readonly after: "custitem_additional_categories";
|
|
2458
|
+
readonly target: "categories";
|
|
2459
|
+
readonly policy: "always";
|
|
2460
|
+
readonly note: string;
|
|
2461
|
+
readonly caution: string;
|
|
2462
|
+
};
|
|
2463
|
+
readonly micrositeDescription: {
|
|
2464
|
+
readonly after: "custitem_microsite_description";
|
|
2465
|
+
readonly target: "metaData.micrositeDescription";
|
|
2466
|
+
readonly policy: "seed";
|
|
2467
|
+
readonly pending: true;
|
|
2468
|
+
readonly note: "Populated on 2,284 items.";
|
|
2469
|
+
};
|
|
2470
|
+
readonly features: {
|
|
2471
|
+
readonly after: "custitem_features";
|
|
2472
|
+
readonly target: "metaData.features";
|
|
2473
|
+
readonly policy: "seed";
|
|
2474
|
+
readonly pending: true;
|
|
2475
|
+
readonly note: "Field exists in NetSuite and carries no data yet.";
|
|
2476
|
+
};
|
|
2477
|
+
readonly childStoreOnly: {
|
|
2478
|
+
readonly after: "custitem_child_store_only";
|
|
2479
|
+
readonly target: "childOnly";
|
|
2480
|
+
readonly policy: "seed";
|
|
2481
|
+
readonly pending: true;
|
|
2482
|
+
readonly note: "Nothing is flagged yet. Our stores[] array already covers this.";
|
|
2483
|
+
};
|
|
2484
|
+
}>;
|
|
2485
|
+
declare const addonFields: NetsuiteFieldProvider<{
|
|
2486
|
+
readonly netsuiteItemId: {
|
|
2487
|
+
readonly before: "item.id";
|
|
2488
|
+
readonly target: "netsuite.itemId";
|
|
2489
|
+
readonly policy: "always";
|
|
2490
|
+
readonly conditional: true;
|
|
2491
|
+
readonly note: string;
|
|
2492
|
+
};
|
|
2493
|
+
readonly netsuiteItemName: {
|
|
2494
|
+
readonly before: "item.itemid";
|
|
2495
|
+
readonly target: "netsuite.itemName";
|
|
2496
|
+
readonly policy: "always";
|
|
2497
|
+
readonly conditional: true;
|
|
2498
|
+
readonly note: "A native NetSuite item field, not a SuiteCommerce one, so it survives the cutover.";
|
|
2499
|
+
};
|
|
2500
|
+
readonly groupAndOption: {
|
|
2501
|
+
readonly before: "storedisplayname";
|
|
2502
|
+
readonly target: "name";
|
|
2503
|
+
readonly policy: "always";
|
|
2504
|
+
readonly conditional: true;
|
|
2505
|
+
readonly identity: true;
|
|
2506
|
+
readonly note: string;
|
|
2507
|
+
};
|
|
2508
|
+
readonly key: {
|
|
2509
|
+
readonly before: "urlcomponent";
|
|
2510
|
+
readonly target: "key";
|
|
2511
|
+
readonly policy: "always";
|
|
2512
|
+
readonly identity: true;
|
|
2513
|
+
readonly note: string;
|
|
2514
|
+
readonly caution: "Changing urlcomponent in NetSuite orphans the existing add-on and creates a new one.";
|
|
2515
|
+
};
|
|
2516
|
+
readonly active: {
|
|
2517
|
+
readonly before: "isinactive";
|
|
2518
|
+
readonly target: "status";
|
|
2519
|
+
readonly policy: "always";
|
|
2520
|
+
readonly conditional: true;
|
|
2521
|
+
readonly note: string;
|
|
2522
|
+
};
|
|
2523
|
+
readonly visible: {
|
|
2524
|
+
readonly before: "isonline";
|
|
2525
|
+
readonly target: "isVisible";
|
|
2526
|
+
readonly policy: "always";
|
|
2527
|
+
readonly conditional: true;
|
|
2528
|
+
readonly note: string;
|
|
2529
|
+
};
|
|
2530
|
+
readonly pricingType: {
|
|
2531
|
+
readonly target: "pricingType";
|
|
2532
|
+
readonly policy: "seed";
|
|
2533
|
+
readonly note: string;
|
|
2534
|
+
};
|
|
2535
|
+
readonly price: {
|
|
2536
|
+
readonly before: "itemprice at price level 1";
|
|
2537
|
+
readonly target: "price";
|
|
2538
|
+
readonly policy: "always";
|
|
2539
|
+
readonly conditional: true;
|
|
2540
|
+
readonly note: "Base price. An option with no level-1 price is reported by the sync rather than written as $0.";
|
|
2541
|
+
};
|
|
2542
|
+
readonly sellingPoints: {
|
|
2543
|
+
readonly before: "salesdescription";
|
|
2544
|
+
readonly target: "description";
|
|
2545
|
+
readonly policy: "always";
|
|
2546
|
+
readonly conditional: true;
|
|
2547
|
+
readonly note: string;
|
|
2548
|
+
};
|
|
2549
|
+
readonly detail: {
|
|
2550
|
+
readonly before: "storedetaileddescription";
|
|
2551
|
+
readonly target: "longDescription";
|
|
2552
|
+
readonly policy: "always";
|
|
2553
|
+
readonly conditional: true;
|
|
2554
|
+
readonly note: string;
|
|
2555
|
+
};
|
|
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
|
+
readonly eligibilityGate: {
|
|
2564
|
+
readonly before: "custitem520";
|
|
2565
|
+
readonly target: "AddonGroup.netsuite.requiresField";
|
|
2566
|
+
readonly policy: "seed";
|
|
2567
|
+
readonly note: string;
|
|
2568
|
+
};
|
|
2569
|
+
}>;
|
|
2570
|
+
declare const brandFields: NetsuiteFieldProvider<{
|
|
2571
|
+
readonly name: {
|
|
2572
|
+
readonly before: "commercecategory.name";
|
|
2573
|
+
readonly after: "item.manufacturer";
|
|
2574
|
+
readonly target: "name";
|
|
2575
|
+
readonly policy: "always";
|
|
2576
|
+
};
|
|
2577
|
+
readonly online: {
|
|
2578
|
+
readonly before: "isonline";
|
|
2579
|
+
readonly after: "custitem_display_online";
|
|
2580
|
+
readonly target: "isOnline";
|
|
2581
|
+
readonly policy: "always";
|
|
2582
|
+
};
|
|
2583
|
+
readonly netsuiteId: {
|
|
2584
|
+
readonly before: "commercecategory.id";
|
|
2585
|
+
readonly target: "netsuiteId";
|
|
2586
|
+
readonly policy: "always";
|
|
2587
|
+
readonly conditional: true;
|
|
2588
|
+
readonly note: "No successor. The manufacturer name becomes the key.";
|
|
2589
|
+
};
|
|
2590
|
+
readonly slug: {
|
|
2591
|
+
readonly before: "commercecategory.urlfragment";
|
|
2592
|
+
readonly target: "slug";
|
|
2593
|
+
readonly policy: "seed";
|
|
2594
|
+
readonly identity: true;
|
|
2595
|
+
readonly note: string;
|
|
2596
|
+
readonly caution: string;
|
|
2597
|
+
};
|
|
2598
|
+
readonly logo: {
|
|
2599
|
+
readonly before: "thumbnail";
|
|
2600
|
+
readonly target: "logo";
|
|
2601
|
+
readonly policy: "always";
|
|
2602
|
+
readonly conditional: true;
|
|
2603
|
+
readonly note: "No successor. custrecord35 holds the same logo as a plain URL on all 52 brands.";
|
|
2604
|
+
};
|
|
2605
|
+
readonly description: {
|
|
2606
|
+
readonly before: "commercecategory.description";
|
|
2607
|
+
readonly target: "description";
|
|
2608
|
+
readonly policy: "always";
|
|
2609
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
2610
|
+
};
|
|
2611
|
+
readonly sortOrder: {
|
|
2612
|
+
readonly before: "sequencenumber";
|
|
2613
|
+
readonly target: "sortOrder";
|
|
2614
|
+
readonly policy: "always";
|
|
2615
|
+
readonly conditional: true;
|
|
2616
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
2617
|
+
};
|
|
2618
|
+
readonly seoTitle: {
|
|
2619
|
+
readonly before: "pagetitle";
|
|
2620
|
+
readonly target: "seoMetaData.title";
|
|
2621
|
+
readonly policy: "always";
|
|
2622
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
2623
|
+
};
|
|
2624
|
+
readonly seoDescription: {
|
|
2625
|
+
readonly before: "metadescription";
|
|
2626
|
+
readonly target: "seoMetaData.description";
|
|
2627
|
+
readonly policy: "always";
|
|
2628
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
2629
|
+
};
|
|
2630
|
+
readonly seoKeywords: {
|
|
2631
|
+
readonly before: "metakeywords";
|
|
2632
|
+
readonly target: "seoMetaData.keywords";
|
|
2633
|
+
readonly policy: "always";
|
|
2634
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
2635
|
+
};
|
|
2636
|
+
readonly status: {
|
|
2637
|
+
readonly before: "isinactive + displayinsite";
|
|
2638
|
+
readonly target: "status";
|
|
2639
|
+
readonly policy: "always";
|
|
2640
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
2641
|
+
};
|
|
2642
|
+
readonly headerTag: {
|
|
2643
|
+
readonly before: "pageheading";
|
|
2644
|
+
readonly target: "seoMetaData.headerTag";
|
|
2645
|
+
readonly policy: "always";
|
|
2646
|
+
readonly note: string;
|
|
2647
|
+
};
|
|
2648
|
+
readonly banners: {
|
|
2649
|
+
readonly before: "pagebanner";
|
|
2650
|
+
readonly target: "banners";
|
|
2651
|
+
readonly policy: "seed";
|
|
2652
|
+
readonly note: string;
|
|
2653
|
+
};
|
|
2654
|
+
readonly logoUrl: {
|
|
2655
|
+
readonly before: "custrecord35";
|
|
2656
|
+
readonly target: "logo";
|
|
2657
|
+
readonly policy: "seed";
|
|
2658
|
+
readonly pending: true;
|
|
2659
|
+
readonly note: "A plain logo URL on all 52 brands, needing no file lookup. Never imported.";
|
|
2660
|
+
};
|
|
2661
|
+
}>;
|
|
2662
|
+
declare const categoryFields: NetsuiteFieldProvider<{
|
|
2663
|
+
readonly name: {
|
|
2664
|
+
readonly before: "commercecategory.name";
|
|
2665
|
+
readonly after: "custitem_category";
|
|
2666
|
+
readonly target: "name";
|
|
2667
|
+
readonly policy: "always";
|
|
2668
|
+
readonly note: "After is a flat string stamped on the item, not a record.";
|
|
2669
|
+
};
|
|
2670
|
+
readonly online: {
|
|
2671
|
+
readonly before: "isonline";
|
|
2672
|
+
readonly after: "custitem_display_online";
|
|
2673
|
+
readonly target: "isOnline";
|
|
2674
|
+
readonly policy: "always";
|
|
2675
|
+
};
|
|
2676
|
+
readonly netsuiteId: {
|
|
2677
|
+
readonly before: "commercecategory.id";
|
|
2678
|
+
readonly target: "netsuiteId";
|
|
2679
|
+
readonly policy: "always";
|
|
2680
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
2681
|
+
};
|
|
2682
|
+
readonly slug: {
|
|
2683
|
+
readonly before: "urlfragment";
|
|
2684
|
+
readonly target: "slug";
|
|
2685
|
+
readonly policy: "seed";
|
|
2686
|
+
readonly identity: true;
|
|
2687
|
+
readonly note: string;
|
|
2688
|
+
readonly caution: string;
|
|
2689
|
+
};
|
|
2690
|
+
readonly image: {
|
|
2691
|
+
readonly before: "thumbnail";
|
|
2692
|
+
readonly target: "image";
|
|
2693
|
+
readonly policy: "always";
|
|
2694
|
+
readonly note: "No successor. custrecord35 holds 3,735 of these as plain URLs.";
|
|
2695
|
+
};
|
|
2696
|
+
readonly description: {
|
|
2697
|
+
readonly before: "commercecategory.description";
|
|
2698
|
+
readonly target: "description";
|
|
2699
|
+
readonly policy: "always";
|
|
2700
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
2701
|
+
};
|
|
2702
|
+
readonly sortOrder: {
|
|
2703
|
+
readonly before: "sequencenumber";
|
|
2704
|
+
readonly target: "sortOrder";
|
|
2705
|
+
readonly policy: "always";
|
|
2706
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
2707
|
+
};
|
|
2708
|
+
readonly seoTitle: {
|
|
2709
|
+
readonly before: "pagetitle";
|
|
2710
|
+
readonly target: "seoMetaData.title";
|
|
2711
|
+
readonly policy: "always";
|
|
2712
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
2713
|
+
};
|
|
2714
|
+
readonly seoDescription: {
|
|
2715
|
+
readonly before: "metadescription";
|
|
2716
|
+
readonly target: "seoMetaData.description";
|
|
2717
|
+
readonly policy: "always";
|
|
2718
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
2719
|
+
};
|
|
2720
|
+
readonly seoKeywords: {
|
|
2721
|
+
readonly before: "metakeywords";
|
|
2722
|
+
readonly target: "seoMetaData.keywords";
|
|
2723
|
+
readonly policy: "always";
|
|
2724
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
2725
|
+
};
|
|
2726
|
+
readonly status: {
|
|
2727
|
+
readonly before: "isinactive + displayinsite";
|
|
2728
|
+
readonly target: "status";
|
|
2729
|
+
readonly policy: "always";
|
|
2730
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
2731
|
+
};
|
|
2732
|
+
readonly parent: {
|
|
2733
|
+
readonly before: "primaryparent";
|
|
2734
|
+
readonly after: "custitem_primary_category";
|
|
2735
|
+
readonly target: "parent";
|
|
2736
|
+
readonly policy: "always";
|
|
2737
|
+
readonly note: "The single primary parent. Mirrors NetSuite on every sync, so a parent changed here is overwritten. After is populated on only 3,150 items.";
|
|
2738
|
+
};
|
|
2739
|
+
readonly subcategories: {
|
|
2740
|
+
readonly before: "commercecategoryassociation.subcategory";
|
|
2741
|
+
readonly target: "subcategories";
|
|
2742
|
+
readonly policy: "always";
|
|
2743
|
+
readonly note: "The children list, rebuilt from the association table on every sync — NetSuite categories are multi-parent, so 23% of them sit under more than one. `primaryparent` alone misses those. Edits here are overwritten.";
|
|
2744
|
+
readonly caution: "The association row also carries nameoverride / urlfragmentoverride / thumbnailoverride per parent, so the same category is labelled differently under each. Those overrides are applied for the primary parent only.";
|
|
2745
|
+
};
|
|
2746
|
+
readonly headerTag: {
|
|
2747
|
+
readonly before: "pageheading";
|
|
2748
|
+
readonly target: "seoMetaData.headerTag";
|
|
2749
|
+
readonly policy: "always";
|
|
2750
|
+
readonly note: "The H1, on 4,789 categories. addtohead is head markup and is not a substitute.";
|
|
2751
|
+
};
|
|
2752
|
+
readonly banners: {
|
|
2753
|
+
readonly before: "pagebanner";
|
|
2754
|
+
readonly target: "banners";
|
|
2755
|
+
readonly policy: "seed";
|
|
2756
|
+
readonly note: "Seeded from pagebanner on first import; 50 categories carry one. Edits here are never overwritten.";
|
|
2757
|
+
};
|
|
2758
|
+
readonly imageUrl: {
|
|
2759
|
+
readonly before: "custrecord35";
|
|
2760
|
+
readonly target: "image";
|
|
2761
|
+
readonly policy: "seed";
|
|
2762
|
+
readonly pending: true;
|
|
2763
|
+
readonly note: "A plain image URL on 3,735 categories, needing no file lookup. Never imported.";
|
|
2764
|
+
};
|
|
2765
|
+
readonly faq: {
|
|
2766
|
+
readonly before: "custrecord_faq_q1";
|
|
2767
|
+
readonly target: "metaData.faq";
|
|
2768
|
+
readonly policy: "seed";
|
|
2769
|
+
readonly pending: true;
|
|
2770
|
+
readonly note: "Ten question and answer pairs on 34 categories. Editorial copy held nowhere else.";
|
|
2771
|
+
};
|
|
2772
|
+
}>;
|
|
2773
|
+
declare const couponFields: NetsuiteFieldProvider<{
|
|
2774
|
+
promotionId: {
|
|
2775
|
+
before: string;
|
|
2776
|
+
target: string;
|
|
2777
|
+
policy: "always";
|
|
2778
|
+
conditional: true;
|
|
2779
|
+
note: string;
|
|
2780
|
+
};
|
|
2781
|
+
title: {
|
|
2782
|
+
before: string;
|
|
2783
|
+
target: string;
|
|
2784
|
+
policy: "always";
|
|
2785
|
+
conditional: true;
|
|
2786
|
+
note: string;
|
|
2787
|
+
};
|
|
2788
|
+
promotionName: {
|
|
2789
|
+
before: string;
|
|
2790
|
+
target: string;
|
|
2791
|
+
policy: "always";
|
|
2792
|
+
conditional: true;
|
|
2793
|
+
note: string;
|
|
2794
|
+
};
|
|
2795
|
+
couponCode: {
|
|
2796
|
+
before: string;
|
|
2797
|
+
target: string;
|
|
2798
|
+
policy: "always";
|
|
2799
|
+
identity: true;
|
|
2800
|
+
note: string;
|
|
2801
|
+
caution: string;
|
|
2802
|
+
};
|
|
2803
|
+
discountType: {
|
|
2804
|
+
before: string;
|
|
2805
|
+
target: string;
|
|
2806
|
+
policy: "always";
|
|
2807
|
+
conditional: true;
|
|
2808
|
+
note: string;
|
|
2809
|
+
};
|
|
2810
|
+
discountValue: {
|
|
2811
|
+
before: string;
|
|
2812
|
+
target: string;
|
|
2813
|
+
policy: "always";
|
|
2814
|
+
conditional: true;
|
|
2815
|
+
note: string;
|
|
2816
|
+
};
|
|
2817
|
+
startTime: {
|
|
2818
|
+
before: string;
|
|
2819
|
+
target: string;
|
|
2820
|
+
policy: "always";
|
|
2821
|
+
conditional: true;
|
|
2822
|
+
note: string;
|
|
2823
|
+
};
|
|
2824
|
+
endTime: {
|
|
2825
|
+
before: string;
|
|
2826
|
+
target: string;
|
|
2827
|
+
policy: "always";
|
|
2828
|
+
conditional: true;
|
|
2829
|
+
note: string;
|
|
2830
|
+
};
|
|
2831
|
+
status: {
|
|
2832
|
+
before: string;
|
|
2833
|
+
target: string;
|
|
2834
|
+
policy: "always";
|
|
2835
|
+
conditional: true;
|
|
2836
|
+
note: string;
|
|
2837
|
+
};
|
|
2838
|
+
discountItemId: {
|
|
2839
|
+
before: string;
|
|
2840
|
+
target: string;
|
|
2841
|
+
policy: "always";
|
|
2842
|
+
conditional: true;
|
|
2843
|
+
note: string;
|
|
2844
|
+
};
|
|
2845
|
+
discountItemName: {
|
|
2846
|
+
before: string;
|
|
2847
|
+
target: string;
|
|
2848
|
+
policy: "always";
|
|
2849
|
+
conditional: true;
|
|
2850
|
+
note: string;
|
|
2851
|
+
};
|
|
2852
|
+
discountReducesTax: {
|
|
2853
|
+
before: string;
|
|
2854
|
+
target: string;
|
|
2855
|
+
policy: "always";
|
|
2856
|
+
conditional: true;
|
|
2857
|
+
note: string;
|
|
2858
|
+
};
|
|
2859
|
+
applyDiscountTo: {
|
|
2860
|
+
before: string;
|
|
2861
|
+
target: string;
|
|
2862
|
+
policy: "always";
|
|
2863
|
+
conditional: true;
|
|
2864
|
+
note: string;
|
|
2865
|
+
};
|
|
2866
|
+
freeShipping: {
|
|
2867
|
+
before: string;
|
|
2868
|
+
target: string;
|
|
2869
|
+
policy: "always";
|
|
2870
|
+
conditional: true;
|
|
2871
|
+
note: string;
|
|
2872
|
+
};
|
|
2873
|
+
description: {
|
|
2874
|
+
before: string;
|
|
2875
|
+
target: string;
|
|
2876
|
+
policy: "always";
|
|
2877
|
+
conditional: true;
|
|
2878
|
+
note: string;
|
|
2879
|
+
};
|
|
2880
|
+
isPromotional: {
|
|
2881
|
+
before: string;
|
|
2882
|
+
target: string;
|
|
2883
|
+
policy: "always";
|
|
2884
|
+
conditional: true;
|
|
2885
|
+
note: string;
|
|
2886
|
+
};
|
|
2887
|
+
singleUse: {
|
|
2888
|
+
before: string;
|
|
2889
|
+
target: string;
|
|
2890
|
+
policy: "always";
|
|
2891
|
+
conditional: true;
|
|
2892
|
+
note: string;
|
|
2893
|
+
};
|
|
2894
|
+
itemRestrictions: {
|
|
2895
|
+
before: string;
|
|
2896
|
+
target: string;
|
|
2897
|
+
policy: "always";
|
|
2898
|
+
conditional: true;
|
|
2899
|
+
note: string;
|
|
2900
|
+
};
|
|
2901
|
+
minimumAmount: {
|
|
2902
|
+
before: string;
|
|
2903
|
+
target: string;
|
|
2904
|
+
policy: "always";
|
|
2905
|
+
conditional: true;
|
|
2906
|
+
note: string;
|
|
2907
|
+
};
|
|
2908
|
+
stores: {
|
|
2909
|
+
target: string;
|
|
2910
|
+
policy: "seed";
|
|
2911
|
+
note: string;
|
|
2912
|
+
};
|
|
2913
|
+
}>;
|
|
2914
|
+
declare const podcastFields: NetsuiteFieldProvider<{
|
|
2915
|
+
guid: {
|
|
2916
|
+
before: string;
|
|
2917
|
+
target: string;
|
|
2918
|
+
policy: "always";
|
|
2919
|
+
conditional: true;
|
|
2920
|
+
note: string;
|
|
2921
|
+
};
|
|
2922
|
+
title: {
|
|
2923
|
+
before: string;
|
|
2924
|
+
target: string;
|
|
2925
|
+
policy: "always";
|
|
2926
|
+
conditional: true;
|
|
2927
|
+
note: string;
|
|
2928
|
+
};
|
|
2929
|
+
slug: {
|
|
2930
|
+
target: string;
|
|
2931
|
+
policy: "seed";
|
|
2932
|
+
identity: true;
|
|
2933
|
+
note: string;
|
|
2934
|
+
caution: string;
|
|
2935
|
+
};
|
|
2936
|
+
summary: {
|
|
2937
|
+
before: string;
|
|
2938
|
+
target: string;
|
|
2939
|
+
policy: "always";
|
|
2940
|
+
conditional: true;
|
|
2941
|
+
note: string;
|
|
2942
|
+
};
|
|
2943
|
+
showNotes: {
|
|
2944
|
+
before: string;
|
|
2945
|
+
target: string;
|
|
2946
|
+
policy: "always";
|
|
2947
|
+
conditional: true;
|
|
2948
|
+
note: string;
|
|
2949
|
+
};
|
|
2950
|
+
audioUrl: {
|
|
2951
|
+
before: string;
|
|
2952
|
+
target: string;
|
|
2953
|
+
policy: "always";
|
|
2954
|
+
conditional: true;
|
|
2955
|
+
note: string;
|
|
2956
|
+
};
|
|
2957
|
+
artwork: {
|
|
2958
|
+
before: string;
|
|
2959
|
+
target: string;
|
|
2960
|
+
policy: "always";
|
|
2961
|
+
conditional: true;
|
|
2962
|
+
note: string;
|
|
2963
|
+
};
|
|
2964
|
+
durationSeconds: {
|
|
2965
|
+
before: string;
|
|
2966
|
+
target: string;
|
|
2967
|
+
policy: "always";
|
|
2968
|
+
conditional: true;
|
|
2969
|
+
note: string;
|
|
2970
|
+
};
|
|
2971
|
+
episodeNumber: {
|
|
2972
|
+
before: string;
|
|
2973
|
+
target: string;
|
|
2974
|
+
policy: "always";
|
|
2975
|
+
conditional: true;
|
|
2976
|
+
note: string;
|
|
2977
|
+
};
|
|
2978
|
+
seasonNumber: {
|
|
2979
|
+
before: string;
|
|
2980
|
+
target: string;
|
|
2981
|
+
policy: "always";
|
|
2982
|
+
conditional: true;
|
|
2983
|
+
note: string;
|
|
2984
|
+
};
|
|
2985
|
+
publishedAt: {
|
|
2986
|
+
before: string;
|
|
2987
|
+
target: string;
|
|
2988
|
+
policy: "always";
|
|
2989
|
+
conditional: true;
|
|
2990
|
+
note: string;
|
|
2991
|
+
};
|
|
2992
|
+
externalUrl: {
|
|
2993
|
+
before: string;
|
|
2994
|
+
target: string;
|
|
2995
|
+
policy: "always";
|
|
2996
|
+
conditional: true;
|
|
2997
|
+
note: string;
|
|
2998
|
+
};
|
|
2999
|
+
seoTitle: {
|
|
3000
|
+
before: string;
|
|
3001
|
+
target: string;
|
|
3002
|
+
policy: "always";
|
|
3003
|
+
conditional: true;
|
|
3004
|
+
note: string;
|
|
3005
|
+
};
|
|
3006
|
+
seoDescription: {
|
|
3007
|
+
before: string;
|
|
3008
|
+
target: string;
|
|
3009
|
+
policy: "always";
|
|
3010
|
+
conditional: true;
|
|
3011
|
+
note: string;
|
|
3012
|
+
};
|
|
3013
|
+
transcript: {
|
|
3014
|
+
target: string;
|
|
3015
|
+
policy: "seed";
|
|
3016
|
+
note: string;
|
|
3017
|
+
};
|
|
3018
|
+
relatedProducts: {
|
|
3019
|
+
target: string;
|
|
3020
|
+
policy: "seed";
|
|
3021
|
+
note: string;
|
|
3022
|
+
};
|
|
3023
|
+
stores: {
|
|
3024
|
+
target: string;
|
|
3025
|
+
policy: "seed";
|
|
3026
|
+
note: string;
|
|
3027
|
+
};
|
|
3028
|
+
status: {
|
|
3029
|
+
target: string;
|
|
3030
|
+
policy: "seed";
|
|
3031
|
+
note: string;
|
|
3032
|
+
};
|
|
3033
|
+
isOnline: {
|
|
3034
|
+
target: string;
|
|
3035
|
+
policy: "seed";
|
|
3036
|
+
note: string;
|
|
3037
|
+
};
|
|
3038
|
+
}>;
|
|
3039
|
+
declare const blogPostFields: NetsuiteFieldProvider<{
|
|
3040
|
+
netsuiteId: {
|
|
3041
|
+
before: string;
|
|
3042
|
+
target: string;
|
|
3043
|
+
policy: "always";
|
|
3044
|
+
conditional: true;
|
|
3045
|
+
note: string;
|
|
3046
|
+
};
|
|
3047
|
+
netsuitePostId: {
|
|
3048
|
+
before: string;
|
|
3049
|
+
target: string;
|
|
3050
|
+
policy: "always";
|
|
3051
|
+
conditional: true;
|
|
3052
|
+
note: string;
|
|
3053
|
+
};
|
|
3054
|
+
title: {
|
|
3055
|
+
before: string;
|
|
3056
|
+
target: string;
|
|
3057
|
+
policy: "always";
|
|
3058
|
+
conditional: true;
|
|
3059
|
+
note: string;
|
|
3060
|
+
};
|
|
3061
|
+
slug: {
|
|
3062
|
+
before: string;
|
|
3063
|
+
target: string;
|
|
3064
|
+
policy: "always";
|
|
3065
|
+
conditional: true;
|
|
3066
|
+
note: string;
|
|
3067
|
+
caution: string;
|
|
3068
|
+
};
|
|
3069
|
+
subtitle: {
|
|
3070
|
+
before: string;
|
|
3071
|
+
target: string;
|
|
3072
|
+
policy: "always";
|
|
3073
|
+
conditional: true;
|
|
3074
|
+
note: string;
|
|
3075
|
+
};
|
|
3076
|
+
content: {
|
|
3077
|
+
before: string;
|
|
3078
|
+
target: string;
|
|
3079
|
+
policy: "always";
|
|
3080
|
+
conditional: true;
|
|
3081
|
+
note: string;
|
|
3082
|
+
};
|
|
3083
|
+
publishedAt: {
|
|
3084
|
+
before: string;
|
|
3085
|
+
target: string;
|
|
3086
|
+
policy: "always";
|
|
3087
|
+
conditional: true;
|
|
3088
|
+
note: string;
|
|
3089
|
+
};
|
|
3090
|
+
author: {
|
|
3091
|
+
before: string;
|
|
3092
|
+
target: string;
|
|
3093
|
+
policy: "always";
|
|
3094
|
+
conditional: true;
|
|
3095
|
+
note: string;
|
|
3096
|
+
};
|
|
3097
|
+
category: {
|
|
3098
|
+
before: string;
|
|
3099
|
+
target: string;
|
|
3100
|
+
policy: "always";
|
|
3101
|
+
conditional: true;
|
|
3102
|
+
note: string;
|
|
3103
|
+
};
|
|
3104
|
+
headerImage: {
|
|
3105
|
+
before: string;
|
|
3106
|
+
target: string;
|
|
3107
|
+
policy: "always";
|
|
3108
|
+
conditional: true;
|
|
3109
|
+
note: string;
|
|
3110
|
+
};
|
|
3111
|
+
headerImageAlt: {
|
|
3112
|
+
before: string;
|
|
3113
|
+
target: string;
|
|
3114
|
+
policy: "always";
|
|
3115
|
+
conditional: true;
|
|
3116
|
+
note: string;
|
|
3117
|
+
};
|
|
3118
|
+
thumbnail: {
|
|
3119
|
+
before: string;
|
|
3120
|
+
target: string;
|
|
3121
|
+
policy: "always";
|
|
3122
|
+
conditional: true;
|
|
3123
|
+
note: string;
|
|
3124
|
+
};
|
|
3125
|
+
thumbnailAlt: {
|
|
3126
|
+
before: string;
|
|
3127
|
+
target: string;
|
|
3128
|
+
policy: "always";
|
|
3129
|
+
conditional: true;
|
|
3130
|
+
note: string;
|
|
3131
|
+
};
|
|
3132
|
+
excerpt: {
|
|
3133
|
+
before: string;
|
|
3134
|
+
target: string;
|
|
3135
|
+
policy: "always";
|
|
3136
|
+
conditional: true;
|
|
3137
|
+
note: string;
|
|
3138
|
+
};
|
|
3139
|
+
tags: {
|
|
3140
|
+
before: string;
|
|
3141
|
+
target: string;
|
|
3142
|
+
policy: "always";
|
|
3143
|
+
conditional: true;
|
|
3144
|
+
note: string;
|
|
3145
|
+
};
|
|
3146
|
+
pinnedTo: {
|
|
3147
|
+
before: string;
|
|
3148
|
+
target: string;
|
|
3149
|
+
policy: "always";
|
|
3150
|
+
conditional: true;
|
|
3151
|
+
note: string;
|
|
3152
|
+
};
|
|
3153
|
+
status: {
|
|
3154
|
+
before: string;
|
|
3155
|
+
target: string;
|
|
3156
|
+
policy: "always";
|
|
3157
|
+
conditional: true;
|
|
3158
|
+
note: string;
|
|
3159
|
+
};
|
|
3160
|
+
seoTitle: {
|
|
3161
|
+
before: string;
|
|
3162
|
+
target: string;
|
|
3163
|
+
policy: "always";
|
|
3164
|
+
conditional: true;
|
|
3165
|
+
note: string;
|
|
3166
|
+
};
|
|
3167
|
+
seoDescription: {
|
|
3168
|
+
before: string;
|
|
3169
|
+
target: string;
|
|
3170
|
+
policy: "always";
|
|
3171
|
+
conditional: true;
|
|
3172
|
+
note: string;
|
|
3173
|
+
};
|
|
3174
|
+
seoKeywords: {
|
|
3175
|
+
before: string;
|
|
3176
|
+
target: string;
|
|
3177
|
+
policy: "always";
|
|
3178
|
+
conditional: true;
|
|
3179
|
+
note: string;
|
|
3180
|
+
};
|
|
3181
|
+
headerTag: {
|
|
3182
|
+
before: string;
|
|
3183
|
+
target: string;
|
|
3184
|
+
policy: "always";
|
|
3185
|
+
conditional: true;
|
|
3186
|
+
note: string;
|
|
3187
|
+
};
|
|
3188
|
+
readingMinutes: {
|
|
3189
|
+
target: string;
|
|
3190
|
+
policy: "seed";
|
|
3191
|
+
note: string;
|
|
3192
|
+
};
|
|
3193
|
+
relatedProducts: {
|
|
3194
|
+
target: string;
|
|
3195
|
+
policy: "seed";
|
|
3196
|
+
note: string;
|
|
3197
|
+
};
|
|
3198
|
+
stores: {
|
|
3199
|
+
target: string;
|
|
3200
|
+
policy: "seed";
|
|
3201
|
+
note: string;
|
|
3202
|
+
};
|
|
3203
|
+
}>;
|
|
3204
|
+
declare const blogAuthorFields: NetsuiteFieldProvider<{
|
|
3205
|
+
netsuiteId: {
|
|
3206
|
+
before: string;
|
|
3207
|
+
target: string;
|
|
3208
|
+
policy: "always";
|
|
3209
|
+
conditional: true;
|
|
3210
|
+
note: string;
|
|
3211
|
+
};
|
|
3212
|
+
name: {
|
|
3213
|
+
before: string;
|
|
3214
|
+
target: string;
|
|
3215
|
+
policy: "always";
|
|
3216
|
+
conditional: true;
|
|
3217
|
+
note: string;
|
|
3218
|
+
};
|
|
3219
|
+
status: {
|
|
3220
|
+
before: string;
|
|
3221
|
+
target: string;
|
|
3222
|
+
policy: "always";
|
|
3223
|
+
conditional: true;
|
|
3224
|
+
note: string;
|
|
3225
|
+
};
|
|
3226
|
+
slug: {
|
|
3227
|
+
target: string;
|
|
3228
|
+
policy: "seed";
|
|
3229
|
+
identity: true;
|
|
3230
|
+
note: string;
|
|
3231
|
+
caution: string;
|
|
3232
|
+
};
|
|
3233
|
+
bio: {
|
|
3234
|
+
target: string;
|
|
3235
|
+
policy: "seed";
|
|
3236
|
+
note: string;
|
|
3237
|
+
};
|
|
3238
|
+
seoTitle: {
|
|
3239
|
+
target: string;
|
|
3240
|
+
policy: "seed";
|
|
3241
|
+
note: string;
|
|
3242
|
+
};
|
|
3243
|
+
seoDescription: {
|
|
3244
|
+
target: string;
|
|
3245
|
+
policy: "seed";
|
|
3246
|
+
note: string;
|
|
3247
|
+
};
|
|
3248
|
+
seoKeywords: {
|
|
3249
|
+
target: string;
|
|
3250
|
+
policy: "seed";
|
|
3251
|
+
note: string;
|
|
3252
|
+
};
|
|
3253
|
+
role: {
|
|
3254
|
+
target: string;
|
|
3255
|
+
policy: "seed";
|
|
3256
|
+
note: string;
|
|
3257
|
+
};
|
|
3258
|
+
avatar: {
|
|
3259
|
+
target: string;
|
|
3260
|
+
policy: "seed";
|
|
3261
|
+
note: string;
|
|
3262
|
+
};
|
|
3263
|
+
}>;
|
|
3264
|
+
declare const blogCategoryFields: NetsuiteFieldProvider<{
|
|
3265
|
+
netsuiteId: {
|
|
3266
|
+
before: string;
|
|
3267
|
+
target: string;
|
|
3268
|
+
policy: "always";
|
|
3269
|
+
conditional: true;
|
|
3270
|
+
note: string;
|
|
3271
|
+
};
|
|
3272
|
+
name: {
|
|
3273
|
+
before: string;
|
|
3274
|
+
target: string;
|
|
3275
|
+
policy: "always";
|
|
3276
|
+
conditional: true;
|
|
3277
|
+
note: string;
|
|
3278
|
+
};
|
|
3279
|
+
status: {
|
|
3280
|
+
before: string;
|
|
3281
|
+
target: string;
|
|
3282
|
+
policy: "always";
|
|
3283
|
+
conditional: true;
|
|
3284
|
+
note: string;
|
|
3285
|
+
};
|
|
3286
|
+
slug: {
|
|
3287
|
+
target: string;
|
|
3288
|
+
policy: "seed";
|
|
3289
|
+
identity: true;
|
|
3290
|
+
note: string;
|
|
3291
|
+
caution: string;
|
|
3292
|
+
};
|
|
3293
|
+
description: {
|
|
3294
|
+
target: string;
|
|
3295
|
+
policy: "seed";
|
|
3296
|
+
note: string;
|
|
3297
|
+
};
|
|
3298
|
+
seoTitle: {
|
|
3299
|
+
target: string;
|
|
3300
|
+
policy: "seed";
|
|
3301
|
+
note: string;
|
|
3302
|
+
};
|
|
3303
|
+
seoDescription: {
|
|
3304
|
+
target: string;
|
|
3305
|
+
policy: "seed";
|
|
3306
|
+
note: string;
|
|
3307
|
+
};
|
|
3308
|
+
seoKeywords: {
|
|
3309
|
+
target: string;
|
|
3310
|
+
policy: "seed";
|
|
3311
|
+
note: string;
|
|
3312
|
+
};
|
|
3313
|
+
image: {
|
|
3314
|
+
target: string;
|
|
3315
|
+
policy: "seed";
|
|
3316
|
+
note: string;
|
|
3317
|
+
};
|
|
3318
|
+
sortOrder: {
|
|
3319
|
+
target: string;
|
|
3320
|
+
policy: "seed";
|
|
3321
|
+
note: string;
|
|
3322
|
+
};
|
|
3323
|
+
}>;
|
|
3324
|
+
declare const PROVIDERS: readonly [NetsuiteFieldProvider<{
|
|
3325
|
+
readonly netsuiteId: {
|
|
3326
|
+
readonly before: "item.id";
|
|
3327
|
+
readonly target: "netsuiteId";
|
|
3328
|
+
readonly policy: "always";
|
|
3329
|
+
readonly conditional: true;
|
|
3330
|
+
readonly note: string;
|
|
3331
|
+
};
|
|
3332
|
+
readonly sku: {
|
|
3333
|
+
readonly before: "item.itemid";
|
|
3334
|
+
readonly target: "sku";
|
|
3335
|
+
readonly policy: "always";
|
|
3336
|
+
readonly conditional: true;
|
|
3337
|
+
readonly note: "A native item field, not a SuiteCommerce one, so it survives the cutover unchanged.";
|
|
3338
|
+
};
|
|
3339
|
+
readonly originalPrice: {
|
|
3340
|
+
readonly before: "itemprice at the Base Price level (1)";
|
|
3341
|
+
readonly target: "price.originalPrice";
|
|
3342
|
+
readonly policy: "always";
|
|
3343
|
+
readonly conditional: true;
|
|
3344
|
+
readonly note: string;
|
|
3345
|
+
};
|
|
3346
|
+
readonly discount: {
|
|
3347
|
+
readonly before: "derived from Base Price vs Online Price";
|
|
3348
|
+
readonly target: "price.discount";
|
|
3349
|
+
readonly policy: "always";
|
|
3350
|
+
readonly conditional: true;
|
|
3351
|
+
readonly note: string;
|
|
3352
|
+
};
|
|
3353
|
+
readonly weight: {
|
|
3354
|
+
readonly before: "weight + weightunit";
|
|
3355
|
+
readonly target: "shipping.weightLb";
|
|
3356
|
+
readonly policy: "always";
|
|
3357
|
+
readonly conditional: true;
|
|
3358
|
+
readonly note: "weight is on 299,354 items, weightunit on 107,131. Converted to lb and kg on import.";
|
|
3359
|
+
};
|
|
3360
|
+
readonly dimensions: {
|
|
3361
|
+
readonly target: "shipping.lengthIn";
|
|
3362
|
+
readonly policy: "seed";
|
|
3363
|
+
readonly note: string;
|
|
3364
|
+
};
|
|
3365
|
+
readonly price: {
|
|
3366
|
+
readonly before: "itemprice at the online price level";
|
|
3367
|
+
readonly target: "price";
|
|
3368
|
+
readonly policy: "always";
|
|
3369
|
+
readonly conditional: true;
|
|
3370
|
+
readonly note: string;
|
|
3371
|
+
};
|
|
3372
|
+
readonly quantity: {
|
|
3373
|
+
readonly before: "quantityavailable";
|
|
3374
|
+
readonly target: "quantity";
|
|
3375
|
+
readonly policy: "always";
|
|
3376
|
+
readonly conditional: true;
|
|
3377
|
+
readonly note: "A native item field, not a SuiteCommerce one, so it survives the cutover unchanged.";
|
|
3378
|
+
};
|
|
3379
|
+
readonly minimumQuantity: {
|
|
3380
|
+
readonly before: "minimumquantity";
|
|
3381
|
+
readonly target: "minimumQuantity";
|
|
3382
|
+
readonly policy: "always";
|
|
3383
|
+
readonly conditional: true;
|
|
3384
|
+
readonly note: string;
|
|
3385
|
+
};
|
|
3386
|
+
readonly maximumQuantity: {
|
|
3387
|
+
readonly before: "maximumquantity";
|
|
3388
|
+
readonly target: "maximumQuantity";
|
|
3389
|
+
readonly policy: "always";
|
|
3390
|
+
readonly conditional: true;
|
|
3391
|
+
readonly note: string;
|
|
3392
|
+
};
|
|
3393
|
+
readonly enforceMinimum: {
|
|
3394
|
+
readonly before: "enforceminqtyinternally";
|
|
3395
|
+
readonly target: "enforceMinimum";
|
|
3396
|
+
readonly policy: "always";
|
|
3397
|
+
readonly conditional: true;
|
|
3398
|
+
readonly note: string;
|
|
3399
|
+
};
|
|
3400
|
+
readonly isSparePart: {
|
|
3401
|
+
readonly before: "custitem303";
|
|
3402
|
+
readonly target: "isSparePart";
|
|
3403
|
+
readonly policy: "always";
|
|
3404
|
+
readonly conditional: true;
|
|
3405
|
+
readonly note: string;
|
|
3406
|
+
};
|
|
3407
|
+
readonly itemType: {
|
|
3408
|
+
readonly before: "itemtype";
|
|
3409
|
+
readonly target: "itemType";
|
|
3410
|
+
readonly policy: "always";
|
|
3411
|
+
readonly conditional: true;
|
|
3412
|
+
readonly note: string;
|
|
3413
|
+
};
|
|
3414
|
+
readonly stockDescription: {
|
|
3415
|
+
readonly before: "stockdescription";
|
|
3416
|
+
readonly target: "stockDescription";
|
|
3417
|
+
readonly policy: "always";
|
|
3418
|
+
readonly conditional: true;
|
|
3419
|
+
readonly note: string;
|
|
3420
|
+
};
|
|
3421
|
+
readonly noPriceMessage: {
|
|
3422
|
+
readonly before: "nopricemessage";
|
|
3423
|
+
readonly target: "noPriceMessage";
|
|
3424
|
+
readonly policy: "always";
|
|
3425
|
+
readonly conditional: true;
|
|
3426
|
+
readonly note: string;
|
|
3427
|
+
};
|
|
3428
|
+
readonly isSeriesComponent: {
|
|
3429
|
+
readonly before: "custitem40";
|
|
3430
|
+
readonly target: "isSeriesComponent";
|
|
3431
|
+
readonly policy: "always";
|
|
3432
|
+
readonly conditional: true;
|
|
3433
|
+
readonly note: string;
|
|
3434
|
+
};
|
|
3435
|
+
readonly flexWarrantyEligible: {
|
|
3436
|
+
readonly before: "custitem520";
|
|
3437
|
+
readonly target: "flexWarrantyEligible";
|
|
3438
|
+
readonly policy: "always";
|
|
3439
|
+
readonly conditional: true;
|
|
3440
|
+
readonly note: string;
|
|
3441
|
+
};
|
|
3442
|
+
readonly inventoryPolicy: {
|
|
3443
|
+
readonly before: "outofstockbehavior";
|
|
3444
|
+
readonly target: "inventoryPolicy";
|
|
3445
|
+
readonly policy: "always";
|
|
3446
|
+
readonly conditional: true;
|
|
3447
|
+
readonly note: string;
|
|
3448
|
+
};
|
|
3449
|
+
readonly status: {
|
|
3450
|
+
readonly before: "isinactive";
|
|
3451
|
+
readonly target: "status";
|
|
3452
|
+
readonly policy: "always";
|
|
3453
|
+
readonly conditional: true;
|
|
3454
|
+
readonly note: "A native item field, not a SuiteCommerce one, so it survives the cutover unchanged.";
|
|
3455
|
+
};
|
|
3456
|
+
readonly shipping: {
|
|
3457
|
+
readonly before: "weight + weightunit";
|
|
3458
|
+
readonly target: "shipping";
|
|
3459
|
+
readonly policy: "always";
|
|
3460
|
+
readonly conditional: true;
|
|
3461
|
+
readonly note: string;
|
|
3462
|
+
};
|
|
3463
|
+
readonly slug: {
|
|
3464
|
+
readonly before: "urlcomponent";
|
|
3465
|
+
readonly after: "custitem_slug";
|
|
3466
|
+
readonly target: "slug";
|
|
3467
|
+
readonly policy: "seed";
|
|
3468
|
+
readonly identity: true;
|
|
3469
|
+
readonly note: "The storefront URL never moves once a product exists.";
|
|
3470
|
+
readonly caution: "The sync matches on netsuiteId first and falls back to slug. Changing it on a product NetSuite has never supplied makes the next run miss it and insert a second one.";
|
|
3471
|
+
};
|
|
3472
|
+
readonly name: {
|
|
3473
|
+
readonly before: "storedisplayname";
|
|
3474
|
+
readonly after: "custitem_product_name";
|
|
3475
|
+
readonly target: "name";
|
|
3476
|
+
readonly policy: "always";
|
|
3477
|
+
readonly conditional: true;
|
|
3478
|
+
readonly note: string;
|
|
3479
|
+
};
|
|
3480
|
+
readonly featured: {
|
|
3481
|
+
readonly before: "featureddescription";
|
|
3482
|
+
readonly after: "custitem_product_featured_description";
|
|
3483
|
+
readonly target: "description";
|
|
3484
|
+
readonly policy: "always";
|
|
3485
|
+
readonly conditional: true;
|
|
3486
|
+
readonly note: string;
|
|
3487
|
+
};
|
|
3488
|
+
readonly overview: {
|
|
3489
|
+
readonly before: "storedetaileddescription";
|
|
3490
|
+
readonly after: "custitem_product_description";
|
|
3491
|
+
readonly target: "overview";
|
|
3492
|
+
readonly policy: "always";
|
|
3493
|
+
readonly conditional: true;
|
|
3494
|
+
};
|
|
3495
|
+
readonly pageTitle: {
|
|
3496
|
+
readonly before: "pagetitle";
|
|
3497
|
+
readonly after: "custitem_page_title";
|
|
3498
|
+
readonly target: "seoMetaData.title";
|
|
3499
|
+
readonly policy: "always";
|
|
3500
|
+
readonly conditional: true;
|
|
3501
|
+
};
|
|
3502
|
+
readonly online: {
|
|
3503
|
+
readonly before: "isonline";
|
|
3504
|
+
readonly after: "custitem_display_online";
|
|
3505
|
+
readonly target: "isOnline";
|
|
3506
|
+
readonly policy: "always";
|
|
3507
|
+
readonly conditional: true;
|
|
3508
|
+
readonly note: string;
|
|
3509
|
+
};
|
|
3510
|
+
readonly saleType: {
|
|
3511
|
+
readonly before: "dontshowprice";
|
|
3512
|
+
readonly after: "custitem_quote_only";
|
|
3513
|
+
readonly target: "saleType";
|
|
3514
|
+
readonly policy: "always";
|
|
3515
|
+
readonly conditional: true;
|
|
3516
|
+
readonly note: "Derived from the quote-only flag and the price by saleTypeOf, so it is recomputed on every refresh.";
|
|
3517
|
+
};
|
|
3518
|
+
readonly quoteOnly: {
|
|
3519
|
+
readonly before: "dontshowprice";
|
|
3520
|
+
readonly after: "custitem_quote_only";
|
|
3521
|
+
readonly target: "metaData.quoteOnly";
|
|
3522
|
+
readonly policy: "seed";
|
|
3523
|
+
readonly note: "Written only at creation, so a later flip in NetSuite is never picked up.";
|
|
3524
|
+
};
|
|
3525
|
+
readonly image: {
|
|
3526
|
+
readonly before: "storedisplayimage";
|
|
3527
|
+
readonly after: "custitem_itemimages";
|
|
3528
|
+
readonly target: "images";
|
|
3529
|
+
readonly policy: "always";
|
|
3530
|
+
readonly conditional: true;
|
|
3531
|
+
readonly note: "Before is a file id needing a lookup; after is a ready CDN URL.";
|
|
3532
|
+
};
|
|
3533
|
+
readonly category: {
|
|
3534
|
+
readonly before: "commercecategoryitemassociation.category";
|
|
3535
|
+
readonly after: "custitem_primary_category";
|
|
3536
|
+
readonly target: "category";
|
|
3537
|
+
readonly policy: "always";
|
|
3538
|
+
readonly conditional: true;
|
|
3539
|
+
readonly note: string;
|
|
3540
|
+
};
|
|
3541
|
+
readonly seoDescription: {
|
|
3542
|
+
readonly before: "metataghtml";
|
|
3543
|
+
readonly after: "custitem_meta_description";
|
|
3544
|
+
readonly target: "seoMetaData.description";
|
|
3545
|
+
readonly policy: "always";
|
|
3546
|
+
readonly conditional: true;
|
|
3547
|
+
readonly note: "The replacement exists but carries no data yet.";
|
|
3548
|
+
};
|
|
3549
|
+
readonly brand: {
|
|
3550
|
+
readonly before: "manufacturer";
|
|
3551
|
+
readonly target: "brand";
|
|
3552
|
+
readonly policy: "always";
|
|
3553
|
+
readonly conditional: true;
|
|
3554
|
+
readonly note: string;
|
|
3555
|
+
};
|
|
3556
|
+
readonly googleCategory: {
|
|
3557
|
+
readonly after: "custitemproducttype";
|
|
3558
|
+
readonly target: "googleCategory";
|
|
3559
|
+
readonly policy: "always";
|
|
3560
|
+
readonly conditional: true;
|
|
3561
|
+
readonly note: string;
|
|
3562
|
+
};
|
|
3563
|
+
readonly department: {
|
|
3564
|
+
readonly after: "custitemfas_product_category";
|
|
3565
|
+
readonly target: "department";
|
|
3566
|
+
readonly policy: "always";
|
|
3567
|
+
readonly conditional: true;
|
|
3568
|
+
readonly note: string;
|
|
3569
|
+
};
|
|
3570
|
+
readonly imageAlt: {
|
|
3571
|
+
readonly after: "custitemaltimgtext";
|
|
3572
|
+
readonly target: "images.alt";
|
|
3573
|
+
readonly policy: "always";
|
|
3574
|
+
readonly conditional: true;
|
|
3575
|
+
readonly note: string;
|
|
3576
|
+
};
|
|
3577
|
+
readonly family: {
|
|
3578
|
+
readonly after: "custitem_family";
|
|
3579
|
+
readonly target: "metaData.family";
|
|
3580
|
+
readonly policy: "seed";
|
|
3581
|
+
readonly pending: true;
|
|
3582
|
+
readonly note: "Populated on 17,552 items. No storefront field consumes it yet.";
|
|
3583
|
+
};
|
|
3584
|
+
readonly primaryCategory: {
|
|
3585
|
+
readonly before: "commercecategoryitemassociation.primarycategory";
|
|
3586
|
+
readonly after: "custitem_primary_category";
|
|
3587
|
+
readonly target: "metaData.primaryCategory";
|
|
3588
|
+
readonly policy: "seed";
|
|
3589
|
+
readonly note: string;
|
|
3590
|
+
};
|
|
3591
|
+
readonly additionalCategories: {
|
|
3592
|
+
readonly sourceTable: "commercecategoryitemassociation";
|
|
3593
|
+
readonly after: "custitem_additional_categories";
|
|
3594
|
+
readonly target: "categories";
|
|
3595
|
+
readonly policy: "always";
|
|
3596
|
+
readonly note: string;
|
|
3597
|
+
readonly caution: string;
|
|
3598
|
+
};
|
|
3599
|
+
readonly micrositeDescription: {
|
|
3600
|
+
readonly after: "custitem_microsite_description";
|
|
3601
|
+
readonly target: "metaData.micrositeDescription";
|
|
3602
|
+
readonly policy: "seed";
|
|
3603
|
+
readonly pending: true;
|
|
3604
|
+
readonly note: "Populated on 2,284 items.";
|
|
3605
|
+
};
|
|
3606
|
+
readonly features: {
|
|
3607
|
+
readonly after: "custitem_features";
|
|
3608
|
+
readonly target: "metaData.features";
|
|
3609
|
+
readonly policy: "seed";
|
|
3610
|
+
readonly pending: true;
|
|
3611
|
+
readonly note: "Field exists in NetSuite and carries no data yet.";
|
|
3612
|
+
};
|
|
3613
|
+
readonly childStoreOnly: {
|
|
3614
|
+
readonly after: "custitem_child_store_only";
|
|
3615
|
+
readonly target: "childOnly";
|
|
3616
|
+
readonly policy: "seed";
|
|
3617
|
+
readonly pending: true;
|
|
3618
|
+
readonly note: "Nothing is flagged yet. Our stores[] array already covers this.";
|
|
3619
|
+
};
|
|
3620
|
+
}>, NetsuiteFieldProvider<{
|
|
3621
|
+
readonly netsuiteItemId: {
|
|
3622
|
+
readonly before: "item.id";
|
|
3623
|
+
readonly target: "netsuite.itemId";
|
|
3624
|
+
readonly policy: "always";
|
|
3625
|
+
readonly conditional: true;
|
|
3626
|
+
readonly note: string;
|
|
3627
|
+
};
|
|
3628
|
+
readonly netsuiteItemName: {
|
|
3629
|
+
readonly before: "item.itemid";
|
|
3630
|
+
readonly target: "netsuite.itemName";
|
|
3631
|
+
readonly policy: "always";
|
|
3632
|
+
readonly conditional: true;
|
|
3633
|
+
readonly note: "A native NetSuite item field, not a SuiteCommerce one, so it survives the cutover.";
|
|
3634
|
+
};
|
|
3635
|
+
readonly groupAndOption: {
|
|
3636
|
+
readonly before: "storedisplayname";
|
|
3637
|
+
readonly target: "name";
|
|
3638
|
+
readonly policy: "always";
|
|
3639
|
+
readonly conditional: true;
|
|
3640
|
+
readonly identity: true;
|
|
3641
|
+
readonly note: string;
|
|
3642
|
+
};
|
|
3643
|
+
readonly key: {
|
|
3644
|
+
readonly before: "urlcomponent";
|
|
3645
|
+
readonly target: "key";
|
|
3646
|
+
readonly policy: "always";
|
|
3647
|
+
readonly identity: true;
|
|
3648
|
+
readonly note: string;
|
|
3649
|
+
readonly caution: "Changing urlcomponent in NetSuite orphans the existing add-on and creates a new one.";
|
|
3650
|
+
};
|
|
3651
|
+
readonly active: {
|
|
3652
|
+
readonly before: "isinactive";
|
|
3653
|
+
readonly target: "status";
|
|
3654
|
+
readonly policy: "always";
|
|
3655
|
+
readonly conditional: true;
|
|
3656
|
+
readonly note: string;
|
|
3657
|
+
};
|
|
3658
|
+
readonly visible: {
|
|
3659
|
+
readonly before: "isonline";
|
|
3660
|
+
readonly target: "isVisible";
|
|
3661
|
+
readonly policy: "always";
|
|
3662
|
+
readonly conditional: true;
|
|
3663
|
+
readonly note: string;
|
|
3664
|
+
};
|
|
3665
|
+
readonly pricingType: {
|
|
3666
|
+
readonly target: "pricingType";
|
|
3667
|
+
readonly policy: "seed";
|
|
3668
|
+
readonly note: string;
|
|
3669
|
+
};
|
|
3670
|
+
readonly price: {
|
|
3671
|
+
readonly before: "itemprice at price level 1";
|
|
3672
|
+
readonly target: "price";
|
|
3673
|
+
readonly policy: "always";
|
|
3674
|
+
readonly conditional: true;
|
|
3675
|
+
readonly note: "Base price. An option with no level-1 price is reported by the sync rather than written as $0.";
|
|
3676
|
+
};
|
|
3677
|
+
readonly sellingPoints: {
|
|
3678
|
+
readonly before: "salesdescription";
|
|
3679
|
+
readonly target: "description";
|
|
3680
|
+
readonly policy: "always";
|
|
3681
|
+
readonly conditional: true;
|
|
3682
|
+
readonly note: string;
|
|
3683
|
+
};
|
|
3684
|
+
readonly detail: {
|
|
3685
|
+
readonly before: "storedetaileddescription";
|
|
3686
|
+
readonly target: "longDescription";
|
|
3687
|
+
readonly policy: "always";
|
|
3688
|
+
readonly conditional: true;
|
|
3689
|
+
readonly note: string;
|
|
3690
|
+
};
|
|
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
|
+
readonly eligibilityGate: {
|
|
3699
|
+
readonly before: "custitem520";
|
|
3700
|
+
readonly target: "AddonGroup.netsuite.requiresField";
|
|
3701
|
+
readonly policy: "seed";
|
|
3702
|
+
readonly note: string;
|
|
3703
|
+
};
|
|
3704
|
+
}>, NetsuiteFieldProvider<{
|
|
3705
|
+
readonly name: {
|
|
3706
|
+
readonly before: "commercecategory.name";
|
|
3707
|
+
readonly after: "item.manufacturer";
|
|
3708
|
+
readonly target: "name";
|
|
3709
|
+
readonly policy: "always";
|
|
3710
|
+
};
|
|
3711
|
+
readonly online: {
|
|
3712
|
+
readonly before: "isonline";
|
|
3713
|
+
readonly after: "custitem_display_online";
|
|
3714
|
+
readonly target: "isOnline";
|
|
3715
|
+
readonly policy: "always";
|
|
3716
|
+
};
|
|
3717
|
+
readonly netsuiteId: {
|
|
3718
|
+
readonly before: "commercecategory.id";
|
|
3719
|
+
readonly target: "netsuiteId";
|
|
3720
|
+
readonly policy: "always";
|
|
3721
|
+
readonly conditional: true;
|
|
3722
|
+
readonly note: "No successor. The manufacturer name becomes the key.";
|
|
3723
|
+
};
|
|
3724
|
+
readonly slug: {
|
|
3725
|
+
readonly before: "commercecategory.urlfragment";
|
|
3726
|
+
readonly target: "slug";
|
|
3727
|
+
readonly policy: "seed";
|
|
3728
|
+
readonly identity: true;
|
|
3729
|
+
readonly note: string;
|
|
3730
|
+
readonly caution: string;
|
|
3731
|
+
};
|
|
3732
|
+
readonly logo: {
|
|
3733
|
+
readonly before: "thumbnail";
|
|
3734
|
+
readonly target: "logo";
|
|
3735
|
+
readonly policy: "always";
|
|
3736
|
+
readonly conditional: true;
|
|
3737
|
+
readonly note: "No successor. custrecord35 holds the same logo as a plain URL on all 52 brands.";
|
|
3738
|
+
};
|
|
3739
|
+
readonly description: {
|
|
3740
|
+
readonly before: "commercecategory.description";
|
|
3741
|
+
readonly target: "description";
|
|
3742
|
+
readonly policy: "always";
|
|
3743
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
3744
|
+
};
|
|
3745
|
+
readonly sortOrder: {
|
|
3746
|
+
readonly before: "sequencenumber";
|
|
3747
|
+
readonly target: "sortOrder";
|
|
3748
|
+
readonly policy: "always";
|
|
3749
|
+
readonly conditional: true;
|
|
3750
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
3751
|
+
};
|
|
3752
|
+
readonly seoTitle: {
|
|
3753
|
+
readonly before: "pagetitle";
|
|
3754
|
+
readonly target: "seoMetaData.title";
|
|
3755
|
+
readonly policy: "always";
|
|
3756
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
3757
|
+
};
|
|
3758
|
+
readonly seoDescription: {
|
|
3759
|
+
readonly before: "metadescription";
|
|
3760
|
+
readonly target: "seoMetaData.description";
|
|
3761
|
+
readonly policy: "always";
|
|
3762
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
3763
|
+
};
|
|
3764
|
+
readonly seoKeywords: {
|
|
3765
|
+
readonly before: "metakeywords";
|
|
3766
|
+
readonly target: "seoMetaData.keywords";
|
|
3767
|
+
readonly policy: "always";
|
|
3768
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
3769
|
+
};
|
|
3770
|
+
readonly status: {
|
|
3771
|
+
readonly before: "isinactive + displayinsite";
|
|
3772
|
+
readonly target: "status";
|
|
3773
|
+
readonly policy: "always";
|
|
3774
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
3775
|
+
};
|
|
3776
|
+
readonly headerTag: {
|
|
3777
|
+
readonly before: "pageheading";
|
|
3778
|
+
readonly target: "seoMetaData.headerTag";
|
|
3779
|
+
readonly policy: "always";
|
|
3780
|
+
readonly note: string;
|
|
3781
|
+
};
|
|
3782
|
+
readonly banners: {
|
|
3783
|
+
readonly before: "pagebanner";
|
|
3784
|
+
readonly target: "banners";
|
|
3785
|
+
readonly policy: "seed";
|
|
3786
|
+
readonly note: string;
|
|
3787
|
+
};
|
|
3788
|
+
readonly logoUrl: {
|
|
3789
|
+
readonly before: "custrecord35";
|
|
3790
|
+
readonly target: "logo";
|
|
3791
|
+
readonly policy: "seed";
|
|
3792
|
+
readonly pending: true;
|
|
3793
|
+
readonly note: "A plain logo URL on all 52 brands, needing no file lookup. Never imported.";
|
|
3794
|
+
};
|
|
3795
|
+
}>, NetsuiteFieldProvider<{
|
|
3796
|
+
readonly name: {
|
|
3797
|
+
readonly before: "commercecategory.name";
|
|
3798
|
+
readonly after: "custitem_category";
|
|
3799
|
+
readonly target: "name";
|
|
3800
|
+
readonly policy: "always";
|
|
3801
|
+
readonly note: "After is a flat string stamped on the item, not a record.";
|
|
3802
|
+
};
|
|
3803
|
+
readonly online: {
|
|
3804
|
+
readonly before: "isonline";
|
|
3805
|
+
readonly after: "custitem_display_online";
|
|
3806
|
+
readonly target: "isOnline";
|
|
3807
|
+
readonly policy: "always";
|
|
3808
|
+
};
|
|
3809
|
+
readonly netsuiteId: {
|
|
3810
|
+
readonly before: "commercecategory.id";
|
|
3811
|
+
readonly target: "netsuiteId";
|
|
3812
|
+
readonly policy: "always";
|
|
3813
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
3814
|
+
};
|
|
3815
|
+
readonly slug: {
|
|
3816
|
+
readonly before: "urlfragment";
|
|
3817
|
+
readonly target: "slug";
|
|
3818
|
+
readonly policy: "seed";
|
|
3819
|
+
readonly identity: true;
|
|
3820
|
+
readonly note: string;
|
|
3821
|
+
readonly caution: string;
|
|
3822
|
+
};
|
|
3823
|
+
readonly image: {
|
|
3824
|
+
readonly before: "thumbnail";
|
|
3825
|
+
readonly target: "image";
|
|
3826
|
+
readonly policy: "always";
|
|
3827
|
+
readonly note: "No successor. custrecord35 holds 3,735 of these as plain URLs.";
|
|
3828
|
+
};
|
|
3829
|
+
readonly description: {
|
|
3830
|
+
readonly before: "commercecategory.description";
|
|
3831
|
+
readonly target: "description";
|
|
3832
|
+
readonly policy: "always";
|
|
3833
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
3834
|
+
};
|
|
3835
|
+
readonly sortOrder: {
|
|
3836
|
+
readonly before: "sequencenumber";
|
|
3837
|
+
readonly target: "sortOrder";
|
|
3838
|
+
readonly policy: "always";
|
|
3839
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
3840
|
+
};
|
|
3841
|
+
readonly seoTitle: {
|
|
3842
|
+
readonly before: "pagetitle";
|
|
3843
|
+
readonly target: "seoMetaData.title";
|
|
3844
|
+
readonly policy: "always";
|
|
3845
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
3846
|
+
};
|
|
3847
|
+
readonly seoDescription: {
|
|
3848
|
+
readonly before: "metadescription";
|
|
3849
|
+
readonly target: "seoMetaData.description";
|
|
3850
|
+
readonly policy: "always";
|
|
3851
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
3852
|
+
};
|
|
3853
|
+
readonly seoKeywords: {
|
|
3854
|
+
readonly before: "metakeywords";
|
|
3855
|
+
readonly target: "seoMetaData.keywords";
|
|
3856
|
+
readonly policy: "always";
|
|
3857
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
3858
|
+
};
|
|
3859
|
+
readonly status: {
|
|
3860
|
+
readonly before: "isinactive + displayinsite";
|
|
3861
|
+
readonly target: "status";
|
|
3862
|
+
readonly policy: "always";
|
|
3863
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
3864
|
+
};
|
|
3865
|
+
readonly parent: {
|
|
3866
|
+
readonly before: "primaryparent";
|
|
3867
|
+
readonly after: "custitem_primary_category";
|
|
3868
|
+
readonly target: "parent";
|
|
3869
|
+
readonly policy: "always";
|
|
3870
|
+
readonly note: "The single primary parent. Mirrors NetSuite on every sync, so a parent changed here is overwritten. After is populated on only 3,150 items.";
|
|
3871
|
+
};
|
|
3872
|
+
readonly subcategories: {
|
|
3873
|
+
readonly before: "commercecategoryassociation.subcategory";
|
|
3874
|
+
readonly target: "subcategories";
|
|
3875
|
+
readonly policy: "always";
|
|
3876
|
+
readonly note: "The children list, rebuilt from the association table on every sync — NetSuite categories are multi-parent, so 23% of them sit under more than one. `primaryparent` alone misses those. Edits here are overwritten.";
|
|
3877
|
+
readonly caution: "The association row also carries nameoverride / urlfragmentoverride / thumbnailoverride per parent, so the same category is labelled differently under each. Those overrides are applied for the primary parent only.";
|
|
3878
|
+
};
|
|
3879
|
+
readonly headerTag: {
|
|
3880
|
+
readonly before: "pageheading";
|
|
3881
|
+
readonly target: "seoMetaData.headerTag";
|
|
3882
|
+
readonly policy: "always";
|
|
3883
|
+
readonly note: "The H1, on 4,789 categories. addtohead is head markup and is not a substitute.";
|
|
3884
|
+
};
|
|
3885
|
+
readonly banners: {
|
|
3886
|
+
readonly before: "pagebanner";
|
|
3887
|
+
readonly target: "banners";
|
|
3888
|
+
readonly policy: "seed";
|
|
3889
|
+
readonly note: "Seeded from pagebanner on first import; 50 categories carry one. Edits here are never overwritten.";
|
|
3890
|
+
};
|
|
3891
|
+
readonly imageUrl: {
|
|
3892
|
+
readonly before: "custrecord35";
|
|
3893
|
+
readonly target: "image";
|
|
3894
|
+
readonly policy: "seed";
|
|
3895
|
+
readonly pending: true;
|
|
3896
|
+
readonly note: "A plain image URL on 3,735 categories, needing no file lookup. Never imported.";
|
|
3897
|
+
};
|
|
3898
|
+
readonly faq: {
|
|
3899
|
+
readonly before: "custrecord_faq_q1";
|
|
3900
|
+
readonly target: "metaData.faq";
|
|
3901
|
+
readonly policy: "seed";
|
|
3902
|
+
readonly pending: true;
|
|
3903
|
+
readonly note: "Ten question and answer pairs on 34 categories. Editorial copy held nowhere else.";
|
|
3904
|
+
};
|
|
3905
|
+
}>, NetsuiteFieldProvider<{
|
|
3906
|
+
readonly accessories: {
|
|
3907
|
+
readonly after: "custitem_accessories";
|
|
3908
|
+
readonly target: "relationGroups.accessories";
|
|
3909
|
+
readonly policy: "seed";
|
|
3910
|
+
readonly pending: true;
|
|
3911
|
+
readonly note: "Field exists in NetSuite and carries no data yet.";
|
|
3912
|
+
};
|
|
3913
|
+
readonly toolKits: {
|
|
3914
|
+
readonly after: "custitem_tool_kits";
|
|
3915
|
+
readonly target: "relationGroups.tool-kits";
|
|
3916
|
+
readonly policy: "seed";
|
|
3917
|
+
readonly pending: true;
|
|
3918
|
+
readonly note: "Field exists in NetSuite and carries no data yet.";
|
|
3919
|
+
};
|
|
3920
|
+
readonly parts: {
|
|
3921
|
+
readonly after: "custitem_parts";
|
|
3922
|
+
readonly target: "relationGroups.parts";
|
|
3923
|
+
readonly policy: "seed";
|
|
3924
|
+
readonly pending: true;
|
|
3925
|
+
readonly note: "Field exists in NetSuite and carries no data yet.";
|
|
3926
|
+
};
|
|
3927
|
+
readonly similarProducts: {
|
|
3928
|
+
readonly after: "custitem_similiar_products";
|
|
3929
|
+
readonly target: "relationGroups.similar-products";
|
|
3930
|
+
readonly policy: "seed";
|
|
3931
|
+
readonly pending: true;
|
|
3932
|
+
readonly note: "The scriptid misspells Similar. That spelling is the real identifier.";
|
|
3933
|
+
};
|
|
3934
|
+
readonly frequentlyBought: {
|
|
3935
|
+
readonly before: "itemcorrelateditem";
|
|
3936
|
+
readonly after: "custitem_frequently_bought";
|
|
3937
|
+
readonly target: "relationGroups.frequently-bought-together";
|
|
3938
|
+
readonly policy: "seed";
|
|
3939
|
+
readonly pending: true;
|
|
3940
|
+
readonly note: "Before is NetSuite's own correlation feed, 894 rows, derived from SuiteCommerce traffic.";
|
|
3941
|
+
};
|
|
3942
|
+
readonly includedItems: {
|
|
3943
|
+
readonly after: "custitem_included_items";
|
|
3944
|
+
readonly target: "relationGroups.kit-contents";
|
|
3945
|
+
readonly policy: "seed";
|
|
3946
|
+
readonly pending: true;
|
|
3947
|
+
readonly note: "Field exists in NetSuite and carries no data yet.";
|
|
3948
|
+
};
|
|
3949
|
+
readonly modelsAvailable: {
|
|
3950
|
+
readonly after: "custitem_models_available";
|
|
3951
|
+
readonly target: "relationGroups.models-available";
|
|
3952
|
+
readonly policy: "seed";
|
|
3953
|
+
readonly pending: true;
|
|
3954
|
+
readonly note: "Populated on 1,365 items. No relation group is seeded for it yet.";
|
|
3955
|
+
};
|
|
3956
|
+
}>, NetsuiteFieldProvider<{
|
|
3957
|
+
netsuiteId: {
|
|
3958
|
+
before: string;
|
|
3959
|
+
target: string;
|
|
3960
|
+
policy: "always";
|
|
3961
|
+
conditional: true;
|
|
3962
|
+
note: string;
|
|
3963
|
+
};
|
|
3964
|
+
netsuitePostId: {
|
|
3965
|
+
before: string;
|
|
3966
|
+
target: string;
|
|
3967
|
+
policy: "always";
|
|
3968
|
+
conditional: true;
|
|
3969
|
+
note: string;
|
|
3970
|
+
};
|
|
3971
|
+
title: {
|
|
3972
|
+
before: string;
|
|
3973
|
+
target: string;
|
|
3974
|
+
policy: "always";
|
|
3975
|
+
conditional: true;
|
|
3976
|
+
note: string;
|
|
3977
|
+
};
|
|
3978
|
+
slug: {
|
|
3979
|
+
before: string;
|
|
3980
|
+
target: string;
|
|
3981
|
+
policy: "always";
|
|
3982
|
+
conditional: true;
|
|
3983
|
+
note: string;
|
|
3984
|
+
caution: string;
|
|
3985
|
+
};
|
|
3986
|
+
subtitle: {
|
|
3987
|
+
before: string;
|
|
3988
|
+
target: string;
|
|
3989
|
+
policy: "always";
|
|
3990
|
+
conditional: true;
|
|
3991
|
+
note: string;
|
|
3992
|
+
};
|
|
3993
|
+
content: {
|
|
3994
|
+
before: string;
|
|
3995
|
+
target: string;
|
|
3996
|
+
policy: "always";
|
|
3997
|
+
conditional: true;
|
|
3998
|
+
note: string;
|
|
3999
|
+
};
|
|
4000
|
+
publishedAt: {
|
|
4001
|
+
before: string;
|
|
4002
|
+
target: string;
|
|
4003
|
+
policy: "always";
|
|
4004
|
+
conditional: true;
|
|
4005
|
+
note: string;
|
|
4006
|
+
};
|
|
4007
|
+
author: {
|
|
4008
|
+
before: string;
|
|
4009
|
+
target: string;
|
|
4010
|
+
policy: "always";
|
|
4011
|
+
conditional: true;
|
|
4012
|
+
note: string;
|
|
4013
|
+
};
|
|
4014
|
+
category: {
|
|
4015
|
+
before: string;
|
|
4016
|
+
target: string;
|
|
4017
|
+
policy: "always";
|
|
4018
|
+
conditional: true;
|
|
4019
|
+
note: string;
|
|
4020
|
+
};
|
|
4021
|
+
headerImage: {
|
|
4022
|
+
before: string;
|
|
4023
|
+
target: string;
|
|
4024
|
+
policy: "always";
|
|
4025
|
+
conditional: true;
|
|
4026
|
+
note: string;
|
|
4027
|
+
};
|
|
4028
|
+
headerImageAlt: {
|
|
4029
|
+
before: string;
|
|
4030
|
+
target: string;
|
|
4031
|
+
policy: "always";
|
|
4032
|
+
conditional: true;
|
|
4033
|
+
note: string;
|
|
4034
|
+
};
|
|
4035
|
+
thumbnail: {
|
|
4036
|
+
before: string;
|
|
4037
|
+
target: string;
|
|
4038
|
+
policy: "always";
|
|
4039
|
+
conditional: true;
|
|
4040
|
+
note: string;
|
|
4041
|
+
};
|
|
4042
|
+
thumbnailAlt: {
|
|
4043
|
+
before: string;
|
|
4044
|
+
target: string;
|
|
4045
|
+
policy: "always";
|
|
4046
|
+
conditional: true;
|
|
4047
|
+
note: string;
|
|
4048
|
+
};
|
|
4049
|
+
excerpt: {
|
|
4050
|
+
before: string;
|
|
4051
|
+
target: string;
|
|
4052
|
+
policy: "always";
|
|
4053
|
+
conditional: true;
|
|
4054
|
+
note: string;
|
|
4055
|
+
};
|
|
4056
|
+
tags: {
|
|
4057
|
+
before: string;
|
|
4058
|
+
target: string;
|
|
4059
|
+
policy: "always";
|
|
4060
|
+
conditional: true;
|
|
4061
|
+
note: string;
|
|
4062
|
+
};
|
|
4063
|
+
pinnedTo: {
|
|
4064
|
+
before: string;
|
|
4065
|
+
target: string;
|
|
4066
|
+
policy: "always";
|
|
4067
|
+
conditional: true;
|
|
4068
|
+
note: string;
|
|
4069
|
+
};
|
|
4070
|
+
status: {
|
|
4071
|
+
before: string;
|
|
4072
|
+
target: string;
|
|
4073
|
+
policy: "always";
|
|
4074
|
+
conditional: true;
|
|
4075
|
+
note: string;
|
|
4076
|
+
};
|
|
4077
|
+
seoTitle: {
|
|
4078
|
+
before: string;
|
|
4079
|
+
target: string;
|
|
4080
|
+
policy: "always";
|
|
4081
|
+
conditional: true;
|
|
4082
|
+
note: string;
|
|
4083
|
+
};
|
|
4084
|
+
seoDescription: {
|
|
4085
|
+
before: string;
|
|
4086
|
+
target: string;
|
|
4087
|
+
policy: "always";
|
|
4088
|
+
conditional: true;
|
|
4089
|
+
note: string;
|
|
4090
|
+
};
|
|
4091
|
+
seoKeywords: {
|
|
4092
|
+
before: string;
|
|
4093
|
+
target: string;
|
|
4094
|
+
policy: "always";
|
|
4095
|
+
conditional: true;
|
|
4096
|
+
note: string;
|
|
4097
|
+
};
|
|
4098
|
+
headerTag: {
|
|
4099
|
+
before: string;
|
|
4100
|
+
target: string;
|
|
4101
|
+
policy: "always";
|
|
4102
|
+
conditional: true;
|
|
4103
|
+
note: string;
|
|
4104
|
+
};
|
|
4105
|
+
readingMinutes: {
|
|
4106
|
+
target: string;
|
|
4107
|
+
policy: "seed";
|
|
4108
|
+
note: string;
|
|
4109
|
+
};
|
|
4110
|
+
relatedProducts: {
|
|
4111
|
+
target: string;
|
|
4112
|
+
policy: "seed";
|
|
4113
|
+
note: string;
|
|
4114
|
+
};
|
|
4115
|
+
stores: {
|
|
4116
|
+
target: string;
|
|
4117
|
+
policy: "seed";
|
|
4118
|
+
note: string;
|
|
4119
|
+
};
|
|
4120
|
+
}>, NetsuiteFieldProvider<{
|
|
4121
|
+
netsuiteId: {
|
|
4122
|
+
before: string;
|
|
4123
|
+
target: string;
|
|
4124
|
+
policy: "always";
|
|
4125
|
+
conditional: true;
|
|
4126
|
+
note: string;
|
|
4127
|
+
};
|
|
4128
|
+
name: {
|
|
4129
|
+
before: string;
|
|
4130
|
+
target: string;
|
|
4131
|
+
policy: "always";
|
|
4132
|
+
conditional: true;
|
|
4133
|
+
note: string;
|
|
4134
|
+
};
|
|
4135
|
+
status: {
|
|
4136
|
+
before: string;
|
|
4137
|
+
target: string;
|
|
4138
|
+
policy: "always";
|
|
4139
|
+
conditional: true;
|
|
4140
|
+
note: string;
|
|
4141
|
+
};
|
|
4142
|
+
slug: {
|
|
4143
|
+
target: string;
|
|
4144
|
+
policy: "seed";
|
|
4145
|
+
identity: true;
|
|
4146
|
+
note: string;
|
|
4147
|
+
caution: string;
|
|
4148
|
+
};
|
|
4149
|
+
bio: {
|
|
4150
|
+
target: string;
|
|
4151
|
+
policy: "seed";
|
|
4152
|
+
note: string;
|
|
4153
|
+
};
|
|
4154
|
+
seoTitle: {
|
|
4155
|
+
target: string;
|
|
4156
|
+
policy: "seed";
|
|
4157
|
+
note: string;
|
|
4158
|
+
};
|
|
4159
|
+
seoDescription: {
|
|
4160
|
+
target: string;
|
|
4161
|
+
policy: "seed";
|
|
4162
|
+
note: string;
|
|
4163
|
+
};
|
|
4164
|
+
seoKeywords: {
|
|
4165
|
+
target: string;
|
|
4166
|
+
policy: "seed";
|
|
4167
|
+
note: string;
|
|
4168
|
+
};
|
|
4169
|
+
role: {
|
|
4170
|
+
target: string;
|
|
4171
|
+
policy: "seed";
|
|
4172
|
+
note: string;
|
|
4173
|
+
};
|
|
4174
|
+
avatar: {
|
|
4175
|
+
target: string;
|
|
4176
|
+
policy: "seed";
|
|
4177
|
+
note: string;
|
|
4178
|
+
};
|
|
4179
|
+
}>, NetsuiteFieldProvider<{
|
|
4180
|
+
netsuiteId: {
|
|
4181
|
+
before: string;
|
|
4182
|
+
target: string;
|
|
4183
|
+
policy: "always";
|
|
4184
|
+
conditional: true;
|
|
4185
|
+
note: string;
|
|
4186
|
+
};
|
|
4187
|
+
name: {
|
|
4188
|
+
before: string;
|
|
4189
|
+
target: string;
|
|
4190
|
+
policy: "always";
|
|
4191
|
+
conditional: true;
|
|
4192
|
+
note: string;
|
|
4193
|
+
};
|
|
4194
|
+
status: {
|
|
4195
|
+
before: string;
|
|
4196
|
+
target: string;
|
|
4197
|
+
policy: "always";
|
|
4198
|
+
conditional: true;
|
|
4199
|
+
note: string;
|
|
4200
|
+
};
|
|
4201
|
+
slug: {
|
|
4202
|
+
target: string;
|
|
4203
|
+
policy: "seed";
|
|
4204
|
+
identity: true;
|
|
4205
|
+
note: string;
|
|
4206
|
+
caution: string;
|
|
4207
|
+
};
|
|
4208
|
+
description: {
|
|
4209
|
+
target: string;
|
|
4210
|
+
policy: "seed";
|
|
4211
|
+
note: string;
|
|
4212
|
+
};
|
|
4213
|
+
seoTitle: {
|
|
4214
|
+
target: string;
|
|
4215
|
+
policy: "seed";
|
|
4216
|
+
note: string;
|
|
4217
|
+
};
|
|
4218
|
+
seoDescription: {
|
|
4219
|
+
target: string;
|
|
4220
|
+
policy: "seed";
|
|
4221
|
+
note: string;
|
|
4222
|
+
};
|
|
4223
|
+
seoKeywords: {
|
|
4224
|
+
target: string;
|
|
4225
|
+
policy: "seed";
|
|
4226
|
+
note: string;
|
|
4227
|
+
};
|
|
4228
|
+
image: {
|
|
4229
|
+
target: string;
|
|
4230
|
+
policy: "seed";
|
|
4231
|
+
note: string;
|
|
4232
|
+
};
|
|
4233
|
+
sortOrder: {
|
|
4234
|
+
target: string;
|
|
4235
|
+
policy: "seed";
|
|
4236
|
+
note: string;
|
|
4237
|
+
};
|
|
4238
|
+
}>, NetsuiteFieldProvider<{
|
|
4239
|
+
promotionId: {
|
|
4240
|
+
before: string;
|
|
4241
|
+
target: string;
|
|
4242
|
+
policy: "always";
|
|
4243
|
+
conditional: true;
|
|
4244
|
+
note: string;
|
|
4245
|
+
};
|
|
4246
|
+
title: {
|
|
4247
|
+
before: string;
|
|
4248
|
+
target: string;
|
|
4249
|
+
policy: "always";
|
|
4250
|
+
conditional: true;
|
|
4251
|
+
note: string;
|
|
4252
|
+
};
|
|
4253
|
+
promotionName: {
|
|
4254
|
+
before: string;
|
|
4255
|
+
target: string;
|
|
4256
|
+
policy: "always";
|
|
4257
|
+
conditional: true;
|
|
4258
|
+
note: string;
|
|
4259
|
+
};
|
|
4260
|
+
couponCode: {
|
|
4261
|
+
before: string;
|
|
4262
|
+
target: string;
|
|
4263
|
+
policy: "always";
|
|
4264
|
+
identity: true;
|
|
4265
|
+
note: string;
|
|
4266
|
+
caution: string;
|
|
4267
|
+
};
|
|
4268
|
+
discountType: {
|
|
4269
|
+
before: string;
|
|
4270
|
+
target: string;
|
|
4271
|
+
policy: "always";
|
|
4272
|
+
conditional: true;
|
|
4273
|
+
note: string;
|
|
4274
|
+
};
|
|
4275
|
+
discountValue: {
|
|
4276
|
+
before: string;
|
|
4277
|
+
target: string;
|
|
4278
|
+
policy: "always";
|
|
4279
|
+
conditional: true;
|
|
4280
|
+
note: string;
|
|
4281
|
+
};
|
|
4282
|
+
startTime: {
|
|
4283
|
+
before: string;
|
|
4284
|
+
target: string;
|
|
4285
|
+
policy: "always";
|
|
4286
|
+
conditional: true;
|
|
4287
|
+
note: string;
|
|
4288
|
+
};
|
|
4289
|
+
endTime: {
|
|
4290
|
+
before: string;
|
|
4291
|
+
target: string;
|
|
4292
|
+
policy: "always";
|
|
4293
|
+
conditional: true;
|
|
4294
|
+
note: string;
|
|
4295
|
+
};
|
|
4296
|
+
status: {
|
|
4297
|
+
before: string;
|
|
4298
|
+
target: string;
|
|
4299
|
+
policy: "always";
|
|
4300
|
+
conditional: true;
|
|
4301
|
+
note: string;
|
|
4302
|
+
};
|
|
4303
|
+
discountItemId: {
|
|
4304
|
+
before: string;
|
|
4305
|
+
target: string;
|
|
4306
|
+
policy: "always";
|
|
4307
|
+
conditional: true;
|
|
4308
|
+
note: string;
|
|
4309
|
+
};
|
|
4310
|
+
discountItemName: {
|
|
4311
|
+
before: string;
|
|
4312
|
+
target: string;
|
|
4313
|
+
policy: "always";
|
|
4314
|
+
conditional: true;
|
|
4315
|
+
note: string;
|
|
4316
|
+
};
|
|
4317
|
+
discountReducesTax: {
|
|
4318
|
+
before: string;
|
|
4319
|
+
target: string;
|
|
4320
|
+
policy: "always";
|
|
4321
|
+
conditional: true;
|
|
4322
|
+
note: string;
|
|
4323
|
+
};
|
|
4324
|
+
applyDiscountTo: {
|
|
4325
|
+
before: string;
|
|
4326
|
+
target: string;
|
|
4327
|
+
policy: "always";
|
|
4328
|
+
conditional: true;
|
|
4329
|
+
note: string;
|
|
4330
|
+
};
|
|
4331
|
+
freeShipping: {
|
|
4332
|
+
before: string;
|
|
4333
|
+
target: string;
|
|
4334
|
+
policy: "always";
|
|
4335
|
+
conditional: true;
|
|
4336
|
+
note: string;
|
|
4337
|
+
};
|
|
4338
|
+
description: {
|
|
4339
|
+
before: string;
|
|
4340
|
+
target: string;
|
|
4341
|
+
policy: "always";
|
|
4342
|
+
conditional: true;
|
|
4343
|
+
note: string;
|
|
4344
|
+
};
|
|
4345
|
+
isPromotional: {
|
|
4346
|
+
before: string;
|
|
4347
|
+
target: string;
|
|
4348
|
+
policy: "always";
|
|
4349
|
+
conditional: true;
|
|
4350
|
+
note: string;
|
|
4351
|
+
};
|
|
4352
|
+
singleUse: {
|
|
4353
|
+
before: string;
|
|
4354
|
+
target: string;
|
|
4355
|
+
policy: "always";
|
|
4356
|
+
conditional: true;
|
|
4357
|
+
note: string;
|
|
4358
|
+
};
|
|
4359
|
+
itemRestrictions: {
|
|
4360
|
+
before: string;
|
|
4361
|
+
target: string;
|
|
4362
|
+
policy: "always";
|
|
4363
|
+
conditional: true;
|
|
4364
|
+
note: string;
|
|
4365
|
+
};
|
|
4366
|
+
minimumAmount: {
|
|
4367
|
+
before: string;
|
|
4368
|
+
target: string;
|
|
4369
|
+
policy: "always";
|
|
4370
|
+
conditional: true;
|
|
4371
|
+
note: string;
|
|
4372
|
+
};
|
|
4373
|
+
stores: {
|
|
4374
|
+
target: string;
|
|
4375
|
+
policy: "seed";
|
|
4376
|
+
note: string;
|
|
4377
|
+
};
|
|
4378
|
+
}>, NetsuiteFieldProvider<{
|
|
4379
|
+
guid: {
|
|
4380
|
+
before: string;
|
|
4381
|
+
target: string;
|
|
4382
|
+
policy: "always";
|
|
4383
|
+
conditional: true;
|
|
4384
|
+
note: string;
|
|
4385
|
+
};
|
|
4386
|
+
title: {
|
|
4387
|
+
before: string;
|
|
4388
|
+
target: string;
|
|
4389
|
+
policy: "always";
|
|
4390
|
+
conditional: true;
|
|
4391
|
+
note: string;
|
|
4392
|
+
};
|
|
4393
|
+
slug: {
|
|
4394
|
+
target: string;
|
|
4395
|
+
policy: "seed";
|
|
4396
|
+
identity: true;
|
|
4397
|
+
note: string;
|
|
4398
|
+
caution: string;
|
|
4399
|
+
};
|
|
4400
|
+
summary: {
|
|
4401
|
+
before: string;
|
|
4402
|
+
target: string;
|
|
4403
|
+
policy: "always";
|
|
4404
|
+
conditional: true;
|
|
4405
|
+
note: string;
|
|
4406
|
+
};
|
|
4407
|
+
showNotes: {
|
|
4408
|
+
before: string;
|
|
4409
|
+
target: string;
|
|
4410
|
+
policy: "always";
|
|
4411
|
+
conditional: true;
|
|
4412
|
+
note: string;
|
|
4413
|
+
};
|
|
4414
|
+
audioUrl: {
|
|
4415
|
+
before: string;
|
|
4416
|
+
target: string;
|
|
4417
|
+
policy: "always";
|
|
4418
|
+
conditional: true;
|
|
4419
|
+
note: string;
|
|
4420
|
+
};
|
|
4421
|
+
artwork: {
|
|
4422
|
+
before: string;
|
|
4423
|
+
target: string;
|
|
4424
|
+
policy: "always";
|
|
4425
|
+
conditional: true;
|
|
4426
|
+
note: string;
|
|
4427
|
+
};
|
|
4428
|
+
durationSeconds: {
|
|
4429
|
+
before: string;
|
|
4430
|
+
target: string;
|
|
4431
|
+
policy: "always";
|
|
4432
|
+
conditional: true;
|
|
4433
|
+
note: string;
|
|
4434
|
+
};
|
|
4435
|
+
episodeNumber: {
|
|
4436
|
+
before: string;
|
|
4437
|
+
target: string;
|
|
4438
|
+
policy: "always";
|
|
4439
|
+
conditional: true;
|
|
4440
|
+
note: string;
|
|
4441
|
+
};
|
|
4442
|
+
seasonNumber: {
|
|
4443
|
+
before: string;
|
|
4444
|
+
target: string;
|
|
4445
|
+
policy: "always";
|
|
4446
|
+
conditional: true;
|
|
4447
|
+
note: string;
|
|
4448
|
+
};
|
|
4449
|
+
publishedAt: {
|
|
4450
|
+
before: string;
|
|
4451
|
+
target: string;
|
|
4452
|
+
policy: "always";
|
|
4453
|
+
conditional: true;
|
|
4454
|
+
note: string;
|
|
4455
|
+
};
|
|
4456
|
+
externalUrl: {
|
|
4457
|
+
before: string;
|
|
4458
|
+
target: string;
|
|
4459
|
+
policy: "always";
|
|
4460
|
+
conditional: true;
|
|
4461
|
+
note: string;
|
|
4462
|
+
};
|
|
4463
|
+
seoTitle: {
|
|
4464
|
+
before: string;
|
|
4465
|
+
target: string;
|
|
4466
|
+
policy: "always";
|
|
4467
|
+
conditional: true;
|
|
4468
|
+
note: string;
|
|
4469
|
+
};
|
|
4470
|
+
seoDescription: {
|
|
4471
|
+
before: string;
|
|
4472
|
+
target: string;
|
|
4473
|
+
policy: "always";
|
|
4474
|
+
conditional: true;
|
|
4475
|
+
note: string;
|
|
4476
|
+
};
|
|
4477
|
+
transcript: {
|
|
4478
|
+
target: string;
|
|
4479
|
+
policy: "seed";
|
|
4480
|
+
note: string;
|
|
4481
|
+
};
|
|
4482
|
+
relatedProducts: {
|
|
4483
|
+
target: string;
|
|
4484
|
+
policy: "seed";
|
|
4485
|
+
note: string;
|
|
4486
|
+
};
|
|
4487
|
+
stores: {
|
|
4488
|
+
target: string;
|
|
4489
|
+
policy: "seed";
|
|
4490
|
+
note: string;
|
|
4491
|
+
};
|
|
4492
|
+
status: {
|
|
4493
|
+
target: string;
|
|
4494
|
+
policy: "seed";
|
|
4495
|
+
note: string;
|
|
4496
|
+
};
|
|
4497
|
+
isOnline: {
|
|
4498
|
+
target: string;
|
|
4499
|
+
policy: "seed";
|
|
4500
|
+
note: string;
|
|
4501
|
+
};
|
|
4502
|
+
}>];
|
|
4503
|
+
declare const BY_ENTITY: {
|
|
4504
|
+
readonly product: NetsuiteFieldProvider<{
|
|
4505
|
+
readonly netsuiteId: {
|
|
4506
|
+
readonly before: "item.id";
|
|
4507
|
+
readonly target: "netsuiteId";
|
|
4508
|
+
readonly policy: "always";
|
|
4509
|
+
readonly conditional: true;
|
|
4510
|
+
readonly note: string;
|
|
4511
|
+
};
|
|
4512
|
+
readonly sku: {
|
|
4513
|
+
readonly before: "item.itemid";
|
|
4514
|
+
readonly target: "sku";
|
|
4515
|
+
readonly policy: "always";
|
|
4516
|
+
readonly conditional: true;
|
|
4517
|
+
readonly note: "A native item field, not a SuiteCommerce one, so it survives the cutover unchanged.";
|
|
4518
|
+
};
|
|
4519
|
+
readonly originalPrice: {
|
|
4520
|
+
readonly before: "itemprice at the Base Price level (1)";
|
|
4521
|
+
readonly target: "price.originalPrice";
|
|
4522
|
+
readonly policy: "always";
|
|
4523
|
+
readonly conditional: true;
|
|
4524
|
+
readonly note: string;
|
|
4525
|
+
};
|
|
4526
|
+
readonly discount: {
|
|
4527
|
+
readonly before: "derived from Base Price vs Online Price";
|
|
4528
|
+
readonly target: "price.discount";
|
|
4529
|
+
readonly policy: "always";
|
|
4530
|
+
readonly conditional: true;
|
|
4531
|
+
readonly note: string;
|
|
4532
|
+
};
|
|
4533
|
+
readonly weight: {
|
|
4534
|
+
readonly before: "weight + weightunit";
|
|
4535
|
+
readonly target: "shipping.weightLb";
|
|
4536
|
+
readonly policy: "always";
|
|
4537
|
+
readonly conditional: true;
|
|
4538
|
+
readonly note: "weight is on 299,354 items, weightunit on 107,131. Converted to lb and kg on import.";
|
|
4539
|
+
};
|
|
4540
|
+
readonly dimensions: {
|
|
4541
|
+
readonly target: "shipping.lengthIn";
|
|
4542
|
+
readonly policy: "seed";
|
|
4543
|
+
readonly note: string;
|
|
4544
|
+
};
|
|
4545
|
+
readonly price: {
|
|
4546
|
+
readonly before: "itemprice at the online price level";
|
|
4547
|
+
readonly target: "price";
|
|
4548
|
+
readonly policy: "always";
|
|
4549
|
+
readonly conditional: true;
|
|
4550
|
+
readonly note: string;
|
|
4551
|
+
};
|
|
4552
|
+
readonly quantity: {
|
|
4553
|
+
readonly before: "quantityavailable";
|
|
4554
|
+
readonly target: "quantity";
|
|
4555
|
+
readonly policy: "always";
|
|
4556
|
+
readonly conditional: true;
|
|
4557
|
+
readonly note: "A native item field, not a SuiteCommerce one, so it survives the cutover unchanged.";
|
|
4558
|
+
};
|
|
4559
|
+
readonly minimumQuantity: {
|
|
4560
|
+
readonly before: "minimumquantity";
|
|
4561
|
+
readonly target: "minimumQuantity";
|
|
4562
|
+
readonly policy: "always";
|
|
4563
|
+
readonly conditional: true;
|
|
4564
|
+
readonly note: string;
|
|
4565
|
+
};
|
|
4566
|
+
readonly maximumQuantity: {
|
|
4567
|
+
readonly before: "maximumquantity";
|
|
4568
|
+
readonly target: "maximumQuantity";
|
|
4569
|
+
readonly policy: "always";
|
|
4570
|
+
readonly conditional: true;
|
|
4571
|
+
readonly note: string;
|
|
4572
|
+
};
|
|
4573
|
+
readonly enforceMinimum: {
|
|
4574
|
+
readonly before: "enforceminqtyinternally";
|
|
4575
|
+
readonly target: "enforceMinimum";
|
|
4576
|
+
readonly policy: "always";
|
|
4577
|
+
readonly conditional: true;
|
|
4578
|
+
readonly note: string;
|
|
4579
|
+
};
|
|
4580
|
+
readonly isSparePart: {
|
|
4581
|
+
readonly before: "custitem303";
|
|
4582
|
+
readonly target: "isSparePart";
|
|
4583
|
+
readonly policy: "always";
|
|
4584
|
+
readonly conditional: true;
|
|
4585
|
+
readonly note: string;
|
|
4586
|
+
};
|
|
4587
|
+
readonly itemType: {
|
|
4588
|
+
readonly before: "itemtype";
|
|
4589
|
+
readonly target: "itemType";
|
|
4590
|
+
readonly policy: "always";
|
|
4591
|
+
readonly conditional: true;
|
|
4592
|
+
readonly note: string;
|
|
4593
|
+
};
|
|
4594
|
+
readonly stockDescription: {
|
|
4595
|
+
readonly before: "stockdescription";
|
|
4596
|
+
readonly target: "stockDescription";
|
|
4597
|
+
readonly policy: "always";
|
|
4598
|
+
readonly conditional: true;
|
|
4599
|
+
readonly note: string;
|
|
4600
|
+
};
|
|
4601
|
+
readonly noPriceMessage: {
|
|
4602
|
+
readonly before: "nopricemessage";
|
|
4603
|
+
readonly target: "noPriceMessage";
|
|
4604
|
+
readonly policy: "always";
|
|
4605
|
+
readonly conditional: true;
|
|
4606
|
+
readonly note: string;
|
|
4607
|
+
};
|
|
4608
|
+
readonly isSeriesComponent: {
|
|
4609
|
+
readonly before: "custitem40";
|
|
4610
|
+
readonly target: "isSeriesComponent";
|
|
4611
|
+
readonly policy: "always";
|
|
4612
|
+
readonly conditional: true;
|
|
4613
|
+
readonly note: string;
|
|
4614
|
+
};
|
|
4615
|
+
readonly flexWarrantyEligible: {
|
|
4616
|
+
readonly before: "custitem520";
|
|
4617
|
+
readonly target: "flexWarrantyEligible";
|
|
4618
|
+
readonly policy: "always";
|
|
4619
|
+
readonly conditional: true;
|
|
4620
|
+
readonly note: string;
|
|
4621
|
+
};
|
|
4622
|
+
readonly inventoryPolicy: {
|
|
4623
|
+
readonly before: "outofstockbehavior";
|
|
4624
|
+
readonly target: "inventoryPolicy";
|
|
4625
|
+
readonly policy: "always";
|
|
4626
|
+
readonly conditional: true;
|
|
4627
|
+
readonly note: string;
|
|
4628
|
+
};
|
|
4629
|
+
readonly status: {
|
|
4630
|
+
readonly before: "isinactive";
|
|
4631
|
+
readonly target: "status";
|
|
4632
|
+
readonly policy: "always";
|
|
4633
|
+
readonly conditional: true;
|
|
4634
|
+
readonly note: "A native item field, not a SuiteCommerce one, so it survives the cutover unchanged.";
|
|
4635
|
+
};
|
|
4636
|
+
readonly shipping: {
|
|
4637
|
+
readonly before: "weight + weightunit";
|
|
4638
|
+
readonly target: "shipping";
|
|
4639
|
+
readonly policy: "always";
|
|
4640
|
+
readonly conditional: true;
|
|
4641
|
+
readonly note: string;
|
|
4642
|
+
};
|
|
4643
|
+
readonly slug: {
|
|
4644
|
+
readonly before: "urlcomponent";
|
|
4645
|
+
readonly after: "custitem_slug";
|
|
4646
|
+
readonly target: "slug";
|
|
4647
|
+
readonly policy: "seed";
|
|
4648
|
+
readonly identity: true;
|
|
4649
|
+
readonly note: "The storefront URL never moves once a product exists.";
|
|
4650
|
+
readonly caution: "The sync matches on netsuiteId first and falls back to slug. Changing it on a product NetSuite has never supplied makes the next run miss it and insert a second one.";
|
|
4651
|
+
};
|
|
4652
|
+
readonly name: {
|
|
4653
|
+
readonly before: "storedisplayname";
|
|
4654
|
+
readonly after: "custitem_product_name";
|
|
4655
|
+
readonly target: "name";
|
|
4656
|
+
readonly policy: "always";
|
|
4657
|
+
readonly conditional: true;
|
|
4658
|
+
readonly note: string;
|
|
4659
|
+
};
|
|
4660
|
+
readonly featured: {
|
|
4661
|
+
readonly before: "featureddescription";
|
|
4662
|
+
readonly after: "custitem_product_featured_description";
|
|
4663
|
+
readonly target: "description";
|
|
4664
|
+
readonly policy: "always";
|
|
4665
|
+
readonly conditional: true;
|
|
4666
|
+
readonly note: string;
|
|
4667
|
+
};
|
|
4668
|
+
readonly overview: {
|
|
4669
|
+
readonly before: "storedetaileddescription";
|
|
4670
|
+
readonly after: "custitem_product_description";
|
|
4671
|
+
readonly target: "overview";
|
|
4672
|
+
readonly policy: "always";
|
|
4673
|
+
readonly conditional: true;
|
|
4674
|
+
};
|
|
4675
|
+
readonly pageTitle: {
|
|
4676
|
+
readonly before: "pagetitle";
|
|
4677
|
+
readonly after: "custitem_page_title";
|
|
4678
|
+
readonly target: "seoMetaData.title";
|
|
4679
|
+
readonly policy: "always";
|
|
4680
|
+
readonly conditional: true;
|
|
4681
|
+
};
|
|
4682
|
+
readonly online: {
|
|
4683
|
+
readonly before: "isonline";
|
|
4684
|
+
readonly after: "custitem_display_online";
|
|
4685
|
+
readonly target: "isOnline";
|
|
4686
|
+
readonly policy: "always";
|
|
4687
|
+
readonly conditional: true;
|
|
4688
|
+
readonly note: string;
|
|
4689
|
+
};
|
|
4690
|
+
readonly saleType: {
|
|
4691
|
+
readonly before: "dontshowprice";
|
|
4692
|
+
readonly after: "custitem_quote_only";
|
|
4693
|
+
readonly target: "saleType";
|
|
4694
|
+
readonly policy: "always";
|
|
4695
|
+
readonly conditional: true;
|
|
4696
|
+
readonly note: "Derived from the quote-only flag and the price by saleTypeOf, so it is recomputed on every refresh.";
|
|
4697
|
+
};
|
|
4698
|
+
readonly quoteOnly: {
|
|
4699
|
+
readonly before: "dontshowprice";
|
|
4700
|
+
readonly after: "custitem_quote_only";
|
|
4701
|
+
readonly target: "metaData.quoteOnly";
|
|
4702
|
+
readonly policy: "seed";
|
|
4703
|
+
readonly note: "Written only at creation, so a later flip in NetSuite is never picked up.";
|
|
4704
|
+
};
|
|
4705
|
+
readonly image: {
|
|
4706
|
+
readonly before: "storedisplayimage";
|
|
4707
|
+
readonly after: "custitem_itemimages";
|
|
4708
|
+
readonly target: "images";
|
|
4709
|
+
readonly policy: "always";
|
|
4710
|
+
readonly conditional: true;
|
|
4711
|
+
readonly note: "Before is a file id needing a lookup; after is a ready CDN URL.";
|
|
4712
|
+
};
|
|
4713
|
+
readonly category: {
|
|
4714
|
+
readonly before: "commercecategoryitemassociation.category";
|
|
4715
|
+
readonly after: "custitem_primary_category";
|
|
4716
|
+
readonly target: "category";
|
|
4717
|
+
readonly policy: "always";
|
|
4718
|
+
readonly conditional: true;
|
|
4719
|
+
readonly note: string;
|
|
4720
|
+
};
|
|
4721
|
+
readonly seoDescription: {
|
|
4722
|
+
readonly before: "metataghtml";
|
|
4723
|
+
readonly after: "custitem_meta_description";
|
|
4724
|
+
readonly target: "seoMetaData.description";
|
|
4725
|
+
readonly policy: "always";
|
|
4726
|
+
readonly conditional: true;
|
|
4727
|
+
readonly note: "The replacement exists but carries no data yet.";
|
|
4728
|
+
};
|
|
4729
|
+
readonly brand: {
|
|
4730
|
+
readonly before: "manufacturer";
|
|
4731
|
+
readonly target: "brand";
|
|
4732
|
+
readonly policy: "always";
|
|
4733
|
+
readonly conditional: true;
|
|
4734
|
+
readonly note: string;
|
|
4735
|
+
};
|
|
4736
|
+
readonly googleCategory: {
|
|
4737
|
+
readonly after: "custitemproducttype";
|
|
4738
|
+
readonly target: "googleCategory";
|
|
4739
|
+
readonly policy: "always";
|
|
4740
|
+
readonly conditional: true;
|
|
4741
|
+
readonly note: string;
|
|
4742
|
+
};
|
|
4743
|
+
readonly department: {
|
|
4744
|
+
readonly after: "custitemfas_product_category";
|
|
4745
|
+
readonly target: "department";
|
|
4746
|
+
readonly policy: "always";
|
|
4747
|
+
readonly conditional: true;
|
|
4748
|
+
readonly note: string;
|
|
4749
|
+
};
|
|
4750
|
+
readonly imageAlt: {
|
|
4751
|
+
readonly after: "custitemaltimgtext";
|
|
4752
|
+
readonly target: "images.alt";
|
|
4753
|
+
readonly policy: "always";
|
|
4754
|
+
readonly conditional: true;
|
|
4755
|
+
readonly note: string;
|
|
4756
|
+
};
|
|
4757
|
+
readonly family: {
|
|
4758
|
+
readonly after: "custitem_family";
|
|
4759
|
+
readonly target: "metaData.family";
|
|
4760
|
+
readonly policy: "seed";
|
|
4761
|
+
readonly pending: true;
|
|
4762
|
+
readonly note: "Populated on 17,552 items. No storefront field consumes it yet.";
|
|
4763
|
+
};
|
|
4764
|
+
readonly primaryCategory: {
|
|
4765
|
+
readonly before: "commercecategoryitemassociation.primarycategory";
|
|
4766
|
+
readonly after: "custitem_primary_category";
|
|
4767
|
+
readonly target: "metaData.primaryCategory";
|
|
4768
|
+
readonly policy: "seed";
|
|
4769
|
+
readonly note: string;
|
|
4770
|
+
};
|
|
4771
|
+
readonly additionalCategories: {
|
|
4772
|
+
readonly sourceTable: "commercecategoryitemassociation";
|
|
4773
|
+
readonly after: "custitem_additional_categories";
|
|
4774
|
+
readonly target: "categories";
|
|
4775
|
+
readonly policy: "always";
|
|
4776
|
+
readonly note: string;
|
|
4777
|
+
readonly caution: string;
|
|
4778
|
+
};
|
|
4779
|
+
readonly micrositeDescription: {
|
|
4780
|
+
readonly after: "custitem_microsite_description";
|
|
4781
|
+
readonly target: "metaData.micrositeDescription";
|
|
4782
|
+
readonly policy: "seed";
|
|
4783
|
+
readonly pending: true;
|
|
4784
|
+
readonly note: "Populated on 2,284 items.";
|
|
4785
|
+
};
|
|
4786
|
+
readonly features: {
|
|
4787
|
+
readonly after: "custitem_features";
|
|
4788
|
+
readonly target: "metaData.features";
|
|
4789
|
+
readonly policy: "seed";
|
|
4790
|
+
readonly pending: true;
|
|
4791
|
+
readonly note: "Field exists in NetSuite and carries no data yet.";
|
|
4792
|
+
};
|
|
4793
|
+
readonly childStoreOnly: {
|
|
4794
|
+
readonly after: "custitem_child_store_only";
|
|
4795
|
+
readonly target: "childOnly";
|
|
4796
|
+
readonly policy: "seed";
|
|
4797
|
+
readonly pending: true;
|
|
4798
|
+
readonly note: "Nothing is flagged yet. Our stores[] array already covers this.";
|
|
4799
|
+
};
|
|
4800
|
+
}>;
|
|
4801
|
+
readonly addon: NetsuiteFieldProvider<{
|
|
4802
|
+
readonly netsuiteItemId: {
|
|
4803
|
+
readonly before: "item.id";
|
|
4804
|
+
readonly target: "netsuite.itemId";
|
|
4805
|
+
readonly policy: "always";
|
|
4806
|
+
readonly conditional: true;
|
|
4807
|
+
readonly note: string;
|
|
4808
|
+
};
|
|
4809
|
+
readonly netsuiteItemName: {
|
|
4810
|
+
readonly before: "item.itemid";
|
|
4811
|
+
readonly target: "netsuite.itemName";
|
|
4812
|
+
readonly policy: "always";
|
|
4813
|
+
readonly conditional: true;
|
|
4814
|
+
readonly note: "A native NetSuite item field, not a SuiteCommerce one, so it survives the cutover.";
|
|
4815
|
+
};
|
|
4816
|
+
readonly groupAndOption: {
|
|
4817
|
+
readonly before: "storedisplayname";
|
|
4818
|
+
readonly target: "name";
|
|
4819
|
+
readonly policy: "always";
|
|
4820
|
+
readonly conditional: true;
|
|
4821
|
+
readonly identity: true;
|
|
4822
|
+
readonly note: string;
|
|
4823
|
+
};
|
|
4824
|
+
readonly key: {
|
|
4825
|
+
readonly before: "urlcomponent";
|
|
4826
|
+
readonly target: "key";
|
|
4827
|
+
readonly policy: "always";
|
|
4828
|
+
readonly identity: true;
|
|
4829
|
+
readonly note: string;
|
|
4830
|
+
readonly caution: "Changing urlcomponent in NetSuite orphans the existing add-on and creates a new one.";
|
|
4831
|
+
};
|
|
4832
|
+
readonly active: {
|
|
4833
|
+
readonly before: "isinactive";
|
|
4834
|
+
readonly target: "status";
|
|
4835
|
+
readonly policy: "always";
|
|
4836
|
+
readonly conditional: true;
|
|
4837
|
+
readonly note: string;
|
|
4838
|
+
};
|
|
4839
|
+
readonly visible: {
|
|
4840
|
+
readonly before: "isonline";
|
|
4841
|
+
readonly target: "isVisible";
|
|
4842
|
+
readonly policy: "always";
|
|
4843
|
+
readonly conditional: true;
|
|
4844
|
+
readonly note: string;
|
|
4845
|
+
};
|
|
4846
|
+
readonly pricingType: {
|
|
4847
|
+
readonly target: "pricingType";
|
|
4848
|
+
readonly policy: "seed";
|
|
4849
|
+
readonly note: string;
|
|
4850
|
+
};
|
|
4851
|
+
readonly price: {
|
|
4852
|
+
readonly before: "itemprice at price level 1";
|
|
4853
|
+
readonly target: "price";
|
|
4854
|
+
readonly policy: "always";
|
|
4855
|
+
readonly conditional: true;
|
|
4856
|
+
readonly note: "Base price. An option with no level-1 price is reported by the sync rather than written as $0.";
|
|
4857
|
+
};
|
|
4858
|
+
readonly sellingPoints: {
|
|
4859
|
+
readonly before: "salesdescription";
|
|
4860
|
+
readonly target: "description";
|
|
4861
|
+
readonly policy: "always";
|
|
4862
|
+
readonly conditional: true;
|
|
4863
|
+
readonly note: string;
|
|
4864
|
+
};
|
|
4865
|
+
readonly detail: {
|
|
4866
|
+
readonly before: "storedetaileddescription";
|
|
4867
|
+
readonly target: "longDescription";
|
|
4868
|
+
readonly policy: "always";
|
|
4869
|
+
readonly conditional: true;
|
|
4870
|
+
readonly note: string;
|
|
4871
|
+
};
|
|
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
|
+
readonly eligibilityGate: {
|
|
4880
|
+
readonly before: "custitem520";
|
|
4881
|
+
readonly target: "AddonGroup.netsuite.requiresField";
|
|
4882
|
+
readonly policy: "seed";
|
|
4883
|
+
readonly note: string;
|
|
4884
|
+
};
|
|
4885
|
+
}>;
|
|
4886
|
+
readonly brand: NetsuiteFieldProvider<{
|
|
4887
|
+
readonly name: {
|
|
4888
|
+
readonly before: "commercecategory.name";
|
|
4889
|
+
readonly after: "item.manufacturer";
|
|
4890
|
+
readonly target: "name";
|
|
4891
|
+
readonly policy: "always";
|
|
4892
|
+
};
|
|
4893
|
+
readonly online: {
|
|
4894
|
+
readonly before: "isonline";
|
|
4895
|
+
readonly after: "custitem_display_online";
|
|
4896
|
+
readonly target: "isOnline";
|
|
4897
|
+
readonly policy: "always";
|
|
4898
|
+
};
|
|
4899
|
+
readonly netsuiteId: {
|
|
4900
|
+
readonly before: "commercecategory.id";
|
|
4901
|
+
readonly target: "netsuiteId";
|
|
4902
|
+
readonly policy: "always";
|
|
4903
|
+
readonly conditional: true;
|
|
4904
|
+
readonly note: "No successor. The manufacturer name becomes the key.";
|
|
4905
|
+
};
|
|
4906
|
+
readonly slug: {
|
|
4907
|
+
readonly before: "commercecategory.urlfragment";
|
|
4908
|
+
readonly target: "slug";
|
|
4909
|
+
readonly policy: "seed";
|
|
4910
|
+
readonly identity: true;
|
|
4911
|
+
readonly note: string;
|
|
4912
|
+
readonly caution: string;
|
|
4913
|
+
};
|
|
4914
|
+
readonly logo: {
|
|
4915
|
+
readonly before: "thumbnail";
|
|
4916
|
+
readonly target: "logo";
|
|
4917
|
+
readonly policy: "always";
|
|
4918
|
+
readonly conditional: true;
|
|
4919
|
+
readonly note: "No successor. custrecord35 holds the same logo as a plain URL on all 52 brands.";
|
|
4920
|
+
};
|
|
4921
|
+
readonly description: {
|
|
4922
|
+
readonly before: "commercecategory.description";
|
|
4923
|
+
readonly target: "description";
|
|
4924
|
+
readonly policy: "always";
|
|
4925
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
4926
|
+
};
|
|
4927
|
+
readonly sortOrder: {
|
|
4928
|
+
readonly before: "sequencenumber";
|
|
4929
|
+
readonly target: "sortOrder";
|
|
4930
|
+
readonly policy: "always";
|
|
4931
|
+
readonly conditional: true;
|
|
4932
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
4933
|
+
};
|
|
4934
|
+
readonly seoTitle: {
|
|
4935
|
+
readonly before: "pagetitle";
|
|
4936
|
+
readonly target: "seoMetaData.title";
|
|
4937
|
+
readonly policy: "always";
|
|
4938
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
4939
|
+
};
|
|
4940
|
+
readonly seoDescription: {
|
|
4941
|
+
readonly before: "metadescription";
|
|
4942
|
+
readonly target: "seoMetaData.description";
|
|
4943
|
+
readonly policy: "always";
|
|
4944
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
4945
|
+
};
|
|
4946
|
+
readonly seoKeywords: {
|
|
4947
|
+
readonly before: "metakeywords";
|
|
4948
|
+
readonly target: "seoMetaData.keywords";
|
|
4949
|
+
readonly policy: "always";
|
|
4950
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
4951
|
+
};
|
|
4952
|
+
readonly status: {
|
|
4953
|
+
readonly before: "isinactive + displayinsite";
|
|
4954
|
+
readonly target: "status";
|
|
4955
|
+
readonly policy: "always";
|
|
4956
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
4957
|
+
};
|
|
4958
|
+
readonly headerTag: {
|
|
4959
|
+
readonly before: "pageheading";
|
|
4960
|
+
readonly target: "seoMetaData.headerTag";
|
|
4961
|
+
readonly policy: "always";
|
|
4962
|
+
readonly note: string;
|
|
4963
|
+
};
|
|
4964
|
+
readonly banners: {
|
|
4965
|
+
readonly before: "pagebanner";
|
|
4966
|
+
readonly target: "banners";
|
|
4967
|
+
readonly policy: "seed";
|
|
4968
|
+
readonly note: string;
|
|
4969
|
+
};
|
|
4970
|
+
readonly logoUrl: {
|
|
4971
|
+
readonly before: "custrecord35";
|
|
4972
|
+
readonly target: "logo";
|
|
4973
|
+
readonly policy: "seed";
|
|
4974
|
+
readonly pending: true;
|
|
4975
|
+
readonly note: "A plain logo URL on all 52 brands, needing no file lookup. Never imported.";
|
|
4976
|
+
};
|
|
4977
|
+
}>;
|
|
4978
|
+
readonly category: NetsuiteFieldProvider<{
|
|
4979
|
+
readonly name: {
|
|
4980
|
+
readonly before: "commercecategory.name";
|
|
4981
|
+
readonly after: "custitem_category";
|
|
4982
|
+
readonly target: "name";
|
|
4983
|
+
readonly policy: "always";
|
|
4984
|
+
readonly note: "After is a flat string stamped on the item, not a record.";
|
|
4985
|
+
};
|
|
4986
|
+
readonly online: {
|
|
4987
|
+
readonly before: "isonline";
|
|
4988
|
+
readonly after: "custitem_display_online";
|
|
4989
|
+
readonly target: "isOnline";
|
|
4990
|
+
readonly policy: "always";
|
|
4991
|
+
};
|
|
4992
|
+
readonly netsuiteId: {
|
|
4993
|
+
readonly before: "commercecategory.id";
|
|
4994
|
+
readonly target: "netsuiteId";
|
|
4995
|
+
readonly policy: "always";
|
|
4996
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
4997
|
+
};
|
|
4998
|
+
readonly slug: {
|
|
4999
|
+
readonly before: "urlfragment";
|
|
5000
|
+
readonly target: "slug";
|
|
5001
|
+
readonly policy: "seed";
|
|
5002
|
+
readonly identity: true;
|
|
5003
|
+
readonly note: string;
|
|
5004
|
+
readonly caution: string;
|
|
5005
|
+
};
|
|
5006
|
+
readonly image: {
|
|
5007
|
+
readonly before: "thumbnail";
|
|
5008
|
+
readonly target: "image";
|
|
5009
|
+
readonly policy: "always";
|
|
5010
|
+
readonly note: "No successor. custrecord35 holds 3,735 of these as plain URLs.";
|
|
5011
|
+
};
|
|
5012
|
+
readonly description: {
|
|
5013
|
+
readonly before: "commercecategory.description";
|
|
5014
|
+
readonly target: "description";
|
|
5015
|
+
readonly policy: "always";
|
|
5016
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
5017
|
+
};
|
|
5018
|
+
readonly sortOrder: {
|
|
5019
|
+
readonly before: "sequencenumber";
|
|
5020
|
+
readonly target: "sortOrder";
|
|
5021
|
+
readonly policy: "always";
|
|
5022
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
5023
|
+
};
|
|
5024
|
+
readonly seoTitle: {
|
|
5025
|
+
readonly before: "pagetitle";
|
|
5026
|
+
readonly target: "seoMetaData.title";
|
|
5027
|
+
readonly policy: "always";
|
|
5028
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
5029
|
+
};
|
|
5030
|
+
readonly seoDescription: {
|
|
5031
|
+
readonly before: "metadescription";
|
|
5032
|
+
readonly target: "seoMetaData.description";
|
|
5033
|
+
readonly policy: "always";
|
|
5034
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
5035
|
+
};
|
|
5036
|
+
readonly seoKeywords: {
|
|
5037
|
+
readonly before: "metakeywords";
|
|
5038
|
+
readonly target: "seoMetaData.keywords";
|
|
5039
|
+
readonly policy: "always";
|
|
5040
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
5041
|
+
};
|
|
5042
|
+
readonly status: {
|
|
5043
|
+
readonly before: "isinactive + displayinsite";
|
|
5044
|
+
readonly target: "status";
|
|
5045
|
+
readonly policy: "always";
|
|
5046
|
+
readonly note: "No successor. Snapshot it before SuiteCommerce is retired, then it is ours.";
|
|
5047
|
+
};
|
|
5048
|
+
readonly parent: {
|
|
5049
|
+
readonly before: "primaryparent";
|
|
5050
|
+
readonly after: "custitem_primary_category";
|
|
5051
|
+
readonly target: "parent";
|
|
5052
|
+
readonly policy: "always";
|
|
5053
|
+
readonly note: "The single primary parent. Mirrors NetSuite on every sync, so a parent changed here is overwritten. After is populated on only 3,150 items.";
|
|
5054
|
+
};
|
|
5055
|
+
readonly subcategories: {
|
|
5056
|
+
readonly before: "commercecategoryassociation.subcategory";
|
|
5057
|
+
readonly target: "subcategories";
|
|
5058
|
+
readonly policy: "always";
|
|
5059
|
+
readonly note: "The children list, rebuilt from the association table on every sync — NetSuite categories are multi-parent, so 23% of them sit under more than one. `primaryparent` alone misses those. Edits here are overwritten.";
|
|
5060
|
+
readonly caution: "The association row also carries nameoverride / urlfragmentoverride / thumbnailoverride per parent, so the same category is labelled differently under each. Those overrides are applied for the primary parent only.";
|
|
5061
|
+
};
|
|
5062
|
+
readonly headerTag: {
|
|
5063
|
+
readonly before: "pageheading";
|
|
5064
|
+
readonly target: "seoMetaData.headerTag";
|
|
5065
|
+
readonly policy: "always";
|
|
5066
|
+
readonly note: "The H1, on 4,789 categories. addtohead is head markup and is not a substitute.";
|
|
5067
|
+
};
|
|
5068
|
+
readonly banners: {
|
|
5069
|
+
readonly before: "pagebanner";
|
|
5070
|
+
readonly target: "banners";
|
|
5071
|
+
readonly policy: "seed";
|
|
5072
|
+
readonly note: "Seeded from pagebanner on first import; 50 categories carry one. Edits here are never overwritten.";
|
|
5073
|
+
};
|
|
5074
|
+
readonly imageUrl: {
|
|
5075
|
+
readonly before: "custrecord35";
|
|
5076
|
+
readonly target: "image";
|
|
5077
|
+
readonly policy: "seed";
|
|
5078
|
+
readonly pending: true;
|
|
5079
|
+
readonly note: "A plain image URL on 3,735 categories, needing no file lookup. Never imported.";
|
|
5080
|
+
};
|
|
5081
|
+
readonly faq: {
|
|
5082
|
+
readonly before: "custrecord_faq_q1";
|
|
5083
|
+
readonly target: "metaData.faq";
|
|
5084
|
+
readonly policy: "seed";
|
|
5085
|
+
readonly pending: true;
|
|
5086
|
+
readonly note: "Ten question and answer pairs on 34 categories. Editorial copy held nowhere else.";
|
|
5087
|
+
};
|
|
5088
|
+
}>;
|
|
5089
|
+
readonly coupon: NetsuiteFieldProvider<{
|
|
5090
|
+
promotionId: {
|
|
5091
|
+
before: string;
|
|
5092
|
+
target: string;
|
|
5093
|
+
policy: "always";
|
|
5094
|
+
conditional: true;
|
|
5095
|
+
note: string;
|
|
5096
|
+
};
|
|
5097
|
+
title: {
|
|
5098
|
+
before: string;
|
|
5099
|
+
target: string;
|
|
5100
|
+
policy: "always";
|
|
5101
|
+
conditional: true;
|
|
5102
|
+
note: string;
|
|
5103
|
+
};
|
|
5104
|
+
promotionName: {
|
|
5105
|
+
before: string;
|
|
5106
|
+
target: string;
|
|
5107
|
+
policy: "always";
|
|
5108
|
+
conditional: true;
|
|
5109
|
+
note: string;
|
|
5110
|
+
};
|
|
5111
|
+
couponCode: {
|
|
5112
|
+
before: string;
|
|
5113
|
+
target: string;
|
|
5114
|
+
policy: "always";
|
|
5115
|
+
identity: true;
|
|
5116
|
+
note: string;
|
|
5117
|
+
caution: string;
|
|
5118
|
+
};
|
|
5119
|
+
discountType: {
|
|
5120
|
+
before: string;
|
|
5121
|
+
target: string;
|
|
5122
|
+
policy: "always";
|
|
5123
|
+
conditional: true;
|
|
5124
|
+
note: string;
|
|
5125
|
+
};
|
|
5126
|
+
discountValue: {
|
|
5127
|
+
before: string;
|
|
5128
|
+
target: string;
|
|
5129
|
+
policy: "always";
|
|
5130
|
+
conditional: true;
|
|
5131
|
+
note: string;
|
|
5132
|
+
};
|
|
5133
|
+
startTime: {
|
|
5134
|
+
before: string;
|
|
5135
|
+
target: string;
|
|
5136
|
+
policy: "always";
|
|
5137
|
+
conditional: true;
|
|
5138
|
+
note: string;
|
|
5139
|
+
};
|
|
5140
|
+
endTime: {
|
|
5141
|
+
before: string;
|
|
5142
|
+
target: string;
|
|
5143
|
+
policy: "always";
|
|
5144
|
+
conditional: true;
|
|
5145
|
+
note: string;
|
|
5146
|
+
};
|
|
5147
|
+
status: {
|
|
5148
|
+
before: string;
|
|
5149
|
+
target: string;
|
|
5150
|
+
policy: "always";
|
|
5151
|
+
conditional: true;
|
|
5152
|
+
note: string;
|
|
5153
|
+
};
|
|
5154
|
+
discountItemId: {
|
|
5155
|
+
before: string;
|
|
5156
|
+
target: string;
|
|
5157
|
+
policy: "always";
|
|
5158
|
+
conditional: true;
|
|
5159
|
+
note: string;
|
|
5160
|
+
};
|
|
5161
|
+
discountItemName: {
|
|
5162
|
+
before: string;
|
|
5163
|
+
target: string;
|
|
5164
|
+
policy: "always";
|
|
5165
|
+
conditional: true;
|
|
5166
|
+
note: string;
|
|
5167
|
+
};
|
|
5168
|
+
discountReducesTax: {
|
|
5169
|
+
before: string;
|
|
5170
|
+
target: string;
|
|
5171
|
+
policy: "always";
|
|
5172
|
+
conditional: true;
|
|
5173
|
+
note: string;
|
|
5174
|
+
};
|
|
5175
|
+
applyDiscountTo: {
|
|
5176
|
+
before: string;
|
|
5177
|
+
target: string;
|
|
5178
|
+
policy: "always";
|
|
5179
|
+
conditional: true;
|
|
5180
|
+
note: string;
|
|
5181
|
+
};
|
|
5182
|
+
freeShipping: {
|
|
5183
|
+
before: string;
|
|
5184
|
+
target: string;
|
|
5185
|
+
policy: "always";
|
|
5186
|
+
conditional: true;
|
|
5187
|
+
note: string;
|
|
5188
|
+
};
|
|
5189
|
+
description: {
|
|
5190
|
+
before: string;
|
|
5191
|
+
target: string;
|
|
5192
|
+
policy: "always";
|
|
5193
|
+
conditional: true;
|
|
5194
|
+
note: string;
|
|
5195
|
+
};
|
|
5196
|
+
isPromotional: {
|
|
5197
|
+
before: string;
|
|
5198
|
+
target: string;
|
|
5199
|
+
policy: "always";
|
|
5200
|
+
conditional: true;
|
|
5201
|
+
note: string;
|
|
5202
|
+
};
|
|
5203
|
+
singleUse: {
|
|
5204
|
+
before: string;
|
|
5205
|
+
target: string;
|
|
5206
|
+
policy: "always";
|
|
5207
|
+
conditional: true;
|
|
5208
|
+
note: string;
|
|
5209
|
+
};
|
|
5210
|
+
itemRestrictions: {
|
|
5211
|
+
before: string;
|
|
5212
|
+
target: string;
|
|
5213
|
+
policy: "always";
|
|
5214
|
+
conditional: true;
|
|
5215
|
+
note: string;
|
|
5216
|
+
};
|
|
5217
|
+
minimumAmount: {
|
|
5218
|
+
before: string;
|
|
5219
|
+
target: string;
|
|
5220
|
+
policy: "always";
|
|
5221
|
+
conditional: true;
|
|
5222
|
+
note: string;
|
|
5223
|
+
};
|
|
5224
|
+
stores: {
|
|
5225
|
+
target: string;
|
|
5226
|
+
policy: "seed";
|
|
5227
|
+
note: string;
|
|
5228
|
+
};
|
|
5229
|
+
}>;
|
|
5230
|
+
readonly podcast: NetsuiteFieldProvider<{
|
|
5231
|
+
guid: {
|
|
5232
|
+
before: string;
|
|
5233
|
+
target: string;
|
|
5234
|
+
policy: "always";
|
|
5235
|
+
conditional: true;
|
|
5236
|
+
note: string;
|
|
5237
|
+
};
|
|
5238
|
+
title: {
|
|
5239
|
+
before: string;
|
|
5240
|
+
target: string;
|
|
5241
|
+
policy: "always";
|
|
5242
|
+
conditional: true;
|
|
5243
|
+
note: string;
|
|
5244
|
+
};
|
|
5245
|
+
slug: {
|
|
5246
|
+
target: string;
|
|
5247
|
+
policy: "seed";
|
|
5248
|
+
identity: true;
|
|
5249
|
+
note: string;
|
|
5250
|
+
caution: string;
|
|
5251
|
+
};
|
|
5252
|
+
summary: {
|
|
5253
|
+
before: string;
|
|
5254
|
+
target: string;
|
|
5255
|
+
policy: "always";
|
|
5256
|
+
conditional: true;
|
|
5257
|
+
note: string;
|
|
5258
|
+
};
|
|
5259
|
+
showNotes: {
|
|
5260
|
+
before: string;
|
|
5261
|
+
target: string;
|
|
5262
|
+
policy: "always";
|
|
5263
|
+
conditional: true;
|
|
5264
|
+
note: string;
|
|
5265
|
+
};
|
|
5266
|
+
audioUrl: {
|
|
5267
|
+
before: string;
|
|
5268
|
+
target: string;
|
|
5269
|
+
policy: "always";
|
|
5270
|
+
conditional: true;
|
|
5271
|
+
note: string;
|
|
5272
|
+
};
|
|
5273
|
+
artwork: {
|
|
5274
|
+
before: string;
|
|
5275
|
+
target: string;
|
|
5276
|
+
policy: "always";
|
|
5277
|
+
conditional: true;
|
|
5278
|
+
note: string;
|
|
5279
|
+
};
|
|
5280
|
+
durationSeconds: {
|
|
5281
|
+
before: string;
|
|
5282
|
+
target: string;
|
|
5283
|
+
policy: "always";
|
|
5284
|
+
conditional: true;
|
|
5285
|
+
note: string;
|
|
5286
|
+
};
|
|
5287
|
+
episodeNumber: {
|
|
5288
|
+
before: string;
|
|
5289
|
+
target: string;
|
|
5290
|
+
policy: "always";
|
|
5291
|
+
conditional: true;
|
|
5292
|
+
note: string;
|
|
5293
|
+
};
|
|
5294
|
+
seasonNumber: {
|
|
5295
|
+
before: string;
|
|
5296
|
+
target: string;
|
|
5297
|
+
policy: "always";
|
|
5298
|
+
conditional: true;
|
|
5299
|
+
note: string;
|
|
5300
|
+
};
|
|
5301
|
+
publishedAt: {
|
|
5302
|
+
before: string;
|
|
5303
|
+
target: string;
|
|
5304
|
+
policy: "always";
|
|
5305
|
+
conditional: true;
|
|
5306
|
+
note: string;
|
|
5307
|
+
};
|
|
5308
|
+
externalUrl: {
|
|
5309
|
+
before: string;
|
|
5310
|
+
target: string;
|
|
5311
|
+
policy: "always";
|
|
5312
|
+
conditional: true;
|
|
5313
|
+
note: string;
|
|
5314
|
+
};
|
|
5315
|
+
seoTitle: {
|
|
5316
|
+
before: string;
|
|
5317
|
+
target: string;
|
|
5318
|
+
policy: "always";
|
|
5319
|
+
conditional: true;
|
|
5320
|
+
note: string;
|
|
5321
|
+
};
|
|
5322
|
+
seoDescription: {
|
|
5323
|
+
before: string;
|
|
5324
|
+
target: string;
|
|
5325
|
+
policy: "always";
|
|
5326
|
+
conditional: true;
|
|
5327
|
+
note: string;
|
|
5328
|
+
};
|
|
5329
|
+
transcript: {
|
|
5330
|
+
target: string;
|
|
5331
|
+
policy: "seed";
|
|
5332
|
+
note: string;
|
|
5333
|
+
};
|
|
5334
|
+
relatedProducts: {
|
|
5335
|
+
target: string;
|
|
5336
|
+
policy: "seed";
|
|
5337
|
+
note: string;
|
|
5338
|
+
};
|
|
5339
|
+
stores: {
|
|
5340
|
+
target: string;
|
|
5341
|
+
policy: "seed";
|
|
5342
|
+
note: string;
|
|
5343
|
+
};
|
|
5344
|
+
status: {
|
|
5345
|
+
target: string;
|
|
5346
|
+
policy: "seed";
|
|
5347
|
+
note: string;
|
|
5348
|
+
};
|
|
5349
|
+
isOnline: {
|
|
5350
|
+
target: string;
|
|
5351
|
+
policy: "seed";
|
|
5352
|
+
note: string;
|
|
5353
|
+
};
|
|
5354
|
+
}>;
|
|
5355
|
+
readonly blog: NetsuiteFieldProvider<{
|
|
5356
|
+
netsuiteId: {
|
|
5357
|
+
before: string;
|
|
5358
|
+
target: string;
|
|
5359
|
+
policy: "always";
|
|
5360
|
+
conditional: true;
|
|
5361
|
+
note: string;
|
|
5362
|
+
};
|
|
5363
|
+
netsuitePostId: {
|
|
5364
|
+
before: string;
|
|
5365
|
+
target: string;
|
|
5366
|
+
policy: "always";
|
|
5367
|
+
conditional: true;
|
|
5368
|
+
note: string;
|
|
5369
|
+
};
|
|
5370
|
+
title: {
|
|
5371
|
+
before: string;
|
|
5372
|
+
target: string;
|
|
5373
|
+
policy: "always";
|
|
5374
|
+
conditional: true;
|
|
5375
|
+
note: string;
|
|
5376
|
+
};
|
|
5377
|
+
slug: {
|
|
5378
|
+
before: string;
|
|
5379
|
+
target: string;
|
|
5380
|
+
policy: "always";
|
|
5381
|
+
conditional: true;
|
|
5382
|
+
note: string;
|
|
5383
|
+
caution: string;
|
|
5384
|
+
};
|
|
5385
|
+
subtitle: {
|
|
5386
|
+
before: string;
|
|
5387
|
+
target: string;
|
|
5388
|
+
policy: "always";
|
|
5389
|
+
conditional: true;
|
|
5390
|
+
note: string;
|
|
5391
|
+
};
|
|
5392
|
+
content: {
|
|
5393
|
+
before: string;
|
|
5394
|
+
target: string;
|
|
5395
|
+
policy: "always";
|
|
5396
|
+
conditional: true;
|
|
5397
|
+
note: string;
|
|
5398
|
+
};
|
|
5399
|
+
publishedAt: {
|
|
5400
|
+
before: string;
|
|
5401
|
+
target: string;
|
|
5402
|
+
policy: "always";
|
|
5403
|
+
conditional: true;
|
|
5404
|
+
note: string;
|
|
5405
|
+
};
|
|
5406
|
+
author: {
|
|
5407
|
+
before: string;
|
|
5408
|
+
target: string;
|
|
5409
|
+
policy: "always";
|
|
5410
|
+
conditional: true;
|
|
5411
|
+
note: string;
|
|
5412
|
+
};
|
|
5413
|
+
category: {
|
|
5414
|
+
before: string;
|
|
5415
|
+
target: string;
|
|
5416
|
+
policy: "always";
|
|
5417
|
+
conditional: true;
|
|
5418
|
+
note: string;
|
|
5419
|
+
};
|
|
5420
|
+
headerImage: {
|
|
5421
|
+
before: string;
|
|
5422
|
+
target: string;
|
|
5423
|
+
policy: "always";
|
|
5424
|
+
conditional: true;
|
|
5425
|
+
note: string;
|
|
5426
|
+
};
|
|
5427
|
+
headerImageAlt: {
|
|
5428
|
+
before: string;
|
|
5429
|
+
target: string;
|
|
5430
|
+
policy: "always";
|
|
5431
|
+
conditional: true;
|
|
5432
|
+
note: string;
|
|
5433
|
+
};
|
|
5434
|
+
thumbnail: {
|
|
5435
|
+
before: string;
|
|
5436
|
+
target: string;
|
|
5437
|
+
policy: "always";
|
|
5438
|
+
conditional: true;
|
|
5439
|
+
note: string;
|
|
5440
|
+
};
|
|
5441
|
+
thumbnailAlt: {
|
|
5442
|
+
before: string;
|
|
5443
|
+
target: string;
|
|
5444
|
+
policy: "always";
|
|
5445
|
+
conditional: true;
|
|
5446
|
+
note: string;
|
|
5447
|
+
};
|
|
5448
|
+
excerpt: {
|
|
5449
|
+
before: string;
|
|
5450
|
+
target: string;
|
|
5451
|
+
policy: "always";
|
|
5452
|
+
conditional: true;
|
|
5453
|
+
note: string;
|
|
5454
|
+
};
|
|
5455
|
+
tags: {
|
|
5456
|
+
before: string;
|
|
5457
|
+
target: string;
|
|
5458
|
+
policy: "always";
|
|
5459
|
+
conditional: true;
|
|
5460
|
+
note: string;
|
|
5461
|
+
};
|
|
5462
|
+
pinnedTo: {
|
|
5463
|
+
before: string;
|
|
5464
|
+
target: string;
|
|
5465
|
+
policy: "always";
|
|
5466
|
+
conditional: true;
|
|
5467
|
+
note: string;
|
|
5468
|
+
};
|
|
5469
|
+
status: {
|
|
5470
|
+
before: string;
|
|
5471
|
+
target: string;
|
|
5472
|
+
policy: "always";
|
|
5473
|
+
conditional: true;
|
|
5474
|
+
note: string;
|
|
5475
|
+
};
|
|
5476
|
+
seoTitle: {
|
|
5477
|
+
before: string;
|
|
5478
|
+
target: string;
|
|
5479
|
+
policy: "always";
|
|
5480
|
+
conditional: true;
|
|
5481
|
+
note: string;
|
|
5482
|
+
};
|
|
5483
|
+
seoDescription: {
|
|
5484
|
+
before: string;
|
|
5485
|
+
target: string;
|
|
5486
|
+
policy: "always";
|
|
5487
|
+
conditional: true;
|
|
5488
|
+
note: string;
|
|
5489
|
+
};
|
|
5490
|
+
seoKeywords: {
|
|
5491
|
+
before: string;
|
|
5492
|
+
target: string;
|
|
5493
|
+
policy: "always";
|
|
5494
|
+
conditional: true;
|
|
5495
|
+
note: string;
|
|
5496
|
+
};
|
|
5497
|
+
headerTag: {
|
|
5498
|
+
before: string;
|
|
5499
|
+
target: string;
|
|
5500
|
+
policy: "always";
|
|
5501
|
+
conditional: true;
|
|
5502
|
+
note: string;
|
|
5503
|
+
};
|
|
5504
|
+
readingMinutes: {
|
|
5505
|
+
target: string;
|
|
5506
|
+
policy: "seed";
|
|
5507
|
+
note: string;
|
|
5508
|
+
};
|
|
5509
|
+
relatedProducts: {
|
|
5510
|
+
target: string;
|
|
5511
|
+
policy: "seed";
|
|
5512
|
+
note: string;
|
|
5513
|
+
};
|
|
5514
|
+
stores: {
|
|
5515
|
+
target: string;
|
|
5516
|
+
policy: "seed";
|
|
5517
|
+
note: string;
|
|
5518
|
+
};
|
|
5519
|
+
}>;
|
|
5520
|
+
readonly 'blog-author': NetsuiteFieldProvider<{
|
|
5521
|
+
netsuiteId: {
|
|
5522
|
+
before: string;
|
|
5523
|
+
target: string;
|
|
5524
|
+
policy: "always";
|
|
5525
|
+
conditional: true;
|
|
5526
|
+
note: string;
|
|
5527
|
+
};
|
|
5528
|
+
name: {
|
|
5529
|
+
before: string;
|
|
5530
|
+
target: string;
|
|
5531
|
+
policy: "always";
|
|
5532
|
+
conditional: true;
|
|
5533
|
+
note: string;
|
|
5534
|
+
};
|
|
5535
|
+
status: {
|
|
5536
|
+
before: string;
|
|
5537
|
+
target: string;
|
|
5538
|
+
policy: "always";
|
|
5539
|
+
conditional: true;
|
|
5540
|
+
note: string;
|
|
5541
|
+
};
|
|
5542
|
+
slug: {
|
|
5543
|
+
target: string;
|
|
5544
|
+
policy: "seed";
|
|
5545
|
+
identity: true;
|
|
5546
|
+
note: string;
|
|
5547
|
+
caution: string;
|
|
5548
|
+
};
|
|
5549
|
+
bio: {
|
|
5550
|
+
target: string;
|
|
5551
|
+
policy: "seed";
|
|
5552
|
+
note: string;
|
|
5553
|
+
};
|
|
5554
|
+
seoTitle: {
|
|
5555
|
+
target: string;
|
|
5556
|
+
policy: "seed";
|
|
5557
|
+
note: string;
|
|
5558
|
+
};
|
|
5559
|
+
seoDescription: {
|
|
5560
|
+
target: string;
|
|
5561
|
+
policy: "seed";
|
|
5562
|
+
note: string;
|
|
5563
|
+
};
|
|
5564
|
+
seoKeywords: {
|
|
5565
|
+
target: string;
|
|
5566
|
+
policy: "seed";
|
|
5567
|
+
note: string;
|
|
5568
|
+
};
|
|
5569
|
+
role: {
|
|
5570
|
+
target: string;
|
|
5571
|
+
policy: "seed";
|
|
5572
|
+
note: string;
|
|
5573
|
+
};
|
|
5574
|
+
avatar: {
|
|
5575
|
+
target: string;
|
|
5576
|
+
policy: "seed";
|
|
5577
|
+
note: string;
|
|
5578
|
+
};
|
|
5579
|
+
}>;
|
|
5580
|
+
readonly 'blog-category': NetsuiteFieldProvider<{
|
|
5581
|
+
netsuiteId: {
|
|
5582
|
+
before: string;
|
|
5583
|
+
target: string;
|
|
5584
|
+
policy: "always";
|
|
5585
|
+
conditional: true;
|
|
5586
|
+
note: string;
|
|
5587
|
+
};
|
|
5588
|
+
name: {
|
|
5589
|
+
before: string;
|
|
5590
|
+
target: string;
|
|
5591
|
+
policy: "always";
|
|
5592
|
+
conditional: true;
|
|
5593
|
+
note: string;
|
|
5594
|
+
};
|
|
5595
|
+
status: {
|
|
5596
|
+
before: string;
|
|
5597
|
+
target: string;
|
|
5598
|
+
policy: "always";
|
|
5599
|
+
conditional: true;
|
|
5600
|
+
note: string;
|
|
5601
|
+
};
|
|
5602
|
+
slug: {
|
|
5603
|
+
target: string;
|
|
5604
|
+
policy: "seed";
|
|
5605
|
+
identity: true;
|
|
5606
|
+
note: string;
|
|
5607
|
+
caution: string;
|
|
5608
|
+
};
|
|
5609
|
+
description: {
|
|
5610
|
+
target: string;
|
|
5611
|
+
policy: "seed";
|
|
5612
|
+
note: string;
|
|
5613
|
+
};
|
|
5614
|
+
seoTitle: {
|
|
5615
|
+
target: string;
|
|
5616
|
+
policy: "seed";
|
|
5617
|
+
note: string;
|
|
5618
|
+
};
|
|
5619
|
+
seoDescription: {
|
|
5620
|
+
target: string;
|
|
5621
|
+
policy: "seed";
|
|
5622
|
+
note: string;
|
|
5623
|
+
};
|
|
5624
|
+
seoKeywords: {
|
|
5625
|
+
target: string;
|
|
5626
|
+
policy: "seed";
|
|
5627
|
+
note: string;
|
|
5628
|
+
};
|
|
5629
|
+
image: {
|
|
5630
|
+
target: string;
|
|
5631
|
+
policy: "seed";
|
|
5632
|
+
note: string;
|
|
5633
|
+
};
|
|
5634
|
+
sortOrder: {
|
|
5635
|
+
target: string;
|
|
5636
|
+
policy: "seed";
|
|
5637
|
+
note: string;
|
|
5638
|
+
};
|
|
5639
|
+
}>;
|
|
5640
|
+
};
|
|
5641
|
+
type NetsuiteOwnedEntity = keyof typeof BY_ENTITY;
|
|
5642
|
+
declare const NETSUITE_OWNED_FIELDS: Record<NetsuiteOwnedEntity, readonly string[]>;
|
|
5643
|
+
declare const isNetsuiteOwned: (entity: NetsuiteOwnedEntity, field: string) => boolean;
|
|
5644
|
+
type SyncRisk = 'overwritten' | 'identity' | 'seeded' | 'ours';
|
|
5645
|
+
declare const netsuiteFieldRisk: (entity: NetsuiteOwnedEntity, field: string, linked?: boolean) => SyncRisk;
|
|
5646
|
+
declare const netsuiteFieldConditional: (entity: NetsuiteOwnedEntity, field: string) => boolean;
|
|
5647
|
+
interface FieldSource {
|
|
5648
|
+
now?: string;
|
|
5649
|
+
after?: string;
|
|
5650
|
+
}
|
|
5651
|
+
declare const netsuiteFieldSource: (entity: NetsuiteOwnedEntity, field: string) => FieldSource | undefined;
|
|
5652
|
+
declare const netsuiteFieldNote: (entity: NetsuiteOwnedEntity, field: string) => string | undefined;
|
|
5653
|
+
declare const netsuiteFieldCaution: (entity: NetsuiteOwnedEntity, field: string) => string | undefined;
|
|
5654
|
+
interface NetsuiteRelationSource {
|
|
5655
|
+
field: string;
|
|
5656
|
+
note?: string;
|
|
5657
|
+
}
|
|
5658
|
+
declare const netsuiteRelationSource: (groupKey: string) => NetsuiteRelationSource | undefined;
|
|
5659
|
+
declare const NETSUITE_RELATION_GROUPS: readonly string[];
|
|
5660
|
+
|
|
5661
|
+
/**
|
|
5662
|
+
* Which system owns an entity's data. Everything is NetSuite except the podcast, which is pulled from
|
|
5663
|
+
* the Apple Podcasts lookup feed — the flag must name the real owner, not "NetSuite".
|
|
5664
|
+
*/
|
|
5665
|
+
declare const syncOwnerFor: (entity: NetsuiteOwnedEntity) => string;
|
|
5666
|
+
|
|
5667
|
+
declare const NetsuiteEventStateEnum: {
|
|
5668
|
+
readonly APPLIED: "applied";
|
|
5669
|
+
readonly DEFERRED: "deferred";
|
|
5670
|
+
readonly FAILED: "failed";
|
|
5671
|
+
readonly SKIPPED: "skipped";
|
|
5672
|
+
};
|
|
5673
|
+
type NetsuiteEventStateEnum = (typeof NetsuiteEventStateEnum)[keyof typeof NetsuiteEventStateEnum];
|
|
5674
|
+
declare const NETSUITE_EVENT_STATE_VALUES: ("applied" | "deferred" | "failed" | "skipped")[];
|
|
5675
|
+
interface INetsuiteEvent extends BaseEntity {
|
|
5676
|
+
eventId: string;
|
|
5677
|
+
recordType: string;
|
|
5678
|
+
recordId: string;
|
|
5679
|
+
action?: string;
|
|
5680
|
+
sourceId?: string;
|
|
5681
|
+
orderId?: string;
|
|
5682
|
+
state: NetsuiteEventStateEnum;
|
|
5683
|
+
detail?: string;
|
|
5684
|
+
receivedAt: Date;
|
|
5685
|
+
appliedAt?: Date;
|
|
5686
|
+
attempts?: number;
|
|
5687
|
+
lastAttemptAt?: Date;
|
|
5688
|
+
}
|
|
5689
|
+
interface INetsuiteQueueEntry {
|
|
5690
|
+
key: string;
|
|
5691
|
+
label: string;
|
|
5692
|
+
state: "queued" | "running";
|
|
5693
|
+
runsInSeconds: number | null;
|
|
5694
|
+
runningForSeconds: number | null;
|
|
5695
|
+
}
|
|
5696
|
+
|
|
5697
|
+
declare const TaxRateSourceEnum: {
|
|
5698
|
+
readonly GROUP: "group";
|
|
5699
|
+
readonly ORDERS: "orders";
|
|
5700
|
+
};
|
|
5701
|
+
type TaxRateSourceEnum = (typeof TaxRateSourceEnum)[keyof typeof TaxRateSourceEnum];
|
|
5702
|
+
declare const TAX_RATE_SOURCE_VALUES: ("orders" | "group")[];
|
|
5703
|
+
interface ITaxRate extends BaseEntity {
|
|
5704
|
+
key: string;
|
|
5705
|
+
city: string;
|
|
5706
|
+
zip: string;
|
|
5707
|
+
state: string;
|
|
5708
|
+
county?: string;
|
|
5709
|
+
rate: number;
|
|
5710
|
+
netsuiteGroupId: string;
|
|
5711
|
+
netsuiteGroupName: string;
|
|
5712
|
+
source: TaxRateSourceEnum;
|
|
5713
|
+
syncedAt: Date;
|
|
5714
|
+
}
|
|
5715
|
+
|
|
5716
|
+
interface TaxSyncResult {
|
|
5717
|
+
groups: number;
|
|
5718
|
+
rates: number;
|
|
5719
|
+
overlaps: number;
|
|
5720
|
+
observed: number;
|
|
5721
|
+
corrected: number;
|
|
5722
|
+
removed: number;
|
|
5723
|
+
states: string[];
|
|
5724
|
+
}
|
|
5725
|
+
interface PromotionSyncResult {
|
|
5726
|
+
found: number;
|
|
5727
|
+
written: number;
|
|
5728
|
+
codes: string[];
|
|
5729
|
+
skipped: Array<{
|
|
5730
|
+
code: string;
|
|
5731
|
+
name: string;
|
|
5732
|
+
reason: string;
|
|
5733
|
+
}>;
|
|
5734
|
+
deactivated: string[];
|
|
5735
|
+
}
|
|
5736
|
+
interface CategoryImportSummary {
|
|
5737
|
+
received: number;
|
|
5738
|
+
created: number;
|
|
5739
|
+
existing: number;
|
|
5740
|
+
linked: number;
|
|
5741
|
+
skipped: number;
|
|
5742
|
+
missingParents: string[];
|
|
5743
|
+
}
|
|
5744
|
+
interface NetsuiteLinkResult {
|
|
5745
|
+
key: string;
|
|
5746
|
+
netsuiteId: string;
|
|
5747
|
+
created: boolean;
|
|
5748
|
+
}
|
|
5749
|
+
|
|
5750
|
+
declare const PushCheckStatusEnum: {
|
|
5751
|
+
readonly PASS: "pass";
|
|
5752
|
+
readonly WARN: "warn";
|
|
5753
|
+
readonly FAIL: "fail";
|
|
5754
|
+
};
|
|
5755
|
+
type PushCheckStatusEnum = (typeof PushCheckStatusEnum)[keyof typeof PushCheckStatusEnum];
|
|
5756
|
+
declare const PUSH_CHECK_STATUS_VALUES: ("pass" | "warn" | "fail")[];
|
|
5757
|
+
interface PushCheck {
|
|
5758
|
+
key: string;
|
|
5759
|
+
label: string;
|
|
5760
|
+
status: PushCheckStatusEnum;
|
|
5761
|
+
detail?: string;
|
|
5762
|
+
fixable?: boolean;
|
|
5763
|
+
}
|
|
5764
|
+
interface PushField {
|
|
5765
|
+
label: string;
|
|
5766
|
+
value: string;
|
|
5767
|
+
note?: string;
|
|
5768
|
+
}
|
|
5769
|
+
interface NetsuitePreviewLine {
|
|
5770
|
+
kind: "item" | "fee" | "addon";
|
|
5771
|
+
name: string;
|
|
5772
|
+
sku?: string;
|
|
5773
|
+
netsuiteItemId?: string;
|
|
5774
|
+
matchedBy?: "stored id" | "SKU lookup";
|
|
5775
|
+
quantity: number;
|
|
5776
|
+
rate: number;
|
|
5777
|
+
amount: number;
|
|
5778
|
+
problem?: string;
|
|
5779
|
+
}
|
|
5780
|
+
interface NetsuiteReceipt {
|
|
5781
|
+
id: string;
|
|
5782
|
+
recordType: string;
|
|
5783
|
+
externalId: string;
|
|
5784
|
+
tranId?: string;
|
|
5785
|
+
statusText?: string;
|
|
5786
|
+
total?: number;
|
|
5787
|
+
entityId?: string;
|
|
5788
|
+
entityLabel?: string;
|
|
5789
|
+
createdDate?: string;
|
|
5790
|
+
httpStatus?: number;
|
|
5791
|
+
recordUrl?: string;
|
|
5792
|
+
pushedAt: Date;
|
|
5793
|
+
sentLines?: Array<{
|
|
5794
|
+
kind: "item" | "fee" | "addon";
|
|
5795
|
+
sku?: string;
|
|
5796
|
+
name: string;
|
|
5797
|
+
netsuiteItemId?: string;
|
|
5798
|
+
quantity: number;
|
|
5799
|
+
amount: number;
|
|
5800
|
+
}>;
|
|
5801
|
+
totalMismatch?: {
|
|
5802
|
+
charged: number;
|
|
5803
|
+
landed: number;
|
|
5804
|
+
drift: number;
|
|
5805
|
+
};
|
|
5806
|
+
}
|
|
5807
|
+
interface NetsuiteOrderPreview {
|
|
5808
|
+
orderId: string;
|
|
5809
|
+
recordType: "salesOrder" | "estimate";
|
|
5810
|
+
recordLabel: string;
|
|
5811
|
+
alreadyPushed?: NetsuiteReceipt;
|
|
5812
|
+
lastError?: {
|
|
5813
|
+
message: string;
|
|
5814
|
+
failedAt?: string;
|
|
5815
|
+
recordType?: string;
|
|
5816
|
+
};
|
|
5817
|
+
connection: {
|
|
5818
|
+
configured: boolean;
|
|
5819
|
+
missing: string[];
|
|
5820
|
+
writesEnabled: boolean;
|
|
5821
|
+
account: string;
|
|
5822
|
+
};
|
|
5823
|
+
writesEnabled: boolean;
|
|
5824
|
+
customer: {
|
|
5825
|
+
email: string;
|
|
5826
|
+
netsuiteId?: string;
|
|
5827
|
+
label?: string;
|
|
5828
|
+
willCreate: boolean;
|
|
5829
|
+
};
|
|
5830
|
+
lines: NetsuitePreviewLine[];
|
|
5831
|
+
fields?: PushField[];
|
|
5832
|
+
totals: {
|
|
5833
|
+
netsuite: number;
|
|
5834
|
+
order: number;
|
|
5835
|
+
matches: boolean;
|
|
5836
|
+
currencyCode: string;
|
|
5837
|
+
};
|
|
5838
|
+
checks: PushCheck[];
|
|
5839
|
+
canSend: boolean;
|
|
5840
|
+
warnings: string[];
|
|
5841
|
+
blockers: string[];
|
|
5842
|
+
}
|
|
5843
|
+
interface NetsuiteSyncDefinition {
|
|
5844
|
+
key: string;
|
|
5845
|
+
label: string;
|
|
5846
|
+
recordTypes: string[];
|
|
5847
|
+
supportsSingle: boolean;
|
|
5848
|
+
supportsFull: boolean;
|
|
5849
|
+
heavy: boolean;
|
|
5850
|
+
fields: string[];
|
|
5851
|
+
source: string;
|
|
5852
|
+
}
|
|
5853
|
+
|
|
5854
|
+
interface RevalidationResult {
|
|
5855
|
+
domain: string;
|
|
5856
|
+
url: string;
|
|
5857
|
+
ok: boolean;
|
|
5858
|
+
error: string | null;
|
|
5859
|
+
durationMs: number;
|
|
5860
|
+
at: string;
|
|
5861
|
+
}
|
|
5862
|
+
interface CacheStoreTarget {
|
|
5863
|
+
id: string;
|
|
5864
|
+
name: string;
|
|
5865
|
+
domain: string;
|
|
5866
|
+
reachable: boolean;
|
|
5867
|
+
lastResult: RevalidationResult | null;
|
|
5868
|
+
}
|
|
5869
|
+
interface CacheStatus {
|
|
5870
|
+
secretConfigured: boolean;
|
|
5871
|
+
urlOverride: string | null;
|
|
5872
|
+
urlTemplate: string | null;
|
|
5873
|
+
tags: string[];
|
|
5874
|
+
stores: CacheStoreTarget[];
|
|
5875
|
+
}
|
|
5876
|
+
|
|
1447
5877
|
interface CheckoutAddressInput {
|
|
1448
5878
|
addressLine1: string;
|
|
1449
5879
|
addressLine2?: string;
|
|
@@ -1501,7 +5931,7 @@ declare const NotificationTypeEnum: {
|
|
|
1501
5931
|
readonly QUOTE_REQUESTED: "QUOTE_REQUESTED";
|
|
1502
5932
|
};
|
|
1503
5933
|
type NotificationTypeEnum = (typeof NotificationTypeEnum)[keyof typeof NotificationTypeEnum];
|
|
1504
|
-
declare const NOTIFICATION_TYPE_VALUES: ("REFUND" | "
|
|
5934
|
+
declare const NOTIFICATION_TYPE_VALUES: ("REFUND" | "PAYMENT_FAILED" | "QUOTE_REQUESTED" | "ORDER_RECEIVED" | "ORDER_CANCELLED" | "PAYMENT_SUCCEEDED" | "ORDER_STATUS")[];
|
|
1505
5935
|
interface INotification extends BaseEntity {
|
|
1506
5936
|
type: NotificationTypeEnum;
|
|
1507
5937
|
title: string;
|
|
@@ -1524,4 +5954,4 @@ interface IWishlist extends BaseEntity {
|
|
|
1524
5954
|
items: IWishlistItem[];
|
|
1525
5955
|
}
|
|
1526
5956
|
|
|
1527
|
-
export { ACTIVE_SUBSCRIPTION_CHANNELS, ADMIN_ACTIONS, ADMIN_AUDIT_ACTIONS, ADMIN_RESOURCES, ADMIN_RESOURCE_LIST, ALL_STORES, AWAITING_PAYMENT_STATUSES, type AddonAmountInput, type AddonSelectionRef, type ApiResponse, type BaseEntity, CAMPAIGN_RECIPIENT_STATUS_VALUES, CAMPAIGN_STATUS_VALUES, CART_STATUS_VALUES, CONFIGURATOR_CONDITION_TYPE_VALUES, CONFIGURATOR_EFFECT_TYPE_VALUES, CONFIGURATOR_SELECT_MODE_VALUES, CONFIGURATOR_SOURCE_VALUES, CampaignRecipientStatusEnum, CampaignStatusEnum, type CartIssue, type CartIssueType, CartIssueTypes, CartStatusEnum, type CartValidation, type CheckoutAddressInput, type CheckoutPayload, type CheckoutResult, ConfiguratorConditionTypeEnum, ConfiguratorEffectTypeEnum, ConfiguratorErrorCodeEnum, type ConfiguratorEvalContext, type ConfiguratorEvalError, type ConfiguratorEvalResult, ConfiguratorSelectModeEnum, type ConfiguratorSelections, ConfiguratorSourceEnum, DEFAULT_SUBSCRIPTION_TOPICS, DiscountTypeEnum, EMAIL_TEMPLATE_EVENT_VALUES, EMAIL_TEMPLATE_VARIABLES_BY_EVENT, EMPTY_ACCESS, type EffectiveAccess, EmailTemplateEventEnum, FEE_APPLIES_TO_VALUES, FeeAppliesToEnum, 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
|
|
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 };
|