Commit Graph

67 Commits

Author SHA1 Message Date
Alexis de Lattre
042aaf1573 [FIX] contract: fix an obvious crash when self is a multi-recordset 2024-03-23 15:10:10 +00:00
Pedro M. Baeza
eae2dc5a48 [FIX] contract: Cleanup values on line when invoicing
It seems that having several fields returned by `Form` as `False` that
are related to one2many inverse field, makes Odoo ORM mad, and get to
an unbalanced move when generating the invoice.

Cleaning these values assures to work without problems.

Not able to provide a regression test, as I don't get to reproduce the
conditions to happen in test environment, but the patch is safe and
harmless anyways.

TT30842
2024-03-23 15:10:10 +00:00
Ignacio Buioli
9ce76c14a7 Translated using Weblate (Spanish (Argentina))
Currently translated at 100.0% (306 of 306 strings)

Translation: contract-14.0/contract-14.0-contract
Translate-URL: https://translation.odoo-community.org/projects/contract-14-0/contract-14-0-contract/es_AR/

[UPD] Update contract.pot
2024-03-23 15:10:10 +00:00
Víctor Martínez
6ea141fa4a [IMP] contract: Improve code to show recurring_rule_type from contract line in portal + [FIX] Force add access_token in "View contract" button from contract modification mail 2024-03-23 15:10:10 +00:00
Pedro M. Baeza
d3846e97a2 [FIX] contract: Don't change period start date having line recurrence
Fine-tuning of cd086ddbb4. We shouldn't do
this adjustment if the line recurrence is set, as if so, there's no
possibility of adding post-paid lines with proper dates on a running
contract.
2024-03-23 15:10:10 +00:00
Francisco Ivan Anton Prieto
6965b755e0 [MIG] contract: Migration to 14.0 2024-03-23 15:10:10 +00:00
Francisco Ivan Anton Prieto
cddd13cf5c [IMP] contract: black, isort, prettier 2024-03-23 15:10:10 +00:00
Víctor Martínez
23072ebf7e [FIX] contract: Changed modification_mail auto to appear like email and not internal comment + Generate recurring invoice
Remove line_ids from invoice values to prevent invoice without lines according to https://github.com/odoo/odoo/pull/67879 change
2024-03-23 15:10:10 +00:00
Pedro M. Baeza
b137995193 [OU-FIX] contract: Don't alter v12 recurrence mechanism + Transfer contract info from invoice
We can't guarantee the homogeneity of the existing contracts, so we
keep the line recurrence behavior.
2024-03-23 15:10:10 +00:00
nans
de55a7fb08 [FIX] contract: remove groupby if it is in context + consistency between contract count and contract action
On the commercial entity, the count shows all contracts of child partners.
However clicking on the action might show no contract, as the action only
restricted the domain to the partner itself.
We extract the domain into a function to share it in both cases.

Co-authored by @Lopsanz
2024-03-23 15:10:10 +00:00
Víctor Martínez
7cf5d4547c [FIX] contract: Error in test_contract_invoice_followers 2024-03-23 15:10:10 +00:00
Denis Roussel
b0e941de1e [13.0][FIX] contract: Impossible to create invoices from contract lines as section 2024-03-23 15:10:10 +00:00
Víctor Martínez
67d5c43618 [FIX] contract: Modification mail + Auto-create follower in contract creation related to partner_id + Set groups in back_in_edit_mode link to show only correct users + Prevent first contract modification mail to partner
Co-Authored-By: Pedro M. Baeza <pedro.baeza@tecnativa.com>
2024-03-23 15:10:10 +00:00
Víctor Martínez
7b938dfdc3 [IMP] contract: Add contract modification + contract: Add fields to contract page in portal 2024-03-23 15:10:10 +00:00
Pedro M. Baeza
2e5b3b21d6 [IMP] contract: JS tour on test assets
[UPD] Update contract.pot

[UPD] README.rst
2024-03-23 15:10:10 +00:00
Víctor Martínez
1a1d301251 [IMP] contract: Portal 2024-03-23 15:10:10 +00:00
Víctor Martínez
5b52ee97d0 [IMP] contract: Add followers to invoices created
[UPD] Update contract.pot

