otrs-somconnexio 0.4.4__py2.py3-none-any.whl → 0.7.3__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.
Files changed (192) hide show
  1. otrs_somconnexio/client.py +110 -42
  2. otrs_somconnexio/exceptions.py +44 -11
  3. otrs_somconnexio/otrs_models/abstract_article.py +3 -0
  4. otrs_somconnexio/otrs_models/adsl_data.py +7 -37
  5. otrs_somconnexio/otrs_models/adsl_dynamic_fields.py +5 -4
  6. otrs_somconnexio/otrs_models/adsl_ticket.py +9 -5
  7. otrs_somconnexio/otrs_models/configurations/changes/__init__.py +0 -0
  8. otrs_somconnexio/otrs_models/configurations/changes/add_data.py +13 -0
  9. otrs_somconnexio/otrs_models/configurations/changes/change_email.py +16 -0
  10. otrs_somconnexio/otrs_models/configurations/changes/change_iban.py +8 -0
  11. otrs_somconnexio/otrs_models/configurations/changes/change_owner.py +19 -0
  12. otrs_somconnexio/otrs_models/configurations/changes/change_pack.py +6 -0
  13. otrs_somconnexio/otrs_models/configurations/changes/change_shared_bond.py +7 -0
  14. otrs_somconnexio/otrs_models/configurations/changes/change_tariff.py +29 -0
  15. otrs_somconnexio/otrs_models/configurations/changes/change_tariff_adsl.py +20 -0
  16. otrs_somconnexio/otrs_models/configurations/changes/change_tariff_fiber.py +11 -0
  17. otrs_somconnexio/otrs_models/configurations/provision/__init__.py +0 -0
  18. otrs_somconnexio/otrs_models/configurations/{adsl_ticket.py → provision/adsl_ticket.py} +2 -2
  19. otrs_somconnexio/otrs_models/configurations/{fiber_ticket.py → provision/fiber_ticket.py} +6 -3
  20. otrs_somconnexio/otrs_models/configurations/provision/mobile_ticket.py +44 -0
  21. otrs_somconnexio/otrs_models/configurations/provision/router_4G_ticket.py +8 -0
  22. otrs_somconnexio/otrs_models/configurations/provision/switchboard_ticket.py +10 -0
  23. otrs_somconnexio/otrs_models/configurations/querys/__init__.py +0 -0
  24. otrs_somconnexio/otrs_models/configurations/querys/check_coverage.py +16 -0
  25. otrs_somconnexio/otrs_models/configurations/querys/we_call_you.py +26 -0
  26. otrs_somconnexio/otrs_models/coverage/adsl.py +1 -1
  27. otrs_somconnexio/otrs_models/coverage/asociatel_fiber.py +6 -0
  28. otrs_somconnexio/otrs_models/coverage/mm_fiber.py +7 -0
  29. otrs_somconnexio/otrs_models/coverage/orange_fiber.py +5 -0
  30. otrs_somconnexio/otrs_models/coverage/vdf_fiber.py +8 -0
  31. otrs_somconnexio/otrs_models/coverage_article.py +20 -4
  32. otrs_somconnexio/otrs_models/coverage_ticket.py +1 -0
  33. otrs_somconnexio/otrs_models/customer_data.py +15 -3
  34. otrs_somconnexio/otrs_models/customer_user.py +3 -9
  35. otrs_somconnexio/otrs_models/fiber_data.py +17 -33
  36. otrs_somconnexio/otrs_models/fiber_dynamic_fields.py +58 -4
  37. otrs_somconnexio/otrs_models/fiber_ticket.py +9 -5
  38. otrs_somconnexio/otrs_models/internet_data.py +79 -0
  39. otrs_somconnexio/otrs_models/internet_dynamic_fields.py +65 -26
  40. otrs_somconnexio/otrs_models/mobile_data.py +49 -5
  41. otrs_somconnexio/otrs_models/mobile_dynamic_fields.py +50 -8
  42. otrs_somconnexio/otrs_models/mobile_ticket.py +20 -4
  43. otrs_somconnexio/otrs_models/process_ticket/internet.py +40 -97
  44. otrs_somconnexio/otrs_models/process_ticket/mobile.py +63 -43
  45. otrs_somconnexio/otrs_models/process_ticket/process_ticket.py +74 -0
  46. otrs_somconnexio/otrs_models/providers.py +4 -3
  47. otrs_somconnexio/otrs_models/provision_article.py +7 -5
  48. otrs_somconnexio/otrs_models/provision_dynamic_fields.py +76 -11
  49. otrs_somconnexio/otrs_models/provision_ticket.py +52 -28
  50. otrs_somconnexio/otrs_models/responsible_data.py +6 -0
  51. otrs_somconnexio/otrs_models/router_4G_data.py +8 -0
  52. otrs_somconnexio/otrs_models/router_4G_dynamic_fields.py +9 -0
  53. otrs_somconnexio/otrs_models/router_4G_ticket.py +26 -0
  54. otrs_somconnexio/otrs_models/service.py +41 -12
  55. otrs_somconnexio/otrs_models/switchboard_data.py +58 -0
  56. otrs_somconnexio/otrs_models/switchboard_dynamic_fields.py +94 -0
  57. otrs_somconnexio/otrs_models/switchboard_header_data.py +18 -0
  58. otrs_somconnexio/otrs_models/switchboard_header_dynamic_fields.py +80 -0
  59. otrs_somconnexio/otrs_models/switchboard_header_ticket.py +30 -0
  60. otrs_somconnexio/otrs_models/switchboard_ticket.py +35 -0
  61. otrs_somconnexio/otrs_models/telecom_company.py +69 -69
  62. otrs_somconnexio/otrs_models/ticket_factory.py +34 -11
  63. otrs_somconnexio/otrs_models/ticket_types/__init__.py +0 -0
  64. otrs_somconnexio/otrs_models/ticket_types/add_data_ticket.py +36 -0
  65. otrs_somconnexio/otrs_models/ticket_types/base_change_tariff_ba_ticket.py +23 -0
  66. otrs_somconnexio/otrs_models/ticket_types/base_change_ticket.py +33 -0
  67. otrs_somconnexio/otrs_models/ticket_types/base_customer_ticket.py +24 -0
  68. otrs_somconnexio/otrs_models/ticket_types/base_ticket.py +147 -0
  69. otrs_somconnexio/otrs_models/ticket_types/change_email_ticket.py +40 -0
  70. otrs_somconnexio/otrs_models/ticket_types/change_iban_ticket.py +39 -0
  71. otrs_somconnexio/otrs_models/ticket_types/change_owner_ticket.py +132 -0
  72. otrs_somconnexio/otrs_models/ticket_types/change_pack_not_shared_data.py +36 -0
  73. otrs_somconnexio/otrs_models/ticket_types/change_personal_email_ticket.py +31 -0
  74. otrs_somconnexio/otrs_models/ticket_types/change_shared_bond_ticket.py +35 -0
  75. otrs_somconnexio/otrs_models/ticket_types/change_tariff_adsl_landline_ticket.py +30 -0
  76. otrs_somconnexio/otrs_models/ticket_types/change_tariff_adsl_out_landline_ticket.py +30 -0
  77. otrs_somconnexio/otrs_models/ticket_types/change_tariff_adsl_ticket.py +42 -0
  78. otrs_somconnexio/otrs_models/ticket_types/change_tariff_fiber_ticket.py +43 -0
  79. otrs_somconnexio/otrs_models/ticket_types/change_tariff_ticket.py +87 -0
  80. otrs_somconnexio/otrs_models/ticket_types/change_tariff_ticket_mobile_pack.py +51 -0
  81. otrs_somconnexio/otrs_models/ticket_types/change_tariff_ticket_shared_bonds.py +22 -0
  82. otrs_somconnexio/otrs_models/ticket_types/check_coverage_ticket.py +52 -0
  83. otrs_somconnexio/otrs_models/ticket_types/we_call_you_ticket.py +53 -0
  84. otrs_somconnexio/otrs_models/vf_provisioning_article.py +4 -2
  85. otrs_somconnexio/responses/ticket_creation.py +5 -4
  86. otrs_somconnexio/services/activate_change_tarriff_mobile_tickets.py +13 -0
  87. otrs_somconnexio/services/base_get_ticket_by_number.py +22 -0
  88. otrs_somconnexio/services/change_to_confirm_ticket.py +45 -0
  89. otrs_somconnexio/services/get_mobile_related_tickets.py +11 -0
  90. otrs_somconnexio/services/get_sharing_data_mobile_tickets.py +65 -0
  91. otrs_somconnexio/services/get_ticket_title.py +26 -0
  92. otrs_somconnexio/services/mapping_mobile_minutes.py +5 -5
  93. otrs_somconnexio/services/mapping_services.py +8 -6
  94. otrs_somconnexio/services/move_sharing_data_mobile_tickets.py +13 -0
  95. otrs_somconnexio/services/search_tickets_mobile_change_tariff.py +25 -0
  96. otrs_somconnexio/services/search_tickets_service.py +57 -0
  97. otrs_somconnexio/services/set_SIM_recieved_mobile_ticket.py +107 -0
  98. otrs_somconnexio/services/set_SIM_returned_mobile_ticket.py +37 -0
  99. otrs_somconnexio/services/set_fiber_contract_code_mobile_ticket.py +21 -0
  100. otrs_somconnexio/services/unblock_mobile_pack_ticket.py +48 -0
  101. otrs_somconnexio/services/update_process_ticket_with_coverage_tickets_info_service.py +10 -10
  102. otrs_somconnexio/services/update_ticket_DF.py +18 -0
  103. otrs_somconnexio/services/update_ticket_with_provider_info.py +2 -3
  104. otrs_somconnexio/user_management_client/client.py +15 -27
  105. otrs_somconnexio/user_management_client/user_management_response.py +2 -3
  106. {otrs_somconnexio-0.4.4.dist-info → otrs_somconnexio-0.7.3.dist-info}/METADATA +19 -4
  107. otrs_somconnexio-0.7.3.dist-info/RECORD +202 -0
  108. {otrs_somconnexio-0.4.4.dist-info → otrs_somconnexio-0.7.3.dist-info}/WHEEL +1 -1
  109. tests/data/otrs_raw_responses.py +12 -6
  110. tests/integration/test_change_customer_language.py +14 -19
  111. tests/integration/test_ticket_factory.py +383 -106
  112. tests/integration/test_update_ticket_with_coverage_data.py +53 -27
  113. tests/otrs_models/common_helper.py +9 -0
  114. tests/otrs_models/configuration/changes/__init__.py +0 -0
  115. tests/otrs_models/configuration/changes/test_change_tariff_ticket.py +91 -0
  116. tests/otrs_models/configuration/provision/__init__.py +0 -0
  117. tests/otrs_models/configuration/provision/test_adsl_ticket.py +30 -0
  118. tests/otrs_models/configuration/provision/test_fiber_ticket.py +32 -0
  119. tests/otrs_models/configuration/provision/test_mobile_ticket.py +62 -0
  120. tests/otrs_models/process_ticket/test_internet_process_ticket.py +54 -60
  121. tests/otrs_models/process_ticket/test_mobile_process_ticket.py +56 -33
  122. tests/otrs_models/test_abstract_article.py +3 -2
  123. tests/otrs_models/test_adsl_data.py +11 -4
  124. tests/otrs_models/test_adsl_dynamic_fields.py +217 -100
  125. tests/otrs_models/test_adsl_ticket.py +78 -83
  126. tests/otrs_models/test_coverage_article.py +9 -7
  127. tests/otrs_models/test_coverage_ticket.py +4 -2
  128. tests/otrs_models/test_customer_user.py +23 -20
  129. tests/otrs_models/test_fiber_data.py +20 -4
  130. tests/otrs_models/test_fiber_dynamic_fields.py +458 -134
  131. tests/otrs_models/test_fiber_ticket.py +113 -79
  132. tests/otrs_models/test_mobile_data.py +14 -3
  133. tests/otrs_models/test_mobile_dynamic_fields.py +335 -74
  134. tests/otrs_models/test_mobile_paused_ticket.py +35 -0
  135. tests/otrs_models/test_mobile_ticket.py +82 -96
  136. tests/otrs_models/test_provision_article.py +49 -0
  137. tests/otrs_models/test_router_4G_data.py +43 -0
  138. tests/otrs_models/test_router_4G_dynamic_fields.py +619 -0
  139. tests/otrs_models/test_router_4G_ticket.py +135 -0
  140. tests/otrs_models/test_service.py +58 -14
  141. tests/otrs_models/test_switchboard_data.py +37 -0
  142. tests/otrs_models/test_switchboard_dynamic_fields.py +197 -0
  143. tests/otrs_models/test_switchboard_header_data.py +18 -0
  144. tests/otrs_models/test_switchboard_header_dynamic_fields.py +119 -0
  145. tests/otrs_models/test_switchboard_header_ticket.py +127 -0
  146. tests/otrs_models/test_switchboard_ticket.py +147 -0
  147. tests/otrs_models/test_telecom_company.py +16 -16
  148. tests/otrs_models/test_ticket_factory.py +73 -16
  149. tests/otrs_models/test_vf_provisioning_article.py +6 -5
  150. tests/otrs_models/ticket_types/__init__.py +0 -0
  151. tests/otrs_models/ticket_types/test_add_data.py +79 -0
  152. tests/otrs_models/ticket_types/test_change_email.py +163 -0
  153. tests/otrs_models/ticket_types/test_change_iban.py +82 -0
  154. tests/otrs_models/ticket_types/test_change_owner.py +277 -0
  155. tests/otrs_models/ticket_types/test_change_pack_not_shared_data.py +77 -0
  156. tests/otrs_models/ticket_types/test_change_personal_email.py +81 -0
  157. tests/otrs_models/ticket_types/test_change_tariff.py +435 -0
  158. tests/otrs_models/ticket_types/test_change_tariff_adsl_landline.py +115 -0
  159. tests/otrs_models/ticket_types/test_change_tariff_adsl_out_landline.py +115 -0
  160. tests/otrs_models/ticket_types/test_change_tariff_fiber.py +175 -0
  161. tests/otrs_models/ticket_types/test_change_tariff_mobile_pack.py +151 -0
  162. tests/otrs_models/ticket_types/test_change_tariff_shared_bonds.py +65 -0
  163. tests/otrs_models/ticket_types/test_check_coverage.py +106 -0
  164. tests/otrs_models/ticket_types/test_shared_bond.py +80 -0
  165. tests/otrs_models/ticket_types/test_we_call_you.py +108 -0
  166. tests/responses/test_ticket_creation.py +4 -4
  167. tests/services/test_activate_change_tariff_mobile_tickets.py +45 -0
  168. tests/services/test_change_to_confirm_ticket.py +80 -0
  169. tests/services/test_get_mobile_related_tickets.py +39 -0
  170. tests/services/test_get_sharing_data_mobile_tickets.py +127 -0
  171. tests/services/test_mapping_mobile_minutes.py +8 -8
  172. tests/services/{test_mappint_services.py → test_mapping_services.py} +9 -9
  173. tests/services/test_move_sharing_data_mobile_tickets.py +43 -0
  174. tests/services/test_search_tickets_mobile_change_tariff.py +84 -0
  175. tests/services/test_search_tickets_service.py +166 -0
  176. tests/services/test_set_SIM_recieved_mobile_ticket_service.py +211 -0
  177. tests/services/test_set_SIM_returned_mobile_ticket_service.py +59 -0
  178. tests/services/test_set_fiber_contract_code_mobile_ticket_service.py +47 -0
  179. tests/services/test_unblock_mobile_pack_ticket.py +224 -0
  180. tests/services/test_update_process_ticket_with_VF_provisioning.py +15 -14
  181. tests/services/test_update_process_ticket_with_coverage_tickets_info_service.py +22 -10
  182. tests/services/test_update_ticket_with_provider_info.py +16 -15
  183. tests/user_management_client/test_client.py +41 -58
  184. tests/user_management_client/test_user_management_response.py +13 -26
  185. otrs_somconnexio/otrs_models/configurations/mobile_ticket.py +0 -17
  186. otrs_somconnexio/otrs_models/coverage/mm_fibre.py +0 -7
  187. otrs_somconnexio/otrs_models/coverage/vdf_fibre.py +0 -8
  188. otrs_somconnexio-0.4.4.dist-info/RECORD +0 -95
  189. tests/otrs_models/configuration/test_adsl_ticket.py +0 -45
  190. tests/otrs_models/configuration/test_fiber_ticket.py +0 -45
  191. tests/otrs_models/configuration/test_mobile_ticket.py +0 -45
  192. {otrs_somconnexio-0.4.4.dist-info → otrs_somconnexio-0.7.3.dist-info}/top_level.txt +0 -0
