接着上一篇博客,我们进行往来单位一览表设计如下:

可以看到我们设计的时候,将客户和供应商用两个字段来解决,这样基本可以解决那些往来单位有可能即是供应商又是客户的情况。当然因为这里不是主要做客户关系管理系统,所以可以这样设计问题也不大,但如果要单独还要增加客户关系管理系统的话,我们建议是分开两个表来设计。这里主要围绕的是进销存来设计,所以我们把往来单位做到一个表里面。

这样就有以下几个核心点我们要去解决:

1比如到时候系统分配权限的时候,采购进下面的往来单位一览表只能看到往来单位是供应商的,销售进来只能看到往来单位是客户的。

2为了安全保密设置,有些人又不能让他看到往来单位详细联系人信息(我们联系人存储在子表,防止不相关的人看到信息私下又去联系)。

3出于常理自己录入的往来单位信息,希望只有自己看到,别人要特别权限才能看到,而且如果自己是主管还能看到自己下属录入的客户或者供应商。

4.采购进来默认是否客户界面控件为不可编辑,销售进来是否供应商控件不可编辑。

5.不同组织人进来只能看到他们自己组织内的往来单位.

具体实现过程:

1首先利用我们平台的权限分配系统,创建相应的权限界面,如下所示即可。

2.对于第5点,利用组织机构数据授权即可解决。

3.其他代码解决。代码如下:

