Commit Graph

63 Commits

Author SHA1 Message Date
manu
1a8313fd4d [FIX] contract: Avoid error in invoicing contracts crone 2021-12-16 09:51:58 +01:00
João Marques
02df26cd6e [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
2021-09-10 12:06:47 +01:00
Pedro M. Baeza
35ceea393d [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
2021-07-01 18:01:07 +02:00
Víctor Martínez
b5ac6aa557 [FIX] contract: Generate recurring invoice
Remove line_ids from invoice values to prevent invoice without lines according to https://github.com/odoo/odoo/pull/67879 change
2021-03-18 09:54:01 +01:00
Víctor Martínez
2813331e72 [FIX] contract: Changed modification_mail auto to appear like email and not internal comment 2021-03-17 12:32:37 +01:00
Víctor Martínez
2b87ec9a82 [FIX] contract: Error in test_contract_invoice_followers 2021-02-03 09:08:20 +01:00
Víctor Martínez
88edf6c7b7 [FIX] contract: Prevent first contract modification mail to partner 2021-01-23 18:47:56 +01:00
Víctor Martínez
1f616b56b1 [FIX] contract: Set groups in back_in_edit_mode link to show only correct users 2021-01-19 09:07:07 +01:00
Víctor Martínez
ecacc4e8f2 [FIX] contract: Modification mail + Auto-create follower in contract creation related to partner_id
Co-Authored-By: Pedro M. Baeza <pedro.baeza@tecnativa.com>
2021-01-15 10:12:44 +01:00
Víctor Martínez
da4962abf0 [FIX] contract: Missing migration to 13.0 2021-01-04 17:08:49 +01:00
Víctor Martínez
aa5f72c734 [IMP] contract: Add contract modification 2020-12-29 08:27:50 +01:00
Víctor Martínez
e367d090c3 [IMP] contract: Portal 2020-12-25 12:25:04 +01:00
Víctor Martínez
912d7385a9 [IMP] contract: Add followers to invoices created 2020-12-03 16:56:05 +01:00
Carlos Roca
c1dfdf9b09 [IMP] contract: Set a condicion to avoid create lines on invoices 2020-10-28 12:50:36 +01:00
Denis Roussel
3a5ec60fd4 [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
2020-10-24 19:30:50 +02:00
Pedro M. Baeza
cd086ddbb4 [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.
2020-10-24 19:30:50 +02:00
Pedro M. Baeza
321c688b75 [MIG] contract: Migration to 13.0
- Standard procedure
- Adapt invoice creation to new account.move
- Tests adapted
2020-08-28 20:07:40 +02:00
Pedro M. Baeza
ac2e2b15bc [IMP] : black, isort, prettier 2020-08-28 20:07:39 +02:00
sbejaoui
afd12bafd1 [12.0][FIX] - fiscal position, payment mode and pricelist obtained according to contract company 2020-08-28 20:06:38 +02:00
Jairo Llopis
28782178d8 [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
2020-07-28 13:02:32 +02:00
Pedro M. Baeza
af8097a027 [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.
2020-07-17 19:29:41 +02:00
Jairo Llopis
ea83dfa277 [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
2020-07-14 11:53:19 +02:00
Pedro M. Baeza
f453599eea [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.
2020-07-14 11:53:18 +02:00
Ernesto Tejeda
243935faff [FIX] contract: Select the correct sections/notes to be invoiced 2020-07-14 11:53:00 +02:00
Stéphane Valaeys
fd8a86bbda Set company_id earlier in the invoice preparation process so that _onchange_partner can execute as intended. 2020-07-14 11:52:21 +02:00
sbejaoui
3c0d520c91 [IMP] - contract termination 2020-07-13 18:26:43 +02:00
sbejaoui
f7f148c85e [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
2020-07-13 18:26:42 +02:00
Pedro M. Baeza
ed6074d399 [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.
2020-07-13 18:26:42 +02:00
Pedro M. Baeza
410fd6452b [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).
2020-07-13 18:26:42 +02:00
sbejaoui
5d846a196b [12.0][ADD] - Add note field to contract 2020-07-13 18:26:42 +02:00
Pedro M. Baeza
77e405e05d [FIX] contract: 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.
2020-07-13 18:26:42 +02:00
sbejaoui
d58a5bdb2a [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
2020-07-13 18:26:42 +02:00
hparfr
8517152991 Add commercial_partner_id fields into contract module
Remove string attribute
2020-07-13 18:26:41 +02:00
Pedro M. Baeza
8aa27b9f6e [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.
2020-07-13 18:26:41 +02:00
sbejaoui
f4db1ce2b0 [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
2020-07-13 18:26:41 +02:00
Thomas Binsfeld
1169382b18 [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
2020-07-13 18:26:41 +02:00
Thomas Binsfeld
fff9eac579 [REF] Contract: split from analytic account 2020-07-13 18:26:41 +02:00
Aaron Henriquez
683e186902 [IMP]pass the payment term to the contract from the partner 2020-07-13 18:26:41 +02:00
sbejaoui
80c6866709 [IMP] - A canceled contract line can't be set to auto-renew
[REF] Contract: pep8

[IMP] Contract: update USAGE section of README

[IMP]call onchange_is_auto_renew when changing template
2020-07-13 18:26:41 +02:00
sbejaoui
d5c94e74bd [FIX] - don't play onchange date_start for old lines on contract template change
[FIX] - Fix stop post message

[FIX] - Fix sale_contract_count should count all partner contract

[FIX] - set recurring_next_date to False if contract line stoped at last date invoiced

[FIX] - Group by next_invoice also considers dates in the past
2020-07-13 18:26:41 +02:00
sbejaoui
c139f2d734 [FIX] - Onchange contract line don't reste contract lines
[FIX] - Rename _get_invoiced_period to _get_period_to_invoice

[ADD] - Add stop_at_date_end to _get_period_to_invoice

[FIX] - Remove useless filter
2020-07-13 18:26:41 +02:00
sbejaoui
b1fc4cb781 [REF] - add method to get quantity to invoice
the contract line quantity can be in some use cases variable, to simplify
the way it is changed we add a new method _get_quantity_to_invoice.
2020-07-13 18:26:41 +02:00
Thomas Binsfeld
1a04a391ae [FIX] Contract to Invoice: take contract vendor instead of partner's 2020-07-13 18:26:41 +02:00
Thomas Binsfeld
533a33aca2 [IMP] Contract: matching invoice view depending on contract type
[ADD] Contract: invoice partner
2020-07-13 18:26:41 +02:00
Thomas Binsfeld
c06e3f52d8 [ADD] Contract: fiscal position
[ADD] Contract: new contributor

[REF] Contract: indexes
2020-07-13 18:26:41 +02:00
Thomas Binsfeld
b79fe4caec [FIX] Contract: copy payment term on generated invoice 2020-07-13 18:26:41 +02:00
sbejaoui
10cbdf2e8e [MV] - move onchange method to contract_product module
[RMV] - Remove useless check
2020-07-13 18:26:41 +02:00
sbejaoui
8b0398abc9 [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
2020-07-13 18:26:41 +02:00
sbejaoui
433b8fa3fa [12.0][IMP] - check invoice line vals before assignment
[FIX] - Fix unit tests.
2020-07-13 18:26:41 +02:00
Thomas Binsfeld
6555161f24 [ADD] Contract: payment term 2020-07-13 18:26:41 +02:00