コード例 #1
0
        public void BindDoorInfo()
        {
            if (DoorID > 0)
            {
                ContractDoorInfo doorInfo = Core.Container.Instance.Resolve <IServiceContractDoorInfo>().GetEntity(DoorID);

                if (doorInfo == null)
                {
                    // 参数错误,首先弹出Alert对话框然后关闭弹出窗口
                    Alert.Show("参数错误!", String.Empty, ActiveWindow.GetHideReference());
                    return;
                }
                //合同基本信息
                txtAddress.Text           = doorInfo.GoodsLocation;
                taRemark.Text             = doorInfo.Remark;
                nbOtherAmount.Text        = doorInfo.OtherAmount.ToString();
                ddlGoodType.SelectedValue = doorInfo.TypeClass.ToString();
                //绑定物品
                BindGoods();
                ddlGood.SelectedValue      = doorInfo.GoodsID.ToString();
                tbColor.Text               = doorInfo.DoorColor;
                ddlSupply.SelectedValue    = doorInfo.SupplyID.ToString();
                ddlParts.SelectedValue     = doorInfo.LockID.ToString();
                nbHeight.Text              = doorInfo.GHeight.ToString();
                nbWide.Text                = doorInfo.GWide.ToString();
                nbCount.Text               = doorInfo.GThickness.ToString();
                tbLine.Text                = doorInfo.LineName;
                tbGlass.Text               = doorInfo.GlassRemark;
                tbModel.Text               = doorInfo.ModelName;
                ddlDirection.SelectedValue = doorInfo.DoorDirection;
                ContractID = doorInfo.ContractInfo.ID;
            }
        }
