code = fields.Char(string='唯一编号') item = fields.Many2one('roke.item.information',string='物料') Destination = fields.Many2one('roke.warehouse.location', string='仓库位置') model = fields.Char(string='型号') remark = fields.Text(string='备注') price = fields.Float(string='单价') quantity = fields.Float(string='数量') occupied_quantity = fields.Float(string='已占有数量',compute='_compute_occupied_quantity', store=True) available_inventory = fields.Float(string='可用库存',compute='_compute_available_inventory', store=True) storage = fields.Many2one('roke.storage',string='入库') outbound = fields.Many2one('roke.maintenance.management',string='出库')
时间: 2023-08-31 11:06:09 浏览: 160
这是一个 Python 中的 Odoo 数据模型类,包含了一些字段,包括:唯一编号、物料、仓库位置、型号、备注、单价、数量、已占有数量、可用库存、入库、出库等。其中,物料和仓库位置是 Many2one 类型,表示与其他模型类之间存在多对一的关系;已占有数量和可用库存是通过 _compute_occupied_quantity 和 _compute_available_inventory 方法计算得来的。这些字段用于描述某个物料在某个仓库的库存情况,包括其数量、价格、存储和出库信息等。
相关问题
class RokeDispatchCarOrderLine(models.Model): _name = "roke.dispatch.car.order.line" _description = "派车单明细" _inherit = ['mail.thread'] _order = "id desc" _rec_name = "code" order_id = fields.Many2one('roke.dispatch.car.order', string='派车单') code = fields.Char(string='单据编号', track_visibility='onchange') class Rokedispatchordermanagement(models.Model): _name = 'roke.dispatch.order.management' _inherit = ['mail.thread', 'mail.activity.mixin'] _description = "派船单" _rec_name = "code" code = fields.Char(string='单据编号', track_visibility='onchange') class RokeReceiptdetails(models.Model): _name = "roke.receipt.details" _description = "记录" _inherit = ['mail.thread'] code = fields.Char(string='单据编号') name = fields.Char(string='名称') 怎么在记录的tree每条记录都加上查询 点击查询按钮根据编号从派车派船两个模型里面找展示有form展示查到的数据
您可以使用Odoo的动作(action)和视图(view)来实现这个功能。首先,您需要创建一个动作(action),这个动作将会跳转到一个包含tree视图的页面。在这个tree视图中,您可以添加一个按钮(button),用于触发查询操作,查询派车单和派船单,并将查到的数据展示在tree视图中。
以下是一个实现这个功能的示例代码:
```python
from odoo import models, fields, api
class RokeReceiptDetails(models.Model):
_name = "roke.receipt.details"
_description = "记录"
_inherit = ['mail.thread']
code = fields.Char(string='单据编号')
name = fields.Char(string='名称')
@api.multi
def open_related_dispatch_orders(self):
action = self.env.ref('your_module_name.action_related_dispatch_orders').read()[0]
action['domain'] = [('code', '=', self.code)]
return action
```
在这个模型中,我们添加了一个方法`open_related_dispatch_orders`,这个方法将会在点击tree视图中的查询按钮时被触发。该方法会返回一个动作(action),这个动作跳转到一个新的tree视图,用于展示查询结果。
```xml
<odoo>
<data>
<!-- action to open related dispatch orders -->
<record id="action_related_dispatch_orders" model="ir.actions.act_window">
<field name="name">Related Dispatch Orders</field>
<field name="res_model">roke.dispatch.car.order.line</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('code', '=', current_code)]</field>
<field name="context">{'current_code': active_id}</field>
</record>
<!-- view for RokeReceiptDetails -->
<record id="view_roke_receipt_details_tree" model="ir.ui.view">
<field name="name">roke.receipt.details.tree</field>
<field name="model">roke.receipt.details</field>
<field name="arch" type="xml">
<tree string="Roke Receipt Details" create="false" edit="false">
<field name="code"/>
<field name="name"/>
<button name="open_related_dispatch_orders" string="查询"/>
</tree>
</field>
</record>
<!-- menuitem for RokeReceiptDetails -->
<record id="menu_roke_receipt_details" model="ir.ui.menu">
<field name="name">Roke Receipt Details</field>
<field name="model">roke.receipt.details</field>
<field name="action" ref="your_module_name.action_roke_receipt_details_tree"/>
</record>
</data>
</odoo>
```
此外,您还需要在Odoo中添加一个动作(action)和一个视图(view),用于展示查询结果。在上面的代码中,我们定义了一个名为`view_roke_receipt_details_tree`的tree视图,用于展示`RokeReceiptDetails`模型中的数据。我们还添加了一个查询按钮(button),用于触发`open_related_dispatch_orders`方法。最后,我们还添加了一个菜单(menu),用于访问`RokeReceiptDetails`模型。
请注意,为了在tree视图中触发查询操作,我们使用了一个上下文(context)变量,这个变量将当前记录的ID(active_id)传递给了查询方法。我们还将动作(action)的domain属性设置为了`[('code', '=', current_code)]`,这个属性将会过滤派车单和派船单,只展示与当前记录的单据编号相匹配的记录。
希望这个示例代码能够帮助您实现您的需求。
class ApprovalFlow(models.Model): _name = 'approval.flow' _description = u'审批流程' approval_cannot_run_id = fields.Many2many('execute.function.not.list', 'function_not_rel', u'完成后不能执行操作', help=u'审批流程完成后不能能执行的操作,修改,删除') class Rokedispatchordermanagement(models.Model): _name = 'roke.dispatch.order.management' _inherit = ['mail.thread', 'mail.activity.mixin'] _description = "派船单" _rec_name = "code" client = fields.Many2one('roke.partner', string='客户', tracking=True, required=True, ) department_manager = fields.Many2one('res.users', string='创建人', tracking=True, default=lambda self: self.env.user.id) box_number = fields.Char(string='箱号') shipping_companies = fields.Char(string='船公司') field_station = fields.Char(string='场站') ship_name_voyage = fields.Char(string='船名航次') port_of_discharge = fields.Char(string='卸货港') box_type = fields.Many2one('roke.box.type', string='箱型') code = fields.Char(string='单据编号', track_visibility='onchange') def unlink(self): audit = self.env['approval.flow'] for record in audit: if record.approval_can_run_id == '删除': raise UserError("不能删除") return super(Rokedispatchordermanagement, self).unlink() approval.flow模型在另一个文件中在roke.dispatch.order.management重新删除方法不能删除approval_can_run_id值等于删除的
根据你的代码,我理解您想要在删除Rokedispatchordermanagement模型的记录之前,检查approval_can_run_id值是否等于“删除”,如果是,则不允许删除。但是,您的代码中有几个错误。
首先,您需要将“unlink”方法的重写代码放在“Rokedispatchordermanagement”模型中,而不是在“approval.flow”模型中。
其次,您应该在每个记录上检查approval_can_run_id的值,而不是在“approval.flow”模型上进行操作。您可以使用“self”关键字来引用当前记录。
最后,您需要使用“in”运算符来检查approval_can_run_id是否包含“删除”值,而不是使用“==”运算符来比较。
下面是更正后的代码:
```
class Rokedispatchordermanagement(models.Model):
_name = 'roke.dispatch.order.management'
_inherit = ['mail.thread', 'mail.activity.mixin']
_description = "派船单"
_rec_name = "code"
client = fields.Many2one('roke.partner', string='客户', tracking=True, required=True)
department_manager = fields.Many2one('res.users', string='创建人', tracking=True, default=lambda self: self.env.user.id)
box_number = fields.Char(string='箱号')
shipping_companies = fields.Char(string='船公司')
field_station = fields.Char(string='场站')
ship_name_voyage = fields.Char(string='船名航次')
port_of_discharge = fields.Char(string='卸货港')
box_type = fields.Many2one('roke.box.type', string='箱型')
code = fields.Char(string='单据编号', track_visibility='onchange')
def unlink(self):
for record in self:
if '删除' in record.approval_can_run_id.mapped('name'):
raise UserError("不能删除")
return super(Rokedispatchordermanagement, self).unlink()
```
这个更正后的代码应该可以达到您想要的效果。
阅读全文