Skip to content

Commit 8a44dd5

Browse files
Merge pull request #328 from vin0dkhichar/17.0-develop
Removed the dependency of program
2 parents 9ffe381 + 7cad7b1 commit 8a44dd5

File tree

8 files changed

+68
-186
lines changed

8 files changed

+68
-186
lines changed

g2p_support_desk/__manifest__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
"mail",
1313
"portal",
1414
"web",
15-
"g2p_programs",
16-
"g2p_registry_base",
1715
],
1816
"data": [
1917
"security/support_desk_security.xml",

g2p_support_desk/models/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@
33
from . import support_category
44
from . import support_tag
55
from . import support_stage
6+
from . import support_ticket_id
Lines changed: 16 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
1-
import logging
2-
31
from odoo import api, fields, models
42

5-
_logger = logging.getLogger(__name__)
6-
73

84
class SupportTicket(models.Model):
95
_name = "support.ticket"
@@ -19,11 +15,7 @@ class SupportTicket(models.Model):
1915
string="Team",
2016
tracking=True,
2117
)
22-
program_id = fields.Many2one(
23-
"g2p.program",
24-
string="Program",
25-
tracking=True,
26-
)
18+
2719
user_id = fields.Many2one(
2820
"res.users",
2921
string="Assigned To",
@@ -32,17 +24,12 @@ class SupportTicket(models.Model):
3224
domain=[("share", "=", False)],
3325
)
3426

35-
beneficiary_id = fields.Many2one("g2p.program_membership", string="Beneficiary", tracking=True)
36-
# partner_email = fields.Char(string='Beneficiary Email')
37-
# partner_phone = fields.Char(string='Beneficiary Phone')
38-
3927
category_id = fields.Many2one("support.category", string="Category")
4028
tag_ids = fields.Many2many("support.tag", string="Tags")
4129
stage_id = fields.Many2one(
4230
"support.stage",
4331
string="Stage",
4432
tracking=True,
45-
# default=lambda self: self._get_default_stage(),
4633
copy=False,
4734
required=True,
4835
)
@@ -56,13 +43,24 @@ class SupportTicket(models.Model):
5643

5744
closed_date = fields.Datetime()
5845

59-
# Statistics
60-
# response_time = fields.Float(
61-
# string="Response Time (Hours)", readonly=True, compute="_compute_response_time", store=True
62-
# )
6346
resolution_message = fields.Html()
6447
resolution_time = fields.Float(string="Resolution Time (Hours)")
6548

49+
program_id = fields.Char(string="Program ID")
50+
ern = fields.Char(string="Entitlement Reference Number")
51+
application_id = fields.Char(string="Application ID")
52+
53+
creator_name = fields.Char()
54+
creator_email = fields.Char()
55+
creator_address = fields.Text()
56+
creator_phone = fields.Char()
57+
58+
reg_ids = fields.One2many(
59+
"support.ticket.id",
60+
"ticket_id",
61+
string="IDs",
62+
)
63+
6664
def action_assign_to_me(self):
6765
self.ensure_one()
6866
self.user_id = self.env.user.id
@@ -72,39 +70,3 @@ def create(self, vals):
7270
if vals.get("number", "New") == "New":
7371
vals["number"] = self.env["ir.sequence"].next_by_code("support.ticket") or "New"
7472
return super().create(vals)
75-
76-
# @api.onchange('partner_id')
77-
# def _onchange_partner_id(self):
78-
# if self.partner_id:
79-
# self.partner_email = self.partner_id.email or False
80-
# self.partner_phone = self.partner_id.phone or False
81-
# else:
82-
# self.partner_email = False
83-
# self.partner_phone = False
84-
85-
# @api.onchange('stage_id')
86-
# def _onchange_stage_id(self):
87-
# if not self.stage_id:
88-
# return
89-
# if self.stage_id.done:
90-
# self.closed_date = fields.Datetime.now()
91-
# else:
92-
# self.closed_date = False
93-
94-
# @api.depends("create_date", "write_date")
95-
# def _compute_response_time(self):
96-
# for ticket in self:
97-
# if ticket.create_date and ticket.write_date:
98-
# delta = ticket.write_date - ticket.create_date
99-
# # Ensure we have a positive time difference
100-
# if delta.total_seconds() > 0:
101-
# ticket.response_time = delta.total_seconds() / 3600.0 # Convert to hours
102-
# else:
103-
# # If write_date is not after create_date, use a small positive value
104-
# ticket.response_time = 0.1
105-
# else:
106-
# ticket.response_time = 0.0
107-
108-
@api.onchange("program_id")
109-
def _onchange_program_id(self):
110-
self.beneficiary_id = False
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from odoo import fields, models
2+
3+
4+
class SupportTicketID(models.Model):
5+
_name = "support.ticket.id"
6+
_description = "Support Ticket ID"
7+
_order = "id desc"
8+
9+
ticket_id = fields.Many2one(
10+
"support.ticket",
11+
string="Support Ticket",
12+
required=True,
13+
index=True,
14+
ondelete="cascade",
15+
)
16+
id_type = fields.Char(string="ID Type", size=100)
17+
value = fields.Char(string="ID Value", size=100)

