Esempio n. 1
0
 /// <summary>
 ///创建一个以已经入库的入库单
 /// </summary>
 /// <param name="model">入库实体</param>
 /// <param name="productLend">借货单 明细备注信息为对应的当前还货数量</param>
 /// <returns></returns>
 /// <remarks>2013-07-23 周唐炬 创建</remarks>
 private void CreateInStock(WhStockIn model, WhProductLend productLend)
 {
     if (null == productLend.ItemList || productLend.ItemList.Count <= 0)
     {
         return;
     }
     //来源编号为借货单编号
     model.SourceSysNO  = productLend.SysNo;
     model.Status       = (int)WarehouseStatus.入库单状态.已入库;
     model.SourceType   = (int)WarehouseStatus.入库单据类型.借货单;
     model.IsPrinted    = (int)WarehouseStatus.是否已经打印拣货单.否;
     model.DeliveryType = (int)WarehouseStatus.入库物流方式.还货;
     model.CreatedDate  = model.LastUpdateDate = DateTime.Now;
     model.ItemList     = new List <WhStockInItem>();
     foreach (var item in productLend.ItemList)
     {
         model.ItemList.Add(new WhStockInItem
         {
             CreatedBy           = model.CreatedBy,
             CreatedDate         = DateTime.Now,
             LastUpdateBy        = model.LastUpdateBy,
             LastUpdateDate      = DateTime.Now,
             ProductName         = item.ProductName,
             ProductSysNo        = item.ProductSysNo,
             SourceItemSysNo     = item.SysNo,              //记录入库单明细来源单号(借货单明细编号)
             StockInQuantity     = int.Parse(item.Remarks), //备注信息是当前还货数量,是一个中转参数 2014-04-08 朱成果
             RealStockInQuantity = int.Parse(item.Remarks)  //备注信息是当前还货数量,是一个中转参数 2014-04-08 朱成果
         });
     }
     InStockBo.Instance.CreateStockIn(model);
 }
Esempio n. 2
0
        /// <summary>
        /// 商品入库
        /// </summary>
        /// <param name="model">入库单实体</param>
        /// <param name="user">操作人</param>
        /// <returns>返回操作状态(Result.StatusCode大于等于0成功,小于0失败)</returns>
        /// <remarks>2013-06-14 周唐炬 创建</remarks>
        private void ItemInStock(WhStockIn model, SyUser user)
        {
            if (model == null || model.ItemList == null || !model.ItemList.Any())
            {
                return;
            }
            model.ItemList.ForEach(x =>
            {
                #region 注释
                //var data = IInStockDao.Instance.GetWhStockInItem(x.SysNo);
                //x.SourceItemSysNo = data.SourceItemSysNo;
                //if (data == null)
                //{
                //    throw new HytException(string.Format("该入库{0}无效!", x.ProductName));
                //}
                //var count = data.RealStockInQuantity + x.RealStockInQuantity;
                //if (count > data.StockInQuantity)
                //{
                //    throw new HytException("实际商品入库数量总和超出商品入库数量,请检查!");
                //}
                //data.RealStockInQuantity = count;
                //data.LastUpdateBy = user.SysNo;
                //data.LastUpdateDate = DateTime.Now;
                //UpdateStockInItem(data);
                #endregion

                var data          = IInStockDao.Instance.GetWhStockInItem(x.SysNo);
                x.SourceItemSysNo = data.SourceItemSysNo;
                if (data == null)
                {
                    throw new HytException(string.Format("该入库{0}无效!", x.ProductName));
                }
                var count = 0;
                if (model.SourceType == 50)
                {
                    count = data.RealStockInQuantity;
                }
                else
                {
                    count = data.RealStockInQuantity + x.RealStockInQuantity;
                }
                if (count > data.StockInQuantity)
                {
                    throw new HytException("实际商品入库数量总和超出商品入库数量,请检查!");
                }
                data.RealStockInQuantity = count;
                data.LastUpdateBy        = user.SysNo;
                data.LastUpdateDate      = DateTime.Now;
                UpdateStockInItem(data);
                UpdateStockInStatus(model.SysNo, WarehouseStatus.入库单状态.已入库, user);      //修改入库单状态
            });

            EasInStock(model);
        }
Esempio n. 3
0
        /// <summary>
        /// 插入入库单
        /// </summary>
        /// <param name="model">入库单明细</param>
        /// <returns>返回受影响行</returns>
        /// <remarks>2013-06-09 周唐炬 创建</remarks>
        public int CreateStockIn(WhStockIn model)
        {
            var id = IInStockDao.Instance.InsertWhStockIn(model);

            //如果创建已经入库的入库单则调用eas入库接口
            if (model.Status == WarehouseStatus.入库单状态.已入库.GetHashCode())
            {
                EasInStock(model);
            }
            return(id);
        }
Esempio n. 4
0
        /// <summary>
        /// 更新入库单
        /// </summary>
        /// <param name="model">入库单明细</param>
        /// <returns>返回受影响行</returns>
        /// <remarks>2013-06-09 周唐炬 创建</remarks>
        public override int UpdateWhStockIn(WhStockIn model)
        {
            var rowsAffected = Context.Update <WhStockIn>("WhStockIn", model)
                               .AutoMap(x => x.SysNo, x => x.ItemList, x => x.InvoiceSysNo).Where(x => x.SysNo)
                               .Execute();

            if (model.ItemList != null)
            {
                foreach (var item in model.ItemList)
                {
                    UpdateWhStockInItem(item);
                }
            }
            return(rowsAffected);
        }
Esempio n. 5
0
        /// <summary>
        /// 退货从出库单创建入库单
        /// </summary>
        /// <param name="stockOut">出库单实体.</param>
        /// <param name="returnNumber">商品退货数量</param>
        /// <param name="operatorSysNo">操作人.</param>
        /// <param name="sourceType">来源单据类型.</param>
        /// <param name="sourceSysNo">来源单据系统编号.</param>
        /// <param name="transactionSysNo">事务编号.</param>
        /// <param name="remarks">备注.</param>
        /// <returns></returns>
        /// <remarks>
        /// 2013/7/11 何方 创建
        /// </remarks>
        public int CreateStockIn(WhStockOut stockOut, Dictionary <int, int> returnNumber, int operatorSysNo, WarehouseStatus.入库单据类型 sourceType, int sourceSysNo, string transactionSysNo = "", string remarks = "")
        {
            var stockIn = new WhStockIn
            {
                CreatedBy        = operatorSysNo,
                CreatedDate      = DateTime.Now,
                DeliveryType     = (int)WarehouseStatus.入库物流方式.拒收,
                IsPrinted        = (int)WarehouseStatus.是否已经打印拣货单.否,
                Remarks          = remarks,
                SourceSysNO      = sourceSysNo,
                SourceType       = (int)sourceType,
                Status           = (int)WarehouseStatus.入库单状态.待入库,
                TransactionSysNo = transactionSysNo,
                WarehouseSysNo   = stockOut.WarehouseSysNo,
                ItemList         = new List <WhStockInItem>(),
                LastUpdateBy     = operatorSysNo,
                LastUpdateDate   = DateTime.Now
            };

            if (returnNumber != null && returnNumber.Any())
            {
                stockIn.Status = (int)WarehouseStatus.入库单状态.待入库;
                //入库单明细
                foreach (var orderItemSysNo in returnNumber.Keys)
                {
                    var stockOutItem = stockOut.Items.SingleOrDefault(x => x.OrderItemSysNo == orderItemSysNo);
                    if (stockOutItem == null)
                    {
                        throw new Exception(string.Format("出库单:{0}不包含商品{1}", stockOut.SysNo, orderItemSysNo));
                    }

                    stockIn.ItemList.Add(new WhStockInItem
                    {
                        CreatedBy           = operatorSysNo,
                        CreatedDate         = DateTime.Now,
                        ProductName         = stockOutItem.ProductName,
                        ProductSysNo        = stockOutItem.ProductSysNo,
                        StockInQuantity     = returnNumber[orderItemSysNo],//退货数量
                        RealStockInQuantity = 0,
                        LastUpdateBy        = operatorSysNo,
                        LastUpdateDate      = DateTime.Now
                    });
                }
            }
            return(InStockBo.Instance.CreateStockIn(stockIn));
        }