[UPD] README.rst
2024-03-23 15:10:10 +00:00
Víctor Martínez
15b1e29650 [FIX] contract: Only include 'section_and_note_one2many' js widget in view fields that contain it 2024-03-23 15:10:10 +00:00
Carlos Roca
f4c0376a62 [IMP] contract: Set a condicion to avoid create lines on invoices 2024-03-23 15:10:10 +00:00
Pedro M. Baeza
017faff34a [MIG] contract: Migration to 13.0
- Standard procedure
- Adapt invoice creation to new account.move
- Tests adapted
2024-03-23 15:10:10 +00:00
Pedro M. Baeza
a425d2a431 [IMP] : black, isort, prettier 2024-03-23 15:10:10 +00:00
Jairo Llopis
1531b29de4 [FIX] contract: do not die if modified partner has contracts in several companies
In a multicompany scenario where a contact belongs to a company and has contracts in several companies, if the user goes to the contact to edit anything, when saving, it will trigger the recomputation of the `commercial_partner_id` field, which gets populated to all the related contracts, and will undeniably fail with an `AccessError`.

A simple test is provided that, without the fix, fails like this:

```
2020-06-25 07:21:24,859 33 ERROR devel odoo.addons.contract.tests.test_contract: ERROR: test_multicompany_partner_edited (odoo.addons.contract.tests.test_contract.TestContract)
2020-06-25 07:21:24,859 33 ERROR devel odoo.addons.contract.tests.test_contract: ` Editing a partner with contracts in several companies works.
2020-06-25 07:21:24,859 33 ERROR devel odoo.addons.contract.tests.test_contract: Traceback (most recent call last):
2020-06-25 07:21:24,859 33 ERROR devel odoo.addons.contract.tests.test_contract: `   File "/opt/odoo/auto/addons/contract/tests/test_contract.py", line 2513, in test_multicompany_partner_edited
2020-06-25 07:21:24,859 33 ERROR devel odoo.addons.contract.tests.test_contract: `     'parent_id': parent_partner.id,
2020-06-25 07:21:24,859 33 ERROR devel odoo.addons.contract.tests.test_contract: `   File "/opt/odoo/auto/addons/partner_autocomplete/models/res_partner.py", line 183, in write
2020-06-25 07:21:24,860 33 ERROR devel odoo.addons.contract.tests.test_contract: `     res = super(ResPartner, self).write(values)
2020-06-25 07:21:24,860 33 ERROR devel odoo.addons.contract.tests.test_contract: `   File "/opt/odoo/custom/src/odoo/odoo/addons/base/models/res_partner.py", line 570, in write
2020-06-25 07:21:24,860 33 ERROR devel odoo.addons.contract.tests.test_contract: `     result = result and super(Partner, self).write(vals)
2020-06-25 07:21:24,860 33 ERROR devel odoo.addons.contract.tests.test_contract: `   File "/opt/odoo/auto/addons/mail/models/mail_thread.py", line 321, in write
2020-06-25 07:21:24,860 33 ERROR devel odoo.addons.contract.tests.test_contract: `     result = super(MailThread, self).write(values)
2020-06-25 07:21:24,860 33 ERROR devel odoo.addons.contract.tests.test_contract: `   File "/opt/odoo/auto/addons/mail/models/mail_activity.py", line 613, in write
2020-06-25 07:21:24,860 33 ERROR devel odoo.addons.contract.tests.test_contract: `     return super(MailActivityMixin, self).write(vals)
2020-06-25 07:21:24,860 33 ERROR devel odoo.addons.contract.tests.test_contract: `   File "/opt/odoo/custom/src/odoo/odoo/models.py", line 3381, in write
2020-06-25 07:21:24,860 33 ERROR devel odoo.addons.contract.tests.test_contract: `     self.recompute()
2020-06-25 07:21:24,860 33 ERROR devel odoo.addons.contract.tests.test_contract: `   File "/opt/odoo/custom/src/odoo/odoo/models.py", line 5308, in recompute
2020-06-25 07:21:24,860 33 ERROR devel odoo.addons.contract.tests.test_contract: `     target._write(dict(vals))
2020-06-25 07:21:24,860 33 ERROR devel odoo.addons.contract.tests.test_contract: `   File "/opt/odoo/custom/src/odoo/odoo/models.py", line 3433, in _write
2020-06-25 07:21:24,860 33 ERROR devel odoo.addons.contract.tests.test_contract: `     self.check_access_rule('write')
2020-06-25 07:21:24,860 33 ERROR devel odoo.addons.contract.tests.test_contract: `   File "/opt/odoo/custom/src/odoo/odoo/models.py", line 3081, in check_access_rule
2020-06-25 07:21:24,860 33 ERROR devel odoo.addons.contract.tests.test_contract: `     + ' - ({} {}, {} {})'.format(_('Records:'), invalid.ids[:6], _('User:'), self._uid)
2020-06-25 07:21:24,861 33 ERROR devel odoo.addons.contract.tests.test_contract: ` odoo.exceptions.AccessError: ('The requested operation cannot be completed due to security restrictions. Please contact your system administrator.\n\n(Document type: Contract, Operation: write) - (Records: [101], User: 12)', None)
```

