private void SaveItem() { // 从每个选中的行中获取ID(在Grid1中定义的DataKeyNames) List <int> ids = GetSelectedDataKeyIDs(Grid1); tm_Goods goodsEntity = new tm_Goods(); WHGoodsDetail whGoodsEntity = new WHGoodsDetail(); tm_GoodsAllocationBillDetail dbEntity = new tm_GoodsAllocationBillDetail(); // 执行数据库操作 foreach (int ID in ids) { //获取库存物品信息 whGoodsEntity = Core.Container.Instance.Resolve <IServiceWHGoodsDetail>().GetEntity(ID); if (whGoodsEntity != null) { goodsEntity = Core.Container.Instance.Resolve <IServiceGoods>().GetEntity(whGoodsEntity.GoodsID); //判断是否已经添加改商品物品 if (!IsExists(ID)) { dbEntity = new tm_GoodsAllocationBillDetail(); dbEntity.OrderNO = OrderNO; dbEntity.GoodsID = whGoodsEntity.GoodsID; dbEntity.GoodsType = whGoodsEntity.GoodsTypeID; dbEntity.GoodsNumber = 1; dbEntity.GoodsPrice = goodsEntity.GoodsPrice; dbEntity.GoodsAmount = goodsEntity.GoodsPrice; dbEntity.OrderDate = DateTime.Now; Core.Container.Instance.Resolve <IServiceGoodsAllocationBillDetail>().Create(dbEntity); } } } }
/// <summary> /// 更新商品库存信息 /// </summary> /// <param name="wareHouseID">库房ID</param> /// <param name="goodsID">商品ID</param> /// <param name="goodsCount">商品数量(入库为正数,出库为负数)</param> /// <param name="goodsCount">商品单价</param> /// <param name="goodsAmount">进货金额(入库为正数,出库为负数)</param> /// <param name="isUnitChange">是否进行单位换算</param> public void UpdateWareHouseStock(int wareHouseID, int goodsID, decimal goodsCount, decimal goodsPrice, decimal goodsAmount, int isUnitChange) { //根据库房编号和商品编号获取库存信息 IList <ICriterion> qryListDetail = new List <ICriterion>(); qryListDetail.Add(Expression.Eq("GoodsID", goodsID)); qryListDetail.Add(Expression.Eq("WareHouseID", wareHouseID)); WHGoodsDetail whGoodsInfo = Core.Container.Instance.Resolve <IServiceWHGoodsDetail>().GetEntityByFields(qryListDetail); //获取商品信息 EquipmentInfo goodsInfo = Core.Container.Instance.Resolve <IServiceEquipmentInfo>().GetEntity(goodsID); if (goodsInfo != null) { //如果有商品库存信息,更新数量、金额和单价 if (whGoodsInfo != null) { whGoodsInfo.InventoryCount += goodsCount; whGoodsInfo.InventoryAmount += goodsAmount; if (whGoodsInfo.InventoryCount > 0) { whGoodsInfo.InventoryUnitPrice = Math.Round(whGoodsInfo.InventoryAmount / whGoodsInfo.InventoryCount, 2); } else { whGoodsInfo.InventoryUnitPrice = 0; } Core.Container.Instance.Resolve <IServiceWHGoodsDetail>().Update(whGoodsInfo); } else { //如果库房没有商品信息,新增商品 whGoodsInfo = new WHGoodsDetail(); whGoodsInfo.InventoryUnit = goodsInfo.EquipmentUnit; whGoodsInfo.InventoryCount += goodsCount; whGoodsInfo.InventoryAmount = goodsAmount; whGoodsInfo.InventoryUnitPrice = Math.Round(whGoodsInfo.InventoryAmount / goodsCount, 2); // whGoodsInfo.GoodsCode = goodsInfo.EquipmentCode; whGoodsInfo.GoodsID = goodsID; whGoodsInfo.GoodsTypeID = goodsInfo.EquipmentTypeID; whGoodsInfo.GoodsName = goodsInfo.EquipmentName; whGoodsInfo.WareHouseID = wareHouseID; Core.Container.Instance.Resolve <IServiceWHGoodsDetail>().Create(whGoodsInfo); } } }
/// <summary> /// 出库单出库明细处理 /// </summary> /// <param name="WHID">出库仓库ID</param> /// <param name="goodsNumber">出库商品数量</param> /// <param name="goodsID">商品ID</param> /// <param name="goodsUnit">商品单位</param> /// <param name="storageOrder">出库单信息</param> private void CreateStockInOrder(int WHID, decimal goodsNumber, int goodsID, string goodsUnit, ref WHStorageOrder storageOrder) { //如果商品出库数量大于0 if (goodsNumber > 0) { //根据收货商品ID和出库仓库ID获取库存物品信息 IList <ICriterion> qryWHList = new List <ICriterion>(); qryWHList.Add(Expression.Eq("GoodsID", goodsID)); qryWHList.Add(Expression.Eq("WareHouseID", WHID)); WHGoodsDetail whGoodsDetail = Core.Container.Instance.Resolve <IServiceWHGoodsDetail>().GetEntityByFields(qryWHList); //生成出库单商品出库明细 WHOrderGoodsDetail orderDetail = new WHOrderGoodsDetail(); orderDetail.GoodsID = goodsID; orderDetail.GoodsUnit = goodsUnit; orderDetail.OrderDate = storageOrder.OrderDate; orderDetail.OrderNO = storageOrder.OrderNO; orderDetail.GoodsNumber = goodsNumber; //获取出库单价和金额 orderDetail.GoodsUnitPrice = whGoodsDetail.InventoryUnitPrice; orderDetail.GoodTotalPrice = Math.Round(orderDetail.GoodsNumber * orderDetail.GoodsUnitPrice, 2); //含税价格(暂时不用) orderDetail.TaxAmount = 0; orderDetail.TaxPoint = 0; orderDetail.TotalPriceNoTax = 0; orderDetail.UnitPriceNoTax = 0; //保存出库明细信息 Core.Container.Instance.Resolve <IServiceWHOrderGoodsDetail>().Create(orderDetail); //更新商品变动明细信息(出库) new InventoryHelper().UpdateGoodsJournal(WHID, goodsID, OrderNO, "SH", 1 , orderDetail.GoodsNumber, orderDetail.GoodsUnitPrice , orderDetail.GoodTotalPrice, "" , orderDetail.OrderDate); //累计计算订单成本金额 storageOrder.OrderAmount += orderDetail.GoodTotalPrice; storageOrder.OrderNumber += orderDetail.GoodsNumber; //更新商品库存信息 new InventoryHelper().UpdateWareHouseStock(WHID, goodsID, goodsNumber, 0, orderDetail.GoodTotalPrice, 1); } }
private void SaveItem() { // 从每个选中的行中获取ID(在Grid1中定义的DataKeyNames) List <int> ids = GetSelectedDataKeyIDs(Grid1); WHGoodsDetail whGoodsEntity = new WHGoodsDetail(); EquipmentInfo goodsEntity = new EquipmentInfo(); EquipmentTypeInfo goodsTypeEntity = new EquipmentTypeInfo(); ReceiveOrderDetail dbEntity = new ReceiveOrderDetail(); // 执行数据库操作 foreach (int ID in ids) { //获取物品信息 whGoodsEntity = Core.Container.Instance.Resolve <IServiceWHGoodsDetail>().GetEntity(ID); if (goodsEntity != null) { whGoodsEntity.GoodsInfo = Core.Container.Instance.Resolve <IServiceEquipmentInfo>().GetEntity(whGoodsEntity.GoodsID); //获取商品类别信息 goodsTypeEntity = Core.Container.Instance.Resolve <IServiceEquipmentTypeInfo>().GetEntity(whGoodsEntity.GoodsTypeID); //判断是否已经添加改商品物品 if (!IsExists(ID)) { dbEntity = new ReceiveOrderDetail(); dbEntity.OrderNO = OrderNO; dbEntity.OrderDate = DateTime.Now; dbEntity.GoodsID = whGoodsEntity.GoodsID; dbEntity.GoodsNumber = 1; dbEntity.GoodsUnit = whGoodsEntity.InventoryUnit; dbEntity.GoodsUnitPrice = whGoodsEntity.InventoryUnitPrice; dbEntity.GoodTotalPrice = Math.Round(dbEntity.GoodsNumber * dbEntity.GoodsUnitPrice, 2); //保存领用物品信息 Core.Container.Instance.Resolve <IServiceReceiveOrderDetail>().Create(dbEntity); } } } }
/// <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); } } } } }
private void SaveItem(int isTemp) { bool IsStock = bool.Parse(ConfigurationManager.AppSettings["IsStock"]); //更新订单状态为正式订单 IList <ICriterion> qryList = new List <ICriterion>(); qryList.Add(Expression.Eq("OrderNO", OrderNO)); ReceiveOrder orderInfo = Core.Container.Instance.Resolve <IServiceReceiveOrder>().GetEntityByFields(qryList); orderInfo.OrderDate = DateTime.Parse(dpStartDate.Text); orderInfo.OrderAmount = decimal.Parse(lblAmount.Text); orderInfo.IsTemp = isTemp; orderInfo.OrderNumber = decimal.Parse(lblCount.Text); orderInfo.UserID = int.Parse(ddlSuplier.SelectedValue); orderInfo.UserName = ddlSuplier.SelectedText; orderInfo.WareHouseID = int.Parse(ddlWH.SelectedValue); orderInfo.Operator = User.Identity.Name; Core.Container.Instance.Resolve <IServiceReceiveOrder>().Update(orderInfo); //正式订单,更新入库信息及流水信息等 if (isTemp == 0) { #region 出库单信息 if (IsStock) { // 出库单信息 WHOutBoundOrder storageOrder = new WHOutBoundOrder(); storageOrder.BOrderNO = OrderNO; storageOrder.Operator = User.Identity.Name; storageOrder.OrderAmount = orderInfo.OrderAmount; storageOrder.OrderNumber = orderInfo.OrderNumber; storageOrder.OrderDate = orderInfo.OrderDate; storageOrder.OrderNO = string.Format("CK{0}", DateTime.Now.ToString("yyyyMMddHHmmss")); storageOrder.OrderType = 2; storageOrder.OutOrderNO = ""; storageOrder.Remark = "领用出库"; storageOrder.SuplierID = orderInfo.UserID; storageOrder.WareHouseID = orderInfo.WareHouseID; // 出库商品明细信息 IList <ICriterion> qryListDetail = new List <ICriterion>(); qryListDetail.Add(Expression.Eq("OrderNO", OrderNO)); Order[] orderList = new Order[1]; Order orderli = new Order("ID", true); orderList[0] = orderli; IList <ReceiveOrderDetail> list = Core.Container.Instance.Resolve <IServiceReceiveOrderDetail>().GetAllByKeys(qryList, orderList); //写入出库商品明细 foreach (ReceiveOrderDetail detail in list) { decimal amount = detail.GoodsNumber; decimal goodsAmount = 0; IList <ICriterion> qryWHList = new List <ICriterion>(); qryWHList.Add(Expression.Eq("GoodsID", detail.GoodsID)); qryWHList.Add(Expression.Eq("WareHouseID", storageOrder.WareHouseID)); WHGoodsDetail whGoodsDetail = Core.Container.Instance.Resolve <IServiceWHGoodsDetail>().GetEntityByFields(qryWHList); WHOrderGoodsDetail orderDetail = new WHOrderGoodsDetail(); orderDetail.GoodsID = detail.GoodsID; orderDetail.GoodsUnit = detail.GoodsUnit; orderDetail.OrderDate = storageOrder.OrderDate; orderDetail.OrderNO = storageOrder.OrderNO; orderDetail.GoodsNumber = amount; //获取出库单价和金额 orderDetail.GoodsUnitPrice = whGoodsDetail.InventoryUnitPrice; orderDetail.GoodTotalPrice = Math.Round(orderDetail.GoodsNumber * orderDetail.GoodsUnitPrice, 2); orderDetail.TaxAmount = 0; orderDetail.TaxPoint = 0; orderDetail.TotalPriceNoTax = 0; orderDetail.UnitPriceNoTax = 0; //保存出库明细信息 Core.Container.Instance.Resolve <IServiceWHOrderGoodsDetail>().Create(orderDetail); //更新商品变动明细信息(出库) new InventoryHelper().UpdateGoodsJournal(storageOrder.WareHouseID, detail.GoodsID, OrderNO, "LY", 2 , -orderDetail.GoodsNumber, orderDetail.GoodsUnitPrice , -orderDetail.GoodTotalPrice, "" , orderInfo.OrderDate); //累计计算订单成本金额 goodsAmount += orderDetail.GoodTotalPrice; //更新商品库存信息 new InventoryHelper().UpdateWareHouseStock(storageOrder.WareHouseID, detail.GoodsID, -detail.GoodsNumber, 0, -goodsAmount, 0); } //创建出库单信息 Core.Container.Instance.Resolve <IServiceWHOutBoundOrder>().Create(storageOrder); } #endregion 入库单信息 } }