/// <summary> /// 调拨出库单出库 /// </summary> /// <param name="model"></param> /// <returns></returns> /// <remarks>2016-07-01 陈海裕 创建</remarks> public Result DoAAOutConfirm(WhInventoryOut model) { var result = new Result() { Status = false, Message = "出库失败" }; var wareList = WhWarehouseBo.Instance.GetAllWarehouseList(); //出库单是否处于待出库状态 var tempInvenOut = BLL.Warehouse.WhInventoryOutBo.Instance.GetWhInventoryOut(model.SysNo); if (tempInvenOut == null) { result.Message = "出库单不存在"; return(result); } model.ItemList = BLL.Warehouse.WhInventoryOutBo.Instance.GetInventoryOutItemList(model.SysNo, 1, 4000).TData.ToList(); //检查实际出库数量 foreach (var item in model.ItemList) { if (BLL.Warehouse.PdProductStockBo.Instance.HasProductStock(model.WarehouseSysNo, item.ProductSysNo, item.RealStockOutQuantity)) { var warehouseName = BLL.Warehouse.WhWarehouseBo.Instance.GetWarehouseName(model.WarehouseSysNo); result.Message = "仓库[" + warehouseName + "]商品(" + item.ProductSysNo + ")出库数量大于库存数"; return(result); } } var tempOutWarehouse = wareList.First(p => p.SysNo == model.WarehouseSysNo); var tempInStock = AtAllocationBo.Instance.GetAtAllocationEntity(tempInvenOut.SourceSysNO); var tempInWarehouse = wareList.First(p => p.SysNo == tempInStock.EnterWarehouseSysNo); int currentUserSysNo = BLL.Authentication.AdminAuthenticationBo.Instance.Current == null ? 12 : BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base.SysNo; //var tempOutItemList = BLL.Warehouse.WhInventoryOutBo.Instance.GetInventoryOutItemList(model.SysNo, 1, 4000).TData; foreach (var item in model.ItemList) { //减库存 BLL.Warehouse.PdProductStockBo.Instance.UpdateStockQuantity(model.WarehouseSysNo, item.ProductSysNo, item.RealStockOutQuantity); // 更新出库单实际出库数量RealStockOutQuantity //WhInventoryOutItem tempOutItem = tempOutItemList.Where(o => o.SysNo == item.SysNo).FirstOrDefault(); item.LastUpdateBy = currentUserSysNo; item.LastUpdateDate = DateTime.Now; item.RealStockOutQuantity = item.RealStockOutQuantity; BLL.Warehouse.WhInventoryOutBo.Instance.UpdateWhInventoryOutItem(item); } //更新出库单状态 tempInvenOut.LastUpdateBy = currentUserSysNo; tempInvenOut.LastUpdateDate = DateTime.Now; tempInvenOut.Status = (int)WarehouseStatus.库存调拨出库单状态.已出库; if (BLL.Warehouse.WhInventoryOutBo.Instance.UpdateWhInventoryOut(tempInvenOut) > 0) { result.Status = true; result.Message = "出库成功"; } return(result); }
/// <summary> /// 更新出库单 /// </summary> /// <param name="model">出库单明细</param> /// <returns>出库单系统编号</returns> /// <remarks>2016-06-24 王耀发 创建</remarks> public override int UpdateWhInventoryOut(WhInventoryOut model) { var rowsAffected = Context.Update <WhInventoryOut>("WhInventoryOut", model) .AutoMap(x => x.SysNo, x => x.ItemList).Where(x => x.SysNo) .Execute(); if (model.ItemList != null) { foreach (var item in model.ItemList) { UpdateWhInventoryOutItem(item); } } return(rowsAffected); }
/// <summary> /// 生成调拨出库单 /// </summary> /// <param name="atAllocationSysNo"></param> /// <returns></returns> /// <remarks>2016-06-30 陈海裕 创建</remarks> public int CreateALCInventoryOutOrder(int atAllocationSysNo) { var atAllocationEntity = BLL.Warehouse.AtAllocationBo.Instance.GetAtAllocationEntity(atAllocationSysNo); var itemList = BLL.Warehouse.AtAllocationBo.Instance.GetAtAllocationProducts(atAllocationSysNo); if (atAllocationEntity == null || itemList == null || !itemList.Any()) { return(0); } WhInventoryOut invenOutEntity = new WhInventoryOut(); invenOutEntity.CreatedBy = BLL.Authentication.AdminAuthenticationBo.Instance.Current == null ? 12 : BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base.SysNo; invenOutEntity.CreatedDate = DateTime.Now; invenOutEntity.DeliveryType = 0; invenOutEntity.IsPrinted = 0; invenOutEntity.LastUpdateBy = invenOutEntity.CreatedBy; invenOutEntity.LastUpdateDate = invenOutEntity.CreatedDate; invenOutEntity.Remarks = "调拨出库"; invenOutEntity.SourceSysNO = atAllocationEntity.SysNo; invenOutEntity.SourceType = (int)WarehouseStatus.出库单来源.调货单; invenOutEntity.Stamp = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue; invenOutEntity.Status = (int)WarehouseStatus.采购退货出库单状态.待出库; invenOutEntity.TransactionSysNo = BLL.Basic.ReceiptNumberBo.Instance.GetAllocationOutNo(); invenOutEntity.WarehouseSysNo = atAllocationEntity.OutWarehouseSysNo; invenOutEntity.ItemList = new List <WhInventoryOutItem>(); foreach (var item in itemList) { var productName = BLL.Product.PdProductBo.Instance.GetProductEasName(item.ProductSysNo); WhInventoryOutItem temp = new WhInventoryOutItem(); temp.CreatedBy = invenOutEntity.CreatedBy; temp.CreatedDate = invenOutEntity.CreatedDate; temp.LastUpdateBy = invenOutEntity.CreatedBy; temp.LastUpdateDate = invenOutEntity.CreatedDate; temp.ProductName = productName; temp.ProductSysNo = item.ProductSysNo; temp.RealStockOutQuantity = item.Quantity; //0 temp.Remarks = ""; temp.SourceItemSysNo = item.SysNo; temp.StockOutQuantity = item.Quantity; invenOutEntity.ItemList.Add(temp); } return(WhInventoryOutBo.Instance.CreateWhInventoryOut(invenOutEntity)); }
/// <summary> /// 插入出库单 /// </summary> /// <param name="model">出库单明细</param> /// <returns>出库单系统编号</returns> /// <remarks>2016-06-24 王耀发 创建</remarks> public override int InsertWhInventoryOut(WhInventoryOut model) { var sysNo = Context.Insert <WhInventoryOut>("WhInventoryOut", model) .AutoMap(x => x.SysNo, x => x.ItemList) .ExecuteReturnLastId <int>("SysNo"); model.SysNo = sysNo; #region 添加出库单明细 if (null != model.ItemList && model.ItemList.Count > 0) { foreach (var item in model.ItemList) { item.InventoryOutSysNo = sysNo; InsertWhInventoryOutItem(item); } } #endregion return(sysNo); }
/// <summary> /// 审核采购退货单 /// </summary> /// <param name="sysNo">采购单编号</param> /// <remarks>2016-6-18 王耀发 创建</remarks> public bool AuditPurchaseReturn(int sysNo) { int CreatedBy = BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base.SysNo; var purchaseReturn = IPrPurchaseReturnDao.Instance.GetPrPurchaseReturn(sysNo); if (UpdateStatus(sysNo, (int)PurchaseStatus.采购退货单状态.已审核)) { var receiptVoucherMod = new FnReceiptVoucher(); receiptVoucherMod.TransactionSysNo = ""; receiptVoucherMod.IncomeType = (int)Hyt.Model.WorkflowStatus.FinanceStatus.收款单收入类型.预付; receiptVoucherMod.Source = (int)Hyt.Model.WorkflowStatus.FinanceStatus.收款来源类型.采购退货单; receiptVoucherMod.SourceSysNo = sysNo; receiptVoucherMod.IncomeAmount = purchaseReturn.ReturnTotalMoney; receiptVoucherMod.ReceivedAmount = 0; receiptVoucherMod.Status = (int)Hyt.Model.WorkflowStatus.FinanceStatus.收款单状态.待确认; receiptVoucherMod.Remark = "采购退货收款单"; receiptVoucherMod.CreatedBy = CreatedBy; receiptVoucherMod.CreatedDate = DateTime.Now; receiptVoucherMod.ConfirmedBy = 0; receiptVoucherMod.ConfirmedDate = DateTime.Now; receiptVoucherMod.LastUpdateBy = CreatedBy; receiptVoucherMod.LastUpdateDate = DateTime.Now; receiptVoucherMod.PaymentType = null; FinanceBo.Instance.InsertReceiptVoucher(receiptVoucherMod); //创建出库单 WhInventoryOut outEntity = new WhInventoryOut { TransactionSysNo = ReceiptNumberBo.Instance.GetPurchaseOutNo(), WarehouseSysNo = purchaseReturn.WarehouseSysNo, SourceType = (int)WarehouseStatus.出库单来源.采购单, SourceSysNO = sysNo, DeliveryType = 0, Remarks = "采购退货出库", IsPrinted = 0, Status = (int)WarehouseStatus.采购退货出库单状态.待出库, CreatedBy = CreatedBy, CreatedDate = DateTime.Now, LastUpdateBy = CreatedBy, LastUpdateDate = DateTime.Now, Stamp = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue, }; outEntity.ItemList = new List <WhInventoryOutItem>(); var purchaseReturnDetails = BLL.Purchase.PrPurchaseReturnDetailsBo.Instance.GetPurchaseReturnDetailsList(sysNo); PrPurchase purMod = PrPurchaseBo.Instance.GetPrPurchaseInfo(purchaseReturn.PurchaseSysNo); //出库明细 foreach (var item in purchaseReturnDetails) { Hyt.Model.PdProduct Product = Hyt.BLL.Product.PdProductBo.Instance.GetProductBySysNo(item.ProductSysNo); outEntity.ItemList.Add(new WhInventoryOutItem { ProductSysNo = item.ProductSysNo, ProductName = Product.ProductName, StockOutQuantity = item.ReturnQuantity, RealStockOutQuantity = 0, SourceItemSysNo = item.SysNo,//记录出库单明细来源单号(采购退货单明细编号) Remarks = "", CreatedBy = CreatedBy, CreatedDate = DateTime.Now, LastUpdateBy = CreatedBy, LastUpdateDate = DateTime.Now }); } var inSysNo = WhInventoryOutBo.Instance.CreateWhInventoryOut(outEntity); //保存出库单数据 } return(true); }
/// <summary> /// 插入出库单 /// </summary> /// <param name="model">出库单明细</param> /// <returns>出库单系统编号</returns> /// <remarks>2016-06-24 王耀发 创建</remarks> public int CreateWhInventoryOut(WhInventoryOut model) { return(IWhInventoryOutDao.Instance.InsertWhInventoryOut(model)); }
/// <summary> /// 更新出库单 /// </summary> /// <param name="model">出库单明细</param> /// <returns>返回受影响行</returns> /// <remarks>2013-06-09 王耀发 创建</remarks> public int UpdateWhInventoryOut(WhInventoryOut model) { return(IWhInventoryOutDao.Instance.UpdateWhInventoryOut(model)); }
/// <summary> /// 商品出库 /// </summary> /// <param name="model">出库单实体</param> /// <param name="user">操作人</param> /// <returns>返回操作状态(Result.StatusCode大于等于0成功,小于0失败)</returns> /// 2016-06-24 王耀发 创建 private void ItemInventoryOut(WhInventoryOut model, SyUser user) { if (model == null || model.ItemList == null || !model.ItemList.Any()) { return; } var purchaseList = new List <PurchaseInfo>(); var warhouseInfo = BLL.Warehouse.WhWarehouseBo.Instance.GetWarehouse(model.WarehouseSysNo); var purchaseReturnInfo = Hyt.DataAccess.Purchase.IPrPurchaseReturnDao.Instance.GetPrPurchaseReturn(model.SourceSysNO);//采购退货单 var _purchaseList = BLL.Purchase.PrPurchaseBo.Instance.GetPurchaseDetailsByPurchaseSysNo(purchaseReturnInfo.PurchaseSysNo); model.ItemList.ForEach(x => { var data = IWhInventoryOutDao.Instance.GetWhInventoryOutItem(x.SysNo); x.SourceItemSysNo = data.SourceItemSysNo; if (data == null) { throw new HytException(string.Format("该出库{0}无效!", x.ProductName)); } var count = data.RealStockOutQuantity + x.RealStockOutQuantity; if (count > data.StockOutQuantity) { throw new HytException("实际商品出库数量总和超出商品出库数量,请检查!"); } data.RealStockOutQuantity = count; data.LastUpdateBy = user.SysNo; data.LastUpdateDate = DateTime.Now; UpdateWhInventoryOutItem(data); //更新退货明细的出库商量 PrPurchaseReturnDetailsBo.Instance.UpdateOutQuantity(model.SourceSysNO, data.ProductSysNo, count); //减库存操作 Hyt.BLL.Warehouse.PdProductStockBo.Instance.UpdateStockQuantity(model.WarehouseSysNo, data.ProductSysNo, -1 * x.RealStockOutQuantity); var purchaseItemInfo = _purchaseList.Where(j => j.ProductSysNo == x.ProductSysNo).FirstOrDefault(); var purchaseInfo = new PurchaseInfo() { WarehouseSysNo = model.WarehouseSysNo, FDate = model.CreatedDate.ToString(), WarehouseNumber = warhouseInfo.ErpCode, Quantity = data.RealStockOutQuantity, FNote = "平台出库单明细系统编号:" + x.SysNo, Price = purchaseItemInfo.Money, Amount = purchaseItemInfo.Money * data.RealStockOutQuantity, ErpCode = purchaseItemInfo.ErpCode, SettleDate = model.CreatedDate.ToString(), }; purchaseList.Add(purchaseInfo); }); //更新退货单的出库商量 PrPurchaseReturnBo.Instance.UpdateOutQuantity(model.SourceSysNO); #region 步金蝶 if (model.SourceType == (int)WarehouseStatus.出库单来源.采购单) { string flowIdentify = model.SourceSysNO.ToString(); //采购订单系统编号 string description = model.SysNo.ToString(); //入库单号 var client = Extra.Erp.Kis.KisProviderFactory.CreateProvider(); //单据编号 //string voucherNo=EasBo.Instance.GetVoucherNoByTlowIdentify((int)Extra.Erp.Model.接口类型.采购入库退货, purchaseReturnInfo.PurchaseSysNo.ToString()); string voucherNo = purchaseReturnInfo.PurchaseSysNo.ToString();//采购单系统编号 client.PurchaseOutStock(purchaseList, description, model.SourceSysNO.ToString(), voucherNo); } #endregion }
/// <summary> /// 更新出库单 /// </summary> /// <param name="model">出库单明细</param> /// <returns>出库单系统编号</returns> /// <remarks>2016-06-24 王耀发 创建</remarks> public abstract int UpdateWhInventoryOut(WhInventoryOut model);
/// <summary> /// 插入出库单 /// </summary> /// <param name="model">出库单明细</param> /// <returns>出库单系统编号</returns> /// <remarks>2016-06-24 王耀发 创建</remarks> public abstract int InsertWhInventoryOut(WhInventoryOut model);
/// <summary> /// 完成调拨 /// </summary> /// <param name="model">出库单</param> /// <remarks>2018-01-17 杨浩 创建</remarks> public Hyt.Model.Result CompleteTransfer(WhInventoryOut model) { var result = new Hyt.Model.Result() { Status = false }; var user = BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base; #region 出库 // 操作用户是否有相应的仓库权限 if (!AdminAuthenticationBo.Instance.HasWareHousePrivilege(model.WarehouseSysNo)) { result.Message = "用户没有编号为" + model.WarehouseSysNo + "仓库的权限"; return(result); } //出库 var tempResult = BLL.Warehouse.AtAllocationBo.Instance.DoAAOutConfirm(model); if (!tempResult.Status) { return(tempResult); } //生成入库单 int whStockInSysNo = BLL.Logistics.LgDeliveryBo.Instance.CreateInStockByInventoryOut(model, user.SysNo, "仓库调拨出库生成入库单"); if (whStockInSysNo <= 0) { result.Message = "生成入库单失败!"; return(result); } var temInvenOut = BLL.Warehouse.WhInventoryOutBo.Instance.GetWhInventoryOut(model.SysNo); //更新库存调拨单状态 var atAllocationInfo = BLL.Warehouse.AtAllocationBo.Instance.GetAtAllocationEntity(temInvenOut.SourceSysNO); if (atAllocationInfo == null) { result.Message = "操作失败,调拨单不存在!"; return(result); } #endregion #region 入库 var modelIn = GetStockIn(whStockInSysNo); if (modelIn == null || model.Status == WarehouseStatus.入库单状态.作废.GetHashCode()) { throw new HytException("入库不存在或已经作废,操作无效请检查!"); } modelIn.ItemList = GetStockInItemList(whStockInSysNo); if (modelIn.ItemList == null) { result.Message = "入库单明细不能为空!"; return(result); } modelIn.ItemList = modelIn.ItemList.Select(x => new WhStockInItem() { SysNo = x.SysNo, StockInSysNo = x.StockInSysNo, RealStockInQuantity = x.StockInQuantity, ProductSysNo = x.ProductSysNo, ProductName = x.ProductName, StockInQuantity = x.StockInQuantity, SourceItemSysNo = x.SourceItemSysNo, Remarks = x.Remarks, CreatedBy = x.CreatedBy, CreatedDate = x.CreatedDate, LastUpdateDate = x.LastUpdateDate, ProductErpCode = x.ProductErpCode, }).ToList(); //商品入库 ItemInStock(modelIn, user); // 更新调拨单状态 if (modelIn.SourceType != (int)WarehouseStatus.入库单据类型.调拨出库单) { result.Message = "来源单据类型必须是调拨出库单!"; return(result); } atAllocationInfo.Status = (int)Model.WorkflowStatus.WarehouseStatus.库存调拨单状态.已完成; BLL.Warehouse.AtAllocationBo.Instance.UpdateAtAllocation(atAllocationInfo); #endregion result.Status = true; return(result); }