Files
PowderCoatingLogix/RELEASE-NOTES-2026-04-06.md
T
2026-04-23 21:38:24 -04:00

60 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.