【魅力开源】第2集:三个人每人一个想法会发生什么故事?关于Odoo的江湖

文章介绍了Odoo在企业信息化中的应用,包括权限控制的多层次机制,如组织、角色、人员权限。强调了快速批量功能的重要性,通过代码示例展示了如何自动化处理日常任务,提高效率。此外,提到了Odoo的拖拉拽应用、可配置的MVC架构以及多语言支持对企业的好处。文章还分享了作者团队使用Odoo的经验和心路历程。
摘要由CSDN通过智能技术生成


如果你有一个苹果,我也有一个苹果,彼此交换后,你我还是一人一个苹果;但是如果你有一个想法,我有一个想法,彼此交换后,你我就都有两个想法,三个人呢?一百个人呢?

跟Odoo的初次邂逅,绝对称不上美好的回忆。
时间回到2018年4月11日。
第一次经手Odoo的工作是写报表,居然一写就写到2019年6月25日,我们第二位小伙伴加入。团队中一个人码代码的日子,1年2个月又14天,这是一件有趣而绝对称不上美好的事情。经历一年多对Odoo手摸手的学习,Odoo从controllers、models、report、views到JsonRPC各个板块也摸了个遍。

既然讲企业信息化,那接下来交代下后面故事的背景:

公司: 贸易性质公司 + 节能产品生产 + 工业维修再造三个业态,包括SFA(Sales force automation)/L2C(Leads To Cash)销售业态、MRO私域电商、永磁传动设备自主生产、工业维修再造、工厂数字化解决方案五个板块。
系统: ERP财务业务一体化系统(包括购销存财费/人事/生产等模块) + MRO私域电商系统 + CRM客户关系管理系统 + WMS仓储管理系统 + 生产报工系统
移动端: 企业微信(OA 系统)

在已上线ERP并稳定使用的情况下,不适宜启用Odoo的ERP功能。经过考虑:只把ERP作为订单中台,启用Base/Mail模块对核心ERP系统扩展并向前对接业务系统,是相对高效的模式。【这种模式适用性比较广,没过多破坏ERP的业务逻辑,大家都可以玩。当然这种基于ERP为订单中台的场景,后面将有章节讲到】
业务示意图:
在这里插入图片描述

下面再讲一些关于Odoo的事情:


一. 关于权限控制:组织、角色、人员权限的说明

一套相对完备的系统,需要有几个层级的控制,分别为满足组织隔离、同时至少应满足按角色设置:表单级权限控制、记录级权限控制、字段级权限控制。有部分做的较为优秀的系统,还可以实现按组织树关系对部门及员工数据进行共享及隔离处理(即自己可以查看本人数据,上级可以查看下级及本人数据,部门负责人可以查看本部门数据)。
在这里插入图片描述

二. 关于快速批量功能:有一些事情可以交给电脑来做

先来讲个场景,公司某部门有近200名业务人员,需要每天统计营销数据,并将销售报表每天定时发送给各个业务人员。

发200个邮件需要多长时间?测算一下,每个邮件30秒,数学不好,好像100分钟。

用Odoo框架来一段装下逼格的代码,花小半个小时,写个方法:先找一下数据,再循环一下,200个业务员的销售数据就出来了。接下来就可以泡壶茶等着报表发出来了。
当然,你也可以动动小指头去发送,只要个人愿意。
在大多数时候,效率与成本是比较难以平衡的一个事情。
经济管理上有个专业名称,叫“机会成本”,即所有的机会的获得都是以放弃其他机会来换取的,说得比较拗口。简单来讲,同一时间,你手上有AB两个机会,你选择A,那么你得放弃B;选择B同理。

看个228行代码实现自动邮件分发的例子:

class SDReportDaily(models.Model):
    """
    业务员销售日报表
    """

    def sd_report_daily(self):
        config_db = self.env['sync.server'].search([('name', '=', 'eas_db')])[0]
        oracle_db = cx_Oracle.connect(config_db.sync_user, config_db.sync_pwd, '%s:%s/%s' %
                                      (config_db.sync_server, config_db.sync_port, config_db.sync_db))
        cursor = oracle_db.cursor()
        try:
            cursor.execute(sql_data_salesman.format(current_date))  # 执行销售数据查询——查业务员
            record_salesman = cursor.fetchall()
            for bill in record_salesman:  #  这里循环一下,200个业务员就出来了
                self.sd_report_record(cursor, bill[0], bill[1], all_data=False, is_leader=False, is_origin=False)

	def sd_report_record(self, cursor, person, manager_email, all_data, is_leader, is_origin):
		pass

不是要挂附件吗,那在这里把附件“挂”上去吧

    def add_file_in_attachment(self, file_name, name):
        """
        生成附件
        :param file_name: 附件路径
        :param name: 附件名称
        :return: 附件对象
        """
        with open(file_name, "rb") as xlfile:
            byte_data = xlfile.read()
        attachment = self.env['ir.attachment'].create({'name': name,
                                                       'datas': base64.b64encode(byte_data),
                                                       'res_model': 'res.users',
                                                       'res_id': 2})
        return attachment

喝茶的时间200个邮件在这里就可以发出来了。

        def create_email(self, attachment_id, person, manager_email, current_time, body):
        """
        生成邮件
        :param attachment_id: 附件对象的id
        :param current_time:
        :return:
        """
        msg_body = u'%s<br/><br/> %s' % (body, '此电子邮件由系统自动发送.<br/>请不要直接回复邮件.')
        self.env['mail.mail'].create({
            'auto_delete': False,
            'notification': False,
            'state': 'outgoing',
            'mail_server_id': 1,
            'record_name': time.strftime('%Y-%m-%d %H-%M-%S'),
            'message_type': 'email',
            'reply_to': 'coco@qiye.com',
            'email_from': 'coco@qiye.com',
            'email_cc': 'coco@qiye.com',
            'email_to': manager_email,
            'attachment_ids': [(6, 0, [attachment_id])],
            'subject': '[%s]销售日报表%s' % (person, current_time),
            'body_html': msg_body,
        }).send()


三. 关于可以拖拉拽应用:技术模块

3.1 可配置的MVC

在这里插入图片描述

3.2 简单开发下附件模块也可用来作为企业的知识沉淀

在这里插入图片描述

3.3 多语言支持:对于跨国业务的小伙伴,绝对是福音

在这里插入图片描述

3.4 当然还有更多其他的功能

四. 题外话

2018年,一个人用Odoo10在写报表。Odoo10一个不太漂亮的系统,像主家庭主夫,不修边幅,但基本不会有明显BUG;

2019年,二个人用Odoo13写模块。功能靠修,泛善可陈;

2020年,三个人用Odoo13的写各种接口,对接客户、对接供应商、对接eCommerce;

2021年,四个人用Odoo14完成前端“业务中台”与ERP后端“订单中台”的大部分数据交互,也写一些BI的功能;

2022年,不到五个人,还是四个人。用着odoo16,继续做着码农,痛并快乐,,,,


odoo中文社区野史-V2

保定-粉刷匠: 开源ERP系统Odoo中国发展史
上海开源信息技术协会: 分享回顾 | Odoo的独特性及其“八卦”

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值