开发
This commit is contained in:
4
jikimo_sale_route_picking/__init__.py
Normal file
4
jikimo_sale_route_picking/__init__.py
Normal file
@@ -0,0 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from . import models
|
||||
|
||||
from . import controllers
|
||||
26
jikimo_sale_route_picking/__manifest__.py
Normal file
26
jikimo_sale_route_picking/__manifest__.py
Normal file
@@ -0,0 +1,26 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
{
|
||||
'name': '机企猫 供货路线选择',
|
||||
'version': '16.0.1.0.0',
|
||||
'summary': """ 报价单提供(自动化产线加工/人工线下加工/外购/委外加工)多种供货路线选择 """,
|
||||
'author': 'fox',
|
||||
'website': '',
|
||||
'category': '',
|
||||
'depends': ['product', 'sf_dlm_management', 'sale_stock'],
|
||||
"data": [
|
||||
'security/group_security.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'data/stock_routes.xml',
|
||||
'data/product_templates.xml',
|
||||
'views/sale_order_views.xml',
|
||||
'views/product_product_views.xml',
|
||||
],'assets': {
|
||||
# 'web.assets_backend': [
|
||||
# 'jikimo_sale_route_picking/static/src/**/*'
|
||||
# ],
|
||||
},
|
||||
'application': True,
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'license': 'LGPL-3',
|
||||
}
|
||||
2
jikimo_sale_route_picking/controllers/__init__.py
Normal file
2
jikimo_sale_route_picking/controllers/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from . import main
|
||||
46
jikimo_sale_route_picking/controllers/main.py
Normal file
46
jikimo_sale_route_picking/controllers/main.py
Normal file
@@ -0,0 +1,46 @@
|
||||
import logging
|
||||
import json
|
||||
from odoo import http
|
||||
from odoo.http import request
|
||||
from odoo.addons.sf_bf_connect.controllers.controllers import Sf_Bf_Connect
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
class JikimoSaleRoutePicking(Sf_Bf_Connect):
|
||||
|
||||
@http.route('/api/bfm_process_order/list', type='http', auth='sf_token', methods=['GET', 'POST'], csrf=False,
|
||||
cors="*")
|
||||
def get_bfm_process_order_list(self, **kw):
|
||||
"""
|
||||
接收业务平台加工订单分配工厂时传送来的订单数据并生成销售订单和产品及坯料
|
||||
:param kw:
|
||||
:return:
|
||||
"""
|
||||
res = {'status': 1, 'factory_order_no': ''}
|
||||
_logger.info('get_bfm_process_order_list:%s' % kw['order_number'])
|
||||
try:
|
||||
product_id = request.env.ref('jikimo_sale_route_picking.product_template_default').sudo()
|
||||
company_id = request.env.ref('base.main_company').sudo()
|
||||
bfm_process_order_list = json.loads(kw['bfm_process_order_list'])
|
||||
order_id = request.env['sale.order'].with_user(request.env.ref("base.user_admin")).sale_order_create(
|
||||
company_id, kw['delivery_name'], kw['delivery_telephone'], kw['delivery_address'],
|
||||
kw['delivery_end_date'], kw['payments_way'], kw['pay_way'], state='draft')
|
||||
i = 1
|
||||
# 给sale_order的default_code字段赋值
|
||||
aa = request.env['sale.order'].sudo().search([('name', '=', order_id.name)])
|
||||
_logger.info('get_bfm_process_or===================================:%s' % order_id.name)
|
||||
aa.default_code = kw['order_number']
|
||||
if kw.get('logistics_way'):
|
||||
aa.logistics_way = kw['logistics_way']
|
||||
_logger.info('get_bfm_process_order_listaaaaaaaaaaaaaaaaaaaaaaaaaaaa================:%s' % aa.default_code)
|
||||
for item in bfm_process_order_list:
|
||||
product = request.env['product.template'].sudo().product_create(product_id, item, order_id,
|
||||
kw['order_number'], i)
|
||||
order_id.with_user(request.env.ref("base.user_admin")).sale_order_create_line(product, item)
|
||||
i += 1
|
||||
res['factory_order_no'] = order_id.name
|
||||
except Exception as e:
|
||||
_logger.info('get_bfm_process_order_list error:%s' % e)
|
||||
res['status'] = -1
|
||||
res['message'] = '工厂创建销售订单和产品失败,请联系管理员'
|
||||
return json.JSONEncoder().encode(res)
|
||||
85
jikimo_sale_route_picking/data/product_templates.xml
Normal file
85
jikimo_sale_route_picking/data/product_templates.xml
Normal file
@@ -0,0 +1,85 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="product_template_manual_processing" model="product.template">
|
||||
<field name="name">人工线下加工模板</field>
|
||||
<field name="active" eval="False"/>
|
||||
<field name="categ_id" ref="sf_dlm.product_category_finished_sf"/>
|
||||
<field name="route_ids"
|
||||
eval="[ref('stock.route_warehouse0_mto'), ref('mrp.route_warehouse0_manufacture')]"/>
|
||||
<field name="invoice_policy">delivery</field>
|
||||
<field name="detailed_type">product</field>
|
||||
<field name="purchase_ok">false</field>
|
||||
<field name="uom_id" ref="uom.product_uom_unit"/>
|
||||
<field name="uom_po_id" ref="uom.product_uom_unit"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="single_manufacturing">true</field>
|
||||
<field name="tracking">serial</field>
|
||||
<field name="is_bfm">true</field>
|
||||
<field name="is_manual_processing">true</field>
|
||||
</record>
|
||||
|
||||
<record id="product_template_purchase" model="product.template">
|
||||
<field name="name">成品外购模板</field>
|
||||
<field name="active" eval="False"/>
|
||||
<field name="categ_id" ref="sf_dlm.product_category_finished_sf"/>
|
||||
<field name="route_ids"
|
||||
eval="[ref('stock.route_warehouse0_mto'), ref('purchase_stock.route_warehouse0_buy')]"/>
|
||||
<field name="tracking">serial</field>
|
||||
<field name="detailed_type">product</field>
|
||||
<field name="uom_id" ref="uom.product_uom_unit"/>
|
||||
<field name="uom_po_id" ref="uom.product_uom_unit"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="is_bfm">true</field>
|
||||
</record>
|
||||
|
||||
<record id="product_template_outsourcing" model="product.template">
|
||||
<field name="name">成品委外加工模板</field>
|
||||
<field name="active" eval="False"/>
|
||||
<field name="categ_id" ref="sf_dlm.product_category_finished_sf"/>
|
||||
<field name="route_ids"
|
||||
eval="[ref('stock.route_warehouse0_mto'), ref('purchase_stock.route_warehouse0_buy'), ref('mrp_subcontracting.route_resupply_subcontractor_mto')]"/>
|
||||
<field name="tracking">serial</field>
|
||||
<field name="detailed_type">product</field>
|
||||
<field name="uom_id" ref="uom.product_uom_unit"/>
|
||||
<field name="uom_po_id" ref="uom.product_uom_unit"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="is_bfm">true</field>
|
||||
</record>
|
||||
|
||||
<record id="product_template_default" model="product.template">
|
||||
<field name="name">成品初始化模板</field>
|
||||
<field name="active" eval="False"/>
|
||||
<field name="categ_id" ref="sf_dlm.product_category_finished_sf"/>
|
||||
<field name="route_ids" eval="[]"/>
|
||||
<field name="tracking">serial</field>
|
||||
<field name="detailed_type">product</field>
|
||||
<field name="uom_id" ref="uom.product_uom_unit"/>
|
||||
<field name="uom_po_id" ref="uom.product_uom_unit"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="is_bfm">true</field>
|
||||
</record>
|
||||
|
||||
<!-- 供应商信息(业务平台),由于数据是python创建,只能指定ID -->
|
||||
<record id="product_supplierinfo_bfm" model="product.supplierinfo">
|
||||
<field name="partner_id" eval="91"/>
|
||||
</record>
|
||||
|
||||
<record id="product_template_raw_material_customer_provided" model="product.template">
|
||||
<field name="name">坯料客供料模板</field>
|
||||
<field name="active" eval="False"/>
|
||||
<field name="categ_id" ref="sf_dlm.product_category_embryo_sf"/>
|
||||
<field name="route_ids" eval="[
|
||||
ref('stock.route_warehouse0_mto'),
|
||||
ref('mrp_subcontracting.route_resupply_subcontractor_mto'),
|
||||
ref('jikimo_sale_route_picking.route_material_processing')]"/>
|
||||
<field name="sale_ok">false</field>
|
||||
<field name="tracking">serial</field>
|
||||
<field name="detailed_type">product</field>
|
||||
<field name="uom_id" ref="uom.product_uom_unit"/>
|
||||
<field name="uom_po_id" ref="uom.product_uom_unit"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="seller_ids" eval="[ref('jikimo_sale_route_picking.product_supplierinfo_bfm')]"/>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
31
jikimo_sale_route_picking/data/stock_routes.xml
Normal file
31
jikimo_sale_route_picking/data/stock_routes.xml
Normal file
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="route_material_processing" model="stock.route">
|
||||
<field name="name">带料加工</field>
|
||||
<field name="product_selectable">true</field>
|
||||
<field name="warehouse_selectable">true</field>
|
||||
<field name="warehouse_ids" eval="[ref('stock.warehouse0')]"/>
|
||||
<field name="sequence">16</field>
|
||||
</record>
|
||||
|
||||
<record id="material_picking_in" model="stock.picking.type">
|
||||
<field name="name">客供料入库</field>
|
||||
<field name="code">incoming</field>
|
||||
<field name="active">true</field>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="sequence_code">DL</field>
|
||||
<field name="default_location_src_id" ref="stock.stock_location_customers"/>
|
||||
<field name="default_location_dest_id" eval="25"/>
|
||||
</record>
|
||||
|
||||
<record id="rule_material_receiving" model="stock.rule">
|
||||
<field name="name">带料收货</field>
|
||||
<field name="route_id" ref="route_material_processing"/>
|
||||
<field name="location_dest_id" ref="stock.stock_location_company"/>
|
||||
<field name="location_src_id" ref="stock.stock_location_customers"/>
|
||||
<field name="picking_type_id" ref="material_picking_in"/>
|
||||
<field name="action">pull</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
3
jikimo_sale_route_picking/models/__init__.py
Normal file
3
jikimo_sale_route_picking/models/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from . import product_template
|
||||
from . import product_product
|
||||
7
jikimo_sale_route_picking/models/product_product.py
Normal file
7
jikimo_sale_route_picking/models/product_product.py
Normal file
@@ -0,0 +1,7 @@
|
||||
from odoo import models, fields
|
||||
|
||||
class ProductProduct(models.Model):
|
||||
_inherit = 'product.product'
|
||||
|
||||
# 是否客供料
|
||||
is_customer_provided = fields.Boolean(string='是否客供料', related='product_tmpl_id.is_customer_provided')
|
||||
10
jikimo_sale_route_picking/models/product_template.py
Normal file
10
jikimo_sale_route_picking/models/product_template.py
Normal file
@@ -0,0 +1,10 @@
|
||||
from odoo import models, fields
|
||||
|
||||
class ProductTemplate(models.Model):
|
||||
_inherit = 'product.template'
|
||||
|
||||
is_manual_processing = fields.Boolean(string='人工线下加工')
|
||||
is_customer_provided = fields.Boolean(string='客供料')
|
||||
|
||||
def product_create(self, product_id, item, order_id, order_number, i):
|
||||
product_id = super(ProductTemplate, self).product_create(product_id, item, order_id, order_number, i)
|
||||
10
jikimo_sale_route_picking/security/group_security.xml
Normal file
10
jikimo_sale_route_picking/security/group_security.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<!-- 供货路线确认专员 -->
|
||||
<record id="group_production_engineer" model="res.groups">
|
||||
<field name="name">工艺工程师</field>
|
||||
<field name="category_id" ref="base.module_category_sales_sales"/>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
8
jikimo_sale_route_picking/security/ir.model.access.csv
Normal file
8
jikimo_sale_route_picking/security/ir.model.access.csv
Normal file
@@ -0,0 +1,8 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_sale_order_group_production_engineer,sale.order_group_production_engineer,sale.model_sale_order,jikimo_sale_route_picking.group_production_engineer,1,1,0,0
|
||||
access_sale_order_line_group_production_engineer,sale_order_line_group_production_engineer,sale.model_sale_order_line,jikimo_sale_route_picking.group_production_engineer,1,1,0,0
|
||||
access_product_product_group_production_engineer,product_product_group_production_engineer,product.model_product_product,jikimo_sale_route_picking.group_production_engineer,1,0,0,0
|
||||
access_product_template_group_production_engineer,product_template_group_production_engineer,product.model_product_template,jikimo_sale_route_picking.group_production_engineer,1,0,0,0
|
||||
access_stock_picking_group_production_engineer,stock_picking_group_production_engineer,stock.model_stock_picking,jikimo_sale_route_picking.group_production_engineer,1,0,0,0
|
||||
access_stock_move_group_production_engineer,stock_move_group_production_engineer,stock.model_stock_move,jikimo_sale_route_picking.group_production_engineer,1,0,0,0
|
||||
access_mrp_bom_group_production_engineer,mrp_bom_group_production_engineer,mrp.model_mrp_bom,jikimo_sale_route_picking.group_production_engineer,1,0,0,0
|
||||
|
15
jikimo_sale_route_picking/views/product_product_views.xml
Normal file
15
jikimo_sale_route_picking/views/product_product_views.xml
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_product_product_form_inherit_sf" model="ir.ui.view">
|
||||
<field name="name">view.product.template.form.inherit.sf</field>
|
||||
<field name="model">product.template</field>
|
||||
<field name="inherit_id" ref="sf_dlm_management.view_sale_product_template_form_inherit_sf"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='manual_quotation']" position="after">
|
||||
<field name="is_customer_provided" attrs="{'invisible': [('categ_type', 'not in', ['成品', '坯料'])], 'readonly': True}" />
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
|
||||
83
jikimo_sale_route_picking/views/sale_order_views.xml
Normal file
83
jikimo_sale_route_picking/views/sale_order_views.xml
Normal file
@@ -0,0 +1,83 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_order_form_inherit_sf" model="ir.ui.view">
|
||||
<field name="name">view.sale.order.form.inherit.sf</field>
|
||||
<field name="inherit_id" ref="sale_stock.view_order_form_inherit_sale_stock_qty"/>
|
||||
<field name="model">sale.order</field>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//page/field[@name='order_line']/form/group/group/div[@name='ordered_qty']/widget[@name='qty_at_date_widget']" position="replace">
|
||||
</xpath>
|
||||
<xpath expr="//page/field[@name='order_line']/tree/widget[@name='qty_at_date_widget']" position="replace">
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="jikimo_sale_order_view_search_inherit_quotation" model="ir.ui.view">
|
||||
<field name="name">jikimo.sale.order.search.inherit.quotation</field>
|
||||
<field name="model">sale.order</field>
|
||||
<field name="mode">primary</field>
|
||||
<field name="inherit_id" ref="sale.sale_order_view_search_inherit_quotation"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//filter[@name='my_quotation']" position="replace">
|
||||
<filter string="My Quotations" name="my_quotation" domain="[('state', 'in', ('draft', 'sent'))]"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="jikimo_sale_order_view_search_inherit_quotation_route" model="ir.ui.view">
|
||||
<field name="name">jikimo.sale.order.search.inherit.quotation</field>
|
||||
<field name="model">sale.order</field>
|
||||
<field name="mode">primary</field>
|
||||
<field name="inherit_id" ref="sale.sale_order_view_search_inherit_quotation"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//filter[@name='my_quotation']" position="replace">
|
||||
<filter string="My Quotations" name="my_quotation" domain="[('state', 'in', ('draft', 'sent'))]"/>
|
||||
</xpath>
|
||||
<xpath expr="//filter[@name='draft']" position="after">
|
||||
<filter string="供货路线待确认" name="route" domain="[('state', '=', 'route')]"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="sale.action_quotations" model="ir.actions.act_window">
|
||||
<field name="search_view_id" ref="jikimo_sale_order_view_search_inherit_quotation"/>
|
||||
</record>
|
||||
|
||||
<record id="action_quotations_route_picking" model="ir.actions.act_window">
|
||||
<field name="name">报价单</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">sale.order</field>
|
||||
<field name="view_mode">tree,kanban,form,calendar,pivot,graph,activity</field>
|
||||
<field name="search_view_id" ref="jikimo_sale_order_view_search_inherit_quotation_route"/>
|
||||
<field name="context">{'search_default_route': 1}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create a new quotation, the first step of a new sale!
|
||||
</p><p>
|
||||
Once the quotation is confirmed by the customer, it becomes a sales order.<br/> You will be able to create an invoice and collect the payment.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
<menuitem
|
||||
id="sale.sale_menu_root"
|
||||
groups="group_production_engineer,sf_base.group_sale_director,sf_base.group_sale_salemanager"
|
||||
/>
|
||||
<menuitem
|
||||
id="sale_order_menu_route_picker"
|
||||
name="订单"
|
||||
sequence="10"
|
||||
parent="sale.sale_menu_root"
|
||||
groups="group_production_engineer"
|
||||
/>
|
||||
<!--供货路线专员菜单-->
|
||||
<menuitem
|
||||
id="sale_order_menu_quotations_route_picker"
|
||||
name="报价单"
|
||||
action="jikimo_sale_route_picking.action_quotations_route_picking"
|
||||
parent="sale_order_menu_route_picker"
|
||||
groups="group_production_engineer"
|
||||
sequence="2"/>
|
||||
|
||||
|
||||
|
||||
</odoo>
|
||||
@@ -110,15 +110,13 @@
|
||||
</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//sheet//notebook" position="inside">
|
||||
<page string="2D加工图纸">
|
||||
<field name='machining_drawings' attrs="{'invisible': [('categ_type', '!=', '成品')]}"
|
||||
widget="adaptive_viewer"/>
|
||||
<page string="2D加工图纸" attrs="{'invisible': [('categ_type', 'not in', ['成品', '坯料'])]}">
|
||||
<field name='machining_drawings' widget="adaptive_viewer"/>
|
||||
</page>
|
||||
</xpath>
|
||||
<xpath expr="//sheet//notebook" position="inside">
|
||||
<page string="质检标准">
|
||||
<field name='quality_standard' attrs="{'invisible': [('categ_type', '!=', '成品')]}"
|
||||
widget="adaptive_viewer"/>
|
||||
<page string="质检标准" attrs="{'invisible': [('categ_type', 'not in', ['成品', '坯料'])]}">
|
||||
<field name='quality_standard' widget="adaptive_viewer"/>
|
||||
|
||||
</page>
|
||||
</xpath>
|
||||
|
||||
@@ -7059,7 +7059,7 @@ msgstr ""
|
||||
#. module: sf_dlm
|
||||
#: model:product.template,name:sf_dlm.product_template_sf_product_template
|
||||
msgid "CNC加工产品模板"
|
||||
msgstr "冲压模具滑块"
|
||||
msgstr "自动化产线加工模板"
|
||||
|
||||
#. module: sf_tool_management
|
||||
#: model:ir.model,name:sf_tool_management.model_sf_cnc_processing
|
||||
|
||||
@@ -60,7 +60,7 @@ class ReSaleOrder(models.Model):
|
||||
|
||||
# 业务平台分配工厂后在智能工厂先创建销售订单
|
||||
def sale_order_create(self, company_id, delivery_name, delivery_telephone, delivery_address,
|
||||
deadline_of_delivery, payments_way, pay_way):
|
||||
deadline_of_delivery, payments_way, pay_way, state='sale'):
|
||||
now_time = datetime.datetime.now()
|
||||
partner = self.get_customer()
|
||||
data = {
|
||||
@@ -69,7 +69,7 @@ class ReSaleOrder(models.Model):
|
||||
'name': self.env['ir.sequence'].next_by_code('sale.order', sequence_date=now_time),
|
||||
'partner_id': partner.id,
|
||||
'check_status': 'approved',
|
||||
'state': 'sale',
|
||||
'state': state,
|
||||
'user_id': partner.user_id.id,
|
||||
'person_of_delivery': delivery_name,
|
||||
'telephone_of_delivery': delivery_telephone,
|
||||
@@ -133,8 +133,7 @@ class ReSaleOrder(models.Model):
|
||||
'product_uom_qty': item['number'],
|
||||
'model_glb_file': base64.b64decode(item['model_file']),
|
||||
'remark': item.get('remark'),
|
||||
'is_incoming_material': item.get('is_incoming_material'),
|
||||
'incoming_size': item.get('incoming_size'),
|
||||
'is_incoming_material': item.get('is_incoming_material')
|
||||
}
|
||||
return self.env['sale.order.line'].with_context(skip_procurement=True).create(vals)
|
||||
|
||||
@@ -175,8 +174,7 @@ class ResaleOrderLine(models.Model):
|
||||
check_status = fields.Selection(related='order_id.check_status')
|
||||
remark = fields.Char('备注')
|
||||
|
||||
is_incoming_material = fields.Boolean('是否带料', default=False)
|
||||
incoming_size = fields.Char('带料尺寸')
|
||||
is_incoming_material = fields.Boolean('客供料', default=False)
|
||||
|
||||
@api.depends('product_template_id')
|
||||
def _compute_model_glb_file(self):
|
||||
|
||||
@@ -118,8 +118,7 @@
|
||||
<xpath expr="//field[@name='order_line']/tree/field[@name='name']" position="replace">
|
||||
<field name="name" widget="section_and_note_text" optional="show"
|
||||
string="参数说明(长/宽/高/体积/精度/材质)"/>
|
||||
<field name="is_incoming_material" optional="hide"/>
|
||||
<field name="incoming_size" optional="hide"/>
|
||||
<field name="is_incoming_material"/>
|
||||
</xpath>
|
||||
<field name="user_id" position="attributes">
|
||||
<attribute name="attrs">{'readonly': [('state', 'in', ['cancel','sale'])]}</attribute>
|
||||
@@ -167,7 +166,6 @@
|
||||
<!--新增带料字段-->
|
||||
<xpath expr="//field[@name='order_line']/form//group//group//field[@name='analytic_distribution']" position="after">
|
||||
<field name="is_incoming_material"/>
|
||||
<field name="incoming_size" attrs="{'invisible': [('is_incoming_material', '=', False)],'readonly':1}"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
@@ -207,12 +205,12 @@
|
||||
<field name="create_date" position="attributes">
|
||||
<attribute name="string">下单时间</attribute>
|
||||
</field>
|
||||
<field name="state" position="after">
|
||||
<!-- <field name="state" position="after">
|
||||
<field name="check_status" widget="badge"
|
||||
decoration-success="check_status == 'approved'"
|
||||
decoration-warning="check_status == 'pending'"
|
||||
decoration-danger="check_status == 'fail'"/>
|
||||
</field>
|
||||
</field> -->
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user