Skip to content

Commit

Permalink
[IMP] analytic_partner_hr_timesheet: black, isort, prettier
Browse files Browse the repository at this point in the history
  • Loading branch information
Ernesto Tejeda committed Jan 18, 2022
1 parent 93abd73 commit a153134
Show file tree
Hide file tree
Showing 8 changed files with 105 additions and 79 deletions.
29 changes: 14 additions & 15 deletions analytic_partner_hr_timesheet/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,21 @@
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html

{
'name': 'Partner in HR timesheets',
'version': '12.0.1.1.0',
'summary': 'Classify HR activities by partner',
'category': 'Human Resources',
'author': 'Tecnativa, '
'Odoo Community Association (OCA)',
'license': 'AGPL-3',
'website': 'https://www.tecnativa.com',
'depends': [
'analytic_partner',
'hr_timesheet',
"name": "Partner in HR timesheets",
"version": "12.0.1.1.0",
"summary": "Classify HR activities by partner",
"category": "Human Resources",
"author": "Tecnativa, " "Odoo Community Association (OCA)",
"license": "AGPL-3",
"website": "https://github.com/OCA/account-analytic",
"depends": [
"analytic_partner",
"hr_timesheet",
],
'data': [
'views/hr_analytic_timesheet_views.xml',
'views/res_partner_views.xml',
"data": [
"views/hr_analytic_timesheet_views.xml",
"views/res_partner_views.xml",
],
'installable': True,
"installable": True,
"auto_install": True,
}
4 changes: 2 additions & 2 deletions analytic_partner_hr_timesheet/models/account_analytic_line.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@


class AnalyticAccountLine(models.Model):
_inherit = 'account.analytic.line'
_inherit = "account.analytic.line"

@api.onchange('project_id')
@api.onchange("project_id")
def onchange_project_id(self):
if self.project_id:
self.partner_id = self.project_id.partner_id.id
27 changes: 15 additions & 12 deletions analytic_partner_hr_timesheet/models/res_partner.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,29 @@


class ResPartner(models.Model):
_inherit = 'res.partner'
_inherit = "res.partner"

timesheet_ids = fields.One2many(
comodel_name='account.analytic.line', inverse_name='other_partner_id',
string='Timesheet activities')
comodel_name="account.analytic.line",
inverse_name="other_partner_id",
string="Timesheet activities",
)
timesheet_count = fields.Integer(
string='Timesheet Activities Number',
compute='_compute_timesheet_count', store=True)
string="Timesheet Activities Number",
compute="_compute_timesheet_count",
store=True,
)

@api.depends('timesheet_ids')
@api.depends("timesheet_ids")
def _compute_timesheet_count(self):
groups = self.env["account.analytic.line"].read_group(
[("other_partner_id", "in", self.ids),
("project_id", "!=", False)],
["other_partner_id"], ["other_partner_id"],
[("other_partner_id", "in", self.ids), ("project_id", "!=", False)],
["other_partner_id"],
["other_partner_id"],
)
result = {
data['other_partner_id'][0]: (
data['other_partner_id_count']
) for data in groups
data["other_partner_id"][0]: (data["other_partner_id_count"])
for data in groups
}
for partner in self:
partner.timesheet_count = result.get(partner.id, 0)
Original file line number Diff line number Diff line change
Expand Up @@ -6,43 +6,49 @@


class TestAnalyticPartnerHrTimesheet(common.SavepointCase):

@classmethod
def setUpClass(cls):
super(TestAnalyticPartnerHrTimesheet, cls).setUpClass()
cls.partner_line = cls.env['res.partner'].create({
'name': 'Test Partner Line',
})
cls.partner_project = cls.env['res.partner'].create({
'name': 'Test Partner Project',
})
cls.analytic_account = cls.env['account.analytic.account'].create({
'name': 'Test Analytic Account',
})
cls.project = cls.env['project.project'].create({
'name': 'Test Project',
'partner_id': cls.partner_project.id
})
cls.line = cls.env['account.analytic.line'].create({
'account_id': cls.analytic_account.id,
'name': 'Test Line',
'partner_id': cls.partner_line.id,
'project_id': cls.project.id,
})
cls.line2 = cls.env['account.analytic.line'].create({
'account_id': cls.analytic_account.id,
'name': 'Test Line without project',
'partner_id': cls.partner_line.id,
})
cls.partner_line = cls.env["res.partner"].create(
{
"name": "Test Partner Line",
}
)
cls.partner_project = cls.env["res.partner"].create(
{
"name": "Test Partner Project",
}
)
cls.analytic_account = cls.env["account.analytic.account"].create(
{
"name": "Test Analytic Account",
}
)
cls.project = cls.env["project.project"].create(
{"name": "Test Project", "partner_id": cls.partner_project.id}
)
cls.line = cls.env["account.analytic.line"].create(
{
"account_id": cls.analytic_account.id,
"name": "Test Line",
"partner_id": cls.partner_line.id,
"project_id": cls.project.id,
}
)
cls.line2 = cls.env["account.analytic.line"].create(
{
"account_id": cls.analytic_account.id,
"name": "Test Line without project",
"partner_id": cls.partner_line.id,
}
)