コード例 #2
0
        private void SaveItem()
        {
            ContractDoorInfo contractDoorInfo = new ContractDoorInfo();

            if (InfoID > 0)
            {
                contractDoorInfo.ContractInfo = Core.Container.Instance.Resolve <IServiceContractInfo>().GetEntity(InfoID);
            }
            contractDoorInfo.GoodsLocation = txtAddress.Text;
            contractDoorInfo.Remark        = taRemark.Text;
            contractDoorInfo.OtherAmount   = decimal.Parse(nbOtherAmount.Text);
            //商品类型及名称
            contractDoorInfo.TypeClass      = int.Parse(ddlGoodType.SelectedValue);
            contractDoorInfo.TypeName       = ddlGoodType.SelectedText;
            contractDoorInfo.GoodsID        = int.Parse(ddlGood.SelectedValue);
            contractDoorInfo.GoodsName      = ddlGood.SelectedText;
            contractDoorInfo.GStandardPrice = 0;
            contractDoorInfo.OrderNumber    = 1;
            contractDoorInfo.DoorColor      = tbColor.Text;
            contractDoorInfo.LineName       = tbLine.Text;
            contractDoorInfo.GlassRemark    = tbGlass.Text;
            contractDoorInfo.SupplyID       = int.Parse(ddlSupply.SelectedValue);
            contractDoorInfo.ModelName      = tbModel.Text;
            contractDoorInfo.DoorDirection  = ddlDirection.SelectedValue;
            //锁具
            contractDoorInfo.HardWareAmount = 0;
            contractDoorInfo.LockID         = 0;
            if (!ddlParts.SelectedValue.Equals("0"))
            {
                contractDoorInfo.LockID = int.Parse(ddlParts.SelectedValue);
                PartsInfo partsInfo = Core.Container.Instance.Resolve <IServicePartsInfo>().GetEntity(contractDoorInfo.LockID);

                //获取门收费五金总金额
                decimal hwNumber = 0;
                string  sqlHW    = string.Format(@"select isnull(sum(GoodAmount),0) as GoodAmount from ContractHandWareDetail where ContractID ={0} and IsFree=1 and OrderType=1 ", InfoID);
                DataSet dsHW     = DbHelperSQL.Query(sqlHW);
                if (dsHW.Tables[0] != null)
                {
                    hwNumber = decimal.Parse(dsHW.Tables[0].Rows[0]["GoodAmount"].ToString());
                }
                //更新门五金总价
                contractDoorInfo.HardWareAmount = hwNumber + (partsInfo != null ? partsInfo.UnitPrice : 0);
            }
            //尺寸
            contractDoorInfo.GHeight    = int.Parse(nbHeight.Text);
            contractDoorInfo.GWide      = int.Parse(nbWide.Text);
            contractDoorInfo.GThickness = int.Parse(nbCount.Text);
            /*-------------------根据基本录入尺寸信息计算超标和费用---------------------*/
            //计算面积
            contractDoorInfo.GArea = ((decimal)contractDoorInfo.GHeight / 1000) * ((decimal)contractDoorInfo.GWide / 1000);
            //计算尺寸超标和金额
            EquipmentInfo equipmentInfo = Core.Container.Instance.Resolve <IServiceEquipmentInfo>().GetEntity(contractDoorInfo.GoodsID);

            if (equipmentInfo != null)
            {
                contractDoorInfo.InstallCost          = equipmentInfo.InstallCost;
                contractDoorInfo.GStandardPrice       = equipmentInfo.UnitPrice;
                contractDoorInfo.PassPriceAmount      = 0;
                contractDoorInfo.GPrice               = equipmentInfo.UnitPrice;
                contractDoorInfo.GPassHeightAmount    = 0;
                contractDoorInfo.GPassWideAmount      = 0;
                contractDoorInfo.GPassThicknessAmount = 0;
                contractDoorInfo.GPassAreaAmount      = 0;
                // 商品单位 1:樘  2:米  3:平方米
                contractDoorInfo.GoodUnit = equipmentInfo.EquipmentUnit == "1" ? "樘" : equipmentInfo.EquipmentUnit == "2" ? "米" : "平方米";
                //计算尺寸面积超标
                contractDoorInfo.GPassHeight    = contractDoorInfo.GHeight > equipmentInfo.EHeight ? contractDoorInfo.GHeight - equipmentInfo.EHeight : 0;
                contractDoorInfo.GPassWide      = contractDoorInfo.GWide > equipmentInfo.EWide ? contractDoorInfo.GWide - equipmentInfo.EWide : 0;
                contractDoorInfo.GPassThickness = contractDoorInfo.GThickness > equipmentInfo.EThickness ? contractDoorInfo.GThickness - equipmentInfo.EThickness : 0;
                decimal standerArea = ((decimal)equipmentInfo.EHeight / 1000) * ((decimal)equipmentInfo.EWide / 1000);
                contractDoorInfo.GPassArea = contractDoorInfo.GArea > standerArea ? contractDoorInfo.GArea - standerArea : 0;
            }
            //计算各项超标金额 【超标计算 1:按公分计算 2:单价加价  3:面积加价】
            switch (equipmentInfo.PassCalcType)
            {
            case 1:         //按公分计算
                contractDoorInfo.GPassHeightAmount    = contractDoorInfo.GPassHeight / 10 * equipmentInfo.PassHeight;
                contractDoorInfo.GPassWideAmount      = contractDoorInfo.GPassWide / 10 * equipmentInfo.PassWide;
                contractDoorInfo.GPassThicknessAmount = contractDoorInfo.GPassThickness / 10 * equipmentInfo.PassThckness;
                break;

            case 2:         //单价加价
                contractDoorInfo.GPassHeightAmount    = contractDoorInfo.GPassHeight > 0 ? equipmentInfo.PassHeight : 0;
                contractDoorInfo.GPassWideAmount      = contractDoorInfo.GPassWide > 0 ? equipmentInfo.PassWide : 0;
                contractDoorInfo.GPassThicknessAmount = contractDoorInfo.GPassThickness > 0 ? equipmentInfo.PassThckness : 0;
                //计算单价加价
                contractDoorInfo.PassPriceAmount = contractDoorInfo.GPassHeightAmount + contractDoorInfo.GPassWideAmount + contractDoorInfo.GPassThicknessAmount;
                contractDoorInfo.GPrice          = contractDoorInfo.GStandardPrice + contractDoorInfo.PassPriceAmount;
                break;

            case 3:         //面积加价
                contractDoorInfo.GPassAreaAmount = contractDoorInfo.GPassArea * equipmentInfo.PassArea;
                break;
            }
            //计算商品数量 1:单位数量 2:三方周长  3:四方周长 4:面积
            switch (equipmentInfo.CalcUnitType)
            {
            case 1:         //单位数量
                contractDoorInfo.OrderNumber = 1;
                break;

            case 2:         //三方周长
                contractDoorInfo.OrderNumber = ((decimal)contractDoorInfo.GHeight * 2 + (decimal)contractDoorInfo.GWide) / 1000;
                break;

            case 3:         //四方周长
                contractDoorInfo.OrderNumber = ((decimal)contractDoorInfo.GHeight * 2 + (decimal)contractDoorInfo.GWide * 2) / 1000;
                break;

            case 4:         //面积
                contractDoorInfo.OrderNumber = contractDoorInfo.GArea;
                break;
            }
            //计算商品总价
            contractDoorInfo.PassAmount = contractDoorInfo.GPassHeightAmount
                                          + contractDoorInfo.GPassWideAmount
                                          + contractDoorInfo.GPassThicknessAmount
                                          + contractDoorInfo.GPassAreaAmount;
            contractDoorInfo.GoodsAmount = contractDoorInfo.GPrice * contractDoorInfo.OrderNumber;
            contractDoorInfo.OrderAmount = contractDoorInfo.GoodsAmount
                                           + contractDoorInfo.PassAmount
                                           + contractDoorInfo.OtherAmount
                                           + contractDoorInfo.InstallCost
                                           + contractDoorInfo.HardWareAmount;
            //保存商品信息
            Core.Container.Instance.Resolve <IServiceContractDoorInfo>().Create(contractDoorInfo);
            //更新合同门总金额及合同总金额信息
            UpdateTotalAmount(contractDoorInfo.HardWareAmount);
            //保存厂家成本信息
            CreateCostInfo();
        }
