/// <summary> /// 销退申请单申请保存 /// </summary> /// <param name="orderID"></param> /// <param name="detailList"></param> public void AddSalesOrderReturnAndDetail(SalesOrderReturn sor) { try { #region SalesOrer Save sor.OrderReturnCode = BusinessHandlerFactory.BillDocumentCodeBusinessHandler.GenerateBillDocumentCodeByTypeValue((int)BillDocumentType.SalesOrderReturn).Code; sor.CreateTime = DateTime.Now; sor.UpdateTime = DateTime.Now; #endregion this.Add(sor); foreach (SalesOrderReturnDetail sord in sor.SalesOrderReturnDetails) { if (sord.ReturnAmount > 0) { OutInventoryDetail oid = new OutInventoryDetail(); oid = BusinessHandlerFactory.OutInventoryDetailBusinessHandler.Get(sord.OutInventoryDetailID); oid.OutAmount -= sord.ReturnAmount; BusinessHandlerFactory.OutInventoryDetailBusinessHandler.Save(oid); BusinessHandlerFactory.SalesOrderReturnDetailBusinessHandler.Add(sord); sord.OrderReturnID = sor.Id; } } this.Save(); } catch (Exception ex) { this.HandleException("保存销退明细列表失败", ex); } }
/// <summary> /// 根据销售订单获取获取出库详细 /// </summary> /// <param name="SalesOrderId"></param> /// <returns></returns> public List <OutInventoryDetail> GetOutInventoryDetailFromOrderDetail(Guid orderID) { try { List <SalesOrderDetail> salesOrderDetails = BusinessHandlerFactory.SalesOrderDetailBusinessHandler .Fetch(p => p.SalesOrderID == orderID && p.OutAmount < (p.Amount - p.ReturnAmount)) //还有未发的货 .ToList(); List <OutInventoryDetail> detailList = new List <OutInventoryDetail>(); foreach (var sDetail in salesOrderDetails) { var detail = new OutInventoryDetail(); detail.ActualUnitPrice = sDetail.ActualUnitPrice; detail.Index = sDetail.Index; detail.productCode = sDetail.productCode; detail.productName = sDetail.productName; detail.BatchNumber = sDetail.BatchNumber; detail.UnitPrice = sDetail.UnitPrice; detail.Amount = sDetail.Amount - sDetail.OutAmount - sDetail.ReturnAmount; detail.Price = sDetail.Price; detail.DictionaryDosageCode = sDetail.DictionaryDosageCode; detail.SpecificationCode = sDetail.SpecificationCode; detail.PruductDate = sDetail.PruductDate; detail.OutValidDate = sDetail.OutValidDate; detail.FactoryName = sDetail.FactoryName; detail.MeasurementUnit = sDetail.MeasurementUnit; detail.Origin = sDetail.Origin; detail.Description = "数量正确"; DrugInventoryRecord drugInventoryRecord = BusinessHandlerFactory.DrugInventoryRecordBusinessHandler.Get(sDetail.DrugInventoryRecordID); if (drugInventoryRecord == null) { BusinessHandlerFactory.SalesOrderDetailBusinessHandler.Delete(sDetail.Id); continue; } WarehouseZone warehouseZone = BusinessHandlerFactory.WarehouseZoneBusinessHandler.Get(drugInventoryRecord.WarehouseZoneId); warehouseZone.Warehouse = BusinessHandlerFactory.WarehouseBusinessHandler.Get(warehouseZone.WarehouseId); detail.WarehouseName = warehouseZone.Warehouse.Name; detail.WarehouseCode = warehouseZone.Warehouse.Code; detail.WarehouseZoneCode = warehouseZone.Code; detail.WarehouseZoneName = warehouseZone.Name; detail.CanSaleNum = drugInventoryRecord.CanSaleNum; detail.SalesOrderId = sDetail.SalesOrderID; detail.SalesOrderDetailId = sDetail.Id; detailList.Add(detail); } return(detailList); } catch (Exception ex) { return(this.HandleException <List <OutInventoryDetail> >("根据销售订单好获取输出订单模型失败", ex)); } }
/// <summary> /// 销退申请单取消 /// </summary> /// <param name="orderID"></param> /// <param name="detailList"></param> public void CancelSalesOrderReturn(SalesOrderReturn sor) { try { sor.OrderReturnCancelCode = BusinessHandlerFactory.BillDocumentCodeBusinessHandler.GenerateBillDocumentCodeByTypeValue((int)BillDocumentType.OrderReturnCancel).Code; foreach (SalesOrderReturnDetail sord in sor.SalesOrderReturnDetails) { OutInventoryDetail oid = new OutInventoryDetail(); oid = BusinessHandlerFactory.OutInventoryDetailBusinessHandler.Get(sord.OutInventoryDetailID); oid.OutAmount += sord.ReturnAmount; BusinessHandlerFactory.OutInventoryDetailBusinessHandler.Save(oid); BusinessHandlerFactory.SalesOrderReturnDetailBusinessHandler.Delete(sord.Id); } sor.OrderReturnCancelTime = DateTime.Now; this.Save(sor); this.Save(); } catch (Exception ex) { this.HandleException("保存销退明细列表失败", ex); } }
/// <summary> ///销退单入库保存 /// </summary> /// <param name="so"></param> public void SaveReturnOrderInventory(SalesOrderReturn sor) { try { //处理库存的退库信息 List <SalesOrderReturnDetail> salesOrderReturnDetailList = sor.SalesOrderReturnDetails.ToList(); OutInventory oi = null; int index = 0; foreach (SalesOrderReturnDetail item in salesOrderReturnDetailList) { index++; Guid drugInventoryID = item.DrugInventoryRecordID; decimal returnQtyIn = item.CanInAmount; //获取药物库存实体 DrugInventoryRecord drugInventory = BusinessHandlerFactory.DrugInventoryRecordBusinessHandler.Get(drugInventoryID); //在销售单但未出库数量 累计当前订单明细数量 drugInventory.SalesCount -= returnQtyIn; drugInventory.CurrentInventoryCount += returnQtyIn; if (item.IsReissue) { drugInventory.OnSalesOrderCount += returnQtyIn; if (oi == null) { OutInventory oib = BusinessHandlerFactory.OutInventoryBusinessHandler.GetOutInventoryByOrderID(sor.SalesOrderID).ToList().First(); oi = new OutInventory(); oi.CreateUserId = oib.CreateUserId; oi.OrderCode = oib.OrderCode; oi.OrderOutInventoryCheckNumber = oib.OrderOutInventoryCheckNumber; oi.OrderOutInventoryCheckTime = oib.OrderOutInventoryCheckTime; oi.OrderOutInventoryCheckUserID = oib.OrderOutInventoryCheckUserID; oi.OrderOutInventoryTime = oib.OrderOutInventoryTime; oi.OrderOutInventoryUserID = oib.OrderOutInventoryUserID; oi.OutInventoryDate = DateTime.Now; oi.OutInventoryNumber = new BillDocumentCodeBusinessHandler(BusinessHandlerFactory.RepositoryProvider, null).GenerateBillDocumentCodeByTypeValue((int)BillDocumentType.SalesOrderOutInventory).Code; oi.ReviewerId = new Guid(); oi.SalesOrderID = oib.SalesOrderID; oi.storekeeperId = oib.storekeeperId; oi.Id = Guid.NewGuid(); oi.CreateTime = DateTime.Now; oi.Deleted = false; oi.Description = "销退补货出库单"; oi.OutInventoryStatus = OutInventoryStatus.Outing; oi.OutInventoryStatusValue = (int)OutInventoryStatus.Outing; oi.OutInventoryType = OutInventoryType.SalesReissue; oi.OutInventoryTypeValue = (int)OutInventoryType.SalesReissue; oi.SalesOrderReturnID = sor.Id; oi.TotalMoney = item.ActualUnitPrice * item.ReturnAmount; BusinessHandlerFactory.OutInventoryBusinessHandler.Add(oi); } OutInventoryDetail oid = new OutInventoryDetail(); oid.ActualUnitPrice = item.ActualUnitPrice; oid.Amount = item.ReturnAmount; oid.BatchNumber = item.BatchNumber; oid.CanSaleNum = BusinessHandlerFactory.DrugInventoryRecordBusinessHandler.Get(item.DrugInventoryRecordID).CanSaleNum + item.CanInAmount; oid.CreateTime = DateTime.Now; oid.CreateUserId = item.CreateUserId; oid.Deleted = false; oid.Description = "销退补货出库细节"; oid.DictionaryDosageCode = item.DictionaryDosageCode; oid.DrugInventoryRecordID = item.DrugInventoryRecordID; oid.FactoryName = item.FactoryName; oid.Id = Guid.NewGuid(); oid.Index = index; oid.MeasurementUnit = item.MeasurementUnit; oid.Origin = item.Origin; oid.OutAmount = item.ReturnAmount; oid.OutValidDate = item.OutValidDate; oid.Price = item.Price; oid.productCode = item.productCode; oid.productName = item.productName; oid.PruductDate = item.PruductDate; oid.SalesOrderDetailId = item.SalesOrderDetailID; oid.SalesOrderDetailReturnId = item.Id; oid.SalesOrderId = sor.SalesOrderID; oid.SalesOrderReturnId = sor.Id; oid.SalesOutInventoryID = oi.Id; oid.SpecificationCode = item.SpecificationCode; oid.StoreId = item.StoreId; oid.UnitPrice = item.UnitPrice; oid.UpdateTime = DateTime.Now; oid.UpdateUserId = item.UpdateUserId; OutInventoryDetail outinv = BusinessHandlerFactory.OutInventoryDetailBusinessHandler.Get(item.OutInventoryDetailID); oid.WarehouseCode = outinv.WarehouseCode; oid.WarehouseName = outinv.WarehouseName; oid.WarehouseZoneCode = outinv.WarehouseZoneCode; oid.WarehouseZoneName = outinv.WarehouseZoneName; BusinessHandlerFactory.OutInventoryDetailBusinessHandler.Add(oid); } //drugInventory.PurchaseReturnNumber = item.ReturnAmount; drugInventory.Valid = true; BusinessHandlerFactory.DrugInventoryRecordBusinessHandler.Save(drugInventory); //在销售单但未出库数量 累计当前订单明细数量 if (item.IsReissue) { drugInventory.OnSalesOrderCount += returnQtyIn; } } this.Save(sor); this.Save(); } catch (Exception ex) { this.HandleException("销退单入库保存失败", ex); } }