物流相关增量开发,修改一些原生按钮,修改一些翻译
This commit is contained in:
@@ -33,6 +33,7 @@ class Sf_Bf_Connect(http.Controller):
|
|||||||
aa = request.env['sale.order'].sudo().search([('name', '=', order_id.name)])
|
aa = request.env['sale.order'].sudo().search([('name', '=', order_id.name)])
|
||||||
logging.info('get_bfm_process_or===================================:%s' % order_id.name)
|
logging.info('get_bfm_process_or===================================:%s' % order_id.name)
|
||||||
aa.default_code = kw['order_number']
|
aa.default_code = kw['order_number']
|
||||||
|
aa.logistics_way = kw['logistics_way']
|
||||||
logging.info('get_bfm_process_order_listaaaaaaaaaaaaaaaaaaaaaaaaaaaa================:%s' % aa.default_code)
|
logging.info('get_bfm_process_order_listaaaaaaaaaaaaaaaaaaaaaaaaaaaa================:%s' % aa.default_code)
|
||||||
for item in bfm_process_order_list:
|
for item in bfm_process_order_list:
|
||||||
product = request.env['product.template'].sudo().product_create(product_id, item, order_id,
|
product = request.env['product.template'].sudo().product_create(product_id, item, order_id,
|
||||||
|
|||||||
@@ -42,6 +42,14 @@ class JdEclp(models.Model):
|
|||||||
# bill_show = fields.Binary(string='物流面单展示', readonly=True, related='self.bill.datas')
|
# bill_show = fields.Binary(string='物流面单展示', readonly=True, related='self.bill.datas')
|
||||||
bill_show = fields.Binary(string='物流面单展示', readonly=True)
|
bill_show = fields.Binary(string='物流面单展示', readonly=True)
|
||||||
check_out = fields.Char(string='查询是否为出库单', compute='_check_is_out')
|
check_out = fields.Char(string='查询是否为出库单', compute='_check_is_out')
|
||||||
|
# 是否下了快递单
|
||||||
|
is_bill = fields.Boolean(string='是否下了快递单', default=False)
|
||||||
|
# 物流状态
|
||||||
|
logistics_status = fields.Selection([('0', '未下单'), ('1', '已下单'), ('2', '已获取物流面单'), ('3', '已打印物流单')],
|
||||||
|
string='物流状态', default='0')
|
||||||
|
|
||||||
|
logistics_way = fields.Selection([('自提', '自提'), ('到付', '到付'), ('在线支付', '在线支付')], string='物流方式')
|
||||||
|
|
||||||
|
|
||||||
@api.depends('name')
|
@api.depends('name')
|
||||||
def _check_is_out(self):
|
def _check_is_out(self):
|
||||||
@@ -68,6 +76,7 @@ class JdEclp(models.Model):
|
|||||||
# if self.receiverName and self.receiverMobile and self.receiverProvinceName and self.receiverCityName and
|
# if self.receiverName and self.receiverMobile and self.receiverProvinceName and self.receiverCityName and
|
||||||
# self.receiverCountyName and self.receiverTownName:
|
# self.receiverCountyName and self.receiverTownName:
|
||||||
sale_order_id = self.env['sale.order'].search([('name', '=', self.origin)])
|
sale_order_id = self.env['sale.order'].search([('name', '=', self.origin)])
|
||||||
|
self.logistics_way = sale_order_id.logistics_way
|
||||||
# stock_picking_type_id = self.enc['stock.picking.type'].search([('picking_type_id', '=', '')])
|
# stock_picking_type_id = self.enc['stock.picking.type'].search([('picking_type_id', '=', '')])
|
||||||
# if sale_order_id.address_of_delivery != False:
|
# if sale_order_id.address_of_delivery != False:
|
||||||
# if not sale_order_id:
|
# if not sale_order_id:
|
||||||
@@ -141,6 +150,8 @@ class JdEclp(models.Model):
|
|||||||
response = requests.post(url2, json=json2, data=None)
|
response = requests.post(url2, json=json2, data=None)
|
||||||
# _logger.info('调用成功2', response.json()['result']['wbNo'])
|
# _logger.info('调用成功2', response.json()['result']['wbNo'])
|
||||||
self.carrier_tracking_ref = response.json()['result']['wbNo']
|
self.carrier_tracking_ref = response.json()['result']['wbNo']
|
||||||
|
self.is_bill = True
|
||||||
|
self.logistics_status = '1'
|
||||||
|
|
||||||
# else:
|
# else:
|
||||||
# raise UserError("选择京东物流才能下单呦")
|
# raise UserError("选择京东物流才能下单呦")
|
||||||
@@ -180,3 +191,4 @@ class JdEclp(models.Model):
|
|||||||
# 'model_name': 'stock.picking',
|
# 'model_name': 'stock.picking',
|
||||||
})
|
})
|
||||||
_logger.info(attachment)
|
_logger.info(attachment)
|
||||||
|
self.logistics_status = '2'
|
||||||
|
|||||||
@@ -12,16 +12,29 @@
|
|||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
<!-- <record id="sf_bf_connect_vpicktree" model="ir.ui.view"> -->
|
||||||
|
<!-- <field name="name">sf.bf.connect.vpicktree</field> -->
|
||||||
|
<!-- <field name="model">stock.picking</field> -->
|
||||||
|
<!-- <field name="inherit_id" ref="stock.vpicktree"/> -->
|
||||||
|
<!-- <field name="arch" type="xml"> -->
|
||||||
|
<!-- <field name="state" position="after"> -->
|
||||||
|
<!-- <field name="logistics_status" string="物流状态"/> -->
|
||||||
|
<!-- </field> -->
|
||||||
|
<!-- </field> -->
|
||||||
|
<!-- </record> -->
|
||||||
|
|
||||||
<record id="custom_view_picking_form" model="ir.ui.view">
|
<record id="custom_view_picking_form" model="ir.ui.view">
|
||||||
<field name="name">物流</field>
|
<field name="name">物流</field>
|
||||||
<field name="model">stock.picking</field>
|
<field name="model">stock.picking</field>
|
||||||
<field name="inherit_id" ref="stock.view_picking_form"/>
|
<field name="inherit_id" ref="stock.view_picking_form"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<xpath expr="//form//header//button[@name='action_assign']" position="after">
|
<xpath expr="//form//header//button[@name='action_assign']" position="after">
|
||||||
|
<field name="is_bill" invisible="True"/>
|
||||||
|
<field name="logistics_status" invisible="True"/>
|
||||||
<button string="京东物流下单" name="create_order" type="object" confirm="是否确认物流下单" class="btn-primary"
|
<button string="京东物流下单" name="create_order" type="object" confirm="是否确认物流下单" class="btn-primary"
|
||||||
attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
|
attrs="{'invisible': ['|', '|', '|', ('check_out', '!=', 'OUT'), ('state', '!=', 'assigned'), ('is_bill', '=', True), ('logistics_way', '=', '自提']}"/>
|
||||||
<button string="获取物流面单" name="get_bill" type="object" confirm="是否获取物流面单" class="btn-primary"
|
<button string="获取物流面单" name="get_bill" type="object" confirm="是否获取物流面单" class="btn-primary"
|
||||||
attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
|
attrs="{'invisible': ['|', '|', '|', ('check_out', '!=', 'OUT'), ('state', '!=', 'assigned'), ('is_bill', '=', False), ('logistics_way', '=', '自提']]}"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
@@ -31,6 +44,12 @@
|
|||||||
<field name="model">stock.picking</field>
|
<field name="model">stock.picking</field>
|
||||||
<field name="inherit_id" ref="delivery.view_picking_withcarrier_out_form"/>
|
<field name="inherit_id" ref="delivery.view_picking_withcarrier_out_form"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
|
|
||||||
|
<field name="location_id" position="after">
|
||||||
|
<field name="logistics_status"/>
|
||||||
|
<field name="logistics_way"/>
|
||||||
|
</field>
|
||||||
|
|
||||||
<xpath expr="//group//field[@name='carrier_id']" position="after">
|
<xpath expr="//group//field[@name='carrier_id']" position="after">
|
||||||
<!-- <field name="senderNickName" domain="[('self.name', 'like', '%OUT%')]"/> -->
|
<!-- <field name="senderNickName" domain="[('self.name', 'like', '%OUT%')]"/> -->
|
||||||
<field name="senderNickName" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
|
<field name="senderNickName" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
|
||||||
@@ -48,6 +67,7 @@
|
|||||||
<field name="grossVolume" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
|
<field name="grossVolume" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
|
||||||
<field name="pickupBeginTime" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
|
<field name="pickupBeginTime" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
|
||||||
<field name="bill_show" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
|
<field name="bill_show" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
|
||||||
|
<field name="logistics_status"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//group//field[@name='group_id']" position="after">
|
<xpath expr="//group//field[@name='group_id']" position="after">
|
||||||
<field name="bill_show" widget="pdf_viewer" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
|
<field name="bill_show" widget="pdf_viewer" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
|
||||||
|
|||||||
@@ -12,7 +12,8 @@ access_sf_robot_axis_num,sf_robot_axis_num,model_sf_robot_axis_num,sf_group_equi
|
|||||||
access_sf_robot_axis_num,sf_robot_axis_num,model_sf_robot_axis_num,sf_group_equipment_manager,1,1,1,0
|
access_sf_robot_axis_num,sf_robot_axis_num,model_sf_robot_axis_num,sf_group_equipment_manager,1,1,1,0
|
||||||
|
|
||||||
|
|
||||||
access_maintenance_request_group_plan_dispatch,maintenance.request,maintenance.model_maintenance_request,sf_base.group_plan_dispatch,1,0,0,0
|
access_maintenance_system_user,equipment.request system user,maintenance.model_maintenance_request,base.group_user,1,0,0,0
|
||||||
|
|
||||||
access_maintenance_equipment_group_plan_dispatch,maintenance.equipment,maintenance.model_maintenance_equipment,sf_base.group_plan_dispatch,1,0,0,0
|
access_maintenance_equipment_group_plan_dispatch,maintenance.equipment,maintenance.model_maintenance_equipment,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
access_sf_maintenance_logs_group_plan_dispatch,sf_maintenance_logs,model_sf_maintenance_logs,sf_base.group_plan_dispatch,1,0,0,0
|
access_sf_maintenance_logs_group_plan_dispatch,sf_maintenance_logs,model_sf_maintenance_logs,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
access_maintenance_standard_image_group_plan_dispatch,maintenance_standard_image,model_maintenance_standard_image,sf_base.group_plan_dispatch,1,0,0,0
|
access_maintenance_standard_image_group_plan_dispatch,maintenance_standard_image,model_maintenance_standard_image,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
|
|||||||
|
@@ -11,5 +11,18 @@
|
|||||||
<field name="perm_create">False</field>
|
<field name="perm_create">False</field>
|
||||||
<field name="perm_unlink">False</field>
|
<field name="perm_unlink">False</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
<!-- 对维保计划做“最小权限”控制,计划调度岗只能看到所有的维保计划,不能修改,不能删除,不能创建 -->
|
||||||
|
<record id="maintenance_request_rule_plan_dispatch" model="ir.rule">
|
||||||
|
<field name="name">Maintenance Request Plan Dispatch Rule</field>
|
||||||
|
<field name="model_id" ref="maintenance.model_maintenance_request"/>
|
||||||
|
<field name="groups" eval="[(4, ref('sf_base.group_plan_dispatch'))]"/>
|
||||||
|
<!-- <field name="domain_force">['|',('user_id','=',user.id),('user_id','=',False)]</field> -->
|
||||||
|
<field name="perm_read">True</field>
|
||||||
|
<field name="perm_write">False</field>
|
||||||
|
<field name="perm_create">False</field>
|
||||||
|
<field name="perm_unlink">False</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|||||||
@@ -76,7 +76,7 @@
|
|||||||
confirm="There are no components to consume. Are you still sure you want to continue?" data-hotkey="g" groups="sf_base.group_sf_mrp_user"/>
|
confirm="There are no components to consume. Are you still sure you want to continue?" data-hotkey="g" groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="(//header//button[@name='button_mark_done'])[2]" position="replace">
|
<xpath expr="(//header//button[@name='button_mark_done'])[2]" position="replace">
|
||||||
<button name="button_mark_done" attrs="{'invisible': ['|', '|', ('state', 'in', ('draft', 'cancel', 'done', 'to_close')), ('qty_producing', '=', 0), ('move_raw_ids', '=', [])]}" string="Validate" type="object" class="oe_highlight" data-hotkey="g" groups="sf_base.group_sf_mrp_user"/>
|
<button name="button_mark_done" attrs="{'invisible': ['|', '|', ('state', 'in', ('draft', 'cancel', 'done', 'to_close')), ('qty_producing', '=', 0), ('move_raw_ids', '=', [])]}" string="验证" type="object" class="oe_highlight" data-hotkey="g" groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="(//header//button[@name='button_mark_done'])[3]" position="replace">
|
<xpath expr="(//header//button[@name='button_mark_done'])[3]" position="replace">
|
||||||
<button name="button_mark_done" attrs="{'invisible': [
|
<button name="button_mark_done" attrs="{'invisible': [
|
||||||
@@ -86,7 +86,7 @@
|
|||||||
'|',
|
'|',
|
||||||
('state', 'not in', ('confirmed', 'progress')),
|
('state', 'not in', ('confirmed', 'progress')),
|
||||||
('qty_producing', '!=', 0),
|
('qty_producing', '!=', 0),
|
||||||
('state', '!=', 'to_close')]}" string="Mark as Done" type="object" class="oe_highlight" data-hotkey="g" groups="sf_base.group_sf_mrp_user"/>
|
('state', '!=', 'to_close')]}" string="标记完成" type="object" class="oe_highlight" data-hotkey="g" groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="(//header//button[@name='button_mark_done'])[4]" position="replace">
|
<xpath expr="(//header//button[@name='button_mark_done'])[4]" position="replace">
|
||||||
<button name="button_mark_done" attrs="{'invisible': [
|
<button name="button_mark_done" attrs="{'invisible': [
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
'|',
|
'|',
|
||||||
('state', 'not in', ('confirmed', 'progress')),
|
('state', 'not in', ('confirmed', 'progress')),
|
||||||
('qty_producing', '!=', 0),
|
('qty_producing', '!=', 0),
|
||||||
('state', '!=', 'to_close')]}" string="Mark as Done" type="object" class="oe_highlight" data-hotkey="g"
|
('state', '!=', 'to_close')]}" string="标记完成" type="object" class="oe_highlight" data-hotkey="g"
|
||||||
confirm="There are no components to consume. Are you still sure you want to continue?" groups="sf_base.group_sf_mrp_user"/>
|
confirm="There are no components to consume. Are you still sure you want to continue?" groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//header//button[@name='button_unplan']" position="replace">
|
<xpath expr="//header//button[@name='button_unplan']" position="replace">
|
||||||
@@ -108,41 +108,41 @@
|
|||||||
|
|
||||||
|
|
||||||
<xpath expr="//header//button[@name='action_confirm']" position="replace">
|
<xpath expr="//header//button[@name='action_confirm']" position="replace">
|
||||||
<button name="action_confirm" attrs="{'invisible': [('state', '!=', 'draft')]}" string="Confirm" type="object" class="oe_highlight" data-hotkey="v" groups="sf_base.group_sf_mrp_user"/>
|
<button name="action_confirm" attrs="{'invisible': [('state', '!=', 'draft')]}" string="确认" type="object" class="oe_highlight" data-hotkey="v" groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|
||||||
<xpath expr="//header//button[@name='button_plan']" position="replace">
|
<xpath expr="//header//button[@name='button_plan']" position="replace">
|
||||||
<button name="button_plan" attrs="{'invisible': ['|', '|', ('state', 'not in', ('confirmed', 'progress', 'to_close')), ('workorder_ids', '=', []), ('is_planned', '=', True)]}" type="object" string="Plan" class="oe_highlight" data-hotkey="x" groups="sf_base.group_sf_mrp_user"/>
|
<!-- <button name="button_plan" attrs="{'invisible': ['|', '|', ('state', 'not in', ('confirmed', 'progress', 'to_close')), ('workorder_ids', '=', []), ('is_planned', '=', True)]}" type="object" string="Plan" class="oe_highlight" data-hotkey="x" groups="sf_base.group_sf_mrp_user"/> -->
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|
||||||
<xpath expr="//header//button[@name='action_assign']" position="replace">
|
<xpath expr="//header//button[@name='action_assign']" position="replace">
|
||||||
<button name="action_assign" attrs="{'invisible': ['|', ('state', 'in', ('draft', 'done', 'cancel')), ('reserve_visible', '=', False)]}" string="Check availability" type="object" data-hotkey="q" groups="sf_base.group_sf_mrp_user"/>
|
<button name="action_assign" attrs="{'invisible': ['|', ('state', 'in', ('draft', 'done', 'cancel')), ('reserve_visible', '=', False)]}" string="检查可用量" type="object" data-hotkey="q" groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|
||||||
<xpath expr="//header//button[@name='do_unreserve']" position="replace">
|
<xpath expr="//header//button[@name='do_unreserve']" position="replace">
|
||||||
<button name="do_unreserve" type="object" string="Unreserve" attrs="{'invisible': [('unreserve_visible', '=', False)]}" data-hotkey="w" groups="sf_base.group_sf_mrp_user"/>
|
<button name="do_unreserve" type="object" string="取消保留" attrs="{'invisible': [('unreserve_visible', '=', False)]}" data-hotkey="w" groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|
||||||
<xpath expr="//header//button[@name='action_toggle_is_locked']" position="replace">
|
<xpath expr="//header//button[@name='action_toggle_is_locked']" position="replace">
|
||||||
<button name="action_toggle_is_locked" attrs="{'invisible': ['|', ('show_lock', '=', False), ('is_locked', '=', False)]}" string="Unlock" groups="sf_base.group_sf_mrp_user" type="object" help="Unlock the manufacturing order to adjust what has been consumed or produced." data-hotkey="l"/>
|
<button name="action_toggle_is_locked" attrs="{'invisible': ['|', ('show_lock', '=', False), ('is_locked', '=', False)]}" string="取消阻塞" groups="sf_base.group_sf_mrp_user" type="object" help="Unlock the manufacturing order to adjust what has been consumed or produced." data-hotkey="l"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|
||||||
<xpath expr="//header//button[@name='action_toggle_is_locked']" position="replace">
|
<xpath expr="//header//button[@name='action_toggle_is_locked']" position="replace">
|
||||||
<button name="action_toggle_is_locked" attrs="{'invisible': ['|', ('show_lock', '=', False), ('is_locked', '=', True)]}" string="Lock" groups="sf_base.group_sf_mrp_user" type="object" help="Lock the manufacturing order to prevent changes to what has been consumed or produced." data-hotkey="l"/>
|
<button name="action_toggle_is_locked" attrs="{'invisible': ['|', ('show_lock', '=', False), ('is_locked', '=', True)]}" string="阻塞" groups="sf_base.group_sf_mrp_user" type="object" help="Lock the manufacturing order to prevent changes to what has been consumed or produced." data-hotkey="l"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|
||||||
<xpath expr="//header//button[@name='action_serial_mass_produce_wizard']" position="replace">
|
<xpath expr="//header//button[@name='action_serial_mass_produce_wizard']" position="replace">
|
||||||
<button name="action_serial_mass_produce_wizard" attrs="{'invisible': [('show_serial_mass_produce', '=', False)]}" string="Mass Produce" type="object" groups="sf_base.group_sf_mrp_user"/>
|
<button name="action_serial_mass_produce_wizard" attrs="{'invisible': [('show_serial_mass_produce', '=', False)]}" string="批量生产" type="object" groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|
||||||
<xpath expr="//header//button[@name='action_cancel']" position="replace">
|
<xpath expr="//header//button[@name='action_cancel']" position="replace">
|
||||||
<button name="action_cancel" type="object" string="Cancel" data-hotkey="z"
|
<button name="action_cancel" type="object" string="取消" data-hotkey="z"
|
||||||
attrs="{'invisible': ['|', '|', ('id', '=', False), ('state', 'in', ('done', 'cancel')), ('confirm_cancel', '=', False)]}"
|
attrs="{'invisible': ['|', '|', ('id', '=', False), ('state', 'in', ('done', 'cancel')), ('confirm_cancel', '=', False)]}"
|
||||||
confirm="Some product moves have already been confirmed, this manufacturing order can't be completely cancelled. Are you still sure you want to process ?" groups="sf_base.group_sf_mrp_user"/>
|
confirm="Some product moves have already been confirmed, this manufacturing order can't be completely cancelled. Are you still sure you want to process ?" groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|
||||||
<xpath expr="//header//button[@name='button_unbuild']" position="replace">
|
<xpath expr="//header//button[@name='button_unbuild']" position="replace">
|
||||||
<button name="button_unbuild" type="object" string="Unbuild" attrs="{'invisible': [('state', '!=', 'done')]}" data-hotkey="shift+v" groups="sf_base.group_sf_mrp_user"/>
|
<button name="button_unbuild" type="object" string="拆单" attrs="{'invisible': [('state', '!=', 'done')]}" data-hotkey="shift+v" groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|
||||||
|
|
||||||
@@ -157,28 +157,28 @@
|
|||||||
<field name="inherit_id" ref="mrp.mrp_production_workorder_tree_editable_view"/>
|
<field name="inherit_id" ref="mrp.mrp_production_workorder_tree_editable_view"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<xpath expr="//tree//button[@name='button_start']" position="replace">
|
<xpath expr="//tree//button[@name='button_start']" position="replace">
|
||||||
<button name="button_start" type="object" string="Start" class="btn-success"
|
<button name="button_start" type="object" string="开始" class="btn-success"
|
||||||
attrs="{'invisible': ['|', '|', '|', ('production_state','in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('state', 'in', ('done', 'cancel')), ('is_user_working', '!=', False)]}" groups="sf_base.group_sf_mrp_user"/>
|
attrs="{'invisible': ['|', '|', '|', ('production_state','in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('state', 'in', ('done', 'cancel')), ('is_user_working', '!=', False)]}" groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//tree//button[@name='button_pending']" position="replace">
|
<xpath expr="//tree//button[@name='button_pending']" position="replace">
|
||||||
<button name="button_pending" type="object" string="Pause" class="btn-warning"
|
<button name="button_pending" type="object" string="暂停" class="btn-warning"
|
||||||
attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False)]}" groups="sf_base.group_sf_mrp_user"/>
|
attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False)]}" groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//tree//button[@name='button_finish']" position="replace">
|
<xpath expr="//tree//button[@name='button_finish']" position="replace">
|
||||||
<button name="button_finish" type="object" string="Done" class="btn-success"
|
<button name="button_finish" type="object" string="完成" class="btn-success"
|
||||||
attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False)]}" groups="sf_base.group_sf_mrp_user"/>
|
attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False)]}" groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//tree//button[@name='%(mrp.act_mrp_block_workcenter_wo)d']" position="replace">
|
<xpath expr="//tree//button[@name='%(mrp.act_mrp_block_workcenter_wo)d']" position="replace">
|
||||||
<button name="%(mrp.act_mrp_block_workcenter_wo)d" type="action" string="Block" context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
|
<button name="%(mrp.act_mrp_block_workcenter_wo)d" type="action" string="阻塞" context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
|
||||||
attrs="{'invisible': ['|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked')]}" groups="sf_base.group_sf_mrp_user"/>
|
attrs="{'invisible': ['|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked')]}" groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//tree//button[@name='button_unblock']" position="replace">
|
<xpath expr="//tree//button[@name='button_unblock']" position="replace">
|
||||||
<button name="button_unblock" type="object" string="Unblock" context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
|
<button name="button_unblock" type="object" string="取消阻塞" context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
|
||||||
attrs="{'invisible': ['|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '!=', 'blocked')]}" groups="sf_base.group_sf_mrp_user"/>
|
attrs="{'invisible': ['|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '!=', 'blocked')]}" groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//tree//button[@name='action_open_wizard']" position="replace">
|
<xpath expr="//tree//button[@name='action_open_wizard']" position="replace">
|
||||||
<button name="action_open_wizard" type="object" icon="fa-external-link" class="oe_edit_only"
|
<button name="action_open_wizard" type="object" icon="fa-external-link" class="oe_edit_only"
|
||||||
title="Open Work Order"
|
title="未完成工单"
|
||||||
context="{'default_workcenter_id': workcenter_id}" groups="sf_base.group_sf_mrp_user"/>
|
context="{'default_workcenter_id': workcenter_id}" groups="sf_base.group_sf_mrp_user"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ from odoo.exceptions import UserError
|
|||||||
class ReSaleOrder(models.Model):
|
class ReSaleOrder(models.Model):
|
||||||
_inherit = 'sale.order'
|
_inherit = 'sale.order'
|
||||||
|
|
||||||
|
logistics_way = fields.Selection([('自提', '自提'), ('到付', '到付'), ('在线支付', '在线支付')], string='物流方式')
|
||||||
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('交货人电话号码')
|
||||||
|
|||||||
Reference in New Issue
Block a user