Esempio n. 6
0
        /// <summary>
        /// 插入入库单
        /// </summary>
        /// <param name="model">入库单明细</param>
        /// <returns>入库单系统编号</returns>
        /// <remarks>2013-06-09 周唐炬 创建</remarks>
        public override int InsertWhStockIn(WhStockIn model)
        {
            var sysNo = Context.Insert <WhStockIn>("WhStockIn", model)
                        .AutoMap(x => x.SysNo, x => x.ItemList, x => x.InvoiceSysNo)
                        .ExecuteReturnLastId <int>("SysNo");

            model.SysNo = sysNo;
            #region 添加入库单明细
            if (null != model.ItemList && model.ItemList.Count > 0)
            {
                foreach (var item in model.ItemList)
                {
                    item.StockInSysNo = sysNo;
                    InsertWhStockInItem(item);
                }
            }
            #endregion
            return(sysNo);
        }
Esempio n. 7
0
        /// <summary>
        /// 调拨单入库
        /// </summary>
        /// <param name="model"></param>
        /// <remarks>2016-07-01 陈海裕 创建</remarks>
        private static void AtAllocationTranslations(WhStockIn model)
        {
            IList <WhWarehouse> wareList = WhWarehouseBo.Instance.GetAllWarehouseList();
            var outInfo         = BLL.Warehouse.WhInventoryOutBo.Instance.GetWhInventoryOut(model.SourceSysNO);     //调拨出库单
            var allocationInfo  = BLL.Warehouse.AtAllocationBo.Instance.GetAtAllocationEntity(outInfo.SourceSysNO); //调拨单
            var tempInWarehouse = wareList.First(p => p.SysNo == model.WarehouseSysNo);
            //AtAllocation tempOutStock = AtAllocationBo.Instance.GetAtAllocationEntity(model.SourceSysNO);
            var tempOutWarehouse = wareList.First(p => p.SysNo == allocationInfo.OutWarehouseSysNo);

            var query = new List <TransferStockInfo>();

            if (model.ItemList != null)
            {
                foreach (var x in model.ItemList)
                {
                    var stock = new PdProductStock();
                    stock.StockQuantity  = x.RealStockInQuantity;
                    stock.PdProductSysNo = x.ProductSysNo;
                    stock.WarehouseSysNo = model.WarehouseSysNo;
                    //保存仓库产品的库存数
                    BLL.Warehouse.PdProductStockBo.Instance.SaveProductStock(stock, BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base.SysNo);

                    var erpCode = BLL.Product.PdProductBo.Instance.GetProductErpCode(x.ProductSysNo);
                    query.Add(new TransferStockInfo()
                    {
                        WarehouseSysNo  = model.WarehouseSysNo,
                        WarehouseNumber = tempInWarehouse.ErpCode,
                        ErpCode         = erpCode,
                        FSCStockID      = tempOutWarehouse.ErpCode,
                        Quantity        = x.RealStockInQuantity,
                        FNote           = model.Remarks,
                        FFManagerID     = model.CreatedBy.ToString(),
                        FDate           = model.CreatedDate.ToString("yyyy-MM-dd"),
                    });
                }
                //金蝶接口
                string description  = model.SourceSysNO + "_" + model.SysNo;
                string flowIdentify = allocationInfo.SysNo.ToString();
                var    client       = Extra.Erp.Kis.KisProviderFactory.CreateProvider();
                client.TransferStock(query, description, flowIdentify);
            }
        }
Esempio n. 8
0
        /// <summary>
        /// 采购单作废后,更采购单信息
        /// </summary>
        /// <param name="inModel">入库单</param>
        /// <param name="user">操作用户</param>
        /// <returns></returns>
        /// <remarks>2016-06-20 杨浩 创建</remarks>
        public void PrInStockCancelCallBack(WhStockIn inModel, SyUser user)
        {
            if (inModel == null)
            {
                throw new Exception("入库单信息不存在");
            }
            if (inModel.SourceType != (int)WarehouseStatus.入库单据类型.采购单)
            {
                return;
            }
            var PR = IPrPurchaseDao.Instance.GetPrPurchaseInfo(inModel.SourceSysNO);//采购单

            if (PR.Status != (int)PurchaseStatus.采购单状态.待入库)
            {
                throw new Exception("采购单已经完成了入库,不能作废");
            }

            PR.Status = (int)PurchaseStatus.采购单状态.待审核;
            IPrPurchaseDao.Instance.UpdateStatus(PR.SysNo, 0, PR.Status);
        }
Esempio n. 9
0
 /// <summary>
 /// EAS业务入库(包含销售退货,换货,采购)
 /// </summary>
 /// <param name="model">入库单明细WhStockInItem本次入库的商品系统编号和商品数量</param>
 /// <remarks>2013-11-21 杨浩 创建</remarks>
 private static void EasInStock(WhStockIn model)
 {
     if (model == null)
     {
         return;
     }
     if (model.SourceType == WarehouseStatus.入库单据类型.RMA单.GetHashCode() ||
         model.SourceType == WarehouseStatus.入库单据类型.出库单.GetHashCode())
     {
         SaleInfoTranslations(model);
     }
     else if (model.SourceType == WarehouseStatus.入库单据类型.借货单.GetHashCode())
     {
         BorrowInfoTranslations(model);
     }
     else if (model.SourceType == WarehouseStatus.入库单据类型.采购单.GetHashCode())
     {
         PurchaseInfoTranslations(model);
     }
     else if (model.SourceType == WarehouseStatus.入库单据类型.调拨出库单.GetHashCode())
     {
         AtAllocationTranslations(model);
     }
 }
