多组织系统的设计思路

一、什么是多组织系统

多组织这个概念是一般多用于企业信息化系统。通常是指一个集团分拆了多个子公司进行运营,每家子公司负责集团业务的一个到多个部分,多家子公司共同支撑集团的全部业务。

子公司内部,在业务执行过程中相对独立, 甚至有自己的财务归集口径和运营管理模式,但最终数据需要归集到集团。

这类集团在上企业信息化系统时,需要系统有在子公司内独立运行的能力,也要求有组织间数据共享、协作、整合的能力。

常见的场景有:

1. 产销分离:一家公司负责销售,另一家公司负责生产。

2. 集采分收:集团公司负责采购计划,分子公司收货入库。

3. 集采集收:集团公司负责采购计划并采购入库,分子公司通过组织间调拨方式领料收货。

4. 内部购销:不同组织间,原材料、半成品、成品 通过买卖关系进行调货。

等等

二、多组织系统要达到的目标

1. 档案

使用一种或多种方式:

a. 档案共享:集团总公司制定部门、料品、人员 等等 编码规则,统一对部门、物料等各类档案进行定义和编码,然后各子公司读取集团公司的档案信息。

b. 档案下发:集团总公司制定的档案,可以按档案类型、档案编码下发到分子公司,并授与分子公司修改部分属性的权利。

c. 档案隔离:每家子公司除可以引用集团下发或共享的档案外,同时可以自己编制内部自用的档案案。

2. 业务往来

常见的业务往来:跨组织领料、跨组织发货、上游组织接单下游组织生产、

三、系统实现思路

限于篇幅仅从数据流层面讲讲实现原因

1.档案

a. 档案隔离:每个档案添加一个组织字段,代表档案由哪个组织制定,可以由哪个组织使用;

如果需要多个组织共同使用,通过下发或者共享方式实现。

b. 档案共享:即将组织字段清空,代表所有组织都可以全用。

c. 档案下发:即档案复制一份,在新数据里填上要下发的组织。

2. 业务往来

多组织内业务往来在系统中主要体现为:

  • 能够查看业务上下游的报表、单据
  • 能够参照上游组织的单据制订本组织的单据
  • 能够对下游组织的下达任务,即推送下游组织的单据

实现方式通常有两种:

  • 职能拆解法,常见于大型的ERP产品 
  • 业务协同法,常见于MES、WMS等现场执行系统。限于篇幅,下面仅从软件如何做数据控制的层面做一下介绍。

【职能拆解方式】

a. 职能梳理

整合全集团的全部业务,整理出集团的职能。 常见的职能划分:开票组织、库存组织、生产组织、采购组织 等等,具体职能划分 可参考大型ERP产品。

将上述职能提炼为 组织档案的 属性。

b.组织职能

在系统的组织档案上,给对应的组织启用 对应的职能。

c.职能字段定义

相比于单组织系统的单据,多组织系统的单据上需要预留这些职能组织对应的字段。每类职能预留留一个字段。   

固定职能编码 OR  使用职能自定义项 两种方式均可。

下面以职能自定义项来介绍实现原理,假设我们预置 16个职能自定义项, 在“系统管理-自定义项” 管理页面,设置整个系统启用多少个自定义项。

假设字段名叫 cBusOrgCode1、cBusOrgCode2、cBusOrgCode3... cBusOrgCode16,

字段对应的标题在自定义项设置里可以设置,例如:cBusOrgCode1 叫 开票组织,cBusOrgCode2 叫库存组织。  

组织信息  这个档案 有显示属性可以勾选,就看 自定义项里 启用了哪些自定义项,名称 跟着 自定义项的 项目名称 走。

d. 定义单据启用职能

单据头中数据表中预置 cBusOrgCode1、cBusOrgCode2。。。到 cBusOrgCode16   共16个自定义项。

每类单据启用哪些职能组织,只需要在原来的功能档案中,添加启用字段,bBusOrgCode1、bBusgOrgCode2...到cBusOrgCode16, 用这16个字段标识该类单据分别启用哪些职能字段。当然能够启用的范围 要受到 第c步 总体启用情况的限制,只能启用 “自定义项”管理中 已启用的职能字段。

e. 数据权限

用户登录系统后,可以看见哪些单据、参照哪些单据、操作哪些单据,按照上述划分的职能进行控制。

系统实现概述:

  • 考虑到用户在单据界面上翻页的情况,不能拿着 当前单据的信息(制单组织、单据类型、单据号)去调用平台接口,判断是否有权查看。而是应该提供一个方法,这个方法给到业务开发组,业务开发组在查询单据的代码上,把它作为附加的查询条件。这样在单据翻页和单据列表中查询时,都能控制住单据的可见范围
  • 由平台提供统一的方法,控制登录系统的人员 能够看到 哪些组织、哪些类型、哪些编号的单据。传入参数:当前人员、当前组织、当前单据类型;返回参数 是一个过滤条件,类似cBusOrgCode1 in ('xxx') AND cBusOrgCode2 in ('yyy') 。  业务组开发拿到它后,对数据进行过滤。
  • 基于跨组织往来的改造: 

       伪代码=>

                    原组织隔离在查询数据时有限制“单据.制单组织 = (登录人.当前登录组织)”   

                    现在修改为                                                                                     

                  业务单据.表头. 制单组织 = ( 登录人.所在组织)    or ( 平台方法返回的过滤条件 )

  • 原来单组织模式下的功能权限和权限数据保持不变

【业务协同方式】

a. 提炼集团业务,制定协同路线

如下图是产销分离的协同路线设置,总公司组织编码是001,负责销售;生产子公司编码是 002,负责生产;

还可以设置不同的协同路径,定义不同的组织间传递规则。

b. 单据按协同路线传递

单据的单据头添加 协同路线,需要做跨组织业务的单据,在制单过程中录入协同路线。

单据在单据的保存后或审核后事件中,按照上面的单据规则,触发生成下游组织的单据。实现上下游组织业务协同。

协同路线仅定义多组织间单据类型的传递规则,并不记录 具体单据的上下游关联。

c.数据权限
  • 上游组织在制单或审核单据后,自动触发生成下游组织单据的方式,我们称为推式生单;

(如上图中的“发起组织”,审核完“采购订单”后,系统自动生成“接收组织”的采购订单。)

  • 同时也支持下游组织查看上游单据,并拉取上游单据的信息,生成下游单据,我们称为拉式生单;( 如上图中的“接收组织”,主动查看“发起组织”的采购订单。)
  • 除组织隔离需要改造外,原单组织系统下的功能权限和数据权限保持不变。
  • 跨组织业务相关的单据,可以由两种方式实现数据权限:
  • 一是在每类单据表头 添加一个来源组织字段,查询数据时过滤条件为:单据.单据头.来源组织 = 用户.当前组织, 这种方式简单粗暴,甚至可以不用顾及  协同路线。
  • 二是通过平台提供一个方法,这个方法用于获取 当前类型的单据 该用户 能够查看的单据ID(基础数据来源于参照生单记录)。  传入参数:  单据类型、当前用户、当前组织。  返回参数:单据ID。   业务组开发 拿到这个返回参数,作为查询条件 过滤数据。

以上是个人的一些分享与总结,欢迎交流碰撞。 Q304418200.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值