odoo status statusbar 状态栏
简介

就是右上角的这个状态。
各种单据的循环,流程,都是基于状态的。
这东西怎么做呢?
一:模型定义
state = fields.Selection([ ('draft', 'Quotation'), ('sent', 'Quotation Sent'), ('sale', 'Sales Order'), ('done', 'Locked'), ('cancel', 'Cancelled'), ], string='Status', readonly=True, copy=False, index=True, tracking=3, default='draft')
二:form视图定义
注意定义在sheet上面,定义在header里面。
注意:下面的form,不可以再定义显示state了。否则会把横条变成下拉菜单。
即这个form视图,只能有一处state,定义在sheet上面,定义在header里面。
<header>
<field name="state" widget="statusbar" statusbar_visible="draft,sent,sale"/>
</header>
<sheet>
statusbar_visible,是在这个视图显示几项,为了不同的人使用不同的流程,可以在这里控制一下。
就像这个销售模块,销售人员的视图,可以看到报价,报价已发送,销售订单三个状态
仓库可以看到销售订单
会计可以看到已交付
大概就是这样吧。
statusbar_colors='{"cancel":"red","done":"blue"}'
定义颜色
三:tree视图定义


其实只定义widget="badge"就可以显示为胶囊模式了,但是是灰色的,再定义decoration,就是彩色的胶囊了。
四:form动作
<field name="stage_id" widget="statusbar" clickable="True"/>
可以定义clickable="true",使得顶端状态行点击即变状态。
一般不这么定义。
五:通过按钮切换状态
https://blog.csdn.net/ONLYSRY/article/details/123688862
<header>
<button id="button_draft" name="action_draft" string="草稿" class="btn-primary"
states="cancel" type="object"/>
<button id="button_confirm" name="acton_confirm" string="确认" class="btn-primary"
states="draft,cancel" type="object"/>
<button id="button_done" name="action_done" string="完成" class="btn-primary"
states="cancel,draft,confirm" type="object"/>
<button id="button_cancel" name="action_cancel" string="取消"
states="draft,done,confirm" type="object"/>
<field name="state" widget="statusbar" options="{'clickable':'1'}"
statusbar_visible="draft,confirm,done"/>
</header>
def action_draft(self): self.state = 'draft' def acton_confirm(self): self.state = 'confirm' def action_done(self): self.state = 'done' def action_cancel(self): self.state = 'cancel'
class="btn-primary" 紫色高亮显示的一个样式
states="cancel" 这个草稿按钮将只在状态流程为【取消】时可见。
states="draft,cancel" 这个确认按钮将只在状态流程为【草稿】和【取消】时可见。
states="cancel,draft,confirm"这个完成按钮将只在状态流程为【取消】【草稿】【确认】时可见。
states="draft,done,confirm"这个取消按钮将只在状态流程为【草稿】【完成】【确认】时可见。

浙公网安备 33010602011771号