Browse Source

[9.0][ADD] Add contracts for purchases

pull/96/head
Stefan Becker 7 years ago
parent
commit
dcbd2603d4
  1. 63
      contract_purchase/README.rst
  2. 2
      contract_purchase/__init__.py
  3. 19
      contract_purchase/__openerp__.py
  4. 2
      contract_purchase/models/__init__.py
  5. 68
      contract_purchase/models/account.py
  6. 38
      contract_purchase/views/contract_view.xml

63
contract_purchase/README.rst

@ -0,0 +1,63 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
=================
Contract Purchase
=================
This module is an add on to the odoo contract module (v9). It applies contract functions for purchases.
Usage
=====
To use this module, you need to:
#. Go to Purchases -> Contracts and select or create a new contract.
#. Define type purchase contract
------------------from here on everything applies like in the contract module------------------
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/110/9.0
For further information, please visit:
* https://www.odoo.com/forum/help-1
Known issues / Roadmap
======================
PLACEHOLDER
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
`here <https://github.com/OCA/contract/issues/new?body=module:%20contract_purchase%0Aversion:%209.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Credits
=======
Contributors
------------
* Stefan Becker <s.becker@humanilog.org>
Maintainer
----------
.. image:: http://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: http://odoo-community.org
This module is maintained by the OCA.
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.
To contribute to this module, please visit http://odoo-community.org.

2
contract_purchase/__init__.py

@ -0,0 +1,2 @@
# -*- coding: utf-8 -*-
from . import models

19
contract_purchase/__openerp__.py

@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
# © Stefan Becker <s.becker@humanilog.org>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
'name': 'Purchase Contract',
'summary': 'Create purchase contract',
'version': '9.0.1.0.0',
'author': "humanilog, "
"Odoo Community Association (OCA)",
'website': 'http://www.humanilog.org/',
'depends': ['contract', 'purchase'],
'category': 'Purchase Management',
'license': 'AGPL-3',
'data': [
'views/contract_view.xml',
],
'installable': True,
}

2
contract_purchase/models/__init__.py

@ -0,0 +1,2 @@
# -*- coding: utf-8 -*-
from . import account

68
contract_purchase/models/account.py

@ -0,0 +1,68 @@
# -*- coding: utf-8 -*-
# © 2015 Angel Moya <angel.moya@domatix.com>
# © 2016 Carlos Dauden <carlos.dauden@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp import api, fields, models, _
class AccountAnalyticAccount(models.Model):
_inherit = 'account.analytic.account'
type = fields.Selection(selection_add=[
('purchase', _('Purchase'))
])
@api.multi
def _prepare_invoice(self):
self.ensure_one()
if self.type == 'purchase':
journal = self.env['account.journal'].search([
('type', '=', 'purchase'),
('company_id', '=', self.company_id.id)
], limit=1)
res = super(
AccountAnalyticAccount,
self.with_context(
contract_journal=journal
)
)._prepare_invoice()
res.update({
'journal_id': journal.id,
'type': 'in_invoice'
})
return res
else:
return super(AccountAnalyticAccount, self)._prepare_invoice()
return res
def fields_get(
self, cr, user, allfields=None, context=None, write_access=True,
attributes=None
):
if not context:
context = {}
res = super(AccountAnalyticAccount, self).fields_get(
cr, user, allfields, context, write_access, attributes)
if all((
'partner_id' in res,
context.get('default_type') == 'contract_purchase'
)):
res['partner_id']['string'] = _("Vendor")
return res
@api.onchange('type')
def onchange_type(self):
if self.type == 'purchase':
self.journal_id = self.env['account.journal'].search([
('type', '=', 'purchase'),
('company_id', '=', self.company_id.id)
], limit=1)
super(AccountAnalyticAccount, self)._onchange_type()

38
contract_purchase/views/contract_view.xml

@ -0,0 +1,38 @@
<?xml version="1.0"?>
<openerp>
<data>
<record id="account_analytic_account_type" model="ir.ui.view">
<field name="name">account.analytic.account.type</field>
<field name="model">account.analytic.account</field>
<field name="inherit_id" ref="analytic.view_account_analytic_account_form" />
<field name="arch" type="xml">
<xpath expr='//field[@name="code"]' position='before'>
<field name="type"/>
</xpath>
</field>
</record>
<record id="action_account_analytic_purchase_overdue_all" model="ir.actions.act_window">
<field name="name">Contracts</field>
<field name="res_model">account.analytic.account</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('type', '=', 'purchase')]</field>
<field name="context">{
'search_default_active':1,
'search_default_recurring_invoices':1,
'default_type': 'purchase'
}</field>
<!--<field name="search_view_id" ref="analytic.view_account_analytic_account_search"/>-->
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a new purchase contract.
</p>
</field>
</record>
<menuitem action="action_account_analytic_purchase_overdue_all"
id="menu_action_account_analytic_purchase_overdue_all" sequence="8"
parent="purchase.menu_procurement_management"/>
</data>
</openerp>
Loading…
Cancel
Save