otrs-somconnexio 0.6.7__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.
@@ -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
 
@@ -105,3 +106,6 @@ class ProvisionDynamicFields:
105
106
 
106
107
  def _has_documentation(self):
107
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
- landline_2,
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.landline_2 = landline_2
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._type(),
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 _type(self):
25
- return DynamicField(name="tipusServeiCV", value=self.service_data.type)
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 _landline_2(self):
34
- return DynamicField(name="portaFixCV2", value=self.service_data.landline_2)
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:
@@ -5,6 +5,7 @@ class GetTicketTitle:
5
5
  "adsl": "ADSL",
6
6
  "4G": "4G",
7
7
  "switchboard": "Centraleta Virtual",
8
+ "switchboard_header": "Centraleta Virtual Capçalera",
8
9
  }
9
10
 
10
11
  def __init__(self, technology, order_id, service_type):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: otrs-somconnexio
3
- Version: 0.6.7
3
+ Version: 0.6.8
4
4
  Summary: Python package for Somconnexio data syncing in OTRS
5
5
  Home-page: https://gitlab.com/coopdevs/otrs_somconnexio
6
6
  Author: Coopdevs
@@ -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=pjTkPt5OBTDWBmeszfwnLE5KeoyNLgw72gEtGWzNIHI,3562
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=7aFvhrFTjxXH0rT1TK2EI02Jgb1m92Efs-WGsvJM8Uk,1530
30
- otrs_somconnexio/otrs_models/switchboard_dynamic_fields.py,sha256=cc1-niTz38YofTF-1uUDSnu8FDSB-0gY1uFbTP38erA,2281
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=F_T8KJhOm44Xz4mV9M_6hCLygalUtMF6dwmAG8ek9LY,1859
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
@@ -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=QCQHkKBFunAk_iIyWsbfftYyFVa-0fTWPRWQsRo-u_o,790
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=vgPE7wdKtyalaD74i29v9w4MsNTUDepIT9taLyI0p9U,13786
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
@@ -135,8 +138,12 @@ tests/otrs_models/test_router_4G_data.py,sha256=3zKZzWd21j8q4oXFG-Pl1Ugtkp4J0_RZ
135
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=1DZq9EyB2Ym-v4WdMfScPejqGerczT6Flc0IfDX4M2M,1170
139
- tests/otrs_models/test_switchboard_dynamic_fields.py,sha256=tOq0aW0y4ZzPRkivccDi16_c-ZBmH8cNoK1x_WYxm7Q,4508
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
@@ -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.7.dist-info/METADATA,sha256=p2cwmmeJOJr8J82FQpupH4UN4Xg-12gqqPAU641S-xM,3458
192
- otrs_somconnexio-0.6.7.dist-info/WHEEL,sha256=fS9sRbCBHs7VFcwJLnLXN1MZRR0_TVTxvXKzOnaSFs8,110
193
- otrs_somconnexio-0.6.7.dist-info/top_level.txt,sha256=gvMaHGNwusWpSIy-PVyb0CKDIA4-4fXmEVER_2a-OnE,23
194
- otrs_somconnexio-0.6.7.dist-info/RECORD,,
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
- "landline_2",
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
  ]
@@ -16,7 +16,7 @@ class SwitchboardDataTestCase(unittest.TestCase):
16
16
  sales_team="Business",
17
17
  type="new",
18
18
  landline="999888777",
19
- landline_2="999888778",
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
- landline_2=faker.phone_number(),
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 test_landline_2_field(self):
100
+ def test_phone_number_field(self):
91
101
  self.assertEqual(
92
- self.dynamic_fields_dct["portaFixCV2"],
93
- self.service_data.landline_2,
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")