Esempio n. 10
0
        /// <summary>
        /// 二期业务数据三段 仓库物流
        /// </summary>
        /// <param name="listObject"></param>
        private void AddBaseTaskObject2ToList4(List <BaseTask> listObject)
        {
            //BaseTask bsAT = new BsArea();

            //BaseTask crCustomer = new CrCustomer();
            //BaseTask crCL = new CrCustomerLevel();
            //BaseTask crCQ = new CrCustomerQuestion();
            //BaseTask crRA = new CrReceiveAddress();

            //BaseTask feArticle = new FeArticle();
            //BaseTask feAC = new FeArticleCategory();
            //BaseTask feCS = new FeCommentSupport();
            //BaseTask fepc = new FeProductComment();
            //BaseTask fePCI = new FeProductCommentImage();
            //BaseTask fePCR = new FeProductCommentReply();

            //BaseTask fninvoice = new FnInvoice();

            //BaseTask fnpv = new FnReceiptVoucher();
            //BaseTask fnReceiptVoucherItem = new FnReceiptVoucherItem();
            //BaseTask fnop = new FnOnlinePayment();
            //BaseTask fnPaymentVoucher = new FnPaymentVoucher();
            //BaseTask fnPaymentVoucherItem = new FnPaymentVoucherItem();

            //BaseTask lgDelivery = new LgDelivery();
            //BaseTask lgDI = new LgDeliveryItem();
            //BaseTask lgDS = new LgDeliveryScope();

            //BaseTask lgDUC = new LgDeliveryUserCredit();

            //BaseTask lgsettlement = new LgSettlement();
            //BaseTask lgSI = new LgSettlementItem();

            //BaseTask pdAttribute = new PdAttribute();
            //BaseTask pdAG = new PdAttributeGroup();
            //BaseTask pdAGA = new PdAttributeGroupAssociation();
            //BaseTask pdAO = new PdAttributeOption();
            //BaseTask pdBrand = new PdBrand();
            //BaseTask pdCGA = new PdCatAttributeGroupAso();
            //BaseTask pdCategory = new PdCategory();
            //BaseTask pdCA = new PdCategoryAssociation();
            //BaseTask pdPrice = new PdPrice();
            //BaseTask pdProduct = new PdProduct();
            //BaseTask pdPA = new PdProductAssociation();
            //BaseTask pdProductAttribute = new PdProductAttribute();
            //BaseTask pdPI = new PdProductImage();
            //BaseTask pdTemplate = new PdTemplate();

            //BaseTask soOrder = new SoOrder();
            //BaseTask soOrderItem = new SoOrderItem();
            //BaseTask soRA = new SoReceiveAddress();

            BaseTask lgDelivery = new LgDelivery();
            BaseTask lgDI       = new LgDeliveryItem();

            BaseTask lgsettlement = new LgSettlement();
            BaseTask lgSI         = new LgSettlementItem();

            BaseTask whStockOut     = new WhStockOut();
            BaseTask whStockOutItem = new WhstockOutItem();

            BaseTask whstockin     = new WhStockIn();
            BaseTask whstockinItem = new WHStockinItem();
            BaseTask rcReturn      = new RCReturn();
            BaseTask rcReturnItem  = new RcReturnItem();

            //listObject.Add(bsAT);

            ////listObject.Add(bsOrganization);
            //listObject.Add(crCustomer);
            //listObject.Add(crCL);
            //listObject.Add(crCQ);
            //listObject.Add(crRA);

            //listObject.Add(feArticle);
            //listObject.Add(feAC);
            //listObject.Add(feCS);
            //listObject.Add(fePCI);
            //listObject.Add(fePCR);
            //listObject.Add(fepc);

            //listObject.Add(fnpv);
            //listObject.Add(fnReceiptVoucherItem);
            //listObject.Add(fnop);
            //listObject.Add(fninvoice);

            //listObject.Add(fnPaymentVoucher);
            //listObject.Add(fnPaymentVoucherItem);

            //listObject.Add(lgDelivery);
            //listObject.Add(lgDI);
            //listObject.Add(lgDS);
            //listObject.Add(lgsettlement);
            //listObject.Add(lgSI);

            //listObject.Add(pdAttribute);
            //listObject.Add(pdAG);
            //listObject.Add(pdAGA);
            //listObject.Add(pdAO);
            //listObject.Add(pdBrand);
            //listObject.Add(pdCGA);
            //listObject.Add(pdCategory);
            //listObject.Add(pdCA);
            //listObject.Add(pdPrice);
            //listObject.Add(pdProduct);
            //listObject.Add(pdPA);
            //listObject.Add(pdProductAttribute);
            //listObject.Add(pdTemplate);
            //listObject.Add(pdPI);

            //listObject.Add(soOrder);
            //listObject.Add(soOrderItem);
            //listObject.Add(soRA);



            listObject.Add(whStockOut);
            listObject.Add(whStockOutItem);
            listObject.Add(whstockin);
            listObject.Add(whstockinItem);

            listObject.Add(rcReturn);
            listObject.Add(rcReturnItem);

            listObject.Add(lgDelivery);
            listObject.Add(lgDI);

            listObject.Add(lgsettlement);
            listObject.Add(lgSI);
        }
Esempio n. 11
0
        /// <summary>
        /// 退货入库
        /// </summary>
        /// <param name="model">入库单</param>
        /// <remarks>2016-10-31 杨浩 创建</remarks>
        public void ReturnsIntoWarehouse(WhStockIn model)
        {
            var result = new Result();

            try
            {
                var warehouse = BLL.Warehouse.WhWarehouseBo.Instance.GetWarehouse(model.WarehouseSysNo);

                var request = new Grand.Platform.Api.Contract.DataContract.LessProductStockRequest();

                Grand.Platform.Api.Contract.Model.SheetMaster sheetMaster = new Grand.Platform.Api.Contract.Model.SheetMaster();
                sheetMaster.trans_no  = "00";
                sheetMaster.branch_no = warehouse.ErpCode;
                sheetMaster.oper_date = DateTime.Now;
                sheetMaster.sheet_amt = 0;
                sheetMaster.db_no     = "+";
                IList <Grand.Platform.Api.Contract.Model.SheetDetail> sheetDetailList = new List <Grand.Platform.Api.Contract.Model.SheetDetail>();
                Grand.Platform.Api.Contract.Model.SheetDetail         sheetDetail     = null;
                foreach (var item in model.ItemList)
                {
                    sheetDetail = new Grand.Platform.Api.Contract.Model.SheetDetail();
                    var tempProduct = BLL.Product.PdProductBo.Instance.GetProduct(item.ProductSysNo);
                    sheetDetail.item_no     = tempProduct.ErpCode;
                    sheetDetail.real_qty    = item.RealStockInQuantity;
                    sheetDetail.large_qty   = item.RealStockInQuantity;
                    sheetDetail.valid_price = 0;
                    sheetDetail.sale_price  = 0;
                    sheetDetail.sub_amt     = 0;
                    sheetDetailList.Add(sheetDetail);
                }
                request.SheetMaster  = sheetMaster;
                request.SheetDetails = sheetDetailList;

                string json = Util.Serialization.JsonUtil.ToJson2(request);

                result.Status = this.LessProductStock(request);
                if (result.Status == false)
                {
                    //var queObj = DataAccess.Extra.IPosServiceDao.Instance.GetEntityByOrderSysNo(orderSysNo);
                    //if (queObj == null)
                    //{
                    //    // 扣减库存失败,添加到队列表
                    //    ReducedPOSInventoryQueue model1 = new ReducedPOSInventoryQueue();
                    //    model.OrderSysNo = orderSysNo;
                    //    model.JsonData = json;
                    //    this.AddToReducedPOSInventoryQueue(model);
                    //}

                    BLL.Log.SysLog.Instance.Error(Model.WorkflowStatus.LogStatus.系统日志来源.前台, "POS系统加库存失败:ReturnsIntoWarehouse", new Exception());
                }
            }
            catch (Exception ex)
            {
                //// 扣减库存失败,添加到队列表
                //ReducedPOSInventoryQueue model1 = new ReducedPOSInventoryQueue();
                //model.OrderSysNo = orderSysNo;
                //model.Remark = ex.ToString();
                //this.AddToReducedPOSInventoryQueue(model);

                BLL.Log.SysLog.Instance.Error(Model.WorkflowStatus.LogStatus.系统日志来源.前台, "POS系统加库存失败:ReturnsIntoWarehouse", ex);
            }
        }