コード例 #3
0
        /// <summary>
        /// 根据基本录入尺寸信息计算超标和费用
        /// </summary>
        /// <param name="contractDoorInfo">门信息</param>
        private void CalcDoorPrice(ref ContractDoorInfo contractDoorInfo)
        {
            /*-------------------根据基本录入尺寸信息计算超标和费用---------------------*/
            //计算面积
            contractDoorInfo.GArea = ((decimal)contractDoorInfo.GHeight / 1000) * ((decimal)contractDoorInfo.GWide / 1000);
            //计算尺寸超标和金额
            EquipmentInfo equipmentInfo = Core.Container.Instance.Resolve <IServiceEquipmentInfo>().GetEntity(contractDoorInfo.GoodsID);

            if (equipmentInfo != null)
            {
                // 商品单位 1:樘  2:米  3:平方米
                contractDoorInfo.GoodUnit = equipmentInfo.EquipmentUnit == "1" ? "樘" : equipmentInfo.EquipmentUnit == "2" ? "米" : "平方米";
                //计算尺寸面积超标
                contractDoorInfo.GPassHeight    = contractDoorInfo.GHeight > equipmentInfo.EHeight ? contractDoorInfo.GHeight - equipmentInfo.EHeight : 0;
                contractDoorInfo.GPassWide      = contractDoorInfo.GWide > equipmentInfo.EWide ? contractDoorInfo.GWide - equipmentInfo.EWide : 0;
                contractDoorInfo.GPassThickness = contractDoorInfo.GThickness > equipmentInfo.EThickness ? contractDoorInfo.GThickness - equipmentInfo.EThickness : 0;
                decimal standerArea = ((decimal)equipmentInfo.EHeight / 1000) * ((decimal)equipmentInfo.EWide / 1000);
                contractDoorInfo.GPassArea = contractDoorInfo.GArea > standerArea ? contractDoorInfo.GArea - standerArea : 0;
            }
            //计算各项超标金额 【超标计算 1:按公分计算 2:单价加价  3:面积加价】
            switch (equipmentInfo.PassCalcType)
            {
            case 1:         //按公分计算
                contractDoorInfo.GPassHeightAmount    = contractDoorInfo.GPassHeight / 10 * equipmentInfo.PassHeight;
                contractDoorInfo.GPassWideAmount      = contractDoorInfo.GPassWide / 10 * equipmentInfo.PassWide;
                contractDoorInfo.GPassThicknessAmount = contractDoorInfo.GPassThickness / 10 * equipmentInfo.PassThckness;
                break;

            case 2:         //单价加价
                contractDoorInfo.GPassHeightAmount    = contractDoorInfo.GPassHeight > 0 ? equipmentInfo.PassHeight : 0;
                contractDoorInfo.GPassWideAmount      = contractDoorInfo.GPassWide > 0 ? equipmentInfo.PassWide : 0;
                contractDoorInfo.GPassThicknessAmount = contractDoorInfo.GPassThickness > 0 ? equipmentInfo.PassThckness : 0;
                //计算单价加价
                contractDoorInfo.PassPriceAmount = contractDoorInfo.GPassHeightAmount + contractDoorInfo.GPassWideAmount + contractDoorInfo.GPassThicknessAmount;
                contractDoorInfo.GPrice          = contractDoorInfo.GStandardPrice + contractDoorInfo.PassPriceAmount;
                break;

            case 3:         //面积加价
                contractDoorInfo.GPassAreaAmount = contractDoorInfo.GPassArea * equipmentInfo.PassArea;
                break;
            }
            //计算商品数量 1:单位数量 2:三方周长  3:四方周长 4:面积
            switch (equipmentInfo.CalcUnitType)
            {
            case 1:         //单位数量
                contractDoorInfo.OrderNumber = 1;
                break;

            case 2:         //三方周长
                contractDoorInfo.OrderNumber = ((decimal)contractDoorInfo.GHeight * 2 + (decimal)contractDoorInfo.GWide) / 1000;
                break;

            case 3:         //四方周长
                contractDoorInfo.OrderNumber = ((decimal)contractDoorInfo.GHeight * 2 + (decimal)contractDoorInfo.GWide * 2) / 1000;
                break;

            case 4:         //面积
                contractDoorInfo.OrderNumber = contractDoorInfo.GArea;
                break;
            }
        }
コード例 #4
0
        /// <summary>
        /// 主材单价及发货数量编辑
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void gdCostInfo_AfterEdit(object sender, GridAfterEditEventArgs e)
        {
            Dictionary <int, Dictionary <string, object> > modifiedDict = gdCostInfo.GetModifiedDict();

            foreach (int rowIndex in modifiedDict.Keys)
            {
                //根据绑定列的记录编号,获取发货物品信息和物品基本信息
                int rowID = Convert.ToInt32(gdCostInfo.DataKeys[rowIndex][0]);
                ContractDoorInfo contractDoorInfo = Core.Container.Instance.Resolve <IServiceContractDoorInfo>().GetEntity(rowID);
                //修改高度
                if (modifiedDict[rowIndex].Keys.Contains("GHeight"))
                {
                    contractDoorInfo.GHeight = Convert.ToInt32(modifiedDict[rowIndex]["GHeight"]);
                    //计算超标
                    CalcDoorPrice(ref contractDoorInfo);
                }
                //修改宽度
                if (modifiedDict[rowIndex].Keys.Contains("GWide"))
                {
                    contractDoorInfo.GWide = Convert.ToInt32(modifiedDict[rowIndex]["GWide"]);
                    //计算超标
                    CalcDoorPrice(ref contractDoorInfo);
                }
                //修改厚度
                if (modifiedDict[rowIndex].Keys.Contains("GThickness"))
                {
                    contractDoorInfo.GThickness = Convert.ToInt32(modifiedDict[rowIndex]["GThickness"]);
                    //计算超标
                    CalcDoorPrice(ref contractDoorInfo);
                }
                //修改五金费用
                if (modifiedDict[rowIndex].Keys.Contains("HardWareAmount"))
                {
                    contractDoorInfo.HardWareAmount = Convert.ToDecimal(modifiedDict[rowIndex]["HardWareAmount"]);
                }
                //修改超标加价
                if (modifiedDict[rowIndex].Keys.Contains("PassAmount"))
                {
                    contractDoorInfo.PassAmount = Convert.ToDecimal(modifiedDict[rowIndex]["PassAmount"]);
                }
                //修改标准单价
                if (modifiedDict[rowIndex].Keys.Contains("GStandardPrice"))
                {
                    contractDoorInfo.GStandardPrice = Convert.ToDecimal(modifiedDict[rowIndex]["GStandardPrice"]);
                    //计算最终单价和金额
                    contractDoorInfo.GPrice      = contractDoorInfo.GStandardPrice + contractDoorInfo.PassPriceAmount;
                    contractDoorInfo.GoodsAmount = contractDoorInfo.GPrice * contractDoorInfo.OrderNumber;
                }
                //修改最终单价
                if (modifiedDict[rowIndex].Keys.Contains("GPrice"))
                {
                    contractDoorInfo.GPrice = Convert.ToDecimal(modifiedDict[rowIndex]["GPrice"]);
                    //计算标准单价和金额
                    contractDoorInfo.GStandardPrice = contractDoorInfo.GPrice - contractDoorInfo.PassPriceAmount;
                    contractDoorInfo.GoodsAmount    = contractDoorInfo.GPrice * contractDoorInfo.OrderNumber;
                }
                //修改备注
                if (modifiedDict[rowIndex].Keys.Contains("Remark"))
                {
                    contractDoorInfo.Remark = modifiedDict[rowIndex]["Remark"].ToString();
                }
                //修改型号
                if (modifiedDict[rowIndex].Keys.Contains("ModelName"))
                {
                    contractDoorInfo.ModelName = modifiedDict[rowIndex]["ModelName"].ToString();
                }
                //修改颜色
                if (modifiedDict[rowIndex].Keys.Contains("DoorColor"))
                {
                    contractDoorInfo.DoorColor = modifiedDict[rowIndex]["DoorColor"].ToString();
                }
                //修改商品金额
                if (modifiedDict[rowIndex].Keys.Contains("GoodsAmount"))
                {
                    contractDoorInfo.GoodsAmount = Convert.ToDecimal(modifiedDict[rowIndex]["GoodsAmount"].ToString());
                }
                //修改运输安装
                if (modifiedDict[rowIndex].Keys.Contains("InstallCost"))
                {
                    contractDoorInfo.InstallCost = Convert.ToDecimal(modifiedDict[rowIndex]["InstallCost"].ToString());
                }
                //修改五金费用
                if (modifiedDict[rowIndex].Keys.Contains("HardWareAmount"))
                {
                    contractDoorInfo.HardWareAmount = Convert.ToDecimal(modifiedDict[rowIndex]["HardWareAmount"].ToString());
                }
                //修改其他金额
                if (modifiedDict[rowIndex].Keys.Contains("OtherAmount"))
                {
                    contractDoorInfo.OtherAmount = Convert.ToDecimal(modifiedDict[rowIndex]["OtherAmount"].ToString());
                }
                //修改线条
                if (modifiedDict[rowIndex].Keys.Contains("LineName"))
                {
                    contractDoorInfo.LineName = modifiedDict[rowIndex]["LineName"].ToString();
                }
                //修改玻璃款式
                if (modifiedDict[rowIndex].Keys.Contains("GlassRemark"))
                {
                    contractDoorInfo.GlassRemark = modifiedDict[rowIndex]["GlassRemark"].ToString();
                }

                //计算商品总价
                //contractDoorInfo.PassAmount = contractDoorInfo.GPassHeightAmount
                //                          + contractDoorInfo.GPassWideAmount
                //                          + contractDoorInfo.GPassThicknessAmount
                //                          + contractDoorInfo.GPassAreaAmount;
                contractDoorInfo.OrderAmount = contractDoorInfo.GoodsAmount
                                               + contractDoorInfo.PassAmount
                                               + contractDoorInfo.OtherAmount
                                               + contractDoorInfo.InstallCost
                                               + contractDoorInfo.HardWareAmount;
                //更新订单明细
                Core.Container.Instance.Resolve <IServiceContractDoorInfo>().Update(contractDoorInfo);
            }
            //更新订单总金额
            UpdateOrderAmount();
            //重新加载订单发货信息
            BindOrderDetail();
        }