Example #1
0
        /// <summary>
        /// 保存更改
        /// </summary>
        public void Save()
        {
            if (NodeList.Count == 0)
            {
                throw new BusinessException("至少有一条明细!");
            }
            if (NodeList.ToList().Exists(m => String.IsNullOrEmpty(m.ItemName) || String.IsNullOrEmpty(m.ItemName.Trim())))
            {
                throw new BusinessException(" 清单项名称不能为空!");
            }
            List <ContractBoi>     lstAddBoi    = null;
            List <ContractBoi>     lstDelBoi    = null;
            List <ContractBoi>     lstUpdateBoi = null;
            List <String>          lstDelNo     = null;
            List <ContractBoiNode> lstAllNode   = NodeList.ToList();
            //添加的节点集合
            List <ContractBoiNode> lstAddNode = lstAllNode.FindAll(m => m.OriginalBoi == null);

            //删除的节点集合
            lstDelBoi = boq.BoiList.FindAll(m => !lstAllNode.Exists(n => n.OriginalBoi == m));
            if (lstAddNode.Count > 0)
            {
                lstAddBoi = lstAddNode.ConvertAll <ContractBoi>(m => ObjectHelper.Clone <ContractBoi>(m));
            }
            if (lstDelBoi.Count > 0)
            {
                lstDelNo = lstDelBoi.ConvertAll <String>(m => m.ItemNo);
            }
            if (updateList.Count > 0)
            {
                lstUpdateBoi = updateList.ConvertAll <ContractBoi>(m => ObjectHelper.Clone <ContractBoi>(m));
            }
            //执行保存操作
            List <ContractBoiNoInfo> lstAddedInfo = contractBoqService.Save(ProjectNo, null, Boq.BoQName, ObjectHelper.GetDefaultDecimal(Boq.TotalAmount), lstAddBoi, lstUpdateBoi, lstDelNo);

            lstAddNode.ForEach(m =>
            {
                //为新增的项填写ItemNo
                m.ItemNo = lstAddedInfo.Find(n => n.ItemCode == m.ItemCode).ItemNo;
                //拷贝Boi对象
                ContractBoi boi = ObjectHelper.Clone <ContractBoi>(m);
                //将Boi对象与节点关联起来
                m.OriginalBoi = boi;
                Boq.BoQNo     = m.BoQNo;
                //加入到原始Boq集合中
                Boq.BoiList.Add(boi);
            });
            //从原始集合中移除已删除的对象
            lstDelBoi.ForEach(m =>
            {
                Boq.BoiList.Remove(m);
            });
            //清除变化记录集合
            updateList.Clear();
            //将编辑状态设置为FALSE
            this.Editing = false;
            //重新读取数据
            Load();
        }
Example #2
0
        /// <summary>
        /// 检查节点基本信息是否变化
        /// </summary>
        /// <param name="Node"></param>
        /// <returns></returns>
        bool HasInfoChanged(ContractBoiChangeNode Node)
        {
            ContractBoi boi = Node;

            return(boi.IItemCoe != Node.IItemCoe ||
                   boi.ItemCode == Node.ItemCode ||
                   boi.ItemName != Node.ItemName ||
                   boi.Uom != Node.Uom);
        }
Example #3
0
        /// <summary>
        /// 检查节点是否变化
        /// </summary>
        /// <param name="Node"></param>
        /// <returns></returns>
        bool HasNodeChanged(ContractBoiChangeNode Node)
        {
            ContractBoi boi = Node;

            return(boi.IItemCoe != Node.IItemCoe ||
                   boi.ItemCode == Node.ItemCode ||
                   boi.ItemName != Node.ItemName ||
                   boi.Uom != Node.Uom ||
                   boi.CtrctAmount != Node.CtrctAmount ||
                   boi.CtrctPrjPrice != Node.CtrctPrjPrice ||
                   boi.CtrctQty != Node.CtrctQty ||
                   boi.StatId != Node.StatId);
        }
