コード例 #1
0
        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);
        }
コード例 #2
0
        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 更新商品库存以及流水信息
            }
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
 /// <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);
     }
 }
コード例 #5
0
        /// <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);
        }