当前位置: 代码迷 >> 综合 >> odoo 13.0教程(采购模块增加审批流)
  详细解决方案

odoo 13.0教程(采购模块增加审批流)

热度:43   发布时间:2024-01-24 08:25:22.0

说明

Odoo 13.0采购模块中,询价单的审批只有两级审批,当询价单金额超过设置的数值时须由经理审批通过。如果我们想再加一个或多个审批环节,又该如何处理呢?接下来我们就通过代码来说明如果修改代码实现对采购审批流程的修改。

模块结构

在这里插入图片描述
采购相关的模块共有六个,它们分别是:purchase、purchase_mrp、purchase_product_matrix、purchase_requisition、purchase_requisition_stock、purchase_stock。

purchase 采购功能相关主要业务实现
purchase_mrp 采购业务中涉及到制造模块的逻辑
purchase_product_matrix 待续
purchase_requisition 采购协议
purchase_requisition_stock待续
purchase_stock 采购中涉及到的库存逻辑
purchase模块目录说明:

manifest.py Odoo模块配置文件,指定了模块的版本、名依赖、demo数据、数据等信息
data 存放相关数据,在__manifest__.py 文件中指定
i18n 国际化配置
models 包含主要业务代码
report 打印模板
security 权限配置
views 前端页面
i18n目录是Odoo模块的约定目录,国际化的配置文件必须放在此目录下,否则加载无效。security、view、data目录是一种逻辑目录,这些目录下的数据需要在 manifest.py配置中指定文件的相对路径。

权限配置机制

1、purchase_security.xml

Odoo 中的组(res.groups)就是一种角色的概念,我们可以为组分配一定的访问权限,这种设置是通过文件配置来实现的。然后在Web端我们为某个用户分配某些组来实现对用户权限的控制,在security目录下的purchase_security.xml文件中。
[先了解一下odoo权限机制]

2、purchase_views.xml

在这里也可以配置权限

<menuitem id="menu_purchase_config" name="Configuration" parent="menu_purchase_root" sequence="100" groups="group_purchase_manager"/>

采购流程分析

在这里插入图片描述

自定义流程

超过100,000的采购必须财务经理审核。
在这里插入图片描述

自定义流程代码实现

1、添加三级流程

state = fields.Selection([('draft', 'RFQ'),('sent', 'RFQ Sent'),('to approve', 'To Approve'),#add by firexia('to three approve', 'To Three Approve'),('purchase', 'Purchase Order'),('done', 'Locked'),('cancel', 'Cancelled')
], string='Status', readonly=True, index=True, copy=False, default='draft', tracking=True)

2、定义审核函数


# add by firexia
def button_three_approve(self,force=False):self.write({'state': 'purchase', 'date_approve': fields.Date.context_today(self)})self.filtered(lambda p: p.company_id.po_lock == 'lock').write({'state': 'done'})

3、修改原审核函数

def button_approve(self, force=False):# edit by firexia#multi approve conditionif self.amount_total < 100000:self.write({'state': 'purchase', 'date_approve': fields.Date.context_today(self)})self.filtered(lambda p: p.company_id.po_lock == 'lock').write({'state': 'done'})else:#next approvefor order in self:if order.state not in ['to approve']:continueorder._add_supplier_to_product()order.write({'state': 'to three approve'})return {}

4、修改视图

注意这里添加了用户角色是财务经理,即account.group_account_manager,总之,把有to approve的地方都参照这修改或添加。

<button name="button_three_approve" type="object" states='to three approve' string="Approve Three Order" class="oe_highlight" groups="account.group_account_manager"/>
icon="fa-pencil-square-o" attrs="{'invisible':['|', ('invoice_count', '=', 0), ('state', 'in', ('draft','sent','to approve','to three approve'))]}">
line 194:'readonly': [('state', 'in', ('purchase','to three approve', 'to approve','done', 'cancel'))],
line 339:<field name="invoice_status" attrs="{'invisible': [('state', 'in', ('draft', 'sent', 'to approve','to three approve', 'cancel'))]}"/>
line 368:<filter name="draft" string="RFQs" domain="[('state', 'in', ('draft', 'sent', 'to approve','to three approve'))]"/>

5、翻译

#. module: purchase
#: model_terms:ir.ui.view,arch_db:purchase.purchase_order_form
msgid "Approve Three Order"
msgstr "审核"
#. module: purchase
#: model:ir.model.fields.selection,name:purchase.selection__purchase_order__state__to_three_approve
#: model:ir.model.fields.selection,name:purchase.selection__purchase_report__state__to_three_approve
#: model_terms:ir.ui.view,arch_db:purchase.view_purchase_order_filter
msgid "To Three Approve"
msgstr "待批准"

6、升级

在这里插入图片描述

7、效果

采购业务员
注意采购总额大于10,0000.
在这里插入图片描述
采购经理审核
在这里插入图片描述
财务经理审核
在这里插入图片描述