Skip to content

Commit

Permalink
[IMP][BR_deliverable] Added Smart Buttons and Search views for DL and…
Browse files Browse the repository at this point in the history
… RL (OCA#113)

* [Add/IMP] Added Smart Buttons and Search views

* [IMP]Fixed Travis

* [WIP] Count Rsource lines and Deliverble lines in smartbuttons also improved code as per comments

* [IMP]Improved access rules as per OCA#103 matrix

* [IMP]Fix Travis

* [IMP] Added graph/pivot views inDL/RL and improved code

* [IMP] fields_view_get by mistake removed method

* [IMP]Improved Code.

* [IMP]In DL Added Sales and prices at RL level.

* [IMP]Improved Indentation

* [IMP]Improved Code.

* [IMP]Improved Code.
  • Loading branch information
sudhir-serpentcs authored and Ruter Lv committed Mar 15, 2019
1 parent bc74dba commit 4a2637a
Show file tree
Hide file tree
Showing 3 changed files with 426 additions and 14 deletions.
104 changes: 103 additions & 1 deletion business_requirement_deliverable/models/business.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,23 @@ class BusinessRequirementResource(models.Model):
string='Business Requirement Deliverable',
ondelete='cascade'
)
business_requirement_id = fields.Many2one(
comodel_name='business.requirement',
string='Business Requirement',
required=True,
)
business_requirement_partner_id = fields.Many2one(
comodel_name='res.partner',
related='business_requirement_id.partner_id',
string='Business Requirement',
store=True
)
business_requirement_project_id = fields.Many2one(
comodel_name='project.project',
related='business_requirement_id.project_id',
string='Business Requirement',
store=True
)

@api.multi
@api.onchange('product_id')
Expand Down Expand Up @@ -118,7 +135,8 @@ class BusinessRequirementDeliverable(models.Model):
business_requirement_id = fields.Many2one(
comodel_name='business.requirement',
string='Business Requirement',
ondelete='cascade'
ondelete='cascade',
required=True
)
unit_price = fields.Float(
string='Sales Price'
Expand All @@ -133,6 +151,18 @@ class BusinessRequirementDeliverable(models.Model):
readonly=True,
compute='_compute_get_currency',
)
business_requirement_partner_id = fields.Many2one(
comodel_name='res.partner',
related='business_requirement_id.partner_id',
string='Business Requirement',
store=True
)
business_requirement_project_id = fields.Many2one(
comodel_name='project.project',
related='business_requirement_id.project_id',
string='Business Requirement',
store=True
)

@api.multi
@api.depends('business_requirement_id.partner_id')
Expand Down Expand Up @@ -233,6 +263,17 @@ class BusinessRequirement(models.Model):
states={'draft': [('readonly', False)],
'confirmed': [('readonly', False)]},
)

resource_lines = fields.One2many(
comodel_name='business.requirement.resource',
inverse_name='business_requirement_id',
string='Resource Lines',
copy=True,
readonly=True,
states={'draft': [('readonly', False)],
'confirmed': [('readonly', False)]},
)

total_revenue = fields.Float(
compute='_compute_deliverable_total',
string='Total Revenue',
Expand All @@ -244,6 +285,67 @@ class BusinessRequirement(models.Model):
readonly=True,
compute='_compute_get_currency',
)
dl_count = fields.Integer('DL Count', compute='_compute_dl_count')
rl_count = fields.Integer('DL Count', compute='_compute_rl_count')
dl_counta = fields.Integer('DL Count', compute='_compute_dl_count')
rl_counta = fields.Integer('DL Count', compute='_compute_rl_count')

@api.multi
def _compute_dl_count(self):
for r in self:
r.dl_count = len(r.deliverable_lines.ids)
r.dl_counta = len(r.deliverable_lines.ids)

@api.multi
def _compute_rl_count(self):
for r in self:
r.rl_count = len(r.resource_lines.ids)
r.rl_counta = len(r.resource_lines.ids)

