private void CreateMaterialSheftStock(string palletNo, string materialCode, string materialNo, double total) { var entity = new TX33_MtrShfStk(); entity.F33_PalletNo = palletNo; entity.F33_MaterialCode = materialCode; entity.F33_MaterialLotNo = materialNo; entity.F33_Amount = total; entity.F33_StockFlag = Constants.TX33_StkFlg.Store.ToString("D"); entity.F33_AddDate = DateTime.Now; entity.F33_UpdateDate = DateTime.Now; _unitOfWork.MaterialShelfStockRepository.Add(entity); }
/// <summary> /// This function is for handling restoraging material. /// </summary> /// <param name="palletNo"></param> /// <param name="materialCode"></param> /// <param name="restorageMaterialItems"></param> public void RestoreMaterial(string palletNo, string materialCode, string terminalNo, IList <RestorageMaterialItem> restorageMaterialItems) { // Material shelf statuses find. var materialShelfStatuses = _unitOfWork.MaterialShelfStatusRepository.GetAll(); // Suitable location into which material should be stored. TX31_MtrShfSts emptyLocation = null; emptyLocation = materialShelfStatuses.FirstOrDefault(x => x.F31_PalletNo.Trim().Equals(palletNo) && x.F31_TerminalNo.Trim().Equals(terminalNo)); if (emptyLocation == null) { emptyLocation = materialShelfStatuses.FirstOrDefault(x => x.F31_ShelfStatus.Equals("0")); } if (emptyLocation == null) { throw new Exception("No empty location has been found"); } // Find a list of materials. var materials = _unitOfWork.MaterialRepository.GetAll(); // Find the material by code. var material = materials.FirstOrDefault(x => x.F01_MaterialCode.Equals(materialCode)); if (material == null) { throw new Exception(); } //var shelfStatuses = _unitOfWork.MaterialShelfStatusRepository.GetShelfStorageMaterial(material.F01_LiquidClass); //var shelfStatus = Constants.F31_ShelfStatus.EmptyShelf.ToString("D"); //var lstShelfStatuses = // _unitOfWork.MaterialShelfStatusRepository.GetMany(i => i.F31_ShelfStatus.Trim().Equals(shelfStatus)); // [Is_LiquidClass] is pupulated from field [F01_LiquidClass] of Material Master DB record (based on current [Material Code]). var tm01 = _unitOfWork.MaterialRepository.Get(x => x.F01_MaterialCode.Trim().Equals(materialCode)); //if (tm01.F01_LiquidClass.Equals("0")) //{ // lstShelfStatuses = lstShelfStatuses.OrderBy(x => x.F31_CmnShfAgnOrd); //} //else //{ // lstShelfStatuses = lstShelfStatuses.OrderBy(x => x.F31_LqdShfAgnOrd); //} // update material shelf status and get F31_ShelfRow,F31_ShelfBay,F31_ShelfLevel var row = string.Empty; var bay = string.Empty; var level = string.Empty; //var tx31s = lstShelfStatuses.ToList(); //var lasttx31 = tx31s.LastOrDefault(); //foreach (var shelfStatuses in tx31s) //{ emptyLocation.F31_ShelfStatus = "4"; emptyLocation.F31_TerminalNo = terminalNo; emptyLocation.F31_UpdateDate = DateTime.Now; emptyLocation.F31_StockTakingFlag = Constants.TX31_StkTkgFlg.InvNotChk.ToString("D"); emptyLocation.F31_PalletNo = palletNo; emptyLocation.F31_SupplierCode = string.Empty; emptyLocation.F31_LoadAmount = 0; emptyLocation.F31_Amount = restorageMaterialItems.Sum(x => x.PackUnit * x.PackQuantity + x.Fraction); emptyLocation.F31_UpdateDate = DateTime.Now; //shelfStatuses.F31_UpdateCount += 1; row = emptyLocation.F31_ShelfRow; bay = emptyLocation.F31_ShelfBay; level = emptyLocation.F31_ShelfLevel; //if (emptyLocation.Equals(lasttx31)) //{ // shelfStatuses.F31_StockTakingFlag = Constants.TX31_StkTkgFlg.InvNotChk.ToString("D"); // shelfStatuses.F31_PalletNo = palletNo; // shelfStatuses.F31_SupplierCode = string.Empty; // shelfStatuses.F31_LoadAmount = 0; // shelfStatuses.F31_Amount = restorageMaterialItems.Sum(x => x.PackUnit*x.PackQuantity + x.Fraction); // shelfStatuses.F31_UpdateDate = DateTime.Now; // //shelfStatuses.F31_UpdateCount += 1; // row = shelfStatuses.F31_ShelfRow; // bay = shelfStatuses.F31_ShelfBay; // level = shelfStatuses.F31_ShelfLevel; //} _unitOfWork.MaterialShelfStatusRepository.Update(emptyLocation); //} // Delete all [TX33_MtrShfStk] records whose [Pallet No.] is current [Pallet No.] and [Material Code] is current [Material Code]. _unitOfWork.MaterialShelfStockRepository.Delete(x => x.F33_MaterialCode.Equals(materialCode) && x.F33_PalletNo.Trim().Equals(palletNo)); //var lastShelfStatus = materialShelfStatuses.LastOrDefault(); var lsShelfNo = string.Format("{0}{1}{2}", row, bay, level); // Find no manage record with system id "0000" var isNoManage = false; var f48MtrWhsCmdNo = _unitOfWork.NoManageRepository.CreateOrUpdateTX48(ref isNoManage, Constants.GetColumnInNoManager.MtrWhsCmdNo); var convCode = GetConveyorCode(terminalNo); InsertTX34(Constants.F34_CommandNo.Storage, f48MtrWhsCmdNo, Constants.CmdType.cmdType, Constants.TX34_StrRtrType.MaterialReStorage.ToString("D"), Constants.TC_CMDSTS.TC_CMDSTS_0, palletNo, convCode, lsShelfNo, terminalNo, Constants.PictureNo.TCRM051F); // Create corresponding material shelf stock records (table [TX33_MtrShfStk]) for each “Valid item” using the following pseudo code (under SQL format - Refer document) foreach (var restorageMaterialItem in restorageMaterialItems) { var tx33MtrShfStk = new TX33_MtrShfStk(); tx33MtrShfStk.F33_PalletNo = palletNo; tx33MtrShfStk.F33_MaterialCode = materialCode; tx33MtrShfStk.F33_MaterialLotNo = restorageMaterialItem.MaterialLotNo; tx33MtrShfStk.F33_Amount = restorageMaterialItem.PackUnit * restorageMaterialItem.PackQuantity + restorageMaterialItem.Fraction; tx33MtrShfStk.F33_StockFlag = Constants.F33_StockFlag.TX33_StkFlg_Str; tx33MtrShfStk.F33_AddDate = DateTime.Now; tx33MtrShfStk.F33_UpdateDate = DateTime.Now; _unitOfWork.MaterialShelfStockRepository.Add(tx33MtrShfStk); } //Send message to server C1. The content of the message contains [MsgId], [TermNo] and [PicNo], in which: //[MsgId] is “0001”. var msgId = "0001"; var pictureNo = Constants.PictureNo.TCRM051F; _notificationService.SendMessageToC1(new { msgId, terminalNo, pictureNo }); // Save changes into database. _unitOfWork.Commit(); }