Accept Merge Request #2186: (feature/齐套检查与下达生产 -> develop)
Merge Request: 需求计划对应产品的调拨单显示不正确 Created By: @管欢 Reviewed By: @胡尧 Approved By: @胡尧 Accepted By: @管欢 URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/2186
This commit is contained in:
@@ -14,7 +14,6 @@ class SfProductionDemandPlan(models.Model):
|
|||||||
|
|
||||||
def _get_machining_precision(self):
|
def _get_machining_precision(self):
|
||||||
machinings = self.env['sf.machining.accuracy'].sudo().search([])
|
machinings = self.env['sf.machining.accuracy'].sudo().search([])
|
||||||
|
|
||||||
list = [(m.sync_id, m.name) for m in machinings]
|
list = [(m.sync_id, m.name) for m in machinings]
|
||||||
return list
|
return list
|
||||||
|
|
||||||
@@ -35,7 +34,8 @@ class SfProductionDemandPlan(models.Model):
|
|||||||
sale_order_id = fields.Many2one(comodel_name="sale.order",
|
sale_order_id = fields.Many2one(comodel_name="sale.order",
|
||||||
string="销售订单", readonly=True)
|
string="销售订单", readonly=True)
|
||||||
sale_order_line_id = fields.Many2one(comodel_name="sale.order.line",
|
sale_order_line_id = fields.Many2one(comodel_name="sale.order.line",
|
||||||
string="销售订单行", readonly=True)
|
string="销售订单明细", readonly=True)
|
||||||
|
sale_order_line_number = fields.Char(string='销售订单行', compute='_compute_sale_order_line_number', store=True)
|
||||||
company_id = fields.Many2one(
|
company_id = fields.Many2one(
|
||||||
related='sale_order_id.company_id',
|
related='sale_order_id.company_id',
|
||||||
store=True, index=True, precompute=True)
|
store=True, index=True, precompute=True)
|
||||||
@@ -91,7 +91,7 @@ class SfProductionDemandPlan(models.Model):
|
|||||||
route_id = fields.Many2one('stock.route', string='路线', related='sale_order_line_id.route_id', store=True)
|
route_id = fields.Many2one('stock.route', string='路线', related='sale_order_line_id.route_id', store=True)
|
||||||
contract_date = fields.Date('合同日期', related='sale_order_id.contract_date')
|
contract_date = fields.Date('合同日期', related='sale_order_id.contract_date')
|
||||||
date_order = fields.Datetime('下单日期', related='sale_order_id.date_order')
|
date_order = fields.Datetime('下单日期', related='sale_order_id.date_order')
|
||||||
contract_code = fields.Char('合同号', related='sale_order_id.contract_code')
|
contract_code = fields.Char('合同号', related='sale_order_id.contract_code', store=True)
|
||||||
plan_remark = fields.Text("计划备注")
|
plan_remark = fields.Text("计划备注")
|
||||||
material_check = fields.Selection([
|
material_check = fields.Selection([
|
||||||
('0', "未齐套"),
|
('0', "未齐套"),
|
||||||
@@ -160,13 +160,23 @@ class SfProductionDemandPlan(models.Model):
|
|||||||
if pending_productions:
|
if pending_productions:
|
||||||
record.status = '50' # 待下达生产
|
record.status = '50' # 待下达生产
|
||||||
# 检查所有制造订单的排程单状态
|
# 检查所有制造订单的排程单状态
|
||||||
if record.sale_order_id.mrp_production_ids and all(
|
if record.sale_order_id.mrp_production_ids:
|
||||||
order.product_id == record.product_id and order.schedule_state != '未排' for order in
|
product_productions = record.sale_order_id.mrp_production_ids.filtered(
|
||||||
record.sale_order_id.mrp_production_ids):
|
lambda p: p.product_id.id == record.product_id.id
|
||||||
record.status = '60' # 已下达
|
)
|
||||||
|
if product_productions and all(order.schedule_state != '未排' for order in product_productions):
|
||||||
|
record.status = '60' # 已下达
|
||||||
if sale_order_state == 'cancel' or not record.sale_order_line_id:
|
if sale_order_state == 'cancel' or not record.sale_order_line_id:
|
||||||
record.status = '100' # 取消
|
record.status = '100' # 取消
|
||||||
|
|
||||||
|
@api.depends('sale_order_line_id.product_id.name')
|
||||||
|
def _compute_sale_order_line_number(self):
|
||||||
|
for line in self:
|
||||||
|
if line.product_id:
|
||||||
|
line.sale_order_line_number = line.sale_order_line_id.product_id.name[-1]
|
||||||
|
else:
|
||||||
|
line.sale_order_line_number = None
|
||||||
|
|
||||||
@api.depends('product_id.part_number', 'product_id.model_name')
|
@api.depends('product_id.part_number', 'product_id.model_name')
|
||||||
def _compute_part_number(self):
|
def _compute_part_number(self):
|
||||||
for line in self:
|
for line in self:
|
||||||
@@ -191,7 +201,7 @@ class SfProductionDemandPlan(models.Model):
|
|||||||
def _compute_materials_id(self):
|
def _compute_materials_id(self):
|
||||||
for line in self:
|
for line in self:
|
||||||
if line.product_id:
|
if line.product_id:
|
||||||
line.materials_id = f"{line.product_id.materials_id.name}*{line.product_id.materials_type_id.name}"
|
line.materials_id = f"{line.product_id.materials_id.name}/{line.product_id.materials_type_id.name}"
|
||||||
else:
|
else:
|
||||||
line.materials_id = None
|
line.materials_id = None
|
||||||
|
|
||||||
@@ -450,7 +460,9 @@ class SfProductionDemandPlan(models.Model):
|
|||||||
record.hide_action_stock_picking = False
|
record.hide_action_stock_picking = False
|
||||||
record.hide_action_outsourcing_stock_picking = False
|
record.hide_action_outsourcing_stock_picking = False
|
||||||
if record.supply_method in ('automation', 'manual'):
|
if record.supply_method in ('automation', 'manual'):
|
||||||
manufacturing_orders = record.sale_order_id.mrp_production_ids
|
manufacturing_orders = record.sale_order_id.mrp_production_ids.filtered(
|
||||||
|
lambda p: p.product_id.id == record.product_id.id
|
||||||
|
)
|
||||||
record.hide_action_stock_picking = bool(manufacturing_orders.mapped('picking_ids').filtered(
|
record.hide_action_stock_picking = bool(manufacturing_orders.mapped('picking_ids').filtered(
|
||||||
lambda p: p.state == 'assigned'))
|
lambda p: p.state == 'assigned'))
|
||||||
elif record.supply_method in ('purchase', 'outsourcing'):
|
elif record.supply_method in ('purchase', 'outsourcing'):
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<field name="name">sf.production.demand.plan.tree</field>
|
<field name="name">sf.production.demand.plan.tree</field>
|
||||||
<field name="model">sf.production.demand.plan</field>
|
<field name="model">sf.production.demand.plan</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<tree string="需求计划" default_order="sequence,create_date desc" editable="bottom"
|
<tree string="需求计划" default_order="sequence desc,create_date desc" editable="bottom"
|
||||||
class="demand_plan_tree">
|
class="demand_plan_tree">
|
||||||
<header>
|
<header>
|
||||||
<button string="打印" name="button_action_print" type="object"
|
<button string="打印" name="button_action_print" type="object"
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
<field name="product_remark" optional="hide"/>
|
<field name="product_remark" optional="hide"/>
|
||||||
<field name="order_code" optional="hide"/>
|
<field name="order_code" optional="hide"/>
|
||||||
<field name="sale_order_id" optional="hide"/>
|
<field name="sale_order_id" optional="hide"/>
|
||||||
<field name="sale_order_line_id" optional="hide"/>
|
<field name="sale_order_line_number" optional="hide"/>
|
||||||
<field name="order_state"/>
|
<field name="order_state"/>
|
||||||
<field name="route_id" optional="hide"/>
|
<field name="route_id" optional="hide"/>
|
||||||
<field name="contract_date"/>
|
<field name="contract_date"/>
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
<field name="contract_code"/>
|
<field name="contract_code"/>
|
||||||
<field name="plan_remark"/>
|
<field name="plan_remark"/>
|
||||||
<field name="processing_time"/>
|
<field name="processing_time"/>
|
||||||
<field name="material_check"/>
|
<field name="material_check" optional="hide"/>
|
||||||
<field name="hide_action_open_mrp_production" invisible="1"/>
|
<field name="hide_action_open_mrp_production" invisible="1"/>
|
||||||
<field name="hide_action_purchase_orders" invisible="1"/>
|
<field name="hide_action_purchase_orders" invisible="1"/>
|
||||||
<field name="hide_action_stock_picking" invisible="1"/>
|
<field name="hide_action_stock_picking" invisible="1"/>
|
||||||
@@ -85,6 +85,7 @@
|
|||||||
<field name="materials_id"/>
|
<field name="materials_id"/>
|
||||||
<field name="model_process_parameters_ids"/>
|
<field name="model_process_parameters_ids"/>
|
||||||
<field name="plan_remark"/>
|
<field name="plan_remark"/>
|
||||||
|
<field name="contract_code"/>
|
||||||
<group expand="0" string="Group By">
|
<group expand="0" string="Group By">
|
||||||
<filter name="group_by_priority" string="优先级" domain="[]" context="{'group_by': 'priority'}"/>
|
<filter name="group_by_priority" string="优先级" domain="[]" context="{'group_by': 'priority'}"/>
|
||||||
<filter name="group_by_status" string="状态" domain="[]" context="{'group_by': 'status'}"/>
|
<filter name="group_by_status" string="状态" domain="[]" context="{'group_by': 'status'}"/>
|
||||||
@@ -97,6 +98,8 @@
|
|||||||
context="{'group_by': 'deadline_of_delivery'}"/>
|
context="{'group_by': 'deadline_of_delivery'}"/>
|
||||||
<filter name="group_by_materials_id" string="材料" domain="[]"
|
<filter name="group_by_materials_id" string="材料" domain="[]"
|
||||||
context="{'group_by': 'materials_id'}"/>
|
context="{'group_by': 'materials_id'}"/>
|
||||||
|
<filter name="group_by_contract_code" string="合同号" domain="[]"
|
||||||
|
context="{'group_by': 'contract_code'}"/>
|
||||||
</group>
|
</group>
|
||||||
</search>
|
</search>
|
||||||
</field>
|
</field>
|
||||||
|
|||||||
Reference in New Issue
Block a user