@@ -3,8 +3,7 @@
3
3
  from pyotrs.lib import DynamicField
4
4
 
5
5
 
6
- class ProvisionDynamicFields():
7
-
6
+ class ProvisionDynamicFields:
8
7
  def __init__(self, service_data, customer_data, otrs_process_id, otrs_activity_id):
9
8
  self.service_data = service_data
10
9
  self.customer_data = customer_data
@@ -23,19 +22,31 @@ class ProvisionDynamicFields():
23
22
  self._mail(),
24
23
  self._previous_owner_name(),
25
24
  self._previous_owner_surname1(),
25
+ self._previous_owner_full_name(),
26
26
  self._product(),
27
+ self._service_technology(),
28
+ self._sales_team(),
29
+ self._has_active_contracts(),
30
+ self._has_documentation(),
31
+ self._lang(),
32
+ self._order_id(),
33
+ self._confirmed_documentation(),
34
+ self._notes(),
35
+ self._activation_notes(),
27
36
  ]
28
37
  dynamic_fields += self._build_specific_dynamic_fields()
38
+
29
39
  return [field for field in dynamic_fields if field.value]
30
40
 
31
41
  def _process_id(self):
32
- return DynamicField(name="ProcessManagementProcessID", value=self.otrs_process_id)
42
+ return DynamicField(
43
+ name="ProcessManagementProcessID", value=self.otrs_process_id
44
+ )
33
45
 