@api.multi
def open_deliverable_line(self):
for self in self:
domain = [('business_requirement_id', '=', self.id)]
br_id = 0
if self.state in ('draft', 'confirmed'):
br_id = self.id
return {
'name': _('Deliverable Lines'),
'type': 'ir.actions.act_window',
'view_type': 'form',
'view_mode': 'tree,form,graph',
'res_model': 'business.requirement.deliverable',
'target': 'current',
'domain': domain,
'context': {
'tree_view_ref': 'business_requirement_deliverable.' +
'view_business_requirement_deliverable_tree',
'form_view_ref': 'business_requirement_deliverable.' +
'view_business_requirement_deliverable_form',
'default_business_requirement_id': br_id
}}

@api.multi
def open_resource_line(self):
for self in self:
res_lines = self.env['business.requirement.resource'].\
search([('business_requirement_id', '=', self.id)])
br_id = 0
if self.state in ('draft', 'confirmed'):
br_id = self.id
return {
'name': _('Resource Lines'),
'view_type': 'form',
'view_mode': 'tree,graph',
'res_model': 'business.requirement.resource',
'type': 'ir.actions.act_window',
'domain': [('id', 'in', res_lines.ids)],
'context': {
'tree_view_ref': 'business_requirement_resource.' +
'view_business_requirement_resource_tree',
'default_business_requirement_id': br_id
}
}

@api.multi
@api.depends('partner_id')
Expand Down
25 changes: 21 additions & 4 deletions business_requirement_deliverable/tests/test_br.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,13 @@ def setUp(self):

vals = {
'description': ' test',
}
self.br = self.env['business.requirement'].create(vals)
self.br.write({
'deliverable_lines': [
(0, 0, {'name': 'deliverable line1', 'qty': 1.0,
'unit_price': 900, 'uom_id': 1,
'business_requirement_id': self.br.id,
'resource_ids': [
(0, 0, {
'name': 'Resource Line1',
Expand All @@ -69,6 +73,7 @@ def setUp(self):
'uom_id': self.uom_hours.id,
'resource_type': 'task',
'user_id': self.user.id,
'business_requirement_id': self.br.id
}),
(0, 0, {
'name': 'Resource Line1',
Expand All @@ -77,6 +82,7 @@ def setUp(self):
'uom_id': self.uom_hours.id,
'resource_type': 'task',
'user_id': self.user.id,
'business_requirement_id': self.br.id
})
]
}),
Expand All @@ -87,9 +93,7 @@ def setUp(self):
(0, 0, {'name': 'deliverable line4', 'qty': 1.0,
'unit_price': 1500, 'uom_id': 1,
}),
],
}
self.br = self.env['business.requirement'].create(vals)
]})

def test_get_cost_total(self):
cost_total = self.br.total_revenue
Expand Down Expand Up @@ -121,7 +125,6 @@ def test_resource_uom_change(self):
def test_resource_product_id_change(self):
resource = self.env['business.requirement.resource'].search([
('product_id', '=', self.productA.id)])[0]

resource.write({'product_id': self.productB.id})
resource.product_id_change()

Expand All @@ -132,6 +135,20 @@ def test_resource_product_id_change(self):
self.assertEqual(
resource.uom_id.id, self.productB.uom_id.id)

def test_resource_fields_view_get(self):
resource = self.env['business.requirement.resource'].search([
('product_id', '=', self.productA.id)])[0]
resource.fields_view_get(False, 'tree')
self.br.deliverable_lines[0].fields_view_get(False, 'form')

def test_compute_business_requirement_dl_rl(self):
self.br._compute_dl_count()
self.br._compute_rl_count()

def test_open_business_requirement_dl_rl(self):
self.br.open_deliverable_line()
self.br.open_resource_line()

def test_compute_get_currency(self):
self.partner = self.env['res.partner'].create({
'name': 'Your company test',
Expand Down

0 comments on commit 4a2637a

Please sign in to comment.