Esempio n. 12
0
        /// <summary>
        /// 作废出库单时,如果出库单申请了调货单,则同时作废调货单
        /// </summary>
        /// <param name="stockOutSysno">出库单编号</param>
        /// <param name="userSysno">操作人</param>
        /// <remarks>2016-04-06 杨浩 创建</remarks>
        public void CancelTransferCargoOnCancelStockOut(int stockOutSysno, int userSysno)
        {
            var model = GetTransferCargo(stockOutSysno);

            if (model != null)
            {
                if (model.Status == (int)WarehouseStatus.调货状态.待处理)
                {
                    model.Status         = (int)WarehouseStatus.调货状态.已作废;
                    model.LastUpdateBy   = userSysno;
                    model.LastUpdateDate = DateTime.Now;
                    ITransferCargoDao.Instance.Update(model);
                }
                else if (model.Status == (int)WarehouseStatus.调货状态.已确认)
                {
                    var stockOut = Hyt.BLL.Warehouse.WhWarehouseBo.Instance.Get(stockOutSysno);
                    if (stockOut != null)
                    {
                        var stockIn = new WhStockIn
                        {
                            CreatedBy        = userSysno,
                            CreatedDate      = DateTime.Now,
                            DeliveryType     = (int)WarehouseStatus.入库物流方式.已调货出库单作废,
                            IsPrinted        = (int)WarehouseStatus.是否已经打印拣货单.否,
                            Remarks          = "已调货出库单(" + stockOutSysno + ")作废",
                            SourceSysNO      = stockOutSysno,
                            SourceType       = Hyt.Model.WorkflowStatus.WarehouseStatus.入库单据类型.出库单.GetHashCode(),
                            Status           = (int)WarehouseStatus.入库单状态.已入库,
                            TransactionSysNo = stockOut.TransactionSysNo,
                            WarehouseSysNo   = stockOut.WarehouseSysNo,
                            ItemList         = new List <WhStockInItem>(),
                            LastUpdateBy     = userSysno,
                            LastUpdateDate   = DateTime.Now
                        };

                        foreach (var stockOutItem in stockOut.Items)
                        {
                            stockIn.ItemList.Add(new WhStockInItem
                            {
                                CreatedBy           = userSysno,
                                CreatedDate         = DateTime.Now,
                                ProductName         = stockOutItem.ProductName,
                                ProductSysNo        = stockOutItem.ProductSysNo,
                                StockInQuantity     = stockOutItem.ProductQuantity,//退货数量
                                RealStockInQuantity = stockOutItem.ProductQuantity,
                                LastUpdateBy        = userSysno,
                                LastUpdateDate      = DateTime.Now,
                                SourceItemSysNo     = stockOutItem.SysNo
                            });
                        }
                        InStockBo.Instance.CreateStockIn(stockIn);//插入入库单,写入补货退货EAS单据
                        var soOrderEn = SoOrderBo.Instance.GetEntity(stockOut.OrderSysNO);
                        if (soOrderEn != null)
                        {
                            SoOrderBo.Instance.WriteSoTransactionLog(soOrderEn.TransactionSysNo,
                                                                     string.Format("调货单{0}已撤消", model.SysNo),
                                                                     SyUserBo.Instance.GetUserName(userSysno), OrderStatus.是否对客户显示订单日志.否.GetHashCode());
                        }
                    }
                }
            }
        }
Esempio n. 13
0
        /// <summary>
        /// 出库单作废入库,退货入库,EAS事务(销售出库单)
        /// </summary>
        /// <param name="model">入库实体</param>
        /// <remarks>2013-11-21 周唐炬 创建</remarks>
        private static void SaleInfoTranslations(WhStockIn model)
        {
            List <SaleInfo> saleInfoList = null;
            var             customer     = string.Empty;
            var             description  = string.Empty;//订单系统编号

            if (model.ItemList != null && model.ItemList.Any())
            {
                saleInfoList = new List <SaleInfo>();

                //仓库
                var    warehouse        = WhWarehouseBo.Instance.GetWarehouse(model.WarehouseSysNo);
                var    warehouseErpCode = string.Empty;
                string organizationCode = string.Empty;//组织机构代码
                if (warehouse != null)
                {
                    warehouseErpCode = warehouse.ErpCode;
                    var oraganization = OrganizationBo.Instance.GetOrganization(warehouse.SysNo);
                    if (oraganization != null)
                    {
                        organizationCode = oraganization.Code;
                    }
                }
                var orderSysNo = 0;
                //是否为RMA换货
                bool isRma = false;
                //商城或第三方订单号
                var orderNo = string.Empty;

                SoOrder order            = null;
                string  deliveryCustomer = ""; //金蝶客户代码
                if (model.SourceType == WarehouseStatus.入库单据类型.RMA单.GetHashCode())
                {
                    //创建Eas出库单摘要,商城订单时使用商城订单号,分销商时使用分销商订单号
                    var rmaSysNo = model.SourceSysNO;

                    var rmaInfo = BLL.RMA.RmaBo.Instance.GetRMA(rmaSysNo);
                    if (rmaInfo == null)
                    {
                        throw new Exception(string.Format("找不到编号为:{0}的RMA单", rmaSysNo));
                    }

                    order = SoOrderBo.Instance.GetEntity(rmaInfo.OrderSysNo);

                    if (order == null)
                    {
                        throw new Exception(string.Format("找不到编号为:{0}的订单", rmaInfo.OrderSysNo));
                    }
                    var dealerInfo = BLL.Distribution.DsDealerBo.Instance.GetDsDealer(order.DealerSysNo);
                    organizationCode = dealerInfo.CreatedBy.ToString();
                    deliveryCustomer = dealerInfo.ErpCode;
                }



                //用户账号
                string account = string.Empty;

                foreach (var x in model.ItemList)
                {
                    //var product = PdProductBo.Instance.GetProductErpCode(x.ProductSysNo);
                    //if (product == null) return;

                    var productErpCode = IPdProductDao.Instance.GetProductErpCode(x.ProductSysNo);
                    if (string.IsNullOrWhiteSpace(productErpCode))
                    {
                        return;
                    }

                    var price = decimal.Zero;

                    //取得退货单
                    if (model.SourceType == WarehouseStatus.入库单据类型.RMA单.GetHashCode())
                    {
                        var rma = RmaBo.Instance.GetRMA(model.SourceSysNO);

                        if (rma != null && rma.RMAItems != null && rma.RMAItems.Any())
                        {
                            isRma      = (rma.RmaType == (int)Model.WorkflowStatus.RmaStatus.RMA类型.售后换货);
                            orderSysNo = rma.OrderSysNo;
                            //取得退货单对应商品
                            var item = rma.RMAItems.FirstOrDefault(c => c.SysNo == x.SourceItemSysNo);
                            if (item != null && item.RmaQuantity > 0)
                            {
                                if (item.RefundProductAmount < 0)//退货分摊为负,不导入
                                {
                                    continue;
                                }
                                if (rma.DeductedInvoiceAmount > 0)//如果存在扣发票金额,将其分摊到明细
                                {
                                    item.RefundProductAmount = decimal.Round(item.RefundProductAmount - (item.RefundProductAmount / rma.RefundProductAmount) * rma.DeductedInvoiceAmount, 2);
                                }

                                if (rma.RefundCoin > 0)//如果存在实退会员币,将其分摊到明细
                                {
                                    item.RefundProductAmount = decimal.Round(item.RefundProductAmount - (item.RefundProductAmount / rma.RefundProductAmount) * rma.RefundCoin, 2);
                                }

                                price = (decimal)x.RealStockInQuantity / (decimal)item.RmaQuantity * item.RefundProductAmount; //退货价为实退金额除退货数量
                            }
                            if (item != null && isRma)                                                                         //如果为售后换货取原单实际销售金额
                            {
                                var whStockOut = BLL.Warehouse.WhWarehouseBo.Instance.GetWhStockOutItem(item.StockOutItemSysNo);
                                var itx        = Hyt.BLL.RMA.RmaBo.Instance.GetSoReturnOrderItem(whStockOut.OrderItemSysNo);
                                if (itx != null)//换货生成的新订单再次换货
                                {
                                    price = decimal.Round(itx.FromStockOutItemAmount * ((decimal)x.RealStockInQuantity / whStockOut.ProductQuantity), 2);
                                }
                                else//原订单换货
                                {
                                    price = decimal.Round(whStockOut.RealSalesAmount * ((decimal)x.RealStockInQuantity / whStockOut.ProductQuantity), 2);
                                }
                            }
                        }
                    }
                    else if (model.SourceType == WarehouseStatus.入库单据类型.出库单.GetHashCode())
                    {
                        //出库单中商品
                        var itemList = WhWarehouseBo.Instance.GetWhStockOutItemList(model.SourceSysNO);
                        if (itemList != null && itemList.Any())
                        {
                            orderSysNo = itemList.First().OrderSysNo;
                            //customer = WhWarehouseBo.Instance.GetErpCustomerCode(itemList.First().OrderSysNo);
                            var item = itemList.FirstOrDefault(c => c.SysNo == x.SourceItemSysNo);
                            if (item != null && item.RealSalesAmount > 0 && item.ProductQuantity > 0)
                            {
                                price = decimal.Round(x.RealStockInQuantity / (decimal)item.ProductQuantity * item.RealSalesAmount, 2);
                            }
                        }
                    }

                    saleInfoList.Add(new SaleInfo()
                    {
                        ErpCode          = productErpCode,
                        Quantity         = x.RealStockInQuantity,
                        WarehouseNumber  = warehouseErpCode,
                        WarehouseSysNo   = model.WarehouseSysNo,
                        OrganizationCode = organizationCode,
                        Amount           = price,
                        DiscountAmount   = decimal.Zero,
                        IsPresent        = isRma ? 0 : (price == 0 ? 1 : 0), //价格为0的商品,传入Eas为赠品
                        ItemID           = model.SysNo,
                        DeliveryCustomer = deliveryCustomer,
                    });
                }
                ;

                //如果入库单为升舱订单就获取导入分销订单号
                //var order = SoOrderBo.Instance.GetEntity(orderSysNo);
                orderNo = orderSysNo.ToString();
                if (order != null)
                {
                    if (order.OrderSource == OrderStatus.销售单来源.分销商升舱.GetHashCode())
                    {
                        var dsOrders = Hyt.BLL.MallSeller.DsOrderBo.Instance.GetEntityByHytOrderID(orderSysNo);
                        if (dsOrders != null && dsOrders.Count > 0)
                        {
                            orderNo = string.Join(";", dsOrders.Select(o => o.MallOrderId));
                        }
                    }
                }
                customer    = WhWarehouseBo.Instance.GetErpCustomerCode(orderSysNo);
                description = orderNo;
                var client = Extra.Erp.Kis.KisProviderFactory.CreateProvider();
                client.SaleInStock(saleInfoList, customer, description, order == null ? string.Empty : order.TransactionSysNo);
            }
        }