34
46
  def _activity_id(self):
35
- return DynamicField(name="ProcessManagementActivityID", value=self.otrs_activity_id)
36
-
37
- def _econtract_id(self):
38
- return DynamicField(name="IDContracte", value=self.service_data.order_id)
47
+ return DynamicField(
48
+ name="ProcessManagementActivityID", value=self.otrs_activity_id
49
+ )
39
50
 
40
51
  def _first_name(self):
41
52
  return DynamicField("nomSoci", self.customer_data.first_name)
@@ -46,11 +57,20 @@ class ProvisionDynamicFields():
46
57
  def _vat_number(self):
47
58
  return DynamicField(name="NIFNIESoci", value=self.customer_data.vat_number)
48
59
 
60
+ def _has_active_contracts(self):
61
+ has_active_contacts = "1" if self.customer_data.has_active_contracts else "0"
62
+ return DynamicField(name="teContractesActius", value=has_active_contacts)
63
+
64
+ def _lang(self):
65
+ return DynamicField(name="idioma", value=self.customer_data.language)
66
+
49
67
  def _mail(self):
50
- return DynamicField(name="correuElectronic", value=self.customer_data.email)
68
+ return DynamicField(name="correuElectronic", value=self.service_data.email)
51
69
 
52
70
  def _phone(self):
