
* feat: ✨ add tax-classes-fetcher * refactor: ♻️ add "byId" suffix to crud-settings & remove upsert * feat: ✨ add updateMany method to CrudSettingsManager * feat: ✨ add avatax & taxjar tax-code-map-repository * refactor: 🚚 move to tax-code directory * feat: ✨ add getTaxCodes methods to provider clients * refactor: ♻️ extract taxClass and taxCode schema * refactor: 🚚 tax-code-map -> tax-code-match * feat: ✨ add taxjar-tax-code.service * feat: ✨ add avatax-tax-code.service * feat: ✨ add taxClass to graphql fragment * feat: ✨ use tax codes in calculate taxes * fix: 🐛 undefined tax code bug & add tests * build: 👷 add changeset * Update avatax-tax-code-mapper.ts * feat: ✨ add routers & get rid of adapters & mappers * refactor: ♻️ logger location -> name * refactor: ♻️ clean up & rephrase logs * refactor: ♻️ remove __typename from query * docs: 💡 make comments about tax codes more informative * refactor: ♻️ use resolveOptionalOrThrow on tax code description * refactor: ♻️ rename tax-codes -> tax-classes, move and rename tax-code-schema * refactor: 🚚 ctx -> authData * refactor: 🚚 createUrqlClientFromCtx -> createUrqlClientFromAuthdata * refactor: ♻️ dont spread ctx * docs: 💡 add comment about fallback tax code * refactor: ♻️ remove ..ctx * fix: 🐛 use createGraphQLClient * feat: tax code matcher ui (#658) * feat: ✨ use tax codes in calculate taxes * feat: ✨ add getTaxCodes methods to provider clients * feat: ✨ add matcher tables * feat: ✨ add log errors middleware * fix: 🔊 fix misleading logs * fix: 🐛 ctx appToken bug * feat: ✨ add Select override with wrapping label * feat: ✨ pre-select match * docs: 💡 add comments about first connection * docs: 💡 add comment about redirect * refactor: 🔥 duplicate file * feat: ✨ add AppCard to tables * feat: ✨ add _error to breadcrumbs exceptions * fix: 🐛 value not set on data * feat: 🥅 add error for no channels configured * fix: 🐛 replace update with upsert * refactor: 🚚 channel-configuration-settings to repository * fix: 🐛 updating a channel configuration * fix: 🧪 fix wrong mock * fix: 🐛 duplicating configs * Update cool-turtles-reflect.md
30 lines
1 KiB
TypeScript
30 lines
1 KiB
TypeScript
import Avatax from "avatax";
|
|
import { createLogger, Logger } from "../../lib/logger";
|
|
import { FetchResult } from "avatax/lib/utils/fetch_result";
|
|
import { TaxCodeModel } from "avatax/lib/models/TaxCodeModel";
|
|
|
|
export class AvataxClientTaxCodeService {
|
|
// * These are the tax codes that we don't want to show to the user. For some reason, Avatax has them as active.
|
|
private readonly notSuitableKeys = ["Expired Tax Code - Do Not Use"];
|
|
private logger: Logger;
|
|
constructor(private client: Avatax) {
|
|
this.logger = createLogger({ name: "AvataxClientTaxCodeService" });
|
|
}
|
|
|
|
private filterOutInvalid(response: FetchResult<TaxCodeModel>) {
|
|
return response.value.filter((taxCode) => {
|
|
return (
|
|
taxCode.isActive &&
|
|
taxCode.description &&
|
|
!this.notSuitableKeys.includes(taxCode.description)
|
|
);
|
|
});
|
|
}
|
|
|
|
async getTaxCodes() {
|
|
// * If we want to do filtering on the front-end, we can use the `filter` parameter.
|
|
const result = await this.client.listTaxCodes({});
|
|
|
|
return this.filterOutInvalid(result);
|
|
}
|
|
}
|