@@ -30,29 +30,29 @@ if round(total_share) != 100:
3030for line in records.x_line_ids:
3131 analytic_id = line.x_analytic_account_name_id
3232 analytic_name = analytic_id.name
33-
33+ original_id = line.x_analytic_line_id.id
3434
3535 new_analytic_item_id = new_analytic_item.create({
3636 "x_plan11_id": analytic_id.id,
3737 "name": analytic_id.name,
3838 "amount": line.x_amount
3939 })
4040 # new_analytic_item += new_analytic_item_id
41- # occupied_cells.append((line.x_analytic_line_id.id , new_analytic_item_id))
41+ # occupied_cells.append((original_id , new_analytic_item_id))
4242
43- if line.x_analytic_line_id.id in occupied_cells:
44- occupied_cells[line.x_analytic_line_id.id ].update(new_analytic_item_id)
43+ if original_id in occupied_cells:
44+ occupied_cells[original_id ].update(new_analytic_item_id)
4545 else:
46- occupied_cells.update({line.x_analytic_line_id.id : set(new_analytic_item_id)})
46+ occupied_cells.update({original_id : set(new_analytic_item_id)})
4747
48- if line.x_analytic_line_id.id in note_details:
48+ if original_id in note_details:
4949 analytic_url = f"/odoo/analytic-items/{new_analytic_item_id.id}"
5050 note_line = f"- {line.x_share:.2f}% on <a href='{analytic_url}' target='_blank'>{analytic_name}</a>"
51- note_details[line.x_analytic_line_id.id ].add(note_line)
51+ note_details[original_id ].add(note_line)
5252 else:
5353 analytic_url = f"/odoo/analytic-items/{new_analytic_item_id.id}"
5454 note_line = {f"- {line.x_share:.2f}% on <a href='{analytic_url}' target='_blank'>{analytic_name}</a>"}
55- note_details.update({line.x_analytic_line_id.id : set(note_line)})
55+ note_details.update({original_id : set(note_line)})
5656
5757for cell, new_analytic_lines in occupied_cells.items():
5858 for new_analytic_line in list(new_analytic_lines):
@@ -77,20 +77,6 @@ for Aid, values in note_details.items():
7777 """
7878 new_analytic_item.browse(Aid).write({"x_notes": note_html.strip()})
7979
80-
81- # for Aid, values in occupied_cells.items():
82- # raise UserError(values)
83- # for value in values:
84- # raise UserError(value)
85-
86- # note_html = f"""
87- # <i>{datetime.date}</i><br/>
88- # <p><b>Analytic item coming from a split</b><br/>
89- # {'<br/>'.join(note_lines)}<br/>
90- # See <a href='/odoo/analytic-items/{original_id.id}' target='_blank'> original analytic item:</a>
91- # </p>
92- # """
93-
9480# new_analytic_item.write({"x_notes": note_html.strip()})]]>
9581 </field >
9682 </record >
@@ -101,31 +87,30 @@ for Aid, values in note_details.items():
10187 <field name =" binding_model_id" ref =" analytic.model_account_analytic_line" />
10288 <field name =" binding_view_types" >list,kanban</field >
10389 <field name =" state" >code</field >
104- <field name =" code" ><![CDATA[ product_commands = []
90+ <field name =" code" ><![CDATA[ analytic_account_lines = []
10591amount_total = 0
92+
10693for record in records:
10794 amount_total += record.amount
108- product_commands.append((0, 0, {
109- "x_analytic_account_name_id": record.x_plan11_id.id,
110- "x_analytic_line_id": record.id,
111- "x_amount": record.amount / 2
95+ split_amount = record.amount / 2
96+
97+ for _ in range(2):
98+ analytic_account_lines.append((0, 0, {
99+ "x_analytic_account_name_id": record.x_plan11_id.id,
100+ "x_analytic_line_id": record.id,
101+ "x_amount": split_amount
102+ }))
112103
113- }))
114- product_commands.append((0, 0, {
115- "x_analytic_account_name_id": record.x_plan11_id.id,
116- "x_analytic_line_id": record.id,
117- "x_amount": record.amount / 2
104+ if amount_total == 0:
105+ raise UserError("Total amount is zero. Cannot split analytic items.")
118106
119- }))
120107wizard = env['x_analytic_account_wizard'].create({
121- "x_line_ids": product_commands ,
108+ "x_line_ids": analytic_account_lines ,
122109 "x_total": amount_total
123110})
124111
125112action = env['ir.actions.act_window']._for_xml_id('condominium.split_act_window')
126- action['res_id'] = wizard.id
127-
128- ]]>
113+ action['res_id'] = wizard.id]]>
129114 </field >
130115 </record >
131116
0 commit comments