显隐
This commit is contained in:
@@ -41,6 +41,40 @@ class StockPicking(models.Model):
|
||||
compute='_compute_available_product_ids',
|
||||
string="可用产品"
|
||||
)
|
||||
can_certify = fields.Boolean(
|
||||
string="可以证明",
|
||||
compute='_compute_can_certify',
|
||||
store=False
|
||||
)
|
||||
|
||||
@api.depends('user_id', 'employee_id')
|
||||
def _compute_can_certify(self):
|
||||
"""计算当前用户是否可以证明(不是采购人也不是验收人)"""
|
||||
current_user = self.env.user
|
||||
for record in self:
|
||||
# 如果当前用户是采购人员,不能证明
|
||||
if record.user_id and record.user_id.id == current_user.id:
|
||||
record.can_certify = False
|
||||
continue
|
||||
# 如果当前用户是验收人,不能证明
|
||||
if record.employee_id and record.employee_id.user_id and record.employee_id.user_id.id == current_user.id:
|
||||
record.can_certify = False
|
||||
continue
|
||||
# 其他情况可以证明
|
||||
record.can_certify = True
|
||||
|
||||
def read(self, fields=None, load='_classic_read'):
|
||||
"""重写read方法,打开验收状态的入库单时自动更新验收时间"""
|
||||
result = super(StockPicking, self).read(fields, load)
|
||||
# 导入Fields模块
|
||||
from odoo import fields as odoo_fields
|
||||
for record in self:
|
||||
if record.receipt_status == 'acceptance':
|
||||
# 使用write方法更新验收时间
|
||||
record.write({
|
||||
'acceptance_date': odoo_fields.Datetime.now()
|
||||
})
|
||||
return result
|
||||
|
||||
@api.depends('location_id')
|
||||
def _compute_available_product_ids(self):
|
||||
|
||||
@@ -6,17 +6,20 @@
|
||||
<field name="inherit_id" ref="stock.view_picking_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='picking_type_id']" position="after">
|
||||
<field name="department_id" options="{'no_create': True}"/>
|
||||
<field name="department_id" options="{'no_create': True}" invisible="1"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='picking_type_id']" position="attributes">
|
||||
<attribute name="readonly">receipt_status in ['acceptance', 'certification']</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='origin']" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='origin']" position="after">
|
||||
<field name="receipt_status" invisible="1"/>
|
||||
<field name="purchase_id" string="源单据" readonly="1" options="{'no_create': True, 'no_open': False}"/>
|
||||
<field name="user_id" string="采购人员"/>
|
||||
<field name="available_product_ids" invisible="1"/>
|
||||
<field name="state" invisible="1"/>
|
||||
<field name="can_certify" invisible="1"/>
|
||||
</xpath>
|
||||
<xpath expr="//page[@name='operations']//field[@name='move_ids_without_package']//field[@name='product_id']" position="attributes">
|
||||
<attribute name="options">{'no_create': True}</attribute>
|
||||
@@ -28,14 +31,14 @@
|
||||
<xpath expr="//page[@name='operations']/field[@name='move_ids_without_package']" position="after">
|
||||
<group>
|
||||
<group>
|
||||
<field name="employee_id" string="验收人" required="1" options="{'no_create': True}"/>
|
||||
<field name="document_ids" widget="preview_many2many"/>
|
||||
<field name="acceptance_date"/>
|
||||
<field name="employee_id" string="验收人" required="1" options="{'no_create': True}" readonly="receipt_status == 'certification'"/>
|
||||
<field name="document_ids" widget="preview_many2many" readonly="receipt_status == 'certification'"/>
|
||||
<field name="acceptance_date" readonly="receipt_status == 'certification'"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="certifier_id" options="{'no_create': True}"/>
|
||||
<field name="certifier_document_ids" widget="preview_many2many"/>
|
||||
<field name="certification_date"/>
|
||||
<field name="certifier_id" options="{'no_create': True}" readonly="receipt_status == 'acceptance'"/>
|
||||
<field name="certifier_document_ids" widget="preview_many2many" readonly="receipt_status == 'acceptance'"/>
|
||||
<field name="certification_date" readonly="receipt_status == 'acceptance'"/>
|
||||
</group>
|
||||
</group>
|
||||
</xpath>
|
||||
@@ -44,10 +47,10 @@
|
||||
</xpath>
|
||||
<xpath expr="//button[@name='button_validate' and @class='oe_highlight']" position="attributes">
|
||||
<attribute name="string">证明</attribute>
|
||||
<attribute name="invisible">receipt_status != 'certification'</attribute>
|
||||
<attribute name="invisible">receipt_status != 'certification' or not can_certify</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='location_dest_id'][@groups='stock.group_stock_multi_locations']" position="attributes">
|
||||
<attribute name="invisible">picking_type_code == 'outgoing' or receipt_status == 'acceptance'</attribute>
|
||||
<attribute name="invisible">1</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='picking_properties']" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
@@ -63,6 +66,10 @@
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='partner_id']" position="attributes">
|
||||
<attribute name="string">供应商</attribute>
|
||||
<attribute name="readonly">receipt_status in ['acceptance', 'certification']</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='scheduled_date']" position="attributes">
|
||||
<attribute name="readonly">receipt_status in ['acceptance', 'certification']</attribute>
|
||||
</xpath>
|
||||
<xpath expr="(//field[@name='state'][@widget='statusbar'])[1]" position="replace">
|
||||
<field name="receipt_status" widget="statusbar" statusbar_visible="acceptance,certification,receipt" invisible="picking_type_code != 'incoming'"/>
|
||||
@@ -245,6 +252,10 @@
|
||||
name="报废"
|
||||
action="action_stock_picking_scrap"
|
||||
sequence="15"/>
|
||||
|
||||
<record id="stock.action_picking_tree_incoming" model="ir.actions.act_window">
|
||||
<field name="name">收货</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user