/// <summary>/// 往来单位一览表/// </summary>class RefUnitList : Jeez.Runtime.Base.General.frmList{public override void RefreshList(){//设置一览表的数据源base.ReportListData = new RefUnitListData();base.ReportListData.objContext = this.objContext;base.ReportListData.FormPropertyPage = this.FormPropertyPage;base.RefreshFilterGridData();}}/// <summary>/// 构建一览表的数据源/// </summary>public class RefUnitListData : Jeez.Runtime.Data.ReportList{public RefUnitListData(): base(){}//获取SQL on部分protected override void AddFromSqlBeforeONPart(StringBuilder sb, System.Collections.ArrayList aryTable, string tableName, string tableNameAs){base.AddFromSqlBeforeONPart(sb, aryTable, tableName, tableNameAs);}//获取SQL where部分public override string GetRptListSQLWhere(){string strwhere = base.GetRptListSQLWhere();//获取框架点击过滤的时候设置的过滤条件//我们可以利用构建数据源的where部分来实现打开往来单位一览表的数据源的数据隔离string filter = BaseFunc.GetEmpFilter(objContext);//获取当前用户的自己职员ID,以及他下属的职员ID,职员表我们有个上级主管字段来决定员工上下级关系if (strwhere == ""){//如果点击过滤没有设置过滤条件,我们就添加自己的过滤条件,这里就可以直接where ,//如果点击过滤没有设置过滤条件,我们就添加自己的过滤条件,这里就可以直接where ,if (!Jeez.Common.UI.AccessControl.CheckACLWithNoMsg("SCM_WLDW_SeeAll")){  //如果没有看所有往来单位的权限的话,就只能查看业务员自己以及业务员下属录入进来的往来单位数据strwhere += string.Format("  where jzRefUnit.EmployeeID in {0}", filter);if (!Jeez.Common.UI.AccessControl.CheckACLWithNoMsg("SCM_WLDW_SeeBoth")){//如果没有查看两者的权限if (Jeez.Common.UI.AccessControl.CheckACLWithNoMsg("SCM_WLDW_Customer")){//如果只有看客户的权限strwhere += string.Format(" and jzRefUnit.IsCustomer=1");}if (Jeez.Common.UI.AccessControl.CheckACLWithNoMsg("SCM_WLDW_Supply")){//如果有查看供应商权限
strwhere += string.Format(" and jzRefUnit.IsSupply=1");}}}else{if (!Jeez.Common.UI.AccessControl.CheckACLWithNoMsg("SCM_WLDW_SeeBoth")){//如果没有查看两者的权限if (Jeez.Common.UI.AccessControl.CheckACLWithNoMsg("SCM_WLDW_Customer")){//如果只有看客户的权限strwhere += string.Format(" where jzRefUnit.IsCustomer=1");}if (Jeez.Common.UI.AccessControl.CheckACLWithNoMsg("SCM_WLDW_Supply")){//如果有查看供应商权限
strwhere += string.Format(" where jzRefUnit.IsSupply=1");}}}}else{//如果点击过滤没有设置过滤条件,我们就添加自己的过滤条件,这里就可以直接where ,if (!Jeez.Common.UI.AccessControl.CheckACLWithNoMsg("SCM_WLDW_SeeAll")){  //如果没有看所有往来单位的权限的话,就只能查看业务员自己以及业务员下属录入进来的往来单位数据strwhere += string.Format(" and jzRefUnit.EmployeeID in {0}", filter);if (!Jeez.Common.UI.AccessControl.CheckACLWithNoMsg("SCM_WLDW_SeeBoth")){                     //如果没有查看两者的权限if (Jeez.Common.UI.AccessControl.CheckACLWithNoMsg("SCM_WLDW_Customer")){//如果只有看客户的权限strwhere += string.Format(" and jzRefUnit.IsCustomer=1");}if (Jeez.Common.UI.AccessControl.CheckACLWithNoMsg("SCM_WLDW_Supply")){//如果有查看供应商权限
strwhere += string.Format(" and jzRefUnit.IsSupply=1");}}}else{if (!Jeez.Common.UI.AccessControl.CheckACLWithNoMsg("SCM_WLDW_SeeBoth")){//如果没有查看两者的权限if (Jeez.Common.UI.AccessControl.CheckACLWithNoMsg("SCM_WLDW_Customer")){//如果只有看客户的权限strwhere += string.Format(" and jzRefUnit.IsCustomer=1");}if (Jeez.Common.UI.AccessControl.CheckACLWithNoMsg("SCM_WLDW_Supply")){//如果有查看供应商权限
strwhere += string.Format(" and jzRefUnit.IsSupply=1");}}}}return strwhere;}//获取SQL order by部分public override string GetRptListSqlOrderBy(ref string strSQLGroupBy){return base.GetRptListSqlOrderBy(ref strSQLGroupBy);}}/// <summary>/// 往来单位新增界面/// </summary>class RefUnit : Jeez.Runtime.Base.General.BillUI{Jeez.Control.JeezUltraCheckBox.JeezUltraCheckBox ckIsCustomer;Jeez.Control.JeezUltraCheckBox.JeezUltraCheckBox ckIsSupplyer;public override bool LoadUI(){bool b = base.LoadUI();if (b){ckIsCustomer = base.GetControlByName("JeezCheckBox1") as Jeez.Control.JeezUltraCheckBox.JeezUltraCheckBox;ckIsSupplyer = base.GetControlByName("JeezCheckBox2") as Jeez.Control.JeezUltraCheckBox.JeezUltraCheckBox;}return b;}protected override void BillUI_Load(object sender, EventArgs e){base.BillUI_Load(sender, e);InitByDefine();}/// <summary>/// 根据角色设置价格单元格的可见隐藏/// </summary>void InitByDefine(){if (!Jeez.Common.UI.AccessControl.CheckACLWithNoMsg("SCM_WLDW_SeeChild")){//如果没有看子表数据的权限,子表grid数据就隐藏起来this.CurrentGrid.Visible = false; }if (!Jeez.Common.UI.AccessControl.CheckACLWithNoMsg("SCM_WLDW_SeeBoth")){//如果没有看子表数据的权限,子表grid数据就隐藏起来ckIsCustomer.Enabled = false;ckIsSupplyer.Enabled = false;if (Jeez.Common.UI.AccessControl.CheckACLWithNoMsg("SCM_WLDW_Customer")){//如果只有看客户的权限
                    ckIsCustomer.Checked = true;}if (Jeez.Common.UI.AccessControl.CheckACLWithNoMsg("SCM_WLDW_Supply")){//如果有查看供应商权限
ckIsSupplyer.Checked = true;}}else{ckIsCustomer.Enabled = true;ckIsSupplyer.Enabled = true;}}protected override void LoadEntityDataToControl(){base.LoadEntityDataToControl();InitByDefine();}}

