private static void deleteSerials(List <string> serials, long lotNoId) { foreach (var serial in serials) { SerialNumber savedSerial = LotNumberHelper.GetSerialNo(serial, lotNoId); LotNumberHelper.DeleteSerialNumber(savedSerial.Id.ToString()); } }
private static void updateSerials(Shipment model) { List <string> modelSerials = string.IsNullOrEmpty(model.SerialNo) ? new List <string>() : model.SerialNo.Split(new char[] { ',' }).ToList(); if (model.Id > 0) { Shipment savedShipment = service.GetSingle(model.Id.ToString(), AuthenticationHelper.CompanyId.Value); if (!string.IsNullOrEmpty(savedShipment.SerialNo)) { List <string> savedSerials = model.SerialNo.Split(new char[] { ',' }).ToList(); if (savedSerials.Count() > modelSerials.Count()) { savedSerials = savedSerials.Take(savedSerials.Count() - modelSerials.Count()).ToList(); deleteSerials(savedSerials, model.LotNoId.Value); } } foreach (var updateSerial in modelSerials) { SerialNumber savedSerial = LotNumberHelper.GetSerialNo(updateSerial, model.LotNoId.Value); if (savedSerial != null) { savedSerial.UpdateDate = DateTime.Now; savedSerial.UpdateBy = AuthenticationHelper.UserId; savedSerial.SerialNo = updateSerial; LotNumberHelper.UpdateSerialNumber(savedSerial); } else { LotNumberHelper.SaveSerial(new SerialNumber { CompanyId = AuthenticationHelper.CompanyId.Value, SerialNo = updateSerial, UpdateDate = null, UpdateBy = null, LotNoId = model.LotNoId.Value, LotNo = "", CreateBy = AuthenticationHelper.UserId, CreateDate = DateTime.Now }); } } } else { if (modelSerials.Count() > 0) { foreach (var serial in modelSerials) { LotNumberHelper.SaveSerial(new SerialNumber { CompanyId = AuthenticationHelper.CompanyId.Value, CreateBy = AuthenticationHelper.UserId, CreateDate = DateTime.Now, LotNo = "", LotNoId = model.LotNoId.Value, SerialNo = serial, UpdateBy = null, UpdateDate = null }); } } } }
private static string checkLotandSerials(OrderShipmentLine model) { //Selection check.. if (model.LotNoId == null || model.LotNoId == 0) { ItemModel item = ItemHelper.GetItem(model.ItemId.ToString()); if (item.LotControl) { return("Please provide item lot!"); } if (!string.IsNullOrEmpty(model.SerialNo)) { return("Serial no. can not be defined without its lot!"); } else { return(""); } } else { List <SerialNumber> serialExist = LotNumberHelper.GetSerialsbyLotNo(model.LotNoId.Value).ToList(); List <SerialNumber> availableSerials = LotNumberHelper.GetAvailableSerials(model.LotNoId.Value); List <string> serialonGrid = SessionHelper.Shipment.OrderShipments.Where(rec => rec.LotNoId == model.LotNoId && rec.LineId != model.LineId).Select(x => x.SerialNo).ToList(); if (!string.IsNullOrEmpty(model.SerialNo)) { List <string> serials = model.SerialNo.Split(new char[] { ',' }).ToList(); //Check duplication within the same record.. if (serials.GroupBy(rec => rec).Any(d => d.Count() > 1)) { return("Serial can not be duplicate!"); } //Quantity check.. if (serials.Count() < model.ThisShipQuantity || serials.Count() > model.ThisShipQuantity) { return("Serials are not matching with the quantity!"); } //Serial availablity within shipment.. if (serialonGrid != null && serialonGrid.Count() > 0) { foreach (var unsaved in serialonGrid) { if (!string.IsNullOrEmpty(unsaved)) { //Check by another entries on grid.. List <string> unsavedSerial = unsaved.Split(new char[] { ',' }).ToList(); if (serials.Any(rec => rec == unsavedSerial.FirstOrDefault(x => x == rec))) { return("One of your serial no is already defined!"); } } } } //Lot serial existence check.. if (serialExist != null && serialExist.Count() > 0) { if (serials.Count() > availableSerials.Count()) { return("Lot is exceeding the available qty!"); } } else { return("This lot does not support serial."); } //Serial availablity within db.. foreach (var serial in serials) { bool isAvailable = LotNumberHelper.CheckSerialNumAvailability(model.LotNoId.Value, serial); if (isAvailable) { continue; } else { if (model.Id > 0) { LotNumber savedLot = LotNumberHelper.GetLotNumber(LotNumberHelper.GetSerialNo(serial, model.LotNoId.Value).LotNoId); if (savedLot.SourceId == model.Id) { continue; } else { return("Serial No. " + serial + " does not exist or may have been already shipped"); } } else { return("Serial No. " + serial + " does not exist or may have been already shipped"); } } } } else { //Lot serial existence check.. if (serialExist != null && serialExist.Count() > 0) { //Serial Generation if (model.ThisShipQuantity > availableSerials.Count() - serialonGrid.Count()) { return("Quantity is exceeding!"); } else { //Generate from available serials.. //Qty can not be decimal.. List <SerialNumber> useAvailable = new List <SerialNumber>(); if (serialonGrid != null && serialonGrid.Count() > 0) { List <string> gridSerial = new List <string>(); foreach (var serial in serialonGrid) { List <string> currentLine = serial.Split(new char[] { ',' }).ToList(); gridSerial.AddRange(currentLine); } useAvailable = availableSerials.Where(rec => rec.SerialNo != gridSerial.FirstOrDefault(x => x == rec.SerialNo)).Take(Convert.ToInt32(model.ThisShipQuantity)).ToList(); } else { useAvailable = availableSerials.Take(Convert.ToInt32(model.ThisShipQuantity)).ToList(); } List <string> autoGeneratedSerial = useAvailable.Select(rec => rec.SerialNo).ToList(); string newSerial = string.Join(",", autoGeneratedSerial.ToArray()); SessionHelper.Shipment.OrderShipments.FirstOrDefault(x => x.LineId == model.LineId && x.Id == model.Id).SerialNo = newSerial; } } else { //Lot can be used only one time.. if (SessionHelper.Shipment.OrderShipments.Any(re => re.LotNoId == model.LotNoId && re.LineId != model.LineId)) { return("Lot is in use in the current shipment"); } } } } return(""); }