otrs-somconnexio 0.6.6__py2.py3-none-any.whl → 0.6.8__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- otrs_somconnexio/otrs_models/provision_dynamic_fields.py +10 -1
- otrs_somconnexio/otrs_models/switchboard_data.py +4 -2
- otrs_somconnexio/otrs_models/switchboard_dynamic_fields.py +32 -6
- otrs_somconnexio/otrs_models/switchboard_header_data.py +18 -0
- otrs_somconnexio/otrs_models/switchboard_header_dynamic_fields.py +80 -0
- otrs_somconnexio/otrs_models/switchboard_header_ticket.py +26 -0
- otrs_somconnexio/otrs_models/ticket_factory.py +5 -0
- otrs_somconnexio/otrs_models/ticket_types/we_call_you_ticket.py +2 -2
- otrs_somconnexio/services/get_ticket_title.py +1 -0
- {otrs_somconnexio-0.6.6.dist-info → otrs_somconnexio-0.6.8.dist-info}/METADATA +1 -1
- {otrs_somconnexio-0.6.6.dist-info → otrs_somconnexio-0.6.8.dist-info}/RECORD +22 -15
- tests/integration/test_ticket_factory.py +2 -1
- tests/otrs_models/test_router_4G_dynamic_fields.py +2 -2
- tests/otrs_models/test_switchboard_data.py +2 -1
- tests/otrs_models/test_switchboard_dynamic_fields.py +32 -4
- tests/otrs_models/test_switchboard_header_data.py +18 -0
- tests/otrs_models/test_switchboard_header_dynamic_fields.py +119 -0
- tests/otrs_models/test_switchboard_header_ticket.py +119 -0
- tests/otrs_models/test_switchboard_ticket.py +127 -0
- tests/otrs_models/ticket_types/test_we_call_you.py +3 -3
- {otrs_somconnexio-0.6.6.dist-info → otrs_somconnexio-0.6.8.dist-info}/WHEEL +0 -0
- {otrs_somconnexio-0.6.6.dist-info → otrs_somconnexio-0.6.8.dist-info}/top_level.txt +0 -0
|
@@ -29,6 +29,7 @@ class ProvisionDynamicFields:
|
|
|
29
29
|
self._has_active_contracts(),
|
|
30
30
|
self._has_documentation(),
|
|
31
31
|
self._lang(),
|
|
32
|
+
self._order_id(),
|
|
32
33
|
]
|
|
33
34
|
dynamic_fields += self._build_specific_dynamic_fields()
|
|
34
35
|
|
|
@@ -92,7 +93,12 @@ class ProvisionDynamicFields:
|
|
|
92
93
|
return DynamicField(name="TecDelServei", value=self.service_data.technology)
|
|
93
94
|
|
|
94
95
|
def _sales_team(self):
|
|
95
|
-
|
|
96
|
+
"""odoo crm model team_id field mapping"""
|
|
97
|
+
sales_team_dct = {
|
|
98
|
+
"Residential": "residencial",
|
|
99
|
+
"Business": "empreses",
|
|
100
|
+
"Sales": "vendes",
|
|
101
|
+
}
|
|
96
102
|
return DynamicField(
|
|
97
103
|
name="equipVendes",
|
|
98
104
|
value=sales_team_dct.get(self.service_data.sales_team, ""),
|
|
@@ -100,3 +106,6 @@ class ProvisionDynamicFields:
|
|
|
100
106
|
|
|
101
107
|
def _has_documentation(self):
|
|
102
108
|
return DynamicField(name="flagDocumentacio", value="0")
|
|
109
|
+
|
|
110
|
+
def _order_id(self):
|
|
111
|
+
return DynamicField(name="IDpeticio", value=self.service_data.order_id)
|
|
@@ -12,7 +12,7 @@ class SwitchboardData:
|
|
|
12
12
|
sales_team,
|
|
13
13
|
type,
|
|
14
14
|
landline,
|
|
15
|
-
|
|
15
|
+
mobile_phone_number,
|
|
16
16
|
icc,
|
|
17
17
|
has_sim,
|
|
18
18
|
extension,
|
|
@@ -25,6 +25,7 @@ class SwitchboardData:
|
|
|
25
25
|
shipment_city,
|
|
26
26
|
shipment_zip,
|
|
27
27
|
shipment_subdivision,
|
|
28
|
+
additional_products,
|
|
28
29
|
activation_notes="",
|
|
29
30
|
notes="",
|
|
30
31
|
):
|
|
@@ -37,7 +38,7 @@ class SwitchboardData:
|
|
|
37
38
|
self.sales_team = sales_team
|
|
38
39
|
self.type = type
|
|
39
40
|
self.landline = landline
|
|
40
|
-
self.
|
|
41
|
+
self.mobile_phone_number = mobile_phone_number
|
|
41
42
|
self.icc = icc
|
|
42
43
|
self.has_sim = has_sim
|
|
43
44
|
self.extension = extension
|
|
@@ -50,5 +51,6 @@ class SwitchboardData:
|
|
|
50
51
|
self.shipment_city = shipment_city
|
|
51
52
|
self.shipment_zip = shipment_zip
|
|
52
53
|
self.shipment_subdivision = shipment_subdivision
|
|
54
|
+
self.additional_products = additional_products
|
|
53
55
|
self.activation_notes = activation_notes
|
|
54
56
|
self.notes = notes
|
|
@@ -6,11 +6,13 @@ from otrs_somconnexio.otrs_models.provision_dynamic_fields import ProvisionDynam
|
|
|
6
6
|
class SwitchboardDynamicFields(ProvisionDynamicFields):
|
|
7
7
|
def _build_specific_dynamic_fields(self):
|
|
8
8
|
dynamic_fields = [
|
|
9
|
-
self.
|
|
9
|
+
self._service_type(),
|
|
10
|
+
self._is_header(),
|
|
11
|
+
self._phone_number(),
|
|
10
12
|
self._landline(),
|
|
11
|
-
self._landline_2(),
|
|
12
13
|
self._icc(),
|
|
13
14
|
self._sim_received(),
|
|
15
|
+
self._send_sim_type(),
|
|
14
16
|
self._extension(),
|
|
15
17
|
self._agent_name(),
|
|
16
18
|
self._agent_email(),
|
|
@@ -18,11 +20,18 @@ class SwitchboardDynamicFields(ProvisionDynamicFields):
|
|
|
18
20
|
self._shipment_city(),
|
|
19
21
|
self._shipment_zip(),
|
|
20
22
|
self._shipment_subdivision(),
|
|
23
|
+
self._additional_products(),
|
|
21
24
|
]
|
|
22
25
|
return dynamic_fields
|
|
23
26
|
|
|
24
|
-
def
|
|
25
|
-
|
|
27
|
+
def _service_type(self):
|
|
28
|
+
if self.service_data.type == "portability":
|
|
29
|
+
return DynamicField("tipusServeiCV", "portabilitat")
|
|
30
|
+
else:
|
|
31
|
+
return DynamicField("tipusServeiCV", "altaNova")
|
|
32
|
+
|
|
33
|
+
def _is_header(self):
|
|
34
|
+
return DynamicField(name="CVHeader", value="0")
|
|
26
35
|
|
|
27
36
|
def _product(self):
|
|
28
37
|
return DynamicField(name="productCV", value=self.service_data.product)
|
|
@@ -30,8 +39,10 @@ class SwitchboardDynamicFields(ProvisionDynamicFields):
|
|
|
30
39
|
def _landline(self):
|
|
31
40
|
return DynamicField(name="portaFixCV1", value=self.service_data.landline)
|
|
32
41
|
|
|
33
|
-
def
|
|
34
|
-
return DynamicField(
|
|
42
|
+
def _phone_number(self):
|
|
43
|
+
return DynamicField(
|
|
44
|
+
name="liniaMobil", value=self.service_data.mobile_phone_number
|
|
45
|
+
)
|
|
35
46
|
|
|
36
47
|
def _icc(self):
|
|
37
48
|
return DynamicField(name="ICCSC", value=self.service_data.icc)
|
|
@@ -40,6 +51,10 @@ class SwitchboardDynamicFields(ProvisionDynamicFields):
|
|
|
40
51
|
sim_recieved = "1" if self.service_data.has_sim else "0"
|
|
41
52
|
return DynamicField("SIMrebuda", sim_recieved)
|
|
42
53
|
|
|
54
|
+
def _send_sim_type(self):
|
|
55
|
+
result = "None" if self.service_data.mobile_phone_number else False
|
|
56
|
+
return DynamicField(name="tipusEnviamentSIM", value=result)
|
|
57
|
+
|
|
43
58
|
def _extension(self):
|
|
44
59
|
return DynamicField(name="extensio", value=self.service_data.extension)
|
|
45
60
|
|
|
@@ -66,3 +81,14 @@ class SwitchboardDynamicFields(ProvisionDynamicFields):
|
|
|
66
81
|
return DynamicField(
|
|
67
82
|
name="provinciaEnviament", value=self.service_data.shipment_subdivision
|
|
68
83
|
)
|
|
84
|
+
|
|
85
|
+
def _additional_products(self):
|
|
86
|
+
additional_products_list = (
|
|
87
|
+
self.service_data.additional_products.split(",")
|
|
88
|
+
if self.service_data.additional_products
|
|
89
|
+
else []
|
|
90
|
+
)
|
|
91
|
+
return DynamicField(
|
|
92
|
+
name="productCVAddicional",
|
|
93
|
+
value=additional_products_list,
|
|
94
|
+
)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
class SwitchboardHeaderData:
|
|
2
|
+
service_type = "header_switchboard"
|
|
3
|
+
|
|
4
|
+
def __init__(
|
|
5
|
+
self,
|
|
6
|
+
order_id,
|
|
7
|
+
email,
|
|
8
|
+
contact_phone,
|
|
9
|
+
sales_team,
|
|
10
|
+
technology,
|
|
11
|
+
notes="",
|
|
12
|
+
):
|
|
13
|
+
self.order_id = order_id
|
|
14
|
+
self.email = email
|
|
15
|
+
self.contact_phone = contact_phone
|
|
16
|
+
self.sales_team = sales_team
|
|
17
|
+
self.technology = technology
|
|
18
|
+
self.notes = notes
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
from pyotrs.lib import DynamicField
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class SwitchboardHeaderDynamicFields:
|
|
6
|
+
def __init__(self, service_data, customer_data, otrs_process_id, otrs_activity_id):
|
|
7
|
+
self.service_data = service_data
|
|
8
|
+
self.customer_data = customer_data
|
|
9
|
+
self.otrs_process_id = otrs_process_id
|
|
10
|
+
self.otrs_activity_id = otrs_activity_id
|
|
11
|
+
|
|
12
|
+
def all(self):
|
|
13
|
+
dynamic_fields = [
|
|
14
|
+
self._process_id(),
|
|
15
|
+
self._activity_id(),
|
|
16
|
+
self._is_header(),
|
|
17
|
+
self._first_name(),
|
|
18
|
+
self._name(),
|
|
19
|
+
self._vat_number(),
|
|
20
|
+
self._lang(),
|
|
21
|
+
self._phone(),
|
|
22
|
+
self._mail(),
|
|
23
|
+
self._service_technology(),
|
|
24
|
+
self._sales_team(),
|
|
25
|
+
self._order_id(),
|
|
26
|
+
self._notes(),
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
return [field for field in dynamic_fields if field.value]
|
|
30
|
+
|
|
31
|
+
def _process_id(self):
|
|
32
|
+
return DynamicField(
|
|
33
|
+
name="ProcessManagementProcessID", value=self.otrs_process_id
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
def _activity_id(self):
|
|
37
|
+
return DynamicField(
|
|
38
|
+
name="ProcessManagementActivityID", value=self.otrs_activity_id
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
def _is_header(self):
|
|
42
|
+
return DynamicField(name="CVHeader", value="1")
|
|
43
|
+
|
|
44
|
+
def _first_name(self):
|
|
45
|
+
return DynamicField("nomSoci", self.customer_data.first_name)
|
|
46
|
+
|
|
47
|
+
def _name(self):
|
|
48
|
+
return DynamicField("cognom1", self.customer_data.name)
|
|
49
|
+
|
|
50
|
+
def _vat_number(self):
|
|
51
|
+
return DynamicField(name="NIFNIESoci", value=self.customer_data.vat_number)
|
|
52
|
+
|
|
53
|
+
def _lang(self):
|
|
54
|
+
return DynamicField(name="idioma", value=self.customer_data.language)
|
|
55
|
+
|
|
56
|
+
def _phone(self):
|
|
57
|
+
return DynamicField(
|
|
58
|
+
name="telefonContacte", value=self.service_data.contact_phone
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
def _mail(self):
|
|
62
|
+
return DynamicField(name="correuElectronic", value=self.service_data.email)
|
|
63
|
+
|
|
64
|
+
def _service_technology(self):
|
|
65
|
+
return DynamicField(name="TecDelServei", value=self.service_data.technology)
|
|
66
|
+
|
|
67
|
+
def _sales_team(self):
|
|
68
|
+
sales_team_dct = {"Residential": "residencial", "Business": "empreses"}
|
|
69
|
+
return DynamicField(
|
|
70
|
+
name="equipVendes",
|
|
71
|
+
value=sales_team_dct.get(self.service_data.sales_team, ""),
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
def _order_id(self):
|
|
75
|
+
return DynamicField(name="IDpeticio", value=self.service_data.order_id)
|
|
76
|
+
|
|
77
|
+
def _notes(self):
|
|
78
|
+
return DynamicField(
|
|
79
|
+
name="consideracionsActivacio3", value=self.service_data.notes
|
|
80
|
+
)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
from otrs_somconnexio.otrs_models.provision_ticket import ProvisionTicket
|
|
3
|
+
from otrs_somconnexio.otrs_models.switchboard_header_dynamic_fields import (
|
|
4
|
+
SwitchboardHeaderDynamicFields,
|
|
5
|
+
)
|
|
6
|
+
from otrs_somconnexio.otrs_models.configurations.provision.switchboard_ticket import (
|
|
7
|
+
SwitchboardTicketConfiguration,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class SwitchboardHeaderTicket(ProvisionTicket):
|
|
12
|
+
def __init__(self, service_data, customer_data):
|
|
13
|
+
self.service_data = service_data
|
|
14
|
+
self.customer_data = customer_data
|
|
15
|
+
self.otrs_configuration = SwitchboardTicketConfiguration()
|
|
16
|
+
|
|
17
|
+
def service_type(self):
|
|
18
|
+
return "switchboard_header"
|
|
19
|
+
|
|
20
|
+
def _build_dynamic_fields(self):
|
|
21
|
+
return SwitchboardHeaderDynamicFields(
|
|
22
|
+
self.service_data,
|
|
23
|
+
self.customer_data,
|
|
24
|
+
self._ticket_process_id(),
|
|
25
|
+
self._ticket_activity_id(),
|
|
26
|
+
).all()
|
|
@@ -3,6 +3,9 @@ from otrs_somconnexio.otrs_models.fiber_ticket import FiberTicket
|
|
|
3
3
|
from otrs_somconnexio.otrs_models.mobile_ticket import MobileTicket, MobilePausedTicket
|
|
4
4
|
from otrs_somconnexio.otrs_models.router_4G_ticket import Router4GTicket
|
|
5
5
|
from otrs_somconnexio.otrs_models.switchboard_ticket import SwitchboardTicket
|
|
6
|
+
from otrs_somconnexio.otrs_models.switchboard_header_ticket import (
|
|
7
|
+
SwitchboardHeaderTicket,
|
|
8
|
+
)
|
|
6
9
|
from otrs_somconnexio.exceptions import ServiceTypeNotAllowedError
|
|
7
10
|
|
|
8
11
|
|
|
@@ -32,6 +35,8 @@ class TicketFactory(object):
|
|
|
32
35
|
TicketClass = MobileTicket
|
|
33
36
|
elif self.service_data.service_type == "4G":
|
|
34
37
|
TicketClass = Router4GTicket
|
|
38
|
+
elif self.service_data.service_type == "header_switchboard":
|
|
39
|
+
TicketClass = SwitchboardHeaderTicket
|
|
35
40
|
elif self.service_data.service_type == "switchboard":
|
|
36
41
|
TicketClass = SwitchboardTicket
|
|
37
42
|
else:
|
|
@@ -34,10 +34,10 @@ class WeCallYouTicket(BaseCustomerTicket):
|
|
|
34
34
|
return {
|
|
35
35
|
"personaContacte": self.fields["name"],
|
|
36
36
|
"horariTrucada": self.fields["schedule"],
|
|
37
|
-
"telefonContacte": self.fields
|
|
37
|
+
"telefonContacte": self.fields.get("phone", "").replace(" ", ""),
|
|
38
38
|
"motiuTrucada": self.fields["reason"],
|
|
39
39
|
"referral": self.fields.get("referral"),
|
|
40
|
-
"rgpd":
|
|
40
|
+
"rgpd": "1",
|
|
41
41
|
"nouEmail": self.fields.get("email"),
|
|
42
42
|
"midaEmpresa": self.fields.get("company_size"),
|
|
43
43
|
}
|
|
@@ -20,17 +20,20 @@ otrs_somconnexio/otrs_models/mobile_dynamic_fields.py,sha256=tPRieBkGskBVySuSJ6Z
|
|
|
20
20
|
otrs_somconnexio/otrs_models/mobile_ticket.py,sha256=NQb809r71CYg76jWvsI55-KdM1Oiysg9zhSCuS67fYU,1171
|
|
21
21
|
otrs_somconnexio/otrs_models/providers.py,sha256=Jy5lm_gCuwy_BhpNE5JJ5-TrE8aFQpZvMiYZ-PTlgqs,181
|
|
22
22
|
otrs_somconnexio/otrs_models/provision_article.py,sha256=jONH4lHzjg2jyx_mxjghw503oUT9VI9QwZrJ25HdOS0,469
|
|
23
|
-
otrs_somconnexio/otrs_models/provision_dynamic_fields.py,sha256=
|
|
23
|
+
otrs_somconnexio/otrs_models/provision_dynamic_fields.py,sha256=TKOXFnDdz_iHaMLZKsNBCcjgdirEpwT_tdOcsaPGA7U,3698
|
|
24
24
|
otrs_somconnexio/otrs_models/provision_ticket.py,sha256=g8URtZbUQpwxNfybWhEoxtf9JyYJRHKjO_MU4MWgd7I,2449
|
|
25
25
|
otrs_somconnexio/otrs_models/router_4G_data.py,sha256=EQIVxVstFswmEcOHzzV1ZyDYaadiU7lbunb5CJg6xAM,194
|
|
26
26
|
otrs_somconnexio/otrs_models/router_4G_dynamic_fields.py,sha256=NVrfwD2Mj1TTzOC8NYna1XQYXEN6ffAfovlP9VAIHh4,403
|
|
27
27
|
otrs_somconnexio/otrs_models/router_4G_ticket.py,sha256=xxXoqlf95KDQEcKrdU6I7Oda0hZqY-alaBTu0ZZfcX8,883
|
|
28
28
|
otrs_somconnexio/otrs_models/service.py,sha256=EwxTSe6hPS33KbbPGNYzofhEhB4O4d71P9KkpOEjakA,2121
|
|
29
|
-
otrs_somconnexio/otrs_models/switchboard_data.py,sha256=
|
|
30
|
-
otrs_somconnexio/otrs_models/switchboard_dynamic_fields.py,sha256=
|
|
29
|
+
otrs_somconnexio/otrs_models/switchboard_data.py,sha256=KuqvX-KU15gsmF-9lrugw5J9AIHFAMQCOfZ8M1bKD2U,1641
|
|
30
|
+
otrs_somconnexio/otrs_models/switchboard_dynamic_fields.py,sha256=K1cRkn7WCxXCsvWLIblSCr30vTtynyCkDA_PVupnLDo,3149
|
|
31
|
+
otrs_somconnexio/otrs_models/switchboard_header_data.py,sha256=8LwfLlcTAY9c9iJNOX2n8foOVuUGt7WyLA2XMpy5VuA,427
|
|
32
|
+
otrs_somconnexio/otrs_models/switchboard_header_dynamic_fields.py,sha256=WsVBchlqlxNf8CHSpxwpmxP-PRSSyZ2DGDN1G8XzwuE,2499
|
|
33
|
+
otrs_somconnexio/otrs_models/switchboard_header_ticket.py,sha256=HNfhmXCRP7gks_N_CuR0YGNk0T97ePgqLkxduep-lps,892
|
|
31
34
|
otrs_somconnexio/otrs_models/switchboard_ticket.py,sha256=jWkXS2WKBdcx-vgZKU8w_iez4bsl6s9nAtNfALxio-E,860
|
|
32
35
|
otrs_somconnexio/otrs_models/telecom_company.py,sha256=yh8wIE7-AjWESdFsE479WWZ-3uFz_ljUBKF8GK44oow,3077
|
|
33
|
-
otrs_somconnexio/otrs_models/ticket_factory.py,sha256=
|
|
36
|
+
otrs_somconnexio/otrs_models/ticket_factory.py,sha256=phRuuf4AyPOTYDBXZDpT3ALm7DcfzGWG4M2vnZW_wnI,2078
|
|
34
37
|
otrs_somconnexio/otrs_models/vf_provisioning_article.py,sha256=AZbtXePA-FA3ufHJsngaXzUL4npJgUqMqvrMSUmCd9o,599
|
|
35
38
|
otrs_somconnexio/otrs_models/configurations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
39
|
otrs_somconnexio/otrs_models/configurations/changes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -82,7 +85,7 @@ otrs_somconnexio/otrs_models/ticket_types/change_tariff_ticket.py,sha256=2oncxRb
|
|
|
82
85
|
otrs_somconnexio/otrs_models/ticket_types/change_tariff_ticket_mobile_pack.py,sha256=pu8QItdaICaX2DMvZ7h29Ii_HJVsKWC2lm6UKl145FQ,1844
|
|
83
86
|
otrs_somconnexio/otrs_models/ticket_types/change_tariff_ticket_shared_bonds.py,sha256=CTesCN0NVD6lfTQMKC7nR6RXGjktfYVWFsthg69EnaQ,731
|
|
84
87
|
otrs_somconnexio/otrs_models/ticket_types/check_coverage_ticket.py,sha256=mHMx4eNo8rq0b5kf8ay0tTcziweS82D2O4N-atNWYv4,1866
|
|
85
|
-
otrs_somconnexio/otrs_models/ticket_types/we_call_you_ticket.py,sha256=
|
|
88
|
+
otrs_somconnexio/otrs_models/ticket_types/we_call_you_ticket.py,sha256=E1YlNvTmCdKD_dCtDYcq3YrMDZfgOhZqSsSZ2I5K7sw,1807
|
|
86
89
|
otrs_somconnexio/responses/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
87
90
|
otrs_somconnexio/responses/ticket_creation.py,sha256=32Iigeg2TO422M2XYaiei57KpimnkB1tgnIexiEhi-E,735
|
|
88
91
|
otrs_somconnexio/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -91,7 +94,7 @@ otrs_somconnexio/services/base_get_ticket_by_number.py,sha256=oaJCx5bHslCd-3-68E
|
|
|
91
94
|
otrs_somconnexio/services/change_to_confirm_ticket.py,sha256=apV5BYxotNQdDVfmeQXA1GBwT6R6faOu_IiWqGVEhK4,1420
|
|
92
95
|
otrs_somconnexio/services/get_mobile_related_tickets.py,sha256=uUU0XF6cCUgfgbaVHsjSzyjhdKqsGNRtFBHZHPCox3I,402
|
|
93
96
|
otrs_somconnexio/services/get_sharing_data_mobile_tickets.py,sha256=HlFGEf2eMgMv45I0rqJQUCiT32wU2C5ed_8JYHjahw8,2358
|
|
94
|
-
otrs_somconnexio/services/get_ticket_title.py,sha256=
|
|
97
|
+
otrs_somconnexio/services/get_ticket_title.py,sha256=VMbP-i6Sq0tcTO0-yL0dMrVvsaUoOv0lS7es6yyjpYQ,853
|
|
95
98
|
otrs_somconnexio/services/mapping_mobile_minutes.py,sha256=mxwAU5PREiqm2K8oFebggI52X_sPwch4XujXd9Ixtlc,255
|
|
96
99
|
otrs_somconnexio/services/mapping_services.py,sha256=nuZkkD0tSdm7R-wGoKIdRXW8SgZOYpNMTjxdpdJCea4,342
|
|
97
100
|
otrs_somconnexio/services/move_sharing_data_mobile_tickets.py,sha256=aho3B2RKBKrP1ot5En2KhZEkGAirwqS2tRMjVCvr2Ew,334
|
|
@@ -112,7 +115,7 @@ tests/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
112
115
|
tests/data/otrs_raw_responses.py,sha256=hrd6ubWHpm61Epdrpgjr2uLniKj9AFioQ4xnDdNSKzw,1380
|
|
113
116
|
tests/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
114
117
|
tests/integration/test_change_customer_language.py,sha256=m3hp56hP49ugSvaN7Ic5dRA4NAs3Nk4AkxWz0oQ_kmw,1245
|
|
115
|
-
tests/integration/test_ticket_factory.py,sha256=
|
|
118
|
+
tests/integration/test_ticket_factory.py,sha256=BLLdSdQwKybEQezCDAINSECjMPMsgpD5XjrqJDIYuMo,13834
|
|
116
119
|
tests/integration/test_update_ticket_with_coverage_data.py,sha256=19XaaitAaj-mkSpSRFWML47bDfcmuQwuF_r1NVE_eZw,2919
|
|
117
120
|
tests/otrs_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
118
121
|
tests/otrs_models/common_helper.py,sha256=WAd7aenHTfHvxjZMlwFfr32ajaF285Y75eifMjrAQeA,251
|
|
@@ -132,11 +135,15 @@ tests/otrs_models/test_mobile_paused_ticket.py,sha256=JiSJudIgW9vFezEnrx7KgL0rXi
|
|
|
132
135
|
tests/otrs_models/test_mobile_ticket.py,sha256=6KAMXFMK-hnpbY26RoavTsYojT7cbDO901RCMRUOcfk,4607
|
|
133
136
|
tests/otrs_models/test_provision_article.py,sha256=SwTA96si0tundnu6lGCJGQcaOpnkRnKUYRKO9NcsflI,1773
|
|
134
137
|
tests/otrs_models/test_router_4G_data.py,sha256=3zKZzWd21j8q4oXFG-Pl1Ugtkp4J0_RZx8HtHRzpfKM,1443
|
|
135
|
-
tests/otrs_models/test_router_4G_dynamic_fields.py,sha256=
|
|
138
|
+
tests/otrs_models/test_router_4G_dynamic_fields.py,sha256=2bZRHNjL079bacUk02BFJlnkJbaqolJB3yj6XXrg8mU,20964
|
|
136
139
|
tests/otrs_models/test_router_4G_ticket.py,sha256=BMdnhAdnmvYfjyxvRN0dcCyS1hMFESV8EgAsCdHbFAo,4496
|
|
137
140
|
tests/otrs_models/test_service.py,sha256=fLFyJ5wE8jszrD9sZlSOebjioR8dv8z2SeGZVcA3r5U,6833
|
|
138
|
-
tests/otrs_models/test_switchboard_data.py,sha256=
|
|
139
|
-
tests/otrs_models/test_switchboard_dynamic_fields.py,sha256=
|
|
141
|
+
tests/otrs_models/test_switchboard_data.py,sha256=QlO_vupDFeavLFH1EIXVzRf4qIJ5AtuyvgCg_v4sXTE,1233
|
|
142
|
+
tests/otrs_models/test_switchboard_dynamic_fields.py,sha256=Up1PfQjWlLJ8gt6SAPFGsqttLXHaUDzmfoGQBeRZkN0,5411
|
|
143
|
+
tests/otrs_models/test_switchboard_header_data.py,sha256=kXkicBHpIaBgVSDDhEIqVgDEu1rpQG0TQLUGL0Jr_3s,534
|
|
144
|
+
tests/otrs_models/test_switchboard_header_dynamic_fields.py,sha256=2xaVzEC9-6NZ9ZMIAOf1GPpfWRw8BG1sn7ZEo86NxuM,3558
|
|
145
|
+
tests/otrs_models/test_switchboard_header_ticket.py,sha256=NK_Vs6Jm8sezkm9K3wbfWJqVC9R-Xdwe3u-CrtxH8yY,4340
|
|
146
|
+
tests/otrs_models/test_switchboard_ticket.py,sha256=sN_8Psvy9CabxWOTRVkM0pevUP-gDD3y8o51yFRIDh4,4641
|
|
140
147
|
tests/otrs_models/test_telecom_company.py,sha256=nC4uBleU2Lr3qHr5VDo-6kbcTVwKgguC85TcbhTOn1c,1450
|
|
141
148
|
tests/otrs_models/test_ticket_factory.py,sha256=cA5Abc7tQdTDyAlPED1ROw_UD6dWOlOOCZBHBvdjpxw,2949
|
|
142
149
|
tests/otrs_models/test_vf_provisioning_article.py,sha256=Yj8vtaowhxP12K_-FMcJNW-5re3yyCCfGLRHCPYgrVA,897
|
|
@@ -165,7 +172,7 @@ tests/otrs_models/ticket_types/test_change_tariff_mobile_pack.py,sha256=mOitwISC
|
|
|
165
172
|
tests/otrs_models/ticket_types/test_change_tariff_shared_bonds.py,sha256=Mmuai3rMTaBHCmWZCYeDFtx0tH1DiIxwYMUN4pSZFdo,2136
|
|
166
173
|
tests/otrs_models/ticket_types/test_check_coverage.py,sha256=TcgnzNHric-qFBVfhgPVfGjuehCLkZ_PfyJAWxJ9N54,4188
|
|
167
174
|
tests/otrs_models/ticket_types/test_shared_bond.py,sha256=OqfJKmC23ecfI4mbhBeN2UsUJxawPj1lVnVH8i8q65c,3207
|
|
168
|
-
tests/otrs_models/ticket_types/test_we_call_you.py,sha256=
|
|
175
|
+
tests/otrs_models/ticket_types/test_we_call_you.py,sha256=ExR_dgRNUncsS7Sr9BpysFz8eFDhZmOYcAJOT5rVAoM,3936
|
|
169
176
|
tests/responses/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
170
177
|
tests/responses/test_ticket_creation.py,sha256=i7Yzps-Kz25Ie1ylr3YAEsUYDMIZTFOvQIpSM2k7lNY,1068
|
|
171
178
|
tests/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -188,7 +195,7 @@ tests/services/test_update_ticket_with_provider_info.py,sha256=cZUg-hNV4BoMwafbp
|
|
|
188
195
|
tests/user_management_client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
189
196
|
tests/user_management_client/test_client.py,sha256=088q9H1yf8Hii7zUF17KULqOO-JCxJLsR7vQ8lGHiqg,4410
|
|
190
197
|
tests/user_management_client/test_user_management_response.py,sha256=HCCG7i2f6-ytrRpTzYZHODKCdW-X5GJn-BMVegd5FXg,1539
|
|
191
|
-
otrs_somconnexio-0.6.
|
|
192
|
-
otrs_somconnexio-0.6.
|
|
193
|
-
otrs_somconnexio-0.6.
|
|
194
|
-
otrs_somconnexio-0.6.
|
|
198
|
+
otrs_somconnexio-0.6.8.dist-info/METADATA,sha256=kW_nq4F1yTKIYMGTN3k4VEEciU0oknbtWrT-8koUkbY,3458
|
|
199
|
+
otrs_somconnexio-0.6.8.dist-info/WHEEL,sha256=fS9sRbCBHs7VFcwJLnLXN1MZRR0_TVTxvXKzOnaSFs8,110
|
|
200
|
+
otrs_somconnexio-0.6.8.dist-info/top_level.txt,sha256=gvMaHGNwusWpSIy-PVyb0CKDIA4-4fXmEVER_2a-OnE,23
|
|
201
|
+
otrs_somconnexio-0.6.8.dist-info/RECORD,,
|
|
@@ -376,7 +376,7 @@ class TicketFactoryIntegrationTestCase(unittest.TestCase):
|
|
|
376
376
|
"contact_phone",
|
|
377
377
|
"product",
|
|
378
378
|
"landline",
|
|
379
|
-
"
|
|
379
|
+
"mobile_phone_number",
|
|
380
380
|
"agent_name",
|
|
381
381
|
"agent_email",
|
|
382
382
|
"previous_owner_name",
|
|
@@ -388,6 +388,7 @@ class TicketFactoryIntegrationTestCase(unittest.TestCase):
|
|
|
388
388
|
"shipment_city",
|
|
389
389
|
"shipment_zip",
|
|
390
390
|
"shipment_subdivision",
|
|
391
|
+
"additional_products",
|
|
391
392
|
"notes",
|
|
392
393
|
"activation_notes",
|
|
393
394
|
]
|
|
@@ -588,7 +588,7 @@ class Router4GDynamicFieldsTestCase(unittest.TestCase):
|
|
|
588
588
|
self.assertEqual(dynamic_fields_dct["TecDelServei"], "4G")
|
|
589
589
|
|
|
590
590
|
def test_sales_team(self):
|
|
591
|
-
self.service_data.sales_team = "
|
|
591
|
+
self.service_data.sales_team = "Sales"
|
|
592
592
|
|
|
593
593
|
dynamic_fields = Router4GDynamicFields(
|
|
594
594
|
self.service_data,
|
|
@@ -598,4 +598,4 @@ class Router4GDynamicFieldsTestCase(unittest.TestCase):
|
|
|
598
598
|
).all()
|
|
599
599
|
|
|
600
600
|
dynamic_fields_dct = dynamic_fields_to_dct(dynamic_fields)
|
|
601
|
-
self.assertEqual(dynamic_fields_dct["equipVendes"], "
|
|
601
|
+
self.assertEqual(dynamic_fields_dct["equipVendes"], "vendes")
|
|
@@ -16,7 +16,7 @@ class SwitchboardDataTestCase(unittest.TestCase):
|
|
|
16
16
|
sales_team="Business",
|
|
17
17
|
type="new",
|
|
18
18
|
landline="999888777",
|
|
19
|
-
|
|
19
|
+
mobile_phone_number="766887778",
|
|
20
20
|
extension="123",
|
|
21
21
|
agent_name="agent1",
|
|
22
22
|
agent_email="agent1@company.org",
|
|
@@ -29,6 +29,7 @@ class SwitchboardDataTestCase(unittest.TestCase):
|
|
|
29
29
|
shipment_city="city",
|
|
30
30
|
shipment_zip="08001",
|
|
31
31
|
shipment_subdivision="ES-B",
|
|
32
|
+
additional_products="product1, product2",
|
|
32
33
|
notes="Notes",
|
|
33
34
|
activation_notes="More notes",
|
|
34
35
|
)
|
|
@@ -30,7 +30,7 @@ class SwitchboardDynamicFieldsTestCase(unittest.TestCase):
|
|
|
30
30
|
sales_team=faker.word(),
|
|
31
31
|
type=faker.word(),
|
|
32
32
|
landline=faker.phone_number(),
|
|
33
|
-
|
|
33
|
+
mobile_phone_number=faker.phone_number(),
|
|
34
34
|
icc=faker.bban(),
|
|
35
35
|
has_sim=faker.boolean(),
|
|
36
36
|
extension=faker.phone_number(),
|
|
@@ -43,6 +43,7 @@ class SwitchboardDynamicFieldsTestCase(unittest.TestCase):
|
|
|
43
43
|
shipment_city=faker.city(),
|
|
44
44
|
shipment_zip=faker.zipcode(),
|
|
45
45
|
shipment_subdivision=faker.state(),
|
|
46
|
+
additional_products="A,B,C",
|
|
46
47
|
)
|
|
47
48
|
|
|
48
49
|
self.switchboard_otrs_process_id = faker.uuid4()
|
|
@@ -57,6 +58,12 @@ class SwitchboardDynamicFieldsTestCase(unittest.TestCase):
|
|
|
57
58
|
|
|
58
59
|
self.dynamic_fields_dct = dynamic_fields_to_dct(self.dynamic_fields)
|
|
59
60
|
|
|
61
|
+
def test_service_type_field(self):
|
|
62
|
+
self.assertEqual(
|
|
63
|
+
self.dynamic_fields_dct["tipusServeiCV"],
|
|
64
|
+
"portabilitat" if self.service_data.type == "portability" else "altaNova",
|
|
65
|
+
)
|
|
66
|
+
|
|
60
67
|
def test_process_id_field(self):
|
|
61
68
|
self.assertEqual(
|
|
62
69
|
self.dynamic_fields_dct["ProcessManagementProcessID"],
|
|
@@ -69,6 +76,9 @@ class SwitchboardDynamicFieldsTestCase(unittest.TestCase):
|
|
|
69
76
|
self.switchboard_otrs_activity_id,
|
|
70
77
|
)
|
|
71
78
|
|
|
79
|
+
def test_CV_header_field(self):
|
|
80
|
+
self.assertEqual(self.dynamic_fields_dct["CVHeader"], "0")
|
|
81
|
+
|
|
72
82
|
def test_product_field(self):
|
|
73
83
|
self.assertEqual(
|
|
74
84
|
self.dynamic_fields_dct["productCV"],
|
|
@@ -87,10 +97,10 @@ class SwitchboardDynamicFieldsTestCase(unittest.TestCase):
|
|
|
87
97
|
self.service_data.landline,
|
|
88
98
|
)
|
|
89
99
|
|
|
90
|
-
def
|
|
100
|
+
def test_phone_number_field(self):
|
|
91
101
|
self.assertEqual(
|
|
92
|
-
self.dynamic_fields_dct["
|
|
93
|
-
self.service_data.
|
|
102
|
+
self.dynamic_fields_dct["liniaMobil"],
|
|
103
|
+
self.service_data.mobile_phone_number,
|
|
94
104
|
)
|
|
95
105
|
|
|
96
106
|
def test_ICC_field(self):
|
|
@@ -105,6 +115,12 @@ class SwitchboardDynamicFieldsTestCase(unittest.TestCase):
|
|
|
105
115
|
"1" if self.service_data.has_sim else "0",
|
|
106
116
|
)
|
|
107
117
|
|
|
118
|
+
def test_send_sim_type_field(self):
|
|
119
|
+
self.assertEqual(
|
|
120
|
+
self.dynamic_fields_dct["tipusEnviamentSIM"],
|
|
121
|
+
"None",
|
|
122
|
+
)
|
|
123
|
+
|
|
108
124
|
def test_agent_name_field(self):
|
|
109
125
|
self.assertEqual(
|
|
110
126
|
self.dynamic_fields_dct["nomAgentCV"],
|
|
@@ -146,3 +162,15 @@ class SwitchboardDynamicFieldsTestCase(unittest.TestCase):
|
|
|
146
162
|
self.dynamic_fields_dct["flagDocumentacio"],
|
|
147
163
|
"0",
|
|
148
164
|
)
|
|
165
|
+
|
|
166
|
+
def test_additional_products_field(self):
|
|
167
|
+
self.assertEqual(
|
|
168
|
+
self.dynamic_fields_dct["productCVAddicional"],
|
|
169
|
+
self.service_data.additional_products.split(","),
|
|
170
|
+
)
|
|
171
|
+
|
|
172
|
+
def test_order_id_field(self):
|
|
173
|
+
self.assertEqual(
|
|
174
|
+
self.dynamic_fields_dct["IDpeticio"],
|
|
175
|
+
self.service_data.order_id,
|
|
176
|
+
)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
import unittest
|
|
3
|
+
|
|
4
|
+
from otrs_somconnexio.otrs_models.switchboard_header_data import SwitchboardHeaderData
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class SwitchboardHeaderDataTestCase(unittest.TestCase):
|
|
8
|
+
def test_init(self):
|
|
9
|
+
sb_header_data = SwitchboardHeaderData(
|
|
10
|
+
order_id=123,
|
|
11
|
+
contact_phone="666666661",
|
|
12
|
+
email="test@test.com",
|
|
13
|
+
sales_team="residential",
|
|
14
|
+
technology="switchboard",
|
|
15
|
+
notes="Notes",
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
self.assertIsInstance(sb_header_data, SwitchboardHeaderData)
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import unittest
|
|
2
|
+
from mock import Mock
|
|
3
|
+
from faker import Faker
|
|
4
|
+
|
|
5
|
+
from otrs_somconnexio.otrs_models.switchboard_header_dynamic_fields import (
|
|
6
|
+
SwitchboardHeaderDynamicFields,
|
|
7
|
+
)
|
|
8
|
+
from .common_helper import dynamic_fields_to_dct
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class SwitchboardHeaderDynamicFieldsTestCase(unittest.TestCase):
|
|
12
|
+
def setUp(self):
|
|
13
|
+
faker = Faker("es_CA")
|
|
14
|
+
|
|
15
|
+
customer_data = Mock(
|
|
16
|
+
first_name=faker.first_name(),
|
|
17
|
+
name=faker.last_name(),
|
|
18
|
+
vat_number=faker.ssn(),
|
|
19
|
+
has_active_contracts=faker.boolean(),
|
|
20
|
+
language=faker.language_code(),
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
self.service_data = Mock(
|
|
24
|
+
notes=faker.text(),
|
|
25
|
+
contact_phone=faker.phone_number(),
|
|
26
|
+
email=faker.email(),
|
|
27
|
+
technology=faker.word(),
|
|
28
|
+
sales_team="Business",
|
|
29
|
+
order_id=faker.uuid4(),
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
self.switchboard_otrs_process_id = faker.uuid4()
|
|
33
|
+
self.switchboard_otrs_activity_id = faker.uuid4()
|
|
34
|
+
|
|
35
|
+
self.customer_data = customer_data # Guardem per als tests
|
|
36
|
+
|
|
37
|
+
self.dynamic_fields = SwitchboardHeaderDynamicFields(
|
|
38
|
+
self.service_data,
|
|
39
|
+
customer_data,
|
|
40
|
+
self.switchboard_otrs_process_id,
|
|
41
|
+
self.switchboard_otrs_activity_id,
|
|
42
|
+
).all()
|
|
43
|
+
|
|
44
|
+
self.dynamic_fields_dct = dynamic_fields_to_dct(self.dynamic_fields)
|
|
45
|
+
|
|
46
|
+
def test_customer_first_name_field(self):
|
|
47
|
+
self.assertEqual(
|
|
48
|
+
self.dynamic_fields_dct["nomSoci"],
|
|
49
|
+
self.customer_data.first_name,
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
def test_CV_header_field(self):
|
|
53
|
+
self.assertEqual(self.dynamic_fields_dct["CVHeader"], "1")
|
|
54
|
+
|
|
55
|
+
def test_customer_last_name_field(self):
|
|
56
|
+
self.assertEqual(
|
|
57
|
+
self.dynamic_fields_dct["cognom1"],
|
|
58
|
+
self.customer_data.name,
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
def test_customer_vat_number_field(self):
|
|
62
|
+
self.assertEqual(
|
|
63
|
+
self.dynamic_fields_dct["NIFNIESoci"],
|
|
64
|
+
self.customer_data.vat_number,
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
def test_customer_language_field(self):
|
|
68
|
+
self.assertEqual(
|
|
69
|
+
self.dynamic_fields_dct["idioma"],
|
|
70
|
+
self.customer_data.language,
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
def test_customer_phone_field(self):
|
|
74
|
+
self.assertEqual(
|
|
75
|
+
self.dynamic_fields_dct["telefonContacte"],
|
|
76
|
+
self.service_data.contact_phone,
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
def test_mail_field(self):
|
|
80
|
+
self.assertEqual(
|
|
81
|
+
self.dynamic_fields_dct["correuElectronic"],
|
|
82
|
+
self.service_data.email,
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
def test_service_technology_field(self):
|
|
86
|
+
self.assertEqual(
|
|
87
|
+
self.dynamic_fields_dct["TecDelServei"],
|
|
88
|
+
self.service_data.technology,
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
def test_sales_team_field(self):
|
|
92
|
+
self.assertEqual(
|
|
93
|
+
self.dynamic_fields_dct["equipVendes"],
|
|
94
|
+
"empreses",
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
def test_order_id_field(self):
|
|
98
|
+
self.assertEqual(
|
|
99
|
+
self.dynamic_fields_dct["IDpeticio"],
|
|
100
|
+
self.service_data.order_id,
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
def test_switchboard_otrs_process_id_field(self):
|
|
104
|
+
self.assertEqual(
|
|
105
|
+
self.dynamic_fields_dct["ProcessManagementProcessID"],
|
|
106
|
+
self.switchboard_otrs_process_id,
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
def test_switchboard_otrs_activity_id_field(self):
|
|
110
|
+
self.assertEqual(
|
|
111
|
+
self.dynamic_fields_dct["ProcessManagementActivityID"],
|
|
112
|
+
self.switchboard_otrs_activity_id,
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
def test_notes_field(self):
|
|
116
|
+
self.assertEqual(
|
|
117
|
+
self.dynamic_fields_dct["consideracionsActivacio3"],
|
|
118
|
+
self.service_data.notes,
|
|
119
|
+
)
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
import unittest
|
|
3
|
+
from mock import Mock, patch
|
|
4
|
+
|
|
5
|
+
from otrs_somconnexio.otrs_models.switchboard_header_ticket import (
|
|
6
|
+
SwitchboardHeaderTicket,
|
|
7
|
+
)
|
|
8
|
+
from otrs_somconnexio.otrs_models.configurations.provision.switchboard_ticket import (
|
|
9
|
+
SwitchboardTicketConfiguration,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class SwitchboardHeaderTicketTestCase(unittest.TestCase):
|
|
14
|
+
@patch("otrs_somconnexio.otrs_models.provision_ticket.Ticket")
|
|
15
|
+
def test_build_ticket(self, MockTicket):
|
|
16
|
+
service_data = Mock(spec=["order_id", "notes", "technology"])
|
|
17
|
+
service_data.order_id = 123
|
|
18
|
+
customer_data = Mock(spec=["id"])
|
|
19
|
+
|
|
20
|
+
expected_ticket_arguments = {
|
|
21
|
+
"Title": "Ticket#{} - Només Centraleta Virtual Capçalera".format(
|
|
22
|
+
service_data.order_id
|
|
23
|
+
),
|
|
24
|
+
"Type": SwitchboardTicketConfiguration.type,
|
|
25
|
+
"QueueID": SwitchboardTicketConfiguration.queue_id,
|
|
26
|
+
"State": SwitchboardTicketConfiguration.state,
|
|
27
|
+
"SLA": "No pendent resposta",
|
|
28
|
+
"Service": "Centraleta Virtual",
|
|
29
|
+
"Priority": SwitchboardTicketConfiguration.priority,
|
|
30
|
+
"CustomerUser": customer_data.id,
|
|
31
|
+
"CustomerID": customer_data.id,
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
SwitchboardHeaderTicket(service_data, customer_data)._build_ticket()
|
|
35
|
+
MockTicket.assert_called_with(expected_ticket_arguments)
|
|
36
|
+
|
|
37
|
+
@patch("otrs_somconnexio.otrs_models.provision_ticket.ProvisionArticle")
|
|
38
|
+
def test_build_article(self, MockProvisionArticle):
|
|
39
|
+
service_data = Mock(spec=["order_id", "notes", "technology"])
|
|
40
|
+
service_data.order_id = 123
|
|
41
|
+
service_data.notes = "Notes test"
|
|
42
|
+
customer_data = Mock(spec=["order_id"])
|
|
43
|
+
|
|
44
|
+
mock_article = MockProvisionArticle.return_value
|
|
45
|
+
|
|
46
|
+
SwitchboardHeaderTicket(service_data, customer_data)._build_article()
|
|
47
|
+
|
|
48
|
+
MockProvisionArticle.assert_called_with(
|
|
49
|
+
service_data.technology,
|
|
50
|
+
service_data.order_id,
|
|
51
|
+
"switchboard_header",
|
|
52
|
+
service_data.notes,
|
|
53
|
+
)
|
|
54
|
+
mock_article.call.assert_called_once()
|
|
55
|
+
|
|
56
|
+
@patch(
|
|
57
|
+
"otrs_somconnexio.otrs_models.switchboard_header_ticket.SwitchboardHeaderDynamicFields"
|
|
58
|
+
)
|
|
59
|
+
def test_build_dynamic_fields(self, MockSwitchboardHeaderDynamicFields):
|
|
60
|
+
service_data = Mock()
|
|
61
|
+
customer_data = Mock()
|
|
62
|
+
mock_dyn_fields = MockSwitchboardHeaderDynamicFields.return_value
|
|
63
|
+
|
|
64
|
+
SwitchboardHeaderTicket(service_data, customer_data)._build_dynamic_fields()
|
|
65
|
+
MockSwitchboardHeaderDynamicFields.assert_called_with(
|
|
66
|
+
service_data,
|
|
67
|
+
customer_data,
|
|
68
|
+
SwitchboardTicketConfiguration.process_id,
|
|
69
|
+
SwitchboardTicketConfiguration.activity_id,
|
|
70
|
+
)
|
|
71
|
+
mock_dyn_fields.all.assert_called_once()
|
|
72
|
+
|
|
73
|
+
@patch("otrs_somconnexio.otrs_models.provision_ticket.OTRSClient")
|
|
74
|
+
def test_create(self, MockOTRSClient):
|
|
75
|
+
service_data = Mock(
|
|
76
|
+
spec=[
|
|
77
|
+
"order_id",
|
|
78
|
+
"iban",
|
|
79
|
+
"email",
|
|
80
|
+
"contact_phone",
|
|
81
|
+
"product",
|
|
82
|
+
"technology",
|
|
83
|
+
"previous_owner_vat",
|
|
84
|
+
"previous_owner_name",
|
|
85
|
+
"previous_owner_surname",
|
|
86
|
+
"sales_team",
|
|
87
|
+
"type",
|
|
88
|
+
"notes",
|
|
89
|
+
]
|
|
90
|
+
)
|
|
91
|
+
customer_data = Mock(
|
|
92
|
+
spec=[
|
|
93
|
+
"id",
|
|
94
|
+
"first_name",
|
|
95
|
+
"name",
|
|
96
|
+
"vat_number",
|
|
97
|
+
"street",
|
|
98
|
+
"city",
|
|
99
|
+
"zip",
|
|
100
|
+
"subdivision",
|
|
101
|
+
"has_active_contracts",
|
|
102
|
+
"language",
|
|
103
|
+
]
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
mock_otrs_client = Mock(spec=["create_otrs_process_ticket"])
|
|
107
|
+
mock_otrs_client.create_otrs_process_ticket.return_value = Mock(
|
|
108
|
+
SwitchboardHeaderTicket, autospec=True
|
|
109
|
+
)
|
|
110
|
+
mock_otrs_client.create_otrs_process_ticket.return_value.id = 123
|
|
111
|
+
mock_otrs_client.create_otrs_process_ticket.return_value.number = "#123"
|
|
112
|
+
MockOTRSClient.return_value = mock_otrs_client
|
|
113
|
+
|
|
114
|
+
ticket = SwitchboardHeaderTicket(service_data, customer_data)
|
|
115
|
+
ticket.create()
|
|
116
|
+
|
|
117
|
+
mock_otrs_client.create_otrs_process_ticket.assert_called_once()
|
|
118
|
+
self.assertEqual(ticket.id, 123)
|
|
119
|
+
self.assertEqual(ticket.number, "#123")
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
import unittest
|
|
3
|
+
from mock import Mock, patch
|
|
4
|
+
|
|
5
|
+
from otrs_somconnexio.otrs_models.switchboard_ticket import SwitchboardTicket
|
|
6
|
+
from otrs_somconnexio.otrs_models.configurations.provision.switchboard_ticket import (
|
|
7
|
+
SwitchboardTicketConfiguration,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class SwitchboardTicketTestCase(unittest.TestCase):
|
|
12
|
+
@patch("otrs_somconnexio.otrs_models.provision_ticket.Ticket")
|
|
13
|
+
def test_build_ticket(self, MockTicket):
|
|
14
|
+
service_data = Mock(spec=["order_id", "notes", "technology"])
|
|
15
|
+
service_data.order_id = 123
|
|
16
|
+
customer_data = Mock(spec=["id"])
|
|
17
|
+
|
|
18
|
+
expected_ticket_arguments = {
|
|
19
|
+
"Title": "Ticket#{} - Només Centraleta Virtual".format(
|
|
20
|
+
service_data.order_id
|
|
21
|
+
),
|
|
22
|
+
"Type": SwitchboardTicketConfiguration.type,
|
|
23
|
+
"QueueID": SwitchboardTicketConfiguration.queue_id,
|
|
24
|
+
"State": SwitchboardTicketConfiguration.state,
|
|
25
|
+
"SLA": "No pendent resposta",
|
|
26
|
+
"Service": "Centraleta Virtual",
|
|
27
|
+
"Priority": SwitchboardTicketConfiguration.priority,
|
|
28
|
+
"CustomerUser": customer_data.id,
|
|
29
|
+
"CustomerID": customer_data.id,
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
SwitchboardTicket(service_data, customer_data)._build_ticket()
|
|
33
|
+
MockTicket.assert_called_with(expected_ticket_arguments)
|
|
34
|
+
|
|
35
|
+
@patch("otrs_somconnexio.otrs_models.provision_ticket.ProvisionArticle")
|
|
36
|
+
def test_build_article(self, MockProvisionArticle):
|
|
37
|
+
service_data = Mock(spec=["order_id", "notes", "technology"])
|
|
38
|
+
service_data.order_id = 123
|
|
39
|
+
service_data.notes = "Notes test"
|
|
40
|
+
customer_data = Mock(spec=["order_id"])
|
|
41
|
+
|
|
42
|
+
mock_article = MockProvisionArticle.return_value
|
|
43
|
+
|
|
44
|
+
SwitchboardTicket(service_data, customer_data)._build_article()
|
|
45
|
+
MockProvisionArticle.assert_called_with(
|
|
46
|
+
service_data.technology,
|
|
47
|
+
service_data.order_id,
|
|
48
|
+
"switchboard",
|
|
49
|
+
service_data.notes,
|
|
50
|
+
)
|
|
51
|
+
mock_article.call.assert_called_once()
|
|
52
|
+
|
|
53
|
+
@patch("otrs_somconnexio.otrs_models.switchboard_ticket.SwitchboardDynamicFields")
|
|
54
|
+
def test_build_dynamic_fields(self, MockSwitchboardDynamicFields):
|
|
55
|
+
service_data = Mock()
|
|
56
|
+
customer_data = Mock()
|
|
57
|
+
mock_dyn_fields = MockSwitchboardDynamicFields.return_value
|
|
58
|
+
|
|
59
|
+
SwitchboardTicket(service_data, customer_data)._build_dynamic_fields()
|
|
60
|
+
MockSwitchboardDynamicFields.assert_called_with(
|
|
61
|
+
service_data,
|
|
62
|
+
customer_data,
|
|
63
|
+
SwitchboardTicketConfiguration.process_id,
|
|
64
|
+
SwitchboardTicketConfiguration.activity_id,
|
|
65
|
+
)
|
|
66
|
+
mock_dyn_fields.all.assert_called_once()
|
|
67
|
+
|
|
68
|
+
@patch("otrs_somconnexio.otrs_models.provision_ticket.OTRSClient")
|
|
69
|
+
def test_create(self, MockOTRSClient):
|
|
70
|
+
service_data = Mock(
|
|
71
|
+
spec=[
|
|
72
|
+
"order_id",
|
|
73
|
+
"iban",
|
|
74
|
+
"email",
|
|
75
|
+
"contact_phone",
|
|
76
|
+
"product",
|
|
77
|
+
"technology",
|
|
78
|
+
"sales_team",
|
|
79
|
+
"type",
|
|
80
|
+
"landline",
|
|
81
|
+
"mobile_phone_number",
|
|
82
|
+
"icc",
|
|
83
|
+
"has_sim",
|
|
84
|
+
"extension",
|
|
85
|
+
"agent_name",
|
|
86
|
+
"agent_email",
|
|
87
|
+
"previous_owner_vat",
|
|
88
|
+
"previous_owner_name",
|
|
89
|
+
"previous_owner_surname",
|
|
90
|
+
"shipment_address",
|
|
91
|
+
"shipment_city",
|
|
92
|
+
"shipment_zip",
|
|
93
|
+
"shipment_subdivision",
|
|
94
|
+
"additional_products",
|
|
95
|
+
"activation_notes",
|
|
96
|
+
"notes",
|
|
97
|
+
]
|
|
98
|
+
)
|
|
99
|
+
customer_data = Mock(
|
|
100
|
+
spec=[
|
|
101
|
+
"id",
|
|
102
|
+
"first_name",
|
|
103
|
+
"name",
|
|
104
|
+
"vat_number",
|
|
105
|
+
"street",
|
|
106
|
+
"city",
|
|
107
|
+
"zip",
|
|
108
|
+
"subdivision",
|
|
109
|
+
"has_active_contracts",
|
|
110
|
+
"language",
|
|
111
|
+
]
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
mock_otrs_client = Mock(spec=["create_otrs_process_ticket"])
|
|
115
|
+
mock_otrs_client.create_otrs_process_ticket.return_value = Mock(
|
|
116
|
+
SwitchboardTicket, autospec=True
|
|
117
|
+
)
|
|
118
|
+
mock_otrs_client.create_otrs_process_ticket.return_value.id = 123
|
|
119
|
+
mock_otrs_client.create_otrs_process_ticket.return_value.number = "#123"
|
|
120
|
+
MockOTRSClient.return_value = mock_otrs_client
|
|
121
|
+
|
|
122
|
+
ticket = SwitchboardTicket(service_data, customer_data)
|
|
123
|
+
ticket.create()
|
|
124
|
+
|
|
125
|
+
mock_otrs_client.create_otrs_process_ticket.assert_called_once()
|
|
126
|
+
self.assertEqual(ticket.id, 123)
|
|
127
|
+
self.assertEqual(ticket.number, "#123")
|
|
@@ -11,7 +11,7 @@ class TestCaseWeCallYou:
|
|
|
11
11
|
fields_dict = {
|
|
12
12
|
"name": "name surname",
|
|
13
13
|
"schedule": "12h-14h",
|
|
14
|
-
"phone": "
|
|
14
|
+
"phone": "642 525 377",
|
|
15
15
|
"reason": "call me baby",
|
|
16
16
|
"language": "ca_ES",
|
|
17
17
|
"is_company": False,
|
|
@@ -86,10 +86,10 @@ class TestCaseWeCallYou:
|
|
|
86
86
|
),
|
|
87
87
|
mocker.call("personaContacte", dict["name"]),
|
|
88
88
|
mocker.call("horariTrucada", dict["schedule"]),
|
|
89
|
-
mocker.call("telefonContacte",
|
|
89
|
+
mocker.call("telefonContacte", "642525377"),
|
|
90
90
|
mocker.call("motiuTrucada", dict["reason"]),
|
|
91
91
|
mocker.call("referral", dict["referral"]),
|
|
92
|
-
mocker.call("rgpd",
|
|
92
|
+
mocker.call("rgpd", "1"),
|
|
93
93
|
mocker.call("nouEmail", dict["email"]),
|
|
94
94
|
]
|
|
95
95
|
if is_company:
|
|
File without changes
|
|
File without changes
|