Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[18.0][MIG] contract_variable_quantity #1139

Draft
wants to merge 52 commits into
base: 18.0
Choose a base branch
from

Conversation

sbejaoui
Copy link
Contributor

@sbejaoui sbejaoui commented Nov 4, 2024

No description provided.

pedrobaeza and others added 30 commits November 4, 2024 15:14
=================================================
Variable quantity in contract recurrent invoicing
=================================================

With this module, you will be able to define in recurring contracts some
lines with variable quantity according a provided formula.

Configuration
=============

* Go to Sales > Configuration > Contracts > Formulas (quantity).
* Define any formula based on Python code that stores at some moment a
  float/integer value of the quantity to invoice in the variable 'result'.

  You can use these variables to compute your formula:

  * *env*: Environment variable for getting other models.
  * *context*: Current context dictionary.
  * *user*: Current user.
  * *line*: Contract recurring invoice line that triggers this formula.
  * *contract*: Contract whose line belongs to.
  * *invoice*: Invoice (header) being created.

Usage
=====

To use this module, you need to:

* Go to Sales -> Contracts and select or create a new contract.
* Check *Generate recurring invoices automatically*.
* Add a new recurring invoicing line.
* Select "Variable quantity" in column "Qty. type".
* Select one of the possible formulas to use (previously created).
* Bump version
* Change openerp references to odoo
* Installable to True
* Change permissions & views to accounting dependency
Add template functionality for contracts
* [IMP] Add variable qty to contract template view

* Bump minor version
If you have contract lines with automatic price and your pricelist
contains different prices per quantity, the price is not changed
when computing quantity.

This PR fixes this.
Bug description
---------------

`account.analytic.contract.line` inherits
`account.analytic.invoice.line`

`account.analytic.invoice.line` defines field `analytic_account_id`:
   - comodel='account.analytic.account'

`account.analytic.contract.line` redefines field `analytic_account_id`:
   - comodel='account.analytic.contract'

On attempt to extend `account.analytic.invoice.line` model adding
field that depends on `analytic_account_id.date_start`
Odoo fails to update, because it adds this field to
`account.analytic.contract.line` through inheritance,
and `account.analytic.contract` model have no this field.

What is done
------------

Change inheritance order:
- `account.analytic.invoice.line` inherits
`account.analytic.contract.line`
- no file renames at this stage (this wil be done in next commit)
- contract
- contract_variable_quantity
sbejaoui and others added 21 commits November 4, 2024 15:14
…lds from template

**Steps to reproduce the problem**

- Define a contract template with one line with variable quantity and formula.
- Use that template in a new contract.
- Variable quantity type and formula are not transferred from template to contract.

This is due to the lack of that fields in the tree view that prevents web client to fetch
and store them.

We solve it adding those fields to the contract line tree view, also providing some
visibility logic for not showing the corresponding fields according the type.

No regression tests is provided, as this is only reproducible with web client, not through
code.
I have detected a method that was created as redundant and with the same
technique used when preparing the line values, so better to have
everything together in the same method instead of having it spread.
[UPD] Update contract_variable_quantity.pot

[UPD] README.rst
Currently translated at 100.0% (35 of 35 strings)

Translation: contract-16.0/contract-16.0-contract_variable_quantity
Translate-URL: https://translation.odoo-community.org/projects/contract-16-0/contract-16-0-contract_variable_quantity/it/
Currently translated at 68.5% (24 of 35 strings)

Translation: contract-16.0/contract-16.0-contract_variable_quantity
Translate-URL: https://translation.odoo-community.org/projects/contract-16-0/contract-16-0-contract_variable_quantity/hr/
Currently translated at 100.0% (35 of 35 strings)

Translation: contract-16.0/contract-16.0-contract_variable_quantity
Translate-URL: https://translation.odoo-community.org/projects/contract-16-0/contract-16-0-contract_variable_quantity/sv/
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: contract-17.0/contract-17.0-contract_variable_quantity
Translate-URL: https://translation.odoo-community.org/projects/contract-17-0/contract-17-0-contract_variable_quantity/
@sbejaoui sbejaoui marked this pull request as draft November 4, 2024 14:16
@sbejaoui sbejaoui added this to the 18.0 milestone Nov 4, 2024
@sbejaoui sbejaoui force-pushed the 18.0-mig_contract_variable_quantity-sbj branch from 81b40fd to 1d51f37 Compare November 4, 2024 14:23
@sbejaoui sbejaoui force-pushed the 18.0-mig_contract_variable_quantity-sbj branch from 1d51f37 to b2868a2 Compare November 15, 2024 20:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.