/// <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(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 入库单信息 } }
private void SaveItem(int isTemp) { bool IsStock = bool.Parse(ConfigurationManager.AppSettings["IsStock"]); //更新订单状态为正式订单 IList <ICriterion> qryList = new List <ICriterion>(); qryList.Add(Expression.Eq("OrderNO", OrderNO)); GoodsOrder orderInfo = Core.Container.Instance.Resolve <IServiceGoodsOrder>().GetEntityByFields(qryList); orderInfo.OrderDate = DateTime.Parse(dpStartDate.Text); orderInfo.IsTemp = isTemp; orderInfo.OrderAmount = decimal.Parse(lblAmount.Text); orderInfo.OrderNumber = decimal.Parse(lblCount.Text); orderInfo.SuplierID = int.Parse(ddlSuplier.SelectedValue); orderInfo.WareHouseID = int.Parse(ddlWH.SelectedValue); orderInfo.OrderPayType = int.Parse(ddlPay.SelectedValue); orderInfo.Remark = txtRemark.Text; orderInfo.Operator = User.Identity.Name; Core.Container.Instance.Resolve <IServiceGoodsOrder>().Update(orderInfo); //正式订单,更新入库信息及流水信息等 if (isTemp == 0) { //获取进货商品明细 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 <GoodsOrderDetail> list = Core.Container.Instance.Resolve <IServiceGoodsOrderDetail>().GetAllByKeys(qryList, orderList); #region 入库单信息 if (IsStock) { // 入库单信息 WHStorageOrder storageOrder = new WHStorageOrder(); storageOrder.BOrderNO = OrderNO; storageOrder.Operator = User.Identity.Name; storageOrder.OrderAmount = orderInfo.OrderAmount; storageOrder.OrderNumber = orderInfo.OrderNumber; storageOrder.OrderDate = orderInfo.OrderDate; storageOrder.OrderNO = string.Format("RK{0}", DateTime.Parse(dpStartDate.Text).ToString("yyyyMMddHHmmss")); storageOrder.OrderType = 1; storageOrder.OutOrderNO = ""; storageOrder.Remark = "进货入库"; storageOrder.SuplierID = orderInfo.SuplierID; storageOrder.WareHouseID = orderInfo.WareHouseID; Core.Container.Instance.Resolve <IServiceWHStorageOrder>().Create(storageOrder); //写入入库商品明细 foreach (GoodsOrderDetail detail in list) { WHOrderGoodsDetail orderDetail = new WHOrderGoodsDetail(); orderDetail.GoodsID = detail.GoodsID; orderDetail.GoodsNumber = detail.GoodsNumber; orderDetail.GoodsUnit = detail.GoodsUnit; orderDetail.GoodsUnitPrice = detail.GoodsUnitPrice; orderDetail.GoodTotalPrice = detail.GoodTotalPrice; orderDetail.OrderDate = storageOrder.OrderDate; orderDetail.OrderNO = storageOrder.OrderNO; orderDetail.TaxAmount = detail.TaxAmount; orderDetail.TaxPoint = detail.TaxPoint; orderDetail.TotalPriceNoTax = detail.TotalPriceNoTax; orderDetail.UnitPriceNoTax = detail.UnitPriceNoTax; Core.Container.Instance.Resolve <IServiceWHOrderGoodsDetail>().Create(orderDetail); } } #endregion 入库单信息 #region 更新商品库存以及流水信息 //写入入库商品明细 foreach (GoodsOrderDetail detail in list) { //更新商品库存信息 new InventoryHelper().UpdateWareHouseStock(orderInfo.WareHouseID, detail.GoodsID, detail.GoodsNumber , detail.GoodsUnitPrice, detail.GoodTotalPrice, 1); //更新商品变动明细信息(入库) new InventoryHelper().UpdateGoodsJournal(orderInfo.WareHouseID, detail.GoodsID, OrderNO, "JH", 1 , detail.GoodsNumber, detail.GoodsUnitPrice, detail.GoodTotalPrice , "", orderInfo.OrderDate); } #endregion 更新商品库存以及流水信息 } }
/// <summary> /// 调拨入库处理 /// </summary> /// <param name="WHOutBoundOrderNO">出库单号</param> /// <param name="WHStorageOrderNO">入库单号</param> /// <param name="orderInfo">调拨单信息</param> /// <returns></returns> private bool WHStorage(string WHOutBoundOrderNO, string WHStorageOrderNO, tm_GoodsAllocationBill orderInfo) { //获取入库仓库信息 WareHouse houseInfo = Core.Container.Instance.Resolve <IServiceWareHouse>().GetEntity(orderInfo.RKWareHouseID); //如果入库仓库存在 if (houseInfo != null) { // 入库单信息 WHStorageOrder storageOrder = new WHStorageOrder(); storageOrder.BOrderNO = OrderNO; storageOrder.Operator = User.Identity.Name; storageOrder.OrderAmount = orderInfo.AllotAmount; storageOrder.OrderNumber = orderInfo.AllotCount; storageOrder.OrderDate = orderInfo.OrderDate; storageOrder.OrderNO = WHStorageOrderNO; storageOrder.OrderType = 2; //2:调拨入库 storageOrder.OutOrderNO = WHOutBoundOrderNO; storageOrder.Remark = "调拨入库"; storageOrder.SuplierID = 0; storageOrder.WareHouseID = orderInfo.RKWareHouseID; Core.Container.Instance.Resolve <IServiceWHStorageOrder>().Create(storageOrder); //根据出库单号获取出库单物品明细 IList <ICriterion> qryList = new List <ICriterion>(); qryList.Add(Expression.Eq("OrderNO", WHOutBoundOrderNO)); IList <WHOrderGoodsDetail> WHOrderGoodsList = Core.Container.Instance.Resolve <IServiceWHOrderGoodsDetail>().GetAllByKeys(qryList); //写入入库商品明细 foreach (WHOrderGoodsDetail detail in WHOrderGoodsList) { #region 写入入库商品明细 WHOrderGoodsDetail orderDetail = new WHOrderGoodsDetail(); orderDetail.GoodsID = detail.GoodsID; orderDetail.ChangeNumber = detail.ChangeNumber; orderDetail.GoodsNumber = detail.GoodsNumber; orderDetail.GoodsUnit = detail.GoodsUnit; orderDetail.GoodsUnitPrice = detail.GoodsUnitPrice; orderDetail.GoodTotalPrice = detail.GoodTotalPrice; orderDetail.OrderDate = storageOrder.OrderDate; orderDetail.OrderNO = storageOrder.OrderNO; orderDetail.ChangeUnit = detail.ChangeUnit; orderDetail.TaxAmount = detail.TaxAmount; orderDetail.TaxPoint = detail.TaxPoint; orderDetail.TotalPriceNoTax = detail.TotalPriceNoTax; orderDetail.UnitPriceNoTax = detail.UnitPriceNoTax; Core.Container.Instance.Resolve <IServiceWHOrderGoodsDetail>().Create(orderDetail); #endregion 写入入库商品明细 #region 更新商品库存以及流水信息 //更新商品库存信息 new InventoryHelper().UpdateWareHouseStock(orderInfo.RKWareHouseID, detail.GoodsID, detail.GoodsNumber , detail.GoodsUnitPrice, detail.GoodTotalPrice, 0); //更新商品变动明细信息(入库) new InventoryHelper().UpdateGoodsJournal(orderInfo.RKWareHouseID, detail.GoodsID, OrderNO, "DR", 1 , detail.GoodsNumber, detail.GoodsUnitPrice, detail.GoodTotalPrice , "", storageOrder.OrderDate); #endregion 更新商品库存以及流水信息 } } else { return(false); } return(true); }