物料需求计划提交
This commit is contained in:
@@ -13,11 +13,14 @@
|
|||||||
'depends': ['sf_plan'],
|
'depends': ['sf_plan'],
|
||||||
'data': [
|
'data': [
|
||||||
'security/ir.model.access.csv',
|
'security/ir.model.access.csv',
|
||||||
|
'data/stock_route_group.xml',
|
||||||
'views/sale_order_views.xml',
|
'views/sale_order_views.xml',
|
||||||
'views/demand_plan.xml',
|
'views/demand_plan.xml',
|
||||||
'views/demand_main_plan.xml',
|
'views/demand_main_plan.xml',
|
||||||
|
'views/stock_route.xml',
|
||||||
'wizard/sf_demand_plan_print_wizard_view.xml',
|
'wizard/sf_demand_plan_print_wizard_view.xml',
|
||||||
'wizard/sf_release_plan_wizard_views.xml',
|
'wizard/sf_release_plan_wizard_views.xml',
|
||||||
|
'views/menu_view.xml',
|
||||||
],
|
],
|
||||||
'demo': [
|
'demo': [
|
||||||
],
|
],
|
||||||
|
|||||||
21
sf_demand_plan/data/stock_route_group.xml
Normal file
21
sf_demand_plan/data/stock_route_group.xml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<data noupdate="0">
|
||||||
|
<record id="stock_route_group_automation_sf" model="stock.route.group">
|
||||||
|
<field name="name">自动化产线加工</field>
|
||||||
|
<field name="code">automation</field>
|
||||||
|
</record>
|
||||||
|
<record id="stock_route_group_manual_sf" model="stock.route.group">
|
||||||
|
<field name="name">人工线下加工</field>
|
||||||
|
<field name="code">manual</field>
|
||||||
|
</record>
|
||||||
|
<record id="stock_route_group_purchase_sf" model="stock.route.group">
|
||||||
|
<field name="name">外购</field>
|
||||||
|
<field name="code">purchase</field>
|
||||||
|
</record>
|
||||||
|
<record id="stock_route_group_outsourcing_sf" model="stock.route.group">
|
||||||
|
<field name="name">委外加工</field>
|
||||||
|
<field name="code">outsourcing</field>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
</odoo>
|
||||||
@@ -9,12 +9,14 @@ class ReSaleOrder(models.Model):
|
|||||||
compute='_compute_mrp_production_ids',
|
compute='_compute_mrp_production_ids',
|
||||||
string='与此销售订单相关联的制造订单',
|
string='与此销售订单相关联的制造订单',
|
||||||
groups='mrp.group_mrp_user', store=True)
|
groups='mrp.group_mrp_user', store=True)
|
||||||
|
demand_plan_ids = fields.Many2many(comodel_name="sf.demand.main.plan",
|
||||||
|
string="需求计划", readonly=True)
|
||||||
demand_plan_count = fields.Integer(
|
demand_plan_count = fields.Integer(
|
||||||
"需求计划生成计数",
|
"需求计划生成计数",
|
||||||
compute='_compute_demand_plan_count',
|
compute='_compute_demand_plan_count',
|
||||||
)
|
)
|
||||||
#暂时不知道哪里用到了
|
#暂时不知道哪里用到了
|
||||||
@api.depends('procurement_group_id')
|
@api.depends('demand_plan_ids.line_ids.status')
|
||||||
def _compute_purchase_request_count(self):
|
def _compute_purchase_request_count(self):
|
||||||
for record in self:
|
for record in self:
|
||||||
pr_ids = self.env['purchase.request'].sudo().search([('origin', 'like', record.name)])
|
pr_ids = self.env['purchase.request'].sudo().search([('origin', 'like', record.name)])
|
||||||
@@ -23,6 +25,7 @@ class ReSaleOrder(models.Model):
|
|||||||
else:
|
else:
|
||||||
record.purchase_request_purchase_order_count = 0
|
record.purchase_request_purchase_order_count = 0
|
||||||
#计算需求计划生成计数
|
#计算需求计划生成计数
|
||||||
|
@api.depends('demand_plan_ids.line_ids')
|
||||||
def _compute_demand_plan_count(self):
|
def _compute_demand_plan_count(self):
|
||||||
for line in self:
|
for line in self:
|
||||||
demand_plan = self.env['sf.production.demand.plan'].sudo().search([('sale_order_id', '=', line.id)])
|
demand_plan = self.env['sf.production.demand.plan'].sudo().search([('sale_order_id', '=', line.id)])
|
||||||
@@ -62,8 +65,9 @@ class ReSaleOrder(models.Model):
|
|||||||
'type': '1',
|
'type': '1',
|
||||||
}
|
}
|
||||||
self.env['sf.demand.plan.print.wizard'].sudo().create(wizard_vals)
|
self.env['sf.demand.plan.print.wizard'].sudo().create(wizard_vals)
|
||||||
|
ret.order_id.demand_plan_ids = [(4, demand_plan_info.id)]
|
||||||
return ret
|
return ret
|
||||||
#暂时不知道哪里用到
|
#从sf工厂调过来时,调用了,这里重写
|
||||||
def confirm_to_supply_method(self):
|
def confirm_to_supply_method(self):
|
||||||
self.state = 'sale'
|
self.state = 'sale'
|
||||||
for line in self.order_line:
|
for line in self.order_line:
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ class SfProductionDemandPlan(models.Model):
|
|||||||
model_long = fields.Char('尺寸(mm)', compute='_compute_model_long')
|
model_long = fields.Char('尺寸(mm)', compute='_compute_model_long')
|
||||||
blank_type = fields.Selection([('圆料', '圆料'), ('方料', '方料')], string='坯料分类',
|
blank_type = fields.Selection([('圆料', '圆料'), ('方料', '方料')], string='坯料分类',
|
||||||
related='product_id.blank_type')
|
related='product_id.blank_type')
|
||||||
#embryo_long = fields.Char('坯料尺寸(mm)', compute='_compute_embryo_long')
|
#blank_precision = fields.Selection([('精坯', '精坯'), ('粗坯', '粗坯')], string='坯料类型', related='product_id.blank_precision')
|
||||||
#materials_id = fields.Char('材料', compute='_compute_materials_id', store=True)
|
#materials_id = fields.Char('材料', compute='_compute_materials_id', store=True)
|
||||||
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')
|
||||||
|
|||||||
@@ -4,16 +4,14 @@
|
|||||||
<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 desc,id desc" editable="bottom"
|
<tree string="需求计划" default_order="sequence desc,id desc" editable="bottom"
|
||||||
class="demand_plan_tree" create="false" delete="false">
|
class="demand_plan_tree freeze-columns-before-part_number" create="false" delete="false">
|
||||||
<header>
|
<header>
|
||||||
<button string="打印" name="button_action_print" type="object"
|
<button string="打印" name="button_action_print" type="object"
|
||||||
class="btn-primary"/>
|
class="btn-primary"/>
|
||||||
</header>
|
</header>
|
||||||
<field name="sequence" widget="handle"/>
|
<field name="sequence" widget="handle"/>
|
||||||
<field name="id" optional="hide"/>
|
<field name="id" optional="hide"/>
|
||||||
<field name="priority"/>
|
|
||||||
<field name="status"/>
|
<field name="status"/>
|
||||||
<!--<field name="pending_plan_qty"/>-->
|
|
||||||
<field name="customer_name"/>
|
<field name="customer_name"/>
|
||||||
<field name="order_remark"/>
|
<field name="order_remark"/>
|
||||||
<field name="glb_url" optional="hide"/>
|
<field name="glb_url" optional="hide"/>
|
||||||
@@ -30,6 +28,7 @@
|
|||||||
<field name="qty_to_deliver"/>
|
<field name="qty_to_deliver"/>
|
||||||
<field name="model_long"/>
|
<field name="model_long"/>
|
||||||
<field name="blank_type" optional="hide"/>
|
<field name="blank_type" optional="hide"/>
|
||||||
|
<!--<field name="blank_precision"/>-->
|
||||||
<field name="embryo_long"/>
|
<field name="embryo_long"/>
|
||||||
<field name="materials_id"/>
|
<field name="materials_id"/>
|
||||||
<field name="model_machining_precision"/>
|
<field name="model_machining_precision"/>
|
||||||
@@ -45,7 +44,10 @@
|
|||||||
<field name="date_order"/>
|
<field name="date_order"/>
|
||||||
<field name="contract_code"/>
|
<field name="contract_code"/>
|
||||||
<field name="plan_remark" attrs="{'readonly': [('status', 'in', ('60','100'))]}"/>
|
<field name="plan_remark" attrs="{'readonly': [('status', 'in', ('60','100'))]}"/>
|
||||||
<field name="processing_time"/>
|
<field name="priority" decoration-danger="priority == '1'"
|
||||||
|
decoration-warning="priority == '2'"
|
||||||
|
decoration-info="priority == '3'"
|
||||||
|
decoration-success="priority == '4'"/>
|
||||||
<field name="material_check" optional="hide"/>
|
<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"/>-->
|
||||||
|
|||||||
18
sf_demand_plan/views/menu_view.xml
Normal file
18
sf_demand_plan/views/menu_view.xml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
<data>
|
||||||
|
|
||||||
|
<menuitem
|
||||||
|
id="demand_plan_menu"
|
||||||
|
name="需求计划"
|
||||||
|
sequence="140"
|
||||||
|
action="sf_demand_plan.sf_production_demand_plan_action"
|
||||||
|
parent="sf_plan.sf_production_plan_menu"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- 调拨动作中屏蔽验证-->
|
||||||
|
<record id="stock.action_validate_picking" model="ir.actions.server">
|
||||||
|
<field name="binding_model_id" eval="False"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
</odoo>
|
||||||
21
sf_demand_plan/views/stock_route.xml
Normal file
21
sf_demand_plan/views/stock_route.xml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<record id="sf_stock_location_route_form_view" model="ir.ui.view">
|
||||||
|
<field name="name">stock.route.form</field>
|
||||||
|
<field name="model">stock.route</field>
|
||||||
|
<field name="inherit_id" ref="stock.stock_location_route_form_view"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//field[@name='packaging_selectable']" position="after">
|
||||||
|
<field name="demand_plan_selectable"/>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//group[@name='route_selector']" position="after">
|
||||||
|
<group name="group_category" string="组类">
|
||||||
|
<group>
|
||||||
|
<field name="stock_route_group_ids" options="{'no_create': True}" widget="many2many_tags"/>
|
||||||
|
<field name="demand_plan_ids" invisible="1" options="{'no_create': True}" widget="many2many_tags"/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
||||||
Reference in New Issue
Block a user