Commit Graph

98 Commits

Author SHA1 Message Date
Stéphane Bidoul (ACSONE)
ab4cc4d461 [IMP] contract: display invoicing offset 2023-03-15 12:38:33 +01:00
sbejaoui
2fab07b9e3 [FIX+REF] contract: Improve unit tests + add unit test for different combinations for next invoicing period + simplify _get_period_to_invoice 2023-03-15 12:38:21 +01:00
Stéphane Bidoul (ACSONE)
3afddeec07 [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.
2023-03-15 12:38:21 +01:00
Stéphane Bidoul (ACSONE)
a0b85a2b0e [REF] contract: Several refactorings
- rename misnamed methods
- clarify _get_recurring_next_date
  First compute the next period end date,
  then derive the next invoice date from the next
  period stard and end date.
- handle max_date_end in _get_recurring_next_date
  This concentrates all next date calculation
  logic in one place, and will allow further simplifications.
- add next period start/end fields
  Add two computed field showing the next period
  start and end date. This improve the UX and will
  enable further simplifications in the code.
- refactor _get_period_to_invoice
  Move the part of the logic that compute the next
  period depending on the chosen next invoice date
  to _get_next_period_date_end.
2023-03-15 12:38:21 +01:00
Pedro M. Baeza
a9ed053585 [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.
2023-03-15 12:38:21 +01:00
sbejaoui
440d83e9b2 [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
2023-03-15 12:38:20 +01:00
sbejaoui
0964de5f8f [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
2023-03-15 12:37:51 +01:00
Pedro M. Baeza
d49b5d776f [MIG] contract: Missing renaming of invoice link
Done through `oldname`.
2023-03-15 12:37:40 +01:00
hparfr
a76940b527 Add commercial_partner_id fields into contract module
Remove string attribute
2023-03-15 12:37:40 +01:00
Pedro M. Baeza
46830e1a51 [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.
2023-03-15 12:37:40 +01:00
sbejaoui
5339342d4c [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
2023-03-15 12:37:40 +01:00
Thomas Binsfeld
a3f1cba1d1 [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
2023-03-15 12:37:40 +01:00
Aaron Henriquez
6e24d1d83a [IMP]pass the payment term to the contract from the partner 2023-03-15 12:37:40 +01:00
sbejaoui
06b4f2576b [REF+FIX+IMP] contract: Several things
[FIX] - manual_renew_needed should be visible to all contract users
[REF] - add _get_next_invoiced_period method
[FIX] - Fix In progress contract filter
[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.
[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
[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
[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
2023-03-15 12:37:40 +01:00
Thomas Binsfeld
5a06f31990 [FIX] Contract to Invoice: take contract vendor instead of partner's 2023-03-15 12:37:40 +01:00
sbejaoui
d2beafeffd [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
2023-03-15 12:37:40 +01:00
Thomas Binsfeld
8ef0ed68c8 [IMP] Contract: matching invoice view depending on contract type
[ADD] Contract: invoice partner
2023-03-15 12:37:40 +01:00
sbejaoui
62eaa9b5e5 [FIX+IMP] contract: recurring_next_date is required if date_end is null + rename recurring_interval to Invoice Every 2023-03-15 12:37:28 +01:00
Thomas Binsfeld
edcdafc028 [ADD] Contract: fiscal position
[ADD] Contract: new contributor

[REF] Contract: indexes
2023-03-15 12:37:28 +01:00
sbejaoui
910abf8288 [IMP] - Should be able to stop a past contract line 2023-03-15 12:37:28 +01:00
Thomas Binsfeld
3b694fd3c6 [FIX] Contract: copy payment term on generated invoice 2023-03-15 12:37:28 +01:00
sbejaoui
36d4d0e949 [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
2023-03-15 12:37:28 +01:00
Thomas Binsfeld
9d07a8608b [REF+FIX+IMP] Contract: invoice creation + date start required for contract line + Gitignore: .eggs + tests: base the cron check on invoice lines instead of invoices + payment term 2023-03-15 12:37:28 +01:00
sbejaoui
2e701748e3 [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
2023-03-15 12:37:28 +01:00
Jordi Ballester Alomar
6b4286aead [FIX] Errors in navigation to customer invoices / vendor bills 2023-03-15 12:37:28 +01:00
sbejaoui
09684f1461 [MIG] contract: Migration to 12.0 2023-03-15 12:37:28 +01:00
mreficent
4aaaa4549e [IMP] Make sure it works for sale and purchase contracts
[UPD] Update contract.pot
2023-03-15 12:37:28 +01:00
Stefan Becker
da498fdd26 [IMP] Add type to analytic account / contract 2023-03-15 12:37:28 +01:00
Dmytro Katyukha
5363ac188a [FIX] analytic invoice/contract lines inheritance
Bug description
---------------

`account.analytic.contract.line` inherits
`account.analytic.invoice.line`

`account.analytic.invoice.line` defines field `analytic_account_id`:
   - comodel='account.analytic.account'

`account.analytic.contract.line` redefines field `analytic_account_id`:
   - comodel='account.analytic.contract'

On attempt to extend `account.analytic.invoice.line` model adding
field that depends on `analytic_account_id.date_start`
Odoo fails to update, because it adds this field to
`account.analytic.contract.line` through inheritance,
and `account.analytic.contract` model have no this field.

What is done
------------

Change inheritance order:
- `account.analytic.invoice.line` inherits
`account.analytic.contract.line`
- no file renames at this stage (this wil be done in next commit)
2023-03-15 12:34:59 +01:00
Pedro M. Baeza
4c70e00f26 [IMP] contract_variable_quantity: Recompute price when changing qty
If you have contract lines with automatic price and your pricelist
contains different prices per quantity, the price is not changed
when computing quantity.

This PR fixes this.
2023-03-15 10:54:36 +01:00
Carlos Dauden
70a545da0c [IMP] contract: Add extend existing invoice possibility 2023-03-15 10:54:36 +01:00
Pedro M. Baeza
6a7d445072 [IMP] contract: Automatic prices for lines 2023-03-15 10:54:36 +01:00
Carlos Dauden
a8fba7f55c [IMP+FIX] contract: Several things:
* [IMP] Add computed dates from/to period invoiced (#140)
* [IMP] Improve partner contract smartbutton
* [FIX] Onchange contract template raise error
* [FIX] Invalid pricelist name
2023-03-15 10:54:36 +01:00
Pedro M. Baeza
590088df4b [FIX+IMP] contract: Real fix to company_id missing + improvements + Correct references in the contract report
* company_id was empty because an onchange, not inheritance nor visibility
* Added multi-company group to company_id fields
* Added multi-company access rule to contract templates
* Fix double %% in XML dates that was causing an error
* When creating a contract, recurring_invoices is set by default
2023-03-15 10:54:24 +01:00
Gustavo Orozco H
2ee02e0aa4 [10.0][FIX] Correct domain attribute in field journal_id (#120)
* Correct domain attribute in field journal_id

Original domain includes unknown value company_id. Throws error when selecting the journal.

* Corregidos errores detectados por Lint

* Refactoring, DRY

* [FIX] Add missing field company_id to account_analytic_contract

* Small refactoring for company_id field
2023-03-15 10:43:56 +01:00
Pedro M. Baeza
3954c9073d [10.0][FIX+IMP] contract: Improve usability and don't fail on wrong data (#130)
* [FIX+IMP] contract: Improve usability and don't fail on wrong data

* Cron create invoices masked for avoiding silent errors
* New constraints for assuring data consistency
* UI helps for entering consistent data
* Spanish translation
* Remove double company_id field on form
2023-03-15 10:43:56 +01:00
Fekete Mihai
3c8f8662bd [MIG] contract: Migration to version 11.0 2023-03-15 10:43:56 +01:00
Pedro Castro Silva
3b3ae8ad34 [IMP] contract: Add display sequence on contract lines (#119) 2023-03-15 10:43:56 +01:00
Carlos Dauden
3d173b9259 [IMP] contract: Module contract improvements (#107) 2023-03-15 10:43:56 +01:00
Dave Lasley
48f159085c [FIX] contract: Template lines handling (#92)
Update contract template lines handling to fix #80, and fix #59 #100
2023-03-15 10:43:56 +01:00
cubells
7753273a4e [IMP][10.0] contract: Add report + send by mail (#86)
* [IMP][9.0] contract: Add report + send by mail

* Update translation and rename contract report

* Changes requested and translation updated
2023-03-15 10:43:56 +01:00
Dave Lasley
825b7a46fa [FIX] contract: Operator issue in price get
* Add a default date in the instance that an analytic account doesn’t exist (templates) - fixes #68
2023-03-15 10:43:56 +01:00
Dave Lasley
30207c45bc [IMP][10.0] contract: Add templating (#42)
Add template functionality for contracts
2023-03-15 10:43:56 +01:00
Pedro M. Baeza
1e0352a162 [MIG] contract: Migration to version 10.0 2023-03-15 10:43:56 +01:00
Carlos Dauden
e65f6605ac [IMP] contract: Add past receipt type. Fix yearly. Add month last day 2023-03-15 10:43:56 +01:00
Pedro M. Baeza
e552c83834 [IMP+FIX] contract: Better README + category + assign contract unconditionally 2023-03-15 10:43:56 +01:00
carlosdauden
6aadeaa0a5 [9.0][IMP] contract: Get default invoice contact. (#32) 2023-03-15 10:43:56 +01:00
Carlos Incaser
0aa65b2e52 [MIG] contract: from v7 to v9 improving features
* Tests added
* Filters added.
* Add _id/_ids in old property fields
* Translations
2023-03-15 10:43:56 +01:00