Browse Source

[MIG] Partner Financial Risk : Migration to 10.0

pull/470/head
Agathe Mollé 8 years ago
committed by David
parent
commit
0a7402bf00
  1. 9
      partner_financial_risk/README.rst
  2. 1
      partner_financial_risk/__init__.py
  3. 8
      partner_financial_risk/__manifest__.py
  4. 2
      partner_financial_risk/data/partner_financial_risk_data.xml
  5. 1
      partner_financial_risk/models/__init__.py
  6. 58
      partner_financial_risk/models/account_invoice.py
  7. 2
      partner_financial_risk/models/res_company.py
  8. 2
      partner_financial_risk/models/res_config.py
  9. 4
      partner_financial_risk/models/res_partner.py
  10. 1
      partner_financial_risk/tests/__init__.py
  11. 15
      partner_financial_risk/tests/test_partner_financial_risk.py
  12. 15
      partner_financial_risk/views/account_invoice_view.xml
  13. 2
      partner_financial_risk/views/res_config_view.xml
  14. 6
      partner_financial_risk/views/res_partner_view.xml
  15. 1
      partner_financial_risk/wizard/__init__.py
  16. 2
      partner_financial_risk/wizard/parner_risk_exceeded.py
  17. 2
      partner_financial_risk/wizard/partner_risk_exceeded_view.xml

9
partner_financial_risk/README.rst

@ -36,7 +36,7 @@ To use this module, you need to:
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/134/9.0
:target: https://runbot.odoo-community.org/runbot/134/10.0
Bug Tracker
@ -51,12 +51,19 @@ help us smashing it by providing a 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
------------
* Carlos Dauden <carlos.dauden@tecnativa.com>
* Pedro M. Baeza <pedro.baeza@tecnativa.com>
* Agathe Mollé <agathe.molle@savoirfairelinux.com>
Do not contact contributors directly about support or help with technical issues.
Maintainer
----------

1
partner_financial_risk/__init__.py

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import models
from . import wizard

8
partner_financial_risk/__openerp__.py → partner_financial_risk/__manifest__.py

