Ejemplo n.º 1
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        /// <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);
                }
            }
        }
Ejemplo n.º 3
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);
     }
 }
Ejemplo n.º 4
0
        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);
                        }
                    }
                }
            }
        }
Ejemplo n.º 7
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  入库单信息
            }
        }