private int DeleteAdjustment(TblAdjustmentHeader row) { using (var context = new WorkFlowManagerDBEntities()) { var oldRow = context.TblAdjustmentHeaders .FirstOrDefault(e => e.Iserial == row.Iserial); if (oldRow != null) { context.DeleteObject(oldRow); } context.SaveChanges(); } return(row.Iserial); }
private int InsertImportedItems(TblAdjustmentHeader header, List <ImportedItemDimensionModel> importedList, bool Counting, out bool IsCounting) { IsCounting = Counting; List <string> errors = new List <string>(); using (var entities = new WorkFlowManagerDBEntities()) { try { header.Approved = false; foreach (var item in importedList) { TblAdjustmentDetail detail = PrepareDetail(entities, header, item, errors); if (detail != null) { header.TblAdjustmentDetails.Add(detail); } } var warehouseRec = entities.TblWarehouses.FirstOrDefault(w => w.Iserial == header.WarehouseIserial); var seq = warehouseRec.AdjustIn; var seqRow = entities.TblSequenceProductions.FirstOrDefault(x => x.Iserial == seq); header.Code = SharedOperation.HandelSequence(seqRow); header.TblWarehouse = null; header.CreationDate = DateTime.Now; header.LastChangeDate = DateTime.Now; header.LastChangeUser = header.CreatedBy; entities.TblAdjustmentHeaders.AddObject(header); entities.SaveChanges(); return(header.Iserial); } catch (Exception ex) { throw ex; } } }
private TblAdjustmentHeader UpdateOrInsertAdjustmentHeader(TblAdjustmentHeader newRow, int index, int userIserial, out int outindex)// ) { outindex = index; using (var context = new WorkFlowManagerDBEntities()) { try { var oldRow = context.TblAdjustmentHeaders.Include(nameof(TblAdjustmentHeader.TblAdjustmentDetails)).Include(nameof( TblAdjustmentHeader.TblWarehouse)).FirstOrDefault(th => th.Iserial == newRow.Iserial); var tempwarhouse = newRow.TblWarehouse; newRow.TblWarehouse = null; foreach (var item in newRow.TblAdjustmentDetails) { item.AvailableQuantity = item.ItemAdjustment.AvailableQuantity; item.DifferenceQuantity = item.ItemAdjustment.DifferenceQuantity; item.CountedQuantity = item.ItemAdjustment.CountedQuantity; item.Cost = item.ItemAdjustment.Cost; } if (oldRow != null)// الهيدر موجود قبل كده { //// هحذف الى اتحذف //foreach (var item in oldRow.TblAdjustmentDetails) //{ // if (!newRow.TblAdjustmentDetails.Any(td => td.Iserial == item.Iserial))// مش موجود فى الجديد يبقى اتحذف // DeleteAdjustmentDetail(item); //} foreach (var item in newRow.TblAdjustmentDetails.ToArray()) { // هشوف بقى الى اتعدل والجديد int temp, headeriserial;//item.ItemAdjustment headeriserial = item.AdjustmentHeaderIserial; item.TblAdjustmentHeader = null; item.AdjustmentHeaderIserial = headeriserial; UpdateOrInsertAdjustmentDetail(item, 1, out temp); item.TblAdjustmentHeader = newRow; } //context.Entry(oldRow).CurrentValues.SetValues(newRow); var result = SharedOperation.GenericUpdate(oldRow, newRow, context); if (result.Count() > 0) { newRow.LastChangeUser = userIserial; newRow.LastChangeDate = DateTime.Now; } } else// الهيدر ده جديد { var warehouse = context.TblWarehouses.FirstOrDefault(w => w.Iserial == newRow.WarehouseIserial); var seq = warehouse.AdjustIn; var seqRow = context.TblSequenceProductions.FirstOrDefault(x => x.Iserial == seq); newRow.Code = SharedOperation.HandelSequence(seqRow); newRow.CreatedBy = userIserial; newRow.CreationDate = DateTime.Now; newRow.LastChangeDate = DateTime.Now; newRow.LastChangeUser = userIserial; context.TblAdjustmentHeaders.AddObject(newRow); } context.SaveChanges(); //if (newRow.EntityState != System.Data.EntityState.Detached && newRow.EntityState != System.Data.EntityState.Added) // context.Detach(newRow); //if (newRow.TblWarehouse == null) // newRow.TblWarehouse = context.TblWarehouses.AsNoTracking().FirstOrDefault(w => w.Iserial == newRow.WarehouseIserial);// tempwarhouse; foreach (var item in newRow.TblAdjustmentDetails) { GetAdjustmentItemDetails(context, item); } } catch (Exception ex) { throw ex; } return(newRow); } }
private static TblAdjustmentDetail PrepareDetail(WorkFlowManagerDBEntities entities, TblAdjustmentHeader header, ImportedItemDimensionModel item, List <string> errors) { string itemInfo = string.Format("Item code:{0}, Color code:{1}, Batch:{2}, Size:{3}, Quantity:{4}, Cost:{5}" , item.ItemCode, item.Color, item.BatchNo, item.Size, item.Qty, item.Cost); var items = entities.FabricAccSearches.Where(i => i.Code == item.ItemCode).ToList(); if (items.Count != 1) { if (items.Count == 0) { errors.Add(string.Format("{1} -->> Item Code not Found. More info -->> {0}", itemInfo, DateTime.Now)); } else { errors.Add(string.Format("{1} -->> Item Code found for more than one item. More info -->> {0}", itemInfo, DateTime.Now)); } return(null); } var colors = entities.TblColors.Where(i => i.Code == item.Color && i.TblLkpColorGroup != 24); if (items.FirstOrDefault().ItemGroup.ToLower().Contains("acc")) { colors = entities.TblColors.Where(i => i.Code == item.Color && i.TblLkpColorGroup == 24); } if (colors.Count() != 1) { if (colors.Count() == 0) { errors.Add(string.Format("{1} -->> Color Code not Found. More info -->> {0}", itemInfo, DateTime.Now)); } else { errors.Add(string.Format("{1} -->> Color Code found for more than one item. More info -->> {0}", itemInfo, DateTime.Now)); } return(null); } if (string.IsNullOrWhiteSpace(item.Size) && string.IsNullOrWhiteSpace(item.BatchNo)) { errors.Add(string.Format("{1} -->> Every item must have size or batch no. More info -->> {0}", itemInfo, DateTime.Now)); return(null); } // Find Or create ItemDim var warehouse = entities.TblWarehouses.FirstOrDefault(s => s.Iserial == header.WarehouseIserial); var iserial = entities.FindOrCreateItemDim(items.FirstOrDefault().Iserial, items.FirstOrDefault().ItemGroup, colors.FirstOrDefault().Iserial, item.Size, item.BatchNo, warehouse.TblSite).FirstOrDefault().Iserial; var detail = new TblAdjustmentDetail() { ItemDimIserial = iserial, AvailableQuantity = 0, // الـ StoredProcedure هتملاه CountedQuantity = item.Qty, DifferenceQuantity = 0, // الـ StoredProcedure هتملاه Cost = item.Cost, }; detail.ItemAdjustment.AvailableQuantity = 0; detail.ItemAdjustment.CountedQuantity = item.Qty; detail.ItemAdjustment.DifferenceQuantity = 0; detail.ItemAdjustment.Cost = item.Cost; return(detail); }