53
- return DynamicField(name="telefonContacte", value=self.customer_data.phone)
71
+ return DynamicField(
72
+ name="telefonContacte", value=self.service_data.contact_phone
73
+ )
54
74
 
55
75
  def _iban(self):
56
76
  return DynamicField("IBAN", self.service_data.iban)
@@ -60,6 +80,51 @@ class ProvisionDynamicFields():
60
80
 
61
81
  def _previous_owner_surname1(self):
62
82
  return DynamicField(
63
- name="cognom1Titular",
64
- value=self.service_data.previous_owner_surname
83
+ name="cognom1Titular", value=self.service_data.previous_owner_surname
84
+ )
85
+
86
+ def _previous_owner_full_name(self):
87
+ full_name = ""
88
+ if self.service_data.type == "location_change":
89
+ full_name = "{} {}".format(
90
+ self.service_data.previous_owner_name,
91
+ self.service_data.previous_owner_surname,
92
+ )
93
+ return DynamicField(name="nomCognomSociAntic", value=full_name)
94
+
95
+ def _service_technology(self):
96
+ return DynamicField(name="TecDelServei", value=self.service_data.technology)
97
+
98
+ def _sales_team(self):
99
+ """odoo crm model team_id field mapping"""
100
+ sales_team_dct = {
101
+ "Residential": "residencial",
102
+ "Business": "empreses",
103
+ "Sales": "vendes",
104
+ }
105
+ return DynamicField(
106
+ name="equipVendes",
107
+ value=sales_team_dct.get(self.service_data.sales_team, ""),
108
+ )
109
+
110
+ def _has_documentation(self):
111
+ return DynamicField(name="flagDocumentacio", value="0")
112
+
113
+ def _order_id(self):
114
+ return DynamicField(name="IDpeticio", value=self.service_data.order_id)
115
+
116
+ def _confirmed_documentation(self):
117
+ confirmed_documentation = (
118
+ "1" if self.service_data.confirmed_documentation else "0"
119
+ )
120
+ return DynamicField(name="confirmarDocumentacio", value=confirmed_documentation)
121
+
122
+ def _notes(self):
123
+ return DynamicField(
124
+ name="consideracionsGenerals", value=self.service_data.notes
125
+ )
126
+
127
+ def _activation_notes(self):
128
+ return DynamicField(
129
+ name="consideracionsActivacio", value=self.service_data.activation_notes
65
130
  )
