Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ADD] stock_mass_return: add mass return functionality for done transfer #640

Draft
wants to merge 2 commits into
base: 18.0
Choose a base branch
from
Draft
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
[IMP] stock_mass_return: override _create_return method
In this commit:
- Override _create_return method to set chatter message
- Stop deleting last message in action_create_returns_all method
devp-odoo committed Mar 24, 2025
commit a92da9732fdd1c0cb0d4ce6da42981a5b6a82cae
36 changes: 24 additions & 12 deletions stock_mass_return/wizard/stock_picking_return.py
Original file line number Diff line number Diff line change
@@ -89,25 +89,37 @@ def create_picking_wizard(self, picking_id):
}
)

# Override _create_return
def _create_return(self):
for return_move in self.product_return_moves.move_id:
return_move.move_dest_ids.filtered(lambda m: m.state not in ('done', 'cancel'))._do_unreserve()

# create new picking for returned products
new_picking = self.picking_id.copy(self._prepare_picking_default_values())
new_picking.user_id = False
new_picking.message_post_with_source(
"mail.message_origin_link",
render_values={"self": new_picking, "origin": self._get_picking_ids()},
subtype_xmlid="mail.mt_note",
)
returned_lines = False
for return_line in self.product_return_moves:
if return_line._process_line(new_picking):
returned_lines = True
if not returned_lines:
raise UserError(_("Please specify at least one non-zero quantity."))

new_picking.action_confirm()
new_picking.action_assign()
return new_picking

def action_create_returns_all(self):
if len(self.get_active_ids()) == 1:
return super().action_create_returns_all()
new_picking = self._create_return()

for picking in self._get_picking_ids():
picking.write({"new_return_ids": [Command.link(new_picking.id)]})
last_message = self.env["mail.message"].search(
[("res_id", "=", new_picking.id), ("model", "=", "stock.picking")],
order="id desc",
limit=1,
)
if last_message:
last_message.unlink()
new_picking.message_post_with_source(
"mail.message_origin_link",
render_values={"self": new_picking, "origin": self._get_picking_ids()},
subtype_xmlid="mail.mt_note",
)

vals = {
"sale_id": self._get_picking_ids()[0].sale_id.id,