Skip to content

Commit

Permalink
[15.0][4470][IMP] stock_move_location #39
Browse files Browse the repository at this point in the history
[IMP] stock_move_location
  • Loading branch information
AungKoKoLin1997 authored Apr 12, 2024
1 parent 2d2ec7f commit 68ad6bf
Showing 1 changed file with 26 additions and 15 deletions.
41 changes: 26 additions & 15 deletions stock_move_location/wizard/stock_move_location.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,13 @@

from odoo import api, fields, models
from odoo.fields import first
from odoo.osv import expression


class StockMoveLocationWizard(models.TransientModel):
_name = "wiz.stock.move.location"
_description = "Wizard move location"

def _get_default_picking_type_id(self):
company_id = self.env.context.get("company_id") or self.env.user.company_id.id
return (
self.env["stock.picking.type"]
.search(
[
("code", "=", "internal"),
("warehouse_id.company_id", "=", company_id),
],
limit=1,
)
.id
)

origin_location_disable = fields.Boolean(
compute="_compute_readonly_locations",
help="technical field to disable the edition of origin location.",
Expand All @@ -53,7 +40,9 @@ def _get_default_picking_type_id(self):
string="Move Location lines",
)
picking_type_id = fields.Many2one(
comodel_name="stock.picking.type", default=_get_default_picking_type_id
compute="_compute_picking_type_id",
comodel_name="stock.picking.type",
readonly=False,
)
picking_id = fields.Many2one(
string="Connected Picking", comodel_name="stock.picking"
Expand All @@ -74,6 +63,28 @@ def _compute_readonly_locations(self):
rec.origin_location_disable = True
rec.destination_location_disable = True

@api.depends_context("company")
@api.depends("origin_location_id")
def _compute_picking_type_id(self):
company_id = self.env.context.get("company_id") or self.env.user.company_id.id
for rec in self:
picking_type = self.env["stock.picking.type"]
base_domain = [
("code", "=", "internal"),
("warehouse_id.company_id", "=", company_id),
]
if rec.origin_location_id:
location_id = rec.origin_location_id
while location_id and not picking_type:
domain = [("default_location_src_id", "=", location_id.id)]
domain = expression.AND([base_domain, domain])
picking_type = picking_type.search(domain, limit=1)
# Move up to the parent location if no picking type found
location_id = not picking_type and location_id.location_id or False
if not picking_type:
picking_type = picking_type.search(base_domain, limit=1)
rec.picking_type_id = picking_type.id

@api.model
def default_get(self, fields):
res = super().default_get(fields)
Expand Down

0 comments on commit 68ad6bf

Please sign in to comment.