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.
- otrs_somconnexio/client.py +110 -42
- otrs_somconnexio/exceptions.py +44 -11
- otrs_somconnexio/otrs_models/abstract_article.py +3 -0
- otrs_somconnexio/otrs_models/adsl_data.py +7 -37
- otrs_somconnexio/otrs_models/adsl_dynamic_fields.py +5 -4
- otrs_somconnexio/otrs_models/adsl_ticket.py +9 -5
- otrs_somconnexio/otrs_models/configurations/changes/__init__.py +0 -0
- otrs_somconnexio/otrs_models/configurations/changes/add_data.py +13 -0
- otrs_somconnexio/otrs_models/configurations/changes/change_email.py +16 -0
- otrs_somconnexio/otrs_models/configurations/changes/change_iban.py +8 -0
- otrs_somconnexio/otrs_models/configurations/changes/change_owner.py +19 -0
- otrs_somconnexio/otrs_models/configurations/changes/change_pack.py +6 -0
- otrs_somconnexio/otrs_models/configurations/changes/change_shared_bond.py +7 -0
- otrs_somconnexio/otrs_models/configurations/changes/change_tariff.py +29 -0
- otrs_somconnexio/otrs_models/configurations/changes/change_tariff_adsl.py +20 -0
- otrs_somconnexio/otrs_models/configurations/changes/change_tariff_fiber.py +11 -0
- otrs_somconnexio/otrs_models/configurations/provision/__init__.py +0 -0
- otrs_somconnexio/otrs_models/configurations/{adsl_ticket.py → provision/adsl_ticket.py} +2 -2
- otrs_somconnexio/otrs_models/configurations/{fiber_ticket.py → provision/fiber_ticket.py} +6 -3
- otrs_somconnexio/otrs_models/configurations/provision/mobile_ticket.py +44 -0
- otrs_somconnexio/otrs_models/configurations/provision/router_4G_ticket.py +8 -0
- otrs_somconnexio/otrs_models/configurations/provision/switchboard_ticket.py +10 -0
- otrs_somconnexio/otrs_models/configurations/querys/__init__.py +0 -0
- otrs_somconnexio/otrs_models/configurations/querys/check_coverage.py +16 -0
- otrs_somconnexio/otrs_models/configurations/querys/we_call_you.py +26 -0
- otrs_somconnexio/otrs_models/coverage/adsl.py +1 -1
- otrs_somconnexio/otrs_models/coverage/asociatel_fiber.py +6 -0
- otrs_somconnexio/otrs_models/coverage/mm_fiber.py +7 -0
- otrs_somconnexio/otrs_models/coverage/orange_fiber.py +5 -0
- otrs_somconnexio/otrs_models/coverage/vdf_fiber.py +8 -0
- otrs_somconnexio/otrs_models/coverage_article.py +20 -4
- otrs_somconnexio/otrs_models/coverage_ticket.py +1 -0
- otrs_somconnexio/otrs_models/customer_data.py +15 -3
- otrs_somconnexio/otrs_models/customer_user.py +3 -9
- otrs_somconnexio/otrs_models/fiber_data.py +17 -33
- otrs_somconnexio/otrs_models/fiber_dynamic_fields.py +58 -4
- otrs_somconnexio/otrs_models/fiber_ticket.py +9 -5
- otrs_somconnexio/otrs_models/internet_data.py +79 -0
- otrs_somconnexio/otrs_models/internet_dynamic_fields.py +65 -26
- otrs_somconnexio/otrs_models/mobile_data.py +49 -5
- otrs_somconnexio/otrs_models/mobile_dynamic_fields.py +50 -8
- otrs_somconnexio/otrs_models/mobile_ticket.py +20 -4
- otrs_somconnexio/otrs_models/process_ticket/internet.py +40 -97
- otrs_somconnexio/otrs_models/process_ticket/mobile.py +63 -43
- otrs_somconnexio/otrs_models/process_ticket/process_ticket.py +74 -0
- otrs_somconnexio/otrs_models/providers.py +4 -3
- otrs_somconnexio/otrs_models/provision_article.py +7 -5
- otrs_somconnexio/otrs_models/provision_dynamic_fields.py +76 -11
- otrs_somconnexio/otrs_models/provision_ticket.py +52 -28
- otrs_somconnexio/otrs_models/responsible_data.py +6 -0
- otrs_somconnexio/otrs_models/router_4G_data.py +8 -0
- otrs_somconnexio/otrs_models/router_4G_dynamic_fields.py +9 -0
- otrs_somconnexio/otrs_models/router_4G_ticket.py +26 -0
- otrs_somconnexio/otrs_models/service.py +41 -12
- otrs_somconnexio/otrs_models/switchboard_data.py +58 -0
- otrs_somconnexio/otrs_models/switchboard_dynamic_fields.py +94 -0
- 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 +30 -0
- otrs_somconnexio/otrs_models/switchboard_ticket.py +35 -0
- otrs_somconnexio/otrs_models/telecom_company.py +69 -69
- otrs_somconnexio/otrs_models/ticket_factory.py +34 -11
- otrs_somconnexio/otrs_models/ticket_types/__init__.py +0 -0
- otrs_somconnexio/otrs_models/ticket_types/add_data_ticket.py +36 -0
- otrs_somconnexio/otrs_models/ticket_types/base_change_tariff_ba_ticket.py +23 -0
- otrs_somconnexio/otrs_models/ticket_types/base_change_ticket.py +33 -0
- otrs_somconnexio/otrs_models/ticket_types/base_customer_ticket.py +24 -0
- otrs_somconnexio/otrs_models/ticket_types/base_ticket.py +147 -0
- otrs_somconnexio/otrs_models/ticket_types/change_email_ticket.py +40 -0
- otrs_somconnexio/otrs_models/ticket_types/change_iban_ticket.py +39 -0
- otrs_somconnexio/otrs_models/ticket_types/change_owner_ticket.py +132 -0
- otrs_somconnexio/otrs_models/ticket_types/change_pack_not_shared_data.py +36 -0
- otrs_somconnexio/otrs_models/ticket_types/change_personal_email_ticket.py +31 -0
- otrs_somconnexio/otrs_models/ticket_types/change_shared_bond_ticket.py +35 -0
- otrs_somconnexio/otrs_models/ticket_types/change_tariff_adsl_landline_ticket.py +30 -0
- otrs_somconnexio/otrs_models/ticket_types/change_tariff_adsl_out_landline_ticket.py +30 -0
- otrs_somconnexio/otrs_models/ticket_types/change_tariff_adsl_ticket.py +42 -0
- otrs_somconnexio/otrs_models/ticket_types/change_tariff_fiber_ticket.py +43 -0
- otrs_somconnexio/otrs_models/ticket_types/change_tariff_ticket.py +87 -0
- otrs_somconnexio/otrs_models/ticket_types/change_tariff_ticket_mobile_pack.py +51 -0
- otrs_somconnexio/otrs_models/ticket_types/change_tariff_ticket_shared_bonds.py +22 -0
- otrs_somconnexio/otrs_models/ticket_types/check_coverage_ticket.py +52 -0
- otrs_somconnexio/otrs_models/ticket_types/we_call_you_ticket.py +53 -0
- otrs_somconnexio/otrs_models/vf_provisioning_article.py +4 -2
- otrs_somconnexio/responses/ticket_creation.py +5 -4
- otrs_somconnexio/services/activate_change_tarriff_mobile_tickets.py +13 -0
- otrs_somconnexio/services/base_get_ticket_by_number.py +22 -0
- otrs_somconnexio/services/change_to_confirm_ticket.py +45 -0
- otrs_somconnexio/services/get_mobile_related_tickets.py +11 -0
- otrs_somconnexio/services/get_sharing_data_mobile_tickets.py +65 -0
- otrs_somconnexio/services/get_ticket_title.py +26 -0
- otrs_somconnexio/services/mapping_mobile_minutes.py +5 -5
- otrs_somconnexio/services/mapping_services.py +8 -6
- otrs_somconnexio/services/move_sharing_data_mobile_tickets.py +13 -0
- otrs_somconnexio/services/search_tickets_mobile_change_tariff.py +25 -0
- otrs_somconnexio/services/search_tickets_service.py +57 -0
- otrs_somconnexio/services/set_SIM_recieved_mobile_ticket.py +107 -0
- otrs_somconnexio/services/set_SIM_returned_mobile_ticket.py +37 -0
- otrs_somconnexio/services/set_fiber_contract_code_mobile_ticket.py +21 -0
- otrs_somconnexio/services/unblock_mobile_pack_ticket.py +48 -0
- otrs_somconnexio/services/update_process_ticket_with_coverage_tickets_info_service.py +10 -10
- otrs_somconnexio/services/update_ticket_DF.py +18 -0
- otrs_somconnexio/services/update_ticket_with_provider_info.py +2 -3
- otrs_somconnexio/user_management_client/client.py +15 -27
- otrs_somconnexio/user_management_client/user_management_response.py +2 -3
- {otrs_somconnexio-0.4.4.dist-info → otrs_somconnexio-0.7.3.dist-info}/METADATA +19 -4
- otrs_somconnexio-0.7.3.dist-info/RECORD +202 -0
- {otrs_somconnexio-0.4.4.dist-info → otrs_somconnexio-0.7.3.dist-info}/WHEEL +1 -1
- tests/data/otrs_raw_responses.py +12 -6
- tests/integration/test_change_customer_language.py +14 -19
- tests/integration/test_ticket_factory.py +383 -106
- tests/integration/test_update_ticket_with_coverage_data.py +53 -27
- tests/otrs_models/common_helper.py +9 -0
- tests/otrs_models/configuration/changes/__init__.py +0 -0
- tests/otrs_models/configuration/changes/test_change_tariff_ticket.py +91 -0
- tests/otrs_models/configuration/provision/__init__.py +0 -0
- tests/otrs_models/configuration/provision/test_adsl_ticket.py +30 -0
- tests/otrs_models/configuration/provision/test_fiber_ticket.py +32 -0
- tests/otrs_models/configuration/provision/test_mobile_ticket.py +62 -0
- tests/otrs_models/process_ticket/test_internet_process_ticket.py +54 -60
- tests/otrs_models/process_ticket/test_mobile_process_ticket.py +56 -33
- tests/otrs_models/test_abstract_article.py +3 -2
- tests/otrs_models/test_adsl_data.py +11 -4
- tests/otrs_models/test_adsl_dynamic_fields.py +217 -100
- tests/otrs_models/test_adsl_ticket.py +78 -83
- tests/otrs_models/test_coverage_article.py +9 -7
- tests/otrs_models/test_coverage_ticket.py +4 -2
- tests/otrs_models/test_customer_user.py +23 -20
- tests/otrs_models/test_fiber_data.py +20 -4
- tests/otrs_models/test_fiber_dynamic_fields.py +458 -134
- tests/otrs_models/test_fiber_ticket.py +113 -79
- tests/otrs_models/test_mobile_data.py +14 -3
- tests/otrs_models/test_mobile_dynamic_fields.py +335 -74
- tests/otrs_models/test_mobile_paused_ticket.py +35 -0
- tests/otrs_models/test_mobile_ticket.py +82 -96
- tests/otrs_models/test_provision_article.py +49 -0
- tests/otrs_models/test_router_4G_data.py +43 -0
- tests/otrs_models/test_router_4G_dynamic_fields.py +619 -0
- tests/otrs_models/test_router_4G_ticket.py +135 -0
- tests/otrs_models/test_service.py +58 -14
- tests/otrs_models/test_switchboard_data.py +37 -0
- tests/otrs_models/test_switchboard_dynamic_fields.py +197 -0
- 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 +127 -0
- tests/otrs_models/test_switchboard_ticket.py +147 -0
- tests/otrs_models/test_telecom_company.py +16 -16
- tests/otrs_models/test_ticket_factory.py +73 -16
- tests/otrs_models/test_vf_provisioning_article.py +6 -5
- tests/otrs_models/ticket_types/__init__.py +0 -0
- tests/otrs_models/ticket_types/test_add_data.py +79 -0
- tests/otrs_models/ticket_types/test_change_email.py +163 -0
- tests/otrs_models/ticket_types/test_change_iban.py +82 -0
- tests/otrs_models/ticket_types/test_change_owner.py +277 -0
- tests/otrs_models/ticket_types/test_change_pack_not_shared_data.py +77 -0
- tests/otrs_models/ticket_types/test_change_personal_email.py +81 -0
- tests/otrs_models/ticket_types/test_change_tariff.py +435 -0
- tests/otrs_models/ticket_types/test_change_tariff_adsl_landline.py +115 -0
- tests/otrs_models/ticket_types/test_change_tariff_adsl_out_landline.py +115 -0
- tests/otrs_models/ticket_types/test_change_tariff_fiber.py +175 -0
- tests/otrs_models/ticket_types/test_change_tariff_mobile_pack.py +151 -0
- tests/otrs_models/ticket_types/test_change_tariff_shared_bonds.py +65 -0
- tests/otrs_models/ticket_types/test_check_coverage.py +106 -0
- tests/otrs_models/ticket_types/test_shared_bond.py +80 -0
- tests/otrs_models/ticket_types/test_we_call_you.py +108 -0
- tests/responses/test_ticket_creation.py +4 -4
- tests/services/test_activate_change_tariff_mobile_tickets.py +45 -0
- tests/services/test_change_to_confirm_ticket.py +80 -0
- tests/services/test_get_mobile_related_tickets.py +39 -0
- tests/services/test_get_sharing_data_mobile_tickets.py +127 -0
- tests/services/test_mapping_mobile_minutes.py +8 -8
- tests/services/{test_mappint_services.py → test_mapping_services.py} +9 -9
- tests/services/test_move_sharing_data_mobile_tickets.py +43 -0
- tests/services/test_search_tickets_mobile_change_tariff.py +84 -0
- tests/services/test_search_tickets_service.py +166 -0
- tests/services/test_set_SIM_recieved_mobile_ticket_service.py +211 -0
- tests/services/test_set_SIM_returned_mobile_ticket_service.py +59 -0
- tests/services/test_set_fiber_contract_code_mobile_ticket_service.py +47 -0
- tests/services/test_unblock_mobile_pack_ticket.py +224 -0
- tests/services/test_update_process_ticket_with_VF_provisioning.py +15 -14
- tests/services/test_update_process_ticket_with_coverage_tickets_info_service.py +22 -10
- tests/services/test_update_ticket_with_provider_info.py +16 -15
- tests/user_management_client/test_client.py +41 -58
- tests/user_management_client/test_user_management_response.py +13 -26
- otrs_somconnexio/otrs_models/configurations/mobile_ticket.py +0 -17
- otrs_somconnexio/otrs_models/coverage/mm_fibre.py +0 -7
- otrs_somconnexio/otrs_models/coverage/vdf_fibre.py +0 -8
- otrs_somconnexio-0.4.4.dist-info/RECORD +0 -95
- tests/otrs_models/configuration/test_adsl_ticket.py +0 -45
- tests/otrs_models/configuration/test_fiber_ticket.py +0 -45
- tests/otrs_models/configuration/test_mobile_ticket.py +0 -45
- {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(
|
|
42
|
+
return DynamicField(
|
|
43
|
+
name="ProcessManagementProcessID", value=self.otrs_process_id
|
|
44
|
+
)
|
|
33
45
|
|
|
34
46
|
def _activity_id(self):
|
|
35
|
-
return DynamicField(
|
|
36
|
-
|
|
37
|
-
|
|
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.
|
|
68
|
+
return DynamicField(name="correuElectronic", value=self.service_data.email)
|
|
51
69
|
|
|
52
70
|
def _phone(self):
|
|
53
|
-
return DynamicField(
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
|
49
|
-
return self.otrs_configuration.
|
|
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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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,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 = [
|
|
2
|
-
FIBRE_SERVICES = [
|
|
3
|
-
MOBILE_SERVICES = [
|
|
4
|
-
NO_COVERAGE_VALUES = [
|
|
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.
|
|
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(
|
|
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 (
|
|
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
|
|
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
|
|
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
|
|
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"
|