View Code

总结:一览表开发主要了解一览表数据源的构建部分,比如我们代码部分构建where部分,当然我们也可以设置一览表数据源的排序部分。

极致平台开发十大特点:

1. 一个数据库下可以同时进行N套业务系统开发,开发出来的产品可以根据您客户的需要按模块界面组发布,客户想要啥模块就可以给啥模块。而且一个数据库下开发所有功能,当客户需要从你的人力资源增加客户关系管理模块的时候,你只要做个升级包就可以了。解决企业多个业务系统信息孤岛问题。
2. 智能升级功能,当客户从A模块增加B模块的时候,您只需要做一个升级包即可,给客户升级后,客户原来录入的数据不会有影响,而且所有客户端都是智能感应智能升级,大大节省您的部署成本。
3. 工作流套打报表均可以运行时候自定义,比如费用报销单,您100家客户就有一百种费用报销的流程,套打的格式,用我们平台您只需要设计好这个费用报销单,至于哪个客户走什么流程,完全可以让客户自己去定义,而不需要像传统开发那样,提前在开发中设置好,100个客户就维护100套代码。套打也是如此。
4. 支持数据授权,当您开发多组织架构的系统的时候,我们只要业务单据引用组织机构即可,然后组织机构支持数据授权,这样就可以不需要编写任何一行代码就可以做到,组织与组织之间数据彼此隔离,我想给哪个用户看哪个组织的数据只要给这个用户这个组织的数据权限即可。
5. 支持字段授权,对于一些表的核心字段对用户进行屏蔽直接利用我们平台的字段授权功能即可,比如职员薪酬字段进行字段授权,让有的用户在看职员信息的时候,自动隐藏薪酬的数据。这也是无需编写任何一行代码。
6. 单据界面自动生成,我们开发的时候只要设计好实体,也就是传统开发所说的表结构即可,还可以设置哪些字段是必录,可见,不允许重复,在界面生成的时候,会自动生成一个界面,而且这个界面的增删改查是无需写一行代码的,您只要对您特有业务逻辑编码即可,相对传统开发,你代码量可以节省2/3,开发周期缩短2/3
7.一次开发同时具有单机局域互联网三个版本,客户想要单机就给单机想要互联网版就给互联网版。

8.强大的公式引擎,让您可以灵活设计计算类的项目,比如工资,预算。

9.包含强大的各种控件,比如文本控件支持F8调用,编码名称自动带出。Grid控件支持表头过滤,单元格融合,固定列,表格列,表格行各种公式汇总,复合表头,表格宽度可以自己随意调整,而且关闭后会自动记录之前的宽度。还支持表格列随意调整顺序。

10.平台内置很多基础功能,比如权限管理,用户角色管理,还有实施的一些导入导出工具都能帮助客户大大提高一个项目验收进度。

官网:www.jeez.com.cn
平台介绍:www.jeez.com.cn/jbf  
平台下载地址:http://www.jeez.com.cn/upfiles/jbfsetuppro.rar

(下载即可有3个月免费试用)
联系电话:13826519021 18988763421 QQ:180315586  420977542 (加我注明极致软件即可)

平台销售经理:李先生

将互联网时代的管理软件做到极致!
==================================================================

转载于:https://www.cnblogs.com/Jeez_JBF/p/ERP2.html