@@ -3,15 +3,17 @@ from pyotrs.lib import Ticket
3
3
 
4
4
  from otrs_somconnexio.client import OTRSClient
5
5
  from otrs_somconnexio.otrs_models.provision_article import ProvisionArticle
6
- from otrs_somconnexio.exceptions import CustomerMailMissing
6
+ from otrs_somconnexio.services.get_ticket_title import GetTicketTitle
7
7
 
8
8
 
9
- class ProvisionTicket():
9
+ class ProvisionTicket:
10
+ def __init__(self, responsible_data):
11
+ self.responsible_data = responsible_data
12
+
10
13
  def create(self):
11
14
  self.otrs_ticket = OTRSClient().create_otrs_process_ticket(
12
- self._build_ticket(),
13
- self._build_article(),
14
- self._build_dynamic_fields())
15
+ self._build_ticket(), self._build_article(), self._build_dynamic_fields()
16
+ )
15
17
 
16
18
  @property
17
19
  def id(self):
@@ -22,31 +24,42 @@ class ProvisionTicket():
22
24
  return self.otrs_ticket.number
23
25
 
24
26
  def _build_ticket(self):
25
- return Ticket({
26
- "Title": "Sol·licitud {} {}".format(
27
- self.service_type(),
28
- self.service_data.order_id
29
- ),
30
- "Type": self._ticket_type(),
31
- "Queue": self._ticket_queue(),
32
- "State": self._ticket_state(),
33
- "Priority": self._ticket_priority(),
34
- "CustomerUser": self._customer_user(),
35
- "CustomerID": self._customer_id()
36
- })
27
+ title = self._ticket_title()
28
+ return Ticket(
29
+ {
30
+ "Title": title,
31
+ "Type": self._ticket_type(),
32
+ "QueueID": self._ticket_queue_id(),
33
+ "State": self._ticket_state(),
34
+ "Priority": self._ticket_priority(),
35
+ "CustomerUser": self._customer_id(),
36
+ "CustomerID": self._customer_id(),
37
+ "Service": self._ticket_service(),
38
+ "SLA": self._ticket_SLA(),
39
+ "Responsible": self._responsible_email(),
40
+ }
41
+ )
37
42
 