Example #4
0
        private void qtyEdit_Validating(object sender, CancelEventArgs e)
        {
            WBSline_boi node = gvRelationDetail.GetFocusedRow() as WBSline_boi;
            CalcEdit    edit = sender as CalcEdit;
            decimal     qty  = edit.Value;

            if (node != null)
            {
                if (qty < 0)
                {
                    //edit.ErrorText = "数量不可为负数";
                    gvRelationDetail.SetColumnError(gvRelationDetail.FocusedColumn, "数量不可为负数");
                    e.Cancel = true;
                    return;
                }
                List <WBSline_boi> lstExceptFocusedRow = viewModel.boq.AllRelationList.FindAll(m => m.ItemNo == node.ItemNo && m.WBSLineNo != node.WBSLineNo);
                ContractBoi        originBoi           = viewModel.originContractBoiList.Find(m => m.ItemNo == node.ItemNo);
                if (lstExceptFocusedRow != null && lstExceptFocusedRow.Count > 0) //如果存在其他相同合同项,判断相同合同项
                {
                    decimal remainQty = 0, remainAmount = 0;
                    lstExceptFocusedRow.ForEach(m =>
                    {
                        remainQty    = remainQty + ObjectHelper.GetDefaultDecimal(m.Qty);
                        remainAmount = remainAmount + ObjectHelper.GetDefaultDecimal(m.Amount);
                    });
                    remainQty    = ObjectHelper.GetDefaultDecimal(originBoi.CtrctQty) - remainQty;
                    remainAmount = ObjectHelper.GetDefaultDecimal(originBoi.CtrctAmount) - remainAmount;
                    if (remainQty - ObjectHelper.GetDefaultDecimal(edit.EditValue) < 0)
                    {
                        gvRelationDetail.SetColumnError(gvRelationDetail.FocusedColumn, "该项的关联数量总值大于该项合同清单数量的总值,请核对后再输入");
                        //edit.ErrorText = "该项的关联数量总值大于该项合同清单数量的总值,请核对后再输入";
                        e.Cancel = true;
                    }
                }
                else
                {
                    decimal remainQty = 0, remainAmount = 0;
                    remainQty    = ObjectHelper.GetDefaultDecimal(originBoi.CtrctQty);
                    remainAmount = ObjectHelper.GetDefaultDecimal(originBoi.CtrctAmount);
                    if (remainQty - ObjectHelper.GetDefaultDecimal(edit.EditValue) < 0)
                    {
                        gvRelationDetail.SetColumnError(gvRelationDetail.FocusedColumn, "该项的关联数量总值大于该项合同清单数量的总值,请核对后再输入");
                        //edit.ErrorText = "该项的关联数量总值大于该项合同清单数量的总值,请核对后再输入";
                        e.Cancel = true;
                    }
                }
            }
        }
        /// <summary>
        /// 插入清单项
        /// </summary>
        /// <param name="BoqNo"></param>
        /// <param name="Boi"></param>
        /// <param name="OperationBy">操作人</param>
        /// <returns>No信息</returns>
        private ContractBoiNoInfo InsertBoi(String BoqNo, ContractBoi Boi, String OperationBy, SqlTransaction Tran = null)
        {
            List <CmdParameter> cmds = new List <CmdParameter>();

            cmds.Add(new CmdParameter("@ProjectNo", Boi.ProjectNo));
            cmds.Add(new CmdParameter("@BidNo", Boi.BidNo));
            cmds.Add(new CmdParameter("@BoQNo", BoqNo));
            cmds.Add(new CmdParameter("@IItemCoe", Boi.IItemCoe));
            cmds.Add(new CmdParameter("@ItemName", Boi.ItemName));
            cmds.Add(new CmdParameter("@ParentCode", Boi.ParentCode));
            cmds.Add(new CmdParameter("@Currency", Boi.Currency));
            cmds.Add(new CmdParameter("@CurrencyCode", Boi.CurrencyCode));
            cmds.Add(new CmdParameter("@ExchangeRate", Boi.ExchangeRate));
            cmds.Add(new CmdParameter("@Uom", Boi.Uom));
            cmds.Add(new CmdParameter("@CtrctQty", Boi.CtrctQty));
            cmds.Add(new CmdParameter("@CtrctPrjPrice", Boi.CtrctPrjPrice));
            cmds.Add(new CmdParameter("@CtrctAmount", Boi.CtrctAmount));
            cmds.Add(new CmdParameter("@Description", Boi.Description));
            cmds.Add(new CmdParameter("@CategoryNo", Boi.CategoryNo));
            cmds.Add(new CmdParameter("@isCntrctItem", Boi.isCntrctItem));
            cmds.Add(new CmdParameter("@isImportant", Boi.isImportant));
            cmds.Add(new CmdParameter("@isTax", Boi.isTax));
            cmds.Add(new CmdParameter("@OperationBy", OperationBy));
            cmds.Add(new CmdParameter("@Id", 0, System.Data.ParameterDirection.Output));
            cmds.Add(new CmdParameter("@ItemNo", "", System.Data.ParameterDirection.Output));
            cmds.Add(new CmdParameter("@ItemCode", Boi.ItemCode, System.Data.ParameterDirection.Output));
            cmds.Add(new CmdParameter("@Infor", "", System.Data.ParameterDirection.Output));
            cmds.Add(new CmdParameter("@Ok", 0, System.Data.ParameterDirection.Output));
            ParameterResult pResult = new ParameterResult()
            {
                Parameters = cmds.ToArray()
            };

            HdDbCmdManager.GetInstance().Execute("ERP_BoQ.dbo.Gl_Cntrct_Boi_Add", CommandType.StoredProcedure, pResult.Parameters, Tran);
            if (!Convert.ToBoolean(pResult["@Ok"]))
            {
                throw new FaultException <ApplicationServiceError>(new ApplicationServiceError()
                {
                    ErrorMessage = pResult["@Infor"].ToString()
                });
            }
            ContractBoiNoInfo BoiInfo = new ContractBoiNoInfo();

            BoiInfo.ItemCode = Boi.ItemCode;
            BoiInfo.ItemNo   = pResult["@ItemNo"].ToString();
            return(BoiInfo);
        }
