public void FillResolverByBin(Resolver resolver) { User user = userMgr.CheckAndLoadUser(resolver.UserCode); StorageBin storageBin = storageBinMgr.CheckAndLoadStorageBin(resolver.Input); #region 校验 if (!storageBin.IsActive) { throw new BusinessErrorException("Common.Business.Error.EntityInActive", storageBin.Code); } //if (!user.HasPermission(storageBin.Area.Location.Region.Code)) //{ // throw new BusinessErrorException("Common.Business.Error.NoPermission"); //} #endregion resolver.Description = storageBin.Description; resolver.BinCode = storageBin.Code; //库格一定为目的(操作) resolver.LocationCode = storageBin.Area.Location.Code; resolver.LocationToCode = storageBin.Area.Location.Code; resolver.Result = languageMgr.TranslateMessage("Warehouse.CurrentBinCode", resolver.UserCode, storageBin.Code); }
protected override void GetDetail(Resolver resolver) { PickList pickList = pickListMgr.LoadPickList(resolver.Input, true, true); resolver.Transformers = TransformerHelper.ConvertPickListDetailsToTransformers(pickList.PickListDetails); resolver.Result = languageMgr.TranslateMessage("Common.Business.PickList", resolver.UserCode) + ":" + resolver.Code; resolver.Command = BusinessConstants.CS_BIND_VALUE_TRANSFORMER; }
protected override void GetDetail(Resolver resolver) { InspectOrder inspectOrder = inspectOrderMgr.LoadInspectOrder(resolver.Code, true); resolver.Transformers = TransformerHelper.ConvertInspectDetailToTransformer(inspectOrder.InspectOrderDetails); resolver.Command = BusinessConstants.CS_BIND_VALUE_TRANSFORMER; resolver.Result = languageMgr.TranslateMessage("MasterData.Inventory.CurrentInspectOrder", resolver.UserCode, resolver.Code); }
/// <summary> /// 分步取消 /// </summary> /// <param name="resolver"></param> public void CancelOperation(Resolver resolver) { if (TotalCurrentQty(resolver) == 0) { resolver.Transformers = null; resolver.BinCode = null; resolver.Code = null; resolver.CodePrefix = null; resolver.Description = null; resolver.OrderType = null; resolver.PickBy = null; resolver.BarcodeHead = null; resolver.LocationCode = null; resolver.Command = BusinessConstants.CS_BIND_VALUE_TRANSFORMER; resolver.Result = string.Empty;//languageMgr.TranslateMessage("Resolver.Cancel.BinAllCancel", resolver.UserCode); return; } if (setDetailMgr.FindMaxSeq(resolver.Transformers) >= 0) { //最后一条记录的当前数设置CurrentQty为0 设置序号Sequence为0 //为了兼容带条码发货 int[] indexArray = this.FindMaxSeqTransformerDetailRowAndColumnIndex(resolver.Transformers); //resolver.Transformers[indexArray[0]].TransformerDetails[indexArray[1]] = null; if (resolver.CodePrefix == BusinessConstants.BARCODE_HEAD_FLOW) { resolver.Transformers[indexArray[0]].Qty -= resolver.Transformers[indexArray[0]].TransformerDetails[indexArray[1]].Qty; } resolver.Transformers[indexArray[0]].TransformerDetails[indexArray[1]].CurrentQty = 0; resolver.Transformers[indexArray[0]].TransformerDetails[indexArray[1]].Sequence = -1; //设置Bin为最后一库格 indexArray = this.FindMaxSeqTransformerDetailRowAndColumnIndex(resolver.Transformers); if (indexArray != null) { resolver.BinCode = resolver.Transformers[indexArray[0]].TransformerDetails[indexArray[1]].StorageBinCode; } } TransformerHelper.ProcessTransformer(resolver.Transformers); if (resolver.ModuleType == BusinessConstants.TRANSFORMER_MODULE_TYPE_PUTAWAY || resolver.ModuleType == BusinessConstants.TRANSFORMER_MODULE_TYPE_PICKUP || (IsHasTransformerDetail(resolver) && resolver.ModuleType != BusinessConstants.TRANSFORMER_MODULE_TYPE_PICKLIST)) { resolver.Command = BusinessConstants.CS_BIND_VALUE_TRANSFORMERDETAIL; if (resolver.BinCode != null && resolver.BinCode != string.Empty) { resolver.Result = languageMgr.TranslateMessage("Warehouse.CurrentBinCode", resolver.UserCode, resolver.BinCode); } } else { resolver.Command = BusinessConstants.CS_BIND_VALUE_TRANSFORMER; } resolver.BarcodeHead = string.Empty; }
protected override void ExecuteSubmit(Resolver resolver) { IList <Hu> huList = new List <Hu>(); if (resolver.Transformers != null) { foreach (Transformer transformer in resolver.Transformers) { if (transformer.TransformerDetails != null) { foreach (TransformerDetail transformerDetail in transformer.TransformerDetails) { Hu hu = huMgr.LoadHu(transformerDetail.HuId); huList.Add(hu); } } } } if (huList.Count > 0) { orderMgr.CreateOrder(resolver.Code, resolver.UserCode, huList); resolver.Result = languageMgr.TranslateMessage("Order.Reuse.Successfully", resolver.UserCode); resolver.Transformers = null; resolver.Command = BusinessConstants.CS_BIND_VALUE_TRANSFORMER; } else { throw new BusinessErrorException("Common.Business.Error.OprationFailed"); } }
public void CreateRepack(Resolver resolver) { IList <RepackDetail> repackDetailList = executeMgr.ConvertTransformerListToRepackDetail(resolver.Transformers); if (repackDetailList.Count == 0) { throw new BusinessErrorException("MasterData.Inventory.Repack.Error.RepackDetailEmpty"); } Repack repack = repackMgr.CreateRepack(repackDetailList, userMgr.LoadUser(resolver.UserCode, false, true)); resolver.Code = repack.RepackNo; resolver.Transformers = null; resolver.Command = BusinessConstants.CS_BIND_VALUE_TRANSFORMERDETAIL; resolver.Result = languageMgr.TranslateMessage("MasterData.Inventory.Repack.Successfully", resolver.UserCode); #region 打印 if (resolver.IsCSClient) { IList <Hu> huList = new List <Hu>(); repack = repackMgr.LoadRepack(resolver.Code, true); foreach (RepackDetail repackDet in repack.RepackDetails) { if (repackDet.IOType == BusinessConstants.IO_TYPE_OUT && repackDet.LocationLotDetail.Hu != null && repackDet.LocationLotDetail.Hu.PrintCount == 0) { huList.Add(repackDet.LocationLotDetail.Hu); } } resolver.PrintUrl = PrintHu(huList, resolver.UserCode); } #endregion }
private Resolver ShipOrder(Resolver resolver) { InProcessLocation inProcessLocation = null; if (resolver.CodePrefix == BusinessConstants.CODE_PREFIX_PICKLIST) { inProcessLocation = orderMgr.ShipOrder(resolver.Code, resolver.UserCode); } else { IList <InProcessLocationDetail> inProcessLocationDetailList = orderMgr.ConvertTransformerToInProcessLocationDetail(resolver.Transformers); if (inProcessLocationDetailList.Count > 0) { inProcessLocation = orderMgr.ShipOrder(inProcessLocationDetailList, resolver.UserCode); } else { throw new BusinessErrorException("OrderDetail.Error.OrderDetailShipEmpty"); } } #region 打印 if (resolver.NeedPrintAsn && resolver.IsCSClient) { resolver.PrintUrl = PrintASN(inProcessLocation); } #endregion resolver.Transformers = TransformerHelper.ConvertInProcessLocationDetailsToTransformers(inProcessLocation.InProcessLocationDetails); resolver.Result = languageMgr.TranslateMessage("Common.Business.ASNIs", resolver.UserCode, inProcessLocation.IpNo); resolver.Code = inProcessLocation.IpNo; resolver.Command = BusinessConstants.CS_BIND_VALUE_TRANSFORMER; return(resolver); }
protected override void ExecuteSubmit(Resolver resolver) { IList <MaterialIn> materialInList = executeMgr.ConvertTransformersToMaterialIns(resolver.Transformers); productLineInProcessLocationDetailMgr.RawMaterialIn(resolver.Code, materialInList, userMgr.CheckAndLoadUser(resolver.UserCode)); resolver.Transformers = null; resolver.Result = languageMgr.TranslateMessage("MasterData.MaterialIn.Successfully", resolver.UserCode, resolver.Code); resolver.Command = BusinessConstants.CS_BIND_VALUE_TRANSFORMER; }
protected override void ExecuteSubmit(Resolver resolver) { IList <InspectOrderDetail> inspectDetailList = executeMgr.ConvertResolverToInspectOrderDetails(resolver); inspectOrderMgr.ProcessInspectOrder(inspectDetailList, resolver.UserCode); resolver.Result = languageMgr.TranslateMessage("MasterData.InspectOrder.Confirm.Successfully", resolver.UserCode, resolver.Code); resolver.Transformers = null; resolver.Command = BusinessConstants.CS_BIND_VALUE_TRANSFORMER; }
protected override void SetDetail(Resolver resolver) { if (resolver.CodePrefix == string.Empty) { throw new BusinessErrorException("Common.Business.Error.ScanFlowFirst"); } if (resolver.ModuleType == BusinessConstants.TRANSFORMER_MODULE_TYPE_PRODUCTIONRECEIVE) { LocationLotDetail locationLotDetail = locationLotDetailMgr.CheckLoadHuLocationLotDetail(resolver.Input, resolver.UserCode); TransformerDetail newTransformerDetail = TransformerHelper.ConvertLocationLotDetailToTransformerDetail(locationLotDetail, false); resolver.AddTransformerDetail(newTransformerDetail); } else { setDetailMgr.MatchReceive(resolver); if (resolver.BinCode != null && resolver.BinCode != string.Empty) { resolver.Result = languageMgr.TranslateMessage("Warehouse.CurrentBinCode", resolver.UserCode, resolver.BinCode); } } }
public void CreateInspectOrder(Resolver resolver) { IList<LocationLotDetail> locationLotDetailList = executeMgr.ConvertTransformersToLocationLotDetails(resolver.Transformers, false); if (locationLotDetailList.Count == 0) { throw new BusinessErrorException("MasterData.Inventory.Repack.Error.RepackDetailEmpty"); } User user = userMgr.LoadUser(resolver.UserCode, false, true); InspectOrder inspectOrder = inspectOrderMgr.CreateInspectOrder(locationLotDetailList, user); resolver.Result = languageMgr.TranslateMessage("MasterData.InspectOrder.Create.Successfully", resolver.UserCode, inspectOrder.InspectNo); resolver.Transformers = null; resolver.Code = inspectOrder.InspectNo; resolver.Command = BusinessConstants.CS_BIND_VALUE_TRANSFORMER; }
protected override void ExecuteSubmit(Resolver resolver) { if (resolver.Transformers == null || resolver.Transformers.Count < 1) { throw new BusinessErrorException("PickUp.Error.HuDetailEmpty"); } IList <LocationLotDetail> locationLotDetailList = executeMgr.ConvertTransformersToLocationLotDetails(resolver.Transformers, false); locationMgr.InventoryPick(locationLotDetailList, resolver.UserCode); resolver.Result = languageMgr.TranslateMessage("Warehouse.PickUp.Successfully", resolver.UserCode); resolver.Transformers = null; resolver.Command = BusinessConstants.CS_BIND_VALUE_TRANSFORMERDETAIL; }
protected override void ExecuteSubmit(Resolver resolver) { User user = userMgr.LoadUser(resolver.UserCode, false, true); IDictionary <string, decimal> itemDictionary = new Dictionary <string, decimal>(); foreach (Transformer transformer in resolver.Transformers) { itemDictionary.Add(transformer.ItemCode, transformer.CurrentQty); } productLineInProcessLocationDetailMgr.RawMaterialBackflush(resolver.Code, itemDictionary, user); resolver.Result = languageMgr.TranslateMessage("MasterData.BackFlush.Successfully", resolver.UserCode, resolver.Code); resolver.Transformers = null; resolver.Command = BusinessConstants.CS_BIND_VALUE_TRANSFORMER; }
public void CreateDevanning(Resolver resolver) { IList <RepackDetail> repackDetailList = executeMgr.ConvertTransformerListToRepackDetail(resolver.Transformers); if (repackDetailList.Count == 0) { throw new BusinessErrorException("MasterData.Inventory.Repack.Error.RepackDetailEmpty"); } //KSS 客户化需求, 拆箱并上架 foreach (RepackDetail repackDetail in repackDetailList) { repackDetail.StorageBinCode = resolver.BinCode; } Repack repack = repackMgr.CreateDevanning(repackDetailList, this.userMgr.LoadUser(resolver.UserCode, false, true)); resolver.Code = repack.RepackNo; resolver.Result = languageMgr.TranslateMessage("MasterData.Inventory.Devanning.Successfully", resolver.UserCode, resolver.Transformers[0].TransformerDetails[0].HuId); resolver.Transformers = null; }
public void TransferOrder(Resolver resolver) { IList <OrderDetail> orderDetails = executeMgr.ConvertResolverToOrderDetails(resolver); Receipt receipt = orderMgr.QuickReceiveOrder(resolver.Code, orderDetails, resolver.UserCode); #region Print if (resolver.NeedPrintReceipt && resolver.IsCSClient) { receipt.ReceiptDetails = receiptDetailMgr.SummarizeReceiptDetails(receipt.ReceiptDetails); IList <object> list = new List <object>(); list.Add(receipt); list.Add(receipt.ReceiptDetails); resolver.PrintUrl = reportMgr.WriteToFile("ReceiptNotes.xls", list); } #endregion resolver.Result = languageMgr.TranslateMessage("Receipt.Transfer.Successfully", resolver.UserCode, receipt.ReceiptNo); resolver.Code = receipt.ReceiptNo; resolver.Transformers = null;//TransformerHelper.ConvertReceiptToTransformer(receipt.ReceiptDetails); resolver.Command = BusinessConstants.CS_BIND_VALUE_TRANSFORMER; }
protected override void SetDetail(Resolver resolver) { #region Hu状态查询 if (resolver.ModuleType == BusinessConstants.TRANSFORMER_MODULE_TYPE_HUSTATUS) { Hu hu = null; //检查库存 LocationLotDetail locationLotDetail = locationLotDetailMgr.LoadHuLocationLotDetail(resolver.Input); if (locationLotDetail == null)//库存中没有,检查HuDet { hu = huMgr.CheckAndLoadHu(resolver.Input); //修正状态 if (hu.Status == BusinessConstants.CODE_MASTER_HU_STATUS_VALUE_INVENTORY) { hu.Status = "ERROR"; } } else { hu = locationLotDetail.Hu; //修正库位 数量 hu.Location = locationLotDetail.Location.Code; hu.Qty = locationLotDetail.Qty / hu.UnitQty; if (hu.Status == BusinessConstants.CODE_MASTER_HU_STATUS_VALUE_INVENTORY) { if (this.locationMgr.IsHuOcuppyByPickList(resolver.Input)) { hu.Status += languageMgr.TranslateMessage("MasterDate.PickList.Ocuppied", resolver.UserCode); } } } TransformerDetail transformerDetail = TransformerHelper.ConvertHuToTransformerDetail(hu); if (locationLotDetail != null && locationLotDetail.StorageBin != null) { transformerDetail.StorageBinCode = locationLotDetail.StorageBin.Code; } resolver.Transformers = null; resolver.AddTransformerDetail(transformerDetail); } #endregion #region 盘点 else { if (resolver.WorkingHours == null || resolver.WorkingHours.Count != 2) { //出错 throw new BusinessErrorException("CycCnt.Error.ScanCycCountFirst"); } if (resolver.LocationCode == null || resolver.LocationCode == string.Empty) { throw new BusinessErrorException("CycCnt.Error.HasNoLocation"); } //如果指定了库格或启用了高级仓库管理,需要先扫描库格. //if ((resolver.BinCode == null || resolver.BinCode == string.Empty) // && (resolver.WorkingHours[1].Length > 0 || resolver.IsPickFromBin)) //{ // throw new BusinessErrorException("CycCnt.Error.ScanStorageBinFirst"); //} //检查当月盘点重复扫描 this.cycleCountMgr.CheckHuExistThisCount(resolver.Input); Hu hu = huMgr.CheckAndLoadHu(resolver.Input); if (hu.Status == BusinessConstants.CODE_MASTER_HU_STATUS_VALUE_CLOSE) { throw new BusinessErrorException("CycCnt.Error.HuStatusError", hu.Status); } if (resolver.WorkingHours[0].Length > 0 && !resolver.WorkingHours[0].Contains(hu.Item.Code)) { if (resolver.WorkingHours[0].Length > 0) { throw new BusinessErrorException("CycCnt.Error.NotContainTheItem"); } else { //nothing todo } } TransformerDetail transformerDetail = Utility.TransformerHelper.ConvertHuToTransformerDetail(hu); transformerDetail.StorageBinCode = resolver.BinCode; resolver.AddTransformerDetail(transformerDetail); } #endregion }
public void ReceiveWorkOrder(Resolver resolver) { IList <ReceiptDetail> receiptDetails = orderMgr.ConvertTransformerToReceiptDetail(resolver.Transformers); //Receipt receipt = new Receipt(); //foreach (Transformer transformer in resolver.Transformers) //{ // ReceiptDetail receiptDetail = new ReceiptDetail(); // receiptDetail.OrderLocationTransaction = orderLocationTransactionMgr.LoadOrderLocationTransaction(transformer.OrderLocTransId); // receiptDetail.HuId = null; // receiptDetail.ReceivedQty = transformer.CurrentQty; // receiptDetail.RejectedQty = transformer.CurrentRejectQty; // receiptDetail.ScrapQty = transformer.ScrapQty; // receiptDetail.Receipt = receipt; // receipt.AddReceiptDetail(receiptDetail); //} List <WorkingHours> workingHoursList = new List <WorkingHours>(); foreach (string[] stringArray in resolver.WorkingHours) { WorkingHours workingHours = new WorkingHours(); workingHours.Employee = employeeMgr.LoadEmployee(stringArray[0]); workingHours.Hours = Convert.ToDecimal(stringArray[1]); workingHoursList.Add(workingHours); } Receipt receiptResult = orderMgr.ReceiveOrder(receiptDetails, resolver.UserCode, null, null, workingHoursList, true, resolver.IsOddCreateHu); //(receiptDetailList, this.CurrentUser, null, null, null, true, isOddCreateHu); //OrderHead orderHead = orderHeadMgr.LoadOrderHead(resolver.Code); IList <Hu> huList = new List <Hu>(); IList <ReceiptDetail> receiptDetailList = receiptResult.ReceiptDetails; if (resolver.AutoPrintHu) { if (receiptDetailList == null || receiptDetailList.Count == 0) { throw new BusinessErrorException("Inventory.Error.PrintHu.ReceiptDetail.Required"); } foreach (ReceiptDetail receiptDetail in receiptDetailList) { if (receiptDetail.HuId != null) { Hu hu = huMgr.LoadHu(receiptDetail.HuId); if (hu != null) { huList.Add(hu); } } } if (huList.Count > 0) { IList <object> huDetailObj = new List <object>(); huDetailObj.Add(huList); huDetailObj.Add(resolver.UserCode); resolver.PrintUrl = reportMgr.WriteToFile("BarCode.xls", huDetailObj, "BarCode.xls"); } } resolver.Transformers = null; string huString = string.Empty; foreach (Hu hu in huList) { huString += " " + hu.HuId; } resolver.Result = languageMgr.TranslateMessage("MasterData.WorkOrder.OrderHead.Receive.Successfully", resolver.UserCode, resolver.Code); if (huList.Count > 0) { resolver.Result += languageMgr.TranslateMessage("Inventory.CreateHu.Successful", resolver.UserCode, huString); } resolver.Command = BusinessConstants.CS_BIND_VALUE_TRANSFORMER; }
protected override bool FillValuesImpl(String templateFileName, IList <object> list) { try { if (list == null || list.Count < 2) { return(false); } OrderHead orderHead = (OrderHead)(list[0]); IList <OrderDetail> orderDetails = (IList <OrderDetail>)(list[1]); if (orderHead == null || orderDetails == null || orderDetails.Count == 0) { return(false); } //this.SetRowCellBarCode(0, 2, 8); this.barCodeFontName = this.GetBarcodeFontName(2, 8); this.CopyPage(orderDetails.Count); this.FillHead(orderHead); int pageIndex = 1; int rowIndex = 0; int rowTotal = 0; foreach (OrderDetail orderDetail in orderDetails) { // No. this.SetRowCell(pageIndex, rowIndex, 0, "" + orderDetail.Sequence); //零件号 Item Code this.SetRowCell(pageIndex, rowIndex, 1, orderDetail.Item.Code); //参考号 Ref No. this.SetRowCell(pageIndex, rowIndex, 2, orderDetail.ReferenceItemCode); //描述Description this.SetRowCell(pageIndex, rowIndex, 3, orderDetail.Item.Description); //单位Unit this.SetRowCell(pageIndex, rowIndex, 4, orderDetail.Item.Uom.Code); //单包装UC this.SetRowCell(pageIndex, rowIndex, 5, orderDetail.UnitCount.ToString("0.########")); //需求 Request 包装 int UCs = (int)Math.Ceiling(orderDetail.OrderedQty / orderDetail.UnitCount); this.SetRowCell(pageIndex, rowIndex, 6, UCs.ToString()); //需求 Request 零件数 this.SetRowCell(pageIndex, rowIndex, 7, orderDetail.OrderedQty.ToString("0.########")); //发货数 this.SetRowCell(pageIndex, rowIndex, 8, orderDetail.ShippedQty.HasValue ? orderDetail.ShippedQty.Value.ToString("0.########") : string.Empty); //实收 Received 包装 this.SetRowCell(pageIndex, rowIndex, 9, ""); //实收 Received 零件数 this.SetRowCell(pageIndex, rowIndex, 10, orderDetail.ReceivedQty.HasValue ? orderDetail.ReceivedQty.Value.ToString("0.########") : string.Empty); //批号/备注 if (orderHead.Type == BusinessConstants.CODE_MASTER_ORDER_TYPE_VALUE_TRANSFER) { IList <LocationLotDetail> locationLotDetailList = locationLotDetailMgr.GetHuLocationLotDetail(orderDetail.DefaultLocationFrom.Code, null, orderDetail.Item.Code, null, false); decimal qty = (from l in locationLotDetailList select l.Qty).Sum(); decimal shippedQty = orderDetail.ShippedQty.HasValue ? orderDetail.ShippedQty.Value : 0; if (qty < orderDetail.OrderedQty - shippedQty) { string memo = languageMgr.TranslateMessage("MasterData.PickList.NotEnoughInventory", orderHead.CreateUser.Code); this.SetRowCell(pageIndex, rowIndex, 11, memo); } } else { this.SetRowCell(pageIndex, rowIndex, 11, string.Empty); } if (this.isPageBottom(rowIndex, rowTotal))//页的最后一行 { pageIndex++; rowIndex = 0; } else { rowIndex++; } rowTotal++; } this.sheet.DisplayGridlines = false; this.sheet.IsPrintGridlines = false; if (orderHead.IsPrinted == null || orderHead.IsPrinted == false) { orderHead.IsPrinted = true; orderHeadMgr.UpdateOrderHead(orderHead); } } catch (Exception) { return(false); } return(true); }