Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
272 commits
Select commit Hold shift + click to select a range
9b7bfb9
[FIX+IMP] contract: Real fix to company_id missing + improvements + C…
pedrobaeza Nov 28, 2017
cb3dc83
[IMP+FIX] contract: Several things:
carlosdauden Jan 17, 2018
ffb4df3
[IMP] contract: Automatic prices for lines
pedrobaeza Dec 23, 2017
02a77e5
[FIX] contract: Let billing users have access rights for contracts (#…
levkar Apr 1, 2018
2a5e7ef
[IMP] contract: Add extend existing invoice possibility
carlosdauden Mar 28, 2018
0c69f4f
[IMP] contract_variable_quantity: Recompute price when changing qty
pedrobaeza Apr 24, 2018
25e267a
[FIX] contract: Custom values overwrited by xml, missed noupdate
carlosdauden Jun 13, 2018
7285896
[IMP] contract: possible error in migration if the column does not exist
jonerikceberio Jul 9, 2018
a5c26c2
[FIX] analytic invoice/contract lines inheritance
katyukha Jun 26, 2018
dad6180
[IMP] Fix README.rst
RoelAdriaans Jul 21, 2018
717e884
Translated using Weblate (Dutch)
RoelAdriaans Jul 29, 2018
6ac73a0
Translated using Weblate (German)
Aug 7, 2018
730cc8c
[IMP] Add type to analytic account / contract
funbaker Sep 6, 2017
e3cfc26
[IMP] Make sure it works for sale and purchase contracts
MiquelRForgeFlow Jul 4, 2018
67b674e
Translated using Weblate (Spanish)
etobella Sep 18, 2018
f0d8d8b
Translated using Weblate (Portuguese (Portugal))
dreispt Sep 23, 2018
9fec39a
[IMP] contract: Don't depend on external data
pedrobaeza Sep 29, 2018
2a275ee
[FIX] Contract Spanish Translation
Oct 3, 2018
d3435f8
[MIG] contract: Migration to 12.0
sbejaoui Oct 25, 2018
2cda545
Translated using Weblate (Spanish)
mvrodriguez Feb 4, 2019
6e4c651
Translated using Weblate (Galician)
mvrodriguez Feb 4, 2019
56d9a98
Translated using Weblate (German)
marylla Feb 22, 2019
8fa69b5
[FIX] Errors in navigation to customer invoices / vendor bills
JordiBForgeFlow Feb 4, 2019
acd8bbd
Translated using Weblate (Italian)
primes2h Jun 26, 2019
1f13d91
Translated using Weblate (French)
Jul 28, 2019
d828b3d
Translated using Weblate (Portuguese)
pedrocs-exo Aug 14, 2019
caedca5
Translated using Weblate (Portuguese (Brazil))
Sep 3, 2019
db7433c
Translated using Weblate (German)
rschnapka Sep 3, 2019
a23e0e4
Translated using Weblate (Chinese (Simplified))
liweijie0812 Sep 4, 2019
5c6cfc6
Remove invalid Chinese translation files
liweijie0812 Sep 5, 2019
e52b03d
[IMP] contract: Make recurrence mechanism on contract line
sbejaoui Oct 30, 2018
70a2723
[REF+FIX+IMP] Contract: invoice creation + date start required for co…
ThomasBinsfeld Dec 18, 2018
d451926
[FIX+IMP] contract: several things
sbejaoui Dec 20, 2018
8cdcfe6
[FIX] Contract: copy payment term on generated invoice
ThomasBinsfeld Jan 11, 2019
96d02cb
[IMP] - Should be able to stop a past contract line
sbejaoui Jan 11, 2019
9c156f3
[ADD] Contract: fiscal position
ThomasBinsfeld Jan 16, 2019
39b8b86
[FIX+IMP] contract: recurring_next_date is required if date_end is nu…
sbejaoui Jan 17, 2019
47757fc
[IMP] Contract: matching invoice view depending on contract type
ThomasBinsfeld Jan 21, 2019
98f9586
[ADD] - Add more value for auto_renew_rule_type
sbejaoui Jan 24, 2019
ee69a9b
[FIX] Contract to Invoice: take contract vendor instead of partner's
ThomasBinsfeld Feb 20, 2019
7cac826
[REF+FIX+IMP] contract: Several things
sbejaoui Feb 28, 2019
c086f32
[IMP]pass the payment term to the contract from the partner
AaronHForgeFlow May 28, 2019
ffd97a2
[REF] contract: Several things
ThomasBinsfeld May 28, 2019
e43f5d6
[IMP] - Make one migration from 12.0.1 to 12.0.4
sbejaoui Jul 15, 2019
c0320d8
[FIX+IMP+MIG] contract: Several refinements:
pedrobaeza Sep 13, 2019
e8d4e26
Translated using Weblate (Chinese (Simplified))
liweijie0812 Sep 17, 2019
811c983
[MIG+FIX] contract: Missing pieces for moving info from analytic acco…
pedrobaeza Sep 18, 2019
7d9a876
Add commercial_partner_id fields into contract module
hparfr Aug 14, 2019
699be3d
Translated using Weblate (Italian)
eLBati Oct 8, 2019
4d9bc97
[MIG] contract: Assign old partner's salesman to migrated contracts
pedrobaeza Oct 8, 2019
996618b
Translated using Weblate (German)
marylla Oct 9, 2019
7c77350
[12.0][FIX] contract & contract_sale - security fix
enriquemartin Oct 9, 2019
ca4ecc5
Translated using Weblate (Catalan)
albertpons Oct 9, 2019
46eb6c8
Translated using Weblate (Portuguese (Brazil))
britoederr Oct 10, 2019
0ab29b9
[MIG] contract: Missing renaming of invoice link
pedrobaeza Oct 15, 2019
36b4f22
[MIG] contract: Create contract sequence for allowing to create records
pedrobaeza Oct 23, 2019
e37c5ef
Translated using Weblate (Dutch)
thomaspot Oct 23, 2019
f09d306
[IMP+FIX] contract: Add multi-company access rule for contract object…
sbejaoui Oct 25, 2019
7f55203
Translated using Weblate (Spanish)
josepmy Oct 29, 2019
a37b81d
[FIX] contract: Fix performance issue on contract line read + Fix con…
sbejaoui Oct 30, 2019
238380e
[MIG] contract: No contract on AA without recurring invoices flag
pedrobaeza Nov 11, 2019
078d9a0
Translated using Weblate (Croatian)
badbole Nov 12, 2019
5677bc6
[IMP] contract: Fix test crash with other modules
sergio-teruel Nov 14, 2019
8e0680c
[MIG][FIX] contract: Move contracts, but disable them
pedrobaeza Nov 18, 2019
9402c5f
[12.0][FIX] - Run onchange contract_type when changing the contract t…
sbejaoui Nov 26, 2019
4256355
[FIX] contract: Don't execute onchange after invoice creation + Tests…
pedrobaeza Dec 2, 2019
cb0fe0e
[REF] contract: Several refactorings
sbidoul Dec 6, 2019
08943d4
Translated using Weblate (French)
Martronic-SA Dec 6, 2019
adb29bf
[REF+FIX+IMP] contract: Several refactorings + fixes + imps
sbidoul Dec 6, 2019
101f7df
[FIX+REF] contract: Improve unit tests + add unit test for different …
sbejaoui Dec 9, 2019
6cf54e0
[IMP] contract: display invoicing offset
sbidoul Dec 9, 2019
61fbe62
Translated using Weblate (Portuguese (Brazil))
augustodinizl Dec 16, 2019
a163046
[IMP+FIX] contract: Several things
sbejaoui Dec 21, 2019
677ed5d
Translated using Weblate (Italian)
scigghia Dec 26, 2019
dc75ca6
[IMP+FIX] contract: Add failing test for wrong invoicing date after c…
sbejaoui Dec 19, 2019
5b9ad6d
[FIX] contract: Handle properly multi-company setups
pedrobaeza Jan 8, 2020
c7afb65
Translated using Weblate (French)
gregory-moka Jan 9, 2020
b99d0a2
Added translation using Weblate (Spanish (Chile))
Jan 17, 2020
38ddea7
Translated using Weblate (Spanish)
Jan 17, 2020
1d91145
Translated using Weblate (French)
qgroulard Jan 21, 2020
1808880
[IMP] contract: remove redundant method
pedrobaeza Jan 8, 2020
87d436e
[12.0][IMP] - Add an action for contracts manual invoicing
sbejaoui Nov 13, 2019
1266ee6
Translated using Weblate (Italian)
Feb 4, 2020
3e5c6a2
Translated using Weblate (Portuguese (Brazil))
marcelsavegnago Feb 12, 2020
770be51
Translated using Weblate (Finnish)
jarmokortetjarvi Feb 13, 2020
cbf58ad
[IMP] contract: add analytic_tag_ids field in contract lines
Feb 28, 2020
c55f370
[IMP] contract: Improve partner With running contracts search view fi…
sbejaoui Feb 12, 2020
9b48470
Translated using Weblate (French)
svalaeys Mar 17, 2020
947734d
[IMP] - Add contract tags
sbejaoui Oct 24, 2019
a283a5e
Set company_id earlier in the invoice preparation process so that _on…
svalaeys Mar 23, 2020
c8e353b
Translated using Weblate (Spanish)
Mar 25, 2020
20e1241
[FIX] contract: Delete cascade line wizard
pedrobaeza Apr 1, 2020
d2c34a4
[IMP] - Place id attribute before model
sbejaoui Apr 2, 2020
150292c
[IMP] contract: add section and notes in contract line
Mar 17, 2020
975ec82
[FIX+IMP] contract: improve test coverage with new sections + fix sea…
pedrobaeza Apr 14, 2020
67b355e
[FIX] contract: Select the correct sections/notes to be invoiced
Apr 28, 2020
4dcb5af
[IMP] - Contract: add new recurring_rule_type quarterly and semesterly
sbejaoui Apr 14, 2020
0cedf28
Translated using Weblate (Spanish)
JorgeQuinteros May 21, 2020
c819601
[FIX] contract: Currency is not editable + pricelist from partner
pedrobaeza Jun 2, 2020
e6f1444
Translated using Weblate (Portuguese (Brazil))
fcolus Jun 16, 2020
b1c4505
Translated using Weblate (Spanish)
pedrobaeza Jun 17, 2020
bb12b30
[FIX] contract: do not die if modified partner has contracts in sever…
Jun 25, 2020
dcd42ef
[IMP] contract: Allow to set a manual currency
pedrobaeza Jun 5, 2020
2fae1bc
Translated using Weblate (Slovenian)
sysadminmatmoz Jun 30, 2020
3a42337
[FIX] contract: multi-company assignment notification
Jul 28, 2020
bb28d3b
[12.0][FIX] - fiscal position, payment mode and pricelist obtained ac…
sbejaoui Aug 17, 2020
23b59b9
[IMP] : black, isort, prettier
pedrobaeza Jul 13, 2020
a11ab37
[MIG] contract: Migration to 13.0
pedrobaeza Jul 14, 2020
5334e43
[IMP+REF] contract: Allow to set recurrency at header level
pedrobaeza Jul 14, 2020
d39c09e
[13.0][FIX] contract: Recompute recurring next date
rousseldenis Sep 9, 2020
140f187
[IMP] contract: Set a condicion to avoid create lines on invoices
CarlosRoca13 Oct 28, 2020
0a35cd3
[FIX] contract: Only include 'section_and_note_one2many' js widget in…
victoralmau Nov 4, 2020
c397160
Translated using Weblate (Spanish (Argentina))
ibuioli Nov 22, 2020
2070f1d
[IMP] contract: Add followers to invoices created
victoralmau Nov 30, 2020
eac2866
Translated using Weblate (Dutch)
bosd Dec 15, 2020
91b6c5e
[IMP] contract: Portal
victoralmau Dec 16, 2020
6b9d7f2
[IMP] contract: JS tour on test assets
pedrobaeza Dec 25, 2020
2891d78
[IMP] contract: Add contract modification + contract: Add fields to c…
victoralmau Dec 28, 2020
427177e
[FIX] contract: Modification mail + Auto-create follower in contract …
victoralmau Jan 4, 2021
e8369cf
[13.0][FIX] contract: Impossible to create invoices from contract lin…
rousseldenis Jan 31, 2021
8ac5805
[FIX] contract: Error in test_contract_invoice_followers
victoralmau Feb 2, 2021
bc2fd07
[FIX] contract: remove groupby if it is in context + consistency betw…
Feb 15, 2021
7c82ac4
[13.0][FIX] contract: consistency between contract count and contract…
newtratip Feb 23, 2021
985b41d
[OU-FIX] contract: Don't alter v12 recurrence mechanism + Transfer co…
pedrobaeza Feb 27, 2021
d0ae601
[FIX] contract: Changed modification_mail auto to appear like email a…
victoralmau Mar 17, 2021
b9ab217
[IMP] contract: black, isort, prettier
ozono Apr 1, 2021
dec443a
[MIG] contract: Migration to 14.0
ozono Apr 2, 2021
044686c
[FIX] contract: restore readme images
ozono Apr 4, 2021
134f520
Added translation using Weblate (French (France))
Yvesldff Apr 11, 2021
9e0792a
[FIX] contract: Don't change period start date having line recurrence
pedrobaeza May 18, 2021
6471b2b
[13.0][FIX] contract: Set layout for section and note in portal template
rousseldenis Apr 30, 2021
8890ca1
[IMP] contract: Improve code to show recurring_rule_type from contrac…
victoralmau May 24, 2021
d123e38
[FIX] contract: Cleanup values on line when invoicing
pedrobaeza Jul 1, 2021
9f9ebe4
Translated using Weblate (Turkish)
tate11 Aug 5, 2021
79a3d36
[FIX] contract: fix an obvious crash when self is a multi-recordset
alexis-via Aug 30, 2021
6f453f8
[FIX] contract: Fix invoice creation and salesperson assignment
joao-p-marques Sep 10, 2021
d2246a0
Translated using Weblate (Catalan)
pere-aquarian Sep 13, 2021
27e41bb
[IMP] contract: black, isort, prettier
jcdrubay Oct 28, 2021
21b8216
[MIG] contract: Migration to 15.0
jcdrubay Oct 28, 2021
045bd13
[FIX] contract: Avoid error in invoicing contracts crone
manuelregidor Oct 29, 2021
cc7c359
[15.0][IMP] modify production beta to stable
JoanMForgeFlow Jan 25, 2022
b86aeed
[IMP] contract: Add discount + price_subtotal fields to the contract …
victoralmau Jan 25, 2022
7710203
ADJ: When generating invoices from the Wizard to create invoices manu…
jcdrubay Feb 11, 2022
0b068db
Translated using Weblate (Catalan)
Noel000 Feb 25, 2022
71668b1
[FIX+IMP] contract: Several things
rousseldenis Feb 25, 2022
62d7fd6
Translated using Weblate (Catalan)
juliap98 Apr 7, 2022
4311e8e
[FIX] contract: add default_move_type in context
mariadforgeflow May 23, 2022
2ed7097
[FIX+IMP] contract: lots of things
rousseldenis Nov 3, 2021
80fbbfc
[FIX] contract: change where security is given to group_account_invoi…
albariera Oct 7, 2021
0cdc4fe
[FIX] contract: Remove noupdate in mail template data
joao-p-marques Jun 7, 2021
d912f5c
[15.0][IMP] contract : show tags with colors in the contract
chandni299 Jul 27, 2022
d8048c3
Translated using Weblate (German)
wpichler Aug 22, 2022
8b9cd71
[IMP] contract: Use _prepare_home_portal_values() function.
victoralmau Sep 2, 2022
739b715
Translated using Weblate (Portuguese (Brazil))
douglascstd Sep 26, 2022
09f8d5f
Translated using Weblate (Spanish)
pere-aquarian Oct 10, 2022
c98fd59
[IMP] contract: Set invoice_user_id field with Form() to apply the co…
victoralmau Oct 18, 2022
57ab7c8
[IMP] Add link to contract in invoice chatter
Sep 21, 2022
9bcc729
[FIX] contract: bug onchange date_start (comparison between bool and …
mourad-ehm May 13, 2022
ad54515
[IMP] contract: Set fixed start dates in test contracts
victoralmau Dec 1, 2022
b01d2ba
[FIX] contract: Switch string > title in buttons
pedrobaeza Nov 3, 2022
d6c423a
[MIG] contract: Migration to 16.0
wpichler Oct 24, 2022
2a91a6b
Translated using Weblate (Italian)
francesco-ooops Jul 12, 2023
f6a3f9b
Translated using Weblate (Italian)
mymage Jul 13, 2023
23fb9df
Added translation using Weblate (Catalan (ca_ES))
miquelalzanillas Jul 18, 2023
394ba22
Translated using Weblate (German)
NICO-SOLUTIONS Jul 19, 2023
9899d70
[IMP] contract: Make portal link configurable
Jul 26, 2023
5397f48
Translated using Weblate (Spanish)
Ivorra78 Aug 2, 2023
170d809
[16.0][FIX] contract: invoice message create
carolinafernandez-tecnativa Oct 9, 2023
109d3a3
Translated using Weblate (Portuguese (Brazil))
adrianojprado Oct 13, 2023
d25115d
[FIX] No contract line and invoices when contract is archived
fkantelberg Jan 24, 2023
b37aace
Translated using Weblate (Italian)
alessandro-fiorino Nov 8, 2023
c4bb059
[FIX] contract: removed dateutil from dependencies
Nov 8, 2023
4c299a2
Translated using Weblate (Italian)
alessandro-fiorino Nov 8, 2023
3248867
Translated using Weblate (Dutch)
ThijsvOers Nov 14, 2023
03545c3
Translated using Weblate (French)
remi-filament Dec 20, 2023
3a9b177
[MIG] contract: Remove analytic_account_id and add migration
fkantelberg Jan 4, 2024
52f59f8
[FIX] contract: Change web_ribbon text to title to make it translatable
victoralmau Jan 30, 2024
b9d9554
[FIX] contract: Move migration to post migration
fkantelberg Feb 1, 2024
2aa092e
[16.0] contract: Show discount lines for users with the group 'Discou…
fkantelberg Feb 9, 2024
428fb8b
[IMP] contract: Protect line recurrrency change
pedrobaeza Jan 9, 2024
e9351c6
[16.0][IMP] contract and contract_sale_generation: Add translations
aliciagaarzo Mar 11, 2024
6e69c24
Translated using Weblate (French)
houzefa-abba Mar 13, 2024
a30dd93
[FIX] contract: Fix modifications layout
pedrobaeza Mar 14, 2024
a9e8bc2
[IMP] contract: Remove buttons from contract lines if recurrence is n…
victoralmau Mar 12, 2024
51dc6f1
[16.0][IMP] contract: improve visual
aliciagaarzo Mar 21, 2024
940b81b
[16.0][IMP] contract and contract_variable_quantity: improve visual o…
aliciagaarzo Apr 1, 2024
64b3fca
[IMP] contract: black, isort, prettier
CRogos Mar 23, 2024
9bda2dc
[MIG] contract: Migration to 17.0
CRogos Mar 27, 2024
c2b1c88
[17.0][IMP] contract: solve error for last_date_invoiced field
aliciagaarzo Apr 15, 2024
d5f2c31
[17.0][FIX] contract: report translations & change structure
Apr 23, 2024
185dc6c
Translated using Weblate (Spanish)
Ivorra78 Apr 24, 2024
5f894dd
Translated using Weblate (Swedish)
jakobkrabbe Jun 5, 2024
c3b591f
[FIX] contract: Fix error when sending contract by email
carolinafernandez-tecnativa Aug 12, 2024
b328cb0
[FIX] contract: Link format error for messages posted when creates ma…
sergio-teruel Sep 3, 2024
b4adcb9
[FIX] contract : ignore date constraint for a note
florian-dacosta Dec 3, 2024
84cacbb
[IMP] Add INVOICEMONTHNAME marker to line description
stenext May 8, 2023
849ecf5
[I18N] contract: Spanish translations
victoralmau Dec 5, 2024
f7f3d64
[FIX] contract: link contract instead of move
carlos-lopez-tecnativa Dec 24, 2024
4a2d92b
[IMP] contract: Use %m instead of %B to obtain month
victoralmau Dec 20, 2024
872988f
[IMP] contract: Add contract lines entry point for reporting
rousseldenis May 15, 2022
255e4b1
Translated using Weblate (Spanish)
victoralmau Jan 10, 2025
be51394
[IMP] contract: Terminate contract lines with last_date_invoiced if i…
sergio-teruel Jan 9, 2025
ec320bf
[IMP] contract Report correction, prevent unintended styling when usi…
arielbarreiros96 Jan 10, 2025
a6a4ad2
[FIX] contract: Invoice creation message translatable
pedrobaeza Feb 1, 2025
2d6ecee
[FIX]contract: Malformed expression in the column_invisible attribute.
Feb 13, 2025
93bd86e
Translated using Weblate (Chinese (Traditional) (zh_TW))
tekvinci Mar 2, 2025
3ca62b5
Translated using Weblate (Turkish)
bo-eska Apr 15, 2025
a3fecf7
[IMP] contract: Adapting portal contract design to odoo style
pilarvargas-tecnativa Apr 22, 2025
20a5372
[FIX] contract: Don't lose modification email layout
pedrobaeza May 6, 2025
1dd820b
[18.0][MIG] contract
sbejaoui Nov 4, 2024
7f6566b
[REF] split contract module into: contract, contract_line_successor, …
sbejaoui Apr 16, 2025
1200d5b
[IMP] contract: Change `automatic_price` fields to stored
rousseldenis Jun 3, 2025
20d0913
[IMP] contract: Remove duplicate compute function for `price_unit` field
rousseldenis Jun 3, 2025
78eb68b
[IMP] contract: Reintroduce comment about onchanges on _inverse methods
rousseldenis Jun 3, 2025
6957150
[IMP] contract: Remove onchange on `product_id`
rousseldenis Jun 3, 2025
6f4f2ed
[IMP] contract: Use account.journal `_check_company_domain()` to get …
rousseldenis Jun 3, 2025
a441ab7
[IMP] contract: Remove wrong api.model decorators + use Environment t…
rousseldenis Jun 3, 2025
b685d6c
[IMP] contract: remove blocking view in migration script
CRogos Jun 4, 2025
0a50bc3
[IMP] contract and product_contract: pre-commit auto fixes
Anxo82 Jun 16, 2025
91503ad
[IMP] contract: make label for notes visible on contract view form
glitchov Jun 30, 2025
0c3ccee
[FIX] contract: Remove test flag from contract because of "unknown ke…
CRogos Jul 18, 2025
e0625c3
[OU-FIX] contract: migration scripts
MiquelRForgeFlow Jul 28, 2025
02f2388
[IMP] Contract line: compute display name
qgroulard Aug 4, 2025
9a98ae1
[FIX] contract.recurring_create_invoice: Add ensure_one
tobiaszehntner Sep 11, 2025
807b418
[IMP] contract: skip assignment when value unchanged to avoid trigger…
sbejaoui Sep 23, 2025
29c836f
[FIX] contract: Enforce company
etobella Oct 23, 2025
50bce72
Translated using Weblate (Catalan)
eugenichafer Nov 12, 2025
90639fe
[FIX] contract: automatic pricing should resptect pricelist quantity-…
RicardCForgeFlow Nov 19, 2025
498ce0a
[IMP] contract: compute group_id based on analytic accounts in contra…
carlos-lopez-tecnativa Oct 2, 2025
6c44b80
[18.0][IMP] contract: hook for line is invoiceable
tobiaszehntner Nov 18, 2025
248bb66
[IMP] contract: store additional fields for analysis purposes
carlos-lopez-tecnativa Nov 24, 2025
1861ac7
[IMP] contract: enhance search filters and add a pivot view for contr…
carlos-lopez-tecnativa Nov 24, 2025
26c2f2f
[FIX] contract: Avoid the error when accessing the portal if the user…
victoralmau Nov 28, 2025
cd4bdba
[FIX] contract: implement missing _compute_analytic_distribution on c…
marielejeune Dec 3, 2025
6628a7f
[IMP] contract: add paths to actions
marielejeune Dec 5, 2025
66dc9dd
[FIX] contract: Visual hint for cancelled lines in portal
pedrobaeza Dec 6, 2025
46633bc
Translated using Weblate (French)
qtheuret Jan 3, 2026
501d387
[IMP] contract: Remove account.move old_contract_id field
qgroulard Oct 30, 2025
2e78d0d
[FIX] contract: Use another condition for forcingn a failure
etobella Jan 12, 2026
7057eb4
Translated using Weblate (Slovenian)
sysadminmatmoz Jan 22, 2026
4621639
Translated using Weblate (Catalan)
jonpasquier Jan 28, 2026
67b9dfc
[18.0][IMP] contract: Improve contract lines view with section/note s…
cristina-hidalgo-tecnativa Jan 21, 2026
d58a9ea
[FIX] contract: improve views
etobella Feb 28, 2026
64b0383
[FIX] contract : ignore date constraint for a note
florian-dacosta Dec 3, 2024
03db5f9
[IMP] contract: invoice lines
jbaudoux Mar 9, 2026
859da8b
[FIX] contract: invoicing
jbaudoux Mar 18, 2026
1d19a84
Translated using Weblate (Spanish)
carlossainznetkia May 7, 2026
96fab1f
[IMP] contract: add monthly_recurring field to contracts and lines
cristina-hidalgo-tecnativa May 21, 2026
d16d416
[IMP] contract: pre-commit auto fixes
BhaveshHeliconia Oct 1, 2025
847b186
[MIG] contract: Migration to 19.0
BhaveshHeliconia Oct 1, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
180 changes: 180 additions & 0 deletions contract/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

================================
Recurring - Contracts Management
================================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:e395f519d62bac7a25c01767e5e91f0a646779db0f51ab345c28fd5c5f2efa5c
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
:target: https://odoo-community.org/page/development-status
:alt: Production/Stable
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fcontract-lightgray.png?logo=github
:target: https://github.com/OCA/contract/tree/19.0/contract
:alt: OCA/contract
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/contract-19-0/contract-19-0-contract
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/contract&target_branch=19.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module enables contracts management with recurring invoicing
functions. Also you can print and send by email contract report.

It works for customer contract and supplier contracts.

Contracts are shown in portal.

**Table of contents**

.. contents::
:local:

Configuration
=============

To view discount field in contract line, you need to set *Discount on
lines* in user access rights.

Contracts can be viewed on the portal (list and detail) if the user
logged into the portal is a follower of the contract.

Usage
=====

1. Contracts are in Invoicing -> Customers -> Customer and Invoicing ->
Vendors -> Supplier Contracts
2. When creating a contract, fill fields for selecting the invoicing
parameters:

- a journal
- a price list (optional)

3. And add the lines to be invoiced with:

- the product with a description, a quantity and a price
- the recurrence parameters: interval (days, weeks, months, months
last day or years), start date, date of next invoice (automatically
computed, can be modified) and end date (optional)
- auto-price, for having a price automatically obtained from the
price list
- #START# - #END# or #INVOICEMONTHNAME# in the description field to
display the start/end date or the start month of the invoiced
period in the invoice line description
- pre-paid (invoice at period start) or post-paid (invoice at start
of next period)

4. The "Generate Recurring Invoices from Contracts" cron runs daily to
generate the invoices. If you are in debug mode, you can click on the
invoice creation button.
5. The *Show recurring invoices* shortcut on contracts shows all
invoices created from the contract.
6. The contract report can be printed from the Print menu
7. The contract can be sent by email with the *Send by Email* button
8. Contract templates can be created from the Configuration -> Contracts
-> Contract Templates menu. They allow to define default journal,
price list and lines when creating a contract. To use it, just select
the template on the contract and fields will be filled automatically.

- Contracts appear in portal to following users in every contract:

|image|

|image1|

|image2|

.. |image| image:: https://raw.githubusercontent.com/OCA/contract/19.0/contract/static/src/screenshots/portal-my.png
.. |image1| image:: https://raw.githubusercontent.com/OCA/contract/19.0/contract/static/src/screenshots/portal-list.png
.. |image2| image:: https://raw.githubusercontent.com/OCA/contract/19.0/contract/static/src/screenshots/portal-detail.png

Known issues / Roadmap
======================

- Recover states and others functional fields in Contracts.
- Add recurrence flag at template level.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/contract/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/contract/issues/new?body=module:%20contract%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* Tecnativa
* ACSONE SA/NV

Contributors
------------

- Angel Moya <angel.moya@domatix.com>

- Dave Lasley <dave@laslabs.com>

- Miquel Raïch <miquel.raich@eficent.com>

- Souheil Bejaoui <souheil.bejaoui@acsone.eu>

- Thomas Binsfeld <thomas.binsfeld@acsone.eu>

- Guillaume Vandamme <guillaume.vandamme@acsone.eu>

- Raphaël Reverdy <raphael.reverdy@akretion.com>

- `Tecnativa <https://www.tecnativa.com>`__:

- Pedro M. Baeza
- Carlos Dauden
- Vicent Cubells
- Rafael Blasco
- Víctor Martínez

- Iván Antón <ozono@ozonomultimedia.com>

- `APSL <https://www.apsl.tech>`__:

- Antoni Marroig <amarroig@apsl.net>

- `Heliconia Solutions Pvt. Ltd. <https://www.heliconia.io>`__

- Bhavesh Heliconia

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/contract <https://github.com/OCA/contract/tree/19.0/contract>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
3 changes: 3 additions & 0 deletions contract/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from . import controllers
from . import models
from . import wizards
47 changes: 47 additions & 0 deletions contract/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Copyright 2004-2010 OpenERP SA
# Copyright 2014-2018 Tecnativa - Pedro M. Baeza
# Copyright 2015 Domatix
# Copyright 2016-2018 Tecnativa - Carlos Dauden
# Copyright 2017 Tecnativa - Vicent Cubells
# Copyright 2016-2017 LasLabs Inc.
# Copyright 2018-2019 ACSONE SA/NV
# Copyright 2020-2021 Tecnativa - Pedro M. Baeza
# Copyright 2020 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

{
"name": "Recurring - Contracts Management",
"version": "19.0.1.0.0",
"category": "Contract Management",
"license": "AGPL-3",
"author": "Tecnativa, ACSONE SA/NV, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/contract",
"depends": ["base", "account", "product", "portal"],
"development_status": "Production/Stable",
"data": [
"security/contract_tag.xml",
"security/ir.model.access.csv",
"security/contract_security.xml",
"report/report_contract.xml",
"report/contract_views.xml",
"data/contract_cron.xml",
"data/mail_template.xml",
"data/template_mail_notification.xml",
"data/mail_message_subtype.xml",
"data/ir_ui_menu.xml",
"views/contract_tag.xml",
"views/contract_template.xml",
"views/contract_template_line.xml",
"views/contract.xml",
"views/contract_line.xml",
"views/res_partner_view.xml",
"views/res_config_settings.xml",
"views/contract_portal_templates.xml",
"wizards/contract_manually_create_invoice.xml",
],
"assets": {
"web.assets_frontend": ["contract/static/src/scss/frontend.scss"],
"web.assets_tests": ["contract/static/src/js/contract_portal_tour.esm.js"],
},
"installable": True,
}
3 changes: 3 additions & 0 deletions contract/controllers/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from . import main
110 changes: 110 additions & 0 deletions contract/controllers/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
# Copyright 2020-2022 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import http
from odoo.exceptions import AccessError, MissingError
from odoo.http import request

from odoo.addons.portal.controllers.portal import CustomerPortal
from odoo.addons.portal.controllers.portal import pager as portal_pager


class PortalContract(CustomerPortal):
def _prepare_home_portal_values(self, counters):
values = super()._prepare_home_portal_values(counters)
if "contract_count" in counters:
contract_model = request.env["contract.contract"]
contract_count = (
contract_model.search_count([])
if contract_model.has_access("read")
else 0
)
values["contract_count"] = contract_count
return values

def _contract_get_page_view_values(self, contract, access_token, **kwargs):
values = {
"page_name": "Contracts",
"contract": contract,
}
return self._get_page_view_values(
contract, access_token, values, "my_contracts_history", False, **kwargs
)

def _get_filter_domain(self, kw):
return []

@http.route(
["/my/contracts", "/my/contracts/page/<int:page>"],
type="http",
auth="user",
website=True,
)
def portal_my_contracts(
self, page=1, date_begin=None, date_end=None, sortby=None, **kw
):
values = self._prepare_portal_layout_values()
contract_obj = request.env["contract.contract"]
# Avoid error if the user does not have access.
if not contract_obj.has_access("read"):
return request.redirect("/my")
domain = self._get_filter_domain(kw)
searchbar_sortings = {
"date": {
"label": request.env._("Date"),
"order": "recurring_next_date desc",
},
"name": {"label": request.env._("Name"), "order": "name desc"},
"code": {"label": request.env._("Reference"), "order": "code desc"},
}
# default sort by order
if not sortby or sortby not in searchbar_sortings:
sortby = "date"
order = searchbar_sortings[sortby]["order"]
Comment thread
BhaveshHeliconia marked this conversation as resolved.
# count for pager
contract_count = contract_obj.search_count(domain)
# pager
pager = portal_pager(
url="/my/contracts",
url_args={
"date_begin": date_begin,
"date_end": date_end,
"sortby": sortby,
},
total=contract_count,
page=page,
step=self._items_per_page,
)
# content according to pager and archive selected
contracts = contract_obj.search(
domain, order=order, limit=self._items_per_page, offset=pager["offset"]
)
request.session["my_contracts_history"] = contracts.ids[:100]
values.update(
{
"date": date_begin,
"contracts": contracts,
"page_name": "Contracts",
"pager": pager,
"default_url": "/my/contracts",
"searchbar_sortings": searchbar_sortings,
"sortby": sortby,
}
)
return request.render("contract.portal_my_contracts", values)

@http.route(
["/my/contracts/<int:contract_contract_id>"],
type="http",
auth="public",
website=True,
)
def portal_my_contract_detail(self, contract_contract_id, access_token=None, **kw):
try:
contract_sudo = self._document_check_access(
"contract.contract", contract_contract_id, access_token
)
except (AccessError, MissingError):
return request.redirect("/my")
values = self._contract_get_page_view_values(contract_sudo, access_token, **kw)
return request.render("contract.portal_contract_page", values)
12 changes: 12 additions & 0 deletions contract/data/contract_cron.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo noupdate="1">
<record model="ir.cron" id="contract_cron_for_invoice">
<field name="name">Generate Recurring Invoices from Contracts</field>
<field name="model_id" ref="model_contract_contract" />
<field name="state">code</field>
<field name="code">model.cron_recurring_create_invoice()</field>
<field name="user_id" ref="base.user_root" />
<field name="interval_number">1</field>
<field name="interval_type">days</field>
</record>
</odoo>
9 changes: 9 additions & 0 deletions contract/data/ir_ui_menu.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<menuitem
id="menu_config_contract"
name="Contracts"
sequence="1"
parent="account.menu_finance_configuration"
/>
</odoo>
15 changes: 15 additions & 0 deletions contract/data/mail_message_subtype.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo noupdate="1">
<record id="mail_message_subtype_invoice_created" model="mail.message.subtype">
<field name="name">Invoice created</field>
<field name="res_model">contract.contract</field>
</record>
<record
id="mail_message_subtype_contract_modification"
model="mail.message.subtype"
>
<field name="name">Contract modifications</field>
<field name="res_model">contract.contract</field>
<field name="default" eval="False" />
</record>
</odoo>
Loading
Loading