BUG_7276_lxb_commit

This commit is contained in:
lixiaobin@jikimo.com
2025-07-15 14:13:01 +08:00
parent 8bdc65c626
commit df589b43e7

View File

@@ -34,7 +34,7 @@ class SfProductionDemandPlan(models.Model):
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)
customer_name = fields.Char(string='客户', related='sale_order_id.customer_name') customer_name = fields.Char('客户', related='sale_order_id.customer_name')
order_remark = fields.Text(related='sale_order_id.remark', order_remark = fields.Text(related='sale_order_id.remark',
string="订单备注", store=True) string="订单备注", store=True)
glb_url = fields.Char(related='sale_order_line_id.glb_url', string='glb文件地址') glb_url = fields.Char(related='sale_order_line_id.glb_url', string='glb文件地址')
@@ -42,10 +42,10 @@ class SfProductionDemandPlan(models.Model):
comodel_name='product.product', comodel_name='product.product',
related='sale_order_line_id.product_id', related='sale_order_line_id.product_id',
string='产品', store=True, index=True) string='产品', store=True, index=True)
model_id = fields.Char(string='模型ID', related='product_id.model_id') model_id = fields.Char('模型ID', related='product_id.model_id')
part_name = fields.Char(string='零件名称', related='product_id.part_name') part_name = fields.Char('零件名称', related='product_id.part_name')
part_number = fields.Char(string='零件图号', related='demand_plan_id.part_number') part_number = fields.Char('零件图号', related='demand_plan_id.part_number')
is_incoming_material = fields.Boolean(string='客供料', related='sale_order_line_id.is_incoming_material', store=True) is_incoming_material = fields.Boolean('客供料', related='sale_order_line_id.is_incoming_material', store=True)
new_supply_method = fields.Selection([ new_supply_method = fields.Selection([
('custom_made', "自制"), ('custom_made', "自制"),
@@ -81,7 +81,7 @@ class SfProductionDemandPlan(models.Model):
related='product_id.blank_type') related='product_id.blank_type')
blank_precision = fields.Selection([('精坯', '精坯'), ('粗坯', '粗坯')], string='坯料类型', blank_precision = fields.Selection([('精坯', '精坯'), ('粗坯', '粗坯')], string='坯料类型',
related='product_id.blank_precision') related='product_id.blank_precision')
unit_number = fields.Float(string='单件用量', digits=(16, 3), related='product_id.unit_number') unit_number = fields.Float('单件用量', digits=(16, 3), related='product_id.unit_number')
embryo_long = fields.Char('坯料尺寸(mm)', related='demand_plan_id.embryo_long') embryo_long = fields.Char('坯料尺寸(mm)', related='demand_plan_id.embryo_long')
materials_id = fields.Char('材料', related='demand_plan_id.materials_id') materials_id = fields.Char('材料', related='demand_plan_id.materials_id')
model_machining_precision = fields.Selection(related='product_id.model_machining_precision', string='精度') model_machining_precision = fields.Selection(related='product_id.model_machining_precision', string='精度')
@@ -166,11 +166,11 @@ class SfProductionDemandPlan(models.Model):
('生产报废', "生产报废"), ('生产报废', "生产报废"),
], string='补货原因', default='销售订单', readonly=True) ], string='补货原因', default='销售订单', readonly=True)
blank_arrival_date = fields.Date(string='采购计划到货(坯料)') blank_arrival_date = fields.Date('采购计划到货(坯料)')
finished_product_arrival_date = fields.Date(string='采购计划到货(成品)') finished_product_arrival_date = fields.Date('采购计划到货(成品)')
bom_id = fields.Many2one('mrp.bom', string="BOM", readonly=True) bom_id = fields.Many2one('mrp.bom', string="BOM", readonly=True)
location_id = fields.Many2one('stock.location', string='需求位置', default=get_location_id, readonly=True) location_id = fields.Many2one('stock.location', string='需求位置', default=get_location_id, readonly=True)
manual_quotation = fields.Boolean(string='人工编程', related='product_id.manual_quotation', default=False) manual_quotation = fields.Boolean('人工编程', related='product_id.manual_quotation', default=False)
@api.constrains('plan_uom_qty') @api.constrains('plan_uom_qty')
def _check_plan_uom_qty(self): def _check_plan_uom_qty(self):
@@ -607,6 +607,11 @@ class SfProductionDemandPlan(models.Model):
filtered_plan = self.filtered(lambda mo: mo.status == '30') filtered_plan = self.filtered(lambda mo: mo.status == '30')
if not filtered_plan: if not filtered_plan:
raise UserError(_("没有需要下达的计划!")) raise UserError(_("没有需要下达的计划!"))
check_overdelivery_allowed = False
if not self.demand_plan_id.overdelivery_allowed:
customer_location_id = self.env['ir.model.data']._xmlid_to_res_id('stock.stock_location_customers')
if self.location_id.id == customer_location_id:
check_overdelivery_allowed = True
# 按产品分组并计算总数 # 按产品分组并计算总数
product_data = {} product_data = {}
for plan in filtered_plan: for plan in filtered_plan: