Commit Graph

98 Commits

Author SHA1 Message Date
Wolfgang Pichler
10e9287cb6 [MIG] contract: Migration to 16.0 2023-03-15 12:38:45 +01:00
Mourad
1a9a2fdaac [FIX] contract: bug onchange date_start (comparison between bool and date) 2023-03-15 12:38:45 +01:00
Christopher Rogos
e79298dfb8 [IMP] Add link to contract in invoice chatter 2023-03-15 12:38:45 +01:00
Víctor Martínez
d381d11917 [IMP] contract: Set invoice_user_id field with Form() to apply the correct values of other fields (team_id for example).
TT39934
2023-03-15 12:38:45 +01:00
chandni299
ad929e2512 [15.0][IMP] contract : show tags with colors in the contract 2023-03-15 12:38:45 +01:00
Denis Roussel
5261c621d5 [FIX+IMP] contract: lots of things
- Improve invoice generation through cron
  Avoid too much sql queries by iterating on first search
  Avoid performances problems through invoices ids isntead
  of recordset
- Improve tests
  Adds multi company tests
- Add a generation type on contract
  Add a generation type on contract that allows to generate other
  document than invoice (e.g. sale order)
- Allows to get several functions to create recurring documents
- Set visibility on button to show invoices
- Add generation_type field
- Update button visibility
- Simplify test flow
- Use Odoo conventions for methods
- Add explicit cron create type for invoices
- Improve function call for cron recurring creates
- Improve multi-company tests / don't break former tests structure
- Fix forwardport from 14.0 #741
2023-03-15 12:38:45 +01:00
mariadforgeflow
e230ba9f0f [FIX] contract: add default_move_type in context 2023-03-15 12:38:45 +01:00
oca-git-bot
e41bfe34a3 [IMP] update dotfiles [ci skip] 2023-03-15 12:38:45 +01:00
Denis Roussel
0e3fbebbeb [FIX+IMP] contract: Several things
- Don't update recurring_next_date as computed
- Compute recurring_next_date for False values too + simplify compute as False values are already taken into account
  In get_next_invoice_date, False values are already taken into account, so, simplifying
  compute_recurring_next_date function.
- Add comment to remind updating method in next version
2023-03-15 12:38:45 +01:00
manu
fbc37b5db4 [FIX] contract: Avoid error in invoicing contracts crone 2023-03-15 12:38:44 +01:00
Jean-Charles Drubay
2cae7764c8 [MIG] contract: Migration to 15.0
Most changes are related to the switch from jinja to qweb in mail templates.

Also included:
- convert deprecated onchange that returns a domain and other deprecation warnings
  (see below)
- Add migration scripts from version 14.0 (force the update of the mail templates)
- Fix warnings from pre-commit checks

Fixes depreciation warnings:

- onchange method ContractAbstractContractLine._onchange_product_id returned
  a domain, this is deprecated
- SavepointCase is deprecated:
  https://github.com/odoo/odoo/blob/15.0/odoo/tests/common.py#L742
- assertDictContainsSubset: According to:
  https://stackoverflow.com/questions/20050913/python-unittests-assertdictcontainssubset-recommended-alternative
2023-03-15 12:38:44 +01:00
Jean-Charles Drubay
7f620ee1e6 [IMP] contract: black, isort, prettier 2023-03-15 12:38:44 +01:00
João Marques
052b34543d [FIX] contract: Fix invoice creation and salesperson assignment
In v13, the `user_id` field is a related field to `invoice_user_id`, that defaults to the environment user (`self.env.user`).
Therefore, if we try to create an invoice just by passing `user_id`, it would be overwritten by the default computation of `invoice_user_id`.
This fixes it by passing the correct field and data.