38
43
  def _build_article(self):
39
44
  provision_article = ProvisionArticle(
45
+ self.service_data.technology,
46
+ self.service_data.order_id,
40
47
  self.service_type(),
41
- self.service_data.order_id
42
48
  )
43
49
  return provision_article.call()
44
50
 
51
+ def _ticket_title(self):
52
+ return GetTicketTitle(
53
+ self.service_data.technology,
54
+ self.service_data.order_id,
55
+ self.service_type(),
56
+ ).build()
57
+
45
58
  def _ticket_type(self):
46
59
  return self.otrs_configuration.type
47
60
 
48
- def _ticket_queue(self):
49
- return self.otrs_configuration.queue
61
+ def _ticket_queue_id(self):
62
+ return self.otrs_configuration.queue_id
50
63
 
51
64
  def _ticket_state(self):
52
65
  return self.otrs_configuration.state
@@ -60,12 +73,23 @@ class ProvisionTicket():
60
73
  def _ticket_process_id(self):
61
74
  return self.otrs_configuration.process_id
62
75
 
76
+ def _ticket_service(self):
77
+ if hasattr(self.otrs_configuration, "service"):
78
+ return self.otrs_configuration.service
79
+ else:
80
+ return False
81
+
82
+ def _ticket_SLA(self):
83
+ if hasattr(self.otrs_configuration, "SLA"):
84
+ return self.otrs_configuration.SLA
85
+ else:
86
+ return False
87
+
63
88
  def _customer_id(self):
64
- if not self.customer_data.email:
65
- raise CustomerMailMissing(self.service_data.order_id)
66
- return self.customer_data.email
67
-
68
- def _customer_user(self):
69
- if not self.customer_data.email:
70
- raise CustomerMailMissing(self.service_data.order_id)
71
- return self.customer_data.email
89
+ return self.customer_data.id
90
+
91
+ def _responsible_email(self):
92
+ if hasattr(self.responsible_data, "email"):
93
+ return self.responsible_data.email
94
+ else:
95
+ return False
@@ -0,0 +1,6 @@
1
+ class ResponsibleData:
2
+ def __init__(
3
+ self,
4
+ email,
5
+ ):
6
+ self.email = email
@@ -0,0 +1,8 @@
1
+ from otrs_somconnexio.otrs_models.internet_data import InternetData
2
+
3
+
4
+ class Router4GData(InternetData):
5
+ service_type = "4G"
6
+
7
+ def __init__(self, **args):
8
+ super().__init__(**args)
@@ -0,0 +1,9 @@
1
+ # coding: utf-8
2
+ from otrs_somconnexio.otrs_models.internet_dynamic_fields import InternetDynamicFields
3
+
4
+
5
+ class Router4GDynamicFields(InternetDynamicFields):
6
+ def _build_specific_broadband_service_dynamic_fields(self):
7
+ """Return list of OTRS DynamicFields to create a OTRS Process Ticket from Eticom Contract.
8
+ Return only the specifics fields of Router 4G Ticket."""
9
+ return []
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ from otrs_somconnexio.otrs_models.provision_ticket import ProvisionTicket
3
+ from otrs_somconnexio.otrs_models.router_4G_dynamic_fields import Router4GDynamicFields
4
+ from otrs_somconnexio.otrs_models.configurations.provision.router_4G_ticket import (
5
+ Router4GTicketConfiguration,
6
+ )
7
+
8
+
9
+ class Router4GTicket(ProvisionTicket):
10
+ def __init__(self, service_data, customer_data, responsible_data):
11
+ super(Router4GTicket, self).__init__(responsible_data)
12
+ self.service_data = service_data
13
+ self.customer_data = customer_data
14
+ self.otrs_configuration = Router4GTicketConfiguration()
15
+
16
+ def service_type(self):
17
+ return "4G"
18
+
19
+ def _build_dynamic_fields(self):
20
+ # Router 4G does not have specific 4G fields so far
21
+ return Router4GDynamicFields(
22
+ self.service_data,
23
+ self.customer_data,
24
+ self._ticket_process_id(),
25
+ self._ticket_activity_id(),
26
+ ).all()
@@ -1,18 +1,27 @@
1
- ADSL_SERVICES = ['ADSL', 'ADSL+100min', 'ADSL+1000min']
2
- FIBRE_SERVICES = ['Fibra']
3
- MOBILE_SERVICES = ['Mobil']
4
- NO_COVERAGE_VALUES = ['NoServei', 'NoFibra', 'fibraIndirecta', 'NoFibraVdf']
1
+ ADSL_SERVICES = ["ADSL", "ADSL+100min", "ADSL+1000min"]
2
+ FIBRE_SERVICES = ["Fibra"]
3
+ MOBILE_SERVICES = ["Mobil"]
4
+ NO_COVERAGE_VALUES = ["NoServei", "NoFibra", "fibraIndirecta", "NoFibraVdf"]
5
5
 
