Skip to content

[19.0][MIG] product_contract - #1371

Open
bosd wants to merge 106 commits into
OCA:19.0from
bosd:19.0-mig-product_contract
Open

[19.0][MIG] product_contract#1371
bosd wants to merge 106 commits into
OCA:19.0from
bosd:19.0-mig-product_contract

Conversation

@bosd

@bosd bosd commented Dec 29, 2025

Copy link
Copy Markdown
Contributor

Standard migration using odoo-module-migrator .

This version is severly cleaned according to:
https://github.com/OCA/maintainer-tools/wiki/Merge-commits-in-pull-requests#mergesquash-the-commits-generated-by-bots-or-weblate

Total reduction from 202 to 105 commits (44% reduction)

Also lists the depends properly.

depends on:
#1312
#1367
#1370

@bosd
bosd force-pushed the 19.0-mig-product_contract branch 2 times, most recently from 663c231 to be0367d Compare December 30, 2025 09:12
@bosd

bosd commented Dec 30, 2025

Copy link
Copy Markdown
Contributor Author

/ocabot migration product_contract

@OCA-git-bot

Copy link
Copy Markdown
Contributor

Sorry @bosd you are not allowed to mark the addon to be migrated.

To do so you must either have push permissions on the repository, or be a declared maintainer of all modified addons.

If you wish to adopt an addon and become it's maintainer, open a pull request to add your GitHub login to the maintainers key of its manifest.

@bosd
bosd force-pushed the 19.0-mig-product_contract branch 4 times, most recently from 53f361e to 3600f5d Compare December 30, 2025 13:52
@bosd
bosd marked this pull request as ready for review December 30, 2025 13:53
@pedrobaeza

Copy link
Copy Markdown
Member

/ocabot migration product_contract

@bosd I see that you have generated Merged bot/translation changes commits, while the idea is to squash that ones into the real commit that generates them (i. e. [IMP], [FIX] or [MIG] commits).

@OCA-git-bot OCA-git-bot added this to the 19.0 milestone Dec 30, 2025
@OCA-git-bot OCA-git-bot mentioned this pull request Dec 30, 2025
27 tasks
@bosd

bosd commented Dec 30, 2025

Copy link
Copy Markdown
Contributor Author

/ocabot migration product_contract

@bosd I see that you have generated Merged bot/translation changes commits, while the idea is to squash that ones into the real commit that generates them (i. e. [IMP], [FIX] or [MIG] commits).

Yeah, I noticed that the custom script i used, created this..
(On this module it was a but to much to do manually).
It's not optimal oca style, but decided to open this pr anyway, and see how this "lands".

@pedrobaeza

Copy link
Copy Markdown
Member

Uhm, I don't think it's OK, as now it's even more confusing about its source. I would prefer to let them as it was than this way.

@bosd
bosd force-pushed the 19.0-mig-product_contract branch from 3600f5d to 53cde28 Compare December 30, 2025 19:04
@bosd

bosd commented Dec 30, 2025

Copy link
Copy Markdown
Contributor Author

It is ok now

@bosd
bosd force-pushed the 19.0-mig-product_contract branch from 53cde28 to 321af49 Compare January 2, 2026 13:59
@bosd
bosd force-pushed the 19.0-mig-product_contract branch from 670735b to bcf1c24 Compare February 10, 2026 11:10
@raulovallet

Copy link
Copy Markdown

Hey @bosd, I found this issue raulovallet@67bfd99. It causes the default values not to be set correctly and throws an error when closing the window. I’m not sure how I can contribute—could you make a cherry-pick or I have to do a pull request here?

@wpichler

Copy link
Copy Markdown
Contributor

Hi @bosd , I am facing an issue here with this module - the required="is_contract" on date_start seems to be wrong. In state draft,sent there must not be a date_start specified. Why is this required ?

@wpichler

Copy link
Copy Markdown
Contributor

Hi @bosd , Please ignore my last comment - i found the real issue...

I have been working on an migrated database (migrated from v16) - i had sale.order.line's with contract_start_date_method='manual' and date_start=null

For the record - i've fixed it with:

 UPDATE sale_order_line sol                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
  SET date_start = COALESCE(                                                                                                                                                                                                                                                                                                                                                                                                                                                               
      (SELECT cl.date_start FROM contract_line cl                                                                                                                                                                                                                                                                                                                                                                                                                                            
        WHERE cl.sale_order_line_id = sol.id AND cl.date_start IS NOT NULL LIMIT 1),
      (SELECT so.date_order::date FROM sale_order so WHERE so.id = sol.order_id),                                                                                                                                                                                                                                                                                                                                                                                                            
      sol.create_date::date                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
  )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
  FROM product_product pp                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
  JOIN product_template pt ON pt.id = pp.product_tmpl_id                                                                                                                                                                                                                                                                                                                                                                                                                                   
  WHERE sol.product_id = pp.id                                                                                                                                                                                                                                                                                                                                                                                                                                                               
    AND pt.is_contract IS TRUE
    AND sol.date_start IS NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                               
    AND COALESCE(sol.contract_start_date_method, 'manual') = 'manual';

@bosd
bosd force-pushed the 19.0-mig-product_contract branch from e1d146d to a31eb84 Compare May 12, 2026 21:16
Ted Salmon and others added 5 commits June 11, 2026 08:48
* Add contract functionality to `product.templates`
* Add logic to create contracts from `sale.order` that contains contract products.
* Change the method called in the view
* Complete the create_invoice method
* Bump version + authoring
* Correct bad call of method
  Small Documentation
* Add super call in python test
* FIX bad field names causing bad quantities in sale.order.line
mourad-ehm and others added 28 commits June 11, 2026 08:48
…ree not editable

Before this changes, when trying to edit a line of sale order, it was
opening the form of the line. But following the way to work of odoo
with sale event, we have make a new contract configurator that will
be opened when selecting a product of type contract.
…using confirmation date_start

With these changes, we allow the contract line start date to be computed
using the order confirmation date. When the product is configured with
any of the options set in contract_start_date_method other than manual,
the start date will be calculated based on the established date and the
selected period.

Additionally, we can force the month in which we will work in case the
frequency is yearly, quarterly, or semesterly.

Is not added support for daily, weekly or monthlylastday in this commit.
…ttings

[IMP] product_contract: add Recurrence Number to compute start and end dates

[FIX] product_contract: add sol name dependes

[IMP] product_contract: add recurrence interval

[IMP] product_contract: add recurring_interval
…d to recurrence_number

for more clarity rename default_qty to recurrence_number
…ack a contract template

Before this commit, confirming a sales order would raise an exception if any line lacked a configured contract template, preventing the creation of the contract.

Now, sales order lines without a contract template are automatically added to a new contract without a template, allowing the process to continue seamlessly.
@bosd
bosd force-pushed the 19.0-mig-product_contract branch from a31eb84 to a375146 Compare June 11, 2026 06:48
@raulovallet

Copy link
Copy Markdown

Any update for this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.