@@ -14,74 +14,72 @@ records.action_confirm()
1414 <field name =" state" >code</field >
1515 <field name =" model_id" ref =" model_analytic_account_wizard" />
1616 <field name =" binding_model_id" ref =" model_analytic_account_wizard" />
17- <field name =" code" ><![CDATA[ total_share = 0
18- note_lines = []
17+ <field name =" code" ><![CDATA[
18+ total_share = sum(line.x_share for line in records.x_line_ids)
19+
20+ if round(total_share) != 100:
21+ raise UserError("The Share sum shall equal 100% to confirm the split.")
22+
1923new_analytic_item = env['account.analytic.line']
2024note_details = {}
2125occupied_cells = {}
2226
23- for line in records.x_line_ids:
24- total_share += line.x_share
25-
26- if round(total_share) != 100:
27- raise UserError("Total share must be 100%. Current: %s" % total_share)
27+ project_plan, other_plans = records.env['account.analytic.plan']._get_all_plans()
28+ for plan in other_plans:
29+ if plan.name == 'Properties':
30+ fname = plan._column_name()
2831
2932for line in records.x_line_ids:
30- project_plan, other_plans = line.x_analytic_line_id.env['account.analytic.plan']._get_all_plans()
31- for plan in other_plans:
32- if plan.name == 'Properties':
33- fname = plan._column_name()
34-
33+ original_analytic = line.x_analytic_line_id or original_analytic
3534 analytic_id = line.x_analytic_account_name_id
3635 analytic_name = analytic_id.name
37- original_id = line.x_analytic_line_id .id
36+ original_analytic_id = original_analytic .id
3837
39- new_analytic_item_id = new_analytic_item.create({
40- fname: analytic_id.id or '',
41- "name": analytic_id.name,
42- "amount": line.x_amount
43- })
44- # new_analytic_item += new_analytic_item_id
45- # occupied_cells.append((original_id, new_analytic_item_id))
38+ if original_analytic:
39+ new_analytic_item_id = original_analytic.copy({
40+ fname: analytic_id.id or '',
41+ "name": analytic_name,
42+ "amount": line.x_amount
43+ })
4644
47- if original_id in occupied_cells:
48- occupied_cells[original_id ].update(new_analytic_item_id)
45+ if original_analytic_id in occupied_cells:
46+ occupied_cells[original_analytic_id ].update(new_analytic_item_id)
4947 else:
50- occupied_cells.update({original_id : set(new_analytic_item_id)})
48+ occupied_cells.update({original_analytic_id : set(new_analytic_item_id)})
5149
52- if original_id in note_details:
50+ if original_analytic_id in note_details:
5351 analytic_url = f"/odoo/analytic-items/{new_analytic_item_id.id}"
5452 note_line = f"- {line.x_share:.2f}% on <a href='{analytic_url}' target='_blank'>{analytic_name}</a>"
55- note_details[original_id ].add(note_line)
53+ note_details[original_analytic_id ].add(note_line)
5654 else:
5755 analytic_url = f"/odoo/analytic-items/{new_analytic_item_id.id}"
5856 note_line = {f"- {line.x_share:.2f}% on <a href='{analytic_url}' target='_blank'>{analytic_name}</a>"}
59- note_details.update({original_id : set(note_line)})
57+ note_details.update({original_analytic_id : set(note_line)})
6058
61- for cell, new_analytic_lines in occupied_cells.items():
62- for new_analytic_line in list(new_analytic_lines ):
59+ for original_id, new_lines in occupied_cells.items():
60+ for new_analytic_line in list(new_lines ):
6361 for Aid, values in note_details.items():
64- if cell == Aid:
62+ if original_id == Aid:
6563 note_html = f"""
6664 <i>{datetime.date.today().strftime("%d %B %Y")}</i><br/>
6765 <p><b>Analytic item coming from a split</b><br/>
6866 {'<br/>'.join(list(values))}<br/>
69- See <a href='/odoo/analytic-items/{cell }' target='_blank'> original analytic item: </a>
67+ See <a href='/odoo/analytic-items/{original_id }' target='_blank'> original analytic item</a>
7068 </p>
7169 """
7270 new_analytic_line.write({"x_notes": note_html.strip()})
7371
74- for Aid, values in note_details.items():
72+ for original_id, values in note_details.items():
73+ original_item = new_analytic_item.browse(original_id)
7574 note_html = f"""
7675 <i>{datetime.date.today().strftime("%d %B %Y")}</i><br/>
7776 <p><b>Analytic item splited</b><br/>
7877 {'<br/>'.join(list(values))}<br/>
78+ Original amount: {original_item.amount}
7979 </p>
8080 """
81- new_analytic_item.browse(Aid).write({"x_notes": note_html.strip()})
82-
83- # new_analytic_item.write({"x_notes": note_html.strip()})]]>
84- </field >
81+ new_analytic_item.browse(original_id).write({"x_notes": note_html.strip(), "amount": 0.0,})
82+ ]]> </field >
8583 </record >
8684
8785 <record id =" split_analytic_item_action" model =" ir.actions.server" >
@@ -97,10 +95,16 @@ for record in records:
9795 amount_total += record.amount
9896 split_amount = record.amount / 2
9997
98+ project_plan, other_plans = record.env['account.analytic.plan']._get_all_plans()
99+ for plan in other_plans:
100+ if plan.name == 'Properties':
101+ fname = plan._column_name()
102+
100103 for _ in range(2):
101104 analytic_account_lines.append((0, 0, {
102105 "x_analytic_line_id": record.id,
103- "x_amount": split_amount
106+ "x_amount": split_amount,
107+ "x_analytic_account_name_id": record[fname].id if record[fname] else False
104108 }))
105109
106110if amount_total == 0:
@@ -239,11 +243,13 @@ record['x_studio_attendee_vote_ids'] = env['x_calendar_event_line_a1bce_line_a3f
239243 <field name =" binding_model_id" ref =" calendar.model_calendar_event" />
240244 <field name =" model_id" ref =" calendar.model_calendar_event" />
241245 <field name =" state" >mail_post</field >
242- <field name =" name" >Send General Meeting Report</field >
246+ <field name =" template_id" ref =" mail_template_51" />
247+ <field name =" name" >Industry: Send General Meeting Report</field >
243248 </record >
244249 <record id =" industry_send_genera_636204d5-33e7-437e-99cb-fbc897d72c0e" model =" ir.actions.server" >
245250 <field name =" binding_model_id" ref =" calendar.model_calendar_event" />
246251 <field name =" model_id" ref =" calendar.model_calendar_event" />
252+ <field name =" template_id" ref =" mail_template_52" />
247253 <field name =" state" >mail_post</field >
248254 <field name =" name" >Send General Meeting Agenda</field >
249255 </record >
@@ -312,7 +318,7 @@ else:
312318 <record id =" industry_populate_di_1bcb08fe-f6dc-4ea0-9ffc-d4607055470e" model =" ir.actions.server" >
313319 <field name =" binding_model_id" ref =" distribution_key_ebf70cee-4475-4921-a5f1-85e747bc5842" />
314320 <field name =" code" ><![CDATA[ for distribution_key in records:
315- properties = env['x_property'].search([])
321+ properties = env['x_property'].search([('x_studio_company_id', 'in', record.x_studio_company_id.id) ])
316322 if properties:
317323 total_distribution = sum(properties.mapped('x_studio_area'))
318324 for property in properties:
@@ -349,9 +355,8 @@ if server_action: server_action.run()]]></field>
349355 </record >
350356 <record id =" industry_create_task_47e0cf69-8b12-4e53-b7d5-794639319f20" model =" ir.actions.server" >
351357 <field name =" binding_model_id" ref =" calendar_event_line_c0871dc9-8843-41a1-8c07-bbfd5c053508" />
352- <field name =" code" ><![CDATA[ customer_id = record.x_calendar_event_id.x_studio_partner_id.id
353- action = { 'type': 'ir.actions.act_window', 'name': 'Create Task', 'res_model': 'project.task', 'view_mode': 'form', 'view_type': 'form', 'target': 'new', 'context': { 'default_project_id': env['project.project'].search([('partner_id', '=', customer_id)]).id, 'default_name': record.x_name, 'default_user_ids': [env.user.id], 'default_partner_id': customer_id } }
354- ]]> </field >
358+ <field name =" code" ><![CDATA[ customer_id = record.x_calendar_event_id.x_studio_condominium.partner_id.id
359+ action = { 'type': 'ir.actions.act_window', 'name': 'Create Task', 'res_model': 'project.task', 'view_mode': 'form', 'view_type': 'form', 'target': 'new', 'context': { 'default_project_id': env['project.project'].search([('partner_id', '=', customer_id)]).id, 'default_name': record.x_name, 'default_user_ids': [env.user.id], 'default_partner_id': customer_id } }]]> </field >
355360 <field name =" model_id" ref =" calendar_event_line_c0871dc9-8843-41a1-8c07-bbfd5c053508" />
356361 <field name =" state" >code</field >
357362 <field name =" name" >Create Task from Motion</field >
0 commit comments