@waron97/prbot 1.0.0

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 (18) hide show
  1. package/dotenv +85908 -0
  2. package/example.xml +3903 -0
  3. package/index.js +247 -0
  4. package/out/xml_data_for_ML - RISOLUZIONE CONTRATTUALE - Relazioni mancanti: Fasi - Workflow e Fasi - Esiti Consentiti_2026-01-23 09:21:16.xml +3122 -0
  5. package/out/xml_data_for_ML - RISOLUZIONE CONTRATTUALE - Relazioni mancanti: Fasi - Workflow e Fasi - Esiti Consentiti_2026-01-23 09:25:03.xml +3122 -0
  6. package/out/xml_data_for_ML - RISOLUZIONE CONTRATTUALE - Relazioni mancanti: Fasi - Workflow e Fasi - Esiti Consentiti_2026-01-23 09:28:23.xml +3122 -0
  7. package/out/xml_data_for_ML - RISOLUZIONE CONTRATTUALE - Relazioni mancanti: Fasi - Workflow e Fasi - Esiti Consentiti_2026-01-23 09:31:30.xml +3122 -0
  8. package/out/xml_data_for_ML - RISOLUZIONE CONTRATTUALE - Relazioni mancanti: Fasi - Workflow e Fasi - Esiti Consentiti_2026-01-26 22:53:31.xml +3170 -0
  9. package/out/xml_data_for_ML - RISOLUZIONE CONTRATTUALE - Relazioni mancanti: Fasi - Workflow e Fasi - Esiti Consentiti_2026-01-29 09:38:23.xml +3170 -0
  10. package/out/xml_data_for_ML - RISOLUZIONE CONTRATTUALE_2026-01-23 09:21:17.xml +4160 -0
  11. package/out/xml_data_for_ML - RISOLUZIONE CONTRATTUALE_2026-01-23 09:25:05.xml +4160 -0
  12. package/out/xml_data_for_ML - RISOLUZIONE CONTRATTUALE_2026-01-23 09:28:25.xml +4160 -0
  13. package/out/xml_data_for_ML - RISOLUZIONE CONTRATTUALE_2026-01-23 09:31:31.xml +4160 -0
  14. package/out/xml_data_for_ML - RISOLUZIONE CONTRATTUALE_2026-01-26 22:53:34.xml +4208 -0
  15. package/out/xml_data_for_ML - RISOLUZIONE CONTRATTUALE_2026-01-29 09:38:25.xml +4208 -0
  16. package/out/xml_data_for_ML - Taglio Colonna Gas per Morosit/303/240 - Relazioni mancanti: Fasi - Workflow e Fasi - Esiti Consentiti_2026-01-26 22:57:38.xml" +2358 -0
  17. package/out/xml_data_for_ML - Taglio Colonna Gas per Morosit/303/240_2026-01-26 22:57:40.xml" +3667 -0
  18. package/package.json +31 -0
