Commit Graph

43 Commits

Author SHA1 Message Date
Pedro M. Baeza
dd3d648b66 [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.
2021-11-09 10:08:01 +07:00
Jairo Llopis
3d89c352de [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
2021-11-09 10:08:01 +07:00
Pedro M. Baeza
45a68afabf [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.
2021-11-09 10:08:01 +07:00
Ernesto Tejeda
e64dd8cc4d [FIX] contract: Select the correct sections/notes to be invoiced 2021-11-09 10:08:01 +07:00
Stéphane Valaeys
0a4aedee11 Set company_id earlier in the invoice preparation process so that _onchange_partner can execute as intended. 2021-11-09 10:08:01 +07:00
sbejaoui
8f0987dce4 [IMP] - contract termination 2021-11-09 10:08:01 +07:00
sbejaoui
b88b9eec95 [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
2021-11-09 10:08:01 +07:00
Pedro M. Baeza
ec602d5612 [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.
2021-11-09 10:08:00 +07:00
Pedro M. Baeza
0108df7782 [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).
2021-11-09 10:08:00 +07:00
sbejaoui
654c45c153 [12.0][ADD] - Add note field to contract 2021-11-09 10:08:00 +07:00
Pedro M. Baeza
5ffcb9eb8e [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.
2021-11-09 10:08:00 +07:00
sbejaoui
80be75d6be [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
2021-11-09 10:08:00 +07:00
hparfr
c9664eb8e6 Add commercial_partner_id fields into contract module
Remove string attribute
2021-11-09 10:07:59 +07:00
Pedro M. Baeza
dfd24523a7 [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.
2021-11-09 10:07:59 +07:00
sbejaoui
63dc0c2e09 [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
2021-11-09 10:07:59 +07:00
Thomas Binsfeld
5383d0b68d [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
2021-11-09 10:07:59 +07:00
Thomas Binsfeld
bfe3154377 [REF] Contract: split from analytic account 2021-11-09 10:07:59 +07:00
Aaron Henriquez
94d5b6bf09 [IMP]pass the payment term to the contract from the partner 2021-11-09 10:07:59 +07:00
sbejaoui
1250997cd6 [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
2021-11-09 10:07:59 +07:00
sbejaoui
280727e5cf [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
2021-11-09 10:07:59 +07:00
sbejaoui
16d460fde1 [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
2021-11-09 10:07:59 +07:00
sbejaoui
51c1eb35d8 [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.
2021-11-09 10:07:59 +07:00
Thomas Binsfeld
96ffd8a54d [FIX] Contract to Invoice: take contract vendor instead of partner's 2021-11-09 10:07:59 +07:00
Thomas Binsfeld
8806a91828 [IMP] Contract: matching invoice view depending on contract type
[ADD] Contract: invoice partner
2021-11-09 10:07:59 +07:00
Thomas Binsfeld
481a38ceb2 [ADD] Contract: fiscal position
[ADD] Contract: new contributor

[REF] Contract: indexes
2021-11-09 10:07:59 +07:00
Thomas Binsfeld
a15cd77cf4 [FIX] Contract: copy payment term on generated invoice 2021-11-09 10:07:59 +07:00
sbejaoui
e386f17ed5 [MV] - move onchange method to contract_product module
[RMV] - Remove useless check
2021-11-09 10:07:59 +07:00
sbejaoui
fdbedb602d [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
2021-11-09 10:07:59 +07:00
sbejaoui
86e09d723d [12.0][IMP] - check invoice line vals before assignment
[FIX] - Fix unit tests.
2021-11-09 10:07:59 +07:00
Thomas Binsfeld
17c2527ee0 [ADD] Contract: payment term 2021-11-09 10:07:59 +07:00
sbejaoui
ee91a0fd7a [FIX] - default value for active field in contract line
[FIX] - fix flake8
2021-11-09 10:07:59 +07:00
sbejaoui
8e56200b56 [FIX] - as date_start is required, constraints on it become useless
[FIX] - for finished contract _get_lines_to_invoice should return False
2021-11-09 10:07:59 +07:00
Thomas Binsfeld
2b80ed5696 [REF] Contract: invoice creation
[FIX] - Fix typo

[IMP] - date start required for contract line

[REF] Gitignore: .eggs

[REF] Contract Unit Tests: base the cron check on invoice lines instead of invoices
2021-11-09 10:07:59 +07:00
sbejaoui
2d917d03bd [FIX] - contract recurring_next_date ignore canceled lines
[FIX] - fix _get_invoiced_period if recurring_next_date manually updated
2021-11-09 10:07:59 +07:00
sbejaoui
b64d082f8d [FIX] - compute recurring_next_date for contract
[IMP] - get contract line default data onchange product_id
2021-11-09 10:07:59 +07:00
sbejaoui
0d7579f37e [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
2021-11-09 10:07:59 +07:00
sbejaoui
23d42d6974 [IMP] - 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
2021-11-09 10:07:58 +07:00
Dave Lasley
24d3965a73 [IMP][10.0] contract: Add templating (#42)
Add template functionality for contracts
2021-10-28 14:04:11 +07:00
Pedro M. Baeza
bccedcc858 [MIG] contract: Migration to version 10.0 2021-10-28 14:04:11 +07:00
Carlos Dauden
22c4c2f22b [IMP] contract: Add past receipt type. Fix yearly. Add month last day 2021-10-28 14:04:11 +07:00
Pedro M. Baeza
40e144652b [IMP+FIX] contract: Better README + category + assign contract unconditionally 2021-10-28 14:04:11 +07:00
carlosdauden
a74c91fe31 [9.0][IMP] contract: Get default invoice contact. (#32) 2021-10-28 14:04:11 +07:00
Carlos Incaser
9140314de1 [MIG] contract: from v7 to v9 improving features
* Tests added
* Filters added.
* Add _id/_ids in old property fields
* Translations
2021-10-28 14:04:11 +07:00