Skip to content

Commit

Permalink
[IMP] academic_sale_subscription: add button to create order in group
Browse files Browse the repository at this point in the history
closes #202

closes #212

X-original-commit: 88a2815
Signed-off-by: matiasperalta1 <[email protected]>
Signed-off-by: lav-adhoc <[email protected]>
Signed-off-by: Franco Leyes <[email protected]>
  • Loading branch information
lef-adhoc committed Feb 20, 2025
1 parent 05c86ac commit e853314
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 0 deletions.
1 change: 1 addition & 0 deletions academic_sale_subscription/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"license": "AGPL-3",
"depends": ["academic", "sale_subscription_ux"],
"data": [
"data/ir_actions_server.xml",
"security/ir.model.access.csv",
"views/sale_order_template_views.xml",
"views/sale_subscription_plan_views.xml",
Expand Down
12 changes: 12 additions & 0 deletions academic_sale_subscription/data/ir_actions_server.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding='UTF-8'?>
<odoo>
<record model="ir.actions.server" id="action_show_duplicated_subscription">
<field name="name">Duplicated Subscriptions</field>
<field name="model_id" ref="sale.model_sale_order"/>
<field name="type">ir.actions.server</field>
<field name="state">code</field>
<field name="code">
action = model.action_show_duplicate_subscriptions()
</field>
</record>
</odoo>
47 changes: 47 additions & 0 deletions academic_sale_subscription/models/sale_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,50 @@ def _onchange_next_invoice_date_show_update_end_date(self):
def set_deferred_end_date_from_button(self):
for record in self:
record._set_deferred_end_date_from_template()

@api.model
def get_duplicate_subscription_ids(self):
# TODO: evaluar sacar feature
grouped_subs = self.read_group(
[("partner_id", "!=", False), ("order_line", "!=", False), ("subscription_state", "=", "3_progress")],
["partner_id"],
["partner_id"],
lazy=False,
)
partner_ids = {group["partner_id"][0] for group in grouped_subs if group["__count"] > 1}

if not partner_ids:
return [("id", "in", [])]

subscriptions = self.search(
[
("partner_id", "in", list(partner_ids)),
("order_line", "!=", False),
("subscription_state", "=", "3_progress"),
]
)

grouped_by_products = {}
duplicate_ids = set()

for sub in subscriptions:
product_ids = frozenset(sub.order_line.mapped("product_id.id"))
key = (sub.partner_id.id, product_ids)

if key in grouped_by_products:
duplicate_ids.add(sub.id)
duplicate_ids.update(grouped_by_products[key])
grouped_by_products.setdefault(key, set()).add(sub.id)

return [("id", "in", list(duplicate_ids))]

def action_show_duplicate_subscriptions(self):
# TODO: evaluac sacar feature
return {
"name": "Duplicated Subscriptions",
"type": "ir.actions.act_window",
"res_model": "sale.order",
"view_mode": "list,form",
"domain": self.get_duplicate_subscription_ids(),
"context": "{'search_default_customer': 1}",
}
2 changes: 2 additions & 0 deletions academic_sale_subscription/views/sale_subscription_views.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,6 @@
</filter>
</field>
</record>

<menuitem name="Duplicated Subscriptions" id="menu_duplicated_subscription" action="action_show_duplicated_subscription" parent="sale_subscription.menu_sale_subscription" sequence="90"/>
</odoo>

0 comments on commit e853314

Please sign in to comment.