{ "version": 3, "sources": ["apps/partner-center-client/src/app/core/billing/pricing-adapter.ts", "apps/partner-center-client/src/app/core/billing/pricing.service.ts"], "sourcesContent": ["import { Frequency, Product, ProductPricing, ProductPricingRules, ProductPricingType } from '@galaxy/billing';\nimport { BilledProduct, BillingModel, MarketplaceBillingFrequency, PricingTier } from '@vendasta/shared';\n\nconst pricingTypeToBillingModelMap = {};\npricingTypeToBillingModelMap[ProductPricingType.Standard] = BillingModel.Standard;\npricingTypeToBillingModelMap[ProductPricingType.Stairstep] = BillingModel.Stairstep;\npricingTypeToBillingModelMap[ProductPricingType.Tiered] = BillingModel.Tiered;\n\nconst frequencyMap = {};\nfrequencyMap[Frequency.OneTime] = MarketplaceBillingFrequency.OneTime;\nfrequencyMap[Frequency.Monthly] = MarketplaceBillingFrequency.Monthly;\nfrequencyMap[Frequency.Yearly] = MarketplaceBillingFrequency.Yearly;\n\nexport function pricingOnlyBilledProduct(sku: string, pricing: ProductPricing): BilledProduct {\n return mergePricing(null, pricing);\n}\n\nfunction emptyBilledProduct(): BilledProduct {\n return {\n productId: undefined,\n productName: undefined,\n billingModel: undefined,\n price: undefined,\n notes: undefined,\n iconURL: undefined,\n currency: undefined,\n billingFrequency: undefined,\n pricingTiers: undefined,\n productCategory: undefined,\n commitment: undefined,\n setupFee: undefined,\n };\n}\n\nexport function mergePricing(product: Product, pricing: ProductPricing): BilledProduct {\n const billedProduct = emptyBilledProduct();\n if (product) {\n billedProduct.productName = product.name;\n billedProduct.productId = product.sku;\n billedProduct.iconURL = product.iconUrl;\n }\n if (pricing) {\n billedProduct.billingModel = pricingTypeToBillingModelMap[pricing.pricingType];\n billedProduct.currency = pricing.currency;\n billedProduct.billingFrequency = frequencyMap[pricing.frequency];\n billedProduct.pricingTiers = pricingRulesToTiers(pricing.pricingRules, pricing.isStartingPrice);\n billedProduct.commitment = pricing.commitment;\n billedProduct.setupFee = pricing.setupFee;\n }\n return billedProduct;\n}\n\nfunction pricingRulesToTiers(rules: ProductPricingRules[], isStartingPrice: boolean): PricingTier[] {\n return rules.map((r) => {\n return {\n rangeMin: r.minUnits || 0,\n rangeMax: r.maxUnits,\n price: r.price || 0,\n isStartingPrice: isStartingPrice,\n };\n });\n}\n", "import { Injectable } from '@angular/core';\nimport { BillingService, Currency, ProductPricing } from '@galaxy/billing';\nimport { BilledProduct } from '@vendasta/shared';\nimport { Observable, zip } from 'rxjs';\nimport { filter, map, publishReplay, refCount, shareReplay } from 'rxjs/operators';\nimport { mergePricing } from './pricing-adapter';\n\nexport interface PricingServiceInterface {\n getProductPricing(partnerId: string, level: string): Observable;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class PricingService implements PricingServiceInterface {\n constructor(private billingService: BillingService) {}\n\n getProductPricing(merchantId: string, sku: string): Observable {\n return this.billingService.getMultiProductPricing(merchantId, [sku]).pipe(\n map((pricings) => pricings[sku]),\n shareReplay(1),\n );\n }\n\n getMultiProductPricing(merchantId: string, skus: string[]): Observable<{ [sku: string]: ProductPricing }> {\n return this.billingService.getMultiProductPricing(merchantId, skus).pipe(publishReplay(1), refCount());\n }\n\n getRetailPricing(merchantId: string, currency: Currency, sku: string): Observable {\n return this.getMultiRetailPricing(merchantId, [sku], currency).pipe(\n map((pricings) => pricings[sku]),\n shareReplay(1),\n );\n }\n\n getMultiRetailPricing(\n merchantId: string,\n skus: string[],\n currency?: Currency,\n groupId?: string,\n ): Observable<{ [sku: string]: ProductPricing }> {\n return this.billingService\n .getMultiRetailPricing(merchantId, currency, skus, groupId)\n .pipe(publishReplay(1), refCount());\n }\n\n // Deprecated, use getMultiProductPricing and supply your own app data\n // Note: The numeric \"price\" and \"productCategory\" fields of the BilledProduct are no longer supported\n getBilledProducts(merchantId: string, skus: string[]): Observable {\n return zip(\n this.billingService.listProducts(merchantId, null, { skus: skus }, '', skus.length),\n this.getMultiProductPricing(merchantId, skus),\n ).pipe(\n filter(([products, pricingMap]) => !!products && !!pricingMap),\n map(([products, pricingMap]) => {\n return products.results.map((product) => (product ? mergePricing(product, pricingMap[product.sku]) : null));\n }),\n shareReplay(1),\n );\n }\n}\n"], "mappings": "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", "names": ["pricingTypeToBillingModelMap", "ProductPricingType", "Standard", "BillingModel", "Stairstep", "Tiered", "frequencyMap", "Frequency", "OneTime", "MarketplaceBillingFrequency", "Monthly", "Yearly", "pricingOnlyBilledProduct", "sku", "pricing", "mergePricing", "emptyBilledProduct", "productId", "undefined", "productName", "billingModel", "price", "notes", "iconURL", "currency", "billingFrequency", "pricingTiers", "productCategory", "commitment", "setupFee", "product", "billedProduct", "name", "iconUrl", "pricingType", "frequency", "pricingRulesToTiers", "pricingRules", "isStartingPrice", "rules", "map", "r", "rangeMin", "minUnits", "rangeMax", "maxUnits", "PricingService", "constructor", "billingService", "getProductPricing", "merchantId", "sku", "getMultiProductPricing", "pipe", "map", "pricings", "shareReplay", "skus", "publishReplay", "refCount", "getRetailPricing", "currency", "getMultiRetailPricing", "groupId", "getBilledProducts", "zip", "listProducts", "length", "filter", "products", "pricingMap", "results", "product", "mergePricing", "\u0275\u0275inject", "BillingService", "factory", "\u0275fac", "providedIn", "_PricingService"] }