@Tecnativa TT24482
2024-03-23 15:10:10 +00:00
Pedro M. Baeza
e887a42736 [FIX] contract: Currency is not editable + pricelist from partner
Previous related field was not accurated nor editable. Now the field is got
properly from a computed field.

Reviewing this, as the currency was taken (and it continues being taken) from the partner
pricelist if no pricelist is explicitly set, automatic price should use the same logic for
using partner pricelist.

Also remove roadmap as already attended
2024-03-23 15:10:10 +00:00
sbejaoui
5635f524f1 [IMP] - Contract: add new recurring_rule_type quarterly and semesterly 2024-03-23 15:10:10 +00:00
Ernesto Tejeda
03af8ba703 [FIX] contract: Select the correct sections/notes to be invoiced 2024-03-23 15:10:10 +00:00
Pedro M. Baeza
6b0f5086b6 [FIX+IMP] contract: improve test coverage with new sections + fix search method 2024-03-23 15:10:10 +00:00
Ernesto Tejeda
b782d9d602 [IMP] contract: add section and notes in contract line 2024-03-23 15:10:09 +00:00
Bejaoui Souheil
b208d10d98 [IMP] - Place id attribute before model
Co-Authored-By: Carlos Dauden <carlos.dauden@tecnativa.com>
2024-03-23 15:10:09 +00:00
Pedro M. Baeza
b52bb30727 [FIX] contract: Delete cascade line wizard
For avoiding problems while trying to remove the contract/contract line
2024-03-23 15:10:09 +00:00
Stéphane Valaeys
2f4c027ffd Set company_id earlier in the invoice preparation process so that _onchange_partner can execute as intended. 2024-03-23 15:10:09 +00:00
sbejaoui
40d22616dc [IMP] - Add contract tags 2024-03-23 15:10:09 +00:00
sbejaoui
6cb0fc6ebe [IMP] contract: Improve partner With running contracts search view filter + contract termination 2024-03-23 15:10:09 +00:00
Ernesto Tejeda
924aae8bc6 [IMP] contract: add analytic_tag_ids field in contract lines 2024-03-23 15:10:09 +00:00
sbejaoui
8412378133 [12.0][IMP] - Add an action for contracts manual invoicing
It happen that a company has to trigger the invoicing action to generate invoices before
the scheduled date (to print and prepare invoices documents, check invoices, etc.).
This requires technical access for end users with the risk that this represents.

This commit adds a new wizard to run the invoicing action for a given date with a helper
to see and check the contract that will be invoiced. When the manual action is called,
the system displays all created invoices.

[12.0][IMP] - log the manual invoice action in contract chatter

[IMP] - Add alink to the invoice in contract message at manual invoicing

[IMP] - Improve code

[FIX] - log message for invoice creation only when there is an invoice

[IMP] - split the manual invoice menu into to menus sale & purhcase

[IMP] - hide invoice button if there is nothing to invoice
2024-03-23 15:10:09 +00:00
Pedro M. Baeza
abf30c16b4 [FIX] contract: Handle properly multi-company setups
If you have contracts in several companies, cron will create all of them, but
property fields will be populated with incorrect data as the taken company is
the main from the cron user (usually admin).
2024-03-23 15:10:09 +00:00
sbejaoui
d1e7dde56e [IMP+FIX] contract: Add failing test for wrong invoicing date after contract line stop + stop update recurring_next_date 2024-03-23 15:10:09 +00:00
sbejaoui
90fa0e055f [IMP+FIX] contract: Several things
- Add failing test for next invoice date before the last date invoiced
- raise an error when next invoice date before the last date invoiced
- Add note field to contract
- add new option: create_new_line_at_contract_line_renew
  Add a company config option to decide whether to create or to extend contract
  line at renew action
