Merge branch refs/heads/develop into refs/heads/release/release_2.15
This commit is contained in:
@@ -2,3 +2,4 @@
|
||||
|
||||
from . import sf_production_demand_plan
|
||||
from . import sale_order
|
||||
from . import stock_route
|
||||
|
||||
@@ -89,6 +89,9 @@ class SfProductionDemandPlan(models.Model):
|
||||
string='订单状态',
|
||||
related='sale_order_line_id.state')
|
||||
route_id = fields.Many2one('stock.route', string='路线', related='sale_order_line_id.route_id', store=True)
|
||||
route_ids = fields.Many2many('stock.route', 'stock_route_demand_plan', 'demand_plan_id', 'route_id', '路线',
|
||||
domain=[('demand_plan_selectable', '=', True)], compute='_compute_route_ids',
|
||||
store=True)
|
||||
contract_date = fields.Date('合同日期', related='sale_order_id.contract_date')
|
||||
date_order = fields.Datetime('下单日期', related='sale_order_id.date_order')
|
||||
contract_code = fields.Char('合同号', related='sale_order_id.contract_code', store=True)
|
||||
@@ -136,6 +139,18 @@ class SfProductionDemandPlan(models.Model):
|
||||
|
||||
outsourcing_purchase_request = fields.Char('委外采购申请单')
|
||||
|
||||
@api.depends('supply_method')
|
||||
def _compute_route_ids(self):
|
||||
for pdp in self:
|
||||
if pdp.supply_method:
|
||||
group_id = self.env['stock.route.group'].sudo().search([('code', '=', pdp.supply_method)])
|
||||
route_ids = self.env['stock.route'].sudo().search(
|
||||
[('demand_plan_selectable', '=', True), ('stock_route_group_ids', '=', group_id.id)])
|
||||
if route_ids:
|
||||
pdp.route_ids = route_ids.ids
|
||||
break
|
||||
pdp.route_ids = None
|
||||
|
||||
@api.depends('sale_order_id.state', 'sale_order_id.mrp_production_ids.schedule_state', 'sale_order_id.order_line',
|
||||
'sale_order_id.mrp_production_ids.state')
|
||||
def _compute_status(self):
|
||||
@@ -327,8 +342,11 @@ class SfProductionDemandPlan(models.Model):
|
||||
date_planned_start = datetime.combine(date_part, time_part)
|
||||
pro_plan_list.production_line_id = sf_production_line.id
|
||||
pro_plan_list.date_planned_start = date_planned_start
|
||||
for pro_plan in pro_plan_list:
|
||||
pro_plan.do_production_schedule()
|
||||
self._do_production_schedule(pro_plan_list)
|
||||
|
||||
def _do_production_schedule(self, pro_plan_list):
|
||||
for pro_plan in pro_plan_list:
|
||||
pro_plan.do_production_schedule()
|
||||
|
||||
def button_action_print(self):
|
||||
return {
|
||||
|
||||
49
sf_demand_plan/models/stock_route.py
Normal file
49
sf_demand_plan/models/stock_route.py
Normal file
@@ -0,0 +1,49 @@
|
||||
from odoo import models, fields, api, _
|
||||
|
||||
|
||||
class SfStockRoute(models.Model):
|
||||
_inherit = 'stock.route'
|
||||
|
||||
demand_plan_selectable = fields.Boolean("需求计划行")
|
||||
stock_route_group_ids = fields.Many2many('stock.route.group', 'route_to_group', string='路线组')
|
||||
demand_plan_ids = fields.Many2many('sf.production.demand.plan', 'stock_route_demand_plan', 'route_id',
|
||||
'demand_plan_id', '需求计划', copy=False, compute='_compute_demand_plan_ids',
|
||||
store=True)
|
||||
|
||||
@api.depends('demand_plan_selectable', 'stock_route_group_ids')
|
||||
def _compute_demand_plan_ids(self):
|
||||
for sr in self:
|
||||
if sr.demand_plan_selectable:
|
||||
stock_route_group = [srg.code for srg in sr.stock_route_group_ids]
|
||||
demand_plan_ids = self.env['sf.production.demand.plan'].sudo().search(
|
||||
[('supply_method', 'in', stock_route_group)])
|
||||
if demand_plan_ids:
|
||||
sr.demand_plan_ids = demand_plan_ids.ids
|
||||
break
|
||||
sr.demand_plan_ids = None
|
||||
|
||||
# def name_get(self):
|
||||
# res = super().name_get()
|
||||
# if self.env.context.get('demand_plan_search_stock_route_id'):
|
||||
# demand_plan_id = self.env['sf.production.demand.plan'].sudo().browse(
|
||||
# int(self.env.context.get('demand_plan_search_stock_route_id')))
|
||||
# if demand_plan_id and demand_plan_id.supply_method:
|
||||
# supply_method = self._set_supply_method(demand_plan_id.supply_method)
|
||||
# res = [(item[0], f'{item[1]}-{supply_method}') for item in res if len(item) == 2]
|
||||
# return res
|
||||
#
|
||||
# def _set_supply_method(self, supply_method):
|
||||
# return {
|
||||
# 'automation': "自动化产线加工",
|
||||
# 'manual': "人工线下加工",
|
||||
# 'purchase': "外购",
|
||||
# 'outsourcing': "委外加工"
|
||||
# }.get(supply_method)
|
||||
|
||||
|
||||
class SfStockRouteGroup(models.Model):
|
||||
_name = 'stock.route.group'
|
||||
_description = '路线组'
|
||||
|
||||
name = fields.Char('名称')
|
||||
code = fields.Char('编码')
|
||||
Reference in New Issue
Block a user