Esempio n. 14
0
        /// <summary>
        /// 采购单入库事务(采购入库)
        /// </summary>
        /// <param name="model">入库实体</param>
        /// <remarks>2016-6-21 杨浩 创建</remarks>
        private static void PurchaseInfoTranslations(WhStockIn model)
        {
            if (model.SourceType != WarehouseStatus.入库单据类型.采购单.GetHashCode())
            {
                return;
            }

            var purchaseList = new List <PurchaseInfo>();
            var warhouseInfo = BLL.Warehouse.WhWarehouseBo.Instance.GetWarehouse(model.WarehouseSysNo);

            if (model.ItemList != null)
            {
                int enterQuantity = 0;
                var _purchaseList = BLL.Purchase.PrPurchaseBo.Instance.GetPurchaseDetailsByPurchaseSysNo(model.SourceSysNO);

                foreach (var x in model.ItemList)
                {
                    //var stock = new PdProductStock();
                    //stock.StockQuantity = x.RealStockInQuantity;
                    //stock.WarehouseSysNo = model.WarehouseSysNo;
                    //stock.PdProductSysNo = x.ProductSysNo;

                    //enterQuantity += x.RealStockInQuantity;
                    ////保存仓库产品的库存数
                    //BLL.Warehouse.PdProductStockBo.Instance.SaveProductStock(stock, 0);
                    //更新采购单详情入库数
                    BLL.Purchase.PrPurchaseDetailsBo.Instance.UpdateEnterQuantity(model.SourceSysNO, x.ProductSysNo, x.RealStockInQuantity);

                    var purchaseItemInfo = _purchaseList.Where(j => j.ProductSysNo == x.ProductSysNo).FirstOrDefault();
                    var purchaseInfo     = new PurchaseInfo()
                    {
                        PurchaseQty     = purchaseItemInfo.Quantity,
                        WarehouseSysNo  = model.WarehouseSysNo,
                        FDate           = model.CreatedDate.ToString(),
                        WarehouseNumber = warhouseInfo.ErpCode,
                        Quantity        = x.RealStockInQuantity,
                        FNote           = "平台入库单明细系统编号:" + x.SysNo,
                        Price           = purchaseItemInfo.Money,
                        Amount          = purchaseItemInfo.Money * x.RealStockInQuantity,
                        ErpCode         = purchaseItemInfo.ErpCode,
                        SettleDate      = model.CreatedDate.ToString(),
                    };
                    purchaseList.Add(purchaseInfo);
                }


                //更新采购单已入库数
                BLL.Purchase.PrPurchaseBo.Instance.UpdateEnterQuantity(model.SourceSysNO, enterQuantity);

                if (purchaseList.Count > 0)
                {
                    var prPurchaseInfo = IPrPurchaseDao.Instance.GetPrPurchaseInfo(model.SourceSysNO);
                    var _purchaseInfo  = purchaseList[0];
                    _purchaseInfo.FSupplyID = prPurchaseInfo.ManufacturerSysNo.ToString();
                    _purchaseInfo.FMangerID = prPurchaseInfo.CreatedBy.ToString();
                    _purchaseInfo.FEmpID    = prPurchaseInfo.SyUserSysNo.ToString();
                    _purchaseInfo.FDeptID   = prPurchaseInfo.DepartmentSysNo.ToString();

                    string flowIdentify = model.SourceSysNO.ToString();//采购订单系统编号
                    int    count        = EasBo.Instance.GetEasSyncLogCount((int)Extra.Erp.Model.接口类型.采购入库退货, flowIdentify);
                    _purchaseInfo.SynchronizeCount = count;
                    purchaseList[0] = _purchaseInfo;
                    string description = model.SysNo.ToString();//入库单系统编号
                    var    client      = Extra.Erp.Kis.KisProviderFactory.CreateProvider();
                    client.PurchaseInStock(purchaseList, description, flowIdentify);
                }
            }
        }