如何用极致业务基础平台做一个通用企业ERP系列之二一览表培训相关推荐

  1. 如何用极致业务基础平台做一个通用企业ERP系列之三启用期间管理设计

    接着篇幅2,我们现在要该设计一个启用期间管理了,启用期间管理,主要为方便管理,比如一些历史的单据,不允许他反审核去修改,作假.也不允许操作者在录入以前历史的单据. 期间管理我们框架提供了一个期间表,这 ...

  2. 如何利用极致业务基础平台构建一个通用企业ERP之十六物料进出明细报表的设计...

    1.做ERP经常要做很多分析报表,因为老板喜欢看的就是报表,利用极致业务基础平台做报表很简单,只要会写sql即可. 本篇我们介绍一个物料进出明细报表的设计,设计报表我们先设计过滤界面,如下所示: 在该 ...

  3. 如何利用极致业务基础平台构建一个通用企业ERP之十四生产任务单设计

    1.生产任务单界面设计如下: 要求实现功能如下: 1.生产任务单可以由销售订单选取而产生. 2.生产任务单可以下推领料.生产完后可以下推成品入库. 3.自动根据BOM计算此次生产所需要的原料. 代码如 ...

  4. 如何利用极致业务基础平台主界面容器工具配置出漂亮的业务系统

    1.经过前面的大致设计,我们进销存基础资料就做好了.如下图: 因为中间太空洞了,所以我们可以将右边一些功能,放在中间空白区域,这只要在该界面上设置界面显示方式为ShowBoth即可,这样中间右边都可以 ...

  5. “软件业务基础平台”是工业软件突破口

    中国移动.中石油.中石化.中国银行.宝钢.上汽.一汽等等,越来越多中国企业成为影响全球行业市场的重要力量.中国有巨大的行业市场,中国工业领域有巨大的企业信息化需求,如此巨大的行业信息化需求市场,应该孕 ...

  6. 基于SOA的组件化业务基础平台[转]

    转自https://www.ibm.com/developerworks/cn/webservices/1111_xiaojg_soa/index.html 业务基础平台是业务逻辑和基础架构平台之间的 ...

  7. 基于 SOA 的组件化业务基础平台

    基于 SOA 的组件化业务基础平台 原文:基于 SOA 的组件化业务基础平台 前言 业务基础平台是业务逻辑应用和基础架构平台之间的一个中间层,解决 "应用软件的业务描述和操作系统平台.软件基 ...

  8. 极致业务基础开发平台

    深圳极致软件公司,面向.net开发工程师,推出极致业务基础开发平台,可以免费下载,终身免费使用.可以免费设计数据库,免费定义数据实体,设计业务流程.以及强大的工作流和协同办公功能. 不用写代码,免费开 ...

  9. 业务基础平台产品的现状和发展

    <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 现在市场上如雨 ...

最新文章

  1. 让假图无所遁形,阿里篡改图像检测大赛集结号令打响
  2. 几种数据库两列字段的拼接方法
  3. 【iOS】iOS之Button segue弹出popOver消除(dismiss)问题
  4. flink更新flink-shaded-hadoop-3-uber
  5. java服务器端测试_java-在服务器端测试Spring Web Services端点?
  6. NIPS’20 Spotlight | 精准建模用户兴趣,广告CTR预估准确率大幅提升!
  7. CSDN开发者周刊 TDengine:专为物联网订制的大数据平台 YugaByte DB:高性能的分布式ACID事务数据库
  8. iOS核心动画 - CALayer
  9. Linux基金会宣布行业进一步支持Akraino Edge Stack
  10. ANSYS12.0安装教程
  11. TMS320DM642调试出现#10247-D creating output section .capChaACrSpace without a SECTIONS 解决办法...
  12. web前端——qq登录界面
  13. bessel 函数乘以指数函数的积分
  14. python爬百度贴吧_python爬虫-爬取百度贴吧帖子加图片
  15. k8s服务器修改ip,k8s的kubeadm的master更换ip
  16. 超市选址c语言程序,谈谈超市选址的重要性
  17. Win10去除资源管理器导航窗格多余的文件夹(3D对象、桌面、图片等)
  18. python禅语_42:对象、类、以及从属关系
  19. Liunx7 DNS服务器正反解析,域名转发
  20. 当 iPhone X 碰上拟物化的 iOS 6

热门文章

  1. 免费迅雷会员VIP帐号获取器 – 迅雷离线下免费用
  2. 海量数据库的查询优化及分页算法方案 1
  3. 作为利物浦大学和西浦的学生的职业机会发展平台!很重要!
  4. Oracle Exadata迈入十年将助企业迈向数位转型之路
  5. JVM类加载(2)—连接
  6. 内置传感器---智能手机(资料)
  7. Mediawiki随笔
  8. 常见架构TLB miss处理方法(转)
  9. JS获取浏览器高度 并赋值给类
  10. 不要在覆写的方法中用super