60 lines
3.2 KiB
Markdown
60 lines
3.2 KiB
Markdown
# 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
|
||
|
||
- `SeedDataService` is now re-runnable — each seeder runs in its own try/catch with `ChangeTracker.Clear()` on failure, so one failing seeder no longer aborts the rest.
|
||
- Added `SeedBillsAsync` (4 bills: Paid, PartiallyPaid, 2× Open) and `SeedExpensesAsync` (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.
|