Esempio n. 15
0
 /// <summary>
 /// 插入入库单
 /// </summary>
 /// <param name="model">入库单明细</param>
 /// <returns>返回受影响行</returns>
 /// <remarks>2013-06-09 周唐炬 创建</remarks>
 public abstract int InsertWhStockIn(WhStockIn model);
Esempio n. 16
0
 /// <summary>
 /// 更新入库单
 /// </summary>
 /// <param name="model">入库单明细</param>
 /// <returns>返回受影响行</returns>
 /// <remarks>2013-06-09 周唐炬 创建</remarks>
 public abstract int UpdateWhStockIn(WhStockIn model);
Esempio n. 17
0
        /// <summary>
        /// 借货还货EAS事务(其他出库单)
        /// </summary>
        /// <param name="model">入库实体</param>
        /// <remarks>2013-11-21 周唐炬 创建</remarks>
        private static void BorrowInfoTranslations(WhStockIn model)
        {
            List <BorrowInfo> borrowInfoList = null;

            if (model.ItemList != null && model.ItemList.Any())
            {
                borrowInfoList = new List <BorrowInfo>();
                //仓库
                var warehouse        = WhWarehouseBo.Instance.GetWarehouse(model.WarehouseSysNo);
                var warehouseErpCode = string.Empty;
                if (warehouse != null)
                {
                    warehouseErpCode = warehouse.ErpCode;
                }
                model.ItemList.ForEach(x =>
                {
                    #region 入库数写入仓库库存
                    var stock           = new PdProductStock();
                    stock.StockQuantity = x.RealStockInQuantity;
                    BLL.Warehouse.PdProductStockBo.Instance.SaveProductStock(stock, BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base.SysNo);

                    ///添加调拨入库记录
                    WhWarehouseChangeLog log = new WhWarehouseChangeLog()
                    {
                        WareSysNo      = stock.WarehouseSysNo,
                        ProSysNo       = x.ProductSysNo,
                        ChageDate      = model.CreatedDate,
                        CreateDate     = DateTime.Now,
                        ChangeQuantity = Convert.ToInt32(x.RealStockInQuantity),
                        BusinessTypes  = "借货入库",
                        LogData        = "入库单号:" + model.TransactionSysNo
                    };
                    WhWarehouseChangeLogBo.Instance.CreateMod(log);
                    #endregion

                    var product = PdProductBo.Instance.GetProduct(x.ProductSysNo);
                    if (product == null)
                    {
                        return;
                    }
                    var price = decimal.Zero;

                    //借货单商品
                    var item = IProductLendDao.Instance.GetWhProductLendItemInfo(new ParaWhProductLendItemFilter()
                    {
                        ProductLendSysNo = model.SourceSysNO,
                        ProductSysNo     = x.ProductSysNo,
                        PriceSource      = (int)ProductStatus.产品价格来源.配送员进货价
                    });
                    if (item != null)
                    {
                        price = item.Price;
                    }

                    var borrowInfo = new BorrowInfo()
                    {
                        ErpCode         = product.ErpCode,
                        Quantity        = x.RealStockInQuantity,
                        WarehouseNumber = warehouseErpCode,
                        WarehouseSysNo  = model.WarehouseSysNo,
                        Amount          = price,
                        Remark          = model.Remarks
                    };
                    borrowInfoList.Add(borrowInfo);
                });
            }

            //获取摘要
            var userName    = string.Empty;
            var productLend = ProductLendBo.Instance.GetWhProductLend(model.SourceSysNO);
            if (productLend != null)
            {
                var syUser = SyUserBo.Instance.GetSyUser(productLend.DeliveryUserSysNo);
                if (syUser != null)
                {
                    userName = syUser.UserName;
                }
            }
            var description = string.Format("JC[{0}]-[{1}]-RK[{2}]", model.SourceSysNO, userName, model.SysNo);
            //借货调用借货入库,对应Eas其他出库单
            var client = EasProviderFactory.CreateProvider();
            client.Return(borrowInfoList, description, model.SourceSysNO.ToString());
        }
