Пример #1
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);
     }
 }
Пример #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));
            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  入库单信息
            }
        }
Пример #3
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 更新商品库存以及流水信息
            }
        }
Пример #4
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);
        }