@ -5,17 +5,19 @@
{
'name': 'Partner Financial Risk',
'summary': 'Manage partner risk',
'version': '9.0.1.0.0',
'version': '10.0.1.0.0',
'category': 'Sales Management',
'license': 'AGPL-3',
'author': 'Tecnativa, Odoo Community Association (OCA)',
'website': 'https://www.tecnativa.com',
'depends': ['account'],
'depends': [
'account',
'sales_team',
],
'data': [
'data/partner_financial_risk_data.xml',
'views/res_config_view.xml',
'views/res_partner_view.xml',
'views/account_invoice_view.xml',
'wizard/partner_risk_exceeded_view.xml',
],
'installable': True,

2
partner_financial_risk/data/partner_financial_risk_data.xml

@ -12,4 +12,4 @@
<field name="function" eval="'process_unpaid_invoices'"/>
<field name="args" eval="'()'"/>
</record>
</odoo>
</odoo>

1
partner_financial_risk/models/__init__.py

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import account_invoice
from . import res_company

58
partner_financial_risk/models/account_invoice.py

@ -2,39 +2,37 @@
# © 2016 Carlos Dauden <carlos.dauden@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp import api, models, _
from odoo import _, api, models
class AccountInvoice(models.Model):
_inherit = 'account.invoice'
@api.multi
def invoice_open(self):
if self.env.context.get('bypass_risk', False):
return self.signal_workflow('invoice_open')
for invoice in self:
partner = invoice.partner_id.commercial_partner_id
exception_msg = ""
if partner.risk_exception:
exception_msg = _("Financial risk exceeded.\n")
elif partner.risk_invoice_open_limit and (
(partner.risk_invoice_open + invoice.amount_total) >
partner.risk_invoice_open_limit):
exception_msg = _(
"This invoice exceeds the open invoices risk.\n")
# If risk_invoice_draft_include this invoice included in risk_total
elif not partner.risk_invoice_draft_include and (
partner.risk_invoice_open_include and
(partner.risk_total + invoice.amount_total) >
partner.credit_limit):
exception_msg = _(
"This invoice exceeds the financial risk.\n")
if exception_msg:
return self.env['partner.risk.exceeded.wiz'].create({
'exception_msg': exception_msg,
'partner_id': partner.id,
'origin_reference':
'%s,%s' % (self._model, invoice.id),
'continue_method': 'invoice_open',
}).action_show()
return self.signal_workflow('invoice_open')
def action_invoice_open(self):
if not self.env.context.get('bypass_risk', False):
for invoice in self:
partner = invoice.partner_id.commercial_partner_id
exception_msg = ""
if partner.risk_exception:
exception_msg = _("Financial risk exceeded.\n")
elif partner.risk_invoice_open_limit and (
(partner.risk_invoice_open + invoice.amount_total) >
partner.risk_invoice_open_limit):
exception_msg = _(
"This invoice exceeds the open invoices risk.\n")
elif not partner.risk_invoice_draft_include and (
partner.risk_invoice_open_include and
(partner.risk_total + invoice.amount_total) >
partner.credit_limit):
exception_msg = _(
"This invoice exceeds the financial risk.\n")
if exception_msg:
return self.env['partner.risk.exceeded.wiz'].create({
'exception_msg': exception_msg,
'partner_id': partner.id,
'origin_reference':
'%s,%s' % ('account.invoice', invoice.id),
'continue_method': 'action_invoice_open',
}).action_show()
return super(AccountInvoice, self).action_invoice_open()

2
partner_financial_risk/models/res_company.py

@ -2,7 +2,7 @@
# © 2016 Carlos Dauden <carlos.dauden@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp import fields, models
from odoo import fields, models
class ResCompany(models.Model):

2
partner_financial_risk/models/res_config.py

@ -2,7 +2,7 @@
# © 2016 Carlos Dauden <carlos.dauden@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp import fields, models
from odoo import fields, models
class AccountConfigSettings(models.TransientModel):

4
partner_financial_risk/models/res_partner.py

@ -4,7 +4,7 @@
from datetime import datetime
from dateutil.relativedelta import relativedelta
from openerp import api, fields, models
from odoo import api, fields, models
class ResPartner(models.Model):
@ -61,7 +61,7 @@ class ResPartner(models.Model):
@api.multi
def _compute_risk_allow_edit(self):
is_editable = self.env.user.has_group(
'base.group_sale_manager') or self.env.user.has_group(
'sales_team.group_sale_manager') or self.env.user.has_group(
'account.group_account_manager')
for partner in self.filtered('customer'):
partner.risk_allow_edit = is_editable

1
partner_financial_risk/tests/__init__.py

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import test_partner_financial_risk

15
partner_financial_risk/tests/test_partner_financial_risk.py

@ -2,15 +2,15 @@
# © 2016 Carlos Dauden <carlos.dauden@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp.tests.common import SavepointCase
from openerp import fields
from odoo.tests.common import SavepointCase
from odoo import fields
class TestPartnerFinancialRisk(SavepointCase):
@classmethod
def setUpClass(cls):
super(TestPartnerFinancialRisk, cls).setUpClass()
cls.env.user.groups_id |= cls.env.ref('base.group_sale_manager')
cls.env.user.groups_id |= cls.env.ref('sales_team.group_sale_manager')
cls.partner = cls.env['res.partner'].create({
'name': 'Partner test',
'customer': True,
@ -35,6 +35,7 @@ class TestPartnerFinancialRisk(SavepointCase):
'user_type_id': type_payable.id,
'reconcile': True,
})
cls.partner.property_account_payable_id = cls.account_customer.id
cls.journal_sale = cls.env['account.journal'].create({
'name': 'Test journal for sale',
'type': 'sale',
@ -68,7 +69,7 @@ class TestPartnerFinancialRisk(SavepointCase):
self.partner.risk_invoice_draft_include = True
self.assertAlmostEqual(self.partner.risk_invoice_draft, 550.0)
self.assertAlmostEqual(self.partner.risk_total, 550.0)
self.invoice.signal_workflow('invoice_open')
self.invoice.action_invoice_open()
self.assertAlmostEqual(self.partner.risk_invoice_draft, 0.0)
self.assertFalse(self.invoice.date_due)
self.partner.risk_invoice_unpaid_include = True
@ -82,14 +83,14 @@ class TestPartnerFinancialRisk(SavepointCase):
invoice2 = self.invoice.copy({'partner_id': self.invoice_address.id})
self.assertAlmostEqual(self.partner.risk_invoice_draft, 550.0)
self.assertAlmostEqual(self.partner.risk_invoice_unpaid, 550.0)
wiz_dic = invoice2.invoice_open()
wiz_dic = invoice2.action_invoice_open()
wiz = self.env[wiz_dic['res_model']].browse(wiz_dic['res_id'])
self.assertEqual(wiz.exception_msg, "Financial risk exceeded.\n")
self.partner.risk_invoice_unpaid_limit = 0.0
self.assertFalse(self.partner.risk_exception)
self.partner.risk_invoice_open_limit = 300.0
invoice2.date_due = fields.Date.today()
wiz_dic = invoice2.invoice_open()
wiz_dic = invoice2.action_invoice_open()
wiz = self.env[wiz_dic['res_model']].browse(wiz_dic['res_id'])
self.assertEqual(wiz.exception_msg,
"This invoice exceeds the open invoices risk.\n")
@ -97,7 +98,7 @@ class TestPartnerFinancialRisk(SavepointCase):
self.partner.risk_invoice_draft_include = False
self.partner.risk_invoice_open_include = True
self.partner.credit_limit = 900.0
wiz_dic = invoice2.invoice_open()
wiz_dic = invoice2.action_invoice_open()
wiz = self.env[wiz_dic['res_model']].browse(wiz_dic['res_id'])
self.assertEqual(wiz.exception_msg,
"This invoice exceeds the financial risk.\n")

15
partner_financial_risk/views/account_invoice_view.xml

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- © 2016 Carlos Dauden <carlos.dauden@tecnativa.com>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3). -->
<odoo>
<record id="invoice_partner_risk_form" model="ir.ui.view">
<field name="name">account.invoice.partner.risk.form</field>
<field name="model">account.invoice</field>
<field name="inherit_id" ref="account.invoice_form"/>
<field name="arch" type="xml">
<button name="invoice_open" position="attributes">
<attribute name="type">object</attribute>
</button>
</field>
</record>
</odoo>

2
partner_financial_risk/views/res_config_view.xml

@ -8,6 +8,7 @@
<field name="model">account.config.settings</field>
<field name="inherit_id" ref="account.view_account_config_settings"/>
<field name="arch" type="xml">
<xpath expr="//div[@name='payment_acquirer']/.." position="after">
<label for="id" string="Financial Risk"/>
<div name="financial_risk" string="Financial Risk div">
@ -15,6 +16,7 @@
<field name="invoice_unpaid_margin" class="oe_inline"/>
</div>
</xpath>
</field>
</record>

6
partner_financial_risk/views/res_partner_view.xml

@ -2,13 +2,15 @@
<!-- © 2016 Carlos Dauden <carlos.dauden@tecnativa.com>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3). -->
<odoo>
<record id="res_partner_view_risk" model="ir.ui.view">
<field name="name">res.partner.view.risk</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form" />
<field name="priority" eval="20"/>
<field name="groups_id" eval="[(4, ref('base.group_sale_salesman')), (4, ref('account.group_account_manager'))]"/>
<field name="groups_id" eval="[(4, ref('sales_team.group_sale_manager')), (4, ref('account.group_account_manager'))]"/>
<field name="arch" type="xml">
<page name="sales_purchases" position="after">
<page name="financial_risk" string="Financial Risk" attrs="{'invisible': [('customer','=',False)]}">
<group name="risk_general" col="3">
@ -53,6 +55,8 @@
</group>
</page>
</page>
</field>
</record>
</odoo>

1
partner_financial_risk/wizard/__init__.py

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import parner_risk_exceeded

2
partner_financial_risk/wizard/parner_risk_exceeded.py

@ -2,7 +2,7 @@
# © 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, _
from odoo import _, api, fields, models
class PartnerRiskExceededWiz(models.TransientModel):

2
partner_financial_risk/wizard/partner_risk_exceeded_view.xml

@ -17,7 +17,7 @@
class="oe_highlight"
name="button_continue"
type="object"
groups="base.group_sale_manager,account.group_account_manager"
groups="sales_team.group_sale_manager,account.group_account_manager"
/>
<button string="Cancel"
class="oe_link"

Loading…
Cancel
Save