Esempio n. 18
0
        private void AddBaseTaskObjectToList(List <BaseTask> listObject)
        {
            BaseTask bsAT                    = new BsArea();
            BaseTask bsDP                    = new BsDeliveryPayment();
            BaseTask bsPT                    = new BsPaymentType();
            BaseTask bsCode                  = new BsCode();
            BaseTask bsOrganization          = new BsOrganization();
            BaseTask bsOrganizationWarehouse = new BsOrganizationWarehouse();

            BaseTask crCustomer = new CrCustomer();
            BaseTask crCL       = new CrCustomerLevel();
            BaseTask crCQ       = new CrCustomerQuestion();
            BaseTask crRA       = new CrReceiveAddress();

            BaseTask dsMallType      = new DsMallType();
            BaseTask dsDealerLevel   = new DsDealerLevel();
            BaseTask feArticle       = new FeArticle();
            BaseTask feAC            = new FeArticleCategory();
            BaseTask feCS            = new FeCommentSupport();
            BaseTask fepc            = new FeProductComment();
            BaseTask fePCI           = new FeProductCommentImage();
            BaseTask fePCR           = new FeProductCommentReply();
            BaseTask feSearchKeyword = new FeSearchKeyword();
            BaseTask feadvertgroup   = new FeAdvertGroup();
            BaseTask feadvertitem    = new FeAdvertItem();
            BaseTask feproductgroup  = new FeProductGroup();
            BaseTask feproductitem   = new FeProductItem();

            BaseTask fnIT      = new FnInvoiceType();
            BaseTask fninvoice = new FnInvoice();

            BaseTask fnpv = new  FnReceiptVoucher();
            BaseTask fnReceiptVoucherItem = new FnReceiptVoucherItem();
            BaseTask fnop                 = new FnOnlinePayment();
            BaseTask fnPaymentVoucher     = new FnPaymentVoucher();
            BaseTask fnPaymentVoucherItem = new FnPaymentVoucherItem();

            BaseTask lgDelivery              = new LgDelivery();
            BaseTask lgDI                    = new LgDeliveryItem();
            BaseTask lgDS                    = new LgDeliveryScope();
            BaseTask lgDT                    = new LgDeliveryType();
            BaseTask lgDUC                   = new LgDeliveryUserCredit();
            BaseTask lgPT                    = new LgPickupType();
            BaseTask lgsettlement            = new LgSettlement();
            BaseTask lgSI                    = new LgSettlementItem();
            BaseTask lgDeliveryPrintTemplate = new LgDeliveryPrintTemplate();
            BaseTask pdAttribute             = new PdAttribute();
            BaseTask pdAG                    = new PdAttributeGroup();
            BaseTask pdAGA                   = new PdAttributeGroupAssociation();
            BaseTask pdAO                    = new PdAttributeOption();
            BaseTask pdBrand                 = new PdBrand();
            BaseTask pdCGA                   = new PdCatAttributeGroupAso();
            BaseTask pdCategory              = new PdCategory();
            BaseTask pdCA                    = new PdCategoryAssociation();
            BaseTask pdPrice                 = new PdPrice();
            BaseTask pdProduct               = new PdProduct();
            BaseTask pdPA                    = new PdProductAssociation();
            BaseTask pdProductAttribute      = new PdProductAttribute();
            BaseTask pdPI                    = new PdProductImage();
            BaseTask pdTemplate              = new PdTemplate();
            BaseTask pdProductStatistics     = new PdProductStatistics();

            BaseTask soOrder         = new SoOrder();
            BaseTask soOrderItem     = new SoOrderItem();
            BaseTask soRA            = new SoReceiveAddress();
            BaseTask SyUG            = new SyUserGroup();
            BaseTask syGU            = new SyGroupUser();
            BaseTask syMenu          = new SyMenu();
            BaseTask syMenuPrivilege = new SyMenuPrivilege();
            BaseTask syPrivilege     = new SyPrivilege();
            BaseTask syRole          = new SyRole();
            BaseTask syRoleMenu      = new SyRoleMenu();
            BaseTask syRolePrivilege = new SyRolePrivilege();
            BaseTask syPermission    = new SyPermission();
            BaseTask syUser          = new SyUser();
            BaseTask syUW            = new SyUserWarehouse();
            BaseTask syMyMenu        = new SyMyMenu();

            BaseTask spcombo                  = new SpCombo();
            BaseTask spComboItem              = new SpComboItem();
            BaseTask spcopon                  = new spcoupon();
            BaseTask sqpromotion              = new SPpromotion();
            BaseTask spromotiongift           = new SPpromotiongift();
            BaseTask sppromotionoverlay       = new SPpromotionoverlay();
            BaseTask sppromotionrule          = new SPpromotionrule();
            BaseTask sppromotionrulecondition = new SPpromotionrulecondition();
            BaseTask sppromotionrulekeyvalue  = new SPpromotionrulekeyvalue();
            BaseTask syTaskConfig             = new SyTaskConfig();

            BaseTask whStockOut     = new WhStockOut();
            BaseTask whStockOutItem = new WhstockOutItem();
            BaseTask whwarehouse    = new WhWarehouse();
            BaseTask whwa           = new WHwarehousearea();
            BaseTask whwdy          = new WHwarehouseDeliveryType();
            BaseTask whWPT          = new WhWarehousePickupType();
            BaseTask whstockin      = new WhStockIn();
            BaseTask whstockinItem  = new WHStockinItem();
            BaseTask rcReturn       = new RCReturn();
            BaseTask rcReturnItem   = new RcReturnItem();

            listObject.Add(bsAT);
            listObject.Add(bsDP);
            listObject.Add(bsPT);
            listObject.Add(bsCode);
            listObject.Add(bsOrganization);
            listObject.Add(bsOrganizationWarehouse);

            listObject.Add(crCustomer);
            listObject.Add(crCL);
            listObject.Add(crCQ);
            listObject.Add(crRA);
            listObject.Add(dsMallType);
            listObject.Add(dsDealerLevel);
            listObject.Add(feArticle);
            listObject.Add(feAC);
            listObject.Add(feCS);
            listObject.Add(fePCI);
            listObject.Add(fePCR);
            listObject.Add(fepc);
            listObject.Add(feSearchKeyword);
            listObject.Add(feadvertgroup);
            listObject.Add(feadvertitem);
            listObject.Add(feproductgroup);
            listObject.Add(feproductitem);

            listObject.Add(fnIT);
            listObject.Add(fnpv);
            listObject.Add(fnReceiptVoucherItem);
            listObject.Add(fnop);
            listObject.Add(fninvoice);

            listObject.Add(fnPaymentVoucher);
            listObject.Add(fnPaymentVoucherItem);

            listObject.Add(lgDelivery);
            listObject.Add(lgDI);
            listObject.Add(lgDS);
            listObject.Add(lgDT);
            listObject.Add(lgPT);
            listObject.Add(lgsettlement);
            listObject.Add(lgSI);
            listObject.Add(lgDeliveryPrintTemplate);

            listObject.Add(pdAttribute);
            listObject.Add(pdAG);
            listObject.Add(pdAGA);
            listObject.Add(pdAO);
            listObject.Add(pdBrand);
            listObject.Add(pdCGA);
            listObject.Add(pdCategory);
            listObject.Add(pdCA);
            listObject.Add(pdPrice);
            listObject.Add(pdProduct);
            listObject.Add(pdPA);
            listObject.Add(pdProductAttribute);
            listObject.Add(pdTemplate);
            listObject.Add(pdProductStatistics);

            listObject.Add(soOrder);
            listObject.Add(soOrderItem);

            listObject.Add(spcombo);
            listObject.Add(spComboItem);
            listObject.Add(spcopon);
            listObject.Add(sqpromotion);
            listObject.Add(spromotiongift);
            //listObject.Add(sppromotionoverlay);
            listObject.Add(sppromotionrule);
            listObject.Add(sppromotionrulecondition);
            listObject.Add(sppromotionrulekeyvalue);

            listObject.Add(syGU);
            listObject.Add(syUW);
            listObject.Add(SyUG);
            listObject.Add(syMenu);
            listObject.Add(syUser);
            listObject.Add(syPermission);

            listObject.Add(syMenuPrivilege);
            listObject.Add(syPrivilege);
            listObject.Add(syRole);
            listObject.Add(syRoleMenu);
            listObject.Add(syRolePrivilege);
            listObject.Add(syMyMenu);
            listObject.Add(syTaskConfig);

            listObject.Add(whStockOut);
            listObject.Add(whStockOutItem);
            listObject.Add(whwarehouse);
            listObject.Add(whwa);
            listObject.Add(whwdy);
            listObject.Add(whWPT);
            listObject.Add(whstockin);
            listObject.Add(whstockinItem);
            listObject.Add(rcReturn);
            listObject.Add(rcReturnItem);
            listObject.Add(lgDUC);
            listObject.Add(pdPI);
            listObject.Add(soRA);
        }
Esempio n. 19
0
        /// <summary>
        /// 审核采购单
        /// </summary>
        /// <param name="sysNo">采购单编号</param>
        /// <remarks>2016-6-18 杨浩 创建</remarks>
        public bool AuditPurchase(int sysNo)
        {
            var purchase = IPrPurchaseDao.Instance.GetPrPurchaseInfo(sysNo);

            if (purchase == null)
            {
                return(false);
            }
            if (purchase.Status != (int)PurchaseStatus.采购单状态.待审核)
            {
                return(false);
            }

            if (UpdateStatus(sysNo, 0, (int)PurchaseStatus.采购单状态.待入库))
            {
                var paymentVoucherMod = new FnPaymentVoucher();
                paymentVoucherMod.CreatedBy         = BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base.SysNo;
                paymentVoucherMod.CreatedDate       = DateTime.Now;
                paymentVoucherMod.CustomerSysNo     = 0;
                paymentVoucherMod.LastUpdateBy      = paymentVoucherMod.CreatedBy;
                paymentVoucherMod.LastUpdateDate    = DateTime.Now;
                paymentVoucherMod.PayableAmount     = purchase.TotalMoney;
                paymentVoucherMod.PayDate           = new DateTime(1753, 1, 1);
                paymentVoucherMod.PayerSysNo        = 0;
                paymentVoucherMod.RefundAccount     = "";
                paymentVoucherMod.RefundAccountName = "";
                paymentVoucherMod.RefundBank        = "";
                paymentVoucherMod.Source            = (int)Hyt.Model.WorkflowStatus.FinanceStatus.付款来源类型.采购单;
                paymentVoucherMod.SourceSysNo       = sysNo;
                paymentVoucherMod.Status            = (int)Hyt.Model.WorkflowStatus.FinanceStatus.付款单状态.待付款;
                paymentVoucherMod.Remarks           = "";
                BLL.Finance.FinanceBo.Instance.CreatePaymentVoucher(paymentVoucherMod);

                //创建入库单
                WhStockIn inEntity = new WhStockIn
                {
                    CreatedBy        = paymentVoucherMod.CreatedBy,
                    CreatedDate      = DateTime.Now,
                    DeliveryType     = 20,
                    IsPrinted        = (int)WarehouseStatus.是否已经打印拣货单.否,
                    SourceSysNO      = sysNo,
                    SourceType       = (int)WarehouseStatus.入库单据类型.采购单,
                    Status           = (int)WarehouseStatus.入库单状态.待入库,
                    TransactionSysNo = purchase.PurchaseCode,
                    WarehouseSysNo   = purchase.WarehouseSysNo,
                    Stamp            = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue,
                    LastUpdateBy     = paymentVoucherMod.CreatedBy,
                    LastUpdateDate   = DateTime.Now
                };

                inEntity.ItemList = new List <WhStockInItem>();
                var purchaseDetails = BLL.Purchase.PrPurchaseDetailsBo.Instance.GetPurchaseDetailsList(sysNo);
                //入库明细
                foreach (var item in purchaseDetails)
                {
                    inEntity.ItemList.Add(new WhStockInItem
                    {
                        CreatedBy           = paymentVoucherMod.CreatedBy,
                        CreatedDate         = DateTime.Now,
                        ProductName         = item.ProductName,
                        ProductSysNo        = item.ProductSysNo,
                        StockInQuantity     = item.Quantity,
                        RealStockInQuantity = 0,
                        LastUpdateBy        = paymentVoucherMod.CreatedBy,
                        LastUpdateDate      = DateTime.Now,
                        SourceItemSysNo     = item.SysNo //记录入库单明细来源单号(采购单明细编号)
                    });
                }

                var inSysNo = InStockBo.Instance.CreateStockIn(inEntity); //保存入库单数据
            }
            return(true);
        }
