UNPKG

@simpleapps-com/augur-api

Version:

TypeScript client library for Augur microservices API endpoints

123 lines 5.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createRatesResource = createRatesResource; exports.createRatesDataResource = createRatesDataResource; const schemas_1 = require("../schemas"); /** * Creates the rates resource methods * OpenAPI Path: /rates → rates.* * @description Tax calculation and rate computation for transaction lines and addresses */ function createRatesResource(executeRequest) { return { /** * Calculate tax rates for transaction lines * * @fullPath api.avalara.rates.create * @service avalara * @domain tax-calculation * @dataMethod ratesData.create - returns only the tax calculation data without metadata * @discoverable true * @searchTerms ["tax", "rates", "calculate", "avalara", "sales tax", "vat", "compliance", "transaction", "create"] * @relatedEndpoints ["api.commerce.orders.create", "api.commerce.cartHeaders.checkout", "api.items.pricing.calculate", "api.customers.addresses.validate"] * @commonPatterns ["Calculate sales tax", "Get tax rates", "Tax compliance", "E-commerce tax calculation", "Multi-jurisdiction tax"] * @workflow ["e-commerce-checkout", "order-processing", "tax-compliance", "invoice-generation", "financial-reporting"] * @prerequisites ["Valid transaction data", "Public bearer token", "x-site-id header", "Valid addresses", "Product/service lines"] * @nextSteps ["Apply calculated tax to order", "Store tax calculation results", "Generate compliant invoice", "Submit tax returns"] * @businessRules ["Requires valid addresses", "Supports multiple tax jurisdictions", "Real-time calculation", "Compliance with local tax laws", "Handles exemptions and special rates"] * @functionalArea "tax-and-compliance" * @crossSite "Multi-site tax calculation support" * @caching "Cache for 1 hour for identical requests, tax rates change infrequently" * @performance "Optimize by batching multiple line items, use address validation for accuracy" * * @param params Tax calculation request parameters including lines, addresses, and transaction details * @returns Promise<RatesResponse> Complete tax calculation results with rates, amounts, and jurisdiction details * * @example * ```typescript * // Calculate tax for a simple sale * const taxRequest = { * lines: [{ * amount: 100.00, * description: 'Widget', * quantity: 1 * }], * addresses: { * shipTo: { * line1: '123 Main St', * city: 'Irvine', * region: 'CA', * country: 'US', * postalCode: '92602' * } * }, * type: 'SalesOrder', * date: '2024-01-15', * companyCode: 'DEFAULT' * }; * * const response = await client.rates.create(taxRequest); * console.log(response.data.totalTax); // Total tax amount * console.log(response.data.lines); // Tax details per line * * // Get just the calculation result * const taxResult = await client.ratesData.create(taxRequest); * console.log(taxResult.totalTax); // Direct access to tax amount * * // Multi-line transaction with shipping * const complexRequest = { * lines: [ * { amount: 50.00, description: 'Product A', taxCode: 'P0000000' }, * { amount: 30.00, description: 'Product B', taxCode: 'P0000000' }, * { amount: 10.00, description: 'Shipping', taxCode: 'FR010000' } * ], * addresses: { * shipFrom: { * line1: '100 Warehouse Blvd', * city: 'Los Angeles', * region: 'CA', * country: 'US', * postalCode: '90210' * }, * shipTo: { * line1: '456 Customer Ave', * city: 'New York', * region: 'NY', * country: 'US', * postalCode: '10001' * } * }, * type: 'SalesInvoice', * customerCode: 'CUST001', * commit: true * }; * * const complexResult = await client.ratesData.create(complexRequest); * ``` */ create: async (params) => { return executeRequest({ method: 'POST', path: '/rates', responseSchema: schemas_1.RatesResponseSchema, }, params); }, }; } /** * Creates the ratesData resource methods (data-only versions) */ function createRatesDataResource(rates) { return { /** * Calculate tax rates and return calculation result data only * @param params Tax calculation request parameters * @returns Promise<TaxCalculationResult> Tax calculation result with rates and amounts */ create: async (params) => { const response = await rates.create(params); return response.data; }, }; } //# sourceMappingURL=rates.js.map