g2p_support_desk/security/ir.model.access.csv

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ access_support_tag_user,support.tag.user,model_support_tag,group_support_desk_us
99
access_support_tag_manager,support.tag.manager,model_support_tag,group_support_desk_manager,1,1,1,1
1010
access_support_stage_user,support.stage.user,model_support_stage,group_support_desk_user,1,0,0,0
1111
access_support_stage_manager,support.stage.manager,model_support_stage,group_support_desk_manager,1,1,1,1
12-
access_g2p_program_user,g2p.program.user,g2p_programs.model_g2p_program,group_support_desk_user,1,0,0,0
13-
access_g2p_program_manager,g2p.program.manager,g2p_programs.model_g2p_program,group_support_desk_manager,1,1,1,1
12+
access_support_ticket_id_user,support.ticket.id.user,model_support_ticket_id,group_support_desk_user,1,0,1,0
13+
access_support_ticket_id_manager,support.ticket.id.manager,model_support_ticket_id,group_support_desk_manager,1,1,1,1

g2p_support_desk/security/support_desk_security.xml

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -36,22 +36,4 @@
3636
<field name="groups" eval="[(4, ref('group_support_desk_manager'))]" />
3737
</record>
3838

39-
<!-- Program Record Rules -->
40-
<record id="g2p_program_user_rule" model="ir.rule">
41-
<field name="name">Program User Rule</field>
42-
<field name="model_id" ref="g2p_programs.model_g2p_program" />
43-
<field name="domain_force">[(1,'=',1)]</field>
44-
<field name="groups" eval="[(4, ref('group_support_desk_user'))]" />
45-
<field name="perm_read" eval="True" />
46-
<field name="perm_write" eval="False" />
47-
<field name="perm_create" eval="False" />
48-
<field name="perm_unlink" eval="False" />
49-
</record>
50-
51-
<record id="g2p_program_manager_rule" model="ir.rule">
52-
<field name="name">Program Manager Rule</field>
53-
<field name="model_id" ref="g2p_programs.model_g2p_program" />
54-
<field name="domain_force">[(1,'=',1)]</field>
55-
<field name="groups" eval="[(4, ref('group_support_desk_manager'))]" />
56-
</record>
5739
</odoo>

g2p_support_desk/tests/test_support_desk.py

Lines changed: 0 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,6 @@ def setUpClass(cls):
3030
}
3131
)
3232

33-
# Create test program with minimal required fields
34-
cls.program = cls.env["g2p.program"].create(
35-
{
36-
"name": "Test Program",
37-
"target_type": "individual",
38-
}
39-
)
40-
4133
# Create test team
4234
cls.team = cls.env["support.team"].create(
4335
{
@@ -100,7 +92,6 @@ def test_01_ticket_creation(self):
10092
"category_id": self.category.id,
10193
"tag_ids": [(4, self.tag.id)],
10294
"priority": "1", # Medium priority
103-
"program_id": self.program.id,
10495
"stage_id": default_stage.id,
10596
}
10697
)
@@ -111,7 +102,6 @@ def test_01_ticket_creation(self):
111102
self.assertEqual(ticket.category_id, self.category)
112103
self.assertEqual(ticket.tag_ids, self.tag)
113104
self.assertEqual(ticket.priority, "1")
114-
self.assertEqual(ticket.program_id, self.program)
115105
self.assertEqual(ticket.stage_id, default_stage)
116106
self.assertTrue(ticket.active)
117107

