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; } }
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(); }
/// <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; } }
/// <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(); }