def test_onchange_project_id(self):
self.line.project_id = self.project.id
self.line.onchange_project_id()
self.assertEqual(self.line.partner_id,
self.line.project_id.partner_id)
self.assertEqual(self.line.partner_id, self.line.project_id.partner_id)

def test_compute_timesheet_count(self):
self.line.other_partner_id = self.partner_line.id
self.partner_line._compute_timesheet_count()
self.assertEqual(
self.partner_line.timesheet_count, 1)
self.assertEqual(self.partner_line.timesheet_count, 1)
29 changes: 18 additions & 11 deletions analytic_partner_hr_timesheet/views/hr_analytic_timesheet_views.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
<odoo>

<record model="ir.ui.view" id="hr_timesheet_line_tree_partner">
Expand All @@ -7,27 +7,34 @@
<field name="inherit_id" ref="hr_timesheet.hr_timesheet_line_tree" />
<field name="arch" type="xml">
<field name="task_id" position="after">
<field name="partner_id" readonly="1"/>
<field name="other_partner_id"/>
<field name="partner_id" readonly="1" />
<field name="other_partner_id" />
</field>
</field>
</record>

<record model="ir.ui.view" id="hr_timesheet_line_search_partner">
<field name="name">Timesheet activities search (with partner)</field>
<field name="model">account.analytic.line</field>
<field name="inherit_id" ref="hr_timesheet.hr_timesheet_line_search"/>
<field name="inherit_id" ref="hr_timesheet.hr_timesheet_line_search" />
<field name="arch" type="xml">
<field name="task_id" position="after">
<field name="partner_id"/>
<field name="other_partner_id"/>
<field name="partner_id" />
<field name="other_partner_id" />
</field>
<xpath expr="//group" position="inside">
<filter name="partner" string="Account Partner" domain="[]"
context="{'group_by': 'partner_id'}"/>
<filter name="other.partner" string="Other Partner"
domain="[]"
context="{'group_by': 'other_partner_id'}"/>
<filter
name="partner"
string="Account Partner"
domain="[]"
context="{'group_by': 'partner_id'}"
/>
<filter
name="other.partner"
string="Other Partner"
domain="[]"
context="{'group_by': 'other_partner_id'}"
/>
</xpath>
</field>
</record>
Expand Down
24 changes: 14 additions & 10 deletions analytic_partner_hr_timesheet/views/res_partner_views.xml
Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
<odoo>

<record model="ir.ui.view" id="view_partner_form_timesheet">
<field name="name">Partner Form with timesheet activities</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="inherit_id" ref="base.view_partner_form" />
<field name="arch" type="xml">
<xpath expr='//div[@name="button_box"]' position='inside'>
<button name="%(hr_timesheet.timesheet_action_all)d"
type="action"
class="oe_inline oe_stat_button"
context="{'search_default_other_partner_id': active_id, 'default_other_partner_id': active_id}"
icon="fa-check-square-o">
<field name="timesheet_count"
string="Activities"
widget="statinfo"/>
<button
name="%(hr_timesheet.timesheet_action_all)d"
type="action"
class="oe_inline oe_stat_button"
context="{'search_default_other_partner_id': active_id, 'default_other_partner_id': active_id}"
icon="fa-check-square-o"
>
<field
name="timesheet_count"
string="Activities"
widget="statinfo"
/>
</button>
</xpath>
</field>
Expand Down
6 changes: 6 additions & 0 deletions setup/analytic_partner_hr_timesheet/setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import setuptools

setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

0 comments on commit a153134

Please sign in to comment.