Esempio n. 20
0
        /// <summary>
        /// 商品还货
        /// </summary>
        /// <param name="deliveryUserSysNo">配送员系统编号</param>
        /// <param name="model">入库单实体</param>
        /// <exception cref="ArgumentNullException"></exception>
        /// <returns>返回结果</returns>
        /// <remarks>2013-07-22 周唐炬 创建</remarks>
        public Result ProductReturn(int deliveryUserSysNo, WhStockIn model)
        {
            var result = new Result()
            {
                StatusCode = -1
            };

            if (null != model.ItemList && model.ItemList.Count > 0)
            {
                var itemList = new List <WhStockInItem>();
                model.ItemList.ForEach(itemList.Add);//克隆坨新的出来
                //借货单列表
                var productLendList = new List <WhProductLend>();

                #region 商品还货
                //遍历所有还货商品
                itemList.ForEach(item =>
                {
                    //还货数量小于1跳过该商品
                    if (item.RealStockInQuantity <= 0)
                    {
                        return;
                    }
                    //该商品本次还货数量
                    var returnNum = item.RealStockInQuantity;
                    //找到配送人员指定商品借货列表,按借货单SysNo最小升序,时间最早还货
                    var productLengItemList =
                        IProductLendDao.Instance.GetWhProductLendItemList(new ParaWhProductLendItemFilter()
                    {
                        DeliveryUserSysNo = deliveryUserSysNo,
                        ProductSysNo      = item.ProductSysNo,
                        Status            = WarehouseStatus.借货单状态.已出库.GetHashCode()
                    });

                    if (null == productLengItemList)
                    {
                        return;
                    }
                    foreach (var sysno in productLengItemList)
                    {
                        //检查本次还货数量是否大于0,小于等于0项目直接跳过
                        if (returnNum <= 0)
                        {
                            break;
                        }
                        //重新获取到包含信用等级价格的借货明细
                        var modelItem = IProductLendDao.Instance.GetWhProductLendItemInfo(new ParaWhProductLendItemFilter()
                        {
                            SysNo       = sysno,
                            PriceSource = ProductStatus.产品价格来源.配送员进货价.GetHashCode()
                        });
                        if (null == modelItem)
                        {
                            continue;
                        }

                        //该商品总金额
                        var price = decimal.Zero;
                        //本次应还货数量
                        //应还货数量=借货数数量-已销售数量-已还货数量
                        var returnQuantity        = modelItem.LendQuantity - modelItem.SaleQuantity - modelItem.ReturnQuantity;
                        int currectReturnQuantity = 0;    //本次还货数量 2014-04-08 朱成果
                        if (returnNum >= returnQuantity)  //本次还货数量大于应还货数量
                        {
                            //入库数量等于计算出的应还货数量,加上历史还货数据
                            modelItem.ReturnQuantity += returnQuantity;
                            currectReturnQuantity     = returnQuantity;//记录本次还货数量 2014-04-08 朱成果
                            //从本次还货数中减去该商品应还货数量
                            returnNum = returnNum - returnQuantity;
                            //还货信用价格
                            price += returnQuantity * modelItem.Price;
                        }
                        else    //本次还货数量小于应还货数量
                        {
                            modelItem.ReturnQuantity += returnNum;
                            currectReturnQuantity     = returnNum;//记录本次还货数量 2014-04-08 朱成果
                            //还货信用价格
                            price += returnNum * modelItem.Price;
                            //还货数量已用完,置位0
                            returnNum = 0;
                        }
                        //更新还货信息,借货单
                        modelItem.LastUpdateDate = DateTime.Now;
                        modelItem.LastUpdateBy   = model.LastUpdateBy;
                        var id = IProductLendDao.Instance.UpdateWhProductLendItem(modelItem);    //更新数据库
                        if (id <= 0)
                        {
                            continue;
                        }

                        modelItem.Remarks = currectReturnQuantity.ToString();    //将本次还货数量以备注信息传入下一个方法CreateInStock 2014-04-08 朱成果
                        //借货单是否在借货列表中
                        var productLend = productLendList.SingleOrDefault(x => x.SysNo == modelItem.ProductLendSysNo);
                        if (null != productLend)    //已经存在,添加借货明细
                        {
                            productLend.ItemList.Add(modelItem);
                        }
                        else    //不存在,添加借货单跟明细
                        {
                            productLendList.Add(new WhProductLend()
                            {
                                SysNo    = modelItem.ProductLendSysNo,
                                ItemList = new List <WhProductLendItem> {
                                    modelItem
                                }
                            });
                        }
                        //更新配送员信用
                        DeliveryUserCreditBo.Instance.UpdateRemaining(model.WarehouseSysNo, deliveryUserSysNo, 0, price, "商品还货,借货单号:" + sysno);
                    }
                });
                #endregion

                #region 商品入库,借货单完结
                if (productLendList.Any())
                {
                    productLendList.ForEach(productLend =>
                    {
                        #region 完结借货单

                        CompleteProductLend(productLend.SysNo, model.LastUpdateBy);

                        #endregion

                        #region 商品入库

                        CreateInStock(model, productLend);

                        #endregion
                    });
                }
                #endregion

                result.StatusCode = 0;
                result.Status     = true;
            }
            else
            {
                result.Message = "还货商品不能为空!";
            }
            return(result);
        }
Esempio n. 21
0
 /// <summary>
 /// 更新入库单
 /// </summary>
 /// <param name="model">入库单明细</param>
 /// <returns>返回受影响行</returns>
 /// <remarks>2013-06-09 周唐炬 创建</remarks>
 public int UpdateStockIn(WhStockIn model)
 {
     return(IInStockDao.Instance.UpdateWhStockIn(model));
 }