6
6
 
7
- class Service():
8
-
7
+ class Service:
9
8
  def __init__(self, otrs_response):
10
9
  self.response = otrs_response
11
- self._technology = self._field('TecDelServei')
10
+ self._technology = self._get_technology()
12
11
 
13
12
  def _field(self, field_name):
14
13
  return self.response.dynamic_field_get(field_name).value
15
14
 
15
+ def _get_technology(self):
16
+ technology = self._field("TecDelServei")
17
+ if technology != "Mixta":
18
+ return technology
19
+ if self._field("tipusServeiMobil"):
20
+ return MOBILE_SERVICES[0]
21
+ else:
22
+ # So far, mixted tecnhology can be either mobile or fiber
23
+ return FIBRE_SERVICES[0]
24
+
16
25
  def _is_adsl(self):
17
26
  return self._technology in ADSL_SERVICES
18
27
 
@@ -21,19 +30,39 @@ class Service():
21
30
 
22
31
  def _has_adsl_coverage(self):
23
32
  return self._is_adsl() and (
24
- not self._field('coberturaADSL') or self._field('coberturaADSL') not in NO_COVERAGE_VALUES)
33
+ not self._field("coberturaADSL")
34
+ or self._field("coberturaADSL") not in NO_COVERAGE_VALUES
35
+ )
25
36
 
26
37
  def _has_fibre_coverage(self):
27
- return self._is_fibre() and (self._fibre_MM_coverage() or self._fibre_Vdf_coverage())
38
+ return self._is_fibre() and (
39
+ self._fibre_MM_coverage()
40
+ or self._fibre_Vdf_coverage()
41
+ or self._fibre_Orange_coverage()
42
+ )
28
43
 
29
44
  def _fibre_MM_coverage(self):
30
- return not self._field('coberturaFibraMM') or self._field('coberturaFibraMM') not in NO_COVERAGE_VALUES
45
+ return (
46
+ not self._field("coberturaFibraMM")
47
+ or self._field("coberturaFibraMM") not in NO_COVERAGE_VALUES
48
+ )
31
49
 
32
50
  def _fibre_Vdf_coverage(self):
33
- return not self._field('coberturaFibraVdf') or self._field('coberturaFibraVdf') not in NO_COVERAGE_VALUES
51
+ return (
52
+ not self._field("coberturaFibraVdf")
53
+ or self._field("coberturaFibraVdf") not in NO_COVERAGE_VALUES
54
+ )
55
+
56
+ def _fibre_Orange_coverage(self):
57
+ return (
58
+ not self._field("coberturaFibraOrange")
59
+ or self._field("coberturaFibraOrange") not in NO_COVERAGE_VALUES
60
+ )
34
61
 
35
62
  def has_coverage(self):
36
- return self.is_mobile() or self._has_adsl_coverage() or self._has_fibre_coverage()
63
+ return (
64
+ self.is_mobile() or self._has_adsl_coverage() or self._has_fibre_coverage()
65
+ )
37
66
 
38
67
  def is_mobile(self):
39
68
  return self._technology in MOBILE_SERVICES
