Skip to content

Commit

Permalink
[MIG] product_analytic: Migrated to 10.0
Browse files Browse the repository at this point in the history
  • Loading branch information
luismontalba committed Jun 16, 2017
1 parent f803e0c commit 2dd2d66
Show file tree
Hide file tree
Showing 9 changed files with 130 additions and 118 deletions.
17 changes: 9 additions & 8 deletions product_analytic/README.rst
Expand Up @@ -31,29 +31,30 @@ analytic account is found, it will be set by default on the invoice line.

.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/87/8.0

:target: https://runbot.odoo-community.org/runbot/87/10.0

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

Bugs are tracked on `GitHub Issues
<https://github.com/OCA/account-analytic/issues>`_. In case of trouble, please
<https://github.com/OCA/analytic-account/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/
account-analytic/issues/new?body=module:%20
product-analytic%0Aversion:%20
8.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
help us smash it by providing detailed and welcomed feedback.

Credits
=======

Images
------

* Odoo Community Association: `Icon <https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg>`_.

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

* Alexis de Lattre <alexis.delattre@akretion.com>
* Javier Iniesta <javieria@antiun.com>
* Luis M. Ontalba <luis.martinez@tecnativa.com>

Maintainer
----------
Expand Down
3 changes: 1 addition & 2 deletions product_analytic/__init__.py
@@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-

from . import product
from . import account_invoice
from . import models
@@ -1,18 +1,18 @@
# -*- coding: utf-8 -*-
# © 2015 Akretion (http://www.akretion.com/) - Alexis de Lattre
# Copyright 2015 Akretion (http://www.akretion.com/) - Alexis de Lattre
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

{
'name': 'Product Analytic',
'version': '8.0.1.0.0',
'version': '10.0.1.0.0',
'category': 'Accounting & Finance',
'license': 'AGPL-3',
'summary': 'Add analytic account on products and product categories',
'author': 'Akretion, '
'Antiun Ingeniería S.L., '
'Antiun Ingeniería, '
'Odoo Community Association (OCA)',
'website': 'http://www.akretion.com',
'depends': ['account'],
'data': ['product_view.xml'],
'data': ['views/product_view.xml'],
'installable': True,
}
56 changes: 0 additions & 56 deletions product_analytic/account_invoice.py

This file was deleted.

4 changes: 4 additions & 0 deletions product_analytic/models/__init__.py
@@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-

from . import account_invoice
from . import product
43 changes: 43 additions & 0 deletions product_analytic/models/account_invoice.py
@@ -0,0 +1,43 @@
# -*- coding: utf-8 -*-
# Copyright 2015 Akretion (http://www.akretion.com/) - Alexis de Lattre
# Copyright 2016 Antiun Ingeniería S.L. - Javier Iniesta
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from odoo import api, models


class AccountInvoiceLine(models.Model):
_inherit = 'account.invoice.line'

@api.onchange('product_id')
def _onchange_product_id(self):
res = super(AccountInvoiceLine, self)._onchange_product_id()
type = self.invoice_id.type
product = self.product_id
if product:
if type in ('out_invoice', 'out_refund'):
self.account_analytic_id =\
product.income_analytic_account_id.id or\
product.categ_id.income_analytic_account_id.id
else:
self.account_analytic_id =\
product.expense_analytic_account_id.id or\
product.categ_id.expense_analytic_account_id.id
return res

@api.model
def create(self, vals):
type = self.env.context.get('inv_type', 'out_invoice')
if vals.get('product_id') and type and \
not vals.get('account_analytic_id'):
product = self.env['product.product'].browse(
vals.get('product_id'))
if type in ('out_invoice', 'out_refund'):
analytic_id = product.income_analytic_account_id.id or\
product.categ_id.income_analytic_account_id.id
else:
analytic_id = product.expense_analytic_account_id.id or\
product.categ_id.expense_analytic_account_id.id
if analytic_id:
vals['account_analytic_id'] = analytic_id
return super(AccountInvoiceLine, self).create(vals)
16 changes: 6 additions & 10 deletions product_analytic/product.py → product_analytic/models/product.py
@@ -1,31 +1,27 @@
# -*- coding: utf-8 -*-
# © 2015 Akretion (http://www.akretion.com/) - Alexis de Lattre
# Copyright 2015 Akretion (http://www.akretion.com/) - Alexis de Lattre
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from openerp import models, fields
from odoo import fields, models


class ProductTemplate(models.Model):
_inherit = "product.template"

income_analytic_account_id = fields.Many2one(
'account.analytic.account', string='Income Analytic Account',
company_dependent=True,
domain=[('type', 'not in', ('view', 'template'))])
company_dependent=True)
expense_analytic_account_id = fields.Many2one(
'account.analytic.account', string='Expense Analytic Account',
company_dependent=True,
domain=[('type', 'not in', ('view', 'template'))])
company_dependent=True)


class ProductCategory(models.Model):
_inherit = 'product.category'

income_analytic_account_id = fields.Many2one(
'account.analytic.account', string='Income Analytic Account',
company_dependent=True,
domain=[('type', 'not in', ('view', 'template'))])
company_dependent=True)
expense_analytic_account_id = fields.Many2one(
'account.analytic.account', string='Expense Analytic Account',
company_dependent=True,
domain=[('type', 'not in', ('view', 'template'))])
company_dependent=True)
85 changes: 56 additions & 29 deletions product_analytic/tests/test_account_invoice.py
@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
# © 2015 Antiun Ingenieria S.L. - Javier Iniesta
# Copyright 2015 Antiun Ingenieria - Javier Iniesta
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from openerp.tests.common import TransactionCase
from odoo.tests.common import TransactionCase


