[ADD] agreement_sale

This commit is contained in:
Maxime Chambreuil
2019-01-10 09:35:34 -06:00
committed by Murtuza Saleh
parent cb5e726f83
commit 1fab2daeca
15 changed files with 304 additions and 0 deletions

130
agreement_sale/README.rst Normal file
View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

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

View File

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