Skip to content

Double entry accounting milestone 9 - #90

Merged
chongfun merged 2 commits into
double_entry_accounting_milestone_8from
double_entry_accounting_milestone_9
Aug 24, 2026
Merged

Double entry accounting milestone 9#90
chongfun merged 2 commits into
double_entry_accounting_milestone_8from
double_entry_accounting_milestone_9

Conversation

@chongfun

Copy link
Copy Markdown
Owner

Implement:

Property
└── PropertyTaxProfile(year)
        ↓
TaxReporting::ScheduleEQuery
        ↓
posted JournalEntries / Postings
        ↓
tax-event / account mappings
        ↓
Schedule E worksheet

The initial result should answer:

Property tax classification

Line 3  Rents received

Line 5  Advertising
Line 6  Auto and travel
Line 7  Cleaning and maintenance
Line 8  Commissions
Line 9  Insurance
Line 10 Legal and professional fees
Line 11 Management fees
Line 12 Mortgage interest
Line 13 Other interest
Line 14 Repairs
Line 15 Supplies
Line 16 Taxes
Line 17 Utilities
Line 19 Other

Total expenses
Net rental income/loss before unsupported adjustments

These correspond to the current Schedule E Part I layout. The latest Schedule E currently published by the IRS is the 2025 form; its Part I still uses line 3 for rents received and lines 5–19 for these expense categories.

Do not implement depreciation calculations, passive-loss rules, personal-use allocation, basis, Form 8582, or tax advice. Those remain outside the accounting PRD's scope.

I would call this a Schedule E worksheet, not a generated tax return.

- Add PropertyTaxProfile model and migration with property_id and tax_year uniqueness constraint
- Separate physical asset_type from year-specific Schedule E classification (IRS Codes 1-8)
- Add PropertyTaxReviewResolution model and migration for property-scoped user resolutions of reviewable events
- Implement core tax reporting primitives in TaxReporting module:
  * TaxReporting::ScheduleEAccountMap with 100% mapping of system expense accounts to Schedule E categories
  * TaxReporting::ScheduleEFormDefinition for versioned IRS form line metadata and Line 19 statement pagination
  * TaxReporting::ScheduleEEventMap for event-driven tax classification, property-scoped review checks, and fail-closed reversal derivation
  * TaxReporting::ScheduleEResult data structure with drill-downs, itemized other expenses, and review items
  * TaxReporting::ScheduleEQuery for double-entry ledger-backed Schedule E worksheet calculation with reversal tax lineage and cross-year review support
  * TaxReporting::TaxYear for robust parsing and normalization of tax year parameters
- Enforce cash-received semantics for Line 3 (Rents received) derived strictly from ordinary Receipt cash postings, excluding unpaid rent charges and refundable security deposits
- Flag security deposit applications and unmapped expenses for explicit user tax review with fail-closed treatment and resolution target navigation (return_to_year)
- Add PropertyTaxProfilesController and PropertyTaxReviewResolutionsController with dynamic views and Stimulus controllers
- Modernize Schedule E worksheet view with tax profile configuration status, line breakdowns, review items, and untracked item disclaimers
- Update ScheduleEGenerator to source data directly from TaxReporting::ScheduleEQuery and PropertyTaxProfile
- Deprecate legacy Properties::ScheduleESummaryQuery
- Add full RBS type signatures and comprehensive test suites
@chongfun chongfun self-assigned this Aug 23, 2026
@chongfun
chongfun merged commit 10ece58 into main Aug 24, 2026
5 checks passed
@chongfun
chongfun deleted the double_entry_accounting_milestone_9 branch August 24, 2026 00:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant