Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
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
8 changes: 8 additions & 0 deletions stock_batch_picking_ux/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,16 @@
#
##############################################################################
{
<<<<<<< 8b1493de9906b9f991195e66de149c8aa7f66608
"name": "Stock Usability with Batch Picking",
"version": "19.0.1.2.0",
||||||| 5c4c4f22e4695c1a7871d31b873b66b0e893cf18
"name": "Stock Usability with Batch Picking and stock vouchers",
"version": "18.0.1.3.0",
=======
"name": "Stock Usability with Batch Picking and stock vouchers",
"version": "18.0.1.3.1",
>>>>>>> e8b8a7009dcdf451dfe9edf66870269aef808a28
"category": "Warehouse Management",
"sequence": 14,
"summary": "",
Expand Down
96 changes: 96 additions & 0 deletions stock_batch_picking_ux/models/stock_batch_picking.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,106 @@ def _compute_picking_type_data(self):

@api.onchange("partner_id")
def changes_set_pickings(self):
<<<<<<< 8b1493de9906b9f991195e66de149c8aa7f66608
"""we reset pickings if partner_id is changed and set, if partner is empty we keep previous pickings.
Operation type is protected by odoo (without onchange, by a constraint), no need to trigger onchange"""
for rec in self.filtered("partner_id"):
rec.picking_ids = False
||||||| 5c4c4f22e4695c1a7871d31b873b66b0e893cf18
# if we change type or partner reset pickings
self.picking_ids = False

@api.onchange("voucher_number", "picking_ids")
def format_voucher_number(self):
for rec in self:
if not rec.voucher_number:
continue
voucher_number = self.env["stock.picking.voucher"]._format_document_number(rec.voucher_number)
if voucher_number and voucher_number != rec.voucher_number:
rec.voucher_number = voucher_number

def write(self, vals):
if "voucher_number" in vals and vals.get("voucher_number"):
voucher_number = self.env["stock.picking.voucher"]._format_document_number(vals.get("voucher_number"))
if voucher_number and voucher_number != vals.get("voucher_number"):
vals["voucher_number"] = voucher_number
return super().write(vals)

def action_confirm(self):
batches_in_draft = self.filtered(lambda batch: batch.state == "draft")
res = super().action_confirm()
# When the batch is confirmed for the first time, Odoo already created
# the operation lines from the selected pickings. We reset them to zero
# so the operator can input only the quantities that will actually be processed.
batches_in_draft.move_line_ids.filtered(lambda line: line.state not in ("done", "cancel")).write(
{"quantity": 0}
)
return res

def add_picking_operation(self):
self.ensure_one()
view_id = self.env.ref("stock_batch_picking_ux.view_move_line_tree_smart_button").id
search_view_id = self.env.ref("stock_batch_picking_ux.stock_move_line_view_search").id
return {
"type": "ir.actions.act_window",
"res_model": "stock.move.line",
"search_view_id": search_view_id,
"views": [[view_id, "list"], [False, "form"]],
"domain": [["id", "in", self.move_line_ids.ids]],
"context": {
"create": False,
"from_batch": True,
},
}
=======
# if we change type or partner reset pickings
self.picking_ids = False

@api.onchange("voucher_number", "picking_ids")
def format_voucher_number(self):
for rec in self:
if not rec.voucher_number:
continue
voucher_number = self.env["stock.picking.voucher"]._format_document_number(rec.voucher_number)
if voucher_number and voucher_number != rec.voucher_number:
rec.voucher_number = voucher_number

def write(self, vals):
if "voucher_number" in vals and vals.get("voucher_number"):
voucher_number = self.env["stock.picking.voucher"]._format_document_number(vals.get("voucher_number"))
if voucher_number and voucher_number != vals.get("voucher_number"):
vals["voucher_number"] = voucher_number
return super().write(vals)

def action_confirm(self):
batches_in_draft = self.filtered(lambda batch: batch.state == "draft")
res = super().action_confirm()
# When the batch is confirmed for the first time, Odoo already created
# the operation lines from the selected pickings. For receptions we reset
# them to zero so the operator can input only the quantities physically
# received (partial reception). This must NOT touch deliveries/waves,
# where zeroing the quantity wrongly removes product availability.
batches_in_draft.move_line_ids.filtered(
lambda line: line.state not in ("done", "cancel") and line.picking_id.picking_type_id.code == "incoming"
).write({"quantity": 0})
return res

def add_picking_operation(self):
self.ensure_one()
view_id = self.env.ref("stock_batch_picking_ux.view_move_line_tree_smart_button").id
search_view_id = self.env.ref("stock_batch_picking_ux.stock_move_line_view_search").id
return {
"type": "ir.actions.act_window",
"res_model": "stock.move.line",
"search_view_id": search_view_id,
"views": [[view_id, "list"], [False, "form"]],
"domain": [["id", "in", self.move_line_ids.ids]],
"context": {
"create": False,
"from_batch": True,
},
}
>>>>>>> e8b8a7009dcdf451dfe9edf66870269aef808a28

def action_done(self):
for rec in self:
Expand Down
Loading