如何用极致业务基础平台做一个通用企业ERP系列之四即时库存期初库存设计

1这两个表单设计比较简单,业务逻辑也比较简单。界面如下:

我们要做的功能仅仅是防止同一个物料同一个单位在同一个仓库存放多条记录。我们可以在单据保存前检查事件中去解决。Overriide BeforeSaveCheck,这个事件主要是执行保存前

希望处理我们自己的一些业务逻辑。

还有如果是修改状态的话,我们不允许他修改界面上仓库字段,物料字段,单据字段。因为即使库存是一般系统初始化的时候完成的,基本上后面数量的变化都是因为出入库动作产生才

发生变化,我们这里并不需要为他设置更多限制。

代码部分:

/// <summary>
    /// 即时库存新增界面
    /// </summary>
    class NowKucun : Jeez.Runtime.Base.General.BillUI
    {

        private Jeez.Control.JeezUltraTextBox.JeezUltraTextBox   txCangku;//仓库
        private Jeez.Control.JeezUltraTextBox.JeezUltraTextBox txMat;//物料
        private Jeez.Control.JeezUltraTextBox.JeezUltraTextBox txUnit;//计量单位

        private Jeez.Control.JeezCurrencyTextBox.JeezCurrencyTextBox txDanjia;//单价
        private Jeez.Control.JeezCurrencyTextBox.JeezCurrencyTextBox txAmount;//金额
        private Jeez.Control.JeezNumberTextBox.JeezNumberTextBox txMany;//金额
        public override bool LoadUI()
        {
            bool b = base.LoadUI();
            if (b)
            {
                txCangku = base.GetControlByName("JeezTextBox1") as Jeez.Control.JeezUltraTextBox.JeezUltraTextBox;
                txMat = base.GetControlByName("JeezTextBox2") as Jeez.Control.JeezUltraTextBox.JeezUltraTextBox;
                txUnit = base.GetControlByName("JeezTextBox3") as Jeez.Control.JeezUltraTextBox.JeezUltraTextBox;

                txDanjia = base.GetControlByName("JeezCurrencyTextBox2") as Jeez.Control.JeezCurrencyTextBox.JeezCurrencyTextBox;
                txAmount = base.GetControlByName("JeezCurrencyTextBox1") as Jeez.Control.JeezCurrencyTextBox.JeezCurrencyTextBox;

                txMany = base.GetControlByName("JeezNumberTextBox1") as Jeez.Control.JeezNumberTextBox.JeezNumberTextBox;
                txDanjia.ValueChanged += new EventHandler(txMany_ValueChanged);
                txMany.ValueChanged += new EventHandler(txMany_ValueChanged);
                
            }
            return b;
        }
        /// <summary>
        /// 计算金额=单价*数量
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void txMany_ValueChanged(object sender, EventArgs e)
        {
            decimal amount = Convert.ToDecimal(BaseFunc.IsNull(txMany.PropertyPage.Value, 0)) * Convert.ToDecimal(BaseFunc.IsNull(txDanjia.PropertyPage.Value, 0));

             txAmount.PropertyPage.Value = amount;
        }

       

        /// <summary>
        /// 保存前检查事件
        /// </summary>
        /// <returns></returns>
        protected override bool BeforeSaveCheck()
        {
            bool b = base.BeforeSaveCheck();
            if(b)
            {
                if (this.entityobject == null)
                {
                    //新增的状态
                    int CangkuID = (int)txCangku.Tag;
                    int MatID = (int)txMat.Tag;
                    int UnitID = (int)txUnit.Tag; 

                    //获取库存表
                    EntityObjectFactory eof = EntityObjectFactory.GetInstance(this.objContext,FolyerERP_SCM.EntityIDEnum.NowKucun);
                    EntityObject eo = eof.FindFirst("WareHouseID={0} and MatID={1} and JiliangdanweiID={2} ", CangkuID, MatID, UnitID);
                    if (eo != null)
                    {
                        Jeez.Common.UI.MsgBox.Show("已经录入过该物料的库存数据,请勿重新录入");
                        return false;
                    }
                    return b;
                }
                else
                {
                    return b;
                }
            }
            return b;
        }
      

        protected override void BillUI_Load(object sender, EventArgs e)
        {

            base.BillUI_Load(sender, e);

             
        }
        /// <summary>
        /// 将实体数据banding到控件上的事件
        /// </summary>
        protected override void LoadEntityDataToControl()
        {
            base.LoadEntityDataToControl();
            if (this.entityobject != null)
            {//如果不是新增状态
                InitByDefine();
            }
        }
         
        void InitByDefine()
        {
            txCangku.Enabled = false;
            txUnit.Enabled = false;
            txMat.Enabled = false;
        }

    }

系统初始化我们就顺路讲讲我们的数据导入工具,非常方便,在极致平台系统管理,系统维护,数据导入,我们选择整理好的excel,然后选择要导入哪个表,我们这个支持父子表同时导入,然后设置他们的字段对应关系,便可顺利的将整理好的excel资料导入到系统,而且导入的过程中,我们有防呆控制,如果导入引用的实体资料在系统中不存在,他会提示你哪几行的数据有异常。比如如下的Excel数据源,我们要导入到系统中去。

选择数据导入,进入数据导入界面如下:

点下一步勾选要导入的是哪个表

接着点下一步设置对应规则,引用类型就用配对的公式方式,系统自动会关联过去,如果公式有错系统还会提示,如下:

这里对应公式我们建议代码对代码,因为代码是唯一的。这样配对就不会有问题,不然用名称对名称的话,有可能允许名称重复的,这个时候配对就不知道配哪个呢。

设置完毕后,点击确定即可将数据导入进去。大大提高实施的效率。

极致平台开发十大特点:

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/ERP4.html