{ "version": 3, "sources": ["libs/billing/src/lib/tax-rate/tax-rate.ts", "libs/billing/src/lib/tax-rate/tax-rate.service.ts"], "sourcesContent": ["import { TaxRateInterface } from '@vendasta/billing';\n\nexport const isTaxRate = (tr: TaxRate | undefined): tr is TaxRate => {\n return !!tr;\n};\n\nexport interface TaxRate {\n id?: string;\n merchantId?: string;\n countryCode?: string;\n stateCode?: string;\n name?: string;\n description?: string;\n percentage?: number;\n accountingSystemId?: string;\n}\n\nexport function taxRateFromApi(apiTaxRate: TaxRateInterface): TaxRate {\n return {\n id: apiTaxRate.id || '',\n merchantId: apiTaxRate.merchantId || '',\n countryCode: apiTaxRate.countryCode || '',\n stateCode: apiTaxRate.stateCode || '',\n name: apiTaxRate.name || '',\n description: apiTaxRate.description || '',\n percentage: apiTaxRate.percentage || 0.0,\n accountingSystemId: apiTaxRate.accountingSystemId || '',\n };\n}\n\nexport interface ListTaxRateFilter {\n merchantId?: string;\n includeArchived?: boolean;\n}\n\nexport interface CalculateTaxResponse {\n taxableAmount: number;\n taxRates: TaxRate[];\n}\n\nexport interface LineItem {\n sku: string;\n amount: number;\n}\n\nexport interface AppliedTax {\n amount: number;\n taxRateId: string;\n name: string;\n percentage: number;\n description: string;\n}\n\nexport interface CalculateLineItemsTaxResponse {\n appliedTaxes: AppliedTax[];\n lineItemTaxes: LineItem[];\n totalTaxableAmount: number;\n taxRates: TaxRate[];\n}\n", "import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport {\n ArchiveTaxRequest,\n CalculateLineItemTaxesRequest,\n CalculateTaxRequest,\n CreateTaxRequest,\n GetMultiTaxRequest,\n ListTaxRequest,\n PagedRequestOptions,\n TaxApiService,\n UpdateTaxRequest,\n CalculateLineItemTaxesResponse,\n} from '@vendasta/billing';\nimport {\n CalculateLineItemsTaxResponse,\n CalculateTaxResponse,\n ListTaxRateFilter,\n TaxRate,\n taxRateFromApi,\n LineItem,\n} from './tax-rate';\n\n@Injectable({ providedIn: 'root' })\nexport class TaxRateService {\n constructor(private taxRateApi: TaxApiService) {}\n\n // NOTE: use calculateLineItems for more accurate precision\n calculate(merchantId: string, customerId: string, amount: number): Observable {\n const r = new CalculateTaxRequest({\n merchantId: merchantId,\n customerId: customerId,\n amount: amount,\n });\n return this.taxRateApi.calculate(r).pipe(\n map((response) => {\n const taxRates = (response.taxRates || []).map((item) => taxRateFromApi(item));\n return {\n taxableAmount: response.taxableAmount || 0,\n taxRates: taxRates,\n };\n }),\n );\n }\n\n // calculateLineItems calculates tax per line item and in total with a precision of 4 decimal places\n calculateLineItems(\n merchantId: string,\n customerId: string,\n lineItems: LineItem[],\n ): Observable {\n const r = new CalculateLineItemTaxesRequest({\n merchantId: merchantId,\n customerId: customerId,\n lineItems: lineItems,\n });\n return this.taxRateApi.calculateLineItems(r).pipe(\n map((response) => {\n return this.buildCalculateLineItemsTaxResponse(response);\n }),\n catchError(() => {\n return of({} as CalculateLineItemsTaxResponse);\n }),\n );\n }\n\n private buildCalculateLineItemsTaxResponse(response: CalculateLineItemTaxesResponse) {\n const taxRates = (response.taxRates || []).map((item) => taxRateFromApi(item));\n const lineItemTaxes = (response.lineItemTaxes || []).map((item) => {\n return {\n sku: item.sku,\n amount: item.taxableAmount,\n };\n });\n return {\n appliedTaxes: response.appliedTaxes || [],\n lineItemTaxes: lineItemTaxes,\n totalTaxableAmount: response.totalTaxableAmount || 0,\n taxRates: taxRates,\n };\n }\n\n create(\n merchantId: string,\n countryCode: string,\n stateCode: string,\n name: string,\n description: string,\n percentage: number,\n accountingSystemId: string,\n ): Observable> {\n const r = new CreateTaxRequest({\n merchantId: merchantId,\n countryCode: countryCode,\n stateCode: stateCode,\n name: name,\n description: description,\n percentage: percentage,\n accountingSystemId: accountingSystemId,\n });\n\n return this.taxRateApi.create(r);\n }\n\n update(\n merchantId: string,\n id: string,\n countryCode: string,\n stateCode: string,\n name: string,\n description: string,\n percentage: number,\n accountingSystemId: string,\n ): Observable> {\n const r = new UpdateTaxRequest({\n merchantId: merchantId,\n id: id,\n countryCode: countryCode,\n stateCode: stateCode,\n name: name,\n description: description,\n percentage: percentage,\n accountingSystemId: accountingSystemId,\n });\n\n return this.taxRateApi.update(r);\n }\n\n list(filters: ListTaxRateFilter, cursor: string, pageSize: number): Observable> {\n const req = new ListTaxRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.taxRateApi.list(req).pipe(\n map((response) => {\n const taxRates = (response.taxRates || []).map((item) => taxRateFromApi(item));\n return new PagedResponse(taxRates, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n getMulti(merchantId: string, ids: string[]): Observable {\n const req = new GetMultiTaxRequest({\n merchantId: merchantId,\n ids: ids,\n });\n return this.taxRateApi.getMulti(req).pipe(\n map((response) => {\n const taxRates = (response.taxRates || []).map((item) => taxRateFromApi(item));\n return taxRates;\n }),\n );\n }\n\n archive(merchantId: string, id: string): Observable> {\n const req = new ArchiveTaxRequest({\n merchantId,\n id,\n });\n return this.taxRateApi.archive(req);\n }\n}\n"], "mappings": "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", "names": ["isTaxRate", "tr", "taxRateFromApi", "apiTaxRate", "id", "merchantId", "countryCode", "stateCode", "name", "description", "percentage", "accountingSystemId", "TaxRateService", "constructor", "taxRateApi", "calculate", "merchantId", "customerId", "amount", "r", "CalculateTaxRequest", "pipe", "map", "response", "taxRates", "item", "taxRateFromApi", "taxableAmount", "calculateLineItems", "lineItems", "CalculateLineItemTaxesRequest", "buildCalculateLineItemsTaxResponse", "catchError", "of", "lineItemTaxes", "sku", "appliedTaxes", "totalTaxableAmount", "create", "countryCode", "stateCode", "name", "description", "percentage", "accountingSystemId", "CreateTaxRequest", "update", "id", "UpdateTaxRequest", "list", "filters", "cursor", "pageSize", "req", "ListTaxRequest", "pagingOptions", "PagedRequestOptions", "PagedResponse", "pagingMetadata", "nextCursor", "hasMore", "getMulti", "ids", "GetMultiTaxRequest", "archive", "ArchiveTaxRequest", "\u0275\u0275inject", "TaxApiService", "factory", "\u0275fac", "providedIn", "_TaxRateService"] }