Browse Source

[ADD] agreement_sale

pull/255/head
Maxime Chambreuil 6 years ago
parent
commit
aa38023e38
  1. 130
      agreement_sale/README.rst
  2. 3
      agreement_sale/__init__.py
  3. 26
      agreement_sale/__manifest__.py
  4. 6
      agreement_sale/models/__init__.py
  5. 10
      agreement_sale/models/agreement.py
  6. 49
      agreement_sale/models/sale_order.py
  7. 6
      agreement_sale/readme/CONFIGURE.rst
  8. 2
      agreement_sale/readme/CONTRIBUTORS.rst
  9. 4
      agreement_sale/readme/CREDITS.rst
  10. 5
      agreement_sale/readme/DESCRIPTION.rst
  11. 1
      agreement_sale/readme/ROADMAP.rst
  12. 14
      agreement_sale/readme/USAGE.rst
  13. BIN
      agreement_sale/static/description/icon.png
  14. 25
      agreement_sale/views/agreement.xml
  15. 23
      agreement_sale/views/sale_order.xml

130
agreement_sale/README.rst

@ -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.

3
agreement_sale/__init__.py

@ -0,0 +1,3 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
from . import models

26
agreement_sale/__manifest__.py

@ -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',
],
}

6
agreement_sale/models/__init__.py

@ -0,0 +1,6 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
from . import (
sale_order,
agreement,
)

10
agreement_sale/models/agreement.py

@ -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')

49
agreement_sale/models/sale_order.py

@ -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

6
agreement_sale/readme/CONFIGURE.rst

@ -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

2
agreement_sale/readme/CONTRIBUTORS.rst

@ -0,0 +1,2 @@
* Steven Campbell <scampbell@opensourceintegrators.com>
* Maxime Chambreuil <mchambreuil@opensourceintegrators.com>

4
agreement_sale/readme/CREDITS.rst

@ -0,0 +1,4 @@
The development of this module has been financially supported by:
* Pavlov Media
* Open Source Integrators

5
agreement_sale/readme/DESCRIPTION.rst

@ -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.

1
agreement_sale/readme/ROADMAP.rst

@ -0,0 +1 @@
The roadmap is documented on https://github.com/OCA/contract/issues.

14
agreement_sale/readme/USAGE.rst

@ -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

BIN
agreement_sale/static/description/icon.png

After

Width: 64  |  Height: 64  |  Size: 6.6 KiB

25
agreement_sale/views/agreement.xml

@ -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>

23
agreement_sale/views/sale_order.xml

@ -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>
Loading…
Cancel
Save