/// <summary> /// 更新辅材信息 /// </summary> /// <param name="objInfo">收货主材信息</param> private void UpdateSecondaryDetail(ContractOrderDetail objInfo) { //获取主材相关辅材信息 IList <ICriterion> qryList = new List <ICriterion>(); qryList = new List <ICriterion>(); qryList.Add(Expression.Eq("ParentEquipmentID", objInfo.GoodsID)); qryList.Add(Expression.Eq("EquipmentType", "2")); //IList<EquipmentAssortInfo> assortInfolist = Core.Container.Instance.Resolve<IServiceEquipmentAssortInfo>().GetAllByKeys(qryList); ////计算并更新辅材信息 //foreach (EquipmentAssortInfo assortInfo in assortInfolist) //{ // //获取收货辅材信息 // qryList = new List<ICriterion>(); // qryList.Add(Expression.Eq("OrderNO", OrderNO)); // qryList.Add(Expression.Eq("MainGoodsID", objInfo.GoodsID)); // qryList.Add(Expression.Eq("GoodsID", assortInfo.EquipmentID)); // ContractOrderSecondaryDetail detail = Core.Container.Instance.Resolve<IServiceContractOrderSecondaryDetail>().GetEntityByFields(qryList); // if (detail != null) // { // //更新辅材信息 // detail.FormerlyGoodsNumber = Math.Floor(objInfo.GoodsNumber / assortInfo.EquipmentCount) * assortInfo.AssortCount; // detail.GoodsNumber = detail.FormerlyGoodsNumber - detail.PayForNumber; // detail.GoodsTotalPrice = detail.PayForNumber * detail.GoodsUnitPrice; // Core.Container.Instance.Resolve<IServiceContractOrderSecondaryDetail>().Update(detail); // } //} }
/// <summary> /// 主材单价及发货数量编辑 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Grid1_AfterEdit(object sender, GridAfterEditEventArgs e) { Dictionary <int, Dictionary <string, object> > modifiedDict = Grid1.GetModifiedDict(); foreach (int rowIndex in modifiedDict.Keys) { //根据绑定列的记录编号,获取发货物品信息和物品基本信息 int rowID = Convert.ToInt32(Grid1.DataKeys[rowIndex][0]); ContractOrderDetail objInfo = Core.Container.Instance.Resolve <IServiceContractOrderDetail>().GetEntity(rowID); objInfo.GoodsInfo = Core.Container.Instance.Resolve <IServiceEquipmentInfo>().GetEntity(objInfo.GoodsID); //修改发货数量 if (modifiedDict[rowIndex].Keys.Contains("FixGoodsNumber")) { objInfo.GoodsNumber = objInfo.FormerlyGoodsNumber + Convert.ToDecimal(modifiedDict[rowIndex]["FixGoodsNumber"]); objInfo.FixGoodsNumber = Convert.ToDecimal(modifiedDict[rowIndex]["FixGoodsNumber"]); objInfo.NotOffsetNumber = objInfo.FormerlyGoodsNumber + Convert.ToDecimal(modifiedDict[rowIndex]["FixGoodsNumber"]); } //计算并更新计价数量及重量 if (objInfo.PayUnit == 1) { //按计价单位计价,计价数量=商品规格*发货数量 // objInfo.GoodCalcPriceNumber = objInfo.GoodsInfo.Standard * objInfo.GoodsNumber; } else { //按出库数量计价,计价数量=发货数量 objInfo.GoodCalcPriceNumber = objInfo.GoodsNumber; } //更新订单明细 Core.Container.Instance.Resolve <IServiceContractOrderDetail>().Update(objInfo); } //重新加载订单发货信息 BindOrderDetail(); }
private bool IsExists(int goodsID) { IList <ICriterion> qryList = new List <ICriterion>(); qryList.Add(Expression.Eq("OrderNO", OrderNO)); qryList.Add(Expression.Eq("GoodsID", goodsID)); ContractOrderDetail objInfo = Core.Container.Instance.Resolve <IServiceContractOrderDetail>().GetEntityByFields(qryList); return(objInfo != null ? true : false); }
/// <summary> /// 删除收货物品信息 /// </summary> /// <param name="id">物品ID</param> private void DeleteDetail(int id) { ContractOrderDetail contractOrderDetail = Core.Container.Instance.Resolve <IServiceContractOrderDetail>().GetEntity(id); //删除主材信息 Core.Container.Instance.Resolve <IServiceContractOrderDetail>().Delete(id); //删除辅材信息 string sqlWhere = string.Format(" OrderNO='{0}' AND MainGoodsID={1} ", OrderNO, contractOrderDetail.GoodsID); Core.Container.Instance.Resolve <IServiceContractOrderSecondaryDetail>().DelelteAll(sqlWhere); }
/// <summary> /// 主材发货数量编辑 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Grid1_AfterEdit(object sender, GridAfterEditEventArgs e) { Dictionary <int, Dictionary <string, object> > modifiedDict = Grid1.GetModifiedDict(); foreach (int rowIndex in modifiedDict.Keys) { //根据绑定列的记录编号,获取发货物品信息和物品基本信息 int rowID = Convert.ToInt32(Grid1.DataKeys[rowIndex][0]); ContractOrderDetail objInfo = Core.Container.Instance.Resolve <IServiceContractOrderDetail>().GetEntity(rowID); objInfo.GoodsInfo = Core.Container.Instance.Resolve <IServiceEquipmentInfo>().GetEntity(objInfo.GoodsID); //修改发货数量 if (modifiedDict[rowIndex].Keys.Contains("GoodsNumber")) { objInfo.GoodsNumber = Convert.ToDecimal(modifiedDict[rowIndex]["GoodsNumber"]); //最终发货数量 objInfo.FormerlyGoodsNumber = Convert.ToDecimal(modifiedDict[rowIndex]["GoodsNumber"]); //原始发货数量 objInfo.NotOffsetNumber = Convert.ToDecimal(modifiedDict[rowIndex]["GoodsNumber"]); //商品待还数量 //更新辅材信息 UpdateSecondaryDetail(objInfo); } //计算并更新计价数量及重量 if (objInfo.PayUnit == 1) { //按计价单位计价,计价数量=商品规格*发货数量 // objInfo.GoodCalcPriceNumber = objInfo.GoodsInfo.Standard * objInfo.GoodsNumber; } else { //按出库数量计价,计价数量=发货数量 objInfo.GoodCalcPriceNumber = objInfo.GoodsNumber; } //计算客户、员工和司机的发货商品重量 //objInfo.GoodsCustomerWeight = objInfo.GoodsInfo.Standard * objInfo.GoodsNumber / objInfo.GoodsInfo.CustomerUnit; //objInfo.GoodsDriverWeight = objInfo.GoodsInfo.Standard * objInfo.GoodsNumber / objInfo.GoodsInfo.DriverUnit; //objInfo.GoodsStaffWeight = objInfo.GoodsInfo.Standard * objInfo.GoodsNumber / objInfo.GoodsInfo.StaffUnit; ////更新订单明细 Core.Container.Instance.Resolve <IServiceContractOrderDetail>().Update(objInfo); //更新费用信息 new ContractOrderBase().CalcOrderCost(OrderNO); //CalcOrderCost(); } //重新加载订单发货信息 BindOrderDetail(); }
/// <summary> /// 创建收货单辅材信息 /// </summary> /// <param name="dbEntity">收货单主材信息</param> /// <param name="priceSetInfo">合同价格套系</param> /// <param name="whGoodsEntity">库存物品信息</param> private void CreateSHSecondaryDetail(ContractOrderDetail dbEntity, PriceSetInfo priceSetInfo, WHGoodsDetail whGoodsEntity) { IList <ICriterion> qryList = new List <ICriterion>(); //获取主材相关辅材信息 qryList = new List <ICriterion>(); qryList.Add(Expression.Eq("ParentEquipmentID", whGoodsEntity.GoodsID)); qryList.Add(Expression.Eq("EquipmentType", "2")); //IList<EquipmentAssortInfo> assortInfolist = Core.Container.Instance.Resolve<IServiceEquipmentAssortInfo>().GetAllByKeys(qryList); ////计算并保存辅材信息 //foreach (EquipmentAssortInfo assortInfo in assortInfolist) //{ // //判断辅材是否入库要算量 // if (assortInfo.IsInCalcNumber == 1) // { // //获取辅材物品基本信息 // EquipmentInfo equipmentInfo = Core.Container.Instance.Resolve<IServiceEquipmentInfo>().GetEntity(assortInfo.EquipmentID); // //创建辅材信息 // ContractOrderSecondaryDetail detail = new ContractOrderSecondaryDetail(); // detail.GoodsID = assortInfo.EquipmentID; // detail.MainGoodsID = whGoodsEntity.GoodsID; // detail.GoodsNumber = Math.Floor(1 / assortInfo.EquipmentCount) * assortInfo.AssortCount; // detail.FormerlyGoodsNumber = Math.Floor(1 / assortInfo.EquipmentCount) * assortInfo.AssortCount; // detail.PayForNumber = 0; // detail.GoodsUnit = equipmentInfo.EquipmentUnit; // detail.GoodsUnitPrice = 0; // detail.IsShow = 0; // //判断辅材收货时是否计算金额买赔 // if (assortInfo.IsInCalcPrice == 1) // { // /*-------------------获取价格-------------------*/ // //获取主材类别,根据类别的报价策略获取价格 // EquipmentTypeInfo equipmentTypeInfo = Core.Container.Instance.Resolve<IServiceEquipmentTypeInfo>().GetEntity(equipmentInfo.EquipmentTypeID); // //获取价格 // qryList = new List<ICriterion>(); // qryList.Add(Expression.Eq("SetID", priceSetInfo.ID)); // // 报价类型 1:按类别统计报价 2:按物品分别报价 3:不参与合同报价 // //if (equipmentTypeInfo.PriceSetType == 1) // //{ // // qryList.Add(Expression.Eq("EquipmentID", equipmentInfo.EquipmentTypeID)); // //} // //if (equipmentTypeInfo.PriceSetType == 2) // //{ // // qryList.Add(Expression.Eq("EquipmentID", equipmentInfo.ID)); // //} // //获取合同价格设置 // PriceSetGoodsInfo priceSetGoodsInfo1 = Core.Container.Instance.Resolve<IServicePriceSetGoodsInfo>().GetEntityByFields(qryList); // if (priceSetGoodsInfo1 != null) // { // detail.GoodsUnitPrice = priceSetGoodsInfo1.UnitPrice; // } // else // { // detail.GoodsUnitPrice = equipmentInfo.UnitPrice; // } // detail.IsShow = 1; // } // detail.GoodsTotalPrice = detail.GoodsNumber * detail.GoodsUnitPrice; // detail.IsCalcNumber = assortInfo.IsInCalcNumber; // detail.IsCalcPrice = assortInfo.IsInCalcPrice; // detail.OrderDate = dbEntity.OrderDate; // detail.OrderNO = OrderNO; // detail.OrderType = OrderType; // detail.WareHouseID = int.Parse(ddlWH.SelectedValue); // //保存收货辅材信息 // Core.Container.Instance.Resolve<IServiceContractOrderSecondaryDetail>().Create(detail); // } //} }
private void SaveItem() { // 从每个选中的行中获取ID(在Grid1中定义的DataKeyNames) List <int> ids = GetSelectedDataKeyIDs(Grid1); WHGoodsDetail whGoodsEntity = new WHGoodsDetail(); ContractOrderDetail dbEntity = new ContractOrderDetail(); IList <ICriterion> qryList = new List <ICriterion>(); PriceSetInfo priceSetInfo = new PriceSetInfo(); //获取合同信息 ContractInfo contractInfo = Core.Container.Instance.Resolve <IServiceContractInfo>().GetEntity(ContractID); // 执行数据库操作 foreach (int ID in ids) { //获取物品信息 whGoodsEntity = Core.Container.Instance.Resolve <IServiceWHGoodsDetail>().GetEntity(ID); if (whGoodsEntity != null) { whGoodsEntity.GoodsInfo = Core.Container.Instance.Resolve <IServiceEquipmentInfo>().GetEntity(whGoodsEntity.GoodsID); //判断是否已经添加改商品物品 if (whGoodsEntity.GoodsInfo != null && !IsExists(whGoodsEntity.GoodsID)) { #region 主材 dbEntity = new ContractOrderDetail(); dbEntity.OrderNO = OrderNO; dbEntity.OrderDate = DateTime.Now; dbEntity.GoodsID = whGoodsEntity.GoodsID; dbEntity.GoodTypeID = whGoodsEntity.GoodsTypeID; dbEntity.GoodsNumber = 1; dbEntity.FormerlyGoodsNumber = 1; dbEntity.FixGoodsNumber = 0; dbEntity.GoodsUnit = whGoodsEntity.InventoryUnit; //dbEntity.GoodsCalcUnit = whGoodsEntity.GoodsInfo.CalcPriceUnit; //dbEntity.NotOffsetNumber = dbEntity.GoodsNumber; //dbEntity.GoodCalcPriceNumber = dbEntity.GoodsNumber * whGoodsEntity.GoodsInfo.Standard; //dbEntity.PayUnit = whGoodsEntity.GoodsInfo.PayUnit; /*-------------------获取价格-------------------*/ //获取主材类别,根据类别的报价策略获取价格 EquipmentTypeInfo equipmentTypeInfo = Core.Container.Instance.Resolve <IServiceEquipmentTypeInfo>().GetEntity(whGoodsEntity.GoodsInfo.EquipmentTypeID); //dbEntity.IsStockByRepaired = equipmentTypeInfo.IsStockByRepaired; //priceSetInfo = Core.Container.Instance.Resolve<IServicePriceSetInfo>().GetEntity(contractInfo.PriceSetID); qryList = new List <ICriterion>(); qryList.Add(Expression.Eq("SetID", priceSetInfo.ID)); // 报价类型 1:按类别统计报价 2:按物品分别报价 3:不参与合同报价 //if (equipmentTypeInfo.PriceSetType == 1) //{ // qryList.Add(Expression.Eq("EquipmentID", whGoodsEntity.GoodsInfo.EquipmentTypeID)); //} //if (equipmentTypeInfo.PriceSetType == 2) //{ // qryList.Add(Expression.Eq("EquipmentID", whGoodsEntity.GoodsID)); //} PriceSetGoodsInfo priceSetGoodsInfo = Core.Container.Instance.Resolve <IServicePriceSetGoodsInfo>().GetEntityByFields(qryList); if (priceSetGoodsInfo != null) { dbEntity.GoodsUnitPrice = priceSetGoodsInfo.DailyRents; //判断物品费用是日租金还是现金买赔 //if (whGoodsEntity.GoodsInfo.IsPayNow == 1) //{ // dbEntity.GoodsUnitPrice = priceSetGoodsInfo.UnitPrice; //} } else { // dbEntity.GoodsUnitPrice = whGoodsEntity.GoodsInfo.DailyRents; //判断物品费用是日租金还是现金买赔 //if (whGoodsEntity.GoodsInfo.IsPayNow == 1) //{ // dbEntity.GoodsUnitPrice = whGoodsEntity.GoodsInfo.UnitPrice; //} } dbEntity.NotOffsetNumber = 1; dbEntity.WareHouseID = int.Parse(ddlWH.SelectedValue); //保存领用主材信息 Core.Container.Instance.Resolve <IServiceContractOrderDetail>().Create(dbEntity); #endregion 主材 //辅材列表 if (OrderType == 1) { //创建发货单辅材信息 CreateFHSecondaryDetail(dbEntity, priceSetInfo, whGoodsEntity); } else { //创建收货单辅材信息 CreateSHSecondaryDetail(dbEntity, priceSetInfo, whGoodsEntity); } } } } }