Skip to main content

ProductVariant

ProductVariant​

A ProductVariant represents a single stock keeping unit (SKU) in the store's inventory. Whereas a Product is a "container" of variants, the variant itself holds the data on price, tax category etc. When one adds items to their cart, they are adding ProductVariants, not Products.

Signature
class ProductVariant extends VendureEntity implements Translatable, HasCustomFields, SoftDeletable, ChannelAware {
constructor(input?: DeepPartial<ProductVariant>)
@Column({ type: Date, nullable: true })
deletedAt: Date | null;
name: LocaleString;
@Column({ default: true })
enabled: boolean;
@Column()
sku: string;
listPrice: number;
listPriceIncludesTax: boolean;
currencyCode: CurrencyCode;
price: number
priceWithTax: number
taxRateApplied: TaxRate;
@Index()
@ManyToOne(type => Asset, { onDelete: 'SET NULL' })
featuredAsset: Asset;
@OneToMany(type => ProductVariantAsset, productVariantAsset => productVariantAsset.productVariant, {
onDelete: 'SET NULL',
})
assets: ProductVariantAsset[];
@Index()
@ManyToOne(type => TaxCategory)
taxCategory: TaxCategory;
@OneToMany(type => ProductVariantPrice, price => price.variant, { eager: true })
productVariantPrices: ProductVariantPrice[];
@OneToMany(type => ProductVariantTranslation, translation => translation.base, { eager: true })
translations: Array<Translation<ProductVariant>>;
@Index()
@ManyToOne(type => Product, product => product.variants)
product: Product;
@EntityId({ nullable: true })
productId: ID;
@Column({ default: 0 })
outOfStockThreshold: number;
@Column({ default: true })
useGlobalOutOfStockThreshold: boolean;
@Column({ type: 'varchar', default: GlobalFlag.INHERIT })
trackInventory: GlobalFlag;
@OneToMany(type => StockLevel, stockLevel => stockLevel.productVariant)
stockLevels: StockLevel[];
@OneToMany(type => StockMovement, stockMovement => stockMovement.productVariant)
stockMovements: StockMovement[];
@ManyToMany(type => ProductOption)
@JoinTable()
options: ProductOption[];
@ManyToMany(type => FacetValue)
@JoinTable()
facetValues: FacetValue[];
@Column(type => CustomProductVariantFields)
customFields: CustomProductVariantFields;
@ManyToMany(type => Collection, collection => collection.productVariants)
collections: Collection[];
@ManyToMany(type => Channel)
@JoinTable()
channels: Channel[];
}

constructor​

method
(input?: DeepPartial<ProductVariant>) => ProductVariant

deletedAt​

property
Date | null

name​

property
LocaleString

enabled​

property
boolean

sku​

property
string

listPrice​

property
number

listPriceIncludesTax​

property
boolean

currencyCode​

property

price​

property
number

priceWithTax​

property
number

taxRateApplied​

property

featuredAsset​

property

assets​

property
ProductVariantAsset[]

taxCategory​

property

productVariantPrices​

translations​

property
Array<Translation<ProductVariant>>

product​

property

productId​

property

outOfStockThreshold​

property
number

Specifies the value of stockOnHand at which the ProductVariant is considered out of stock.

useGlobalOutOfStockThreshold​

property
boolean

When true, the outOfStockThreshold value will be taken from the GlobalSettings and the value set on this ProductVariant will be ignored.

trackInventory​

property
GlobalFlag

stockLevels​

property

stockMovements​

property

options​

property

facetValues​

property

customFields​

property
CustomProductVariantFields

collections​

property

channels​

property