@@ -0,0 +1,58 @@
1
+ class SwitchboardData:
2
+ service_type = "switchboard"
3
+
4
+ def __init__(
5
+ self,
6
+ order_id,
7
+ iban,
8
+ email,
9
+ contact_phone,
10
+ product,
11
+ technology,
12
+ sales_team,
13
+ type,
14
+ landline,
15
+ mobile_phone_number,
16
+ icc,
17
+ has_sim,
18
+ extension,
19
+ agent_name,
20
+ agent_email,
21
+ previous_owner_vat,
22
+ previous_owner_name,
23
+ previous_owner_surname,
24
+ shipment_address,
25
+ shipment_city,
26
+ shipment_zip,
27
+ shipment_subdivision,
28
+ additional_products,
29
+ activation_notes="",
30
+ notes="",
31
+ confirmed_documentation=False,
32
+ ):
33
+ self.order_id = order_id
34
+ self.iban = iban
35
+ self.email = email
36
+ self.contact_phone = contact_phone
37
+ self.product = product
38
+ self.technology = technology
39
+ self.sales_team = sales_team
40
+ self.type = type
41
+ self.landline = landline
42
+ self.mobile_phone_number = mobile_phone_number
43
+ self.icc = icc
44
+ self.has_sim = has_sim
45
+ self.extension = extension
46
+ self.agent_name = agent_name
47
+ self.agent_email = agent_email
48
+ self.previous_owner_vat = previous_owner_vat
49
+ self.previous_owner_name = previous_owner_name
50
+ self.previous_owner_surname = previous_owner_surname
51
+ self.shipment_address = shipment_address
52
+ self.shipment_city = shipment_city
53
+ self.shipment_zip = shipment_zip
54
+ self.shipment_subdivision = shipment_subdivision
55
+ self.additional_products = additional_products
56
+ self.activation_notes = activation_notes
57
+ self.notes = notes
58
+ self.confirmed_documentation = confirmed_documentation
@@ -0,0 +1,94 @@
1
+ # coding: utf-8
2
+ from pyotrs.lib import DynamicField
3
+ from otrs_somconnexio.otrs_models.provision_dynamic_fields import ProvisionDynamicFields
4
+
5
+
6
+ class SwitchboardDynamicFields(ProvisionDynamicFields):
7
+ def _build_specific_dynamic_fields(self):
8
+ dynamic_fields = [
9
+ self._service_type(),
10
+ self._is_header(),
11
+ self._phone_number(),
12
+ self._landline(),
13
+ self._icc(),
14
+ self._sim_received(),
15
+ self._send_sim_type(),
16
+ self._extension(),
17
+ self._agent_name(),
18
+ self._agent_email(),
19
+ self._shipment_address(),
20
+ self._shipment_city(),
21
+ self._shipment_zip(),
22
+ self._shipment_subdivision(),
23
+ self._additional_products(),
24
+ ]
25
+ return dynamic_fields
26
+
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")
35
+
36
+ def _product(self):
37
+ return DynamicField(name="productCV", value=self.service_data.product)
38
+
39
+ def _landline(self):
40
+ return DynamicField(name="portaFixCV1", value=self.service_data.landline)
41
+
42
+ def _phone_number(self):
43
+ return DynamicField(
44
+ name="liniaMobil", value=self.service_data.mobile_phone_number
45
+ )
46
+
47
+ def _icc(self):
48
+ return DynamicField(name="ICCSC", value=self.service_data.icc)
49
+
50
+ def _sim_received(self):
51
+ sim_recieved = "1" if self.service_data.has_sim else "0"
52
+ return DynamicField("SIMrebuda", sim_recieved)
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
+
58
+ def _extension(self):
59
+ return DynamicField(name="extensio", value=self.service_data.extension)
60
+
61
+ def _agent_name(self):
62
+ return DynamicField(name="nomAgentCV", value=self.service_data.agent_name)
63
+
64
+ def _agent_email(self):
65
+ return DynamicField(name="correuAgentCV", value=self.service_data.agent_email)
66
+
67
+ def _shipment_address(self):
68
+ return DynamicField(
69
+ name="direccioEnviament", value=self.service_data.shipment_address
70
+ )
71
+
72
+ def _shipment_city(self):
73
+ return DynamicField(
74
+ name="poblacioEnviament", value=self.service_data.shipment_city
75
+ )
76
+
77
+ def _shipment_zip(self):
78
+ return DynamicField(name="CPenviament", value=self.service_data.shipment_zip)
79
+
80
+ def _shipment_subdivision(self):
81
+ return DynamicField(
82
+ name="provinciaEnviament", value=self.service_data.shipment_subdivision
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="consideracionsActivacio", value=self.service_data.notes
80
+ )
@@ -0,0 +1,30 @@
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, responsible_data):
13
+ super(SwitchboardHeaderTicket, self).__init__(responsible_data)
14
+ self.service_data = service_data
15
+ self.customer_data = customer_data
16
+ self.otrs_configuration = SwitchboardTicketConfiguration()
17
+
18
+ def service_type(self):
19
+ return "switchboard_header"
20
+
21
+ def _build_dynamic_fields(self):
22
+ return SwitchboardHeaderDynamicFields(
23
+ self.service_data,
24
+ self.customer_data,
25
+ self._ticket_process_id(),
26
+ self._ticket_activity_id(),
27
+ ).all()
28
+
29
+ def _ticket_title(self):
30
+ return "Provisió centraleta virtual (CV) → Capçalera"