Merge branch 'refs/heads/feature/库存路线' into feature/物料需求计划管理
# Conflicts: # sf_demand_plan/__manifest__.py # sf_demand_plan/models/sf_production_demand_plan.py # sf_demand_plan/security/ir.model.access.csv
This commit is contained in:
@@ -3,3 +3,4 @@
|
||||
from . import sf_demand_plan
|
||||
from . import sf_production_demand_plan
|
||||
from . import sale_order
|
||||
from . import stock_route
|
||||
|
||||
@@ -5,6 +5,7 @@ from odoo import models, fields, api, _
|
||||
from odoo.exceptions import ValidationError
|
||||
from odoo.tools import float_compare
|
||||
from datetime import datetime, timedelta
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class SfProductionDemandPlan(models.Model):
|
||||
@@ -85,6 +86,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)
|
||||
@@ -142,6 +146,18 @@ class SfProductionDemandPlan(models.Model):
|
||||
blank_arrival_date = fields.Date('采购计划到货(坯料)')
|
||||
finished_product_arrival_date = fields.Date('采购计划到货(成品)')
|
||||
|
||||
@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):
|
||||
|
||||
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