class TestAccountInvoiceLine(TransactionCase):
Expand All @@ -11,47 +11,74 @@ def setUp(self):
super(TestAccountInvoiceLine, self).setUp()
self.product1 = self.env['product.product'].create({
'name': 'test product 01'})
self.analytic_account1 = self.env['account.analytic.account'].create({
'name': 'test analytic_account1'})
self.analytic_account2 = self.env['account.analytic.account'].create({
'name': 'test analytic_account2'})
self.product2 = self.env['product.product'].create({
'name': 'test product 02',
'income_analytic_account_id': self.env.ref(
'account.analytic_in_house').id,
'expense_analytic_account_id': self.env.ref(
'account.analytic_online').id
})
self.partner = self.env.ref('base.res_partner_2')
'income_analytic_account_id': self.analytic_account1.id,
'expense_analytic_account_id': self.analytic_account2.id})
self.partner = self.env['res.partner'].create({
'name': 'Test partner'})
self.journal = self.env['account.journal'].create({
'name': 'Test journal',
'code': 'TEST',
'type': 'general',
'update_posted': True})
self.account_type = self.env['account.account.type'].create({
'name': 'Test account type',
'type': 'other'})
self.account = self.env['account.account'].create({
'name': 'Test account',
'code': 'TEST',
'user_type_id': self.account_type.id})
self.invoice = self.env['account.invoice'].create({
'name': 'Test',
'partner_id': self.partner.id,
'account_id': self.env.ref('account.chart0').id
})
self.invoice_line = self.env['account.invoice.line'].create({
'name': 'Test Line',
'quantity': 1,
'price_unit': 1,
'product_id': self.product2.id
'journal_id': self.journal.id,
'type': 'out_invoice',
'invoice_line_ids': [
(0, 0, {
'name': 'Test line',
'quantity': 1,
'price_unit': 50,
'account_id': self.account.id,
'product_id': self.product1.id,
})
]
})
self.invoice_line = self.invoice.invoice_line_ids[0]

def test_product_id_change(self):
res = self.invoice_line.product_id_change(
self.product2.id, 1, partner_id=self.partner.id)
self.assertEqual(res['value']['account_analytic_id'],
self.product2.income_analytic_account_id.id)
self.invoice.type = 'in_invoice'
res = self.invoice_line.product_id_change(
self.product2.id, 1, partner_id=self.partner.id, type='in_invoice')
self.assertEqual(res['value']['account_analytic_id'],
self.product2.expense_analytic_account_id.id)
def test_onchange_product_id(self):
self.invoice_line.product_id = self.product2.id
self.invoice_line._onchange_product_id()
self.assertEqual(
self.invoice_line.account_analytic_id.id,
self.product2.income_analytic_account_id.id
)

def test_create(self):
self.assertEqual(self.invoice_line.account_analytic_id.id,
self.product2.income_analytic_account_id.id)
def test_create_in(self):
create_data = {
'name': 'Test Line 2',
'quantity': 1,
'price_unit': 1,
'account_id': self.account.id,
'product_id': self.product2.id
}
invoice_line2 = self.env['account.invoice.line'].with_context(
{'inv_type': 'in_invoice'}).create(create_data)
self.assertEqual(invoice_line2.account_analytic_id.id,
self.product2.expense_analytic_account_id.id)

def test_create_out(self):
create_data = {
'name': 'Test Line 3',
'quantity': 1,
'price_unit': 1,
'account_id': self.account.id,
'product_id': self.product2.id
}
invoice_line3 = self.env['account.invoice.line'].with_context(
{'inv_type': 'out_invoice'}).create(create_data)
self.assertEqual(invoice_line3.account_analytic_id.id,
self.product2.income_analytic_account_id.id)
@@ -1,22 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>

<!--
Copyright (C) 2015 Akretion (http://www.akretion.com/)
Copyright 2015 Akretion (http://www.akretion.com/)
@author Alexis de Lattre <alexis.delattre@akretion.com>
-->

<openerp>
<data>
<odoo>

<record id="product_template_form_view" model="ir.ui.view">
<field name="name">product_analytic_account.product.template.form</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="account.product_template_form_view" />
<field name="arch" type="xml">
<field name="property_account_income" position="after">
<field name="property_account_income_id" position="after">
<field name="income_analytic_account_id"/>
</field>
<field name="property_account_expense" position="after">
<field name="property_account_expense_id" position="after">
<field name="expense_analytic_account_id"/>
</field>
</field>
Expand All @@ -27,14 +26,13 @@
<field name="model">product.category</field>
<field name="inherit_id" ref="account.view_category_property_form" />
<field name="arch" type="xml">
<field name="property_account_income_categ" position="after">
<field name="property_account_income_categ_id" position="after">
<field name="income_analytic_account_id"/>
</field>
<field name="property_account_expense_categ" position="after">
<field name="property_account_expense_categ_id" position="after">
<field name="expense_analytic_account_id"/>
</field>
</field>
</record>

</data>
</openerp>
</odoo>

0 comments on commit 2dd2d66

Please sign in to comment.