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(
related='sale_order_id.company_id',
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',
string="订单备注", store=True)
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',
related='sale_order_line_id.product_id',
string='产品', store=True, index=True)
model_id = fields.Char(string='模型ID', related='product_id.model_id')
part_name = fields.Char(string='零件名称', related='product_id.part_name')
part_number = fields.Char(string='零件图号', related='demand_plan_id.part_number')
is_incoming_material = fields.Boolean(string='客供料', related='sale_order_line_id.is_incoming_material', store=True)
model_id = fields.Char('模型ID', related='product_id.model_id')
part_name = fields.Char('零件名称', related='product_id.part_name')
part_number = fields.Char('零件图号', related='demand_plan_id.part_number')
is_incoming_material = fields.Boolean('客供料', related='sale_order_line_id.is_incoming_material', store=True)
new_supply_method = fields.Selection([
('custom_made', "自制"),
@@ -81,7 +81,7 @@ class SfProductionDemandPlan(models.Model):
related='product_id.blank_type')
blank_precision = fields.Selection([('精坯', '精坯'), ('粗坯', '粗坯')], string='坯料类型',
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')
materials_id = fields.Char('材料', related='demand_plan_id.materials_id')
model_machining_precision = fields.Selection(related='product_id.model_machining_precision', string='精度')
@@ -166,11 +166,11 @@ class SfProductionDemandPlan(models.Model):
('生产报废', "生产报废"),
], string='补货原因', default='销售订单', readonly=True)
blank_arrival_date = fields.Date(string='采购计划到货(坯料)')
finished_product_arrival_date = fields.Date(string='采购计划到货(成品)')
blank_arrival_date = fields.Date('采购计划到货(坯料)')
finished_product_arrival_date = fields.Date('采购计划到货(成品)')
bom_id = fields.Many2one('mrp.bom', string="BOM", 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')
def _check_plan_uom_qty(self):
@@ -607,6 +607,11 @@ class SfProductionDemandPlan(models.Model):
filtered_plan = self.filtered(lambda mo: mo.status == '30')
if not filtered_plan:
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 = {}
for plan in filtered_plan: