3.2 KiB
3.2 KiB
Release Notes — 2026-04-06
QuickBooks Desktop Migration Wizard — Import Quality & UX
Bug Fixes
Customer Payments Import (607 skipped → 614 imported)
- Invoice import (Step 6) no longer creates Payment records. AmountPaid and Status are set correctly from the balance detail file, but Payment record creation is deferred to Step 7 so that customer payment history includes richer data (check numbers, bank account names, exact payment dates).
- Step 7 now correctly creates payment records for pre-settled invoices without duplicating them.
Vendor Bills Import — App Crash
- Eliminated 1,000+ mid-loop database round trips during the bills import. Bills and their line items are now saved in a single batch, preventing request timeouts on large imports.
QuickBooks Online — QB Desktop Parity
- Verified QB Online migration does not share the payment matching bugs fixed on the Desktop side.
UX Improvements
Import Result Reporting
- "Skipped" badge changed from yellow (warning) to gray — skips are not failures.
- Added "Already Recorded" badge (gray) for records that were intentionally not re-imported because they already exist. No longer shown as "Skipped."
- Vendor Bills & Payments step now shows "X Bills Imported / Y Payments Applied" as the primary result instead of a confusing combined Total/Imported count where Imported > Total.
False-Alarm Warnings Eliminated The following QB structural row types and report artifacts now silently pass through all importers without generating warnings:
| Step | Previously Warned | Now |
|---|---|---|
| Chart of Accounts | NONPOSTING accounts (Estimates, Purchase Orders) | Silent |
| Catalog Items | Non-service types (DISC, GRP, PMT, OTHC), group markers | Silent |
| Inventory | Category/group headers, Total/TOTAL subtotal rows | Silent |
| Vendor Bills | Bill Pmt -Check, Item Receipt, Credits, and all other non-Bill rows | Silent |
| Vendor Payments | Item Receipt, Credits, zero-amount payment rows, and all other non-Bill Pmt rows | Silent |
General Rule Applied Each importer now silently ignores any row type it doesn't own, rather than maintaining a whitelist. This prevents unexpected warnings when customers have QB files containing row types not seen during testing (Credits, Journal Entries, Purchase Orders, etc.).
Seed Data
SeedDataServiceis now re-runnable — each seeder runs in its own try/catch withChangeTracker.Clear()on failure, so one failing seeder no longer aborts the rest.- Added
SeedBillsAsync(4 bills: Paid, PartiallyPaid, 2× Open) andSeedExpensesAsync(5 expenses) for demo company.
Subscription Plan Limits
- Plan limit checks moved from POST (after form submission) to GET (when the "New" button is clicked). Users are now redirected with a clear message before filling out a form they can't submit.
- Applies to: Quotes, Jobs, Customers, Company Users, Catalog Items.
- Job Details photo upload button is disabled with a tooltip when the photo limit is reached, showing current usage (e.g. "3 / 5 photos used").
PDF / Quote
- Rush charge now appears as a line item in the Quote PDF between Discount and Tax, styled in orange to match the on-screen display.