- extend contract line at renewal
- improve code: unify methods argument _renew_create_line and _renew_extend_line
2024-03-23 15:10:09 +00:00
Stéphane Bidoul (ACSONE)
3fcb17d6f3 [IMP] contract: display invoicing offset 2024-03-23 15:10:09 +00:00
Stéphane Bidoul (ACSONE)
68d2b84a4b [REF+FIX+IMP] contract: Several refactorings + fixes + imps
- REF: Refactor _update_recurring_next_date
  Reuse the logic that is now fully located in _get_recurring_next_date.
- REF: re-add _compute_first_recurring_next_date
  for backward compatibility
- FIX: add missing dependency in computed field
- REF: remove one monthlylastday special case
  get_relative_delta now works the same for all recurring rules.
  Move the special case handling to _init_last_date_invoiced
  which is used only for migration.
- IMP: support pre-paid for monthlylastday
  monthlylastday is (almost) not a special case anymore \o/.
  montlylastday is simply a montly period where the
  periods are aligned on month boundaries.
  The last bit of special casing is that postpaid generates
  invoice the day after the last dasy of the period, except
  for monthlylastday where the invoice is generated on the
  last day of the period. This last exception will disappear
  when we put the offset under user control.
  This is a breaking change because the post-paid/pre-paid
  mode becomes relevant for monthlylastday invoicing.
  The field becomes visible in the UI. Code that generate
  monthlylastday contract lines must now correctly set
  the pre-paid/post-paid mode too. Some tests have had
  to be adapted to reflect that.
- REF: make recurring_invoicing_offset a computed field
  In preparation to making it user modifiable.
- REF: make get_next_period_date_end public
  Make it public because it is the core logic of the module.
  Also, clarify that recurring_invoicing_type
  and recurring_invoicing_offset are needed only when
  we want the next period to be computed from a
  user chosen next invoice date.
- REF: rename _get_recurring_next_date as get_next_invoice_date
  It is easier to understand. Also make it public.
2024-03-23 15:10:09 +00:00
Sergio Teruel
5d83f9de6d [IMP] contract: Fix test crash with other modules 2024-03-23 15:10:09 +00:00
sbejaoui
f212a26186 [FIX] contract: Fix performance issue on contract line read + Fix contract partner label + contract company must be the same as the sale order
- multi-company record rules on contract line causes performance issue
- the label Partner (always False) don't make any sens
- When creating a contract from a sale order the company must be the sale order
  company and not the user company
2024-03-23 15:10:09 +00:00
sbejaoui
d233b71ffc [IMP+FIX] contract: Add multi-company access rule for contract objects + Fix contract report 2024-03-23 15:10:09 +00:00
Enrique
0406fc02b3 [12.0][FIX] contract & contract_sale - security fix
The lowest model access for contract.contract model is group_account_invoice group. However the addon adds two smart buttons to res.partner view without any security restrictions and without compute_sudo attribute on computed fields.
This causes the view to crash when a user without the proper permissions tries to access the res.partner form view.
The solution adds groups_id to the partner form views in which the buttons are added, so the only loads when the user has proper permissions.
Other way to solve it would be to add compute_sudo attribute to the relevant fields, but this causes an access error when the user clicks on the smart buttons.
2024-03-23 15:10:09 +00:00
Thomas Binsfeld
489a79588d [REF] contract: Several things
[REF] use context_today instead of time in filters
[REF] Contract: split from analytic account
[REF] Contract Sale Invoicing: split from analytic account
[REF] Contract Sale Invoicing: update translations
[IMP] - Assert that the predecessor is available for new link at uncancel
[RMV] - remove usless changes
[RMV] - Remove usless field recurring_invoices
  after the total isolation between contract model and account analytic one.
  recurring_invoices which was used to mark analytic account as contract became usless
[IMP] - P3 syntax
[IMP] - use @openupgrade.migrate() and openupgrade.logged_query
[IMP] - drop transient table in migration script
2024-03-23 15:10:09 +00:00
sbejaoui
19f9587025 [ADD] - Add more value for auto_renew_rule_type
[REF] - refactoring for compute_first_date_end

[RMV] - remove auto_renew_rule_type option monthlylastday

[IMP] - rename manual_renew_needed label

[IMP] - use get_product_multiline_description_sale to get contract line description
2024-03-23 15:10:09 +00:00
Thomas Binsfeld
09ce4005d7 [IMP] Contract: matching invoice view depending on contract type
[ADD] Contract: invoice partner
2024-03-23 15:10:09 +00:00
sbejaoui
1881028b32 [FIX+IMP] contract: several things
[FIX] - as date_start is required, constraints on it become useless
[FIX] - for finished contract _get_lines_to_invoice should return False
[FIX] - default value for active field in contract line
[FIX] - fix flake8
[IMP] - check invoice line vals before assignment
[FIX] - Fix unit tests.
[FIX] - do not copy last_date_invoiced on plan_successor
[FIX] - renew only recurring_invoices contract
[FIX] - filter by termination_notice for contract line to renew
[IMP] - Improve inprogress search filter
[IMP] - Link invoice line to contract lines
[IMP] - Add index on contract line
[IMP] - Add is_suspended flag and _search_state
[IMP] - Add is_suspended flag to stop contract line
[MV] - move onchange method to contract_product module
[IMP] - Replace is_suspended flag by manual_renew_needed
  Add a computed field for the first date of the termination notice period
  Adapt state compute and search method
[IMP] - Improve unit tests
2024-03-23 15:10:09 +00:00
sbejaoui
103d5c1c66 [IMP] contract: Make recurrence mechanism on contract line
Make recurrence mechanism on contract line and some other refactoring

[FIX] - Keep contract_cron on account_analytic_account model

contract_cron defined with no_update option.
Changing it, will cause issue to past version installation.

[IMP] - Fix recurring_next_date default value

recurring_next_date should have start_date as default value in prepaid policy
and start_date + invoicing_interval if postpaid

[FIX] - Fix test check no journal

[IMP] - Return created invoices on recurring_create_invoice

[IMP] - Specific process to compute recurring_next_date for  monthly-last-day

fixes: #198

[ADD] - Add Post-migration script to bring recurrence info from contract to contract lines

[ADD] - Add search filter based on date_end and recurring_next_date

 - not_finished filter in contract search view
 - finished filter in contract search view
 - Next Invoice group by in contract search view

[ADD] - Add unit tests

- cases to compute first recurring next date
- contract recurring_next_date
- contract date_end

[IMP] - Improve Unit tests

[12.0][IMP] - Add strat/stop wizard to contract line

[12.0][IMP] - Add pause button to contract line

[IMP] - Add state filed in contract line form

[FIX] - stop don't change date_end for finished contract line

[IMP] - Change contract line buttons visibility

Add renewal process with termination notice

[FIX] - don't consider stop_date If it is after the contract line end_date

[IMP] - consider more cases in stop_plan_successor

[IMP] - cancel upcoming line on stop

[IMP] - Chnage next invoice date on un-cancel

[IMP] - Post message in contract on contract line actions

[IMP] - check contract line overlap

[FIX] - invoice last period for post-paid case

[IMP] - Add primary views for contract

[IMP] - don't use related filed for partner_id and pricelist_id

[FIX] - fix stop_plan_successor case 5

contract line start in the suspension period and end after it

[IMP] - improve cancel/uncancel process

[FIX] - Test if start_date is set before compute

[FIX] - date_end include in the period in auto_renew case

[FIX] - in suspension case, contract line should start a day after the end

[IMP] - confirm message on contract line cancel

[IMP] - hide recurring_invoicing_type if recurring_rule_type is monthlylastday

for the monthlylastday case, pre-paid is logicly impossible,
if monthlylastday is set, we consider only post-paid case

[IMP] - Improve unit tests

[IMP] - store last_date_invoiced on contract_line

Improve CRITERIA_ALLOWED_DICT

[IMP] - code improvement

[IMP] - Use last_date_invoiced to set marker in invoice description

[IMP] - add migration script to init last_day_invoiced and some other improvement

[FIX] - a contract line suspended should start a day after the suspension end

[IMP] - don't allow to unlink uncnaceled contrac line

[FIX] - check date_start before onchange

[FIX] - compute recurring_next_date for contract

[IMP] - get contract line default data onchange product_id

[IMP] - Add responsible to contract form view

[FIX] - contract recurring_next_date ignore canceled lines

[FIX] - fix _get_invoiced_period if recurring_next_date manually updated

[IMP] - archive contract_line on contract archive
2024-03-23 15:10:09 +00:00
sbejaoui
aa75041890 [MIG] contract: Migration to 12.0 2024-03-23 15:10:09 +00:00
mreficent
5ca6bc6936 [IMP] Make sure it works for sale and purchase contracts
[UPD] Update contract.pot
2024-03-23 15:10:09 +00:00