feat: implement subscription tax calculation and remittance system#448
Merged
Conversation
Add batch create from CSV/JSON, batch update with filtering, batch cancel with reason collection, and batch charge for manual billing runs. - contracts/batch: Added CancelReason enum, BatchFilter struct, enhanced result types with skipped_operations tracking - app/services/batchTransactionService.ts: Full rewrite with 4 operation types, CSV parsers, chunked processing, idempotent retry with backoff, result export, per-item status tracking - app/stores/batchStore.ts: Zustand store with draft management, CSV loading per operation type, execute/retry, export helpers - app/screens/BatchOperationsScreen.tsx: Full UI with operation selector, CSV input, update params/filter modals, cancel reason picker, progress bar, per-item results, export buttons, retry, history - src/screens/ImportScreen.tsx: Added batch operations shortcut banner - src/navigation: Added BatchOperations route to SettingsStack Edge cases: partial batch failure, idempotent retry of failed items, large batch memory management via chunked processing
…tance - Add tax types to contracts/types (TaxJurisdiction, TaxExemption, TaxRemittanceReport, NexusRegion, TaxRateChangeEvent) - Add 12 new StorageKey variants for tax state persistence - Enhance invoice contract with full tax system: - Multi-jurisdiction tax lookup (set_tax_jurisdiction/get_tax_jurisdiction_by_location) - Tax exemption lifecycle (register/validate/revoke) with certificate validation - Digital goods classification and taxability rules - Mid-cycle tax rate change proration (calculate_prorated_tax) - Nexus determination with economic thresholds per jurisdiction - Tax remittance report generation and submission - Add 10 contract test cases covering invoice generation, tax exemption, proration, nexus, and remittance - Update frontend types with DigitalGoodsCategory, TaxRemittanceReport, NexusRegion, MidCycleTaxChange
- Add TaxType, TaxJurisdiction, TaxRateEntry, CustomerTaxStatus, DigitalGoodsClass, TaxRemittanceLineItem types - Add new StorageKey variants: TaxRateEntry, CustomerTaxStatus, TaxRemittanceLine, DigitalGoodsClass, TaxRateChangeLogByJdx - Fix StorageKey variant name length limits (ProxyPrevImplCount, TaxRemittanceReportByJdx) - Enhance invoice contract with multi-jurisdiction tax lookup with fallback chain - Add tax-exempt customer handling with certificate validation and expiry checks - Implement mid-cycle tax rate change proration for existing subscriptions - Add reverse-charge flagging and nexus threshold determination - Add per-invoice/per-jurisdiction remittance line tracking - Add 11 new contract functions and 10 comprehensive test cases - Update subscription contract with new generate_invoice signature - Create TaxService backend with built-in jurisdiction rates, caching, exemption validation, nexus checks, digital goods rules, and remittance report generation - Create taxTypes.ts with full TypeScript type definitions - Extend invoiceStore with tax state management (rates, exemptions, remittance lines, reports, mid-cycle changes) - Add backend TaxService tests covering lookup, exemption, calculation, nexus, and reporting - Update Invoice TypeScript types with TaxJurisdiction, CustomerTaxStatus, TaxRemittanceReport, MidCycleTaxChange and helper utilities - Extend Invoice interface with taxJurisdiction, isTaxExempt, and reverseCharge fields
|
@Junman140 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #371
Summary
Implements a complete subscription tax calculation and remittance system across the full stack.
Acceptance Criteria
Edge Cases
Changes
Frontend Types (\src/types/invoice.ts)
everseCharge\
Backend Services (\�ackend/services/taxService.ts, \ axTypes.ts)
Contracts (\contracts/types/src/lib.rs, \contracts/invoice/src/lib.rs)
State Management (\src/store/invoiceStore.ts)