Merge branch 'develop' into feature/sale_order_route_pick
This commit is contained in:
@@ -402,3 +402,11 @@ class MachiningAccuracy(models.Model):
|
|||||||
name = fields.Char('一般公差', index=True)
|
name = fields.Char('一般公差', index=True)
|
||||||
standard_tolerance = fields.Char(string="标准公差")
|
standard_tolerance = fields.Char(string="标准公差")
|
||||||
sync_id = fields.Char('同步ID')
|
sync_id = fields.Char('同步ID')
|
||||||
|
|
||||||
|
|
||||||
|
class ReSaleOrder(models.Model):
|
||||||
|
_inherit = 'sale.order'
|
||||||
|
|
||||||
|
person_of_delivery = fields.Char('收货人')
|
||||||
|
telephone_of_delivery = fields.Char('电话号码')
|
||||||
|
address_of_delivery = fields.Char('联系地址')
|
||||||
|
|||||||
@@ -1 +1,3 @@
|
|||||||
from . import product_supplierinfo
|
from . import product_supplierinfo
|
||||||
|
from . import stock_rule_inherit
|
||||||
|
|
||||||
|
|||||||
35
sf_dlm/models/stock_rule_inherit.py
Normal file
35
sf_dlm/models/stock_rule_inherit.py
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
from odoo import models, fields, api, _
|
||||||
|
|
||||||
|
|
||||||
|
class StockRuleInherit(models.Model):
|
||||||
|
_inherit = 'stock.rule'
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _run_buy(self, procurements):
|
||||||
|
# 首先调用父类的 _run_buy 方法,以保留原有逻辑
|
||||||
|
super(StockRuleInherit, self)._run_buy(procurements)
|
||||||
|
|
||||||
|
# 然后在这里添加自定义的逻辑
|
||||||
|
for procurement, rule in procurements:
|
||||||
|
product = procurement.product_id
|
||||||
|
# 获取主 BOM
|
||||||
|
bom = self.env['mrp.bom'].search([('product_tmpl_id', '=', product.product_tmpl_id.id)], limit=1)
|
||||||
|
|
||||||
|
if bom:
|
||||||
|
# 遍历 BOM 中的组件(即坯料等)
|
||||||
|
for line in bom.bom_line_ids:
|
||||||
|
raw_material = line.product_id
|
||||||
|
# 检查路线
|
||||||
|
for route in raw_material.route_ids:
|
||||||
|
# print('route.name:', route.name)
|
||||||
|
if route.name == '按订单补给外包商': # 或者用 route.id 检查精确的路线
|
||||||
|
print("按订单补给外包商============是")
|
||||||
|
# 使用 procurement.values['supplier'] 获取供应商
|
||||||
|
supplier = procurement.values.get('supplier')
|
||||||
|
if supplier:
|
||||||
|
domain = rule._make_po_get_domain(procurement.company_id, procurement.values,
|
||||||
|
supplier.partner_id)
|
||||||
|
po = self.env['purchase.order'].sudo().search([dom for dom in domain], limit=1)
|
||||||
|
if po:
|
||||||
|
po.write({'purchase_type': 'consignment'})
|
||||||
|
break
|
||||||
@@ -139,7 +139,7 @@
|
|||||||
<field name="name">维保计划</field>
|
<field name="name">维保计划</field>
|
||||||
<field name="res_model">maintenance.request</field>
|
<field name="res_model">maintenance.request</field>
|
||||||
<field name="view_mode">tree,kanban,form,pivot,graph,calendar</field>
|
<field name="view_mode">tree,kanban,form,pivot,graph,calendar</field>
|
||||||
<field name="view_id" ref="maintenance.hr_equipment_request_view_kanban"/>
|
<field name="view_id" ref="sf_maintenance.maintenance_request_view_tree_sf"/>
|
||||||
<field name="context">{'default_user_id': uid}</field>
|
<field name="context">{'default_user_id': uid}</field>
|
||||||
<field name="help" type="html">
|
<field name="help" type="html">
|
||||||
<p class="o_view_nocontent_smiling_face">
|
<p class="o_view_nocontent_smiling_face">
|
||||||
|
|||||||
@@ -548,35 +548,42 @@ class StockPicking(models.Model):
|
|||||||
_inherit = 'stock.picking'
|
_inherit = 'stock.picking'
|
||||||
|
|
||||||
surface_technics_parameters_id = fields.Many2one('sf.production.process.parameter', string="表面工艺可选参数")
|
surface_technics_parameters_id = fields.Many2one('sf.production.process.parameter', string="表面工艺可选参数")
|
||||||
person_of_delivery = fields.Char('收货人', compute='_compute_origin', store=True)
|
person_of_delivery = fields.Char('收货人', compute='_compute_move_ids', store=True)
|
||||||
telephone_of_delivery = fields.Char('电话号码', compute='_compute_origin', store=True)
|
telephone_of_delivery = fields.Char('电话号码', compute='_compute_move_ids', store=True)
|
||||||
address_of_delivery = fields.Char('联系地址', compute='_compute_origin')
|
address_of_delivery = fields.Char('联系地址', compute='_compute_move_ids', store=True)
|
||||||
|
|
||||||
retrospect_ref = fields.Char('追溯参考', compute='_compute_origin', store=True)
|
retrospect_ref = fields.Char('追溯参考', compute='_compute_move_ids', store=True)
|
||||||
|
|
||||||
@api.depends('origin')
|
@api.depends('move_ids')
|
||||||
def _compute_origin(self):
|
def _compute_move_ids(self):
|
||||||
"""
|
|
||||||
计算带料入库单对应销售单
|
|
||||||
"""
|
|
||||||
for item in self:
|
for item in self:
|
||||||
if item.picking_type_id.sequence_code == 'DL' and item.origin:
|
if item.move_ids:
|
||||||
if 'WH/IN/' in item.origin:
|
|
||||||
picking_id = self.env['stock.picking'].search([('name', '=', item.origin)])
|
|
||||||
if picking_id and picking_id.origin:
|
|
||||||
purchase_id = self.env['purchase.order'].sudo().search([('name', '=', picking_id.origin)])
|
|
||||||
if purchase_id and purchase_id.origin:
|
|
||||||
sale_id = self.env['sale.order'].sudo().search([('name', '=', purchase_id.origin)])
|
|
||||||
item.person_of_delivery = sale_id.person_of_delivery
|
|
||||||
item.telephone_of_delivery = sale_id.telephone_of_delivery
|
|
||||||
item.address_of_delivery = sale_id.address_of_delivery
|
|
||||||
|
|
||||||
bom = self.env['mrp.bom'].sudo().search([('bom_line_ids.product_id', '=', self.move_ids.product_id.id)])
|
|
||||||
if bom:
|
|
||||||
if item.picking_type_id.sequence_code == 'DL':
|
if item.picking_type_id.sequence_code == 'DL':
|
||||||
item.retrospect_ref = bom.product_tmpl_id.default_code
|
sale_name = item.move_ids[0].product_id.name.split('-')[1]
|
||||||
|
if 'S' in sale_name:
|
||||||
|
sale_id = self.env['sale.order'].sudo().search([('name', '=', sale_name)])
|
||||||
|
item.person_of_delivery = sale_id.person_of_delivery
|
||||||
|
item.telephone_of_delivery = sale_id.telephone_of_delivery
|
||||||
|
item.address_of_delivery = sale_id.address_of_delivery
|
||||||
|
else:
|
||||||
|
raise ValidationError('坯料名称格式错误,正确格式为[R-S???-?]!!!')
|
||||||
|
move_ids = []
|
||||||
|
for move_id in item.move_ids:
|
||||||
|
move_ids.append(move_id.product_id.id)
|
||||||
|
boms = self.env['mrp.bom'].sudo().search([('bom_line_ids.product_id', 'in', move_ids)])
|
||||||
|
default_codes = ''
|
||||||
|
if boms:
|
||||||
|
for bom in boms:
|
||||||
|
code = bom.product_tmpl_id.default_code.split('-')[-1]
|
||||||
|
default_code = bom.product_tmpl_id.default_code.split(f'-{code}')[0]
|
||||||
|
if default_code not in default_codes:
|
||||||
|
if default_codes == '':
|
||||||
|
default_codes = default_code
|
||||||
|
else:
|
||||||
|
default_codes = default_codes + ',' + default_code
|
||||||
|
item.retrospect_ref = default_codes
|
||||||
elif item.picking_type_id.sequence_code in ['INT', 'PC']:
|
elif item.picking_type_id.sequence_code in ['INT', 'PC']:
|
||||||
item.retrospect_ref = bom.product_tmpl_id.name
|
pass
|
||||||
|
|
||||||
# 设置外协出入单的名称
|
# 设置外协出入单的名称
|
||||||
def _get_name_Res(self, rescode):
|
def _get_name_Res(self, rescode):
|
||||||
|
|||||||
@@ -165,11 +165,6 @@ access_sf_agv_scheduling_group_sf_order_user,sf_agv_scheduling_group_sf_order_us
|
|||||||
access_sf_agv_scheduling_group_sf_mrp_manager,sf_agv_scheduling_group_sf_mrp_manager,model_sf_agv_scheduling,sf_base.group_sf_mrp_manager,1,1,1,0
|
access_sf_agv_scheduling_group_sf_mrp_manager,sf_agv_scheduling_group_sf_mrp_manager,model_sf_agv_scheduling,sf_base.group_sf_mrp_manager,1,1,1,0
|
||||||
access_sf_agv_scheduling_group_sf_equipment_user,sf_agv_scheduling_group_sf_equipment_user,model_sf_agv_scheduling,sf_base.group_sf_equipment_user,1,1,1,0
|
access_sf_agv_scheduling_group_sf_equipment_user,sf_agv_scheduling_group_sf_equipment_user,model_sf_agv_scheduling,sf_base.group_sf_equipment_user,1,1,1,0
|
||||||
|
|
||||||
access_sf_technology_design_group_plan_dispatch,sf_technology_design_group_plan_dispatch,model_sf_technology_design,sf_base.group_plan_dispatch,1,1,1,0
|
|
||||||
access_sf_technology_design_group_sf_mrp_manager,sf_technology_design_group_sf_mrp_manager,model_sf_technology_design,sf_base.group_sf_mrp_manager,1,1,1,0
|
|
||||||
access_sf_technology_design_group_production_engineer,sf_technology_design_group_production_engineer,model_sf_technology_design,sf_base.group_production_engineer,1,1,1,0
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
|
@@ -32,9 +32,9 @@ class ReSaleOrder(models.Model):
|
|||||||
tracking=3,
|
tracking=3,
|
||||||
default='draft')
|
default='draft')
|
||||||
deadline_of_delivery = fields.Date('订单交期', tracking=True)
|
deadline_of_delivery = fields.Date('订单交期', tracking=True)
|
||||||
person_of_delivery = fields.Char('收货人')
|
# person_of_delivery = fields.Char('收货人')
|
||||||
telephone_of_delivery = fields.Char('电话号码')
|
# telephone_of_delivery = fields.Char('电话号码')
|
||||||
address_of_delivery = fields.Char('联系地址')
|
# address_of_delivery = fields.Char('联系地址')
|
||||||
payments_way = fields.Selection([('现结', '现结'), ('月结', '月结')], '结算方式', default='现结', tracking=True)
|
payments_way = fields.Selection([('现结', '现结'), ('月结', '月结')], '结算方式', default='现结', tracking=True)
|
||||||
pay_way = fields.Selection([('转账', '转账'), ('微信', '微信'), ('支付宝', '支付宝')], '支付方式')
|
pay_way = fields.Selection([('转账', '转账'), ('微信', '微信'), ('支付宝', '支付宝')], '支付方式')
|
||||||
check_status = fields.Selection([('pending', '待审核'), ('approved', '已审核'), ('fail', '不通过')], '审核状态')
|
check_status = fields.Selection([('pending', '待审核'), ('approved', '已审核'), ('fail', '不通过')], '审核状态')
|
||||||
|
|||||||
@@ -450,7 +450,7 @@
|
|||||||
<field name="production_line_name_id" optional="hide"/>
|
<field name="production_line_name_id" optional="hide"/>
|
||||||
<field name="machine_tool_name_id" optional="hide"/>
|
<field name="machine_tool_name_id" optional="hide"/>
|
||||||
<field name="applicant" optional="hide"/>
|
<field name="applicant" optional="hide"/>
|
||||||
<field name="apply_time"/>
|
<field name="create_date" string="申请时间"/>
|
||||||
<field name="assemble_status" widget='badge'
|
<field name="assemble_status" widget='badge'
|
||||||
decoration-info="assemble_status == '0'"
|
decoration-info="assemble_status == '0'"
|
||||||
decoration-warning="assemble_status == '01'"
|
decoration-warning="assemble_status == '01'"
|
||||||
|
|||||||
Reference in New Issue
Block a user