TT31715
2023-03-15 12:38:44 +01:00
Alexis de Lattre
150fa46ced [FIX] contract: fix an obvious crash when self is a multi-recordset 2023-03-15 12:38:44 +01:00
Pedro M. Baeza
29165e2854 [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
2023-03-15 12:38:44 +01:00
Pedro M. Baeza
388cee39ef [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.
2023-03-15 12:38:44 +01:00
Francisco Ivan Anton Prieto
86ed1e128c [MIG] contract: Migration to 14.0 2023-03-15 12:38:44 +01:00
Francisco Ivan Anton Prieto
ae6a8179b7 [IMP] contract: black, isort, prettier 2023-03-15 12:38:44 +01:00
Víctor Martínez
080bcef159 [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
2023-03-15 12:38:44 +01:00
newtratip
b90a42d1e5 [13.0][FIX] contract: consistency between contract count and contract action 2023-03-15 12:38:44 +01:00
nans
45ab1aafa3 [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
2023-03-15 12:38:44 +01:00
Víctor Martínez
652c34dcea [FIX] contract: Error in test_contract_invoice_followers 2023-03-15 12:38:44 +01:00
Denis Roussel
d17960dd51 [13.0][FIX] contract: Impossible to create invoices from contract lines as section 2023-03-15 12:38:44 +01:00
Víctor Martínez
9d4a80bc29 [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>
2023-03-15 12:38:44 +01:00
Víctor Martínez
632ef42207 [IMP] contract: Add contract modification + contract: Add fields to contract page in portal 2023-03-15 12:38:44 +01:00
Víctor Martínez
5f20736565 [IMP] contract: Portal 2023-03-15 12:38:44 +01:00
Víctor Martínez
5f2e61bb16 [IMP] contract: Add followers to invoices created
[UPD] Update contract.pot

[UPD] README.rst
2023-03-15 12:38:43 +01:00
Carlos Roca
6c4d8b7341 [IMP] contract: Set a condicion to avoid create lines on invoices 2023-03-15 12:38:43 +01:00
Denis Roussel
8f7d244cf8 [13.0][FIX] contract: Recompute recurring next date
After invoice creation, the recurring next date has to be recomputed
in order to get good values

[UPD] Update contract.pot
2023-03-15 12:38:43 +01:00
Pedro M. Baeza
cdec77eda2 [IMP+REF] contract: Allow to set recurrency at header level
Big refactoring for allowing to define recurrency at header level for simplifying
the use of the module for most of the cases where you don't need different
recurrency at line level.
2023-03-15 12:38:43 +01:00
Pedro M. Baeza
23046b09b8 [MIG] contract: Migration to 13.0
- Standard procedure
- Adapt invoice creation to new account.move
- Tests adapted
2023-03-15 12:38:43 +01:00
Pedro M. Baeza
1e66a22c61 [IMP] : black, isort, prettier 2023-03-15 12:38:43 +01:00
sbejaoui
7051ca78c1 [12.0][FIX] - fiscal position, payment mode and pricelist obtained according to contract company 2023-03-15 12:38:43 +01:00
Jairo Llopis
4e570bd46f [FIX] contract: multi-company assignment notification
Steps to reproduce the problem:

1. Log in as Mitchell Admin.
2. Create contract CNT-A for company CMP-A, assigned to Marc Demo.
3. Create contract CNT-B for company CMP-B, assigned to Marc Demo.
4. Run cron to create recurring invoices.

Actual results:

- Odoo sends automated assignment emails to Marc Demo, which indicate the name of the company activated for `__system__` user whlie the cron was being executed.

Expected results after this patch:

- Odoo sends automated assignment emails to Marc Demo, which indicate the invoice company.

@Tecnativa TT24657
2023-03-15 12:38:43 +01:00
Pedro M. Baeza
cdce7019a8 [IMP] contract: Allow to set a manual currency
Done through an extra field + inverse in the existing compute. This way, we have
the flexibility of auto-remove custom value if it matches the computed one + we don't
need extra changes in the rest of the code.
2023-03-15 12:38:43 +01:00
Jairo Llopis
e94ff8bc26 [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
2023-03-15 12:38:43 +01:00
Pedro M. Baeza
e74cc4c023 [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
2023-03-15 12:38:43 +01:00
sbejaoui
0bb199129b [IMP] - Contract: add new recurring_rule_type quarterly and semesterly 2023-03-15 12:38:43 +01:00
Ernesto Tejeda
63f98fde41 [FIX] contract: Select the correct sections/notes to be invoiced 2023-03-15 12:38:43 +01:00
Pedro M. Baeza
9d35873bc5 [FIX+IMP] contract: improve test coverage with new sections + fix search method 2023-03-15 12:38:43 +01:00
Ernesto Tejeda
69df8ed71a [IMP] contract: add section and notes in contract line 2023-03-15 12:38:43 +01:00
Stéphane Valaeys
060a2e5424 Set company_id earlier in the invoice preparation process so that _onchange_partner can execute as intended. 2023-03-15 12:38:43 +01:00
sbejaoui
00040dab2a [IMP] - Add contract tags 2023-03-15 12:38:43 +01:00
sbejaoui
9e364eff88 [IMP] contract: Improve partner With running contracts search view filter + contract termination 2023-03-15 12:38:33 +01:00
Ernesto Tejeda
a813ae715f [IMP] contract: add analytic_tag_ids field in contract lines 2023-03-15 12:38:33 +01:00
sbejaoui
946f2e2d48 [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
2023-03-15 12:38:33 +01:00
Pedro M. Baeza
36bf7203ba [IMP] contract: remove redundant method
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.
2023-03-15 12:38:33 +01:00
Pedro M. Baeza
63d36f1c5f [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).
2023-03-15 12:38:33 +01:00
sbejaoui
d8e86aec6e [IMP+FIX] contract: Add failing test for wrong invoicing date after contract line stop + stop update recurring_next_date 2023-03-15 12:38:33 +01:00
sbejaoui
ddd6bfb967 [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
2023-03-15 12:38:33 +01:00