private void GetOrderInfo() { WHStorageOrder orderInfo = Core.Container.Instance.Resolve <IServiceWHStorageOrder>().GetEntity(OrderID); lblAmount.Text = orderInfo.OrderAmount.ToString(); lblCount.Text = orderInfo.OrderNumber.ToString(); lblOrderNo.Text = orderInfo.OrderNO; lblStartDate.Text = orderInfo.OrderDate.ToString(); lblTypeName.Text = orderInfo.Remark; lblBussinessOrder.Text = orderInfo.BOrderNO; //ddlPay.SelectedValue = orderInfo.OrderType.ToString(); //ddlSuplier.SelectedValue = orderInfo.SuplierID.ToString(); ddlWH.SelectedValue = orderInfo.WareHouseID.ToString(); //绑定商品明细 BindGrid(orderInfo.OrderNO); }
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); }
/// <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); } }
/// <summary> /// 订单材料入库处理 /// </summary> /// <param name="whID">入库仓库ID</param> /// <param name="orderInfo">收货单信息</param> private void OrderStockInPress(int whID, ContractOrderInfo orderInfo) { //获取入库仓库信息 WareHouse houseInfo = Core.Container.Instance.Resolve <IServiceWareHouse>().GetEntity(whID); // 生成入库单信息 WHStorageOrder storageOrder = new WHStorageOrder(); storageOrder.BOrderNO = OrderNO; storageOrder.Operator = User.Identity.Name; storageOrder.OrderAmount = 0; storageOrder.OrderNumber = 0; storageOrder.OrderDate = DateTime.Now; storageOrder.OrderNO = string.Format("RK{0}", DateTime.Now.ToString("yyyyMMddHHmmss")); storageOrder.OrderType = 2; //storageOrder.SuplierID = orderInfo.ContractInfo.CustomerID; storageOrder.WareHouseID = houseInfo.ID; storageOrder.OutOrderNO = ""; storageOrder.Remark = "收货入库"; #region 收货单入库明细处理 /*---- 主材出库明细处理 ----*/ // 1、获取订单商品主材明细,生成入库商品明细信息(获取入库不需要经过维修分拣步骤的材料) IList <ICriterion> qryListDetail = new List <ICriterion>(); qryListDetail.Add(Expression.Eq("OrderNO", OrderNO)); qryListDetail.Add(Expression.Eq("WareHouseID", whID)); qryListDetail.Add(Expression.Eq("IsStockByRepaired", 0)); IList <ContractOrderDetail> list = Core.Container.Instance.Resolve <IServiceContractOrderDetail>().GetAllByKeys(qryListDetail); //写入出库商品明细 foreach (ContractOrderDetail detail in list) { //出库单出库明细处理 CreateStockInOrder(whID, detail.GoodsNumber, detail.GoodsID, detail.GoodsUnit, ref storageOrder); } /*---- 辅材出库明细处理 ----*/ //获取订单商品辅材明细,生成出库商品明细信息 string sql = string.Format(@"select GoodsID,GoodsUnit,sum(GoodsNumber) as GoodsNumber from ContractOrderSecondaryDetail where OrderNO ='{0}' and WareHouseID ={1} group by GoodsID,GoodsUnit " , OrderNO, whID); DataSet ds = DbHelperSQL.Query(sql); if (ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0) { //写入出库商品明细 foreach (DataRow detail in ds.Tables[0].Rows) { //出库单出库明细处理 CreateStockInOrder(whID, decimal.Parse(detail["GoodsNumber"].ToString()) , int.Parse(detail["GoodsID"].ToString()) , detail["GoodsUnit"].ToString() , ref storageOrder); } } // 2、获取订单商品主材明细,生成入库商品明细信息(获取入库需要经过维修分拣步骤的材料) string sqlGoods = string.Format(@"select GoodTypeID, sum(GoodsNumber) as GoodsNumber from ContractOrderDetail where OrderNO ='{0}' and WareHouseID={1} and IsStockByRepaired=1 group by GoodTypeID ", OrderNO, whID); DataSet dsGoods = DbHelperSQL.Query(sqlGoods); //写入带分拣商品明细 if (ds.Tables[0] != null) { foreach (DataRow detail in dsGoods.Tables[0].Rows) { SortingGoodsDetail sortingGoods = new SortingGoodsDetail(); sortingGoods.GoodsNumber = decimal.Parse(detail["GoodsNumber"].ToString()); sortingGoods.GoodTypeID = int.Parse(detail["GoodTypeID"].ToString()); sortingGoods.OrderDate = DateTime.Now; sortingGoods.OrderType = 1; sortingGoods.OrderNO = OrderNO; //写入分拣明细处理 Core.Container.Instance.Resolve <IServiceSortingGoodsDetail>().Create(sortingGoods); //更新分拣总数 qryListDetail = new List <ICriterion>(); qryListDetail.Add(Expression.Eq("GoodTypeID", sortingGoods.GoodTypeID)); SortingGoodsInfo SGoodsInfo = Core.Container.Instance.Resolve <IServiceSortingGoodsInfo>().GetEntityByFields(qryListDetail); if (SGoodsInfo != null) { SGoodsInfo.GoodsNumber += sortingGoods.GoodsNumber; SGoodsInfo.UpdateDate = sortingGoods.OrderDate; Core.Container.Instance.Resolve <IServiceSortingGoodsInfo>().Update(SGoodsInfo); } else { SGoodsInfo = new SortingGoodsInfo(); SGoodsInfo.GoodsNumber = sortingGoods.GoodsNumber; SGoodsInfo.UpdateDate = sortingGoods.OrderDate; SGoodsInfo.GoodTypeID = sortingGoods.GoodTypeID; SGoodsInfo.GoodsTypeName = ""; Core.Container.Instance.Resolve <IServiceSortingGoodsInfo>().Create(SGoodsInfo); } } } #endregion 收货单入库明细处理 //创建入库单信息 Core.Container.Instance.Resolve <IServiceWHStorageOrder>().Create(storageOrder); }