Commit Graph

65 Commits

Author SHA1 Message Date
Pedro M. Baeza
47e88819e6 [FIX] contract: Invoice creation message translatable
As it was, the text to translate is not correctly extracted, so it's
not translated, creating a mix of languages, as `_creation_message`
is returning a translated sentence.

We take also the opportunity to change the way the sentence is built
for having as translatable only the "by contract" words, to avoid
possible errors in translations due to the placeholders.
2025-02-01 11:48:19 +01:00
sergio-teruel
35852ea3b9 [IMP] contract: Terminate contract lines with last_date_invoiced if it is higher than terminate date from wizard 2025-01-10 14:04:06 +01:00
Carlos Lopez
8264b77b7c [FIX] contract: link contract instead of move
Before this commit, the posted message was linked to the move instead of the contract.
2024-12-24 07:56:51 -05:00
sergio-teruel
550d08266c [FIX] contract: Link format error for messages posted when creates manual invoices 2024-09-03 21:26:22 +02:00
Carolina Fernandez
8fe5f2c39b [FIX] contract: Fix error when sending contract by email
Fix ValueError: Deprecated usage of 'default_res_id', should use 'default_res_ids'.
2024-08-12 05:33:14 -07:00
Alicia Garzo Moreno
9145184622 [17.0][IMP] contract: solve error for last_date_invoiced field 2024-04-15 20:19:11 +02:00
Christopher Rogos
d1cb9312ae [MIG] contract: Migration to 17.0 2024-04-10 16:23:33 +00:00
Christopher Rogos
fcaddfcb46 [IMP] contract: black, isort, prettier 2024-04-03 07:12:05 +00:00
fkantelberg
cf36d389e0 [FIX] No contract line and invoices when contract is archived 2024-03-23 15:10:11 +00:00
Carolina Fernandez
4471c5b01d [16.0][FIX] contract: invoice message create 2024-03-23 15:10:11 +00:00
Wolfgang Pichler
80ab14eca7 [MIG] contract: Migration to 16.0 2024-03-23 15:10:11 +00:00
Christopher Rogos
a2f60e723e [IMP] Add link to contract in invoice chatter 2024-03-23 15:10:11 +00:00
Víctor Martínez
14afc920ac [IMP] contract: Set invoice_user_id field with Form() to apply the correct values of other fields (team_id for example).
TT39934
2024-03-23 15:10:11 +00:00
Denis Roussel
b36db56b6a [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
2024-03-23 15:10:11 +00:00
mariadforgeflow
1b1b2fd477 [FIX] contract: add default_move_type in context 2024-03-23 15:10:11 +00:00
manu
f8fdb52745 [FIX] contract: Avoid error in invoicing contracts crone 2024-03-23 15:10:11 +00:00
Jean-Charles Drubay
da393c937d [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
2024-03-23 15:10:11 +00:00
João Marques
5ff79bd878 [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
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
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
Víctor Martínez
7cf5d4547c [FIX] contract: Error in test_contract_invoice_followers 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
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
Carlos Roca
f4c0376a62 [IMP] contract: Set a condicion to avoid create lines on invoices 2024-03-23 15:10:10 +00:00
Denis Roussel
de8ad4886c [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
2024-03-23 15:10:10 +00:00
Pedro M. Baeza
1a31ec1ee7 [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.
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
sbejaoui
46e0645584 [12.0][FIX] - fiscal position, payment mode and pricelist obtained according to contract company 2024-03-23 15:10:10 +00:00
Jairo Llopis
6accadb475 [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
2024-03-23 15:10:10 +00:00
Pedro M. Baeza
38d8f43619 [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.
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
Ernesto Tejeda
03af8ba703 [FIX] contract: Select the correct sections/notes to be invoiced 2024-03-23 15:10:10 +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
6cb0fc6ebe [IMP] contract: Improve partner With running contracts search view filter + contract termination 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
8cdc1516d4 [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.
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
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
Pedro M. Baeza
912480c68d [FIX] contract: Don't execute onchange after invoice creation + Tests with duplicated name
- Don't execute onchange after invoice creation
  Using that approach (that is the current one in core)  has a lot of side effects and
  performance bottlenecks. You can read odoo/odoo#40156 for summarizing them.
  This also improves the handling of the values of payment term an fiscal position
  for using the partner ones if not set.
- Tests with duplicated name
  So they are not executed at all. Detected by chance looking for a test for the other PR.
2024-03-23 15:10:09 +00:00
sbejaoui
ab32fa5f30 [12.0][FIX] - Run onchange contract_type when changing the contract template
Fix this use-case:

If the contract journal is not set on the contract template the contract is created
without a journal when confirming the sale order
2024-03-23 15:10:09 +00:00
hparfr
f3102d80b5 Add commercial_partner_id fields into contract module
Remove string attribute
2024-03-23 15:10:09 +00:00
Pedro M. Baeza
e432959974 [FIX+IMP+MIG] contract: Several refinements:
* Remove incorrect oldname attributes.
* Add filter on partners for running contracts (+ a support o2m field for that).
* Cover more tables in model renaming + cleaner code using a loop.
* Don't copy contract lines, but rename table + copy contract records on pre.
* Contract code is now populated to "Reference/Description" field in invoice.
* Order on new contract model has been restored to the same as old analytic accounts.
2024-03-23 15:10:09 +00:00
sbejaoui
6e9ebe9a3f [IMP] - Make one migration from 12.0.1 to 12.0.4
[RMV] - Remove empty file

[IMP] - Update no_update cron after migration

[IMP] - move contract template recurrence info to line level

[FIX] - Fix contract line model description

[IMP] - Link contracts to analytic accounts

[FIX] - Fix pylint

[IMP] - Move chatter and attachments from analytic account to contract

[IMP] - Move account_analytic_id to contract line level

[IMP] - Improve version check in migration script

[IMP] - Move contracts followers from analytic accounts

[ADD] - Add mail.activity.mixin to contract.contract model

remove data drop from migration scripts

[12.0][FIX] - Fix _init_last_date_invoiced

fix flake8

[ADD] - Update contributors list
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