Example #6
0
 private void tlDetail_BeforeCheckNode(object sender, DevExpress.XtraTreeList.CheckNodeEventArgs e)
 {
     if (e.PrevState == CheckState.Unchecked)
     {
         if (e.Node.HasChildren)//如果存在子节点,则不可以选中
         {
             e.Node.CheckState = CheckState.Unchecked;
             e.CanCheck        = false;
             return;
         }
         ContractBoi boi = tlDetail.GetDataRecordByNode(e.Node) as ContractBoi;
         if (boi != null)
         {
             if ((boi.CtrctQty ?? 0) <= 0) //如果未关联数量为0,则不可选中
             {
                 e.Node.CheckState = CheckState.Unchecked;
                 e.CanCheck        = false;
                 return;
             }
         }
     }
 }
Example #7
0
        /// <summary>
        /// 检查节点是否禁用、启用变化
        /// </summary>
        /// <param name="Node"></param>
        /// <returns></returns>
        bool HasDisableChanged(ContractBoiChangeNode Node)
        {
            ContractBoi boi = Node;

            return(boi.StatId != Node.StatId);
        }
Example #8
0
        /// <summary>
        /// 检查节点单价是否变化
        /// </summary>
        /// <param name="Node"></param>
        /// <returns></returns>
        bool HasPriceChanged(ContractBoiChangeNode Node)
        {
            ContractBoi boi = Node.OriginalBoi;

            return(boi.CtrctPrjPrice != Node.CtrctPrjPrice);
        }
Example #9
0
        /// <summary>
        /// 检查节点数量是否变化
        /// </summary>
        /// <param name="Node"></param>
        /// <returns></returns>
        bool HasQtyChanged(ContractBoiChangeNode Node)
        {
            ContractBoi boi = Node.OriginalBoi;

            return(boi.CtrctQty != Node.CtrctQty);
        }
Example #10
0
        private void bbi_import_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            ////导入WBS
            //if (openFileDialog1.ShowDialog() == DialogResult.OK)
            //{
            //    List<WBSline> lines = ExcelHelper.Import(openFileDialog1.FileName);
            //    lines.ForEach(m =>
            //    {
            //        m.ProjectNo = viewModel.ProjectNo;
            //    });
            //    IWBSBoq wbsBoq = new MeteringPaymentClient().GetIWBSBoqService();
            //    wbsBoq.ImportWBS(viewModel.Boq.WbsNo, lines);
            //}


            //导入关联
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                List <WbsInfo> lines     = ExcelHelper.ImportWbsInfo(openFileDialog1.FileName);
                IWBSBoq        wbsBoq    = new MeteringPaymentClient().GetIWBSBoqService();
                List <WbsInfo> leafLines = new List <WbsInfo>();
                lines.ForEach(m =>
                {
                    GetLeafNodes(leafLines, m);
                });
                ContractBoqViewModel cVModel = new ContractBoqViewModel(viewModel.ProjectNo, viewModel.ProjectName);
                cVModel.Load();
                int k = 0;
                leafLines.ForEach(m =>
                {
                    m.Details.ForEach(n =>
                    {
                        ContractBoi boi = cVModel.Boq.BoiList.Find(x => x.IItemCoe == n.BoiCode /*&& x.ItemName == n.BoiName*/);
                        if (boi != null)
                        {
                            viewModel.InsertNodeRelation(m.WbsCode, boi.ItemNo, n.Qty);
                        }
                        k++;
                    });
                });
            }


            ////更新图纸桩号
            //if (openFileDialog1.ShowDialog() == DialogResult.OK)
            //{
            //    List<WbsInfo> lines = ExcelHelper.ImportWbsInfo(openFileDialog1.FileName);
            //    IWBSBoq wbsBoq = new MeteringPaymentClient().GetIWBSBoqService();
            //    List<WbsInfo> leafLines = new List<WbsInfo>();
            //    lines.ForEach(m =>
            //    {
            //        GetLeafNodes(leafLines, m);
            //    });
            //    List<WBSLineNode> nodeList = new List<WBSLineNode>(viewModel.NodeBindingSource);
            //    leafLines.ForEach(m =>
            //    {
            //        WBSLineNode line = nodeList.Find(n => n.WbsSysCode == m.WbsCode);
            //        line.DrawNo = m.DrawNo;
            //        line.StartStakesNo = m.StartNo;
            //        line.EndStakesNo = m.EndNo;
            //    });
            //}
        }