@@ -0,0 +1,3667 @@
1
+ <odoo>
2
+ <data>
3
+ <record id="symple_triplet_phase_A1938_-_Verifica_Compatibilit__Processi" model="symple.triplet.phase">
4
+ <field name="active">True</field>
5
+ <field name="child_case">False</field>
6
+ <field name="code">def main():
7
+ service_point = case_id.service_point_ids[0]
8
+ billing_profile = service_point.billing_profile_id
9
+ asset = service_point.asset(active=False)
10
+
11
+ if not asset:
12
+ asset_id = False
13
+ else:
14
+ asset_id = asset._id
15
+
16
+ (result, incompatible_case_ids) = ( # "OK" | "KO" | "PARTIAL_KO" # List[int]
17
+ case_id.check_compatibility_matrix(
18
+ asset_id=asset_id,
19
+ client_id=case_id.customer_id.user_sequence,
20
+ billing_id=billing_profile.name,
21
+ # external_id -> default a case.ticket_type_id.univocal_code
22
+ )
23
+ )
24
+
25
+ if incompatible_case_ids:
26
+ case_id.write({"incompatible_ticket_ids": incompatible_case_ids})
27
+
28
+ if result in ["OK", "PARTIAL_KO"]:
29
+ case_id.create_matrix_process(
30
+ asset_id=asset_id,
31
+ client_id=case_id.customer_id.user_sequence,
32
+ billing_id=billing_profile.name,
33
+ # external_id -> default a case.ticket_type_id.univocal_code
34
+ )
35
+
36
+ return result
37
+
38
+
39
+ try:
40
+ result = main()
41
+ except Exception as e:
42
+ log(format_exc())
43
+ case_id.write({"error_message": str(e)})</field>
44
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
45
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
46
+ <field name="is_a_postalizer_phase">False</field>
47
+ <field name="is_compute_refund">False</field>
48
+ <field name="is_dl">False</field>
49
+ <field name="is_needs_child_case">False</field>
50
+ <field name="is_pick_refund_template">False</field>
51
+ <field name="is_process_managed">False</field>
52
+ <field name="is_quote_accepted">False</field>
53
+ <field name="is_quote_sent">False</field>
54
+ <field name="is_timeout">False</field>
55
+ <field name="is_voidable">False</field>
56
+ <field name="name">A1938 - Verifica Compatibilità Processi</field>
57
+ <field name="set_result_automatically">from_code</field>
58
+ </record>
59
+ <record id="symple_triplet_phase_A1937_-_Verifica_Case_Incompatibile" model="symple.triplet.phase">
60
+ <field name="active">True</field>
61
+ <field name="child_case">False</field>
62
+ <field name="code"># Available variables:
63
+ # - case_id: the case that just reached this phase
64
+ # - request: allows you to make HTTP requests (method, url, headers, data)
65
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
66
+ # - json_load: allows you to use JSON.load to convert a json into an object
67
+ # - env: Odoo Environment on which the action is triggered
68
+ # - time, datetime, dateutil, timezone: useful Python libraries
69
+ # - float_compare: Odoo function to compare floats based on specific precisions
70
+ # - ValidationError: Warning Exception to use with raise
71
+ # - Command: x2Many commands namespace
72
+ # - OrderedDict: ordered dictionaries
73
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
74
+ # (line = case id, func = phase name)
75
+ # To return a result, assign: result = {...}
76
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
77
+ # phase result will not be set.
78
+
79
+
80
+
81
+ </field>
82
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','BOCR')])" />
83
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
84
+ <field name="is_a_postalizer_phase">False</field>
85
+ <field name="is_compute_refund">False</field>
86
+ <field name="is_dl">False</field>
87
+ <field name="is_needs_child_case">False</field>
88
+ <field name="is_pick_refund_template">False</field>
89
+ <field name="is_process_managed">False</field>
90
+ <field name="is_quote_accepted">False</field>
91
+ <field name="is_quote_sent">False</field>
92
+ <field name="is_timeout">False</field>
93
+ <field name="is_voidable">False</field>
94
+ <field name="name">A1937 - Verifica Case Incompatibile</field>
95
+ </record>
96
+ <record id="symple_triplet_phase_result_C2638_-_Incompatibilit__Bloccante_E-ML-GM08-3-0001" model="symple.triplet.phase.result">
97
+ <field name="active">True</field>
98
+ <field name="has_message">False</field>
99
+ <field name="is_annulment">False</field>
100
+ <field name="is_dl_solicitation_result">False</field>
101
+ <field name="is_hidden">False</field>
102
+ <field name="is_quote_expired">False</field>
103
+ <field name="name">C2638 - Incompatibilità Bloccante</field>
104
+ <field name="next_phase_id" ref="symple_triplet_phase_A1937_-_Verifica_Case_Incompatibile"/>
105
+ <field name="state_code">E-ML-GM08-3-0001</field>
106
+ <field name="wizard_result">KO</field>
107
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1938_-_Verifica_Compatibilit__Processi')])]"/>
108
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO')])" />
109
+ </record>
110
+ <record id="symple_triplet_phase_result_C2647_-_OK_-_Incompatibilit__Risolta_E-ML-GM08-3-0005" model="symple.triplet.phase.result">
111
+ <field name="active">True</field>
112
+ <field name="has_message">False</field>
113
+ <field name="is_annulment">False</field>
114
+ <field name="is_dl_solicitation_result">False</field>
115
+ <field name="is_hidden">False</field>
116
+ <field name="is_quote_expired">False</field>
117
+ <field name="name">C2647 - OK - Incompatibilità Risolta</field>
118
+ <field name="next_phase_id" ref="symple_triplet_phase_A1938_-_Verifica_Compatibilit__Processi"/>
119
+ <field name="state_code">E-ML-GM08-3-0005</field>
120
+ <field name="wizard_result">SUCCESS</field>
121
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1937_-_Verifica_Case_Incompatibile')])]"/>
122
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
123
+ </record>
124
+ <record id="symple_triplet_phase_A1311_-_Invio_Lettera__Extra_sistema_" model="symple.triplet.phase">
125
+ <field name="active">True</field>
126
+ <field name="child_case">False</field>
127
+ <field name="code"># Available variables:
128
+ # - case_id: the case that just reached this phase
129
+ # - request: allows you to make HTTP requests (method, url, headers, data)
130
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
131
+ # - json_load: allows you to use JSON.load to convert a json into an object
132
+ # - env: Odoo Environment on which the action is triggered
133
+ # - time, datetime, dateutil, timezone: useful Python libraries
134
+ # - float_compare: Odoo function to compare floats based on specific precisions
135
+ # - ValidationError: Warning Exception to use with raise
136
+ # - Command: x2Many commands namespace
137
+ # - OrderedDict: ordered dictionaries
138
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
139
+ # (line = case id, func = phase name)
140
+ # To return a result, assign: result = {...}
141
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
142
+ # phase result will not be set.
143
+
144
+
145
+
146
+ </field>
147
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','BOCR')])" />
148
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
149
+ <field name="is_a_postalizer_phase">False</field>
150
+ <field name="is_compute_refund">False</field>
151
+ <field name="is_dl">False</field>
152
+ <field name="is_needs_child_case">False</field>
153
+ <field name="is_pick_refund_template">False</field>
154
+ <field name="is_process_managed">False</field>
155
+ <field name="is_quote_accepted">False</field>
156
+ <field name="is_quote_sent">False</field>
157
+ <field name="is_timeout">False</field>
158
+ <field name="is_voidable">False</field>
159
+ <field name="name">A1311 - Invio Lettera (Extra sistema)</field>
160
+ </record>
161
+ <record id="symple_triplet_phase_result_C2639_-_Incompatibilit__Non_bloccante_E-ML-GM08-3-0002" model="symple.triplet.phase.result">
162
+ <field name="active">True</field>
163
+ <field name="has_message">False</field>
164
+ <field name="is_annulment">False</field>
165
+ <field name="is_dl_solicitation_result">False</field>
166
+ <field name="is_hidden">False</field>
167
+ <field name="is_quote_expired">False</field>
168
+ <field name="name">C2639 - Incompatibilità Non bloccante</field>
169
+ <field name="next_phase_id" ref="symple_triplet_phase_A1311_-_Invio_Lettera__Extra_sistema_"/>
170
+ <field name="state_code">E-ML-GM08-3-0002</field>
171
+ <field name="wizard_result">PARTIAL_KO</field>
172
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1938_-_Verifica_Compatibilit__Processi')])]"/>
173
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Partial KO')])" />
174
+ </record>
175
+ <record id="symple_triplet_phase_result_C2654_-_Processo_Compatibile_E-ML-GM08-3-0003" model="symple.triplet.phase.result">
176
+ <field name="active">True</field>
177
+ <field name="has_message">False</field>
178
+ <field name="is_annulment">False</field>
179
+ <field name="is_dl_solicitation_result">False</field>
180
+ <field name="is_hidden">False</field>
181
+ <field name="is_quote_expired">False</field>
182
+ <field name="name">C2654 - Processo Compatibile</field>
183
+ <field name="next_phase_id" ref="symple_triplet_phase_A1311_-_Invio_Lettera__Extra_sistema_"/>
184
+ <field name="state_code">E-ML-GM08-3-0003</field>
185
+ <field name="wizard_result">SUCCESS</field>
186
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1938_-_Verifica_Compatibilit__Processi')])]"/>
187
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
188
+ </record>
189
+ <record id="symple_triplet_phase_A1310_-_In_attesa_11_giorni_lavorativi" model="symple.triplet.phase">
190
+ <field name="active">True</field>
191
+ <field name="child_case">False</field>
192
+ <field name="code"># Available variables:
193
+ # - case_id: the case that just reached this phase
194
+ # - request: allows you to make HTTP requests (method, url, headers, data)
195
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
196
+ # - json_load: allows you to use JSON.load to convert a json into an object
197
+ # - env: Odoo Environment on which the action is triggered
198
+ # - time, datetime, dateutil, timezone: useful Python libraries
199
+ # - float_compare: Odoo function to compare floats based on specific precisions
200
+ # - ValidationError: Warning Exception to use with raise
201
+ # - Command: x2Many commands namespace
202
+ # - OrderedDict: ordered dictionaries
203
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
204
+ # (line = case id, func = phase name)
205
+ # To return a result, assign: result = {...}
206
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
207
+ # phase result will not be set.
208
+
209
+
210
+
211
+ </field>
212
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','BOCR')])" />
213
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
214
+ <field name="is_a_postalizer_phase">False</field>
215
+ <field name="is_compute_refund">False</field>
216
+ <field name="is_dl">False</field>
217
+ <field name="is_needs_child_case">False</field>
218
+ <field name="is_pick_refund_template">False</field>
219
+ <field name="is_process_managed">False</field>
220
+ <field name="is_quote_accepted">False</field>
221
+ <field name="is_quote_sent">False</field>
222
+ <field name="is_timeout">False</field>
223
+ <field name="is_voidable">False</field>
224
+ <field name="name">A1310 - In attesa 11 giorni lavorativi</field>
225
+ </record>
226
+ <record id="symple_triplet_phase_result_C1884_-_OK_-_Lettera_inviata_E-ML-GM08-3-0008" model="symple.triplet.phase.result">
227
+ <field name="active">True</field>
228
+ <field name="has_message">False</field>
229
+ <field name="is_annulment">False</field>
230
+ <field name="is_dl_solicitation_result">False</field>
231
+ <field name="is_hidden">False</field>
232
+ <field name="is_quote_expired">False</field>
233
+ <field name="name">C1884 - OK - Lettera inviata</field>
234
+ <field name="next_phase_id" ref="symple_triplet_phase_A1310_-_In_attesa_11_giorni_lavorativi"/>
235
+ <field name="state_code">E-ML-GM08-3-0008</field>
236
+ <field name="wizard_result">SUCCESS</field>
237
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1311_-_Invio_Lettera__Extra_sistema_')])]"/>
238
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
239
+ </record>
240
+ <record id="symple_triplet_phase_A1559_-_Invio_alla_Market_Communication" model="symple.triplet.phase">
241
+ <field name="active">True</field>
242
+ <field name="child_case">False</field>
243
+ <field name="code">try:
244
+ # get headers
245
+ tenant_id = env["ir.config_parameter"].sudo().get_param("m2c_header_tenant_id")
246
+ org_token = env["ir.config_parameter"].sudo().get_param("m2c_header_org_token")
247
+ headers = {"tenantId": tenant_id, "orgToken": org_token}
248
+
249
+ customer = case_id.customer_id
250
+
251
+ # fake data to be modified
252
+ ifs_dict = {
253
+ "ifs_code": "SMG2",
254
+ "case_id": str(case_id.id),
255
+ "ifs_data_message": {
256
+ "COD_SERVIZIO": "SMG2",
257
+ "COD_FLUSSO": "0050",
258
+ "OWNER": "SORGE",
259
+ "PIVA_DISTRIBUTORE": case_id.service_point_ids[
260
+ 0
261
+ ].pdr_id.distributor_id.numbers_only_vat,
262
+ "PRIORITA": "",
263
+ "SERV_UI": "NO",
264
+ "CF_CF": customer.fiscal_code if customer.is_individual_client else "",
265
+ "CF_PIVA": customer.numbers_only_vat if customer.is_company else "",
266
+ "COD_PDR": case_id.service_point_ids[0].pdr_id.code,
267
+ "NOTE": "",
268
+ },
269
+ }
270
+
271
+ ifs_json = json_dumps(ifs_dict)
272
+ btw_url = "http://b2w-symphony-rest-service/api/symphony/process-instances/ml_IFS_passthrough"
273
+ response = request("POST", btw_url, headers=headers, data=ifs_json)
274
+ if str(response.status_code) == "200":
275
+ result = "OK"
276
+ else:
277
+ message = str(response.status_code)
278
+ case_id.write(
279
+ {
280
+ "info_message": (
281
+ (case_id.info_message + "\n" + message + str(response.text))
282
+ if case_id.info_message
283
+ else message + str(response.text)
284
+ )
285
+ }
286
+ )
287
+ except Exception as e:
288
+ case_id.write(
289
+ {
290
+ "info_message": (
291
+ (case_id.info_message + "\n" + str(e))
292
+ if case_id.info_message
293
+ else str(e)
294
+ )
295
+ }
296
+ )</field>
297
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
298
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
299
+ <field name="is_a_postalizer_phase">False</field>
300
+ <field name="is_compute_refund">False</field>
301
+ <field name="is_dl">False</field>
302
+ <field name="is_needs_child_case">False</field>
303
+ <field name="is_pick_refund_template">False</field>
304
+ <field name="is_process_managed">False</field>
305
+ <field name="is_quote_accepted">False</field>
306
+ <field name="is_quote_sent">False</field>
307
+ <field name="is_timeout">False</field>
308
+ <field name="is_voidable">False</field>
309
+ <field name="name">A1559 - Invio alla Market Communication</field>
310
+ <field name="set_result_automatically">from_code</field>
311
+ </record>
312
+ <record id="symple_triplet_phase_result_C1887_-_OK_-_Avanzamento_dopo_11_giorni_E-ML-GM08-3-0012" model="symple.triplet.phase.result">
313
+ <field name="active">True</field>
314
+ <field name="has_message">False</field>
315
+ <field name="is_annulment">False</field>
316
+ <field name="is_dl_solicitation_result">False</field>
317
+ <field name="is_hidden">False</field>
318
+ <field name="is_quote_expired">False</field>
319
+ <field name="name">C1887 - OK - Avanzamento dopo 11 giorni</field>
320
+ <field name="next_phase_id" ref="symple_triplet_phase_A1559_-_Invio_alla_Market_Communication"/>
321
+ <field name="state_code">E-ML-GM08-3-0012</field>
322
+ <field name="wizard_result">SUCCESS</field>
323
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1310_-_In_attesa_11_giorni_lavorativi')])]"/>
324
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
325
+ </record>
326
+ <record id="symple_triplet_phase_A1715_-_In_attesa_check_IFS" model="symple.triplet.phase">
327
+ <field name="active">True</field>
328
+ <field name="child_case">False</field>
329
+ <field name="code"># Available variables:
330
+ # - case_id: the case that just reached this phase
331
+ # - request: allows you to make HTTP requests (method, url, headers, data)
332
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
333
+ # - json_load: allows you to use JSON.load to convert a json into an object
334
+ # - env: Odoo Environment on which the action is triggered
335
+ # - time, datetime, dateutil, timezone: useful Python libraries
336
+ # - float_compare: Odoo function to compare floats based on specific precisions
337
+ # - ValidationError: Warning Exception to use with raise
338
+ # - Command: x2Many commands namespace
339
+ # - OrderedDict: ordered dictionaries
340
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
341
+ # (line = case id, func = phase name)
342
+ # To return a result, assign: result = {...}
343
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
344
+ # phase result will not be set.
345
+
346
+
347
+
348
+ </field>
349
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','BOCR')])" />
350
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
351
+ <field name="is_a_postalizer_phase">False</field>
352
+ <field name="is_compute_refund">False</field>
353
+ <field name="is_dl">False</field>
354
+ <field name="is_needs_child_case">False</field>
355
+ <field name="is_pick_refund_template">False</field>
356
+ <field name="is_process_managed">False</field>
357
+ <field name="is_quote_accepted">False</field>
358
+ <field name="is_quote_sent">False</field>
359
+ <field name="is_timeout">False</field>
360
+ <field name="is_voidable">False</field>
361
+ <field name="name">A1715 - In attesa check IFS</field>
362
+ </record>
363
+ <record id="symple_triplet_phase_result_C2458_-_OK_Inviata_E-ML-GM08-3-0015" model="symple.triplet.phase.result">
364
+ <field name="active">True</field>
365
+ <field name="has_message">False</field>
366
+ <field name="is_annulment">False</field>
367
+ <field name="is_dl_solicitation_result">False</field>
368
+ <field name="is_hidden">False</field>
369
+ <field name="is_quote_expired">False</field>
370
+ <field name="name">C2458 - OK Inviata</field>
371
+ <field name="next_phase_id" ref="symple_triplet_phase_A1715_-_In_attesa_check_IFS"/>
372
+ <field name="state_code">E-ML-GM08-3-0015</field>
373
+ <field name="wizard_result">SUCCESS</field>
374
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1559_-_Invio_alla_Market_Communication')])]"/>
375
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
376
+ </record>
377
+ <record id="symple_triplet_phase_A1717_-_Gestione_scarti_da_cruscotto" model="symple.triplet.phase">
378
+ <field name="active">True</field>
379
+ <field name="child_case">False</field>
380
+ <field name="code"># Available variables:
381
+ # - case_id: the case that just reached this phase
382
+ # - request: allows you to make HTTP requests (method, url, headers, data)
383
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
384
+ # - json_load: allows you to use JSON.load to convert a json into an object
385
+ # - env: Odoo Environment on which the action is triggered
386
+ # - time, datetime, dateutil, timezone: useful Python libraries
387
+ # - float_compare: Odoo function to compare floats based on specific precisions
388
+ # - ValidationError: Warning Exception to use with raise
389
+ # - Command: x2Many commands namespace
390
+ # - OrderedDict: ordered dictionaries
391
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
392
+ # (line = case id, func = phase name)
393
+ # To return a result, assign: result = {...}
394
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
395
+ # phase result will not be set.
396
+
397
+
398
+
399
+ </field>
400
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
401
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
402
+ <field name="is_a_postalizer_phase">False</field>
403
+ <field name="is_compute_refund">False</field>
404
+ <field name="is_dl">False</field>
405
+ <field name="is_needs_child_case">False</field>
406
+ <field name="is_pick_refund_template">False</field>
407
+ <field name="is_process_managed">False</field>
408
+ <field name="is_quote_accepted">False</field>
409
+ <field name="is_quote_sent">False</field>
410
+ <field name="is_timeout">False</field>
411
+ <field name="is_voidable">False</field>
412
+ <field name="name">A1717 - Gestione scarti da cruscotto</field>
413
+ </record>
414
+ <record id="symple_triplet_phase_result_C2225_-_KO_-_Ammissibilit__Hub_E-ML-GM08-3-0018" model="symple.triplet.phase.result">
415
+ <field name="active">True</field>
416
+ <field name="has_message">False</field>
417
+ <field name="is_annulment">False</field>
418
+ <field name="is_dl_solicitation_result">False</field>
419
+ <field name="is_hidden">True</field>
420
+ <field name="is_quote_expired">False</field>
421
+ <field name="name">C2225 - KO - Ammissibilità Hub</field>
422
+ <field name="next_phase_id" ref="symple_triplet_phase_A1717_-_Gestione_scarti_da_cruscotto"/>
423
+ <field name="state_code">E-ML-GM08-3-0018</field>
424
+ <field name="wizard_result">KO-HUB</field>
425
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1715_-_In_attesa_check_IFS')])]"/>
426
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO-HUB')])" />
427
+ </record>
428
+ <record id="symple_triplet_phase_result_C2416_-_Risottomessa_da_cruscotto_E-ML-GM08-3-0020" model="symple.triplet.phase.result">
429
+ <field name="active">True</field>
430
+ <field name="has_message">False</field>
431
+ <field name="is_annulment">False</field>
432
+ <field name="is_dl_solicitation_result">False</field>
433
+ <field name="is_hidden">False</field>
434
+ <field name="is_quote_expired">False</field>
435
+ <field name="name">C2416 - Risottomessa da cruscotto</field>
436
+ <field name="next_phase_id" ref="symple_triplet_phase_A1715_-_In_attesa_check_IFS"/>
437
+ <field name="state_code">E-ML-GM08-3-0020</field>
438
+ <field name="wizard_result">RESUBMIT</field>
439
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1717_-_Gestione_scarti_da_cruscotto')])]"/>
440
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Resubmit')])" />
441
+ </record>
442
+ <record id="symple_triplet_phase_A0823_-_Inserimento_richiesta_sul_Portale_del_DL" model="symple.triplet.phase">
443
+ <field name="active">True</field>
444
+ <field name="child_case">False</field>
445
+ <field name="code"># Available variables:
446
+ # - case_id: the case that just reached this phase
447
+ # - request: allows you to make HTTP requests (method, url, headers, data)
448
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
449
+ # - json_load: allows you to use JSON.load to convert a json into an object
450
+ # - env: Odoo Environment on which the action is triggered
451
+ # - time, datetime, dateutil, timezone: useful Python libraries
452
+ # - float_compare: Odoo function to compare floats based on specific precisions
453
+ # - ValidationError: Warning Exception to use with raise
454
+ # - Command: x2Many commands namespace
455
+ # - OrderedDict: ordered dictionaries
456
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
457
+ # (line = case id, func = phase name)
458
+ # To return a result, assign: result = {...}
459
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
460
+ # phase result will not be set.
461
+
462
+
463
+
464
+ </field>
465
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','BOCR')])" />
466
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
467
+ <field name="is_a_postalizer_phase">False</field>
468
+ <field name="is_compute_refund">False</field>
469
+ <field name="is_dl">False</field>
470
+ <field name="is_needs_child_case">False</field>
471
+ <field name="is_pick_refund_template">False</field>
472
+ <field name="is_process_managed">False</field>
473
+ <field name="is_quote_accepted">False</field>
474
+ <field name="is_quote_sent">False</field>
475
+ <field name="is_timeout">False</field>
476
+ <field name="is_voidable">False</field>
477
+ <field name="name">A0823 - Inserimento richiesta sul Portale del DL</field>
478
+ </record>
479
+ <record id="symple_triplet_phase_result_C2224_-_OK_-_Ammissibilit__Hub_E-ML-GM08-3-0017" model="symple.triplet.phase.result">
480
+ <field name="active">True</field>
481
+ <field name="has_message">False</field>
482
+ <field name="is_annulment">False</field>
483
+ <field name="is_dl_solicitation_result">False</field>
484
+ <field name="is_hidden">True</field>
485
+ <field name="is_quote_expired">False</field>
486
+ <field name="name">C2224 - OK - Ammissibilità Hub</field>
487
+ <field name="next_phase_id" ref="symple_triplet_phase_A0823_-_Inserimento_richiesta_sul_Portale_del_DL"/>
488
+ <field name="state_code">E-ML-GM08-3-0017</field>
489
+ <field name="wizard_result">OK-HUB</field>
490
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1715_-_In_attesa_check_IFS')])]"/>
491
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','OK-HUB')])" />
492
+ </record>
493
+ <record id="symple_triplet_phase_A1880_-_Verifica_Tipologia_di_Comunicazione" model="symple.triplet.phase">
494
+ <field name="active">True</field>
495
+ <field name="child_case">False</field>
496
+ <field name="code"># Available variables:
497
+ # - case_id: the case that just reached this phase
498
+ # - request: allows you to make HTTP requests (method, url, headers, data)
499
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
500
+ # - json_load: allows you to use JSON.load to convert a json into an object
501
+ # - env: Odoo Environment on which the action is triggered
502
+ # - time, datetime, dateutil, timezone: useful Python libraries
503
+ # - float_compare: Odoo function to compare floats based on specific precisions
504
+ # - ValidationError: Warning Exception to use with raise
505
+ # - Command: x2Many commands namespace
506
+ # - OrderedDict: ordered dictionaries
507
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
508
+ # (line = case id, func = phase name)
509
+ # To return a result, assign: result = {...}
510
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
511
+ # phase result will not be set.
512
+
513
+
514
+
515
+ </field>
516
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
517
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
518
+ <field name="is_a_postalizer_phase">False</field>
519
+ <field name="is_compute_refund">False</field>
520
+ <field name="is_dl">False</field>
521
+ <field name="is_needs_child_case">False</field>
522
+ <field name="is_pick_refund_template">False</field>
523
+ <field name="is_process_managed">False</field>
524
+ <field name="is_quote_accepted">False</field>
525
+ <field name="is_quote_sent">False</field>
526
+ <field name="is_timeout">False</field>
527
+ <field name="is_voidable">False</field>
528
+ <field name="name">A1880 - Verifica Tipologia di Comunicazione</field>
529
+ </record>
530
+ <record id="symple_triplet_phase_A0816_-_In_attesa_esito_ammissibilit_" model="symple.triplet.phase">
531
+ <field name="active">True</field>
532
+ <field name="child_case">False</field>
533
+ <field name="code"># Available variables:
534
+ # - case_id: the case that just reached this phase
535
+ # - request: allows you to make HTTP requests (method, url, headers, data)
536
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
537
+ # - json_load: allows you to use JSON.load to convert a json into an object
538
+ # - env: Odoo Environment on which the action is triggered
539
+ # - time, datetime, dateutil, timezone: useful Python libraries
540
+ # - float_compare: Odoo function to compare floats based on specific precisions
541
+ # - ValidationError: Warning Exception to use with raise
542
+ # - Command: x2Many commands namespace
543
+ # - OrderedDict: ordered dictionaries
544
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
545
+ # (line = case id, func = phase name)
546
+ # To return a result, assign: result = {...}
547
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
548
+ # phase result will not be set.
549
+
550
+
551
+
552
+ </field>
553
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','BOCR')])" />
554
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
555
+ <field name="is_a_postalizer_phase">False</field>
556
+ <field name="is_compute_refund">False</field>
557
+ <field name="is_dl">False</field>
558
+ <field name="is_needs_child_case">False</field>
559
+ <field name="is_pick_refund_template">False</field>
560
+ <field name="is_process_managed">False</field>
561
+ <field name="is_quote_accepted">False</field>
562
+ <field name="is_quote_sent">False</field>
563
+ <field name="is_timeout">False</field>
564
+ <field name="is_voidable">False</field>
565
+ <field name="name">A0816 - In attesa esito ammissibilità</field>
566
+ </record>
567
+ <record id="symple_triplet_phase_result_C3117_-_OK_pratica_inserita_E-ML-GM08-3-0023" model="symple.triplet.phase.result">
568
+ <field name="active">True</field>
569
+ <field name="has_message">False</field>
570
+ <field name="is_annulment">False</field>
571
+ <field name="is_dl_solicitation_result">False</field>
572
+ <field name="is_hidden">True</field>
573
+ <field name="is_quote_expired">False</field>
574
+ <field name="name">C3117 - OK pratica inserita</field>
575
+ <field name="next_phase_id" ref="symple_triplet_phase_A0816_-_In_attesa_esito_ammissibilit_"/>
576
+ <field name="state_code">E-ML-GM08-3-0023</field>
577
+ <field name="wizard_result">SUCCESS</field>
578
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0823_-_Inserimento_richiesta_sul_Portale_del_DL')])]"/>
579
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
580
+ </record>
581
+ <record id="symple_triplet_phase_result_C3119_-_gestione_manuale_E-ML-GM08-3-0024" model="symple.triplet.phase.result">
582
+ <field name="active">True</field>
583
+ <field name="has_message">False</field>
584
+ <field name="is_annulment">False</field>
585
+ <field name="is_dl_solicitation_result">False</field>
586
+ <field name="is_hidden">True</field>
587
+ <field name="is_quote_expired">False</field>
588
+ <field name="name">C3119 - gestione manuale</field>
589
+ <field name="next_phase_id" ref="symple_triplet_phase_A0816_-_In_attesa_esito_ammissibilit_"/>
590
+ <field name="state_code">E-ML-GM08-3-0024</field>
591
+ <field name="wizard_result">KO-0050</field>
592
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0823_-_Inserimento_richiesta_sul_Portale_del_DL')])]"/>
593
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO-0050')])" />
594
+ </record>
595
+ <record id="symple_triplet_phase_result_C2602_-_Tipologia_RPA_E-ML-GM08-3-0027" model="symple.triplet.phase.result">
596
+ <field name="active">True</field>
597
+ <field name="has_message">False</field>
598
+ <field name="is_annulment">False</field>
599
+ <field name="is_dl_solicitation_result">False</field>
600
+ <field name="is_hidden">False</field>
601
+ <field name="is_quote_expired">False</field>
602
+ <field name="name">C2602 - Tipologia RPA</field>
603
+ <field name="next_phase_id" ref="symple_triplet_phase_A0816_-_In_attesa_esito_ammissibilit_"/>
604
+ <field name="state_code">E-ML-GM08-3-0027</field>
605
+ <field name="wizard_result">SUCCESS</field>
606
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1880_-_Verifica_Tipologia_di_Comunicazione')])]"/>
607
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
608
+ </record>
609
+ <record id="symple_triplet_phase_result_C1038_-_Ammissibilit__KO_E-ML-GM08-3-0031" model="symple.triplet.phase.result">
610
+ <field name="active">True</field>
611
+ <field name="has_message">False</field>
612
+ <field name="is_annulment">False</field>
613
+ <field name="is_dl_solicitation_result">False</field>
614
+ <field name="is_hidden">False</field>
615
+ <field name="is_quote_expired">False</field>
616
+ <field name="name">C1038 - Ammissibilità KO</field>
617
+ <field name="next_phase_id" ref="symple_triplet_phase_A1717_-_Gestione_scarti_da_cruscotto"/>
618
+ <field name="state_code">E-ML-GM08-3-0031</field>
619
+ <field name="wizard_result">KO-100</field>
620
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0816_-_In_attesa_esito_ammissibilit_')])]"/>
621
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO-100')])" />
622
+ </record>
623
+ <record id="symple_triplet_phase_A1761_-_Verifica_Inserimento_richiesta_su_Portale_DL" model="symple.triplet.phase">
624
+ <field name="active">True</field>
625
+ <field name="child_case">False</field>
626
+ <field name="code"># Available variables:
627
+ # - case_id: the case that just reached this phase
628
+ # - request: allows you to make HTTP requests (method, url, headers, data)
629
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
630
+ # - json_load: allows you to use JSON.load to convert a json into an object
631
+ # - env: Odoo Environment on which the action is triggered
632
+ # - time, datetime, dateutil, timezone: useful Python libraries
633
+ # - float_compare: Odoo function to compare floats based on specific precisions
634
+ # - ValidationError: Warning Exception to use with raise
635
+ # - Command: x2Many commands namespace
636
+ # - OrderedDict: ordered dictionaries
637
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
638
+ # (line = case id, func = phase name)
639
+ # To return a result, assign: result = {...}
640
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
641
+ # phase result will not be set.
642
+
643
+
644
+
645
+ </field>
646
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','BOCR')])" />
647
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
648
+ <field name="is_a_postalizer_phase">False</field>
649
+ <field name="is_compute_refund">False</field>
650
+ <field name="is_dl">False</field>
651
+ <field name="is_needs_child_case">False</field>
652
+ <field name="is_pick_refund_template">False</field>
653
+ <field name="is_process_managed">False</field>
654
+ <field name="is_quote_accepted">False</field>
655
+ <field name="is_quote_sent">False</field>
656
+ <field name="is_timeout">False</field>
657
+ <field name="is_voidable">False</field>
658
+ <field name="name">A1761 - Verifica Inserimento richiesta su Portale DL</field>
659
+ </record>
660
+ <record id="symple_triplet_phase_result_C1035_-_Inserita_richiesta_sul_portale_del_DL_E-ML-GM08-3-0034" model="symple.triplet.phase.result">
661
+ <field name="active">True</field>
662
+ <field name="has_message">False</field>
663
+ <field name="is_annulment">False</field>
664
+ <field name="is_dl_solicitation_result">False</field>
665
+ <field name="is_hidden">False</field>
666
+ <field name="is_quote_expired">False</field>
667
+ <field name="name">C1035 - Inserita richiesta sul portale del DL</field>
668
+ <field name="next_phase_id" ref="symple_triplet_phase_A1880_-_Verifica_Tipologia_di_Comunicazione"/>
669
+ <field name="state_code">E-ML-GM08-3-0034</field>
670
+ <field name="wizard_result">SUCCESS</field>
671
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1761_-_Verifica_Inserimento_richiesta_su_Portale_DL')])]"/>
672
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
673
+ </record>
674
+ <record id="symple_triplet_phase_result_C2463_-_Gestito_Fuori_linea_E-ML-GM08-3-0035" model="symple.triplet.phase.result">
675
+ <field name="active">True</field>
676
+ <field name="has_message">False</field>
677
+ <field name="is_annulment">False</field>
678
+ <field name="is_dl_solicitation_result">False</field>
679
+ <field name="is_hidden">False</field>
680
+ <field name="is_quote_expired">False</field>
681
+ <field name="name">C2463 - Gestito Fuori linea</field>
682
+ <field name="next_phase_id" ref="symple_triplet_phase_A1880_-_Verifica_Tipologia_di_Comunicazione"/>
683
+ <field name="state_code">E-ML-GM08-3-0035</field>
684
+ <field name="wizard_result">SUCCESS</field>
685
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1761_-_Verifica_Inserimento_richiesta_su_Portale_DL')])]"/>
686
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
687
+ </record>
688
+ <record id="symple_triplet_phase_A0825_-_In_attesa_Esito_finale" model="symple.triplet.phase">
689
+ <field name="active">True</field>
690
+ <field name="child_case">False</field>
691
+ <field name="code"># Available variables:
692
+ # - case_id: the case that just reached this phase
693
+ # - request: allows you to make HTTP requests (method, url, headers, data)
694
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
695
+ # - json_load: allows you to use JSON.load to convert a json into an object
696
+ # - env: Odoo Environment on which the action is triggered
697
+ # - time, datetime, dateutil, timezone: useful Python libraries
698
+ # - float_compare: Odoo function to compare floats based on specific precisions
699
+ # - ValidationError: Warning Exception to use with raise
700
+ # - Command: x2Many commands namespace
701
+ # - OrderedDict: ordered dictionaries
702
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
703
+ # (line = case id, func = phase name)
704
+ # To return a result, assign: result = {...}
705
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
706
+ # phase result will not be set.
707
+
708
+
709
+
710
+ </field>
711
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','BOCR')])" />
712
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
713
+ <field name="is_a_postalizer_phase">False</field>
714
+ <field name="is_compute_refund">False</field>
715
+ <field name="is_dl">False</field>
716
+ <field name="is_needs_child_case">False</field>
717
+ <field name="is_pick_refund_template">False</field>
718
+ <field name="is_process_managed">False</field>
719
+ <field name="is_quote_accepted">False</field>
720
+ <field name="is_quote_sent">False</field>
721
+ <field name="is_timeout">False</field>
722
+ <field name="is_voidable">True</field>
723
+ <field name="name">A0825 - In attesa Esito finale</field>
724
+ </record>
725
+ <record id="symple_triplet_phase_result_C2603_-_Tipologia_PEC_E-ML-GM08-3-0028" model="symple.triplet.phase.result">
726
+ <field name="active">True</field>
727
+ <field name="has_message">False</field>
728
+ <field name="is_annulment">False</field>
729
+ <field name="is_dl_solicitation_result">False</field>
730
+ <field name="is_hidden">False</field>
731
+ <field name="is_quote_expired">False</field>
732
+ <field name="name">C2603 - Tipologia PEC</field>
733
+ <field name="next_phase_id" ref="symple_triplet_phase_A0825_-_In_attesa_Esito_finale"/>
734
+ <field name="state_code">E-ML-GM08-3-0028</field>
735
+ <field name="wizard_result">SUCCESS</field>
736
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1880_-_Verifica_Tipologia_di_Comunicazione')])]"/>
737
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
738
+ </record>
739
+ <record id="symple_triplet_phase_result_C1037_-_Ammissibilit__OK_E-ML-GM08-3-0030" model="symple.triplet.phase.result">
740
+ <field name="active">True</field>
741
+ <field name="has_message">False</field>
742
+ <field name="is_annulment">False</field>
743
+ <field name="is_dl_solicitation_result">False</field>
744
+ <field name="is_hidden">False</field>
745
+ <field name="is_quote_expired">False</field>
746
+ <field name="name">C1037 - Ammissibilità OK</field>
747
+ <field name="next_phase_id" ref="symple_triplet_phase_A0825_-_In_attesa_Esito_finale"/>
748
+ <field name="state_code">E-ML-GM08-3-0030</field>
749
+ <field name="wizard_result">OK-100</field>
750
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0816_-_In_attesa_esito_ammissibilit_')])]"/>
751
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','OK-100')])" />
752
+ </record>
753
+ <record id="symple_triplet_phase_result_C1043_-_Esito_finale_KO_E-ML-GM08-3-0038" model="symple.triplet.phase.result">
754
+ <field name="active">True</field>
755
+ <field name="has_message">False</field>
756
+ <field name="is_annulment">False</field>
757
+ <field name="is_dl_solicitation_result">False</field>
758
+ <field name="is_hidden">True</field>
759
+ <field name="is_quote_expired">False</field>
760
+ <field name="name">C1043 - Esito finale KO</field>
761
+ <field name="next_phase_id" ref="symple_triplet_phase_A1717_-_Gestione_scarti_da_cruscotto"/>
762
+ <field name="state_code">E-ML-GM08-3-0038</field>
763
+ <field name="wizard_result">KO-150</field>
764
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0825_-_In_attesa_Esito_finale')])]"/>
765
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO-150')])" />
766
+ </record>
767
+ <record id="symple_triplet_phase_result_C2655_-_Richiesta_Gestione_Sollecito_E-ML-GM08-3-0039" model="symple.triplet.phase.result">
768
+ <field name="active">True</field>
769
+ <field name="has_message">False</field>
770
+ <field name="is_annulment">False</field>
771
+ <field name="is_dl_solicitation_result">False</field>
772
+ <field name="is_hidden">False</field>
773
+ <field name="is_quote_expired">False</field>
774
+ <field name="name">C2655 - Richiesta Gestione Sollecito</field>
775
+ <field name="next_phase_id" ref="symple_triplet_phase_A0825_-_In_attesa_Esito_finale"/>
776
+ <field name="state_code">E-ML-GM08-3-0039</field>
777
+ <field name="wizard_result">Manuale</field>
778
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0825_-_In_attesa_Esito_finale')])]"/>
779
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Manuale')])" />
780
+ </record>
781
+ <record id="symple_triplet_phase_A1312_-_Controlli_CRM_per_Taglio_Colonna" model="symple.triplet.phase">
782
+ <field name="active">True</field>
783
+ <field name="child_case">False</field>
784
+ <field name="code"># Available variables:
785
+ # - case_id: the case that just reached this phase
786
+ # - request: allows you to make HTTP requests (method, url, headers, data)
787
+ # - json_dumps: allows you to use JSON.dumps to converto object to json
788
+ # - env: Odoo Environment on which the action is triggered
789
+ # - time, datetime, dateutil, timezone: useful Python libraries
790
+ # - float_compare: Odoo function to compare floats based on specific precisions
791
+ # - ValidationError: Warning Exception to use with raise
792
+ # - Command: x2Many commands namespace
793
+ # - OrderedDict: ordered dictionaries
794
+ # To return a result, assign: result = {...}
795
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
796
+ # phase result will not be set.
797
+
798
+ logs = []
799
+ IrConfigParam = env["ir.config_parameter"]
800
+
801
+
802
+ def get_assets(client_id, code):
803
+ token = IrConfigParam.get_b2w_access_token()
804
+ url = IrConfigParam.get_param("b2w_order_management_endpoint") + "assets"
805
+ headers = {"Authorization": "Bearer " + token, "Content-Type": "application/json"}
806
+
807
+ body = json_dumps(
808
+ {
809
+ "filters": [
810
+ {"field": "accountcode", "type": "=", "value": str(client_id)},
811
+ {"field": "type", "type": "=", "value": "product"},
812
+ {"field": "podcode", "type": "=", "value": code},
813
+ ],
814
+ "sorters": [{"field": "created_date", "direction": "desc"}],
815
+ "page": 1,
816
+ "size": 999999,
817
+ }
818
+ )
819
+
820
+ response = request("POST", url, headers=headers, data=body)
821
+
822
+ if response.status_code != 200:
823
+ try:
824
+ logs.append({"message": "response json", "data": response.json()})
825
+ except Exception:
826
+ logs.append({"message": "response text", "data": response.text})
827
+
828
+ raise Exception("Non è stato possibile scaricare gli asset")
829
+
830
+ json = response.json()
831
+ return json.get("items", [])
832
+
833
+
834
+ def all_disconnected(assets):
835
+ for asset in assets:
836
+ if asset.get("sm_state") != "cessato":
837
+ return False
838
+ return True
839
+
840
+
841
+ def disconnectable(assets):
842
+ r = []
843
+ for asset in assets:
844
+ if asset.get("sm_state") == "attivo":
845
+ r.append(asset)
846
+ return r
847
+
848
+
849
+ try:
850
+ client_id = case_id.customer_id.id
851
+ if not case_id.pdr_ids:
852
+ raise ValidationError("Non è possibile creare un case di Morosità senza POD")
853
+
854
+ if not case_id.service_point_ids:
855
+ raise ValidationError("Nessun service point trovato per il POD")
856
+
857
+ point = case_id.pod_ids[0] if case_id.pod_ids else case_id.pdr_ids[0]
858
+
859
+ assets = get_assets(client_id, point.code)
860
+ d = disconnectable(assets)
861
+ case_id.sudo().kv_store().set("assets", d)
862
+
863
+ if len(assets) == 0:
864
+ case_id.write(
865
+ {
866
+ "error_message": "The POD {} does not exist in the CRM".format(
867
+ point.code,
868
+ )
869
+ }
870
+ )
871
+ elif all_disconnected(assets):
872
+ raise ValidationError("PDR already disconnected")
873
+ else:
874
+ if len(d) > 1:
875
+ raise ValidationError("More than one POD instance active in the CRM")
876
+ else:
877
+ result = "OK"
878
+
879
+
880
+ except Exception as inst:
881
+ case_id.write({"error_message": str(inst)})
882
+ logs.append(
883
+ {
884
+ "message": "Exception occurred",
885
+ "data": {"exception": str(inst), "traceback": format_exc()},
886
+ }
887
+ )
888
+
889
+ if logs:
890
+ log(json_dumps(logs, indent=2))</field>
891
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
892
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
893
+ <field name="is_a_postalizer_phase">False</field>
894
+ <field name="is_compute_refund">False</field>
895
+ <field name="is_dl">False</field>
896
+ <field name="is_needs_child_case">False</field>
897
+ <field name="is_pick_refund_template">False</field>
898
+ <field name="is_process_managed">False</field>
899
+ <field name="is_quote_accepted">False</field>
900
+ <field name="is_quote_sent">False</field>
901
+ <field name="is_timeout">False</field>
902
+ <field name="is_voidable">False</field>
903
+ <field name="name">A1312 - Controlli CRM per Taglio Colonna</field>
904
+ <field name="set_result_automatically">from_code</field>
905
+ </record>
906
+ <record id="symple_triplet_phase_A1316_-_CRM_-_Creazione_Ordine_per_Taglio_Colonna" model="symple.triplet.phase">
907
+ <field name="active">True</field>
908
+ <field name="child_case">False</field>
909
+ <field name="code"># Available variables:
910
+ # - case_id: the case that just reached this phase
911
+ # - request: allows you to make HTTP requests (method, url, headers, data)
912
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
913
+ # - json_load: allows you to use JSON.load to convert a json into an object
914
+ # - env: Odoo Environment on which the action is triggered
915
+ # - time, datetime, dateutil, timezone: useful Python libraries
916
+ # - float_compare: Odoo function to compare floats based on specific precisions
917
+ # - ValidationError: Warning Exception to use with raise
918
+ # - Command: x2Many commands namespace
919
+ # - OrderedDict: ordered dictionaries
920
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
921
+ # (line = case id, func = phase name)
922
+ # To return a result, assign: result = {...}
923
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
924
+ # phase result will not be set.
925
+
926
+ logs = []
927
+
928
+
929
+ def log_and_parse_response(response, log_message):
930
+ try:
931
+ json_data = response.json()
932
+ logs.append({"message": log_message, "data": json_data})
933
+ return json_data
934
+ except Exception:
935
+ logs.append({"message": log_message, "response_text": response.text})
936
+ return response.text
937
+
938
+
939
+ def get_asset(code):
940
+ assets = env["ir.config_parameter"].get_assets(
941
+ asset_id=None,
942
+ additional_params={"prcode": code, "assetstatus": "Active", "rootvid": "null"},
943
+ )
944
+
945
+ return assets[0]
946
+
947
+
948
+ def create_order_disconnect(asset_id, token):
949
+ url = "http://b2w-cpq-order-management-service/v1/order"
950
+ headers = {
951
+ "X-Auth-Request-Access-Token": "" + token,
952
+ "Content-Type": "application/json",
953
+ "generatesession": "true",
954
+ }
955
+ body = {
956
+ "obj_type": "Order",
957
+ "crm_accountcode": case_id.customer_id.user_sequence,
958
+ "accountcode": str(case_id.customer_id.id),
959
+ "type": "Disconnect",
960
+ "subtype": case_id.ticket_type_id.name,
961
+ "industry": "BSP Utility",
962
+ "commodity": "power" if case_id.service_point_ids[0].pod_id else "gas",
963
+ "order_date": datetime.datetime.now().strftime("%Y-%m-%d"),
964
+ "contract": True,
965
+ "singlecontract": True,
966
+ "assets": [asset_id],
967
+ "options": {
968
+ "userLanguage": "en-US",
969
+ "remotePagination": True,
970
+ "itemsForPage": 10,
971
+ "cartItemsForPage": 10,
972
+ },
973
+ }
974
+
975
+ logs.append(
976
+ {"message": "Creating order", "data": {"body": body, "headers": headers}}
977
+ )
978
+
979
+ response = request("POST", url, headers=headers, data=json_dumps(body))
980
+ json = log_and_parse_response(
981
+ response,
982
+ "Order creation response",
983
+ )
984
+
985
+ if response.status_code != 200:
986
+ raise ValidationError("Failed to create order")
987
+
988
+ return json
989
+
990
+
991
+ def bind_catalog(config_id, catalog_id, token):
992
+ logs.append(
993
+ {
994
+ "message": "Binding catalog and order",
995
+ "data": {
996
+ "config_id": config_id,
997
+ "catalog_id": catalog_id,
998
+ },
999
+ }
1000
+ )
1001
+
1002
+ headers = {
1003
+ "X-Auth-Request-Access-Token": "" + token,
1004
+ "Content-Type": "application/json",
1005
+ "generatesession": "true",
1006
+ }
1007
+ url = "http://b2w-cpq-catalog-navigator-node-service/v1/configurations/{}/catalogs/{}".format(
1008
+ config_id, catalog_id
1009
+ )
1010
+
1011
+ response = request("GET", url, headers=headers)
1012
+ json = log_and_parse_response(
1013
+ response,
1014
+ "Catalog binding response",
1015
+ )
1016
+
1017
+ if response.status_code != 200:
1018
+ raise ValidationError("Failed to set catalog id on order")
1019
+
1020
+ return json
1021
+
1022
+
1023
+ def checkout(config_id, token):
1024
+ logs.append(
1025
+ {
1026
+ "message": "Binding catalog and order",
1027
+ "data": {
1028
+ "config_id": config_id,
1029
+ },
1030
+ }
1031
+ )
1032
+
1033
+ headers = {
1034
+ "X-Auth-Request-Access-Token": "" + token,
1035
+ "Content-Type": "application/json",
1036
+ "generatesession": "true",
1037
+ }
1038
+ url = "http://b2w-cpq-order-management-service/v1/order/{}".format(config_id)
1039
+
1040
+ response = request("POST", url, headers=headers, data="{}")
1041
+ json = log_and_parse_response(
1042
+ response,
1043
+ "Checkout response",
1044
+ )
1045
+
1046
+ if response.status_code != 200:
1047
+ raise ValidationError("Failed to checkout")
1048
+
1049
+ return json
1050
+
1051
+
1052
+ try:
1053
+ StagingArea = env["symple.pb.process.data"]
1054
+ IrConfigParam = env["ir.config_parameter"].sudo()
1055
+ token = IrConfigParam.get_b2w_access_token()
1056
+
1057
+ code = case_id.service_point_ids[0].code
1058
+ asset = get_asset(code)
1059
+ catalog_id = asset["catalogid"]
1060
+ logs.append({"message": "Asset loaded", "data": asset})
1061
+ order = create_order_disconnect(asset["_id"], token)
1062
+ order_id = order["_id"]
1063
+ config_id = order["conf_id"]
1064
+ logs.append({"message": "Order created", "data": order})
1065
+ bind_catalog(config_id, catalog_id, token)
1066
+ checkout(config_id, token)
1067
+
1068
+ IrConfigParam.update_b2w_statemodel(
1069
+ "in_cessazione", asset_id=asset["_id"], sm_reason=case_id.ticket_type_id.name
1070
+ )
1071
+ case_id.service_point_ids.sudo().write({"state": "deactivating"})
1072
+
1073
+ case_id.kv_store().set_many(
1074
+ {
1075
+ "config_id": config_id,
1076
+ "order_id": order_id,
1077
+ "asset_id": asset["_id"],
1078
+ "catalog_id": catalog_id,
1079
+ }
1080
+ )
1081
+
1082
+ result = "OK"
1083
+
1084
+ except Exception as e:
1085
+ logs.append({"message": str(e), "traceback": format_exc()})
1086
+ case_id.write({"error_message": str(e)})
1087
+
1088
+
1089
+ if logs:
1090
+ log(json_dumps(logs))</field>
1091
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
1092
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
1093
+ <field name="is_a_postalizer_phase">False</field>
1094
+ <field name="is_compute_refund">False</field>
1095
+ <field name="is_dl">False</field>
1096
+ <field name="is_needs_child_case">False</field>
1097
+ <field name="is_pick_refund_template">False</field>
1098
+ <field name="is_process_managed">False</field>
1099
+ <field name="is_quote_accepted">False</field>
1100
+ <field name="is_quote_sent">False</field>
1101
+ <field name="is_timeout">False</field>
1102
+ <field name="is_voidable">False</field>
1103
+ <field name="name">A1316 - CRM - Creazione Ordine per Taglio Colonna</field>
1104
+ <field name="set_result_automatically">from_code</field>
1105
+ </record>
1106
+ <record id="symple_triplet_phase_result_C1613_-_Controlli_CRM_OK_E-ML-GM08-3-0042" model="symple.triplet.phase.result">
1107
+ <field name="active">True</field>
1108
+ <field name="has_message">False</field>
1109
+ <field name="is_annulment">False</field>
1110
+ <field name="is_dl_solicitation_result">False</field>
1111
+ <field name="is_hidden">False</field>
1112
+ <field name="is_quote_expired">False</field>
1113
+ <field name="name">C1613 - Controlli CRM OK</field>
1114
+ <field name="next_phase_id" ref="symple_triplet_phase_A1316_-_CRM_-_Creazione_Ordine_per_Taglio_Colonna"/>
1115
+ <field name="state_code">E-ML-GM08-3-0042</field>
1116
+ <field name="wizard_result">SUCCESS</field>
1117
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1312_-_Controlli_CRM_per_Taglio_Colonna')])]"/>
1118
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
1119
+ </record>
1120
+ <record id="symple_triplet_phase_A1313_-_Integrazione_M2C_per_Taglio_Colonna" model="symple.triplet.phase">
1121
+ <field name="active">True</field>
1122
+ <field name="child_case">False</field>
1123
+ <field name="code"># Available variables:
1124
+ # - case_id: the case that just reached this phase
1125
+ # - request: allows you to make HTTP requests (method, url, headers, data)
1126
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
1127
+ # - json_load: allows you to use JSON.load to convert a json into an object
1128
+ # - env: Odoo Environment on which the action is triggered
1129
+ # - time, datetime, dateutil, timezone: useful Python libraries
1130
+ # - float_compare: Odoo function to compare floats based on specific precisions
1131
+ # - ValidationError: Warning Exception to use with raise
1132
+ # - Command: x2Many commands namespace
1133
+ # - OrderedDict: ordered dictionaries
1134
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
1135
+ # (line = case id, func = phase name)
1136
+ # To return a result, assign: result = {...}
1137
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
1138
+ # phase result will not be set.
1139
+
1140
+ logs = []
1141
+
1142
+ try:
1143
+ logs.append({"message": "Starting M2C integration"})
1144
+ tenant_id = env["ir.config_parameter"].sudo().get_param("m2c_header_tenant_id")
1145
+ org_token = env["ir.config_parameter"].sudo().get_param("m2c_header_org_token")
1146
+ headers = {"tenantId": tenant_id, "orgToken": org_token}
1147
+
1148
+ StagingArea = env["symple.pb.process.data"]
1149
+ wizard_data_record = StagingArea.search(
1150
+ [("res_id", "=", case_id.id), ("process_name", "=", "ml_taglio_colonna")],
1151
+ limit=1,
1152
+ order="create_date DESC",
1153
+ )
1154
+ wizard_payload = wizard_data_record.get_payload()
1155
+
1156
+ end_date = wizard_data_record.get("end_date")
1157
+
1158
+ m2c_payload_debug = {
1159
+ "case_id": case_id.id,
1160
+ "tripet": case_id.ticket_type_id.name,
1161
+ "is_contratti_mandato": True,
1162
+ "service_points": [case_id.service_point_ids[0].id],
1163
+ "causale_cessazione": case_id.ticket_type_id.name,
1164
+ "fine_contratto": str(end_date),
1165
+ "is_contratti": True,
1166
+ }
1167
+
1168
+ logs.append(
1169
+ {
1170
+ "message": "Calling prepare_m2c_passthrough_payload",
1171
+ "data": m2c_payload_debug,
1172
+ }
1173
+ )
1174
+
1175
+ IrConfigParameter = env["ir.config_parameter"]
1176
+ m2c_dict = IrConfigParameter.prepare_m2c_passthrough_payload(
1177
+ case_id,
1178
+ case_id.ticket_type_id.name,
1179
+ is_contratti_mandato=True,
1180
+ service_points=[case_id.service_point_ids[0].id],
1181
+ is_contratti=True,
1182
+ contatti_array=[],
1183
+ contrattiMandatoDettaglio_array=[],
1184
+ causale_cessazione=case_id.ticket_type_id.name,
1185
+ fine_contratto=end_date,
1186
+ fine_contratto_fornitura=end_date,
1187
+ )
1188
+
1189
+ logs.append({"message": "M2C dict", "data": m2c_dict})
1190
+
1191
+ m2c_url = IrConfigParameter.sudo().get_param("m2c_passthrough_url")
1192
+ response = request("POST", m2c_url, headers=headers, data=m2c_dict)
1193
+
1194
+ result = "OK"
1195
+
1196
+ except Exception as e:
1197
+ logs.append({"level": "error", "message": str(e), "traceback": format_exc()})
1198
+ prev = case_id.info_message + "\n" if case_id.info_message else ""
1199
+ case_id.write({"info_message": prev + str(e)})
1200
+
1201
+ if logs:
1202
+ log(json_dumps(logs))</field>
1203
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
1204
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
1205
+ <field name="is_a_postalizer_phase">False</field>
1206
+ <field name="is_compute_refund">False</field>
1207
+ <field name="is_dl">False</field>
1208
+ <field name="is_needs_child_case">False</field>
1209
+ <field name="is_pick_refund_template">False</field>
1210
+ <field name="is_process_managed">False</field>
1211
+ <field name="is_quote_accepted">False</field>
1212
+ <field name="is_quote_sent">False</field>
1213
+ <field name="is_timeout">False</field>
1214
+ <field name="is_voidable">False</field>
1215
+ <field name="name">A1313 - Integrazione M2C per Taglio Colonna</field>
1216
+ <field name="set_result_automatically">from_code</field>
1217
+ </record>
1218
+ <record id="symple_triplet_phase_A1314_-_In_Attesa_M2C_per_Taglio_Colonna" model="symple.triplet.phase">
1219
+ <field name="active">True</field>
1220
+ <field name="child_case">False</field>
1221
+ <field name="code"># Available variables:
1222
+ # - case_id: the case that just reached this phase
1223
+ # - request: allows you to make HTTP requests (method, url, headers, data)
1224
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
1225
+ # - json_load: allows you to use JSON.load to convert a json into an object
1226
+ # - env: Odoo Environment on which the action is triggered
1227
+ # - time, datetime, dateutil, timezone: useful Python libraries
1228
+ # - float_compare: Odoo function to compare floats based on specific precisions
1229
+ # - ValidationError: Warning Exception to use with raise
1230
+ # - Command: x2Many commands namespace
1231
+ # - OrderedDict: ordered dictionaries
1232
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
1233
+ # (line = case id, func = phase name)
1234
+ # To return a result, assign: result = {...}
1235
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
1236
+ # phase result will not be set.
1237
+
1238
+
1239
+
1240
+ </field>
1241
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
1242
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
1243
+ <field name="is_a_postalizer_phase">False</field>
1244
+ <field name="is_compute_refund">False</field>
1245
+ <field name="is_dl">False</field>
1246
+ <field name="is_needs_child_case">False</field>
1247
+ <field name="is_pick_refund_template">False</field>
1248
+ <field name="is_process_managed">False</field>
1249
+ <field name="is_quote_accepted">False</field>
1250
+ <field name="is_quote_sent">False</field>
1251
+ <field name="is_timeout">False</field>
1252
+ <field name="is_voidable">False</field>
1253
+ <field name="name">A1314 - In Attesa M2C per Taglio Colonna</field>
1254
+ </record>
1255
+ <record id="symple_triplet_phase_result_C1888_-_OK_-_Integrazione_M2C_per_Taglio_Colonna_E-ML-GM08-3-0046" model="symple.triplet.phase.result">
1256
+ <field name="active">True</field>
1257
+ <field name="has_message">False</field>
1258
+ <field name="is_annulment">False</field>
1259
+ <field name="is_dl_solicitation_result">False</field>
1260
+ <field name="is_hidden">False</field>
1261
+ <field name="is_quote_expired">False</field>
1262
+ <field name="name">C1888 - OK - Integrazione M2C per Taglio Colonna</field>
1263
+ <field name="next_phase_id" ref="symple_triplet_phase_A1314_-_In_Attesa_M2C_per_Taglio_Colonna"/>
1264
+ <field name="state_code">E-ML-GM08-3-0046</field>
1265
+ <field name="wizard_result">SUCCESS</field>
1266
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1313_-_Integrazione_M2C_per_Taglio_Colonna')])]"/>
1267
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
1268
+ </record>
1269
+ <record id="symple_triplet_phase_A1315_-_Aggiornamento_CRM_per_Taglio_Colonna" model="symple.triplet.phase">
1270
+ <field name="active">True</field>
1271
+ <field name="child_case">False</field>
1272
+ <field name="code"># Available variables:
1273
+ # - case_id: the case that just reached this phase
1274
+ # - request: allows you to make HTTP requests (method, url, headers, data)
1275
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
1276
+ # - json_load: allows you to use JSON.load to convert a json into an object
1277
+ # - env: Odoo Environment on which the action is triggered
1278
+ # - time, datetime, dateutil, timezone: useful Python libraries
1279
+ # - float_compare: Odoo function to compare floats based on specific precisions
1280
+ # - ValidationError: Warning Exception to use with raise
1281
+ # - Command: x2Many commands namespace
1282
+ # - OrderedDict: ordered dictionaries
1283
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
1284
+ # (line = case id, func = phase name)
1285
+ # To return a result, assign: result = {...}
1286
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
1287
+ # phase result will not be set.
1288
+
1289
+ logs = []
1290
+
1291
+
1292
+ def log_and_parse_response(response, log_message):
1293
+ try:
1294
+ json_data = response.json()
1295
+ logs.append({"message": log_message, "data": json_data})
1296
+ return json_data
1297
+ except Exception:
1298
+ logs.append({"message": log_message, "response_text": response.text})
1299
+ return response.text
1300
+
1301
+
1302
+ def order2asset(order_id, token):
1303
+ url = "http://b2w-cpq-order-management-service/v1/order/asset/{}".format(order_id)
1304
+ headers = {
1305
+ "X-Auth-Request-Access-Token": "" + token,
1306
+ "Content-Type": "application/json",
1307
+ "generatesession": "true",
1308
+ }
1309
+
1310
+ logs.append(
1311
+ {"message": "Creating Order2Asset", "data": {"url": url, "headers": headers}}
1312
+ )
1313
+
1314
+ response = request("POST", url, headers=headers)
1315
+ json = log_and_parse_response(
1316
+ response,
1317
+ "Order2Asset response",
1318
+ )
1319
+
1320
+ if response.status_code != 200:
1321
+ raise ValidationError("Failed to launch order2asset")
1322
+
1323
+ return json
1324
+
1325
+
1326
+ try:
1327
+ IrConfigParam = env["ir.config_parameter"].sudo()
1328
+ token = IrConfigParam.get_b2w_access_token()
1329
+
1330
+ order_id, asset_id = case_id.kv_store().get_many("order_id", "asset_id")
1331
+
1332
+ order2asset(order_id, token)
1333
+ logs.append({"message": "order2asset done"})
1334
+ case_id.service_point_ids.sudo().write({"state": "inactive"})
1335
+ IrConfigParam.update_b2w_statemodel(
1336
+ "cessato", asset_id=asset_id, sm_reason=case_id.ticket_type_id.name
1337
+ )
1338
+
1339
+ case_id.service_point_ids[0].write(
1340
+ {
1341
+ "state": "inactive",
1342
+ "supply_end_date": datetime.date.today().strftime("%Y-%m-%d"),
1343
+ }
1344
+ )
1345
+
1346
+ logs.append({"message": "service point updated"})
1347
+
1348
+ result = "OK"
1349
+
1350
+ except Exception as e:
1351
+ logs.append({"message": str(e), "traceback": format_exc()})
1352
+ case_id.write({"error_message": str(e)})
1353
+
1354
+
1355
+ if logs:
1356
+ log(json_dumps(logs))</field>
1357
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
1358
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
1359
+ <field name="is_a_postalizer_phase">False</field>
1360
+ <field name="is_compute_refund">False</field>
1361
+ <field name="is_dl">False</field>
1362
+ <field name="is_needs_child_case">False</field>
1363
+ <field name="is_pick_refund_template">False</field>
1364
+ <field name="is_process_managed">False</field>
1365
+ <field name="is_quote_accepted">False</field>
1366
+ <field name="is_quote_sent">False</field>
1367
+ <field name="is_timeout">False</field>
1368
+ <field name="is_voidable">False</field>
1369
+ <field name="name">A1315 - Aggiornamento CRM per Taglio Colonna</field>
1370
+ <field name="set_result_automatically">from_code</field>
1371
+ </record>
1372
+ <record id="symple_triplet_phase_result_C1891_-_OK_-_Creazione_Ordine_E-ML-GM08-3-0044" model="symple.triplet.phase.result">
1373
+ <field name="active">True</field>
1374
+ <field name="has_message">False</field>
1375
+ <field name="is_annulment">False</field>
1376
+ <field name="is_dl_solicitation_result">False</field>
1377
+ <field name="is_hidden">False</field>
1378
+ <field name="is_quote_expired">False</field>
1379
+ <field name="name">C1891 - OK - Creazione Ordine</field>
1380
+ <field name="next_phase_id" ref="symple_triplet_phase_A1315_-_Aggiornamento_CRM_per_Taglio_Colonna"/>
1381
+ <field name="state_code">E-ML-GM08-3-0044</field>
1382
+ <field name="wizard_result">SUCCESS</field>
1383
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1316_-_CRM_-_Creazione_Ordine_per_Taglio_Colonna')])]"/>
1384
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
1385
+ </record>
1386
+ <record id="symple_triplet_phase_result_C1889_-_OK_-_Aggiornamento_CRM_E-ML-GM08-3-0050" model="symple.triplet.phase.result">
1387
+ <field name="active">True</field>
1388
+ <field name="has_message">False</field>
1389
+ <field name="is_annulment">False</field>
1390
+ <field name="is_dl_solicitation_result">False</field>
1391
+ <field name="is_hidden">False</field>
1392
+ <field name="is_quote_expired">False</field>
1393
+ <field name="name">C1889 - OK - Aggiornamento CRM</field>
1394
+ <field name="next_phase_id" ref="symple_triplet_phase_A1313_-_Integrazione_M2C_per_Taglio_Colonna"/>
1395
+ <field name="state_code">E-ML-GM08-3-0050</field>
1396
+ <field name="wizard_result">SUCCESS</field>
1397
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1315_-_Aggiornamento_CRM_per_Taglio_Colonna')])]"/>
1398
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
1399
+ </record>
1400
+ <record id="symple_triplet_phase_A1379_-_Apertura_Case_Invio_Onere" model="symple.triplet.phase">
1401
+ <field name="active">True</field>
1402
+ <field name="child_case">False</field>
1403
+ <field name="code"># RES1 = C2003 - OK - Case di invio oneri aperto
1404
+
1405
+ OK = "RES1"
1406
+
1407
+ logs = []
1408
+ debug_logs = []
1409
+ error_occurred = False
1410
+
1411
+
1412
+ def make_log(message, data=None, always=False):
1413
+ log_entry = {"message": message}
1414
+ if data is not None:
1415
+ log_entry["data"] = data
1416
+
1417
+ if always:
1418
+ logs.append(log_entry)
1419
+ else:
1420
+ debug_logs.append(log_entry)
1421
+
1422
+
1423
+ # --------------------------------------
1424
+
1425
+
1426
+ def main():
1427
+ detail = env["helpdesk.ticket.type"].search([("code", "=", "GM08-4")])
1428
+ env["helpdesk.ticket"].create(
1429
+ {
1430
+ "name": case_id.symple_interaction_id.name,
1431
+ "parent_case_id": case_id.id,
1432
+ "description": case_id.symple_interaction_id.note,
1433
+ "assign_date": datetime.datetime.now(),
1434
+ "triplet_type_id": detail.subtype_id.type_id.id,
1435
+ "triplet_subtype_id": detail.subtype_id.id,
1436
+ "ticket_type_id": detail.id,
1437
+ "symple_interaction_id": case_id.symple_interaction_id.id,
1438
+ "triplet_phase_id": detail.workflow_id.triplet_phase_id.id,
1439
+ "triplet_active_phase_id": detail.workflow_id.triplet_phase_id.id,
1440
+ "pdr_ids": case_id.pdr_ids.ids,
1441
+ "service_point_ids": case_id.service_point_ids.ids,
1442
+ }
1443
+ )
1444
+
1445
+ return OK
1446
+
1447
+
1448
+ try:
1449
+ result = main()
1450
+ except Exception as e:
1451
+ error_occurred = True
1452
+ make_log(
1453
+ "Error occurred in phase",
1454
+ {"error": str(e), "traceback": format_exc()},
1455
+ always=True,
1456
+ )
1457
+ case_id.write({"error_message": str(e)})
1458
+
1459
+
1460
+ if error_occurred and debug_logs:
1461
+ logs.append({"message": "debug_logs", "logs": debug_logs})
1462
+
1463
+ if logs:
1464
+ log(json_dumps(logs, indent=2))</field>
1465
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
1466
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
1467
+ <field name="is_a_postalizer_phase">False</field>
1468
+ <field name="is_compute_refund">False</field>
1469
+ <field name="is_dl">False</field>
1470
+ <field name="is_needs_child_case">False</field>
1471
+ <field name="is_pick_refund_template">False</field>
1472
+ <field name="is_process_managed">False</field>
1473
+ <field name="is_quote_accepted">False</field>
1474
+ <field name="is_quote_sent">False</field>
1475
+ <field name="is_timeout">False</field>
1476
+ <field name="is_voidable">False</field>
1477
+ <field name="name">A1379 - Apertura Case Invio Onere</field>
1478
+ <field name="set_result_automatically">from_code</field>
1479
+ </record>
1480
+ <record id="symple_triplet_phase_result_C1890_-_OK_-_Esito_M2C_E-ML-GM08-3-0048" model="symple.triplet.phase.result">
1481
+ <field name="active">True</field>
1482
+ <field name="has_message">False</field>
1483
+ <field name="is_annulment">False</field>
1484
+ <field name="is_dl_solicitation_result">False</field>
1485
+ <field name="is_hidden">False</field>
1486
+ <field name="is_quote_expired">False</field>
1487
+ <field name="name">C1890 - OK - Esito M2C</field>
1488
+ <field name="next_phase_id" ref="symple_triplet_phase_A1379_-_Apertura_Case_Invio_Onere"/>
1489
+ <field name="state_code">E-ML-GM08-3-0048</field>
1490
+ <field name="wizard_result">SUCCESS</field>
1491
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1314_-_In_Attesa_M2C_per_Taglio_Colonna')])]"/>
1492
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
1493
+ </record>
1494
+ <record id="symple_triplet_phase_A1317_-_Errore_in_fase_di_Controlli_CRM_per_Taglio_Colonna" model="symple.triplet.phase">
1495
+ <field name="active">True</field>
1496
+ <field name="child_case">False</field>
1497
+ <field name="code"># Available variables:
1498
+ # - case_id: the case that just reached this phase
1499
+ # - request: allows you to make HTTP requests (method, url, headers, data)
1500
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
1501
+ # - json_load: allows you to use JSON.load to convert a json into an object
1502
+ # - env: Odoo Environment on which the action is triggered
1503
+ # - time, datetime, dateutil, timezone: useful Python libraries
1504
+ # - float_compare: Odoo function to compare floats based on specific precisions
1505
+ # - ValidationError: Warning Exception to use with raise
1506
+ # - Command: x2Many commands namespace
1507
+ # - OrderedDict: ordered dictionaries
1508
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
1509
+ # (line = case id, func = phase name)
1510
+ # To return a result, assign: result = {...}
1511
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
1512
+ # phase result will not be set.
1513
+
1514
+
1515
+
1516
+ </field>
1517
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
1518
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
1519
+ <field name="is_a_postalizer_phase">False</field>
1520
+ <field name="is_compute_refund">False</field>
1521
+ <field name="is_dl">False</field>
1522
+ <field name="is_needs_child_case">False</field>
1523
+ <field name="is_pick_refund_template">False</field>
1524
+ <field name="is_process_managed">False</field>
1525
+ <field name="is_quote_accepted">False</field>
1526
+ <field name="is_quote_sent">False</field>
1527
+ <field name="is_timeout">False</field>
1528
+ <field name="is_voidable">False</field>
1529
+ <field name="name">A1317 - Errore in fase di Controlli CRM per Taglio Colonna</field>
1530
+ </record>
1531
+ <record id="symple_triplet_phase_result_C1614_-_Controlli_CRM_KO_E-ML-GM08-3-0043" model="symple.triplet.phase.result">
1532
+ <field name="active">True</field>
1533
+ <field name="has_message">False</field>
1534
+ <field name="is_annulment">False</field>
1535
+ <field name="is_dl_solicitation_result">False</field>
1536
+ <field name="is_hidden">False</field>
1537
+ <field name="is_quote_expired">False</field>
1538
+ <field name="name">C1614 - Controlli CRM KO</field>
1539
+ <field name="next_phase_id" ref="symple_triplet_phase_A1317_-_Errore_in_fase_di_Controlli_CRM_per_Taglio_Colonna"/>
1540
+ <field name="state_code">E-ML-GM08-3-0043</field>
1541
+ <field name="wizard_result">KO</field>
1542
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1312_-_Controlli_CRM_per_Taglio_Colonna')])]"/>
1543
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO')])" />
1544
+ </record>
1545
+ <record id="symple_triplet_phase_result_C1926_-_OK_-_Risolto_Errore_durante_Controlli_CRM_E-ML-GM08-3-0053" model="symple.triplet.phase.result">
1546
+ <field name="active">True</field>
1547
+ <field name="has_message">False</field>
1548
+ <field name="is_annulment">False</field>
1549
+ <field name="is_dl_solicitation_result">False</field>
1550
+ <field name="is_hidden">False</field>
1551
+ <field name="is_quote_expired">False</field>
1552
+ <field name="name">C1926 - OK - Risolto Errore durante Controlli CRM</field>
1553
+ <field name="next_phase_id" ref="symple_triplet_phase_A1312_-_Controlli_CRM_per_Taglio_Colonna"/>
1554
+ <field name="state_code">E-ML-GM08-3-0053</field>
1555
+ <field name="wizard_result">SUCCESS</field>
1556
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1317_-_Errore_in_fase_di_Controlli_CRM_per_Taglio_Colonna')])]"/>
1557
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
1558
+ </record>
1559
+ <record id="symple_triplet_phase_A1318_-_Errore_in_fase_di_Creazione_Ordine_CRM_per_Taglio_Colonna" model="symple.triplet.phase">
1560
+ <field name="active">True</field>
1561
+ <field name="child_case">False</field>
1562
+ <field name="code"># Available variables:
1563
+ # - case_id: the case that just reached this phase
1564
+ # - request: allows you to make HTTP requests (method, url, headers, data)
1565
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
1566
+ # - json_load: allows you to use JSON.load to convert a json into an object
1567
+ # - env: Odoo Environment on which the action is triggered
1568
+ # - time, datetime, dateutil, timezone: useful Python libraries
1569
+ # - float_compare: Odoo function to compare floats based on specific precisions
1570
+ # - ValidationError: Warning Exception to use with raise
1571
+ # - Command: x2Many commands namespace
1572
+ # - OrderedDict: ordered dictionaries
1573
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
1574
+ # (line = case id, func = phase name)
1575
+ # To return a result, assign: result = {...}
1576
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
1577
+ # phase result will not be set.
1578
+
1579
+
1580
+
1581
+ </field>
1582
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
1583
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
1584
+ <field name="is_a_postalizer_phase">False</field>
1585
+ <field name="is_compute_refund">False</field>
1586
+ <field name="is_dl">False</field>
1587
+ <field name="is_needs_child_case">False</field>
1588
+ <field name="is_pick_refund_template">False</field>
1589
+ <field name="is_process_managed">False</field>
1590
+ <field name="is_quote_accepted">False</field>
1591
+ <field name="is_quote_sent">False</field>
1592
+ <field name="is_timeout">False</field>
1593
+ <field name="is_voidable">False</field>
1594
+ <field name="name">A1318 - Errore in fase di Creazione Ordine CRM per Taglio Colonna</field>
1595
+ </record>
1596
+ <record id="symple_triplet_phase_result_C1892_-_KO_-_Creazione_Ordine_CRM_E-ML-GM08-3-0045" model="symple.triplet.phase.result">
1597
+ <field name="active">True</field>
1598
+ <field name="has_message">False</field>
1599
+ <field name="is_annulment">False</field>
1600
+ <field name="is_dl_solicitation_result">False</field>
1601
+ <field name="is_hidden">False</field>
1602
+ <field name="is_quote_expired">False</field>
1603
+ <field name="name">C1892 - KO - Creazione Ordine CRM</field>
1604
+ <field name="next_phase_id" ref="symple_triplet_phase_A1318_-_Errore_in_fase_di_Creazione_Ordine_CRM_per_Taglio_Colonna"/>
1605
+ <field name="state_code">E-ML-GM08-3-0045</field>
1606
+ <field name="wizard_result">KO</field>
1607
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1316_-_CRM_-_Creazione_Ordine_per_Taglio_Colonna')])]"/>
1608
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO')])" />
1609
+ </record>
1610
+ <record id="symple_triplet_phase_result_C1894_-_OK_-_Errore_Risolto_Creazione_Ordine_E-ML-GM08-3-0056" model="symple.triplet.phase.result">
1611
+ <field name="active">True</field>
1612
+ <field name="has_message">False</field>
1613
+ <field name="is_annulment">False</field>
1614
+ <field name="is_dl_solicitation_result">False</field>
1615
+ <field name="is_hidden">False</field>
1616
+ <field name="is_quote_expired">False</field>
1617
+ <field name="name">C1894 - OK - Errore Risolto Creazione Ordine</field>
1618
+ <field name="next_phase_id" ref="symple_triplet_phase_A1316_-_CRM_-_Creazione_Ordine_per_Taglio_Colonna"/>
1619
+ <field name="state_code">E-ML-GM08-3-0056</field>
1620
+ <field name="wizard_result">SUCCESS</field>
1621
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1318_-_Errore_in_fase_di_Creazione_Ordine_CRM_per_Taglio_Colonna')])]"/>
1622
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
1623
+ </record>
1624
+ <record id="symple_triplet_phase_A1319_-_Errore_in_fase_di_Integrazione_M2C_per_Taglio_Colonna" model="symple.triplet.phase">
1625
+ <field name="active">True</field>
1626
+ <field name="child_case">False</field>
1627
+ <field name="code"># Available variables:
1628
+ # - case_id: the case that just reached this phase
1629
+ # - request: allows you to make HTTP requests (method, url, headers, data)
1630
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
1631
+ # - json_load: allows you to use JSON.load to convert a json into an object
1632
+ # - env: Odoo Environment on which the action is triggered
1633
+ # - time, datetime, dateutil, timezone: useful Python libraries
1634
+ # - float_compare: Odoo function to compare floats based on specific precisions
1635
+ # - ValidationError: Warning Exception to use with raise
1636
+ # - Command: x2Many commands namespace
1637
+ # - OrderedDict: ordered dictionaries
1638
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
1639
+ # (line = case id, func = phase name)
1640
+ # To return a result, assign: result = {...}
1641
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
1642
+ # phase result will not be set.
1643
+
1644
+
1645
+
1646
+ </field>
1647
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
1648
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
1649
+ <field name="is_a_postalizer_phase">False</field>
1650
+ <field name="is_compute_refund">False</field>
1651
+ <field name="is_dl">False</field>
1652
+ <field name="is_needs_child_case">False</field>
1653
+ <field name="is_pick_refund_template">False</field>
1654
+ <field name="is_process_managed">False</field>
1655
+ <field name="is_quote_accepted">False</field>
1656
+ <field name="is_quote_sent">False</field>
1657
+ <field name="is_timeout">False</field>
1658
+ <field name="is_voidable">False</field>
1659
+ <field name="name">A1319 - Errore in fase di Integrazione M2C per Taglio Colonna</field>
1660
+ </record>
1661
+ <record id="symple_triplet_phase_result_C1895_-_KO_-_Errore_Integrazione_M2C_E-ML-GM08-3-0047" model="symple.triplet.phase.result">
1662
+ <field name="active">True</field>
1663
+ <field name="has_message">False</field>
1664
+ <field name="is_annulment">False</field>
1665
+ <field name="is_dl_solicitation_result">False</field>
1666
+ <field name="is_hidden">False</field>
1667
+ <field name="is_quote_expired">False</field>
1668
+ <field name="name">C1895 - KO - Errore Integrazione M2C</field>
1669
+ <field name="next_phase_id" ref="symple_triplet_phase_A1319_-_Errore_in_fase_di_Integrazione_M2C_per_Taglio_Colonna"/>
1670
+ <field name="state_code">E-ML-GM08-3-0047</field>
1671
+ <field name="wizard_result">KO</field>
1672
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1313_-_Integrazione_M2C_per_Taglio_Colonna')])]"/>
1673
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO')])" />
1674
+ </record>
1675
+ <record id="symple_triplet_phase_result_C1918_-_OK_-_Errore_Risolto_in_fase_Integrazione_M2C_per_Taglio_Colonna_E-ML-GM08-3-0058" model="symple.triplet.phase.result">
1676
+ <field name="active">True</field>
1677
+ <field name="has_message">False</field>
1678
+ <field name="is_annulment">False</field>
1679
+ <field name="is_dl_solicitation_result">False</field>
1680
+ <field name="is_hidden">False</field>
1681
+ <field name="is_quote_expired">False</field>
1682
+ <field name="name">C1918 - OK - Errore Risolto in fase Integrazione M2C per Taglio Colonna</field>
1683
+ <field name="next_phase_id" ref="symple_triplet_phase_A1313_-_Integrazione_M2C_per_Taglio_Colonna"/>
1684
+ <field name="state_code">E-ML-GM08-3-0058</field>
1685
+ <field name="wizard_result">SUCCESS</field>
1686
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1319_-_Errore_in_fase_di_Integrazione_M2C_per_Taglio_Colonna')])]"/>
1687
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
1688
+ </record>
1689
+ <record id="symple_triplet_phase_A1320_-_Errore_in_fase_Attesa_Esito_M2C_per_Taglio_Colonna" model="symple.triplet.phase">
1690
+ <field name="active">True</field>
1691
+ <field name="child_case">False</field>
1692
+ <field name="code"># Available variables:
1693
+ # - case_id: the case that just reached this phase
1694
+ # - request: allows you to make HTTP requests (method, url, headers, data)
1695
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
1696
+ # - json_load: allows you to use JSON.load to convert a json into an object
1697
+ # - env: Odoo Environment on which the action is triggered
1698
+ # - time, datetime, dateutil, timezone: useful Python libraries
1699
+ # - float_compare: Odoo function to compare floats based on specific precisions
1700
+ # - ValidationError: Warning Exception to use with raise
1701
+ # - Command: x2Many commands namespace
1702
+ # - OrderedDict: ordered dictionaries
1703
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
1704
+ # (line = case id, func = phase name)
1705
+ # To return a result, assign: result = {...}
1706
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
1707
+ # phase result will not be set.
1708
+
1709
+ logs = []
1710
+
1711
+ try:
1712
+ logs.append({"message": "Starting M2C integration"})
1713
+ tenant_id = env["ir.config_parameter"].sudo().get_param("m2c_header_tenant_id")
1714
+ org_token = env["ir.config_parameter"].sudo().get_param("m2c_header_org_token")
1715
+ headers = {"tenantId": tenant_id, "orgToken": org_token}
1716
+
1717
+ end_date = datetime.date.today().strftime("%Y-%m-%d")
1718
+
1719
+ m2c_payload_debug = {
1720
+ "case_id": case_id.id,
1721
+ "tripet": "SB06 - 1 - Cessazione per Subentro",
1722
+ "is_contratti_mandato": True,
1723
+ "service_points": [case_id.service_point_ids[0].id],
1724
+ "causale_cessazione": case_id.ticket_type_id.name,
1725
+ "fine_contratto_fornitura": str(end_date),
1726
+ "is_contratti": True,
1727
+ }
1728
+
1729
+ logs.append(
1730
+ {
1731
+ "message": "Calling prepare_m2c_passthrough_payload",
1732
+ "data": m2c_payload_debug,
1733
+ }
1734
+ )
1735
+
1736
+ IrConfigParameter = env["ir.config_parameter"]
1737
+ m2c_dict = IrConfigParameter.prepare_m2c_passthrough_payload(
1738
+ case_id,
1739
+ case_id.ticket_type_id.name,
1740
+ is_contratti_mandato=True,
1741
+ service_points=[case_id.service_point_ids[0].id],
1742
+ is_contratti=True,
1743
+ contatti_array=[],
1744
+ contrattiMandatoDettaglio_array=[],
1745
+ causale_cessazione=case_id.ticket_type_id.name,
1746
+ # fine_contratto=end_date,
1747
+ fine_contratto=end_date,
1748
+ )
1749
+
1750
+ logs.append({"message": "M2C dict", "data": m2c_dict})
1751
+
1752
+ m2c_url = IrConfigParameter.sudo().get_param("m2c_passthrough_url")
1753
+ response = request("POST", m2c_url, headers=headers, data=m2c_dict)
1754
+
1755
+ result = "OK"
1756
+
1757
+ except Exception as e:
1758
+ logs.append({"level": "error", "message": str(e), "traceback": format_exc()})
1759
+ prev = case_id.info_message + "\n" if case_id.info_message else ""
1760
+ case_id.write({"info_message": prev + str(e)})
1761
+
1762
+ if logs:
1763
+ log(json_dumps(logs))
1764
+ </field>
1765
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
1766
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
1767
+ <field name="is_a_postalizer_phase">False</field>
1768
+ <field name="is_compute_refund">False</field>
1769
+ <field name="is_dl">False</field>
1770
+ <field name="is_needs_child_case">False</field>
1771
+ <field name="is_pick_refund_template">False</field>
1772
+ <field name="is_process_managed">False</field>
1773
+ <field name="is_quote_accepted">False</field>
1774
+ <field name="is_quote_sent">False</field>
1775
+ <field name="is_timeout">False</field>
1776
+ <field name="is_voidable">False</field>
1777
+ <field name="name">A1320 - Errore in fase Attesa Esito M2C per Taglio Colonna</field>
1778
+ <field name="set_result_automatically">from_code</field>
1779
+ </record>
1780
+ <record id="symple_triplet_phase_result_C1919_-_Errore_in_fase_di_Attesa_Esito_M2C_per_Taglio_Colonna_E-ML-GM08-3-0049" model="symple.triplet.phase.result">
1781
+ <field name="active">True</field>
1782
+ <field name="has_message">False</field>
1783
+ <field name="is_annulment">False</field>
1784
+ <field name="is_dl_solicitation_result">False</field>
1785
+ <field name="is_hidden">False</field>
1786
+ <field name="is_quote_expired">False</field>
1787
+ <field name="name">C1919 - Errore in fase di Attesa Esito M2C per Taglio Colonna</field>
1788
+ <field name="next_phase_id" ref="symple_triplet_phase_A1320_-_Errore_in_fase_Attesa_Esito_M2C_per_Taglio_Colonna"/>
1789
+ <field name="state_code">E-ML-GM08-3-0049</field>
1790
+ <field name="wizard_result">KO</field>
1791
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1314_-_In_Attesa_M2C_per_Taglio_Colonna')])]"/>
1792
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO')])" />
1793
+ </record>
1794
+ <record id="symple_triplet_phase_result_C1921_-_OK_-_Risolto_Errore_in_fase_Attesa_Esito_M2C_per_Taglio_Colonna_E-ML-GM08-3-0060" model="symple.triplet.phase.result">
1795
+ <field name="active">True</field>
1796
+ <field name="has_message">False</field>
1797
+ <field name="is_annulment">False</field>
1798
+ <field name="is_dl_solicitation_result">False</field>
1799
+ <field name="is_hidden">False</field>
1800
+ <field name="is_quote_expired">False</field>
1801
+ <field name="name">C1921 - OK - Risolto Errore in fase Attesa Esito M2C per Taglio Colonna</field>
1802
+ <field name="next_phase_id" ref="symple_triplet_phase_A1313_-_Integrazione_M2C_per_Taglio_Colonna"/>
1803
+ <field name="state_code">E-ML-GM08-3-0060</field>
1804
+ <field name="wizard_result">SUCCESS</field>
1805
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1320_-_Errore_in_fase_Attesa_Esito_M2C_per_Taglio_Colonna')])]"/>
1806
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
1807
+ </record>
1808
+ <record id="symple_triplet_phase_A1321_-_Errore_in_fase_di_Aggiornamento_CRM_per_Taglio_Colonna" model="symple.triplet.phase">
1809
+ <field name="active">True</field>
1810
+ <field name="child_case">False</field>
1811
+ <field name="code"># Available variables:
1812
+ # - case_id: the case that just reached this phase
1813
+ # - request: allows you to make HTTP requests (method, url, headers, data)
1814
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
1815
+ # - json_load: allows you to use JSON.load to convert a json into an object
1816
+ # - env: Odoo Environment on which the action is triggered
1817
+ # - time, datetime, dateutil, timezone: useful Python libraries
1818
+ # - float_compare: Odoo function to compare floats based on specific precisions
1819
+ # - ValidationError: Warning Exception to use with raise
1820
+ # - Command: x2Many commands namespace
1821
+ # - OrderedDict: ordered dictionaries
1822
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
1823
+ # (line = case id, func = phase name)
1824
+ # To return a result, assign: result = {...}
1825
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
1826
+ # phase result will not be set.
1827
+
1828
+
1829
+
1830
+ </field>
1831
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
1832
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
1833
+ <field name="is_a_postalizer_phase">False</field>
1834
+ <field name="is_compute_refund">False</field>
1835
+ <field name="is_dl">False</field>
1836
+ <field name="is_needs_child_case">False</field>
1837
+ <field name="is_pick_refund_template">False</field>
1838
+ <field name="is_process_managed">False</field>
1839
+ <field name="is_quote_accepted">False</field>
1840
+ <field name="is_quote_sent">False</field>
1841
+ <field name="is_timeout">False</field>
1842
+ <field name="is_voidable">False</field>
1843
+ <field name="name">A1321 - Errore in fase di Aggiornamento CRM per Taglio Colonna</field>
1844
+ </record>
1845
+ <record id="symple_triplet_phase_result_C1922_-_Errore_in_fase_Aggiornamento_CRM_per_Taglio_Colonna_E-ML-GM08-3-0051" model="symple.triplet.phase.result">
1846
+ <field name="active">True</field>
1847
+ <field name="has_message">False</field>
1848
+ <field name="is_annulment">False</field>
1849
+ <field name="is_dl_solicitation_result">False</field>
1850
+ <field name="is_hidden">False</field>
1851
+ <field name="is_quote_expired">False</field>
1852
+ <field name="name">C1922 - Errore in fase Aggiornamento CRM per Taglio Colonna</field>
1853
+ <field name="next_phase_id" ref="symple_triplet_phase_A1321_-_Errore_in_fase_di_Aggiornamento_CRM_per_Taglio_Colonna"/>
1854
+ <field name="state_code">E-ML-GM08-3-0051</field>
1855
+ <field name="wizard_result">KO</field>
1856
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1315_-_Aggiornamento_CRM_per_Taglio_Colonna')])]"/>
1857
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO')])" />
1858
+ </record>
1859
+ <record id="symple_triplet_phase_result_C1924_-_OK_-_Risolto_Errore_in_fase_Aggiornamento_CRM_per_Taglio_Colonna_E-ML-GM08-3-0062" model="symple.triplet.phase.result">
1860
+ <field name="active">True</field>
1861
+ <field name="has_message">False</field>
1862
+ <field name="is_annulment">False</field>
1863
+ <field name="is_dl_solicitation_result">False</field>
1864
+ <field name="is_hidden">False</field>
1865
+ <field name="is_quote_expired">False</field>
1866
+ <field name="name">C1924 - OK - Risolto Errore in fase Aggiornamento CRM per Taglio Colonna</field>
1867
+ <field name="next_phase_id" ref="symple_triplet_phase_A1315_-_Aggiornamento_CRM_per_Taglio_Colonna"/>
1868
+ <field name="state_code">E-ML-GM08-3-0062</field>
1869
+ <field name="wizard_result">SUCCESS</field>
1870
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1321_-_Errore_in_fase_di_Aggiornamento_CRM_per_Taglio_Colonna')])]"/>
1871
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
1872
+ </record>
1873
+ <record id="symple_triplet_phase_A1595_-_Invio_Annullamento_alla_Market_Communication" model="symple.triplet.phase">
1874
+ <field name="active">True</field>
1875
+ <field name="child_case">False</field>
1876
+ <field name="code"># Available variables:
1877
+ # - case_id: the case that just reached this phase
1878
+ # - request: allows you to make HTTP requests (method, url, headers, data)
1879
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
1880
+ # - json_load: allows you to use JSON.load to convert a json into an object
1881
+ # - env: Odoo Environment on which the action is triggered
1882
+ # - time, datetime, dateutil, timezone: useful Python libraries
1883
+ # - float_compare: Odoo function to compare floats based on specific precisions
1884
+ # - ValidationError: Warning Exception to use with raise
1885
+ # - Command: x2Many commands namespace
1886
+ # - OrderedDict: ordered dictionaries
1887
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
1888
+ # (line = case id, func = phase name)
1889
+ # To return a result, assign: result = {...}
1890
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
1891
+ # phase result will not be set.
1892
+
1893
+
1894
+ try:
1895
+ tenant_id = env["ir.config_parameter"].sudo().get_param("m2c_header_tenant_id")
1896
+ org_token = env["ir.config_parameter"].sudo().get_param("m2c_header_org_token")
1897
+ headers = {"tenantId": tenant_id, "orgToken": org_token}
1898
+
1899
+ service_point = case_id.service_point_ids[0]
1900
+ pdr_id = service_point.pdr_id
1901
+
1902
+ ok_payload = {
1903
+ "refName": "Annulment",
1904
+ "refId": case_id.symphonie_process,
1905
+ "messageProcessVars": {
1906
+ "ifs_code": "ANG1",
1907
+ "ang1Info":{
1908
+ "PIVA_DISTRIBUTORE": pdr_id.distributor_id.numbers_only_vat,
1909
+ "COD_SERVIZIO_ANN": "SMG2"
1910
+ }
1911
+ },
1912
+ }
1913
+
1914
+ url = env["ir.config_parameter"].sudo().get_param("b2w_wake_up_process_url")
1915
+ payload = json_dumps(ok_payload)
1916
+ try:
1917
+ response = request("POST", url, data=payload, headers=headers)
1918
+ if response.status_code != 200:
1919
+ message = str(response.status_code)
1920
+ case_id.write(
1921
+ {
1922
+ "info_message": (
1923
+ case_id.info_message
1924
+ + "\n"
1925
+ + message
1926
+ + "\n"
1927
+ + str(response.text)
1928
+ )
1929
+ if case_id.info_message
1930
+ else (message + str(response.text))
1931
+ }
1932
+ )
1933
+ else:
1934
+ result = "OK"
1935
+
1936
+ except Exception as e:
1937
+ message = "Call to annull the process failed"
1938
+ case_id.write(
1939
+ {
1940
+ "info_message": (case_id.info_message + "\n" + message + "\n" + str(e))
1941
+ if case_id.info_message
1942
+ else (message + "\n" + str(e))
1943
+ }
1944
+ )
1945
+
1946
+ except Exception as e:
1947
+ case_id.write(
1948
+ {
1949
+ "info_message": (case_id.info_message + "\n" + str(e))
1950
+ if case_id.info_message
1951
+ else str(e)
1952
+ }
1953
+ )</field>
1954
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
1955
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
1956
+ <field name="is_a_postalizer_phase">False</field>
1957
+ <field name="is_compute_refund">False</field>
1958
+ <field name="is_dl">False</field>
1959
+ <field name="is_needs_child_case">False</field>
1960
+ <field name="is_pick_refund_template">False</field>
1961
+ <field name="is_process_managed">False</field>
1962
+ <field name="is_quote_accepted">False</field>
1963
+ <field name="is_quote_sent">False</field>
1964
+ <field name="is_timeout">False</field>
1965
+ <field name="is_voidable">False</field>
1966
+ <field name="name">A1595 - Invio Annullamento alla Market Communication</field>
1967
+ <field name="set_result_automatically">from_code</field>
1968
+ </record>
1969
+ <record id="symple_triplet_phase_result_C1001_-_Annullamento_E-ML-GM08-3-0025" model="symple.triplet.phase.result">
1970
+ <field name="active">True</field>
1971
+ <field name="has_message">False</field>
1972
+ <field name="is_annulment">False</field>
1973
+ <field name="is_dl_solicitation_result">False</field>
1974
+ <field name="is_hidden">False</field>
1975
+ <field name="is_quote_expired">False</field>
1976
+ <field name="name">C1001 - Annullamento</field>
1977
+ <field name="next_phase_id" ref="symple_triplet_phase_A1595_-_Invio_Annullamento_alla_Market_Communication"/>
1978
+ <field name="state_code">E-ML-GM08-3-0025</field>
1979
+ <field name="wizard_result">CANCEL</field>
1980
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0823_-_Inserimento_richiesta_sul_Portale_del_DL')])]"/>
1981
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Cancel')])" />
1982
+ </record>
1983
+ <record id="symple_triplet_phase_result_C1001_-_Annullamento_E-ML-GM08-3-0032" model="symple.triplet.phase.result">
1984
+ <field name="active">True</field>
1985
+ <field name="has_message">False</field>
1986
+ <field name="is_annulment">False</field>
1987
+ <field name="is_dl_solicitation_result">False</field>
1988
+ <field name="is_hidden">False</field>
1989
+ <field name="is_quote_expired">False</field>
1990
+ <field name="name">C1001 - Annullamento</field>
1991
+ <field name="next_phase_id" ref="symple_triplet_phase_A1595_-_Invio_Annullamento_alla_Market_Communication"/>
1992
+ <field name="state_code">E-ML-GM08-3-0032</field>
1993
+ <field name="wizard_result">CANCEL</field>
1994
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0816_-_In_attesa_esito_ammissibilit_')])]"/>
1995
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Cancel')])" />
1996
+ </record>
1997
+ <record id="symple_triplet_phase_result_C1001_-_Annullamento_E-ML-GM08-3-0040" model="symple.triplet.phase.result">
1998
+ <field name="active">True</field>
1999
+ <field name="has_message">False</field>
2000
+ <field name="is_annulment">False</field>
2001
+ <field name="is_dl_solicitation_result">False</field>
2002
+ <field name="is_hidden">True</field>
2003
+ <field name="is_quote_expired">False</field>
2004
+ <field name="name">C1001 - Annullamento</field>
2005
+ <field name="next_phase_id" ref="symple_triplet_phase_A1595_-_Invio_Annullamento_alla_Market_Communication"/>
2006
+ <field name="state_code">E-ML-GM08-3-0040</field>
2007
+ <field name="wizard_result">CANCEL</field>
2008
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0825_-_In_attesa_Esito_finale')])]"/>
2009
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Cancel')])" />
2010
+ </record>
2011
+ <record id="symple_triplet_phase_result_C1001_-_Annullamento_E-ML-GM08-3-00096" model="symple.triplet.phase.result">
2012
+ <field name="active">True</field>
2013
+ <field name="has_message">False</field>
2014
+ <field name="is_annulment">False</field>
2015
+ <field name="is_dl_solicitation_result">False</field>
2016
+ <field name="is_hidden">False</field>
2017
+ <field name="is_quote_expired">False</field>
2018
+ <field name="name">C1001 - Annullamento</field>
2019
+ <field name="next_phase_id" ref="symple_triplet_phase_A1595_-_Invio_Annullamento_alla_Market_Communication"/>
2020
+ <field name="state_code">E-ML-GM08-3-00096</field>
2021
+ <field name="wizard_result">CANCEL</field>
2022
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1715_-_In_attesa_check_IFS')])]"/>
2023
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Cancel')])" />
2024
+ </record>
2025
+ <record id="symple_triplet_phase_A1767_-_In_attesa_check_IFS_Annullamento" model="symple.triplet.phase">
2026
+ <field name="active">True</field>
2027
+ <field name="child_case">False</field>
2028
+ <field name="code"># Available variables:
2029
+ # - case_id: the case that just reached this phase
2030
+ # - request: allows you to make HTTP requests (method, url, headers, data)
2031
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
2032
+ # - json_load: allows you to use JSON.load to convert a json into an object
2033
+ # - env: Odoo Environment on which the action is triggered
2034
+ # - time, datetime, dateutil, timezone: useful Python libraries
2035
+ # - float_compare: Odoo function to compare floats based on specific precisions
2036
+ # - ValidationError: Warning Exception to use with raise
2037
+ # - Command: x2Many commands namespace
2038
+ # - OrderedDict: ordered dictionaries
2039
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
2040
+ # (line = case id, func = phase name)
2041
+ # To return a result, assign: result = {...}
2042
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
2043
+ # phase result will not be set.
2044
+
2045
+
2046
+
2047
+ </field>
2048
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
2049
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
2050
+ <field name="is_a_postalizer_phase">False</field>
2051
+ <field name="is_compute_refund">False</field>
2052
+ <field name="is_dl">False</field>
2053
+ <field name="is_needs_child_case">False</field>
2054
+ <field name="is_pick_refund_template">False</field>
2055
+ <field name="is_process_managed">False</field>
2056
+ <field name="is_quote_accepted">False</field>
2057
+ <field name="is_quote_sent">False</field>
2058
+ <field name="is_timeout">False</field>
2059
+ <field name="is_voidable">False</field>
2060
+ <field name="name">A1767 - In attesa check IFS Annullamento</field>
2061
+ </record>
2062
+ <record id="symple_triplet_phase_result_C2458_-_OK_Inviata_E-ML-GM08-3-0063" model="symple.triplet.phase.result">
2063
+ <field name="active">True</field>
2064
+ <field name="has_message">False</field>
2065
+ <field name="is_annulment">False</field>
2066
+ <field name="is_dl_solicitation_result">False</field>
2067
+ <field name="is_hidden">False</field>
2068
+ <field name="is_quote_expired">False</field>
2069
+ <field name="name">C2458 - OK Inviata</field>
2070
+ <field name="next_phase_id" ref="symple_triplet_phase_A1767_-_In_attesa_check_IFS_Annullamento"/>
2071
+ <field name="state_code">E-ML-GM08-3-0063</field>
2072
+ <field name="wizard_result">SUCCESS</field>
2073
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1595_-_Invio_Annullamento_alla_Market_Communication')])]"/>
2074
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
2075
+ </record>
2076
+ <record id="symple_triplet_phase_A0832_-_Invio_Richiesta_Annullamento" model="symple.triplet.phase">
2077
+ <field name="active">True</field>
2078
+ <field name="child_case">False</field>
2079
+ <field name="code"># Available variables:
2080
+ # - case_id: the case that just reached this phase
2081
+ # - request: allows you to make HTTP requests (method, url, headers, data)
2082
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
2083
+ # - json_load: allows you to use JSON.load to convert a json into an object
2084
+ # - env: Odoo Environment on which the action is triggered
2085
+ # - time, datetime, dateutil, timezone: useful Python libraries
2086
+ # - float_compare: Odoo function to compare floats based on specific precisions
2087
+ # - ValidationError: Warning Exception to use with raise
2088
+ # - Command: x2Many commands namespace
2089
+ # - OrderedDict: ordered dictionaries
2090
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
2091
+ # (line = case id, func = phase name)
2092
+ # To return a result, assign: result = {...}
2093
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
2094
+ # phase result will not be set.
2095
+
2096
+
2097
+
2098
+ </field>
2099
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
2100
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
2101
+ <field name="is_a_postalizer_phase">False</field>
2102
+ <field name="is_compute_refund">False</field>
2103
+ <field name="is_dl">False</field>
2104
+ <field name="is_needs_child_case">False</field>
2105
+ <field name="is_pick_refund_template">False</field>
2106
+ <field name="is_process_managed">False</field>
2107
+ <field name="is_quote_accepted">False</field>
2108
+ <field name="is_quote_sent">False</field>
2109
+ <field name="is_timeout">False</field>
2110
+ <field name="is_voidable">False</field>
2111
+ <field name="name">A0832 - Invio Richiesta Annullamento</field>
2112
+ </record>
2113
+ <record id="symple_triplet_phase_A1939_-_Verifica_Inserimento_Annullamento_sul_Portale_del_DL" model="symple.triplet.phase">
2114
+ <field name="active">True</field>
2115
+ <field name="child_case">False</field>
2116
+ <field name="code"># Available variables:
2117
+ # - case_id: the case that just reached this phase
2118
+ # - request: allows you to make HTTP requests (method, url, headers, data)
2119
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
2120
+ # - json_load: allows you to use JSON.load to convert a json into an object
2121
+ # - env: Odoo Environment on which the action is triggered
2122
+ # - time, datetime, dateutil, timezone: useful Python libraries
2123
+ # - float_compare: Odoo function to compare floats based on specific precisions
2124
+ # - ValidationError: Warning Exception to use with raise
2125
+ # - Command: x2Many commands namespace
2126
+ # - OrderedDict: ordered dictionaries
2127
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
2128
+ # (line = case id, func = phase name)
2129
+ # To return a result, assign: result = {...}
2130
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
2131
+ # phase result will not be set.
2132
+
2133
+
2134
+
2135
+ </field>
2136
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','BOT')])" />
2137
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
2138
+ <field name="is_a_postalizer_phase">False</field>
2139
+ <field name="is_compute_refund">False</field>
2140
+ <field name="is_dl">False</field>
2141
+ <field name="is_needs_child_case">False</field>
2142
+ <field name="is_pick_refund_template">False</field>
2143
+ <field name="is_process_managed">False</field>
2144
+ <field name="is_quote_accepted">False</field>
2145
+ <field name="is_quote_sent">False</field>
2146
+ <field name="is_timeout">False</field>
2147
+ <field name="is_voidable">False</field>
2148
+ <field name="name">A1939 - Verifica Inserimento Annullamento sul Portale del DL</field>
2149
+ </record>
2150
+ <record id="symple_triplet_phase_A0833_-_In_attesa_ricezione_Ammissibilit__Annullamento" model="symple.triplet.phase">
2151
+ <field name="active">True</field>
2152
+ <field name="child_case">False</field>
2153
+ <field name="code"># Available variables:
2154
+ # - case_id: the case that just reached this phase
2155
+ # - request: allows you to make HTTP requests (method, url, headers, data)
2156
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
2157
+ # - json_load: allows you to use JSON.load to convert a json into an object
2158
+ # - env: Odoo Environment on which the action is triggered
2159
+ # - time, datetime, dateutil, timezone: useful Python libraries
2160
+ # - float_compare: Odoo function to compare floats based on specific precisions
2161
+ # - ValidationError: Warning Exception to use with raise
2162
+ # - Command: x2Many commands namespace
2163
+ # - OrderedDict: ordered dictionaries
2164
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
2165
+ # (line = case id, func = phase name)
2166
+ # To return a result, assign: result = {...}
2167
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
2168
+ # phase result will not be set.
2169
+
2170
+
2171
+
2172
+ </field>
2173
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
2174
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
2175
+ <field name="is_a_postalizer_phase">False</field>
2176
+ <field name="is_compute_refund">False</field>
2177
+ <field name="is_dl">False</field>
2178
+ <field name="is_needs_child_case">False</field>
2179
+ <field name="is_pick_refund_template">False</field>
2180
+ <field name="is_process_managed">False</field>
2181
+ <field name="is_quote_accepted">False</field>
2182
+ <field name="is_quote_sent">False</field>
2183
+ <field name="is_timeout">False</field>
2184
+ <field name="is_voidable">False</field>
2185
+ <field name="name">A0833 - In attesa ricezione Ammissibilità Annullamento</field>
2186
+ </record>
2187
+ <record id="symple_triplet_phase_result_C1058_-_Inserita_richiesta_Annullamento_sul_portale_del_DL_E-ML-GM08-3-0069" model="symple.triplet.phase.result">
2188
+ <field name="active">True</field>
2189
+ <field name="has_message">False</field>
2190
+ <field name="is_annulment">False</field>
2191
+ <field name="is_dl_solicitation_result">False</field>
2192
+ <field name="is_hidden">False</field>
2193
+ <field name="is_quote_expired">False</field>
2194
+ <field name="name">C1058 - Inserita richiesta Annullamento sul portale del DL</field>
2195
+ <field name="next_phase_id" ref="symple_triplet_phase_A0833_-_In_attesa_ricezione_Ammissibilit__Annullamento"/>
2196
+ <field name="state_code">E-ML-GM08-3-0069</field>
2197
+ <field name="wizard_result">SUCCESS</field>
2198
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0832_-_Invio_Richiesta_Annullamento')])]"/>
2199
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
2200
+ </record>
2201
+ <record id="symple_triplet_phase_result_C3119_-_gestione_manuale_E-ML-GM08-3-0070" model="symple.triplet.phase.result">
2202
+ <field name="active">True</field>
2203
+ <field name="has_message">False</field>
2204
+ <field name="is_annulment">False</field>
2205
+ <field name="is_dl_solicitation_result">False</field>
2206
+ <field name="is_hidden">False</field>
2207
+ <field name="is_quote_expired">False</field>
2208
+ <field name="name">C3119 - gestione manuale</field>
2209
+ <field name="next_phase_id" ref="symple_triplet_phase_A0833_-_In_attesa_ricezione_Ammissibilit__Annullamento"/>
2210
+ <field name="state_code">E-ML-GM08-3-0070</field>
2211
+ <field name="wizard_result">KO-0050</field>
2212
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0832_-_Invio_Richiesta_Annullamento')])]"/>
2213
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO-0050')])" />
2214
+ </record>
2215
+ <record id="symple_triplet_phase_result_C1058_-_Inserita_richiesta_Annullamento_sul_portale_del_DL_E-ML-GM08-3-0072" model="symple.triplet.phase.result">
2216
+ <field name="active">True</field>
2217
+ <field name="has_message">False</field>
2218
+ <field name="is_annulment">False</field>
2219
+ <field name="is_dl_solicitation_result">False</field>
2220
+ <field name="is_hidden">False</field>
2221
+ <field name="is_quote_expired">False</field>
2222
+ <field name="name">C1058 - Inserita richiesta Annullamento sul portale del DL</field>
2223
+ <field name="next_phase_id" ref="symple_triplet_phase_A0833_-_In_attesa_ricezione_Ammissibilit__Annullamento"/>
2224
+ <field name="state_code">E-ML-GM08-3-0072</field>
2225
+ <field name="wizard_result">SUCCESS</field>
2226
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1939_-_Verifica_Inserimento_Annullamento_sul_Portale_del_DL')])]"/>
2227
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
2228
+ </record>
2229
+ <record id="symple_triplet_phase_result_C2463_-_Gestito_Fuori_linea_E-ML-GM08-3-0073" model="symple.triplet.phase.result">
2230
+ <field name="active">True</field>
2231
+ <field name="has_message">False</field>
2232
+ <field name="is_annulment">False</field>
2233
+ <field name="is_dl_solicitation_result">False</field>
2234
+ <field name="is_hidden">False</field>
2235
+ <field name="is_quote_expired">False</field>
2236
+ <field name="name">C2463 - Gestito Fuori linea</field>
2237
+ <field name="next_phase_id" ref="symple_triplet_phase_A0833_-_In_attesa_ricezione_Ammissibilit__Annullamento"/>
2238
+ <field name="state_code">E-ML-GM08-3-0073</field>
2239
+ <field name="wizard_result">SUCCESS</field>
2240
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1939_-_Verifica_Inserimento_Annullamento_sul_Portale_del_DL')])]"/>
2241
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
2242
+ </record>
2243
+ <record id="symple_triplet_phase_A1790_-_Gestione_Errore_Annullamento" model="symple.triplet.phase">
2244
+ <field name="active">True</field>
2245
+ <field name="child_case">False</field>
2246
+ <field name="code"># Available variables:
2247
+ # - case_id: the case that just reached this phase
2248
+ # - request: allows you to make HTTP requests (method, url, headers, data)
2249
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
2250
+ # - json_load: allows you to use JSON.load to convert a json into an object
2251
+ # - env: Odoo Environment on which the action is triggered
2252
+ # - time, datetime, dateutil, timezone: useful Python libraries
2253
+ # - float_compare: Odoo function to compare floats based on specific precisions
2254
+ # - ValidationError: Warning Exception to use with raise
2255
+ # - Command: x2Many commands namespace
2256
+ # - OrderedDict: ordered dictionaries
2257
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
2258
+ # (line = case id, func = phase name)
2259
+ # To return a result, assign: result = {...}
2260
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
2261
+ # phase result will not be set.
2262
+
2263
+
2264
+
2265
+ </field>
2266
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
2267
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
2268
+ <field name="is_a_postalizer_phase">False</field>
2269
+ <field name="is_compute_refund">False</field>
2270
+ <field name="is_dl">False</field>
2271
+ <field name="is_needs_child_case">False</field>
2272
+ <field name="is_pick_refund_template">False</field>
2273
+ <field name="is_process_managed">False</field>
2274
+ <field name="is_quote_accepted">False</field>
2275
+ <field name="is_quote_sent">False</field>
2276
+ <field name="is_timeout">False</field>
2277
+ <field name="is_voidable">False</field>
2278
+ <field name="name">A1790 - Gestione Errore Annullamento</field>
2279
+ </record>
2280
+ <record id="symple_triplet_phase_result_C2476_-_KO_-_Ammissibilit__Annullamento_Hub_E-ML-GM08-3-0067" model="symple.triplet.phase.result">
2281
+ <field name="active">True</field>
2282
+ <field name="has_message">False</field>
2283
+ <field name="is_annulment">False</field>
2284
+ <field name="is_dl_solicitation_result">False</field>
2285
+ <field name="is_hidden">False</field>
2286
+ <field name="is_quote_expired">False</field>
2287
+ <field name="name">C2476 - KO - Ammissibilità Annullamento Hub</field>
2288
+ <field name="next_phase_id" ref="symple_triplet_phase_A1790_-_Gestione_Errore_Annullamento"/>
2289
+ <field name="state_code">E-ML-GM08-3-0067</field>
2290
+ <field name="wizard_result">KO-HUB</field>
2291
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1767_-_In_attesa_check_IFS_Annullamento')])]"/>
2292
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO-HUB')])" />
2293
+ </record>
2294
+ <record id="symple_triplet_phase_result_C1060_-_Ammissibilit__Annullamento_KO_E-ML-GM08-3-0076" model="symple.triplet.phase.result">
2295
+ <field name="active">True</field>
2296
+ <field name="has_message">False</field>
2297
+ <field name="is_annulment">False</field>
2298
+ <field name="is_dl_solicitation_result">False</field>
2299
+ <field name="is_hidden">False</field>
2300
+ <field name="is_quote_expired">False</field>
2301
+ <field name="name">C1060 - Ammissibilità Annullamento KO</field>
2302
+ <field name="next_phase_id" ref="symple_triplet_phase_A1790_-_Gestione_Errore_Annullamento"/>
2303
+ <field name="state_code">E-ML-GM08-3-0076</field>
2304
+ <field name="wizard_result">KO-100-ANN</field>
2305
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0833_-_In_attesa_ricezione_Ammissibilit__Annullamento')])]"/>
2306
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO-100-ANN')])" />
2307
+ </record>
2308
+ <record id="symple_triplet_phase_result_C1035_-_Inserita_richiesta_sul_portale_del_DL_E-ML-GM08-3-0078" model="symple.triplet.phase.result">
2309
+ <field name="active">True</field>
2310
+ <field name="has_message">False</field>
2311
+ <field name="is_annulment">False</field>
2312
+ <field name="is_dl_solicitation_result">False</field>
2313
+ <field name="is_hidden">False</field>
2314
+ <field name="is_quote_expired">False</field>
2315
+ <field name="name">C1035 - Inserita richiesta sul portale del DL</field>
2316
+ <field name="next_phase_id" ref="symple_triplet_phase_A1880_-_Verifica_Tipologia_di_Comunicazione"/>
2317
+ <field name="state_code">E-ML-GM08-3-0078</field>
2318
+ <field name="wizard_result">SUCCESS</field>
2319
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1790_-_Gestione_Errore_Annullamento')])]"/>
2320
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
2321
+ </record>
2322
+ <record id="symple_triplet_phase_result_C1037_-_Ammissibilit__OK_E-ML-GM08-3-0079" model="symple.triplet.phase.result">
2323
+ <field name="active">True</field>
2324
+ <field name="has_message">False</field>
2325
+ <field name="is_annulment">False</field>
2326
+ <field name="is_dl_solicitation_result">False</field>
2327
+ <field name="is_hidden">False</field>
2328
+ <field name="is_quote_expired">False</field>
2329
+ <field name="name">C1037 - Ammissibilità OK</field>
2330
+ <field name="next_phase_id" ref="symple_triplet_phase_A0825_-_In_attesa_Esito_finale"/>
2331
+ <field name="state_code">E-ML-GM08-3-0079</field>
2332
+ <field name="wizard_result">OK-100</field>
2333
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1790_-_Gestione_Errore_Annullamento')])]"/>
2334
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','OK-100')])" />
2335
+ </record>
2336
+ <record id="symple_triplet_phase_result_C1038_-_Ammissibilit__KO_E-ML-GM08-3-0080" model="symple.triplet.phase.result">
2337
+ <field name="active">True</field>
2338
+ <field name="has_message">False</field>
2339
+ <field name="is_annulment">False</field>
2340
+ <field name="is_dl_solicitation_result">False</field>
2341
+ <field name="is_hidden">False</field>
2342
+ <field name="is_quote_expired">False</field>
2343
+ <field name="name">C1038 - Ammissibilità KO</field>
2344
+ <field name="next_phase_id" ref="symple_triplet_phase_A1717_-_Gestione_scarti_da_cruscotto"/>
2345
+ <field name="state_code">E-ML-GM08-3-0080</field>
2346
+ <field name="wizard_result">KO-100</field>
2347
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1790_-_Gestione_Errore_Annullamento')])]"/>
2348
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO-100')])" />
2349
+ </record>
2350
+ <record id="symple_triplet_phase_result_C2416_-_Risottomessa_da_cruscotto_E-ML-GM08-3-0081" model="symple.triplet.phase.result">
2351
+ <field name="active">True</field>
2352
+ <field name="has_message">False</field>
2353
+ <field name="is_annulment">False</field>
2354
+ <field name="is_dl_solicitation_result">False</field>
2355
+ <field name="is_hidden">False</field>
2356
+ <field name="is_quote_expired">False</field>
2357
+ <field name="name">C2416 - Risottomessa da cruscotto</field>
2358
+ <field name="next_phase_id" ref="symple_triplet_phase_A1767_-_In_attesa_check_IFS_Annullamento"/>
2359
+ <field name="state_code">E-ML-GM08-3-0081</field>
2360
+ <field name="wizard_result">RESUBMIT</field>
2361
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1790_-_Gestione_Errore_Annullamento')])]"/>
2362
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Resubmit')])" />
2363
+ </record>
2364
+ <record id="symple_triplet_phase_result_C1043_-_Esito_finale_KO_E-ML-GM08-3-000100" model="symple.triplet.phase.result">
2365
+ <field name="active">True</field>
2366
+ <field name="has_message">False</field>
2367
+ <field name="is_annulment">False</field>
2368
+ <field name="is_dl_solicitation_result">False</field>
2369
+ <field name="is_hidden">False</field>
2370
+ <field name="is_quote_expired">False</field>
2371
+ <field name="name">C1043 - Esito finale KO</field>
2372
+ <field name="next_phase_id" ref="symple_triplet_phase_A1717_-_Gestione_scarti_da_cruscotto"/>
2373
+ <field name="state_code">E-ML-GM08-3-000100</field>
2374
+ <field name="wizard_result">KO-150</field>
2375
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1790_-_Gestione_Errore_Annullamento')])]"/>
2376
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO-150')])" />
2377
+ </record>
2378
+ <record id="symple_triplet_phase_A0831_-_Verifica_Fase_Precedente" model="symple.triplet.phase">
2379
+ <field name="active">True</field>
2380
+ <field name="child_case">False</field>
2381
+ <field name="code"># Available variables:
2382
+ # - case_id: the case that just reached this phase
2383
+ # - request: allows you to make HTTP requests (method, url, headers, data)
2384
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
2385
+ # - json_load: allows you to use JSON.load to convert a json into an object
2386
+ # - env: Odoo Environment on which the action is triggered
2387
+ # - time, datetime, dateutil, timezone: useful Python libraries
2388
+ # - float_compare: Odoo function to compare floats based on specific precisions
2389
+ # - ValidationError: Warning Exception to use with raise
2390
+ # - Command: x2Many commands namespace
2391
+ # - OrderedDict: ordered dictionaries
2392
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
2393
+ # (line = case id, func = phase name)
2394
+ # To return a result, assign: result = {...}
2395
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
2396
+ # phase result will not be set.
2397
+
2398
+ try:
2399
+ env["helpdesk.ticket"].restore_latest_checkpoint_phase(case_id.id)
2400
+
2401
+
2402
+ except Exception as e:
2403
+ prev = case_id.info_message + "\n" if case_id.info_message else ""
2404
+ case_id.write({"info_message": prev + str(e)})
2405
+ </field>
2406
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
2407
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
2408
+ <field name="is_a_postalizer_phase">False</field>
2409
+ <field name="is_compute_refund">False</field>
2410
+ <field name="is_dl">False</field>
2411
+ <field name="is_needs_child_case">False</field>
2412
+ <field name="is_pick_refund_template">False</field>
2413
+ <field name="is_process_managed">False</field>
2414
+ <field name="is_quote_accepted">False</field>
2415
+ <field name="is_quote_sent">False</field>
2416
+ <field name="is_timeout">False</field>
2417
+ <field name="is_voidable">False</field>
2418
+ <field name="name">A0831 - Verifica Fase Precedente</field>
2419
+ <field name="set_result_automatically">from_code</field>
2420
+ </record>
2421
+ <record id="symple_triplet_phase_result_C2409_-_KO_Confermato_E-ML-GM08-3-0082" model="symple.triplet.phase.result">
2422
+ <field name="active">True</field>
2423
+ <field name="has_message">False</field>
2424
+ <field name="is_annulment">False</field>
2425
+ <field name="is_dl_solicitation_result">False</field>
2426
+ <field name="is_hidden">False</field>
2427
+ <field name="is_quote_expired">False</field>
2428
+ <field name="name">C2409 - KO Confermato</field>
2429
+ <field name="next_phase_id" ref="symple_triplet_phase_A0831_-_Verifica_Fase_Precedente"/>
2430
+ <field name="state_code">E-ML-GM08-3-0082</field>
2431
+ <field name="wizard_result">KO</field>
2432
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1790_-_Gestione_Errore_Annullamento')])]"/>
2433
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO')])" />
2434
+ </record>
2435
+ <record id="symple_triplet_phase_result_C1055_-_Ritorno_in_In_attesa_esito_Ammissibilit__E-ML-GM08-3-0084" model="symple.triplet.phase.result">
2436
+ <field name="active">True</field>
2437
+ <field name="has_message">False</field>
2438
+ <field name="is_annulment">False</field>
2439
+ <field name="is_dl_solicitation_result">False</field>
2440
+ <field name="is_hidden">False</field>
2441
+ <field name="is_quote_expired">False</field>
2442
+ <field name="name">C1055 - Ritorno in In attesa esito Ammissibilità</field>
2443
+ <field name="next_phase_id" ref="symple_triplet_phase_A0816_-_In_attesa_esito_ammissibilit_"/>
2444
+ <field name="state_code">E-ML-GM08-3-0084</field>
2445
+ <field name="wizard_result">SUCCESS</field>
2446
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0831_-_Verifica_Fase_Precedente')])]"/>
2447
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
2448
+ </record>
2449
+ <record id="symple_triplet_phase_result_C2482_-_Ritorno_in_Inserimento_richiesta_sul_portale_del_DL_E-ML-GM08-3-0085" model="symple.triplet.phase.result">
2450
+ <field name="active">True</field>
2451
+ <field name="has_message">False</field>
2452
+ <field name="is_annulment">False</field>
2453
+ <field name="is_dl_solicitation_result">False</field>
2454
+ <field name="is_hidden">False</field>
2455
+ <field name="is_quote_expired">False</field>
2456
+ <field name="name">C2482 - Ritorno in Inserimento richiesta sul portale del DL</field>
2457
+ <field name="next_phase_id" ref="symple_triplet_phase_A0823_-_Inserimento_richiesta_sul_Portale_del_DL"/>
2458
+ <field name="state_code">E-ML-GM08-3-0085</field>
2459
+ <field name="wizard_result">SUCCESS</field>
2460
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0831_-_Verifica_Fase_Precedente')])]"/>
2461
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
2462
+ </record>
2463
+ <record id="symple_triplet_phase_result_C1056_-_Ritorno_in_In_attesa_Esito_finale_E-ML-GM08-3-0086" model="symple.triplet.phase.result">
2464
+ <field name="active">True</field>
2465
+ <field name="has_message">False</field>
2466
+ <field name="is_annulment">False</field>
2467
+ <field name="is_dl_solicitation_result">False</field>
2468
+ <field name="is_hidden">False</field>
2469
+ <field name="is_quote_expired">False</field>
2470
+ <field name="name">C1056 - Ritorno in In attesa Esito finale</field>
2471
+ <field name="next_phase_id" ref="symple_triplet_phase_A0825_-_In_attesa_Esito_finale"/>
2472
+ <field name="state_code">E-ML-GM08-3-0086</field>
2473
+ <field name="wizard_result">SUCCESS</field>
2474
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0831_-_Verifica_Fase_Precedente')])]"/>
2475
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
2476
+ </record>
2477
+ <record id="symple_triplet_phase_A1378_-_Case_Lavorato_-_Punto_Interrotto" model="symple.triplet.phase">
2478
+ <field name="active">True</field>
2479
+ <field name="child_case">False</field>
2480
+ <field name="code">if case_id.matrix_process_id:
2481
+ case_id.close_matrix_process()</field>
2482
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
2483
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','Done')])" />
2484
+ <field name="is_a_postalizer_phase">False</field>
2485
+ <field name="is_compute_refund">False</field>
2486
+ <field name="is_dl">False</field>
2487
+ <field name="is_needs_child_case">False</field>
2488
+ <field name="is_pick_refund_template">False</field>
2489
+ <field name="is_process_managed">False</field>
2490
+ <field name="is_quote_accepted">False</field>
2491
+ <field name="is_quote_sent">False</field>
2492
+ <field name="is_timeout">False</field>
2493
+ <field name="is_voidable">False</field>
2494
+ <field name="name">A1378 - Case Lavorato - Punto Interrotto</field>
2495
+ <field name="set_result_automatically">from_code</field>
2496
+ </record>
2497
+ <record id="symple_triplet_phase_result_C2003_-_OK_-_Case_di_invio_oneri_aperto_E-ML-GM08-3-0052" model="symple.triplet.phase.result">
2498
+ <field name="active">True</field>
2499
+ <field name="has_message">False</field>
2500
+ <field name="is_annulment">False</field>
2501
+ <field name="is_dl_solicitation_result">False</field>
2502
+ <field name="is_hidden">False</field>
2503
+ <field name="is_quote_expired">False</field>
2504
+ <field name="name">C2003 - OK - Case di invio oneri aperto</field>
2505
+ <field name="next_phase_id" ref="symple_triplet_phase_A1378_-_Case_Lavorato_-_Punto_Interrotto"/>
2506
+ <field name="state_code">E-ML-GM08-3-0052</field>
2507
+ <field name="wizard_result">SUCCESS</field>
2508
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1379_-_Apertura_Case_Invio_Onere')])]"/>
2509
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
2510
+ </record>
2511
+ <record id="symple_triplet_phase_A0811_-_Case_Lavorato_KO" model="symple.triplet.phase">
2512
+ <field name="active">True</field>
2513
+ <field name="child_case">False</field>
2514
+ <field name="code">if case_id.matrix_process_id:
2515
+ case_id.close_matrix_process(status="ERROR")</field>
2516
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
2517
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','Done KO')])" />
2518
+ <field name="is_a_postalizer_phase">False</field>
2519
+ <field name="is_compute_refund">False</field>
2520
+ <field name="is_dl">False</field>
2521
+ <field name="is_needs_child_case">False</field>
2522
+ <field name="is_pick_refund_template">False</field>
2523
+ <field name="is_process_managed">False</field>
2524
+ <field name="is_quote_accepted">False</field>
2525
+ <field name="is_quote_sent">False</field>
2526
+ <field name="is_timeout">False</field>
2527
+ <field name="is_voidable">False</field>
2528
+ <field name="name">A0811 - Case Lavorato KO</field>
2529
+ <field name="set_result_automatically">from_code</field>
2530
+ </record>
2531
+ <record id="symple_triplet_phase_result_C2641_-_KO_-_Incompatibilit__Non_risolta_E-ML-GM08-3-0006" model="symple.triplet.phase.result">
2532
+ <field name="active">True</field>
2533
+ <field name="has_message">False</field>
2534
+ <field name="is_annulment">False</field>
2535
+ <field name="is_dl_solicitation_result">False</field>
2536
+ <field name="is_hidden">False</field>
2537
+ <field name="is_quote_expired">False</field>
2538
+ <field name="name">C2641 - KO - Incompatibilità Non risolta</field>
2539
+ <field name="next_phase_id" ref="symple_triplet_phase_A0811_-_Case_Lavorato_KO"/>
2540
+ <field name="state_code">E-ML-GM08-3-0006</field>
2541
+ <field name="wizard_result">KO</field>
2542
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1937_-_Verifica_Case_Incompatibile')])]"/>
2543
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO')])" />
2544
+ </record>
2545
+ <record id="symple_triplet_phase_result_C1885_-_KO_-_Lettera_non_inviata_E-ML-GM08-3-0009" model="symple.triplet.phase.result">
2546
+ <field name="active">True</field>
2547
+ <field name="has_message">False</field>
2548
+ <field name="is_annulment">False</field>
2549
+ <field name="is_dl_solicitation_result">False</field>
2550
+ <field name="is_hidden">False</field>
2551
+ <field name="is_quote_expired">False</field>
2552
+ <field name="name">C1885 - KO - Lettera non inviata</field>
2553
+ <field name="next_phase_id" ref="symple_triplet_phase_A0811_-_Case_Lavorato_KO"/>
2554
+ <field name="state_code">E-ML-GM08-3-0009</field>
2555
+ <field name="wizard_result">KO</field>
2556
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1311_-_Invio_Lettera__Extra_sistema_')])]"/>
2557
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO')])" />
2558
+ </record>
2559
+ <record id="symple_triplet_phase_result_C1931_-_Errore_non_rilavorabile_E-ML-GM08-3-0021" model="symple.triplet.phase.result">
2560
+ <field name="active">True</field>
2561
+ <field name="has_message">False</field>
2562
+ <field name="is_annulment">False</field>
2563
+ <field name="is_dl_solicitation_result">False</field>
2564
+ <field name="is_hidden">False</field>
2565
+ <field name="is_quote_expired">False</field>
2566
+ <field name="name">C1931 - Errore non rilavorabile</field>
2567
+ <field name="next_phase_id" ref="symple_triplet_phase_A0811_-_Case_Lavorato_KO"/>
2568
+ <field name="state_code">E-ML-GM08-3-0021</field>
2569
+ <field name="wizard_result">KO</field>
2570
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1717_-_Gestione_scarti_da_cruscotto')])]"/>
2571
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO')])" />
2572
+ </record>
2573
+ <record id="symple_triplet_phase_A0809_-_Case_Annullato" model="symple.triplet.phase">
2574
+ <field name="active">True</field>
2575
+ <field name="child_case">False</field>
2576
+ <field name="code"># Available variables:
2577
+ # - case_id: the case that just reached this phase
2578
+ # - request: allows you to make HTTP requests (method, url, headers, data)
2579
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
2580
+ # - json_load: allows you to use JSON.load to convert a json into an object
2581
+ # - env: Odoo Environment on which the action is triggered
2582
+ # - time, datetime, dateutil, timezone: useful Python libraries
2583
+ # - float_compare: Odoo function to compare floats based on specific precisions
2584
+ # - ValidationError: Warning Exception to use with raise
2585
+ # - Command: x2Many commands namespace
2586
+ # - OrderedDict: ordered dictionaries
2587
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
2588
+ # (line = case id, func = phase name)
2589
+ # To return a result, assign: result = {...}
2590
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
2591
+ # phase result will not be set.
2592
+
2593
+
2594
+
2595
+ </field>
2596
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
2597
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','Cancelled')])" />
2598
+ <field name="is_a_postalizer_phase">False</field>
2599
+ <field name="is_compute_refund">False</field>
2600
+ <field name="is_dl">False</field>
2601
+ <field name="is_needs_child_case">False</field>
2602
+ <field name="is_pick_refund_template">False</field>
2603
+ <field name="is_process_managed">False</field>
2604
+ <field name="is_quote_accepted">False</field>
2605
+ <field name="is_quote_sent">False</field>
2606
+ <field name="is_timeout">False</field>
2607
+ <field name="is_voidable">False</field>
2608
+ <field name="name">A0809 - Case Annullato</field>
2609
+ </record>
2610
+ <record id="symple_triplet_phase_result_C1886_-_Annullamento_Case_durante_Invio_Lettera_E-ML-GM08-3-0010" model="symple.triplet.phase.result">
2611
+ <field name="active">True</field>
2612
+ <field name="has_message">False</field>
2613
+ <field name="is_annulment">False</field>
2614
+ <field name="is_dl_solicitation_result">False</field>
2615
+ <field name="is_hidden">False</field>
2616
+ <field name="is_quote_expired">False</field>
2617
+ <field name="name">C1886 - Annullamento Case durante Invio Lettera</field>
2618
+ <field name="next_phase_id" ref="symple_triplet_phase_A0809_-_Case_Annullato"/>
2619
+ <field name="state_code">E-ML-GM08-3-0010</field>
2620
+ <field name="wizard_result">SUCCESS</field>
2621
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1311_-_Invio_Lettera__Extra_sistema_')])]"/>
2622
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
2623
+ </record>
2624
+ <record id="symple_triplet_phase_result_C1001_-_Annullamento_E-ML-GM08-3-0013" model="symple.triplet.phase.result">
2625
+ <field name="active">True</field>
2626
+ <field name="has_message">False</field>
2627
+ <field name="is_annulment">False</field>
2628
+ <field name="is_dl_solicitation_result">False</field>
2629
+ <field name="is_hidden">False</field>
2630
+ <field name="is_quote_expired">False</field>
2631
+ <field name="name">C1001 - Annullamento</field>
2632
+ <field name="next_phase_id" ref="symple_triplet_phase_A0809_-_Case_Annullato"/>
2633
+ <field name="state_code">E-ML-GM08-3-0013</field>
2634
+ <field name="wizard_result">CANCEL</field>
2635
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1310_-_In_attesa_11_giorni_lavorativi')])]"/>
2636
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Cancel')])" />
2637
+ </record>
2638
+ <record id="symple_triplet_phase_result_C1925_-_Annullamento_in_fase_di_Controlli_CRM_per_Taglio_Colonna_E-ML-GM08-3-0054" model="symple.triplet.phase.result">
2639
+ <field name="active">True</field>
2640
+ <field name="has_message">False</field>
2641
+ <field name="is_annulment">False</field>
2642
+ <field name="is_dl_solicitation_result">False</field>
2643
+ <field name="is_hidden">False</field>
2644
+ <field name="is_quote_expired">False</field>
2645
+ <field name="name">C1925 - Annullamento in fase di Controlli CRM per Taglio Colonna</field>
2646
+ <field name="next_phase_id" ref="symple_triplet_phase_A0809_-_Case_Annullato"/>
2647
+ <field name="state_code">E-ML-GM08-3-0054</field>
2648
+ <field name="wizard_result">CANCEL</field>
2649
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1317_-_Errore_in_fase_di_Controlli_CRM_per_Taglio_Colonna')])]"/>
2650
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Cancel')])" />
2651
+ </record>
2652
+ <record id="symple_triplet_phase_result_C1893_-_Annulla_Creazione_Ordine_CRM_E-ML-GM08-3-0055" model="symple.triplet.phase.result">
2653
+ <field name="active">True</field>
2654
+ <field name="has_message">False</field>
2655
+ <field name="is_annulment">False</field>
2656
+ <field name="is_dl_solicitation_result">False</field>
2657
+ <field name="is_hidden">False</field>
2658
+ <field name="is_quote_expired">False</field>
2659
+ <field name="name">C1893 - Annulla Creazione Ordine CRM</field>
2660
+ <field name="next_phase_id" ref="symple_triplet_phase_A0809_-_Case_Annullato"/>
2661
+ <field name="state_code">E-ML-GM08-3-0055</field>
2662
+ <field name="wizard_result">CANCEL</field>
2663
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1318_-_Errore_in_fase_di_Creazione_Ordine_CRM_per_Taglio_Colonna')])]"/>
2664
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Cancel')])" />
2665
+ </record>
2666
+ <record id="symple_triplet_phase_result_C1917_-_Annulla_-_Integrazione_M2C_per_Taglio_Colonna_E-ML-GM08-3-0057" model="symple.triplet.phase.result">
2667
+ <field name="active">True</field>
2668
+ <field name="has_message">False</field>
2669
+ <field name="is_annulment">False</field>
2670
+ <field name="is_dl_solicitation_result">False</field>
2671
+ <field name="is_hidden">False</field>
2672
+ <field name="is_quote_expired">False</field>
2673
+ <field name="name">C1917 - Annulla - Integrazione M2C per Taglio Colonna</field>
2674
+ <field name="next_phase_id" ref="symple_triplet_phase_A0809_-_Case_Annullato"/>
2675
+ <field name="state_code">E-ML-GM08-3-0057</field>
2676
+ <field name="wizard_result">CANCEL</field>
2677
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1319_-_Errore_in_fase_di_Integrazione_M2C_per_Taglio_Colonna')])]"/>
2678
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Cancel')])" />
2679
+ </record>
2680
+ <record id="symple_triplet_phase_result_C1920_-_Annulla_-_Attesa_Esito_M2c_E-ML-GM08-3-0059" model="symple.triplet.phase.result">
2681
+ <field name="active">True</field>
2682
+ <field name="has_message">False</field>
2683
+ <field name="is_annulment">False</field>
2684
+ <field name="is_dl_solicitation_result">False</field>
2685
+ <field name="is_hidden">False</field>
2686
+ <field name="is_quote_expired">False</field>
2687
+ <field name="name">C1920 - Annulla - Attesa Esito M2c</field>
2688
+ <field name="next_phase_id" ref="symple_triplet_phase_A0809_-_Case_Annullato"/>
2689
+ <field name="state_code">E-ML-GM08-3-0059</field>
2690
+ <field name="wizard_result">CANCEL</field>
2691
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1320_-_Errore_in_fase_Attesa_Esito_M2C_per_Taglio_Colonna')])]"/>
2692
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Cancel')])" />
2693
+ </record>
2694
+ <record id="symple_triplet_phase_result_C1923_-_Annulla_-_Aggiornamento_CRM_E-ML-GM08-3-0061" model="symple.triplet.phase.result">
2695
+ <field name="active">True</field>
2696
+ <field name="has_message">False</field>
2697
+ <field name="is_annulment">False</field>
2698
+ <field name="is_dl_solicitation_result">False</field>
2699
+ <field name="is_hidden">False</field>
2700
+ <field name="is_quote_expired">False</field>
2701
+ <field name="name">C1923 - Annulla - Aggiornamento CRM</field>
2702
+ <field name="next_phase_id" ref="symple_triplet_phase_A0809_-_Case_Annullato"/>
2703
+ <field name="state_code">E-ML-GM08-3-0061</field>
2704
+ <field name="wizard_result">CANCEL</field>
2705
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1321_-_Errore_in_fase_di_Aggiornamento_CRM_per_Taglio_Colonna')])]"/>
2706
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Cancel')])" />
2707
+ </record>
2708
+ <record id="symple_triplet_phase_result_C2599_-_annullamento_confermato_E-ML-GM08-3-0065" model="symple.triplet.phase.result">
2709
+ <field name="active">True</field>
2710
+ <field name="has_message">False</field>
2711
+ <field name="is_annulment">False</field>
2712
+ <field name="is_dl_solicitation_result">False</field>
2713
+ <field name="is_hidden">False</field>
2714
+ <field name="is_quote_expired">False</field>
2715
+ <field name="name">C2599 - annullamento confermato</field>
2716
+ <field name="next_phase_id" ref="symple_triplet_phase_A0809_-_Case_Annullato"/>
2717
+ <field name="state_code">E-ML-GM08-3-0065</field>
2718
+ <field name="wizard_result">OK-DEF-HUB-ANN</field>
2719
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1767_-_In_attesa_check_IFS_Annullamento')])]"/>
2720
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','OK-DEF-ANN')])" />
2721
+ </record>
2722
+ <record id="symple_triplet_phase_result_C1059_-_Ammissibilit__Annullamento_OK_E-ML-GM08-3-0075" model="symple.triplet.phase.result">
2723
+ <field name="active">True</field>
2724
+ <field name="has_message">False</field>
2725
+ <field name="is_annulment">False</field>
2726
+ <field name="is_dl_solicitation_result">False</field>
2727
+ <field name="is_hidden">False</field>
2728
+ <field name="is_quote_expired">False</field>
2729
+ <field name="name">C1059 - Ammissibilità Annullamento OK</field>
2730
+ <field name="next_phase_id" ref="symple_triplet_phase_A0809_-_Case_Annullato"/>
2731
+ <field name="state_code">E-ML-GM08-3-0075</field>
2732
+ <field name="wizard_result">OK-100-ANN</field>
2733
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0833_-_In_attesa_ricezione_Ammissibilit__Annullamento')])]"/>
2734
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','OK-100-ANN')])" />
2735
+ </record>
2736
+ <record id="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato" model="symple.triplet.phase">
2737
+ <field name="active">True</field>
2738
+ <field name="child_case">False</field>
2739
+ <field name="code"># Available variables:
2740
+ # - case_id: the case that just reached this phase
2741
+ # - request: allows you to make HTTP requests (method, url, headers, data)
2742
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
2743
+ # - json_load: allows you to use JSON.load to convert a json into an object
2744
+ # - env: Odoo Environment on which the action is triggered
2745
+ # - time, datetime, dateutil, timezone: useful Python libraries
2746
+ # - float_compare: Odoo function to compare floats based on specific precisions
2747
+ # - ValidationError: Warning Exception to use with raise
2748
+ # - Command: x2Many commands namespace
2749
+ # - OrderedDict: ordered dictionaries
2750
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
2751
+ # (line = case id, func = phase name)
2752
+ # To return a result, assign: result = {...}
2753
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
2754
+ # phase result will not be set.
2755
+
2756
+
2757
+
2758
+ </field>
2759
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
2760
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','Done')])" />
2761
+ <field name="is_a_postalizer_phase">False</field>
2762
+ <field name="is_compute_refund">False</field>
2763
+ <field name="is_dl">False</field>
2764
+ <field name="is_needs_child_case">False</field>
2765
+ <field name="is_pick_refund_template">False</field>
2766
+ <field name="is_process_managed">False</field>
2767
+ <field name="is_quote_accepted">False</field>
2768
+ <field name="is_quote_sent">False</field>
2769
+ <field name="is_timeout">False</field>
2770
+ <field name="is_voidable">False</field>
2771
+ <field name="name">A1309 - Chiuso e Riattivato</field>
2772
+ </record>
2773
+ <record id="symple_triplet_phase_result_C1883_-_Chiuso_e_Riattivato_da_M2C_E-ML-GM08-3-0004" model="symple.triplet.phase.result">
2774
+ <field name="active">True</field>
2775
+ <field name="has_message">False</field>
2776
+ <field name="is_annulment">False</field>
2777
+ <field name="is_dl_solicitation_result">False</field>
2778
+ <field name="is_hidden">True</field>
2779
+ <field name="is_quote_expired">False</field>
2780
+ <field name="name">C1883 - Chiuso e Riattivato da M2C</field>
2781
+ <field name="next_phase_id" ref="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato"/>
2782
+ <field name="state_code">E-ML-GM08-3-0004</field>
2783
+ <field name="wizard_result">DEF_SUCCESS</field>
2784
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1938_-_Verifica_Compatibilit__Processi')])]"/>
2785
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Definitive Success')])" />
2786
+ </record>
2787
+ <record id="symple_triplet_phase_result_C1883_-_Chiuso_e_Riattivato_da_M2C_E-ML-GM08-3-0007" model="symple.triplet.phase.result">
2788
+ <field name="active">True</field>
2789
+ <field name="has_message">False</field>
2790
+ <field name="is_annulment">False</field>
2791
+ <field name="is_dl_solicitation_result">False</field>
2792
+ <field name="is_hidden">True</field>
2793
+ <field name="is_quote_expired">False</field>
2794
+ <field name="name">C1883 - Chiuso e Riattivato da M2C</field>
2795
+ <field name="next_phase_id" ref="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato"/>
2796
+ <field name="state_code">E-ML-GM08-3-0007</field>
2797
+ <field name="wizard_result">DEF_SUCCESS</field>
2798
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1937_-_Verifica_Case_Incompatibile')])]"/>
2799
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Definitive Success')])" />
2800
+ </record>
2801
+ <record id="symple_triplet_phase_result_C1883_-_Chiuso_e_Riattivato_da_M2C_E-ML-GM08-3-0011" model="symple.triplet.phase.result">
2802
+ <field name="active">True</field>
2803
+ <field name="has_message">False</field>
2804
+ <field name="is_annulment">False</field>
2805
+ <field name="is_dl_solicitation_result">False</field>
2806
+ <field name="is_hidden">True</field>
2807
+ <field name="is_quote_expired">False</field>
2808
+ <field name="name">C1883 - Chiuso e Riattivato da M2C</field>
2809
+ <field name="next_phase_id" ref="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato"/>
2810
+ <field name="state_code">E-ML-GM08-3-0011</field>
2811
+ <field name="wizard_result">DEF_SUCCESS</field>
2812
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1311_-_Invio_Lettera__Extra_sistema_')])]"/>
2813
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Definitive Success')])" />
2814
+ </record>
2815
+ <record id="symple_triplet_phase_result_C1883_-_Chiuso_e_Riattivato_da_M2C_E-ML-GM08-3-0014" model="symple.triplet.phase.result">
2816
+ <field name="active">True</field>
2817
+ <field name="has_message">False</field>
2818
+ <field name="is_annulment">False</field>
2819
+ <field name="is_dl_solicitation_result">False</field>
2820
+ <field name="is_hidden">True</field>
2821
+ <field name="is_quote_expired">False</field>
2822
+ <field name="name">C1883 - Chiuso e Riattivato da M2C</field>
2823
+ <field name="next_phase_id" ref="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato"/>
2824
+ <field name="state_code">E-ML-GM08-3-0014</field>
2825
+ <field name="wizard_result">DEF_SUCCESS</field>
2826
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1310_-_In_attesa_11_giorni_lavorativi')])]"/>
2827
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Definitive Success')])" />
2828
+ </record>
2829
+ <record id="symple_triplet_phase_result_C1883_-_Chiuso_e_Riattivato_da_M2C_E-ML-GM08-3-0016" model="symple.triplet.phase.result">
2830
+ <field name="active">True</field>
2831
+ <field name="has_message">False</field>
2832
+ <field name="is_annulment">False</field>
2833
+ <field name="is_dl_solicitation_result">False</field>
2834
+ <field name="is_hidden">True</field>
2835
+ <field name="is_quote_expired">False</field>
2836
+ <field name="name">C1883 - Chiuso e Riattivato da M2C</field>
2837
+ <field name="next_phase_id" ref="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato"/>
2838
+ <field name="state_code">E-ML-GM08-3-0016</field>
2839
+ <field name="wizard_result">DEF_SUCCESS</field>
2840
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1559_-_Invio_alla_Market_Communication')])]"/>
2841
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Definitive Success')])" />
2842
+ </record>
2843
+ <record id="symple_triplet_phase_result_C1883_-_Chiuso_e_Riattivato_da_M2C_E-ML-GM08-3-0019" model="symple.triplet.phase.result">
2844
+ <field name="active">True</field>
2845
+ <field name="has_message">False</field>
2846
+ <field name="is_annulment">False</field>
2847
+ <field name="is_dl_solicitation_result">False</field>
2848
+ <field name="is_hidden">True</field>
2849
+ <field name="is_quote_expired">False</field>
2850
+ <field name="name">C1883 - Chiuso e Riattivato da M2C</field>
2851
+ <field name="next_phase_id" ref="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato"/>
2852
+ <field name="state_code">E-ML-GM08-3-0019</field>
2853
+ <field name="wizard_result">DEF_SUCCESS</field>
2854
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1715_-_In_attesa_check_IFS')])]"/>
2855
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Definitive Success')])" />
2856
+ </record>
2857
+ <record id="symple_triplet_phase_result_C1883_-_Chiuso_e_Riattivato_da_M2C_E-ML-GM08-3-0022" model="symple.triplet.phase.result">
2858
+ <field name="active">True</field>
2859
+ <field name="has_message">False</field>
2860
+ <field name="is_annulment">False</field>
2861
+ <field name="is_dl_solicitation_result">False</field>
2862
+ <field name="is_hidden">True</field>
2863
+ <field name="is_quote_expired">False</field>
2864
+ <field name="name">C1883 - Chiuso e Riattivato da M2C</field>
2865
+ <field name="next_phase_id" ref="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato"/>
2866
+ <field name="state_code">E-ML-GM08-3-0022</field>
2867
+ <field name="wizard_result">DEF_SUCCESS</field>
2868
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1717_-_Gestione_scarti_da_cruscotto')])]"/>
2869
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Definitive Success')])" />
2870
+ </record>
2871
+ <record id="symple_triplet_phase_result_C1883_-_Chiuso_e_Riattivato_da_M2C_E-ML-GM08-3-0026" model="symple.triplet.phase.result">
2872
+ <field name="active">True</field>
2873
+ <field name="has_message">False</field>
2874
+ <field name="is_annulment">False</field>
2875
+ <field name="is_dl_solicitation_result">False</field>
2876
+ <field name="is_hidden">True</field>
2877
+ <field name="is_quote_expired">False</field>
2878
+ <field name="name">C1883 - Chiuso e Riattivato da M2C</field>
2879
+ <field name="next_phase_id" ref="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato"/>
2880
+ <field name="state_code">E-ML-GM08-3-0026</field>
2881
+ <field name="wizard_result">DEF_SUCCESS</field>
2882
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0823_-_Inserimento_richiesta_sul_Portale_del_DL')])]"/>
2883
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Definitive Success')])" />
2884
+ </record>
2885
+ <record id="symple_triplet_phase_result_C1883_-_Chiuso_e_Riattivato_da_M2C_E-ML-GM08-3-0029" model="symple.triplet.phase.result">
2886
+ <field name="active">True</field>
2887
+ <field name="has_message">False</field>
2888
+ <field name="is_annulment">False</field>
2889
+ <field name="is_dl_solicitation_result">False</field>
2890
+ <field name="is_hidden">True</field>
2891
+ <field name="is_quote_expired">False</field>
2892
+ <field name="name">C1883 - Chiuso e Riattivato da M2C</field>
2893
+ <field name="next_phase_id" ref="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato"/>
2894
+ <field name="state_code">E-ML-GM08-3-0029</field>
2895
+ <field name="wizard_result">DEF_SUCCESS</field>
2896
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1880_-_Verifica_Tipologia_di_Comunicazione')])]"/>
2897
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Definitive Success')])" />
2898
+ </record>
2899
+ <record id="symple_triplet_phase_result_C1883_-_Chiuso_e_Riattivato_da_M2C_E-ML-GM08-3-0033" model="symple.triplet.phase.result">
2900
+ <field name="active">True</field>
2901
+ <field name="has_message">False</field>
2902
+ <field name="is_annulment">False</field>
2903
+ <field name="is_dl_solicitation_result">False</field>
2904
+ <field name="is_hidden">True</field>
2905
+ <field name="is_quote_expired">False</field>
2906
+ <field name="name">C1883 - Chiuso e Riattivato da M2C</field>
2907
+ <field name="next_phase_id" ref="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato"/>
2908
+ <field name="state_code">E-ML-GM08-3-0033</field>
2909
+ <field name="wizard_result">DEF_SUCCESS</field>
2910
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0816_-_In_attesa_esito_ammissibilit_')])]"/>
2911
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Definitive Success')])" />
2912
+ </record>
2913
+ <record id="symple_triplet_phase_result_C1883_-_Chiuso_e_Riattivato_da_M2C_E-ML-GM08-3-0036" model="symple.triplet.phase.result">
2914
+ <field name="active">True</field>
2915
+ <field name="has_message">False</field>
2916
+ <field name="is_annulment">False</field>
2917
+ <field name="is_dl_solicitation_result">False</field>
2918
+ <field name="is_hidden">True</field>
2919
+ <field name="is_quote_expired">False</field>
2920
+ <field name="name">C1883 - Chiuso e Riattivato da M2C</field>
2921
+ <field name="next_phase_id" ref="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato"/>
2922
+ <field name="state_code">E-ML-GM08-3-0036</field>
2923
+ <field name="wizard_result">DEF_SUCCESS</field>
2924
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1761_-_Verifica_Inserimento_richiesta_su_Portale_DL')])]"/>
2925
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Definitive Success')])" />
2926
+ </record>
2927
+ <record id="symple_triplet_phase_result_C1883_-_Chiuso_e_Riattivato_da_M2C_E-ML-GM08-3-0041" model="symple.triplet.phase.result">
2928
+ <field name="active">True</field>
2929
+ <field name="has_message">False</field>
2930
+ <field name="is_annulment">False</field>
2931
+ <field name="is_dl_solicitation_result">False</field>
2932
+ <field name="is_hidden">True</field>
2933
+ <field name="is_quote_expired">False</field>
2934
+ <field name="name">C1883 - Chiuso e Riattivato da M2C</field>
2935
+ <field name="next_phase_id" ref="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato"/>
2936
+ <field name="state_code">E-ML-GM08-3-0041</field>
2937
+ <field name="wizard_result">DEF_SUCCESS</field>
2938
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0825_-_In_attesa_Esito_finale')])]"/>
2939
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Definitive Success')])" />
2940
+ </record>
2941
+ <record id="symple_triplet_phase_result_C1883_-_Chiuso_e_Riattivato_da_M2C_E-ML-GM08-3-0064" model="symple.triplet.phase.result">
2942
+ <field name="active">True</field>
2943
+ <field name="has_message">False</field>
2944
+ <field name="is_annulment">False</field>
2945
+ <field name="is_dl_solicitation_result">False</field>
2946
+ <field name="is_hidden">True</field>
2947
+ <field name="is_quote_expired">False</field>
2948
+ <field name="name">C1883 - Chiuso e Riattivato da M2C</field>
2949
+ <field name="next_phase_id" ref="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato"/>
2950
+ <field name="state_code">E-ML-GM08-3-0064</field>
2951
+ <field name="wizard_result">DEF_SUCCESS</field>
2952
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1595_-_Invio_Annullamento_alla_Market_Communication')])]"/>
2953
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Definitive Success')])" />
2954
+ </record>
2955
+ <record id="symple_triplet_phase_result_C1883_-_Chiuso_e_Riattivato_da_M2C_E-ML-GM08-3-0068" model="symple.triplet.phase.result">
2956
+ <field name="active">True</field>
2957
+ <field name="has_message">False</field>
2958
+ <field name="is_annulment">False</field>
2959
+ <field name="is_dl_solicitation_result">False</field>
2960
+ <field name="is_hidden">True</field>
2961
+ <field name="is_quote_expired">False</field>
2962
+ <field name="name">C1883 - Chiuso e Riattivato da M2C</field>
2963
+ <field name="next_phase_id" ref="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato"/>
2964
+ <field name="state_code">E-ML-GM08-3-0068</field>
2965
+ <field name="wizard_result">DEF_SUCCESS</field>
2966
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1767_-_In_attesa_check_IFS_Annullamento')])]"/>
2967
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Definitive Success')])" />
2968
+ </record>
2969
+ <record id="symple_triplet_phase_result_C1883_-_Chiuso_e_Riattivato_da_M2C_E-ML-GM08-3-0071" model="symple.triplet.phase.result">
2970
+ <field name="active">True</field>
2971
+ <field name="has_message">False</field>
2972
+ <field name="is_annulment">False</field>
2973
+ <field name="is_dl_solicitation_result">False</field>
2974
+ <field name="is_hidden">True</field>
2975
+ <field name="is_quote_expired">False</field>
2976
+ <field name="name">C1883 - Chiuso e Riattivato da M2C</field>
2977
+ <field name="next_phase_id" ref="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato"/>
2978
+ <field name="state_code">E-ML-GM08-3-0071</field>
2979
+ <field name="wizard_result">DEF_SUCCESS</field>
2980
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0832_-_Invio_Richiesta_Annullamento')])]"/>
2981
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Definitive Success')])" />
2982
+ </record>
2983
+ <record id="symple_triplet_phase_result_C1883_-_Chiuso_e_Riattivato_da_M2C_E-ML-GM08-3-0074" model="symple.triplet.phase.result">
2984
+ <field name="active">True</field>
2985
+ <field name="has_message">False</field>
2986
+ <field name="is_annulment">False</field>
2987
+ <field name="is_dl_solicitation_result">False</field>
2988
+ <field name="is_hidden">True</field>
2989
+ <field name="is_quote_expired">False</field>
2990
+ <field name="name">C1883 - Chiuso e Riattivato da M2C</field>
2991
+ <field name="next_phase_id" ref="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato"/>
2992
+ <field name="state_code">E-ML-GM08-3-0074</field>
2993
+ <field name="wizard_result">DEF_SUCCESS</field>
2994
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1939_-_Verifica_Inserimento_Annullamento_sul_Portale_del_DL')])]"/>
2995
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Definitive Success')])" />
2996
+ </record>
2997
+ <record id="symple_triplet_phase_result_C1883_-_Chiuso_e_Riattivato_da_M2C_E-ML-GM08-3-0077" model="symple.triplet.phase.result">
2998
+ <field name="active">True</field>
2999
+ <field name="has_message">False</field>
3000
+ <field name="is_annulment">False</field>
3001
+ <field name="is_dl_solicitation_result">False</field>
3002
+ <field name="is_hidden">True</field>
3003
+ <field name="is_quote_expired">False</field>
3004
+ <field name="name">C1883 - Chiuso e Riattivato da M2C</field>
3005
+ <field name="next_phase_id" ref="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato"/>
3006
+ <field name="state_code">E-ML-GM08-3-0077</field>
3007
+ <field name="wizard_result">DEF_SUCCESS</field>
3008
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0833_-_In_attesa_ricezione_Ammissibilit__Annullamento')])]"/>
3009
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Definitive Success')])" />
3010
+ </record>
3011
+ <record id="symple_triplet_phase_result_C1883_-_Chiuso_e_Riattivato_da_M2C_E-ML-GM08-3-0083" model="symple.triplet.phase.result">
3012
+ <field name="active">True</field>
3013
+ <field name="has_message">False</field>
3014
+ <field name="is_annulment">False</field>
3015
+ <field name="is_dl_solicitation_result">False</field>
3016
+ <field name="is_hidden">True</field>
3017
+ <field name="is_quote_expired">False</field>
3018
+ <field name="name">C1883 - Chiuso e Riattivato da M2C</field>
3019
+ <field name="next_phase_id" ref="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato"/>
3020
+ <field name="state_code">E-ML-GM08-3-0083</field>
3021
+ <field name="wizard_result">DEF_SUCCESS</field>
3022
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1790_-_Gestione_Errore_Annullamento')])]"/>
3023
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Definitive Success')])" />
3024
+ </record>
3025
+ <record id="symple_triplet_phase_result_C1883_-_Chiuso_e_Riattivato_da_M2C_E-ML-GM08-3-0087" model="symple.triplet.phase.result">
3026
+ <field name="active">True</field>
3027
+ <field name="has_message">False</field>
3028
+ <field name="is_annulment">False</field>
3029
+ <field name="is_dl_solicitation_result">False</field>
3030
+ <field name="is_hidden">True</field>
3031
+ <field name="is_quote_expired">False</field>
3032
+ <field name="name">C1883 - Chiuso e Riattivato da M2C</field>
3033
+ <field name="next_phase_id" ref="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato"/>
3034
+ <field name="state_code">E-ML-GM08-3-0087</field>
3035
+ <field name="wizard_result">DEF_SUCCESS</field>
3036
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0831_-_Verifica_Fase_Precedente')])]"/>
3037
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Definitive Success')])" />
3038
+ </record>
3039
+ <record id="symple_triplet_phase_A2345_-_Apertura_Wizard_Taglio_Colonna_GAS" model="symple.triplet.phase">
3040
+ <field name="active">True</field>
3041
+ <field name="allowed_process_ids" model="symple.pb.process" eval="[(6, 0, obj().search([('name','in',('ml_taglio_colonna',)),]).ids)]" />
3042
+ <field name="child_case">False</field>
3043
+ <field name="code"># Available variables:
3044
+ # - case_id: the case that just reached this phase
3045
+ # - request: allows you to make HTTP requests (method, url, headers, data)
3046
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
3047
+ # - json_load: allows you to use JSON.load to convert a json into an object
3048
+ # - env: Odoo Environment on which the action is triggered
3049
+ # - time, datetime, dateutil, timezone: useful Python libraries
3050
+ # - float_compare: Odoo function to compare floats based on specific precisions
3051
+ # - ValidationError: Warning Exception to use with raise
3052
+ # - Command: x2Many commands namespace
3053
+ # - OrderedDict: ordered dictionaries
3054
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
3055
+ # (line = case id, func = phase name)
3056
+ # To return a result, assign: result = {...}
3057
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
3058
+ # phase result will not be set.
3059
+
3060
+
3061
+
3062
+ </field>
3063
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','BOCR')])" />
3064
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
3065
+ <field name="is_a_postalizer_phase">False</field>
3066
+ <field name="is_compute_refund">False</field>
3067
+ <field name="is_dl">False</field>
3068
+ <field name="is_needs_child_case">False</field>
3069
+ <field name="is_pick_refund_template">False</field>
3070
+ <field name="is_process_managed">False</field>
3071
+ <field name="is_quote_accepted">False</field>
3072
+ <field name="is_quote_sent">False</field>
3073
+ <field name="is_timeout">False</field>
3074
+ <field name="is_voidable">False</field>
3075
+ <field name="name">A2345 - Apertura Wizard Taglio Colonna GAS</field>
3076
+ </record>
3077
+ <record id="symple_triplet_phase_result_C1526_-_Esito_finale_OK_-_Interruzione_E-ML-GM08-3-0037" model="symple.triplet.phase.result">
3078
+ <field name="active">True</field>
3079
+ <field name="has_message">False</field>
3080
+ <field name="is_annulment">False</field>
3081
+ <field name="is_dl_solicitation_result">False</field>
3082
+ <field name="is_hidden">True</field>
3083
+ <field name="is_quote_expired">False</field>
3084
+ <field name="name">C1526 - Esito finale OK - Interruzione</field>
3085
+ <field name="next_phase_id" ref="symple_triplet_phase_A2345_-_Apertura_Wizard_Taglio_Colonna_GAS"/>
3086
+ <field name="state_code">E-ML-GM08-3-0037</field>
3087
+ <field name="wizard_result">OK-150</field>
3088
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A0825_-_In_attesa_Esito_finale')])]"/>
3089
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','OK-150')])" />
3090
+ </record>
3091
+ <record id="symple_triplet_phase_result_C1032_-_Acquisizione_Dati_E-ML-GM08-3-0088" model="symple.triplet.phase.result">
3092
+ <field name="active">True</field>
3093
+ <field name="has_message">False</field>
3094
+ <field name="is_annulment">False</field>
3095
+ <field name="is_dl_solicitation_result">False</field>
3096
+ <field name="is_hidden">False</field>
3097
+ <field name="is_quote_expired">False</field>
3098
+ <field name="name">C1032 - Acquisizione Dati</field>
3099
+ <field name="next_phase_id" ref="symple_triplet_phase_A1312_-_Controlli_CRM_per_Taglio_Colonna"/>
3100
+ <field name="state_code">E-ML-GM08-3-0088</field>
3101
+ <field name="wizard_result">SUCCESS</field>
3102
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A2345_-_Apertura_Wizard_Taglio_Colonna_GAS')])]"/>
3103
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
3104
+ </record>
3105
+ <record id="symple_triplet_phase_result_C1526_-_Esito_finale_OK_-_Interruzione_E-ML-GM08-3-00099" model="symple.triplet.phase.result">
3106
+ <field name="active">True</field>
3107
+ <field name="has_message">False</field>
3108
+ <field name="is_annulment">False</field>
3109
+ <field name="is_dl_solicitation_result">False</field>
3110
+ <field name="is_hidden">False</field>
3111
+ <field name="is_quote_expired">False</field>
3112
+ <field name="name">C1526 - Esito finale OK - Interruzione</field>
3113
+ <field name="next_phase_id" ref="symple_triplet_phase_A2345_-_Apertura_Wizard_Taglio_Colonna_GAS"/>
3114
+ <field name="state_code">E-ML-GM08-3-00099</field>
3115
+ <field name="wizard_result">OK-150</field>
3116
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1790_-_Gestione_Errore_Annullamento')])]"/>
3117
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','OK-150')])" />
3118
+ </record>
3119
+ <record id="symple_triplet_phase_A1093_-_Apertura_Case_Interruzione_Servizio" model="symple.triplet.phase">
3120
+ <field name="active">True</field>
3121
+ <field name="child_case">False</field>
3122
+ <field name="code"># Available variables:
3123
+ # - case_id: the case that just reached this phase
3124
+ # - request: allows you to make HTTP requests (method, url, headers, data)
3125
+ # - json_dumps: allows you to use JSON.dumps to converto object to json
3126
+ # - env: Odoo Environment on which the action is triggered
3127
+ # - time, datetime, dateutil, timezone: useful Python libraries
3128
+ # - float_compare: Odoo function to compare floats based on specific precisions
3129
+ # - ValidationError: Warning Exception to use with raise
3130
+ # - Command: x2Many commands namespace
3131
+ # - OrderedDict: ordered dictionaries
3132
+ # To return a result, assign: result = {...}
3133
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
3134
+ # phase result will not be set.
3135
+
3136
+ logs = []
3137
+ IrConfigParam = env["ir.config_parameter"]
3138
+
3139
+
3140
+ def get_assets(client_id, code):
3141
+ token = IrConfigParam.get_b2w_access_token()
3142
+ url = IrConfigParam.get_param("b2w_order_management_endpoint") + "assets"
3143
+ headers = {"Authorization": "Bearer " + token, "Content-Type": "application/json"}
3144
+
3145
+ body = json_dumps(
3146
+ {
3147
+ "filters": [
3148
+ {"field": "accountcode", "type": "=", "value": str(client_id)},
3149
+ {"field": "type", "type": "=", "value": "product"},
3150
+ {"field": "podcode", "type": "=", "value": code},
3151
+ ],
3152
+ "sorters": [{"field": "created_date", "direction": "desc"}],
3153
+ "page": 1,
3154
+ "size": 999999,
3155
+ }
3156
+ )
3157
+
3158
+ response = request("POST", url, headers=headers, data=body)
3159
+
3160
+ if response.status_code != 200:
3161
+ try:
3162
+ logs.append({"message": "response json", "data": response.json()})
3163
+ except Exception:
3164
+ logs.append({"message": "response text", "data": response.text})
3165
+
3166
+ raise Exception("Non è stato possibile scaricare gli asset")
3167
+
3168
+ json = response.json()
3169
+ return json.get("items", [])
3170
+
3171
+
3172
+ def all_disconnected(assets):
3173
+ for asset in assets:
3174
+ if asset.get("sm_state") != "cessato":
3175
+ return False
3176
+ return True
3177
+
3178
+
3179
+ def disconnectable(assets):
3180
+ r = []
3181
+ for asset in assets:
3182
+ if asset.get("sm_state") == "attivo":
3183
+ r.append(asset)
3184
+ return r
3185
+
3186
+
3187
+ try:
3188
+ client_id = case_id.customer_id.id
3189
+ if not case_id.pdr_ids:
3190
+ result = "KO"
3191
+ raise ValidationError("The PDR does not exist in the CRM")
3192
+
3193
+ if not case_id.service_point_ids:
3194
+ result = "KO"
3195
+ raise ValidationError("No service points found for the PDR")
3196
+
3197
+ point = case_id.pdr_ids[0]
3198
+ assets = get_assets(client_id, point.code)
3199
+ d = disconnectable(assets)
3200
+
3201
+ if len(assets) == 0:
3202
+ case_id.write(
3203
+ {
3204
+ "error_message": "The POD {} does not exist in the CRM".format(
3205
+ point.code,
3206
+ )
3207
+ }
3208
+ )
3209
+ result = "KO"
3210
+ elif all_disconnected(assets):
3211
+ result = "OK-FORCE"
3212
+ else:
3213
+ if len(d) > 1:
3214
+ result = "KO"
3215
+ raise ValidationError("More than one PDR instance active in the CRM")
3216
+ else:
3217
+ result = "OK"
3218
+
3219
+
3220
+ except Exception as inst:
3221
+ case_id.write({"error_message": inst})
3222
+ log(format_exc(), level="error")
3223
+ logs.append(
3224
+ {
3225
+ "message": "Exception occurred",
3226
+ "data": {"exception": str(inst), "traceback": format_exc()},
3227
+ }
3228
+ )
3229
+
3230
+ if logs:
3231
+ log(json_dumps(logs))</field>
3232
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
3233
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','New')])" />
3234
+ <field name="is_a_postalizer_phase">False</field>
3235
+ <field name="is_compute_refund">False</field>
3236
+ <field name="is_dl">False</field>
3237
+ <field name="is_needs_child_case">False</field>
3238
+ <field name="is_pick_refund_template">False</field>
3239
+ <field name="is_process_managed">False</field>
3240
+ <field name="is_quote_accepted">False</field>
3241
+ <field name="is_quote_sent">False</field>
3242
+ <field name="is_timeout">False</field>
3243
+ <field name="is_voidable">False</field>
3244
+ <field name="name">A1093 - Apertura Case Interruzione Servizio</field>
3245
+ <field name="set_result_automatically">from_code</field>
3246
+ </record>
3247
+ <record id="symple_triplet_phase_result_C1613_-_Controlli_CRM_OK_E-ML-GM08-3-0001-prelim" model="symple.triplet.phase.result">
3248
+ <field name="active">True</field>
3249
+ <field name="has_message">False</field>
3250
+ <field name="is_annulment">False</field>
3251
+ <field name="is_dl_solicitation_result">False</field>
3252
+ <field name="is_hidden">False</field>
3253
+ <field name="is_quote_expired">False</field>
3254
+ <field name="name">C1613 - Controlli CRM OK</field>
3255
+ <field name="next_phase_id" ref="symple_triplet_phase_A1938_-_Verifica_Compatibilit__Processi"/>
3256
+ <field name="state_code">E-ML-GM08-3-0001-prelim</field>
3257
+ <field name="wizard_result">SUCCESS</field>
3258
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1093_-_Apertura_Case_Interruzione_Servizio')])]"/>
3259
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
3260
+ </record>
3261
+ <record id="symple_triplet_phase_result_C2214_-_Controlli_CRM_OK_Forzato_E-ML-GM08-3-00091" model="symple.triplet.phase.result">
3262
+ <field name="active">True</field>
3263
+ <field name="has_message">False</field>
3264
+ <field name="is_annulment">False</field>
3265
+ <field name="is_dl_solicitation_result">False</field>
3266
+ <field name="is_hidden">False</field>
3267
+ <field name="is_quote_expired">False</field>
3268
+ <field name="name">C2214 - Controlli CRM OK Forzato</field>
3269
+ <field name="next_phase_id" ref="symple_triplet_phase_A1938_-_Verifica_Compatibilit__Processi"/>
3270
+ <field name="state_code">E-ML-GM08-3-00091</field>
3271
+ <field name="wizard_result">PARTIAL_SUCCESS</field>
3272
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1093_-_Apertura_Case_Interruzione_Servizio')])]"/>
3273
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Partial Success')])" />
3274
+ </record>
3275
+ <record id="symple_workflow_ML_-_Taglio_Colonna_Gas_per_Morosit_" model="symple.workflow">
3276
+ <field name="active">True</field>
3277
+ <field name="code"># Available variables:
3278
+ # - case_id: the case that just reached this phase
3279
+ # - request: allows you to make HTTP requests (method, url, headers, data)
3280
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
3281
+ # - json_load: allows you to use JSON.load to convert a json into an object
3282
+ # - env: Odoo Environment on which the action is triggered
3283
+ # - time, datetime, dateutil, timezone: useful Python libraries
3284
+ # - float_compare: Odoo function to compare floats based on specific precisions
3285
+ # - ValidationError: Warning Exception to use with raise
3286
+ # - Command: x2Many commands namespace
3287
+ # - OrderedDict: ordered dictionaries
3288
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
3289
+ # (line = case id, func = phase name)
3290
+ # To return a result, assign: result = {...}
3291
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
3292
+ # phase result will not be set.
3293
+
3294
+
3295
+ # get headers
3296
+ try:
3297
+ tenant_id = env["ir.config_parameter"].sudo().get_param("m2c_header_tenant_id")
3298
+ org_token = env["ir.config_parameter"].sudo().get_param("m2c_header_org_token")
3299
+ headers = {"tenantId": tenant_id, "orgToken": org_token}
3300
+ date_format = "%Y-%m-%dT%H:%M:%S"
3301
+ write_date = (
3302
+ str(case_id.write_date.strftime(date_format)) if case_id.write_date else False
3303
+ )
3304
+ create_date = str(case_id.create_date.strftime(date_format))
3305
+ last_write_date = write_date if write_date else create_date
3306
+
3307
+ map_status = {"new": 1, "working": 2, "annulled": 4, "ok": 5, "ko": 7, "solved": 8}
3308
+ statusId = map_status.get(case_id.stage_id.stage_code, False)
3309
+
3310
+ phaseId = case_id.triplet_phase_id.phase_code.split("-")[-1]
3311
+
3312
+ # create json
3313
+ m2c_dict = {
3314
+ "path": "morosity",
3315
+ "case_id": str(case_id.id),
3316
+ "method": "PATCH",
3317
+ "case_name": case_id.name,
3318
+ "no_error": True,
3319
+ "payload": {
3320
+ "closed": case_id.stage_id.is_close,
3321
+ "statusId": statusId,
3322
+ "statusLabel": case_id.with_context(lang="it_IT").stage_id.name,
3323
+ "phaseLabel": case_id.triplet_phase_id.name,
3324
+ "phaseId": phaseId,
3325
+ "phaseUpdateDate": str(last_write_date),
3326
+ #'outReqId': len(case_id.triplet_history_phase_ids)
3327
+ "outReqId": int(time.time() * 1e6),
3328
+ },
3329
+ }
3330
+
3331
+ m2c_json = json_dumps(m2c_dict)
3332
+ # send to symphony
3333
+ m2c_url = "http://b2w-symphony-rest-service/api/symphony/process-instances/CREDIT_passthrough"
3334
+ response = request("POST", m2c_url, headers=headers, data=m2c_json)
3335
+ except Exception as inst:
3336
+ case_id.write({"error_message": inst})
3337
+ log(format_exc(), level="error")
3338
+ </field>
3339
+ <field name="execute_code_every_phase">True</field>
3340
+ <field name="is_tiqv">False</field>
3341
+ <field name="name">ML - Taglio Colonna Gas per Morosità</field>
3342
+ <field name="triplet_phase_id" ref="symple_triplet_phase_A1093_-_Apertura_Case_Interruzione_Servizio"/>
3343
+ <field name="bpmn_diagram"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
3344
+ <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
3345
+ xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
3346
+ xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
3347
+ xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
3348
+ xmlns:bioc="http://bpmn.io/schema/bpmn/biocolor/1.0"
3349
+ xmlns:color="http://www.omg.org/spec/BPMN/non-normative/color/1.0">
3350
+ <bpmn:process id="process_415" name="ML - Taglio Colonna Gas per Morosità" isExecutable="false"><bpmn:startEvent id="start"/><bpmn:scriptTask id="phase15935" name="Controlli CRM Apertura Case"/><bpmn:scriptTask id="phase15889" name="A1938 - Verifica Compatibilità Processi"/><bpmn:userTask id="phase15890" name="A1937 - Verifica Case Incompatibile"/><bpmn:serviceTask id="phase15920" name="A0811 - Case Lavorato KO"/><bpmn:serviceTask id="phase15922" name="A1309 - Chiuso e Riattivato"/><bpmn:userTask id="phase15891" name="A1311 - Invio Lettera (Extra sistema)"/><bpmn:userTask id="phase15892" name="A1310 - In attesa 11 giorni lavorativi"/><bpmn:scriptTask id="phase15893" name="A1559 - Invio alla Market Communication"/><bpmn:serviceTask id="phase15894" name="A1715 - In attesa check IFS"/><bpmn:userTask id="phase15896" name="A0823 - Inserimento richiesta sul Portale del DL"/><bpmn:serviceTask id="phase15897" name="A1880 - Verifica Tipologia di Comunicazione"/><bpmn:userTask id="phase15898" name="A0816 - In attesa esito ammissibilità"/><bpmn:userTask id="phase15900" name="A0825 - In attesa Esito finale"/><bpmn:userTask id="phase15929" name="A2345 - Apertura Wizard Taglio Colonna GAS"/><bpmn:serviceTask id="phase15901" name="A1312 - Controlli CRM per Taglio Colonna"/><bpmn:scriptTask id="phase15902" name="A1316 - CRM - Creazione Ordine per Taglio Colonna"/><bpmn:scriptTask id="phase15903" name="A1313 - Integrazione M2C per Taglio Colonna"/><bpmn:serviceTask id="phase15904" name="A1314 - In Attesa M2C per Taglio Colonna"/><bpmn:scriptTask id="phase15905" name="A1315 - Aggiornamento CRM per Taglio Colonna"/><bpmn:serviceTask id="phase15906" name="A1379 - Apertura Case Invio Onere"/><bpmn:serviceTask id="phase15919" name="A1378 - Case Lavorato - Punto Interrotto"/><bpmn:serviceTask id="phase15911" name="A1321 - Errore in fase di Aggiornamento CRM per Taglio Colonna"/><bpmn:serviceTask id="phase15921" name="A0809 - Case Annullato"/><bpmn:scriptTask id="phase15910" name="A1320 - Errore in fase Attesa Esito M2C per Taglio Colonna"/><bpmn:serviceTask id="phase15909" name="A1319 - Errore in fase di Integrazione M2C per Taglio Colonna"/><bpmn:serviceTask id="phase15908" name="A1318 - Errore in fase di Creazione Ordine CRM per Taglio Colonna"/><bpmn:serviceTask id="phase15907" name="A1317 - Errore in fase di Controlli CRM per Taglio Colonna"/><bpmn:serviceTask id="phase15895" name="A1717 - Gestione scarti da cruscotto"/><bpmn:scriptTask id="phase15912" name="A1595 - Invio Annullamento alla Market Communication"/><bpmn:serviceTask id="phase15913" name="A1767 - In attesa check IFS Annullamento"/><bpmn:serviceTask id="phase15914" name="A1922 - Inserimento Richiesta Annullamento sul Portale del DL"/><bpmn:serviceTask id="phase15916" name="A0833 - In attesa ricezione Ammissibilità Annullamento"/><bpmn:serviceTask id="phase15917" name="A1790 - Gestione Errore Annullamento"/><bpmn:scriptTask id="phase15918" name="A0831 - Verifica Fase Precedente"/><bpmn:userTask id="phase15915" name="A1939 - Verifica Inserimento Annullamento sul Portale del DL"/><bpmn:userTask id="phase15899" name="A1761 - Verifica Inserimento richiesta su Portale DL"/><bpmn:sequenceFlow id="flowStart" sourceRef="start" targetRef="phase15935"/><bpmn:sequenceFlow id="flow27980" name="Controlli CRM OK" sourceRef="phase15935" targetRef="phase15889"/><bpmn:sequenceFlow id="flow15889" sourceRef="phase15889" targetRef="gateway15889"/><bpmn:sequenceFlow id="flow27880" name="C2638 - Incompatibilità Bloccante" sourceRef="gateway15889" targetRef="phase15890"/><bpmn:sequenceFlow id="flow15890" sourceRef="phase15890" targetRef="gateway15890"/><bpmn:sequenceFlow id="flow27884" name="C2647 - OK - Incompatibilità Risolta" sourceRef="gateway15890" targetRef="phase15889"/><bpmn:sequenceFlow id="flow27885" name="C2641 - KO - Incompatibilità Non risolta" sourceRef="gateway15890" targetRef="phase15920"/><bpmn:sequenceFlow id="flowEnd15920" sourceRef="phase15920" targetRef="end15920"/><bpmn:sequenceFlow id="flow27886" name="C1883 - Chiuso e Riattivato da M2C" sourceRef="gateway15890" targetRef="phase15922"/><bpmn:sequenceFlow id="flowEnd15922" sourceRef="phase15922" targetRef="end15922"/><bpmn:sequenceFlow id="flow27881" name="C2639 - Incompatibilità Non bloccante" sourceRef="gateway15889" targetRef="phase15891"/><bpmn:sequenceFlow id="flow15891" sourceRef="phase15891" targetRef="gateway15891"/><bpmn:sequenceFlow id="flow27887" name="C1884 - OK - Lettera inviata" sourceRef="gateway15891" targetRef="phase15892"/><bpmn:sequenceFlow id="flow15892" sourceRef="phase15892" targetRef="gateway15892"/><bpmn:sequenceFlow id="flow27891" name="C1887 - OK - Avanzamento dopo 11 giorni" sourceRef="gateway15892" targetRef="phase15893"/><bpmn:sequenceFlow id="flow15893" sourceRef="phase15893" targetRef="gateway15893"/><bpmn:sequenceFlow id="flow27894" name="C2458 - OK Inviata" sourceRef="gateway15893" targetRef="phase15894"/><bpmn:sequenceFlow id="flow15894" sourceRef="phase15894" targetRef="gateway15894"/><bpmn:sequenceFlow id="flow27896" name="C2224 - OK - Ammissibilità Hub" sourceRef="gateway15894" targetRef="phase15896"/><bpmn:sequenceFlow id="flow15896" sourceRef="phase15896" targetRef="gateway15896"/><bpmn:sequenceFlow id="flow27902" name="C1035 - Inserita richiesta sul portale del DL" sourceRef="gateway15896" targetRef="phase15897"/><bpmn:sequenceFlow id="flow15897" sourceRef="phase15897" targetRef="gateway15897"/><bpmn:sequenceFlow id="flow27906" name="C2602 - Tipologia RPA" sourceRef="gateway15897" targetRef="phase15898"/><bpmn:sequenceFlow id="flow15898" sourceRef="phase15898" targetRef="gateway15898"/><bpmn:sequenceFlow id="flow27909" name="C1037 - Ammissibilità OK" sourceRef="gateway15898" targetRef="phase15900"/><bpmn:sequenceFlow id="flow15900" sourceRef="phase15900" targetRef="gateway15900"/><bpmn:sequenceFlow id="flow27916" name="C1526 - Esito finale OK - Interruzione" sourceRef="gateway15900" targetRef="phase15929"/><bpmn:sequenceFlow id="flow27973" name="C1032 - Acquisizione Dati" sourceRef="phase15929" targetRef="phase15901"/><bpmn:sequenceFlow id="flow15901" sourceRef="phase15901" targetRef="gateway15901"/><bpmn:sequenceFlow id="flow27921" name="C1613 - Controlli CRM OK" sourceRef="gateway15901" targetRef="phase15902"/><bpmn:sequenceFlow id="flow15902" sourceRef="phase15902" targetRef="gateway15902"/><bpmn:sequenceFlow id="flow27923" name="C1891 - OK - Creazione Ordine" sourceRef="gateway15902" targetRef="phase15903"/><bpmn:sequenceFlow id="flow15903" sourceRef="phase15903" targetRef="gateway15903"/><bpmn:sequenceFlow id="flow27925" name="C1888 - OK - Integrazione M2C per Taglio Colonna" sourceRef="gateway15903" targetRef="phase15904"/><bpmn:sequenceFlow id="flow15904" sourceRef="phase15904" targetRef="gateway15904"/><bpmn:sequenceFlow id="flow27927" name="C1890 - OK - Esito M2C" sourceRef="gateway15904" targetRef="phase15905"/><bpmn:sequenceFlow id="flow15905" sourceRef="phase15905" targetRef="gateway15905"/><bpmn:sequenceFlow id="flow27929" name="C1889 - OK - Aggiornamento CRM" sourceRef="gateway15905" targetRef="phase15906"/><bpmn:sequenceFlow id="flow27931" name="C2003 - OK - Case di invio oneri aperto" sourceRef="phase15906" targetRef="phase15919"/><bpmn:sequenceFlow id="flowEnd15919" sourceRef="phase15919" targetRef="end15919"/><bpmn:sequenceFlow id="flow27930" name="C1922 - Errore in fase Aggiornamento CRM per Taglio Colonna" sourceRef="gateway15905" targetRef="phase15911"/><bpmn:sequenceFlow id="flow15911" sourceRef="phase15911" targetRef="gateway15911"/><bpmn:sequenceFlow id="flow27940" name="C1923 - Annulla - Aggiornamento CRM" sourceRef="gateway15911" targetRef="phase15921"/><bpmn:sequenceFlow id="flowEnd15921" sourceRef="phase15921" targetRef="end15921"/><bpmn:sequenceFlow id="flow27941" name="C1924 - OK - Risolto Errore in fase Aggiornamento CRM per Taglio Colonna" sourceRef="gateway15911" targetRef="phase15905"/><bpmn:sequenceFlow id="flow27928" name="C1919 - Errore in fase di Attesa Esito M2C per Taglio Colonna" sourceRef="gateway15904" targetRef="phase15910"/><bpmn:sequenceFlow id="flow15910" sourceRef="phase15910" targetRef="gateway15910"/><bpmn:sequenceFlow id="flow27938" name="C1920 - Annulla - Attesa Esito M2c" sourceRef="gateway15910" targetRef="phase15921"/><bpmn:sequenceFlow id="flow27939" name="C1921 - OK - Risolto Errore in fase Attesa Esito M2C per Taglio Colonna" sourceRef="gateway15910" targetRef="phase15903"/><bpmn:sequenceFlow id="flow27926" name="C1895 - KO - Errore Integrazione M2C" sourceRef="gateway15903" targetRef="phase15909"/><bpmn:sequenceFlow id="flow15909" sourceRef="phase15909" targetRef="gateway15909"/><bpmn:sequenceFlow id="flow27936" name="C1917 - Annulla - Integrazione M2C per Taglio Colonna" sourceRef="gateway15909" targetRef="phase15921"/><bpmn:sequenceFlow id="flow27937" name="C1918 - OK - Errore Risolto in fase Integrazione M2C per Taglio Colonna" sourceRef="gateway15909" targetRef="phase15903"/><bpmn:sequenceFlow id="flow27924" name="C1892 - KO - Creazione Ordine CRM" sourceRef="gateway15902" targetRef="phase15908"/><bpmn:sequenceFlow id="flow15908" sourceRef="phase15908" targetRef="gateway15908"/><bpmn:sequenceFlow id="flow27934" name="C1893 - Annulla Creazione Ordine CRM" sourceRef="gateway15908" targetRef="phase15921"/><bpmn:sequenceFlow id="flow27935" name="C1894 - OK - Errore Risolto Creazione Ordine" sourceRef="gateway15908" targetRef="phase15902"/><bpmn:sequenceFlow id="flow27922" name="C1614 - Controlli CRM KO" sourceRef="gateway15901" targetRef="phase15907"/><bpmn:sequenceFlow id="flow15907" sourceRef="phase15907" targetRef="gateway15907"/><bpmn:sequenceFlow id="flow27932" name="C1926 - OK - Risolto Errore durante Controlli CRM" sourceRef="gateway15907" targetRef="phase15901"/><bpmn:sequenceFlow id="flow27933" name="C1925 - Annullamento in fase di Controlli CRM per Taglio Colonna" sourceRef="gateway15907" targetRef="phase15921"/><bpmn:sequenceFlow id="flow27917" name="C1043 - Esito finale KO" sourceRef="gateway15900" targetRef="phase15895"/><bpmn:sequenceFlow id="flow15895" sourceRef="phase15895" targetRef="gateway15895"/><bpmn:sequenceFlow id="flow27899" name="C2416 - Risottomessa da cruscotto" sourceRef="gateway15895" targetRef="phase15894"/><bpmn:sequenceFlow id="flow27900" name="C1931 - Errore non rilavorabile" sourceRef="gateway15895" targetRef="phase15920"/><bpmn:sequenceFlow id="flow27901" name="C1883 - Chiuso e Riattivato da M2C" sourceRef="gateway15895" targetRef="phase15922"/><bpmn:sequenceFlow id="flow27918" name="C2655 - Richiesta Gestione Sollecito" sourceRef="gateway15900" targetRef="phase15900"/><bpmn:sequenceFlow id="flow27919" name="C1001 - Annullamento" sourceRef="gateway15900" targetRef="phase15912"/><bpmn:sequenceFlow id="flow15912" sourceRef="phase15912" targetRef="gateway15912"/><bpmn:sequenceFlow id="flow27942" name="C2458 - OK Inviata" sourceRef="gateway15912" targetRef="phase15913"/><bpmn:sequenceFlow id="flow15913" sourceRef="phase15913" targetRef="gateway15913"/><bpmn:sequenceFlow id="flow27944" name="C2256 - OK - Annullato Hub" sourceRef="gateway15913" targetRef="phase15921"/><bpmn:sequenceFlow id="flow27945" name="C2475 - OK - Ammissibilità Annullamento Hub" sourceRef="gateway15913" targetRef="phase15914"/><bpmn:sequenceFlow id="flow15914" sourceRef="phase15914" targetRef="gateway15914"/><bpmn:sequenceFlow id="flow27948" name="C1058 - Inserita richiesta Annullamento sul portale del DL" sourceRef="gateway15914" targetRef="phase15916"/><bpmn:sequenceFlow id="flow15916" sourceRef="phase15916" targetRef="gateway15916"/><bpmn:sequenceFlow id="flow27954" name="C1059 - Ammissibilità Annullamento OK" sourceRef="gateway15916" targetRef="phase15921"/><bpmn:sequenceFlow id="flow27955" name="C1060 - Ammissibilità Annullamento KO" sourceRef="gateway15916" targetRef="phase15917"/><bpmn:sequenceFlow id="flow15917" sourceRef="phase15917" targetRef="gateway15917"/><bpmn:sequenceFlow id="flow27957" name="C1035 - Inserita richiesta sul portale del DL" sourceRef="gateway15917" targetRef="phase15897"/><bpmn:sequenceFlow id="flow27958" name="C1037 - Ammissibilità OK" sourceRef="gateway15917" targetRef="phase15900"/><bpmn:sequenceFlow id="flow27959" name="C1038 - Ammissibilità KO" sourceRef="gateway15917" targetRef="phase15895"/><bpmn:sequenceFlow id="flow27960" name="C2416 - Risottomessa da cruscotto" sourceRef="gateway15917" targetRef="phase15913"/><bpmn:sequenceFlow id="flow27961" name="C2409 - KO Confermato" sourceRef="gateway15917" targetRef="phase15918"/><bpmn:sequenceFlow id="flow15918" sourceRef="phase15918" targetRef="gateway15918"/><bpmn:sequenceFlow id="flow27963" name="C1055 - Ritorno in In attesa esito Ammissibilità" sourceRef="gateway15918" targetRef="phase15898"/><bpmn:sequenceFlow id="flow27964" name="C2482 - Ritorno in Inserimento richiesta sul portale del DL" sourceRef="gateway15918" targetRef="phase15896"/><bpmn:sequenceFlow id="flow27965" name="C1056 - Ritorno in In attesa Esito finale" sourceRef="gateway15918" targetRef="phase15900"/><bpmn:sequenceFlow id="flow27966" name="C1883 - Chiuso e Riattivato da M2C" sourceRef="gateway15918" targetRef="phase15922"/><bpmn:sequenceFlow id="flow27962" name="C1883 - Chiuso e Riattivato da M2C" sourceRef="gateway15917" targetRef="phase15922"/><bpmn:sequenceFlow id="flow27956" name="C1883 - Chiuso e Riattivato da M2C" sourceRef="gateway15916" targetRef="phase15922"/><bpmn:sequenceFlow id="flow27949" name="C2462 - KO Invio" sourceRef="gateway15914" targetRef="phase15915"/><bpmn:sequenceFlow id="flow15915" sourceRef="phase15915" targetRef="gateway15915"/><bpmn:sequenceFlow id="flow27951" name="C1058 - Inserita richiesta Annullamento sul portale del DL" sourceRef="gateway15915" targetRef="phase15916"/><bpmn:sequenceFlow id="flow27952" name="C2463 - Gestito Fuori linea" sourceRef="gateway15915" targetRef="phase15916"/><bpmn:sequenceFlow id="flow27953" name="C1883 - Chiuso e Riattivato da M2C" sourceRef="gateway15915" targetRef="phase15922"/><bpmn:sequenceFlow id="flow27950" name="C1883 - Chiuso e Riattivato da M2C" sourceRef="gateway15914" targetRef="phase15922"/><bpmn:sequenceFlow id="flow27946" name="C2476 - KO - Ammissibilità Annullamento Hub" sourceRef="gateway15913" targetRef="phase15917"/><bpmn:sequenceFlow id="flow27947" name="C1883 - Chiuso e Riattivato da M2C" sourceRef="gateway15913" targetRef="phase15922"/><bpmn:sequenceFlow id="flow27943" name="C1883 - Chiuso e Riattivato da M2C" sourceRef="gateway15912" targetRef="phase15922"/><bpmn:sequenceFlow id="flow27920" name="C1883 - Chiuso e Riattivato da M2C" sourceRef="gateway15900" targetRef="phase15922"/><bpmn:sequenceFlow id="flow27910" name="C1038 - Ammissibilità KO" sourceRef="gateway15898" targetRef="phase15895"/><bpmn:sequenceFlow id="flow27911" name="C1001 - Annullamento" sourceRef="gateway15898" targetRef="phase15912"/><bpmn:sequenceFlow id="flow27912" name="C1883 - Chiuso e Riattivato da M2C" sourceRef="gateway15898" targetRef="phase15922"/><bpmn:sequenceFlow id="flow27907" name="C2603 - Tipologia PEC" sourceRef="gateway15897" targetRef="phase15900"/><bpmn:sequenceFlow id="flow27908" name="C1883 - Chiuso e Riattivato da M2C" sourceRef="gateway15897" targetRef="phase15922"/><bpmn:sequenceFlow id="flow27903" name="C2462 - KO Invio" sourceRef="gateway15896" targetRef="phase15899"/><bpmn:sequenceFlow id="flow15899" sourceRef="phase15899" targetRef="gateway15899"/><bpmn:sequenceFlow id="flow27913" name="C1035 - Inserita richiesta sul portale del DL" sourceRef="gateway15899" targetRef="phase15897"/><bpmn:sequenceFlow id="flow27914" name="C2463 - Gestito Fuori linea" sourceRef="gateway15899" targetRef="phase15897"/><bpmn:sequenceFlow id="flow27915" name="C1883 - Chiuso e Riattivato da M2C" sourceRef="gateway15899" targetRef="phase15922"/><bpmn:sequenceFlow id="flow27904" name="C1001 - Annullamento" sourceRef="gateway15896" targetRef="phase15912"/><bpmn:sequenceFlow id="flow27905" name="C1883 - Chiuso e Riattivato da M2C" sourceRef="gateway15896" targetRef="phase15922"/><bpmn:sequenceFlow id="flow27897" name="C2225 - KO - Ammissibilità Hub" sourceRef="gateway15894" targetRef="phase15895"/><bpmn:sequenceFlow id="flow27898" name="C1883 - Chiuso e Riattivato da M2C" sourceRef="gateway15894" targetRef="phase15922"/><bpmn:sequenceFlow id="flow27895" name="C1883 - Chiuso e Riattivato da M2C" sourceRef="gateway15893" targetRef="phase15922"/><bpmn:sequenceFlow id="flow27892" name="C1001 - Annullamento" sourceRef="gateway15892" targetRef="phase15921"/><bpmn:sequenceFlow id="flow27893" name="C1883 - Chiuso e Riattivato da M2C" sourceRef="gateway15892" targetRef="phase15922"/><bpmn:sequenceFlow id="flow27888" name="C1885 - KO - Lettera non inviata" sourceRef="gateway15891" targetRef="phase15920"/><bpmn:sequenceFlow id="flow27889" name="C1886 - Annullamento Case durante Invio Lettera" sourceRef="gateway15891" targetRef="phase15921"/><bpmn:sequenceFlow id="flow27890" name="C1883 - Chiuso e Riattivato da M2C" sourceRef="gateway15891" targetRef="phase15922"/><bpmn:sequenceFlow id="flow27882" name="C2654 - Processo Compatibile" sourceRef="gateway15889" targetRef="phase15891"/><bpmn:sequenceFlow id="flow27883" name="C1883 - Chiuso e Riattivato da M2C" sourceRef="gateway15889" targetRef="phase15922"/><bpmn:exclusiveGateway id="gateway15889"/><bpmn:exclusiveGateway id="gateway15890"/><bpmn:exclusiveGateway id="gateway15891"/><bpmn:exclusiveGateway id="gateway15892"/><bpmn:exclusiveGateway id="gateway15893"/><bpmn:exclusiveGateway id="gateway15894"/><bpmn:exclusiveGateway id="gateway15896"/><bpmn:exclusiveGateway id="gateway15897"/><bpmn:exclusiveGateway id="gateway15898"/><bpmn:exclusiveGateway id="gateway15900"/><bpmn:exclusiveGateway id="gateway15901"/><bpmn:exclusiveGateway id="gateway15902"/><bpmn:exclusiveGateway id="gateway15903"/><bpmn:exclusiveGateway id="gateway15904"/><bpmn:exclusiveGateway id="gateway15905"/><bpmn:exclusiveGateway id="gateway15911"/><bpmn:exclusiveGateway id="gateway15910"/><bpmn:exclusiveGateway id="gateway15909"/><bpmn:exclusiveGateway id="gateway15908"/><bpmn:exclusiveGateway id="gateway15907"/><bpmn:exclusiveGateway id="gateway15895"/><bpmn:exclusiveGateway id="gateway15912"/><bpmn:exclusiveGateway id="gateway15913"/><bpmn:exclusiveGateway id="gateway15914"/><bpmn:exclusiveGateway id="gateway15916"/><bpmn:exclusiveGateway id="gateway15917"/><bpmn:exclusiveGateway id="gateway15918"/><bpmn:exclusiveGateway id="gateway15915"/><bpmn:exclusiveGateway id="gateway15899"/><bpmn:endEvent id="end15920"/><bpmn:endEvent id="end15922"/><bpmn:endEvent id="end15919"/><bpmn:endEvent id="end15921"/></bpmn:process><bpmndi:BPMNDiagram id="BPMNDiagram_1">
3351
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="process_415"><bpmndi:BPMNShape id="start_di" bpmnElement="start" ><dc:Bounds x="150" y="-18.0" width="36" height="36"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15935_di" bpmnElement="phase15935" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="286" y="-40.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15889_di" bpmnElement="phase15889" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="496" y="-40.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15889_di" bpmnElement="gateway15889" isMarkerVisible="true"><dc:Bounds x="706" y="-25.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15890_di" bpmnElement="phase15890" ><dc:Bounds x="856" y="-40.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15890_di" bpmnElement="gateway15890" isMarkerVisible="true"><dc:Bounds x="1066" y="-25.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15920_di" bpmnElement="phase15920" bioc:stroke="#831311" bioc:fill="#ffcdd2" color:background-color="#ffcdd2" color:border-color="#831311"><dc:Bounds x="1216" y="110.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="end15920_di" bpmnElement="end15920" bioc:stroke="#831311" bioc:fill="#ffcdd2" color:background-color="#ffcdd2" color:border-color="#831311"><dc:Bounds x="1426" y="132.0" width="36" height="36"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15922_di" bpmnElement="phase15922" bioc:stroke="#205022" bioc:fill="#c8e6c9" color:background-color="#c8e6c9" color:border-color="#205022"><dc:Bounds x="1216" y="260.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="end15922_di" bpmnElement="end15922" bioc:stroke="#205022" bioc:fill="#c8e6c9" color:background-color="#c8e6c9" color:border-color="#205022"><dc:Bounds x="1426" y="282.0" width="36" height="36"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15891_di" bpmnElement="phase15891" ><dc:Bounds x="856" y="410.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15891_di" bpmnElement="gateway15891" isMarkerVisible="true"><dc:Bounds x="1066" y="425.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15892_di" bpmnElement="phase15892" ><dc:Bounds x="1216" y="410.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15892_di" bpmnElement="gateway15892" isMarkerVisible="true"><dc:Bounds x="1426" y="425.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15893_di" bpmnElement="phase15893" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="1576" y="410.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15893_di" bpmnElement="gateway15893" isMarkerVisible="true"><dc:Bounds x="1786" y="425.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15894_di" bpmnElement="phase15894" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="1936" y="410.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15894_di" bpmnElement="gateway15894" isMarkerVisible="true"><dc:Bounds x="2146" y="425.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15896_di" bpmnElement="phase15896" ><dc:Bounds x="2296" y="410.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15896_di" bpmnElement="gateway15896" isMarkerVisible="true"><dc:Bounds x="2506" y="425.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15897_di" bpmnElement="phase15897" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="2656" y="410.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15897_di" bpmnElement="gateway15897" isMarkerVisible="true"><dc:Bounds x="2866" y="425.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15898_di" bpmnElement="phase15898" ><dc:Bounds x="3016" y="410.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15898_di" bpmnElement="gateway15898" isMarkerVisible="true"><dc:Bounds x="3226" y="425.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15900_di" bpmnElement="phase15900" ><dc:Bounds x="3376" y="410.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15900_di" bpmnElement="gateway15900" isMarkerVisible="true"><dc:Bounds x="3586" y="425.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15929_di" bpmnElement="phase15929" ><dc:Bounds x="3736" y="410.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15901_di" bpmnElement="phase15901" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="3946" y="410.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15901_di" bpmnElement="gateway15901" isMarkerVisible="true"><dc:Bounds x="4156" y="425.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15902_di" bpmnElement="phase15902" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="4306" y="410.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15902_di" bpmnElement="gateway15902" isMarkerVisible="true"><dc:Bounds x="4516" y="425.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15903_di" bpmnElement="phase15903" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="4666" y="410.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15903_di" bpmnElement="gateway15903" isMarkerVisible="true"><dc:Bounds x="4876" y="425.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15904_di" bpmnElement="phase15904" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="5026" y="410.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15904_di" bpmnElement="gateway15904" isMarkerVisible="true"><dc:Bounds x="5236" y="425.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15905_di" bpmnElement="phase15905" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="5386" y="410.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15905_di" bpmnElement="gateway15905" isMarkerVisible="true"><dc:Bounds x="5596" y="425.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15906_di" bpmnElement="phase15906" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="5746" y="410.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15919_di" bpmnElement="phase15919" bioc:stroke="#205022" bioc:fill="#c8e6c9" color:background-color="#c8e6c9" color:border-color="#205022"><dc:Bounds x="5956" y="410.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="end15919_di" bpmnElement="end15919" bioc:stroke="#205022" bioc:fill="#c8e6c9" color:background-color="#c8e6c9" color:border-color="#205022"><dc:Bounds x="6166" y="432.0" width="36" height="36"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15911_di" bpmnElement="phase15911" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="5746" y="560.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15911_di" bpmnElement="gateway15911" isMarkerVisible="true"><dc:Bounds x="5956" y="575.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15921_di" bpmnElement="phase15921" bioc:stroke="#6b3c00" bioc:fill="#ffe0b2" color:background-color="#ffe0b2" color:border-color="#6b3c00"><dc:Bounds x="6106" y="560.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="end15921_di" bpmnElement="end15921" bioc:stroke="#6b3c00" bioc:fill="#ffe0b2" color:background-color="#ffe0b2" color:border-color="#6b3c00"><dc:Bounds x="6316" y="582.0" width="36" height="36"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15910_di" bpmnElement="phase15910" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="5386" y="710.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15910_di" bpmnElement="gateway15910" isMarkerVisible="true"><dc:Bounds x="5596" y="725.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15909_di" bpmnElement="phase15909" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="5026" y="860.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15909_di" bpmnElement="gateway15909" isMarkerVisible="true"><dc:Bounds x="5236" y="875.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15908_di" bpmnElement="phase15908" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="4666" y="1010.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15908_di" bpmnElement="gateway15908" isMarkerVisible="true"><dc:Bounds x="4876" y="1025.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15907_di" bpmnElement="phase15907" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="4306" y="1160.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15907_di" bpmnElement="gateway15907" isMarkerVisible="true"><dc:Bounds x="4516" y="1175.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15895_di" bpmnElement="phase15895" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="3736" y="1310.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15895_di" bpmnElement="gateway15895" isMarkerVisible="true"><dc:Bounds x="3946" y="1325.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15912_di" bpmnElement="phase15912" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="3736" y="1460.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15912_di" bpmnElement="gateway15912" isMarkerVisible="true"><dc:Bounds x="3946" y="1475.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15913_di" bpmnElement="phase15913" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="4096" y="1460.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15913_di" bpmnElement="gateway15913" isMarkerVisible="true"><dc:Bounds x="4306" y="1475.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15914_di" bpmnElement="phase15914" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="4456" y="1610.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15914_di" bpmnElement="gateway15914" isMarkerVisible="true"><dc:Bounds x="4666" y="1625.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15916_di" bpmnElement="phase15916" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="4816" y="1610.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15916_di" bpmnElement="gateway15916" isMarkerVisible="true"><dc:Bounds x="5026" y="1625.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15917_di" bpmnElement="phase15917" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="5176" y="1760.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15917_di" bpmnElement="gateway15917" isMarkerVisible="true"><dc:Bounds x="5386" y="1775.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15918_di" bpmnElement="phase15918" bioc:stroke="#5b176d" bioc:fill="#e1bee7" color:background-color="#e1bee7" color:border-color="#5b176d"><dc:Bounds x="5536" y="1910.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15918_di" bpmnElement="gateway15918" isMarkerVisible="true"><dc:Bounds x="5746" y="1925.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15915_di" bpmnElement="phase15915" ><dc:Bounds x="4816" y="2060.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15915_di" bpmnElement="gateway15915" isMarkerVisible="true"><dc:Bounds x="5026" y="2075.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="phase15899_di" bpmnElement="phase15899" ><dc:Bounds x="2656" y="2210.0" width="110" height="80"/></bpmndi:BPMNShape><bpmndi:BPMNShape id="gateway15899_di" bpmnElement="gateway15899" isMarkerVisible="true"><dc:Bounds x="2866" y="2225.0" width="50" height="50"/></bpmndi:BPMNShape><bpmndi:BPMNEdge id="flowStart_di" bpmnElement="flowStart"><di:waypoint x="186" y="0.0" /><di:waypoint x="286" y="0.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27980_di" bpmnElement="flow27980"><di:waypoint x="396" y="0.0" /><di:waypoint x="496" y="0.0" /><bpmndi:BPMNLabel><dc:Bounds x="396" y="5.0" width="100" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15889_di" bpmnElement="flow15889"><di:waypoint x="606" y="0.0" /><di:waypoint x="706" y="0.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27880_di" bpmnElement="flow27880"><di:waypoint x="756" y="0.0" /><di:waypoint x="856" y="0.0" /><bpmndi:BPMNLabel><dc:Bounds x="756" y="5.0" width="100" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15890_di" bpmnElement="flow15890"><di:waypoint x="966" y="0.0" /><di:waypoint x="1066" y="0.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27884_di" bpmnElement="flow27884" bioc:stroke="#c82362" color:border-color="#c82362"><di:waypoint x="1091.0" y="25.0" /><di:waypoint x="1091.0" y="75.0" /><di:waypoint x="466" y="75.0" /><di:waypoint x="466" y="0.01" /><bpmndi:BPMNLabel><dc:Bounds x="1091.0" y="30.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27885_di" bpmnElement="flow27885"><di:waypoint x="1091.0" y="25.0" /><di:waypoint x="1091.0" y="150.0" /><di:waypoint x="1216" y="150.0" /><bpmndi:BPMNLabel><dc:Bounds x="1091.0" y="155.0" width="125.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flowEnd15920_di" bpmnElement="flowEnd15920"><di:waypoint x="1326" y="150.0" /><di:waypoint x="1426" y="150.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27886_di" bpmnElement="flow27886"><di:waypoint x="1091.0" y="25.0" /><di:waypoint x="1091.0" y="300.0" /><di:waypoint x="1216" y="300.0" /><bpmndi:BPMNLabel><dc:Bounds x="1091.0" y="305.0" width="125.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flowEnd15922_di" bpmnElement="flowEnd15922"><di:waypoint x="1326" y="300.0" /><di:waypoint x="1426" y="300.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27881_di" bpmnElement="flow27881"><di:waypoint x="731.0" y="25.0" /><di:waypoint x="731.0" y="450.0" /><di:waypoint x="856" y="450.0" /><bpmndi:BPMNLabel><dc:Bounds x="731.0" y="455.0" width="125.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15891_di" bpmnElement="flow15891"><di:waypoint x="966" y="450.0" /><di:waypoint x="1066" y="450.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27887_di" bpmnElement="flow27887"><di:waypoint x="1116" y="450.0" /><di:waypoint x="1216" y="450.0" /><bpmndi:BPMNLabel><dc:Bounds x="1116" y="455.0" width="100" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15892_di" bpmnElement="flow15892"><di:waypoint x="1326" y="450.0" /><di:waypoint x="1426" y="450.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27891_di" bpmnElement="flow27891"><di:waypoint x="1476" y="450.0" /><di:waypoint x="1576" y="450.0" /><bpmndi:BPMNLabel><dc:Bounds x="1476" y="455.0" width="100" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15893_di" bpmnElement="flow15893"><di:waypoint x="1686" y="450.0" /><di:waypoint x="1786" y="450.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27894_di" bpmnElement="flow27894"><di:waypoint x="1836" y="450.0" /><di:waypoint x="1936" y="450.0" /><bpmndi:BPMNLabel><dc:Bounds x="1836" y="455.0" width="100" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15894_di" bpmnElement="flow15894"><di:waypoint x="2046" y="450.0" /><di:waypoint x="2146" y="450.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27896_di" bpmnElement="flow27896"><di:waypoint x="2196" y="450.0" /><di:waypoint x="2296" y="450.0" /><bpmndi:BPMNLabel><dc:Bounds x="2196" y="455.0" width="100" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15896_di" bpmnElement="flow15896"><di:waypoint x="2406" y="450.0" /><di:waypoint x="2506" y="450.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27902_di" bpmnElement="flow27902"><di:waypoint x="2556" y="450.0" /><di:waypoint x="2656" y="450.0" /><bpmndi:BPMNLabel><dc:Bounds x="2556" y="455.0" width="100" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15897_di" bpmnElement="flow15897"><di:waypoint x="2766" y="450.0" /><di:waypoint x="2866" y="450.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27906_di" bpmnElement="flow27906"><di:waypoint x="2916" y="450.0" /><di:waypoint x="3016" y="450.0" /><bpmndi:BPMNLabel><dc:Bounds x="2916" y="455.0" width="100" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15898_di" bpmnElement="flow15898"><di:waypoint x="3126" y="450.0" /><di:waypoint x="3226" y="450.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27909_di" bpmnElement="flow27909"><di:waypoint x="3276" y="450.0" /><di:waypoint x="3376" y="450.0" /><bpmndi:BPMNLabel><dc:Bounds x="3276" y="455.0" width="100" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15900_di" bpmnElement="flow15900"><di:waypoint x="3486" y="450.0" /><di:waypoint x="3586" y="450.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27916_di" bpmnElement="flow27916"><di:waypoint x="3636" y="450.0" /><di:waypoint x="3736" y="450.0" /><bpmndi:BPMNLabel><dc:Bounds x="3636" y="455.0" width="100" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27973_di" bpmnElement="flow27973"><di:waypoint x="3846" y="450.0" /><di:waypoint x="3946" y="450.0" /><bpmndi:BPMNLabel><dc:Bounds x="3846" y="455.0" width="100" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15901_di" bpmnElement="flow15901"><di:waypoint x="4056" y="450.0" /><di:waypoint x="4156" y="450.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27921_di" bpmnElement="flow27921"><di:waypoint x="4206" y="450.0" /><di:waypoint x="4306" y="450.0" /><bpmndi:BPMNLabel><dc:Bounds x="4206" y="455.0" width="100" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15902_di" bpmnElement="flow15902"><di:waypoint x="4416" y="450.0" /><di:waypoint x="4516" y="450.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27923_di" bpmnElement="flow27923"><di:waypoint x="4566" y="450.0" /><di:waypoint x="4666" y="450.0" /><bpmndi:BPMNLabel><dc:Bounds x="4566" y="455.0" width="100" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15903_di" bpmnElement="flow15903"><di:waypoint x="4776" y="450.0" /><di:waypoint x="4876" y="450.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27925_di" bpmnElement="flow27925"><di:waypoint x="4926" y="450.0" /><di:waypoint x="5026" y="450.0" /><bpmndi:BPMNLabel><dc:Bounds x="4926" y="455.0" width="100" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15904_di" bpmnElement="flow15904"><di:waypoint x="5136" y="450.0" /><di:waypoint x="5236" y="450.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27927_di" bpmnElement="flow27927"><di:waypoint x="5286" y="450.0" /><di:waypoint x="5386" y="450.0" /><bpmndi:BPMNLabel><dc:Bounds x="5286" y="455.0" width="100" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15905_di" bpmnElement="flow15905"><di:waypoint x="5496" y="450.0" /><di:waypoint x="5596" y="450.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27929_di" bpmnElement="flow27929"><di:waypoint x="5646" y="450.0" /><di:waypoint x="5746" y="450.0" /><bpmndi:BPMNLabel><dc:Bounds x="5646" y="455.0" width="100" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27931_di" bpmnElement="flow27931"><di:waypoint x="5856" y="450.0" /><di:waypoint x="5956" y="450.0" /><bpmndi:BPMNLabel><dc:Bounds x="5856" y="455.0" width="100" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flowEnd15919_di" bpmnElement="flowEnd15919"><di:waypoint x="6066" y="450.0" /><di:waypoint x="6166" y="450.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27930_di" bpmnElement="flow27930"><di:waypoint x="5621.0" y="475.0" /><di:waypoint x="5621.0" y="600.0" /><di:waypoint x="5746" y="600.0" /><bpmndi:BPMNLabel><dc:Bounds x="5621.0" y="605.0" width="125.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15911_di" bpmnElement="flow15911"><di:waypoint x="5856" y="600.0" /><di:waypoint x="5956" y="600.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27940_di" bpmnElement="flow27940"><di:waypoint x="6006" y="600.0" /><di:waypoint x="6106" y="600.0" /><bpmndi:BPMNLabel><dc:Bounds x="6006" y="605.0" width="100" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flowEnd15921_di" bpmnElement="flowEnd15921"><di:waypoint x="6216" y="600.0" /><di:waypoint x="6316" y="600.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27941_di" bpmnElement="flow27941" bioc:stroke="#12f64e" color:border-color="#12f64e"><di:waypoint x="5981.0" y="625.0" /><di:waypoint x="5981.0" y="691.0" /><di:waypoint x="5356" y="691.0" /><di:waypoint x="5356" y="450.01" /><bpmndi:BPMNLabel><dc:Bounds x="5981.0" y="630.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27928_di" bpmnElement="flow27928"><di:waypoint x="5261.0" y="475.0" /><di:waypoint x="5261.0" y="750.0" /><di:waypoint x="5386" y="750.0" /><bpmndi:BPMNLabel><dc:Bounds x="5261.0" y="755.0" width="125.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15910_di" bpmnElement="flow15910"><di:waypoint x="5496" y="750.0" /><di:waypoint x="5596" y="750.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27938_di" bpmnElement="flow27938" bioc:stroke="#6ff348" color:border-color="#6ff348"><di:waypoint x="5621.0" y="775.0" /><di:waypoint x="5621.0" y="845.0" /><di:waypoint x="6076" y="845.0" /><di:waypoint x="6076" y="600.01" /><bpmndi:BPMNLabel><dc:Bounds x="5621.0" y="780.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27939_di" bpmnElement="flow27939" bioc:stroke="#7439f9" color:border-color="#7439f9"><di:waypoint x="5621.0" y="775.0" /><di:waypoint x="5621.0" y="845.0" /><di:waypoint x="4636" y="845.0" /><di:waypoint x="4636" y="450.01" /><bpmndi:BPMNLabel><dc:Bounds x="4636" y="845.0" width="71" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27926_di" bpmnElement="flow27926"><di:waypoint x="4901.0" y="475.0" /><di:waypoint x="4901.0" y="900.0" /><di:waypoint x="5026" y="900.0" /><bpmndi:BPMNLabel><dc:Bounds x="4901.0" y="905.0" width="125.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15909_di" bpmnElement="flow15909"><di:waypoint x="5136" y="900.0" /><di:waypoint x="5236" y="900.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27936_di" bpmnElement="flow27936" bioc:stroke="#c0ab88" color:border-color="#c0ab88"><di:waypoint x="5261.0" y="925.0" /><di:waypoint x="5261.0" y="999.0" /><di:waypoint x="6076" y="999.0" /><di:waypoint x="6076" y="600.01" /><bpmndi:BPMNLabel><dc:Bounds x="5261.0" y="930.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27937_di" bpmnElement="flow27937" bioc:stroke="#7c14b5" color:border-color="#7c14b5"><di:waypoint x="5261.0" y="925.0" /><di:waypoint x="5261.0" y="999.0" /><di:waypoint x="4636" y="999.0" /><di:waypoint x="4636" y="450.01" /><bpmndi:BPMNLabel><dc:Bounds x="4636" y="999.0" width="71" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27924_di" bpmnElement="flow27924"><di:waypoint x="4541.0" y="475.0" /><di:waypoint x="4541.0" y="1050.0" /><di:waypoint x="4666" y="1050.0" /><bpmndi:BPMNLabel><dc:Bounds x="4541.0" y="1055.0" width="125.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15908_di" bpmnElement="flow15908"><di:waypoint x="4776" y="1050.0" /><di:waypoint x="4876" y="1050.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27934_di" bpmnElement="flow27934" bioc:stroke="#54713c" color:border-color="#54713c"><di:waypoint x="4901.0" y="1075.0" /><di:waypoint x="4901.0" y="1153.0" /><di:waypoint x="6076" y="1153.0" /><di:waypoint x="6076" y="600.01" /><bpmndi:BPMNLabel><dc:Bounds x="4901.0" y="1080.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27935_di" bpmnElement="flow27935" bioc:stroke="#df6841" color:border-color="#df6841"><di:waypoint x="4901.0" y="1075.0" /><di:waypoint x="4901.0" y="1153.0" /><di:waypoint x="4276" y="1153.0" /><di:waypoint x="4276" y="450.01" /><bpmndi:BPMNLabel><dc:Bounds x="4276" y="1153.0" width="44" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27922_di" bpmnElement="flow27922"><di:waypoint x="4181.0" y="475.0" /><di:waypoint x="4181.0" y="1200.0" /><di:waypoint x="4306" y="1200.0" /><bpmndi:BPMNLabel><dc:Bounds x="4181.0" y="1205.0" width="125.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15907_di" bpmnElement="flow15907"><di:waypoint x="4416" y="1200.0" /><di:waypoint x="4516" y="1200.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27932_di" bpmnElement="flow27932" bioc:stroke="#90e0a2" color:border-color="#90e0a2"><di:waypoint x="4541.0" y="1225.0" /><di:waypoint x="4541.0" y="1307.0" /><di:waypoint x="3916" y="1307.0" /><di:waypoint x="3916" y="450.01" /><bpmndi:BPMNLabel><dc:Bounds x="4541.0" y="1230.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27933_di" bpmnElement="flow27933" bioc:stroke="#4f760c" color:border-color="#4f760c"><di:waypoint x="4541.0" y="1225.0" /><di:waypoint x="4541.0" y="1307.0" /><di:waypoint x="6076" y="1307.0" /><di:waypoint x="6076" y="600.01" /><bpmndi:BPMNLabel><dc:Bounds x="6076" y="1307.0" width="64" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27917_di" bpmnElement="flow27917"><di:waypoint x="3611.0" y="475.0" /><di:waypoint x="3611.0" y="1350.0" /><di:waypoint x="3736" y="1350.0" /><bpmndi:BPMNLabel><dc:Bounds x="3611.0" y="1355.0" width="125.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15895_di" bpmnElement="flow15895"><di:waypoint x="3846" y="1350.0" /><di:waypoint x="3946" y="1350.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27899_di" bpmnElement="flow27899" bioc:stroke="#7d1d8a" color:border-color="#7d1d8a"><di:waypoint x="3971.0" y="1375.0" /><di:waypoint x="3971.0" y="1461.0" /><di:waypoint x="1906" y="1461.0" /><di:waypoint x="1906" y="450.01" /><bpmndi:BPMNLabel><dc:Bounds x="3971.0" y="1380.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27900_di" bpmnElement="flow27900" bioc:stroke="#0e8545" color:border-color="#0e8545"><di:waypoint x="3971.0" y="1375.0" /><di:waypoint x="3971.0" y="1461.0" /><di:waypoint x="1186" y="1461.0" /><di:waypoint x="1186" y="150.01" /><bpmndi:BPMNLabel><dc:Bounds x="1186" y="1461.0" width="31" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27901_di" bpmnElement="flow27901" bioc:stroke="#adb5bd" color:border-color="#adb5bd"><di:waypoint x="3971.0" y="1375.0" /><di:waypoint x="3971.0" y="1461.0" /><di:waypoint x="1186" y="1461.0" /><di:waypoint x="1186" y="300.01" /><bpmndi:BPMNLabel><dc:Bounds x="1186" y="1461.0" width="34" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27918_di" bpmnElement="flow27918" bioc:stroke="#0b5dc9" color:border-color="#0b5dc9"><di:waypoint x="3611.0" y="475.0" /><di:waypoint x="3611.0" y="561.0" /><di:waypoint x="3346" y="561.0" /><di:waypoint x="3346" y="450.01" /><bpmndi:BPMNLabel><dc:Bounds x="3611.0" y="480.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27919_di" bpmnElement="flow27919"><di:waypoint x="3611.0" y="475.0" /><di:waypoint x="3611.0" y="1500.0" /><di:waypoint x="3736" y="1500.0" /><bpmndi:BPMNLabel><dc:Bounds x="3611.0" y="1505.0" width="125.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15912_di" bpmnElement="flow15912"><di:waypoint x="3846" y="1500.0" /><di:waypoint x="3946" y="1500.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27942_di" bpmnElement="flow27942"><di:waypoint x="3996" y="1500.0" /><di:waypoint x="4096" y="1500.0" /><bpmndi:BPMNLabel><dc:Bounds x="3996" y="1505.0" width="100" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15913_di" bpmnElement="flow15913"><di:waypoint x="4206" y="1500.0" /><di:waypoint x="4306" y="1500.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27944_di" bpmnElement="flow27944" bioc:stroke="#c3a79f" color:border-color="#c3a79f"><di:waypoint x="4331.0" y="1525.0" /><di:waypoint x="4331.0" y="1615.0" /><di:waypoint x="6076" y="1615.0" /><di:waypoint x="6076" y="600.01" /><bpmndi:BPMNLabel><dc:Bounds x="4331.0" y="1530.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27945_di" bpmnElement="flow27945"><di:waypoint x="4331.0" y="1525.0" /><di:waypoint x="4331.0" y="1650.0" /><di:waypoint x="4456" y="1650.0" /><bpmndi:BPMNLabel><dc:Bounds x="4331.0" y="1655.0" width="125.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15914_di" bpmnElement="flow15914"><di:waypoint x="4566" y="1650.0" /><di:waypoint x="4666" y="1650.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27948_di" bpmnElement="flow27948"><di:waypoint x="4716" y="1650.0" /><di:waypoint x="4816" y="1650.0" /><bpmndi:BPMNLabel><dc:Bounds x="4716" y="1655.0" width="100" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15916_di" bpmnElement="flow15916"><di:waypoint x="4926" y="1650.0" /><di:waypoint x="5026" y="1650.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27954_di" bpmnElement="flow27954" bioc:stroke="#5e96ad" color:border-color="#5e96ad"><di:waypoint x="5051.0" y="1675.0" /><di:waypoint x="5051.0" y="1769.0" /><di:waypoint x="6076" y="1769.0" /><di:waypoint x="6076" y="600.01" /><bpmndi:BPMNLabel><dc:Bounds x="5051.0" y="1680.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27955_di" bpmnElement="flow27955"><di:waypoint x="5051.0" y="1675.0" /><di:waypoint x="5051.0" y="1800.0" /><di:waypoint x="5176" y="1800.0" /><bpmndi:BPMNLabel><dc:Bounds x="5051.0" y="1805.0" width="125.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15917_di" bpmnElement="flow15917"><di:waypoint x="5286" y="1800.0" /><di:waypoint x="5386" y="1800.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27957_di" bpmnElement="flow27957" bioc:stroke="#aef7fe" color:border-color="#aef7fe"><di:waypoint x="5411.0" y="1825.0" /><di:waypoint x="5411.0" y="1923.0" /><di:waypoint x="2626" y="1923.0" /><di:waypoint x="2626" y="450.01" /><bpmndi:BPMNLabel><dc:Bounds x="5411.0" y="1830.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27958_di" bpmnElement="flow27958" bioc:stroke="#08cbb0" color:border-color="#08cbb0"><di:waypoint x="5411.0" y="1825.0" /><di:waypoint x="5411.0" y="1923.0" /><di:waypoint x="3346" y="1923.0" /><di:waypoint x="3346" y="450.01" /><bpmndi:BPMNLabel><dc:Bounds x="3346" y="1923.0" width="24" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27959_di" bpmnElement="flow27959" bioc:stroke="#4f0277" color:border-color="#4f0277"><di:waypoint x="5411.0" y="1825.0" /><di:waypoint x="5411.0" y="1923.0" /><di:waypoint x="3706" y="1923.0" /><di:waypoint x="3706" y="1350.01" /><bpmndi:BPMNLabel><dc:Bounds x="3706" y="1923.0" width="24" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27960_di" bpmnElement="flow27960" bioc:stroke="#06527c" color:border-color="#06527c"><di:waypoint x="5411.0" y="1825.0" /><di:waypoint x="5411.0" y="1923.0" /><di:waypoint x="4066" y="1923.0" /><di:waypoint x="4066" y="1500.01" /><bpmndi:BPMNLabel><dc:Bounds x="4066" y="1923.0" width="33" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27961_di" bpmnElement="flow27961"><di:waypoint x="5411.0" y="1825.0" /><di:waypoint x="5411.0" y="1950.0" /><di:waypoint x="5536" y="1950.0" /><bpmndi:BPMNLabel><dc:Bounds x="5411.0" y="1955.0" width="125.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15918_di" bpmnElement="flow15918"><di:waypoint x="5646" y="1950.0" /><di:waypoint x="5746" y="1950.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27963_di" bpmnElement="flow27963" bioc:stroke="#37e4fb" color:border-color="#37e4fb"><di:waypoint x="5771.0" y="1975.0" /><di:waypoint x="5771.0" y="2077.0" /><di:waypoint x="2986" y="2077.0" /><di:waypoint x="2986" y="450.01" /><bpmndi:BPMNLabel><dc:Bounds x="5771.0" y="1980.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27964_di" bpmnElement="flow27964" bioc:stroke="#8c8f75" color:border-color="#8c8f75"><di:waypoint x="5771.0" y="1975.0" /><di:waypoint x="5771.0" y="2077.0" /><di:waypoint x="2266" y="2077.0" /><di:waypoint x="2266" y="450.01" /><bpmndi:BPMNLabel><dc:Bounds x="2266" y="2077.0" width="59" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27965_di" bpmnElement="flow27965" bioc:stroke="#1c3635" color:border-color="#1c3635"><di:waypoint x="5771.0" y="1975.0" /><di:waypoint x="5771.0" y="2077.0" /><di:waypoint x="3346" y="2077.0" /><di:waypoint x="3346" y="450.01" /><bpmndi:BPMNLabel><dc:Bounds x="3346" y="2077.0" width="41" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27966_di" bpmnElement="flow27966" bioc:stroke="#adb5bd" color:border-color="#adb5bd"><di:waypoint x="5771.0" y="1975.0" /><di:waypoint x="5771.0" y="2077.0" /><di:waypoint x="1186" y="2077.0" /><di:waypoint x="1186" y="300.01" /><bpmndi:BPMNLabel><dc:Bounds x="1186" y="2077.0" width="34" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27962_di" bpmnElement="flow27962" bioc:stroke="#adb5bd" color:border-color="#adb5bd"><di:waypoint x="5411.0" y="1825.0" /><di:waypoint x="5411.0" y="1927.0" /><di:waypoint x="1186" y="1927.0" /><di:waypoint x="1186" y="300.01" /><bpmndi:BPMNLabel><dc:Bounds x="1186" y="1927.0" width="34" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27956_di" bpmnElement="flow27956" bioc:stroke="#adb5bd" color:border-color="#adb5bd"><di:waypoint x="5051.0" y="1675.0" /><di:waypoint x="5051.0" y="1777.0" /><di:waypoint x="1186" y="1777.0" /><di:waypoint x="1186" y="300.01" /><bpmndi:BPMNLabel><dc:Bounds x="1186" y="1777.0" width="34" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27949_di" bpmnElement="flow27949"><di:waypoint x="4691.0" y="1675.0" /><di:waypoint x="4691.0" y="2100.0" /><di:waypoint x="4816" y="2100.0" /><bpmndi:BPMNLabel><dc:Bounds x="4691.0" y="2105.0" width="125.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15915_di" bpmnElement="flow15915"><di:waypoint x="4926" y="2100.0" /><di:waypoint x="5026" y="2100.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27951_di" bpmnElement="flow27951" bioc:stroke="#71875e" color:border-color="#71875e"><di:waypoint x="5051.0" y="2125.0" /><di:waypoint x="5051.0" y="2231.0" /><di:waypoint x="4786" y="2231.0" /><di:waypoint x="4786" y="1650.01" /><bpmndi:BPMNLabel><dc:Bounds x="5051.0" y="2130.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27952_di" bpmnElement="flow27952" bioc:stroke="#3ea885" color:border-color="#3ea885"><di:waypoint x="5051.0" y="2125.0" /><di:waypoint x="5051.0" y="2231.0" /><di:waypoint x="4786" y="2231.0" /><di:waypoint x="4786" y="1650.01" /><bpmndi:BPMNLabel><dc:Bounds x="4786" y="2231.0" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27953_di" bpmnElement="flow27953" bioc:stroke="#adb5bd" color:border-color="#adb5bd"><di:waypoint x="5051.0" y="2125.0" /><di:waypoint x="5051.0" y="2231.0" /><di:waypoint x="1186" y="2231.0" /><di:waypoint x="1186" y="300.01" /><bpmndi:BPMNLabel><dc:Bounds x="1186" y="2231.0" width="34" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27950_di" bpmnElement="flow27950" bioc:stroke="#adb5bd" color:border-color="#adb5bd"><di:waypoint x="4691.0" y="1675.0" /><di:waypoint x="4691.0" y="1781.0" /><di:waypoint x="1186" y="1781.0" /><di:waypoint x="1186" y="300.01" /><bpmndi:BPMNLabel><dc:Bounds x="4691.0" y="1680.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27946_di" bpmnElement="flow27946" bioc:stroke="#307986" color:border-color="#307986"><di:waypoint x="4331.0" y="1525.0" /><di:waypoint x="4331.0" y="1631.0" /><di:waypoint x="5146" y="1631.0" /><di:waypoint x="5146" y="1800.01" /><bpmndi:BPMNLabel><dc:Bounds x="5146" y="1631.0" width="43" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27947_di" bpmnElement="flow27947" bioc:stroke="#adb5bd" color:border-color="#adb5bd"><di:waypoint x="4331.0" y="1525.0" /><di:waypoint x="4331.0" y="1631.0" /><di:waypoint x="1186" y="1631.0" /><di:waypoint x="1186" y="300.01" /><bpmndi:BPMNLabel><dc:Bounds x="1186" y="1631.0" width="34" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27943_di" bpmnElement="flow27943" bioc:stroke="#adb5bd" color:border-color="#adb5bd"><di:waypoint x="3971.0" y="1525.0" /><di:waypoint x="3971.0" y="1631.0" /><di:waypoint x="1186" y="1631.0" /><di:waypoint x="1186" y="300.01" /><bpmndi:BPMNLabel><dc:Bounds x="3971.0" y="1530.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27920_di" bpmnElement="flow27920" bioc:stroke="#adb5bd" color:border-color="#adb5bd"><di:waypoint x="3611.0" y="475.0" /><di:waypoint x="3611.0" y="581.0" /><di:waypoint x="1186" y="581.0" /><di:waypoint x="1186" y="300.01" /><bpmndi:BPMNLabel><dc:Bounds x="1186" y="581.0" width="34" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27910_di" bpmnElement="flow27910" bioc:stroke="#84f21a" color:border-color="#84f21a"><di:waypoint x="3251.0" y="475.0" /><di:waypoint x="3251.0" y="581.0" /><di:waypoint x="3706" y="581.0" /><di:waypoint x="3706" y="1350.01" /><bpmndi:BPMNLabel><dc:Bounds x="3251.0" y="480.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27911_di" bpmnElement="flow27911" bioc:stroke="#d4956f" color:border-color="#d4956f"><di:waypoint x="3251.0" y="475.0" /><di:waypoint x="3251.0" y="581.0" /><di:waypoint x="3706" y="581.0" /><di:waypoint x="3706" y="1500.01" /><bpmndi:BPMNLabel><dc:Bounds x="3706" y="581.0" width="20" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27912_di" bpmnElement="flow27912" bioc:stroke="#adb5bd" color:border-color="#adb5bd"><di:waypoint x="3251.0" y="475.0" /><di:waypoint x="3251.0" y="581.0" /><di:waypoint x="1186" y="581.0" /><di:waypoint x="1186" y="300.01" /><bpmndi:BPMNLabel><dc:Bounds x="1186" y="581.0" width="34" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27907_di" bpmnElement="flow27907" bioc:stroke="#b7656a" color:border-color="#b7656a"><di:waypoint x="2891.0" y="475.0" /><di:waypoint x="2891.0" y="581.0" /><di:waypoint x="3346" y="581.0" /><di:waypoint x="3346" y="450.01" /><bpmndi:BPMNLabel><dc:Bounds x="2891.0" y="480.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27908_di" bpmnElement="flow27908" bioc:stroke="#adb5bd" color:border-color="#adb5bd"><di:waypoint x="2891.0" y="475.0" /><di:waypoint x="2891.0" y="581.0" /><di:waypoint x="1186" y="581.0" /><di:waypoint x="1186" y="300.01" /><bpmndi:BPMNLabel><dc:Bounds x="1186" y="581.0" width="34" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27903_di" bpmnElement="flow27903"><di:waypoint x="2531.0" y="475.0" /><di:waypoint x="2531.0" y="2250.0" /><di:waypoint x="2656" y="2250.0" /><bpmndi:BPMNLabel><dc:Bounds x="2531.0" y="2255.0" width="125.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow15899_di" bpmnElement="flow15899"><di:waypoint x="2766" y="2250.0" /><di:waypoint x="2866" y="2250.0" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27913_di" bpmnElement="flow27913" bioc:stroke="#6756a1" color:border-color="#6756a1"><di:waypoint x="2891.0" y="2275.0" /><di:waypoint x="2891.0" y="2385.0" /><di:waypoint x="2626" y="2385.0" /><di:waypoint x="2626" y="450.01" /><bpmndi:BPMNLabel><dc:Bounds x="2891.0" y="2280.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27914_di" bpmnElement="flow27914" bioc:stroke="#ec2ae1" color:border-color="#ec2ae1"><di:waypoint x="2891.0" y="2275.0" /><di:waypoint x="2891.0" y="2385.0" /><di:waypoint x="2626" y="2385.0" /><di:waypoint x="2626" y="450.01" /><bpmndi:BPMNLabel><dc:Bounds x="2626" y="2385.0" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27915_di" bpmnElement="flow27915" bioc:stroke="#adb5bd" color:border-color="#adb5bd"><di:waypoint x="2891.0" y="2275.0" /><di:waypoint x="2891.0" y="2385.0" /><di:waypoint x="1186" y="2385.0" /><di:waypoint x="1186" y="300.01" /><bpmndi:BPMNLabel><dc:Bounds x="1186" y="2385.0" width="34" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27904_di" bpmnElement="flow27904" bioc:stroke="#34dac6" color:border-color="#34dac6"><di:waypoint x="2531.0" y="475.0" /><di:waypoint x="2531.0" y="585.0" /><di:waypoint x="3706" y="585.0" /><di:waypoint x="3706" y="1500.01" /><bpmndi:BPMNLabel><dc:Bounds x="2531.0" y="480.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27905_di" bpmnElement="flow27905" bioc:stroke="#adb5bd" color:border-color="#adb5bd"><di:waypoint x="2531.0" y="475.0" /><di:waypoint x="2531.0" y="585.0" /><di:waypoint x="1186" y="585.0" /><di:waypoint x="1186" y="300.01" /><bpmndi:BPMNLabel><dc:Bounds x="1186" y="585.0" width="34" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27897_di" bpmnElement="flow27897" bioc:stroke="#10164d" color:border-color="#10164d"><di:waypoint x="2171.0" y="475.0" /><di:waypoint x="2171.0" y="585.0" /><di:waypoint x="3706" y="585.0" /><di:waypoint x="3706" y="1350.01" /><bpmndi:BPMNLabel><dc:Bounds x="2171.0" y="480.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27898_di" bpmnElement="flow27898" bioc:stroke="#adb5bd" color:border-color="#adb5bd"><di:waypoint x="2171.0" y="475.0" /><di:waypoint x="2171.0" y="585.0" /><di:waypoint x="1186" y="585.0" /><di:waypoint x="1186" y="300.01" /><bpmndi:BPMNLabel><dc:Bounds x="1186" y="585.0" width="34" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27895_di" bpmnElement="flow27895" bioc:stroke="#adb5bd" color:border-color="#adb5bd"><di:waypoint x="1811.0" y="475.0" /><di:waypoint x="1811.0" y="585.0" /><di:waypoint x="1186" y="585.0" /><di:waypoint x="1186" y="300.01" /><bpmndi:BPMNLabel><dc:Bounds x="1811.0" y="480.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27892_di" bpmnElement="flow27892" bioc:stroke="#05f6bc" color:border-color="#05f6bc"><di:waypoint x="1451.0" y="475.0" /><di:waypoint x="1451.0" y="585.0" /><di:waypoint x="6076" y="585.0" /><di:waypoint x="6076" y="600.01" /><bpmndi:BPMNLabel><dc:Bounds x="1451.0" y="480.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27893_di" bpmnElement="flow27893" bioc:stroke="#adb5bd" color:border-color="#adb5bd"><di:waypoint x="1451.0" y="475.0" /><di:waypoint x="1451.0" y="585.0" /><di:waypoint x="1186" y="585.0" /><di:waypoint x="1186" y="300.01" /><bpmndi:BPMNLabel><dc:Bounds x="1186" y="585.0" width="34" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27888_di" bpmnElement="flow27888" bioc:stroke="#e6bf6e" color:border-color="#e6bf6e"><di:waypoint x="1091.0" y="475.0" /><di:waypoint x="1091.0" y="585.0" /><di:waypoint x="1186" y="585.0" /><di:waypoint x="1186" y="150.01" /><bpmndi:BPMNLabel><dc:Bounds x="1091.0" y="480.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27889_di" bpmnElement="flow27889" bioc:stroke="#8c7503" color:border-color="#8c7503"><di:waypoint x="1091.0" y="475.0" /><di:waypoint x="1091.0" y="585.0" /><di:waypoint x="6076" y="585.0" /><di:waypoint x="6076" y="600.01" /><bpmndi:BPMNLabel><dc:Bounds x="6076" y="585.0" width="47" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27890_di" bpmnElement="flow27890" bioc:stroke="#adb5bd" color:border-color="#adb5bd"><di:waypoint x="1091.0" y="475.0" /><di:waypoint x="1091.0" y="585.0" /><di:waypoint x="1186" y="585.0" /><di:waypoint x="1186" y="300.01" /><bpmndi:BPMNLabel><dc:Bounds x="1186" y="585.0" width="34" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27882_di" bpmnElement="flow27882" bioc:stroke="#96ed6c" color:border-color="#96ed6c"><di:waypoint x="731.0" y="25.0" /><di:waypoint x="731.0" y="135.0" /><di:waypoint x="826" y="135.0" /><di:waypoint x="826" y="450.01" /><bpmndi:BPMNLabel><dc:Bounds x="731.0" y="30.0" width="0.0" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="flow27883_di" bpmnElement="flow27883" bioc:stroke="#adb5bd" color:border-color="#adb5bd"><di:waypoint x="731.0" y="25.0" /><di:waypoint x="731.0" y="135.0" /><di:waypoint x="1186" y="135.0" /><di:waypoint x="1186" y="300.01" /><bpmndi:BPMNLabel><dc:Bounds x="1186" y="135.0" width="34" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge></bpmndi:BPMNPlane> </bpmndi:BPMNDiagram></bpmn:definitions>]]></field>
3352
+ <field name="can_update_pod_supply_state">False</field>
3353
+ <field name="show_invoice_tab">False</field>
3354
+ <field name="use_sla">False</field>
3355
+ <field name="wf_code">ML-GM08-3</field>
3356
+ </record>
3357
+ <record id="symple_triplet_phase_A1140_-_Errore_validazione_dati_ricevuti" model="symple.triplet.phase">
3358
+ <field name="active">True</field>
3359
+ <field name="child_case">False</field>
3360
+ <field name="code"># Available variables:
3361
+ # - case_id: the case that just reached this phase
3362
+ # - request: allows you to make HTTP requests (method, url, headers, data)
3363
+ # - json_dumps: allows you to use JSON.dumps to convert an object into a json
3364
+ # - json_load: allows you to use JSON.load to convert a json into an object
3365
+ # - env: Odoo Environment on which the action is triggered
3366
+ # - time, datetime, dateutil, timezone: useful Python libraries
3367
+ # - float_compare: Odoo function to compare floats based on specific precisions
3368
+ # - ValidationError: Warning Exception to use with raise
3369
+ # - Command: x2Many commands namespace
3370
+ # - OrderedDict: ordered dictionaries
3371
+ # - log: log(message, level='info'): logging function to record debug information in ir.logging table
3372
+ # (line = case id, func = phase name)
3373
+ # - format_exc: forwarded from traceback.format_exc - returns str stack trace of last exception thrown
3374
+ # - first: forwarded from odoo.fields.first - safely gets first element of recordset
3375
+ # To return a result, assign: result = {...}
3376
+ # WARNING: if return = False or return value is not in the result table or no result is returned at all,
3377
+ # phase result will not be set.
3378
+
3379
+
3380
+
3381
+ </field>
3382
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','BOCR')])" />
3383
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
3384
+ <field name="is_a_postalizer_phase">False</field>
3385
+ <field name="is_compute_refund">False</field>
3386
+ <field name="is_dl">False</field>
3387
+ <field name="is_needs_child_case">False</field>
3388
+ <field name="is_pick_refund_template">False</field>
3389
+ <field name="is_process_managed">False</field>
3390
+ <field name="is_quote_accepted">False</field>
3391
+ <field name="is_quote_sent">False</field>
3392
+ <field name="is_timeout">True</field>
3393
+ <field name="is_voidable">False</field>
3394
+ <field name="name">A1140 - Errore validazione dati ricevuti</field>
3395
+ <field name="timeout_days">7</field>
3396
+ </record>
3397
+ <record id="symple_triplet_phase_result_C1614_-_Controlli_CRM_KO_E-ML-GM08-3-00090" model="symple.triplet.phase.result">
3398
+ <field name="active">True</field>
3399
+ <field name="has_message">False</field>
3400
+ <field name="is_annulment">False</field>
3401
+ <field name="is_dl_solicitation_result">False</field>
3402
+ <field name="is_hidden">False</field>
3403
+ <field name="is_quote_expired">False</field>
3404
+ <field name="name">C1614 - Controlli CRM KO</field>
3405
+ <field name="next_phase_id" ref="symple_triplet_phase_A1140_-_Errore_validazione_dati_ricevuti"/>
3406
+ <field name="state_code">E-ML-GM08-3-00090</field>
3407
+ <field name="wizard_result">KO</field>
3408
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1093_-_Apertura_Case_Interruzione_Servizio')])]"/>
3409
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO')])" />
3410
+ </record>
3411
+ <record id="symple_triplet_phase_result_C1616_-_Risoluzione_errore_E-ML-GM08-3-00092" model="symple.triplet.phase.result">
3412
+ <field name="active">True</field>
3413
+ <field name="has_message">False</field>
3414
+ <field name="is_annulment">False</field>
3415
+ <field name="is_dl_solicitation_result">False</field>
3416
+ <field name="is_hidden">False</field>
3417
+ <field name="is_quote_expired">False</field>
3418
+ <field name="name">C1616 - Risoluzione errore</field>
3419
+ <field name="next_phase_id" ref="symple_triplet_phase_A1093_-_Apertura_Case_Interruzione_Servizio"/>
3420
+ <field name="state_code">E-ML-GM08-3-00092</field>
3421
+ <field name="wizard_result">SUCCESS</field>
3422
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1140_-_Errore_validazione_dati_ricevuti')])]"/>
3423
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
3424
+ </record>
3425
+ <record id="symple_triplet_phase_result_C1617_-_Errore_non_risolvibile_E-ML-GM08-3-00093" model="symple.triplet.phase.result">
3426
+ <field name="active">True</field>
3427
+ <field name="has_message">False</field>
3428
+ <field name="is_annulment">False</field>
3429
+ <field name="is_dl_solicitation_result">False</field>
3430
+ <field name="is_hidden">False</field>
3431
+ <field name="is_quote_expired">False</field>
3432
+ <field name="name">C1617 - Errore non risolvibile</field>
3433
+ <field name="next_phase_id" ref="symple_triplet_phase_A0811_-_Case_Lavorato_KO"/>
3434
+ <field name="state_code">E-ML-GM08-3-00093</field>
3435
+ <field name="wizard_result">KO</field>
3436
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1140_-_Errore_validazione_dati_ricevuti')])]"/>
3437
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','KO')])" />
3438
+ </record>
3439
+ <record id="symple_triplet_phase_result_C2215_-_Timeout_risottomissione_case_E-ML-GM08-3-00094" model="symple.triplet.phase.result">
3440
+ <field name="active">True</field>
3441
+ <field name="has_message">False</field>
3442
+ <field name="is_annulment">False</field>
3443
+ <field name="is_dl_solicitation_result">False</field>
3444
+ <field name="is_hidden">True</field>
3445
+ <field name="is_quote_expired">False</field>
3446
+ <field name="name">C2215 - Timeout risottomissione case</field>
3447
+ <field name="next_phase_id" ref="symple_triplet_phase_A1093_-_Apertura_Case_Interruzione_Servizio"/>
3448
+ <field name="state_code">E-ML-GM08-3-00094</field>
3449
+ <field name="wizard_result">PARTIAL_SUCCESS</field>
3450
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1140_-_Errore_validazione_dati_ricevuti')])]"/>
3451
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Partial Success')])" />
3452
+ </record>
3453
+ <record id="symple_triplet_phase_result_C1883_-_Chiuso_e_Riattivato_da_M2C_E-ML-GM08-3-00095" model="symple.triplet.phase.result">
3454
+ <field name="active">True</field>
3455
+ <field name="has_message">False</field>
3456
+ <field name="is_annulment">False</field>
3457
+ <field name="is_dl_solicitation_result">False</field>
3458
+ <field name="is_hidden">True</field>
3459
+ <field name="is_quote_expired">False</field>
3460
+ <field name="name">C1883 - Chiuso e Riattivato da M2C</field>
3461
+ <field name="next_phase_id" ref="symple_triplet_phase_A1309_-_Chiuso_e_Riattivato"/>
3462
+ <field name="state_code">E-ML-GM08-3-00095</field>
3463
+ <field name="wizard_result">DEF_SUCCESS</field>
3464
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1140_-_Errore_validazione_dati_ricevuti')])]"/>
3465
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Definitive Success')])" />
3466
+ </record>
3467
+ <record id="symple_triplet_phase_A2561_-_verifica_stato_invio_pratica_da_annullare" model="symple.triplet.phase">
3468
+ <field name="active">True</field>
3469
+ <field name="child_case">False</field>
3470
+ <field name="code"># RES1 = C3120 - annullamento da gestire
3471
+ # RES2 = C2599 - annullamento confermato
3472
+
3473
+ RES1, RES2 = ("RES1", "RES2")
3474
+
3475
+ logs = []
3476
+ debug_logs = []
3477
+ error_occurred = False
3478
+
3479
+
3480
+ def make_log(message, data=None, always=False):
3481
+ log_entry = {"message": message}
3482
+ if data is not None:
3483
+ log_entry["data"] = data
3484
+
3485
+ if always:
3486
+ logs.append(log_entry)
3487
+ else:
3488
+ debug_logs.append(log_entry)
3489
+
3490
+
3491
+ # --------------------------------------
3492
+
3493
+
3494
+ def main():
3495
+ pass
3496
+
3497
+
3498
+ try:
3499
+ result = main()
3500
+ except Exception as e:
3501
+ error_occurred = True
3502
+ make_log(
3503
+ "Error occurred in phase",
3504
+ {"error": str(e), "traceback": format_exc()},
3505
+ always=True,
3506
+ )
3507
+ case_id.write({"error_message": str(e)})
3508
+
3509
+
3510
+ if error_occurred and debug_logs:
3511
+ logs.append({"message": "debug_logs", "logs": debug_logs})
3512
+
3513
+ if logs:
3514
+ log(json_dumps(logs, indent=2))</field>
3515
+ <field name="helpdesk_group_id" model="helpdesk.team" eval="obj().search([('name','=','SYSTEM-Sorgenia')])" />
3516
+ <field name="helpdesk_stage_id" model="helpdesk.stage" eval="obj().search([('name','=','In Progress')])" />
3517
+ <field name="is_a_postalizer_phase">False</field>
3518
+ <field name="is_compute_refund">False</field>
3519
+ <field name="is_dl">False</field>
3520
+ <field name="is_needs_child_case">False</field>
3521
+ <field name="is_pick_refund_template">False</field>
3522
+ <field name="is_process_managed">False</field>
3523
+ <field name="is_quote_accepted">False</field>
3524
+ <field name="is_quote_sent">False</field>
3525
+ <field name="is_timeout">False</field>
3526
+ <field name="is_voidable">False</field>
3527
+ <field name="name">A2561 - verifica stato invio pratica da annullare</field>
3528
+ <field name="set_result_automatically">from_code</field>
3529
+ </record>
3530
+ <record id="symple_triplet_phase_result_C2475_-_OK_-_Ammissibilit__Annullamento_Hub_E-ML-GM08-3-0066" model="symple.triplet.phase.result">
3531
+ <field name="active">True</field>
3532
+ <field name="has_message">False</field>
3533
+ <field name="is_annulment">False</field>
3534
+ <field name="is_dl_solicitation_result">False</field>
3535
+ <field name="is_hidden">False</field>
3536
+ <field name="is_quote_expired">False</field>
3537
+ <field name="name">C2475 - OK - Ammissibilità Annullamento Hub</field>
3538
+ <field name="next_phase_id" ref="symple_triplet_phase_A2561_-_verifica_stato_invio_pratica_da_annullare"/>
3539
+ <field name="state_code">E-ML-GM08-3-0066</field>
3540
+ <field name="wizard_result">OK-HUB</field>
3541
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A1767_-_In_attesa_check_IFS_Annullamento')])]"/>
3542
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','OK-HUB')])" />
3543
+ </record>
3544
+ <record id="symple_triplet_phase_result_C3120_-_annullamento_da_gestire_E-ML-GM08-3-00097" model="symple.triplet.phase.result">
3545
+ <field name="active">True</field>
3546
+ <field name="has_message">False</field>
3547
+ <field name="is_annulment">False</field>
3548
+ <field name="is_dl_solicitation_result">False</field>
3549
+ <field name="is_hidden">False</field>
3550
+ <field name="is_quote_expired">False</field>
3551
+ <field name="name">C3120 - annullamento da gestire</field>
3552
+ <field name="next_phase_id" ref="symple_triplet_phase_A0832_-_Invio_Richiesta_Annullamento"/>
3553
+ <field name="state_code">E-ML-GM08-3-00097</field>
3554
+ <field name="wizard_result">SUCCESS</field>
3555
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A2561_-_verifica_stato_invio_pratica_da_annullare')])]"/>
3556
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','Success')])" />
3557
+ </record>
3558
+ <record id="symple_triplet_phase_result_C2599_-_annullamento_confermato_E-ML-GM08-3-00098" model="symple.triplet.phase.result">
3559
+ <field name="active">True</field>
3560
+ <field name="has_message">False</field>
3561
+ <field name="is_annulment">False</field>
3562
+ <field name="is_dl_solicitation_result">False</field>
3563
+ <field name="is_hidden">False</field>
3564
+ <field name="is_quote_expired">False</field>
3565
+ <field name="name">C2599 - annullamento confermato</field>
3566
+ <field name="next_phase_id" ref="symple_triplet_phase_A0809_-_Case_Annullato"/>
3567
+ <field name="state_code">E-ML-GM08-3-00098</field>
3568
+ <field name="wizard_result">OK-DEF-HUB-ANN</field>
3569
+ <field name="starting_phase_ids" model="symple.triplet.phase" eval="[(6, 0, [ref('symple_triplet_phase_A2561_-_verifica_stato_invio_pratica_da_annullare')])]"/>
3570
+ <field name="result_type_id" model="result.type" eval="obj().search([('name','=','OK-DEF-ANN')])" />
3571
+ </record>
3572
+ <record id="result_code_configurator_A1559_-_Invio_alla_Market_Communication_OK" model="result.code.configurator">
3573
+ <field name="code_phase_id" ref="symple_triplet_phase_A1559_-_Invio_alla_Market_Communication"/>
3574
+ <field name="result_value">OK</field>
3575
+ <field name="triplet_phase_result_id" ref="symple_triplet_phase_result_C2458_-_OK_Inviata_E-ML-GM08-3-0015"/>
3576
+ </record>
3577
+ <record id="result_code_configurator_A1938_-_Verifica_Compatibilit__Processi_OK" model="result.code.configurator">
3578
+ <field name="code_phase_id" ref="symple_triplet_phase_A1938_-_Verifica_Compatibilit__Processi"/>
3579
+ <field name="result_value">OK</field>
3580
+ <field name="triplet_phase_result_id" ref="symple_triplet_phase_result_C2654_-_Processo_Compatibile_E-ML-GM08-3-0003"/>
3581
+ </record>
3582
+ <record id="result_code_configurator_A1938_-_Verifica_Compatibilit__Processi_KO" model="result.code.configurator">
3583
+ <field name="code_phase_id" ref="symple_triplet_phase_A1938_-_Verifica_Compatibilit__Processi"/>
3584
+ <field name="result_value">KO</field>
3585
+ <field name="triplet_phase_result_id" ref="symple_triplet_phase_result_C2638_-_Incompatibilit__Bloccante_E-ML-GM08-3-0001"/>
3586
+ </record>
3587
+ <record id="result_code_configurator_A1938_-_Verifica_Compatibilit__Processi_PARTIAL_KO" model="result.code.configurator">
3588
+ <field name="code_phase_id" ref="symple_triplet_phase_A1938_-_Verifica_Compatibilit__Processi"/>
3589
+ <field name="result_value">PARTIAL_KO</field>
3590
+ <field name="triplet_phase_result_id" ref="symple_triplet_phase_result_C2639_-_Incompatibilit__Non_bloccante_E-ML-GM08-3-0002"/>
3591
+ </record>
3592
+ <record id="result_code_configurator_A1093_-_Apertura_Case_Interruzione_Servizio_OK" model="result.code.configurator">
3593
+ <field name="code_phase_id" ref="symple_triplet_phase_A1093_-_Apertura_Case_Interruzione_Servizio"/>
3594
+ <field name="result_value">OK</field>
3595
+ <field name="triplet_phase_result_id" ref="symple_triplet_phase_result_C1613_-_Controlli_CRM_OK_E-ML-GM08-3-0001-prelim"/>
3596
+ </record>
3597
+ <record id="result_code_configurator_A1595_-_Invio_Annullamento_alla_Market_Communication_OK" model="result.code.configurator">
3598
+ <field name="code_phase_id" ref="symple_triplet_phase_A1595_-_Invio_Annullamento_alla_Market_Communication"/>
3599
+ <field name="result_value">OK</field>
3600
+ <field name="triplet_phase_result_id" ref="symple_triplet_phase_result_C2458_-_OK_Inviata_E-ML-GM08-3-0063"/>
3601
+ </record>
3602
+ <record id="result_code_configurator_A1320_-_Errore_in_fase_Attesa_Esito_M2C_per_Taglio_Colonna_OK" model="result.code.configurator">
3603
+ <field name="code_phase_id" ref="symple_triplet_phase_A1320_-_Errore_in_fase_Attesa_Esito_M2C_per_Taglio_Colonna"/>
3604
+ <field name="result_value">OK</field>
3605
+ <field name="triplet_phase_result_id" ref="symple_triplet_phase_result_C1920_-_Annulla_-_Attesa_Esito_M2c_E-ML-GM08-3-0059"/>
3606
+ </record>
3607
+ <record id="result_code_configurator_A1313_-_Integrazione_M2C_per_Taglio_Colonna_OK" model="result.code.configurator">
3608
+ <field name="code_phase_id" ref="symple_triplet_phase_A1313_-_Integrazione_M2C_per_Taglio_Colonna"/>
3609
+ <field name="result_value">OK</field>
3610
+ <field name="triplet_phase_result_id" ref="symple_triplet_phase_result_C1888_-_OK_-_Integrazione_M2C_per_Taglio_Colonna_E-ML-GM08-3-0046"/>
3611
+ </record>
3612
+ <record id="result_code_configurator_A1316_-_CRM_-_Creazione_Ordine_per_Taglio_Colonna_OK" model="result.code.configurator">
3613
+ <field name="code_phase_id" ref="symple_triplet_phase_A1316_-_CRM_-_Creazione_Ordine_per_Taglio_Colonna"/>
3614
+ <field name="result_value">OK</field>
3615
+ <field name="triplet_phase_result_id" ref="symple_triplet_phase_result_C1891_-_OK_-_Creazione_Ordine_E-ML-GM08-3-0044"/>
3616
+ </record>
3617
+ <record id="result_code_configurator_A1316_-_CRM_-_Creazione_Ordine_per_Taglio_Colonna_KO" model="result.code.configurator">
3618
+ <field name="code_phase_id" ref="symple_triplet_phase_A1316_-_CRM_-_Creazione_Ordine_per_Taglio_Colonna"/>
3619
+ <field name="result_value">KO</field>
3620
+ <field name="triplet_phase_result_id" ref="symple_triplet_phase_result_C1892_-_KO_-_Creazione_Ordine_CRM_E-ML-GM08-3-0045"/>
3621
+ </record>
3622
+ <record id="result_code_configurator_A1315_-_Aggiornamento_CRM_per_Taglio_Colonna_OK" model="result.code.configurator">
3623
+ <field name="code_phase_id" ref="symple_triplet_phase_A1315_-_Aggiornamento_CRM_per_Taglio_Colonna"/>
3624
+ <field name="result_value">OK</field>
3625
+ <field name="triplet_phase_result_id" ref="symple_triplet_phase_result_C1889_-_OK_-_Aggiornamento_CRM_E-ML-GM08-3-0050"/>
3626
+ </record>
3627
+ <record id="result_code_configurator_A1379_-_Apertura_Case_Invio_Onere_RES1" model="result.code.configurator">
3628
+ <field name="code_phase_id" ref="symple_triplet_phase_A1379_-_Apertura_Case_Invio_Onere"/>
3629
+ <field name="result_value">RES1</field>
3630
+ <field name="triplet_phase_result_id" ref="symple_triplet_phase_result_C2003_-_OK_-_Case_di_invio_oneri_aperto_E-ML-GM08-3-0052"/>
3631
+ </record>
3632
+ <record id="result_code_configurator_A1093_-_Apertura_Case_Interruzione_Servizio_KO" model="result.code.configurator">
3633
+ <field name="code_phase_id" ref="symple_triplet_phase_A1093_-_Apertura_Case_Interruzione_Servizio"/>
3634
+ <field name="result_value">KO</field>
3635
+ <field name="triplet_phase_result_id" ref="symple_triplet_phase_result_C1614_-_Controlli_CRM_KO_E-ML-GM08-3-00090"/>
3636
+ </record>
3637
+ <record id="result_code_configurator_A1093_-_Apertura_Case_Interruzione_Servizio_OK-FORCE" model="result.code.configurator">
3638
+ <field name="code_phase_id" ref="symple_triplet_phase_A1093_-_Apertura_Case_Interruzione_Servizio"/>
3639
+ <field name="result_value">OK-FORCE</field>
3640
+ <field name="triplet_phase_result_id" ref="symple_triplet_phase_result_C2214_-_Controlli_CRM_OK_Forzato_E-ML-GM08-3-00091"/>
3641
+ </record>
3642
+ <record id="result_code_configurator_A2561_-_verifica_stato_invio_pratica_da_annullare_RES1" model="result.code.configurator">
3643
+ <field name="code_phase_id" ref="symple_triplet_phase_A2561_-_verifica_stato_invio_pratica_da_annullare"/>
3644
+ <field name="result_value">RES1</field>
3645
+ <field name="triplet_phase_result_id" ref="symple_triplet_phase_result_C3120_-_annullamento_da_gestire_E-ML-GM08-3-00097"/>
3646
+ </record>
3647
+ <record id="result_code_configurator_A2561_-_verifica_stato_invio_pratica_da_annullare_RES2" model="result.code.configurator">
3648
+ <field name="code_phase_id" ref="symple_triplet_phase_A2561_-_verifica_stato_invio_pratica_da_annullare"/>
3649
+ <field name="result_value">RES2</field>
3650
+ <field name="triplet_phase_result_id" ref="symple_triplet_phase_result_C2599_-_annullamento_confermato_E-ML-GM08-3-00098"/>
3651
+ </record>
3652
+ <record id="result_code_configurator_A1312_-_Controlli_CRM_per_Taglio_Colonna_OK" model="result.code.configurator">
3653
+ <field name="code_phase_id" ref="symple_triplet_phase_A1312_-_Controlli_CRM_per_Taglio_Colonna"/>
3654
+ <field name="result_value">OK</field>
3655
+ <field name="triplet_phase_result_id" ref="symple_triplet_phase_result_C1613_-_Controlli_CRM_OK_E-ML-GM08-3-0042"/>
3656
+ </record>
3657
+ <record id="result_code_configurator_A1312_-_Controlli_CRM_per_Taglio_Colonna_KO" model="result.code.configurator">
3658
+ <field name="code_phase_id" ref="symple_triplet_phase_A1312_-_Controlli_CRM_per_Taglio_Colonna"/>
3659
+ <field name="result_value">KO</field>
3660
+ <field name="triplet_phase_result_id" ref="symple_triplet_phase_result_C1614_-_Controlli_CRM_KO_E-ML-GM08-3-0043"/>
3661
+ </record>
3662
+
3663
+ </data>
3664
+ </odoo>
3665
+
3666
+ Processed_records: 157
3667
+ Managed records: 157