ProductPriceApplicator
ProductPriceApplicator
This helper is used to apply the correct price to a ProductVariant based on the current context
including active Channel, any current Order, etc. If you use the TransactionalConnection to
directly query ProductVariants, you will find that the price and priceWithTax properties will
always be 0 until you use the applyChannelPriceAndTax() method:
Example
export class MyCustomService {
constructor(private connection: TransactionalConnection,
private productPriceApplicator: ProductPriceApplicator) {}
getVariant(ctx: RequestContext, id: ID) {
const productVariant = await this.connection
.getRepository(ctx, ProductVariant)
.findOne(id, { relations: ['taxCategory'] });
await this.productPriceApplicator
.applyChannelPriceAndTax(productVariant, ctx);
return productVariant;
}
}
Signature
class ProductPriceApplicator {
constructor(configService: ConfigService, taxRateService: TaxRateService, zoneService: ZoneService, requestCache: RequestContextCacheService)
applyChannelPriceAndTax(variant: ProductVariant, ctx: RequestContext, order?: Order, throwIfNoPriceFound: = false) => Promise<ProductVariant>;
}
constructor
method
(configService: ConfigService, taxRateService: TaxRateService, zoneService: ZoneService, requestCache: RequestContextCacheService) => ProductPriceApplicatorapplyChannelPriceAndTax
method
(variant: ProductVariant, ctx: RequestContext, order?: Order, throwIfNoPriceFound: = false) => Promise<ProductVariant>Populates the price field with the price for the specified channel. Make sure that
the ProductVariant being passed in has its taxCategory relation joined.
If the throwIfNoPriceFound option is set to true, then an error will be thrown if no
price is found for the given Channel.