@@ -323,86 +313,3 @@ def test_10_ticket_resolution_time(self):
323313
ticket.write({"stage_id": self.stage_done.id, "closed_date": self.env.cr.now()})
324314
self.assertIsNotNone(ticket.closed_date)
325315
self.assertIsNotNone(ticket.resolution_time)
326-
327-
def test_11_ticket_beneficiary_filter(self):
328-
"""Test ticket beneficiary filter"""
329-
# Create a ticket with a program
330-
ticket = self.env["support.ticket"].create(
331-
{
332-
"name": "Beneficiary Test Ticket",
333-
"description": "Test Description",
334-
"team_id": self.team.id,
335-
"program_id": self.program.id,
336-
"stage_id": self.stage_new.id,
337-
}
338-
)
339-
340-
# Test that no beneficiary is selected initially
341-
self.assertFalse(ticket.beneficiary_id)
342-
343-
# Add a beneficiary to the program
344-
partner = self.env["res.partner"].create(
345-
{
346-
"name": "Test Beneficiary",
347-
"is_registrant": True, # Required for program membership
348-
}
349-
)
350-
membership = self.env["g2p.program_membership"].create(
351-
{
352-
"program_id": self.program.id,
353-
"partner_id": partner.id,
354-
}
355-
)
356-
357-
# Test that beneficiary can be selected after adding to program
358-
ticket.write({"beneficiary_id": membership.id})
359-
self.assertEqual(ticket.beneficiary_id, membership)
360-
361-
# Remove the beneficiary from the program
362-
membership.unlink()
363-
364-
# Test that beneficiary is cleared when removed from program
365-
# We need to trigger the constraint check by writing to the program_id
366-
ticket.write({"program_id": self.program.id})
367-
self.assertFalse(ticket.beneficiary_id)
368-
369-
def test_13_ticket_onchange_program_id(self):
370-
"""Test ticket onchange program id"""
371-
# Create a ticket with a program
372-
ticket = self.env["support.ticket"].create(
373-
{
374-
"name": "Onchange Program Test Ticket",
375-
"description": "Test Description",
376-
"team_id": self.team.id,
377-
"program_id": self.program.id,
378-
"stage_id": self.stage_new.id,
379-
}
380-
)
381-
382-
# Test that no beneficiary is selected initially
383-
self.assertFalse(ticket.beneficiary_id)
384-
385-
# Add a beneficiary to the program
386-
partner = self.env["res.partner"].create(
387-
{
388-
"name": "Test Beneficiary",
389-
"is_registrant": True, # Required for program membership
390-
}
391-
)
392-
membership = self.env["g2p.program_membership"].create(
393-
{
394-
"program_id": self.program.id,
395-
"partner_id": partner.id,
396-
}
397-
)
398-
399-
# Test that beneficiary can be selected after adding to program
400-
ticket.write({"beneficiary_id": membership.id})
401-
self.assertEqual(ticket.beneficiary_id, membership)
402-
403-
# Remove the program
404-
# ticket.write({"program_id": False})
405-
ticket.write({"program_id": False, "beneficiary_id": False})
406-
407-
# Test that beneficiary is cleared when program is removed
408-
self.assertFalse(ticket.beneficiary_id)

g2p_support_desk/views/support_ticket_views.xml

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -43,29 +43,33 @@
4343
<field name="name" required="1" />
4444
<field name="team_id" />
4545
<field name="user_id" />
46-
<field name="priority" widget="priority" />
47-
</group>
48-
<group>
49-
<field name="program_id" required="1" />
50-
<field
51-
name="beneficiary_id"
52-
required="1"
53-
domain="[('program_id', '=', program_id)]"
54-
/>
55-
<!-- <field name="partner_email" readonly="1"/>
56-
<field name="partner_phone" readonly="1"/> -->
5746
</group>
5847
<group>
48+
<field name="stage_id" />
5949
<field
6050
name="tag_ids"
6151
widget="many2many_tags"
6252
options="{'color_field': 'color'}"
6353
/>
64-
<field name="stage_id" />
54+
<field name="priority" widget="priority" />
6555
</group>
56+
57+
<group col="2">
58+
<field name="creator_name" />
59+
<field name="creator_email" />
60+
<field name="creator_phone" />
61+
<field name="creator_address" colspan="2" />
62+
</group>
63+
6664
<group>
67-
<field name="closed_date" />
6865
<field name="category_id" />
66+
<field name="program_id" />
67+
<field name="ern" />
68+
<field name="application_id" />
69+
</group>
70+
71+
<group>
72+
<field name="closed_date" />
6973
</group>
7074
</group>
7175
<notebook>
@@ -78,6 +82,20 @@
7882
<field name="resolution_time" />
7983
</group>
8084
</page>
85+
<page string="IDs" name="ids">
86+
<field name="reg_ids">
87+
<tree editable="bottom">
88+
<field name="id_type" />
89+
<field name="value" />
90+
</tree>
91+
<form>
92+
<group>
93+
<field name="id_type" />
94+
<field name="value" />
95+
</group>
96+
</form>
97+
</field>
98+
</page>
8199
</notebook>
82100
</sheet>
83101
<div class="oe_chatter">
@@ -97,8 +115,6 @@
97115
<tree decoration-danger="priority=='3'" decoration-warning="priority=='2'">
98116
<field name="number" />
99117
<field name="name" />
100-
<field name="program_id" />
101-
<field name="beneficiary_id" />
102118
<field name="team_id" />
103119
<field name="user_id" />
104120
<field name="stage_id" />
@@ -196,7 +212,6 @@
196212
<search>
197213
<field name="name" />
198214
<field name="number" />
199-
<field name="beneficiary_id" />
200215
<field name="user_id" />
201216
<field name="team_id" />
202217
<separator />
@@ -222,7 +237,7 @@
222237
<record id="action_support_ticket" model="ir.actions.act_window">
223238
<field name="name">Support Tickets</field>
224239
<field name="res_model">support.ticket</field>
225-
<field name="view_mode">kanban,tree,form</field>
240+
<field name="view_mode">tree,kanban,form</field>
226241
<field name="context">{'search_default_my_tickets': 1}</field>
227242
<field name="help" type="html">
228243
<p class="o_view_nocontent_smiling_face">

0 commit comments

Comments
 (0)