Browse Source
Merge pull request #255 from ursais/11.0-add-agreement-sale
Merge pull request #255 from ursais/11.0-add-agreement-sale
[ADD] agreement_salepull/257/head
Maxime Chambreuil
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 352 additions and 3 deletions
-
1agreement/__manifest__.py
-
2agreement/data/agreement_stage.xml
-
16agreement/data/agreement_type.xml
-
4agreement/models/res_config_settings.py
-
5agreement/views/agreement.xml
-
23agreement/views/res_config_settings.xml
-
130agreement_sale/README.rst
-
3agreement_sale/__init__.py
-
26agreement_sale/__manifest__.py
-
6agreement_sale/models/__init__.py
-
10agreement_sale/models/agreement.py
-
49agreement_sale/models/sale_order.py
-
6agreement_sale/readme/CONFIGURE.rst
-
2agreement_sale/readme/CONTRIBUTORS.rst
-
4agreement_sale/readme/CREDITS.rst
-
5agreement_sale/readme/DESCRIPTION.rst
-
1agreement_sale/readme/ROADMAP.rst
-
14agreement_sale/readme/USAGE.rst
-
BINagreement_sale/static/description/icon.png
-
25agreement_sale/views/agreement.xml
-
23agreement_sale/views/sale_order.xml
@ -0,0 +1,16 @@ |
|||||
|
<?xml version="1.0"?> |
||||
|
<odoo> |
||||
|
|
||||
|
<record id="agreement_type_agreement" model="agreement.type"> |
||||
|
<field name="name">Agreement</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="agreement_type_contract" model="agreement.type"> |
||||
|
<field name="name">Contract</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="agreement_type_loi" model="agreement.type"> |
||||
|
<field name="name">Letter of Intent</field> |
||||
|
</record> |
||||
|
|
||||
|
</odoo> |
@ -0,0 +1,130 @@ |
|||||
|
========== |
||||
|
Agreements |
||||
|
========== |
||||
|
|
||||
|
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
||||
|
!! This file is generated by oca-gen-addon-readme !! |
||||
|
!! changes will be overwritten. !! |
||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
||||
|
|
||||
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png |
||||
|
:target: https://odoo-community.org/page/development-status |
||||
|
:alt: Beta |
||||
|
.. |badge2| image:: https://img.shields.io/badge/licence-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/11.0/agreement |
||||
|
:alt: OCA/contract |
||||
|
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png |
||||
|
:target: https://translation.odoo-community.org/projects/contract-11-0/contract-11-0-agreement |
||||
|
:alt: Translate me on Weblate |
||||
|
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png |
||||
|
:target: https://runbot.odoo-community.org/runbot/110/11.0 |
||||
|
:alt: Try me on Runbot |
||||
|
|
||||
|
|badge1| |badge2| |badge3| |badge4| |badge5| |
||||
|
|
||||
|
This module allows you to manage agreements, letter of intent and contract content. |
||||
|
The module is meant to be used by the legal team of a company and to allow them |
||||
|
to define sections, clauses and templates with their respective content that can |
||||
|
be dynamic. |
||||
|
|
||||
|
Based on the template, an agreement can be created and the pdf document generated. |
||||
|
|
||||
|
The agreement would go through a workflow to finally become a contract with the |
||||
|
customer signature. |
||||
|
|
||||
|
**Table of contents** |
||||
|
|
||||
|
.. contents:: |
||||
|
:local: |
||||
|
|
||||
|
Configuration |
||||
|
============= |
||||
|
|
||||
|
To configure this module: |
||||
|
|
||||
|
* Go to Agreement > Configuration > Templates |
||||
|
* Create a new template with sections and clauses and their respective content |
||||
|
* Go to Agreement > Configuration > Stages |
||||
|
* Create and reorder stages to match your process |
||||
|
|
||||
|
Usage |
||||
|
===== |
||||
|
|
||||
|
To use this module: |
||||
|
|
||||
|
* Go to Agreement > Agrements |
||||
|
* Create a new agreement |
||||
|
* Select a template |
||||
|
* Follow the process to get the required approval |
||||
|
* Send the invitation to the customer to review and sign the agreement |
||||
|
|
||||
|
Known issues / Roadmap |
||||
|
====================== |
||||
|
|
||||
|
* Split the module to remove the dependencies on sale and account and provide |
||||
|
the same feature in extra modules (agreement_sale, agreement_account, |
||||
|
agreement_purchase) |
||||
|
|
||||
|
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 smashing it by providing a detailed and welcomed |
||||
|
`feedback <https://github.com/OCA/contract/issues/new?body=module:%20agreement%0Aversion:%2011.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 |
||||
|
~~~~~~~ |
||||
|
|
||||
|
* Pavlov Media |
||||
|
* Open Source Integrators |
||||
|
|
||||
|
Contributors |
||||
|
~~~~~~~~~~~~ |
||||
|
|
||||
|
* Patrick Wilson <pwilson@pavlovmedia.com> |
||||
|
* Bhavesh Odedra <bodedra@opensourceintegrators.com> |
||||
|
* Wolfgang Hall <whall@opensourceintegrators.com> |
||||
|
* Maxime Chambreuil <mchambreuil@opensourceintegrators.com> |
||||
|
* Sandip Mangukiya <smangukiya@opensourceintegrators.com> |
||||
|
|
||||
|
Other credits |
||||
|
~~~~~~~~~~~~~ |
||||
|
|
||||
|
The development of this module has been financially supported by: |
||||
|
|
||||
|
* Pavlov Media |
||||
|
* Open Source Integrators |
||||
|
|
||||
|
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. |
||||
|
|
||||
|
.. |maintainer-max3903| image:: https://github.com/max3903.png?size=40px |
||||
|
:target: https://github.com/max3903 |
||||
|
:alt: max3903 |
||||
|
|
||||
|
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__: |
||||
|
|
||||
|
|maintainer-max3903| |
||||
|
|
||||
|
This module is part of the `OCA/contract <https://github.com/OCA/contract/tree/11.0/agreement>`_ project on GitHub. |
||||
|
|
||||
|
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. |
@ -0,0 +1,3 @@ |
|||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). |
||||
|
|
||||
|
from . import models |
@ -0,0 +1,26 @@ |
|||||
|
# Copyright (C) 2018 - TODAY, Open Source Integrators |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). |
||||
|
|
||||
|
{ |
||||
|
'name': 'Agreement - Sale', |
||||
|
'summary': 'Create an agreement when the sales order is confirmed', |
||||
|
'version': '11.0.0.0.1', |
||||
|
'license': 'AGPL-3', |
||||
|
'author': 'Open Source Integrators, Odoo Community Association (OCA)', |
||||
|
'category': 'Agreement', |
||||
|
'website': 'https://github.com/OCA/contract', |
||||
|
'depends': [ |
||||
|
'agreement', |
||||
|
'sale', |
||||
|
], |
||||
|
'data': [ |
||||
|
'views/agreement.xml', |
||||
|
'views/sale_order.xml' |
||||
|
], |
||||
|
'installable': True, |
||||
|
'development_status': 'Beta', |
||||
|
'maintainers': [ |
||||
|
'osi-scampbell', |
||||
|
'max3903', |
||||
|
], |
||||
|
} |
@ -0,0 +1,6 @@ |
|||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). |
||||
|
|
||||
|
from . import ( |
||||
|
sale_order, |
||||
|
agreement, |
||||
|
) |
@ -0,0 +1,10 @@ |
|||||
|
# Copyright (C) 2018 - TODAY, Open Source Integrators |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). |
||||
|
|
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class Agreement(models.Model): |
||||
|
_inherit = 'agreement' |
||||
|
|
||||
|
sale_id = fields.Many2one('sale.order', string='Sales Order') |
@ -0,0 +1,49 @@ |
|||||
|
# Copyright (C) 2018 - TODAY, Open Source Integrators |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). |
||||
|
|
||||
|
from odoo import api, fields, models |
||||
|
|
||||
|
|
||||
|
class SaleOrder(models.Model): |
||||
|
_inherit = 'sale.order' |
||||
|
|
||||
|
agreement_template_id = fields.Many2one( |
||||
|
'agreement', |
||||
|
string="Agreement Template", |
||||
|
domain="[('is_template', '=', True)]") |
||||
|
agreement_id = fields.Many2one('agreement', string="Agreement") |
||||
|
|
||||
|
@api.multi |
||||
|
def _action_confirm(self): |
||||
|
res = super(SaleOrder, self)._action_confirm() |
||||
|
for order in self: |
||||
|
if order.agreement_template_id: |
||||
|
order.agreement_id = order.agreement_template_id.copy(default={ |
||||
|
'name': order.name, |
||||
|
'is_template': False, |
||||
|
'sale_id': order.id, |
||||
|
'partner_id': order.partner_id.id, |
||||
|
'analytic_account_id': |
||||
|
order.analytic_account_id and |
||||
|
order.analytic_account_id.id or False, |
||||
|
}) |
||||
|
for line in self.order_line: |
||||
|
# Create agreement line |
||||
|
self.env['agreement.line'].create({ |
||||
|
'product_id': line.product_id.id, |
||||
|
'name': line.name, |
||||
|
'agreement_id': order.agreement_id.id, |
||||
|
'qty': line.product_uom_qty, |
||||
|
'sale_line_id': line.id, |
||||
|
'uom_id': line.product_uom.id |
||||
|
}) |
||||
|
# If the product sold has a BOM, create a service profile |
||||
|
bom = self.env['mrp.bom'].search( |
||||
|
[('product_tmpl_id', '=', |
||||
|
line.product_id.product_tmpl_id.id)]) |
||||
|
if bom: |
||||
|
self.env['agreement.serviceprofile'].create({ |
||||
|
'name': line.name, |
||||
|
'agreement_id': order.agreement_id.id, |
||||
|
}) |
||||
|
return res |
@ -0,0 +1,6 @@ |
|||||
|
To configure this module: |
||||
|
|
||||
|
* Go to Agreement > Configuration > Templates |
||||
|
* Create a new template with sections and clauses and their respective content |
||||
|
* Go to Agreement > Configuration > Stages |
||||
|
* Create and reorder stages to match your process |
@ -0,0 +1,2 @@ |
|||||
|
* Steven Campbell <scampbell@opensourceintegrators.com> |
||||
|
* Maxime Chambreuil <mchambreuil@opensourceintegrators.com> |
@ -0,0 +1,4 @@ |
|||||
|
The development of this module has been financially supported by: |
||||
|
|
||||
|
* Pavlov Media |
||||
|
* Open Source Integrators |
@ -0,0 +1,5 @@ |
|||||
|
Odoo Sales App does not support the management of legal content for agreements |
||||
|
and contracts. It's also not integrated with the Agreement App. |
||||
|
|
||||
|
This module is for companies that needs their customer to sign an agreement |
||||
|
with all the legal information based on the selected agreement template. |
@ -0,0 +1 @@ |
|||||
|
The roadmap is documented on https://github.com/OCA/contract/issues. |
@ -0,0 +1,14 @@ |
|||||
|
To use this module: |
||||
|
|
||||
|
* Go to Sales |
||||
|
* Create or select a quotation |
||||
|
* Set the agreement template and add some products |
||||
|
* Confirm the quotation. An agreement is created and linked to the sales order: |
||||
|
|
||||
|
* the agreement template is copied into an agreement with a copy of the |
||||
|
sections, clauses, recitals and appendices |
||||
|
* all the sales order lines are added as agreement lines |
||||
|
* the products on the SO with BOM are added as service profile on the agreement |
||||
|
* the customer information is set from the sales order |
||||
|
* the eventual analytic account linked to the sales order is set on the agreement |
||||
|
* the agreement is linked to the sales order and vice versa |
After Width: 64 | Height: 64 | Size: 6.6 KiB |
@ -0,0 +1,25 @@ |
|||||
|
<?xml version="1.0"?> |
||||
|
<odoo> |
||||
|
<!-- Copyright 2018 Open Source Integrators |
||||
|
License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). --> |
||||
|
|
||||
|
<!-- Agreement Form View --> |
||||
|
<record id="agreement_sale_form_view" model="ir.ui.view"> |
||||
|
<field name="name">agreement.form.view</field> |
||||
|
<field name="model">agreement</field> |
||||
|
<field name="inherit_id" ref="agreement.partner_agreement_form_view"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<page name="signature" position="after"> |
||||
|
<page name="sales" string="Sales"> |
||||
|
<group> |
||||
|
<group id="sale_left"> |
||||
|
<field name="sale_id" readonly="1"/> |
||||
|
</group> |
||||
|
<group id="sale-right"/> |
||||
|
</group> |
||||
|
</page> |
||||
|
</page> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
</odoo> |
@ -0,0 +1,23 @@ |
|||||
|
<?xml version="1.0"?> |
||||
|
<odoo> |
||||
|
<!-- Copyright 2018 Open Source Integrators |
||||
|
License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). --> |
||||
|
|
||||
|
<!-- Agreement Form View --> |
||||
|
<record id="sale_order_agreement_form_view" model="ir.ui.view"> |
||||
|
<field name="name">sale.order.agreement.form.view</field> |
||||
|
<field name="model">sale.order</field> |
||||
|
<field name="inherit_id" ref="sale.view_order_form"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<field name="client_order_ref" position="after"> |
||||
|
<field name="agreement_id" |
||||
|
readonly="1" |
||||
|
attrs="{'invisible': [('agreement_id', '=', False)]}"/> |
||||
|
</field> |
||||
|
<field name="partner_id" position="after"> |
||||
|
<field name="agreement_template_id"/> |
||||
|
</field> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
</odoo> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue