[19.0][IMP] contract: UX revamp, last_date_invoiced & demo data - #1427
[19.0][IMP] contract: UX revamp, last_date_invoiced & demo data#1427bosd wants to merge 6 commits into
Conversation
3d05d15 to
811976b
Compare
Robust recurring-invoice cron — client contextPushed two commits ( The problemWe hit this on a multi-company production deployment with a few hundred active recurring contracts. One contract had a bad data entry that made The painful part for the client wasn't just the missed invoicing run, it was finding the bad apple. There's no per-contract error trail. The cron log shows one stack trace (without naming the offending contract clearly) and there's no in-UI marker. Their bookkeeper had to scan hundreds of contracts manually to figure out which one was tripping the cron. What this PR adds
Why per-contract savepoints (not just a per-contract
|
|
21 commits? |
Dropped it to 9 now 😄 |
|
Well, still too many, specially for discussing about each one. Seeing for example the archived products one, why do you need that? Isn't better to remove the active_test context key? |
|
Thanks for the review @pedrobaeza! On the archived-products domain: the On the commit count: I've kept it at 9, with each one an atomic, self-contained unit that reviews independently: last_date_invoiced, view/UX revamp, archived-product fix, date validation, PDF report, portal page, demo data, cron hardening, icon. None depend on another's internals, so they can be discussed — or dropped — one by one. Glad to drop any you consider out of scope for this PR. Also pushed a small test ( |
|
I was talking about splitting this into several PRs, for merging clear things, and discuss the rest, instead of having to block everything until all are agreed. |
|
@pedrobaeza split done 👍 — broke this into focused PRs. This one now holds just the core, low-risk UX changes; the rest are independent so the clear ones can merge without waiting on the others:
They only share |
Aggregate the latest invoiced date from the contract lines into a stored computed field on contract.contract, label it explicitly in the views, and bump the manifest version.
8efcaf2 to
f29e529
Compare
f29e529 to
4f48ef9
Compare
4f48ef9 to
21d5f39
Compare
Add a kanban view and enable the activity view, improve the list and search view UX, add a partner search group-by, refine the form layout (Other Information in a single two-column grid, 'Analytic Account' label) and streamline the contract.tag UX.
The random default color introduced for contract.tag was never executed by the test suite, since every demo tag sets its color explicitly. Cover it, along with the contract line display name compute, which was already untested before this branch.
21d5f39 to
cebade8
Compare


Core, low-risk UX improvements to the
contractmodule. Originally a larger PR — now split into focused PRs (per @pedrobaeza) so the clear changes can merge independently from the ones that need more discussion.This PR (core):
last_date_invoicedcomputed/displayed oncontract.contractdate_endafterdate_startvalidation<h1>on the form and shown in bold in the list(
decoration-bf), matching howsale.orderandaccount.movetreat theiridentifying column
Create Invoice, matchingthe singular/title-case string Odoo core uses on the sale order form (core
keeps the plural
Create Invoicesfor the multi-record list header, which iswhat the contract wizard already uses)
Split out into separate PRs: