public int Delete(int id, string username) { int Deleted = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { var model = this.dbSet .Include(m => m.Items) .SingleOrDefault(m => m.Id == id && !m.IsDeleted); EntityExtension.FlagForDelete(model, username, USER_AGENT); foreach (var item in model.Items) { GarmentUnitReceiptNoteItem garmentUnitReceiptNote = this.dbContext.GarmentUnitReceiptNoteItems.FirstOrDefault(s => s.Id == item.URNItemId); if (garmentUnitReceiptNote != null) { garmentUnitReceiptNote.OrderQuantity = garmentUnitReceiptNote.OrderQuantity - (decimal)item.Quantity; } EntityExtension.FlagForDelete(item, username, USER_AGENT); } Deleted = dbContext.SaveChanges(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Deleted); }
public async Task <int> Delete(int id) { int Deleted = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { var garmentUnitDeliveryOrder = dbSet .Include(m => m.Items) .SingleOrDefault(m => m.Id == id); EntityExtension.FlagForDelete(garmentUnitDeliveryOrder, identityService.Username, USER_AGENT); foreach (var garmentUnitDeliveryOrderItem in garmentUnitDeliveryOrder.Items) { EntityExtension.FlagForDelete(garmentUnitDeliveryOrderItem, identityService.Username, USER_AGENT); GarmentUnitReceiptNoteItem garmentUnitReceiptNoteItem = dbContext.GarmentUnitReceiptNoteItems.Single(s => s.Id == garmentUnitDeliveryOrderItem.URNItemId); EntityExtension.FlagForUpdate(garmentUnitReceiptNoteItem, identityService.Username, USER_AGENT); garmentUnitReceiptNoteItem.OrderQuantity = garmentUnitReceiptNoteItem.OrderQuantity - (decimal)garmentUnitDeliveryOrderItem.Quantity; } Deleted = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Deleted); }
public async Task <int> Create(GarmentUnitDeliveryOrder garmentUnitDeliveryOrder) { int Created = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { garmentUnitDeliveryOrder.Items = garmentUnitDeliveryOrder.Items.Where(x => x.IsSave).ToList(); EntityExtension.FlagForCreate(garmentUnitDeliveryOrder, identityService.Username, USER_AGENT); garmentUnitDeliveryOrder.UnitDONo = await GenerateNo(garmentUnitDeliveryOrder); foreach (var garmentUnitDeliveryOrderItem in garmentUnitDeliveryOrder.Items) { EntityExtension.FlagForCreate(garmentUnitDeliveryOrderItem, identityService.Username, USER_AGENT); GarmentUnitReceiptNote garmentUnitReceiptNote = dbContext.GarmentUnitReceiptNotes.Single(s => s.Id == garmentUnitDeliveryOrderItem.URNId); garmentUnitDeliveryOrderItem.DOCurrencyRate = garmentUnitReceiptNote.DOCurrencyRate; if (garmentUnitDeliveryOrderItem.DOCurrencyRate == 0) { throw new Exception("garmentUnitDeliveryOrderItem.DOCurrencyRate tidak boleh 0"); } garmentUnitReceiptNote.IsUnitDO = true; GarmentUnitReceiptNoteItem garmentUnitReceiptNoteItem = dbContext.GarmentUnitReceiptNoteItems.Single(s => s.Id == garmentUnitDeliveryOrderItem.URNItemId); garmentUnitDeliveryOrderItem.DOCurrencyRate = garmentUnitReceiptNoteItem.DOCurrencyRate; EntityExtension.FlagForUpdate(garmentUnitReceiptNoteItem, identityService.Username, USER_AGENT); garmentUnitReceiptNoteItem.OrderQuantity = garmentUnitReceiptNoteItem.OrderQuantity + (decimal)garmentUnitDeliveryOrderItem.Quantity; // GarmentDOItems GarmentDOItems garmentDOItems = dbSetGarmentDOItems.FirstOrDefault(w => w.Id == garmentUnitDeliveryOrderItem.DOItemsId); if (garmentDOItems != null) { EntityExtension.FlagForUpdate(garmentDOItems, identityService.Username, USER_AGENT); garmentDOItems.RemainingQuantity = garmentDOItems.RemainingQuantity - (decimal)garmentUnitDeliveryOrderItem.Quantity; } } dbSet.Add(garmentUnitDeliveryOrder); Created = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Created); }
public async Task <int> Create(GarmentUnitDeliveryOrder garmentUnitDeliveryOrder) { int Created = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { garmentUnitDeliveryOrder.Items = garmentUnitDeliveryOrder.Items.Where(x => x.IsSave).ToList(); EntityExtension.FlagForCreate(garmentUnitDeliveryOrder, identityService.Username, USER_AGENT); garmentUnitDeliveryOrder.UnitDONo = await GenerateNo(garmentUnitDeliveryOrder); foreach (var garmentUnitDeliveryOrderItem in garmentUnitDeliveryOrder.Items) { EntityExtension.FlagForCreate(garmentUnitDeliveryOrderItem, identityService.Username, USER_AGENT); GarmentDeliveryOrderDetail doDetail = dbContext.GarmentDeliveryOrderDetails.Single(s => s.Id.Equals(garmentUnitDeliveryOrderItem.DODetailId)); doDetail.ReturQuantity = doDetail.ReturQuantity + garmentUnitDeliveryOrderItem.ReturQuantity; GarmentUnitReceiptNoteItem garmentUnitReceiptNoteItem = dbContext.GarmentUnitReceiptNoteItems.Single(s => s.Id == garmentUnitDeliveryOrderItem.URNItemId); EntityExtension.FlagForUpdate(garmentUnitReceiptNoteItem, identityService.Username, USER_AGENT); garmentUnitReceiptNoteItem.OrderQuantity = garmentUnitReceiptNoteItem.OrderQuantity + (decimal)garmentUnitDeliveryOrderItem.Quantity; GarmentDOItems garmentDOItems = dbContext.GarmentDOItems.SingleOrDefault(x => x.URNItemId == garmentUnitDeliveryOrderItem.URNItemId); if (garmentDOItems != null) { garmentDOItems.RemainingQuantity -= (decimal)garmentUnitDeliveryOrderItem.Quantity; } } dbSet.Add(garmentUnitDeliveryOrder); Created = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Created); }
public async Task <int> Create(GarmentUnitDeliveryOrder m, string user, int clientTimeZoneOffset = 7) { int Created = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { EntityExtension.FlagForCreate(m, user, USER_AGENT); m.UnitDONo = await GenerateNo(m, clientTimeZoneOffset); foreach (var item in m.Items) { GarmentUnitReceiptNoteItem garmentUnitReceiptNote = this.dbContext.GarmentUnitReceiptNoteItems.FirstOrDefault(s => s.Id == item.URNItemId); if (garmentUnitReceiptNote != null) { garmentUnitReceiptNote.OrderQuantity = garmentUnitReceiptNote.OrderQuantity + (decimal)item.Quantity; } EntityExtension.FlagForCreate(item, user, USER_AGENT); } this.dbSet.Add(m); Created = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Created); }
public async Task <GarmentUnitReceiptNote> GetNewData(long?ticks = null, GarmentDeliveryOrder garmentDeliveryOrder = null) { long nowTicks = ticks ?? DateTimeOffset.Now.Ticks; garmentDeliveryOrder = garmentDeliveryOrder ?? await Task.Run(() => garmentDeliveryOrderDataUtil.GetTestData()); var garmentUnitReceiptNote = new GarmentUnitReceiptNote { URNType = "PEMBELIAN", UnitId = nowTicks, UnitCode = string.Concat("UnitCode", nowTicks), UnitName = string.Concat("UnitName", nowTicks), SupplierId = garmentDeliveryOrder.SupplierId, SupplierCode = garmentDeliveryOrder.SupplierCode, SupplierName = garmentDeliveryOrder.SupplierName, DOId = garmentDeliveryOrder.Id, DONo = garmentDeliveryOrder.DONo, DeletedReason = nowTicks.ToString(), DOCurrencyRate = garmentDeliveryOrder.DOCurrencyRate, ReceiptDate = DateTimeOffset.Now, Items = new List <GarmentUnitReceiptNoteItem>() }; foreach (var item in garmentDeliveryOrder.Items) { foreach (var detail in item.Details) { var garmentUnitReceiptNoteItem = new GarmentUnitReceiptNoteItem { DODetailId = detail.Id, EPOItemId = detail.EPOItemId, PRId = detail.PRId, PRNo = detail.PRNo, PRItemId = detail.PRItemId, POId = detail.POId, POItemId = detail.POItemId, POSerialNumber = detail.POSerialNumber, ProductId = detail.ProductId, ProductCode = detail.ProductCode, ProductName = detail.ProductName, ProductRemark = detail.ProductRemark, RONo = detail.RONo, ReceiptQuantity = (decimal)detail.ReceiptQuantity, UomId = long.Parse(detail.UomId), UomUnit = detail.UomUnit, PricePerDealUnit = (decimal)detail.PricePerDealUnit, DesignColor = string.Concat("DesignColor", nowTicks), SmallQuantity = (decimal)detail.SmallQuantity, SmallUomId = long.Parse(detail.SmallUomId), SmallUomUnit = detail.SmallUomUnit, Conversion = (decimal)detail.Conversion, CorrectionConversion = (decimal)detail.Conversion, DOCurrencyRate = 1 }; garmentUnitReceiptNote.Items.Add(garmentUnitReceiptNoteItem); } } return(garmentUnitReceiptNote); }
public GarmentUnitReceiptNote GetNewData() { long nowTicks = DateTimeOffset.Now.Ticks; var gdo = Task.Run(() => garmentDeliveryOrderDataUtil.GetTestData()).Result; var garmentUnitReceiptNote = new GarmentUnitReceiptNote { UnitId = nowTicks, UnitCode = string.Concat("UnitCode", nowTicks), UnitName = string.Concat("UnitName", nowTicks), SupplierId = gdo.SupplierId, SupplierCode = gdo.SupplierCode, SupplierName = gdo.SupplierName, DOId = gdo.Id, DONo = gdo.DONo, ReceiptDate = DateTimeOffset.Now, Items = new List <GarmentUnitReceiptNoteItem>() }; foreach (var item in gdo.Items) { foreach (var detail in item.Details) { var garmentUnitReceiptNoteItem = new GarmentUnitReceiptNoteItem { DODetailId = detail.Id, EPOItemId = detail.EPOItemId, PRId = detail.PRId, PRNo = detail.PRNo, PRItemId = detail.PRItemId, POId = detail.POId, POItemId = detail.POItemId, POSerialNumber = detail.POSerialNumber, ProductId = detail.ProductId, ProductCode = detail.ProductCode, ProductName = detail.ProductName, ProductRemark = detail.ProductRemark, RONo = detail.RONo, ReceiptQuantity = (decimal)detail.ReceiptQuantity, UomId = long.Parse(detail.UomId), UomUnit = detail.UomUnit, PricePerDealUnit = (decimal)detail.PricePerDealUnit, DesignColor = string.Concat("DesignColor", nowTicks), SmallQuantity = (decimal)detail.SmallQuantity, SmallUomId = long.Parse(detail.SmallUomId), SmallUomUnit = detail.SmallUomUnit, }; garmentUnitReceiptNote.Items.Add(garmentUnitReceiptNoteItem); } } return(garmentUnitReceiptNote); }
private GarmentInventoryMovement GenerateGarmentInventoryMovement(GarmentUnitReceiptNote garmentUnitReceiptNote, GarmentUnitReceiptNoteItem garmentUnitReceiptNoteItem, GarmentInventorySummary garmentInventorySummary, string type = "IN") { var garmentInventoryMovement = new GarmentInventoryMovement(); EntityExtension.FlagForCreate(garmentInventoryMovement, identityService.Username, USER_AGENT); do { garmentInventoryMovement.No = CodeGenerator.Generate(); }while (dbSetGarmentInventoryMovement.Any(m => m.No == garmentInventoryMovement.No)); garmentInventoryMovement.Date = garmentInventoryMovement.CreatedUtc; garmentInventoryMovement.ReferenceNo = garmentUnitReceiptNote.URNNo; garmentInventoryMovement.ReferenceType = string.Concat("Bon Terima Unit - ", garmentUnitReceiptNote.UnitName); garmentInventoryMovement.ProductId = garmentUnitReceiptNoteItem.ProductId; garmentInventoryMovement.ProductCode = garmentUnitReceiptNoteItem.ProductCode; garmentInventoryMovement.ProductName = garmentUnitReceiptNoteItem.ProductName; garmentInventoryMovement.StorageId = garmentUnitReceiptNote.StorageId; garmentInventoryMovement.StorageCode = garmentUnitReceiptNote.StorageCode; garmentInventoryMovement.StorageName = garmentUnitReceiptNote.StorageName; garmentInventoryMovement.StockPlanning = 0; garmentInventoryMovement.Before = garmentInventorySummary == null ? 0 : garmentInventorySummary.Quantity; garmentInventoryMovement.Quantity = garmentUnitReceiptNoteItem.SmallQuantity * ((type ?? "").ToUpper() == "OUT" ? -1 : 1); garmentInventoryMovement.After = garmentInventoryMovement.Before + garmentInventoryMovement.Quantity; garmentInventoryMovement.UomId = garmentUnitReceiptNoteItem.SmallUomId; garmentInventoryMovement.UomUnit = garmentUnitReceiptNoteItem.SmallUomUnit; garmentInventoryMovement.Remark = garmentUnitReceiptNoteItem.ProductRemark; garmentInventoryMovement.Type = (type ?? "").ToUpper() == "IN" ? "IN" : "OUT"; return(garmentInventoryMovement); }
private GarmentInventorySummary GenerateGarmentInventorySummary(GarmentUnitReceiptNote garmentUnitReceiptNote, GarmentUnitReceiptNoteItem garmentUnitReceiptNoteItem, GarmentInventoryMovement garmentInventoryMovement) { var garmentInventorySummary = new GarmentInventorySummary(); EntityExtension.FlagForCreate(garmentInventorySummary, identityService.Username, USER_AGENT); do { garmentInventorySummary.No = CodeGenerator.Generate(); }while (dbSetGarmentInventorySummary.Any(m => m.No == garmentInventorySummary.No)); garmentInventorySummary.ProductId = garmentUnitReceiptNoteItem.ProductId; garmentInventorySummary.ProductCode = garmentUnitReceiptNoteItem.ProductCode; garmentInventorySummary.ProductName = garmentUnitReceiptNoteItem.ProductName; garmentInventorySummary.StorageId = garmentUnitReceiptNote.StorageId; garmentInventorySummary.StorageCode = garmentUnitReceiptNote.StorageCode; garmentInventorySummary.StorageName = garmentUnitReceiptNote.StorageName; garmentInventorySummary.Quantity = garmentInventoryMovement.After; garmentInventorySummary.UomId = garmentUnitReceiptNoteItem.SmallUomId; garmentInventorySummary.UomUnit = garmentUnitReceiptNoteItem.SmallUomUnit; garmentInventorySummary.StockPlanning = 0; return(garmentInventorySummary); }
public async Task <int> Update(int id, GarmentUnitDeliveryOrder garmentUnitDeliveryOrder) { int Updated = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { garmentUnitDeliveryOrder.Items = garmentUnitDeliveryOrder.Items.Where(x => x.IsSave).ToList(); var oldGarmentUnitDeliveryOrder = dbSet .Include(d => d.Items) //.AsNoTracking() .Single(m => m.Id == id); EntityExtension.FlagForUpdate(oldGarmentUnitDeliveryOrder, identityService.Username, USER_AGENT); foreach (var garmentUnitDeliveryOrderItem in garmentUnitDeliveryOrder.Items) { if (garmentUnitDeliveryOrderItem.Id != 0) { var oldGarmentUnitDeliveryOrderItem = oldGarmentUnitDeliveryOrder.Items.FirstOrDefault(i => i.Id == garmentUnitDeliveryOrderItem.Id); EntityExtension.FlagForUpdate(oldGarmentUnitDeliveryOrderItem, identityService.Username, USER_AGENT); GarmentUnitReceiptNoteItem garmentUnitReceiptNoteItem = dbContext.GarmentUnitReceiptNoteItems.Single(s => s.Id == oldGarmentUnitDeliveryOrderItem.URNItemId); EntityExtension.FlagForUpdate(garmentUnitReceiptNoteItem, identityService.Username, USER_AGENT); garmentUnitReceiptNoteItem.OrderQuantity = garmentUnitReceiptNoteItem.OrderQuantity - (decimal)oldGarmentUnitDeliveryOrderItem.Quantity + (decimal)garmentUnitDeliveryOrderItem.Quantity; oldGarmentUnitDeliveryOrderItem.Quantity = garmentUnitDeliveryOrderItem.Quantity; oldGarmentUnitDeliveryOrderItem.DefaultDOQuantity = garmentUnitDeliveryOrderItem.Quantity; // Jumlah DO awal mengikuti Jumlah yang diubah (reset) oldGarmentUnitDeliveryOrderItem.FabricType = garmentUnitDeliveryOrderItem.FabricType; } else { EntityExtension.FlagForCreate(garmentUnitDeliveryOrderItem, identityService.Username, USER_AGENT); oldGarmentUnitDeliveryOrder.Items.Add(garmentUnitDeliveryOrderItem); GarmentUnitReceiptNoteItem garmentUnitReceiptNoteItem = dbContext.GarmentUnitReceiptNoteItems.Single(s => s.Id == garmentUnitDeliveryOrderItem.URNItemId); EntityExtension.FlagForUpdate(garmentUnitReceiptNoteItem, identityService.Username, USER_AGENT); garmentUnitReceiptNoteItem.OrderQuantity = garmentUnitReceiptNoteItem.OrderQuantity + (decimal)garmentUnitDeliveryOrderItem.Quantity; } } foreach (var oldGarmentUnitDeliveryOrderItem in oldGarmentUnitDeliveryOrder.Items) { var newGarmentUnitDeliveryOrderItem = garmentUnitDeliveryOrder.Items.FirstOrDefault(i => i.Id == oldGarmentUnitDeliveryOrderItem.Id); if (newGarmentUnitDeliveryOrderItem == null) { EntityExtension.FlagForDelete(oldGarmentUnitDeliveryOrderItem, identityService.Username, USER_AGENT); GarmentUnitReceiptNote garmentUnitReceiptNote = dbContext.GarmentUnitReceiptNotes.Single(s => s.Id == oldGarmentUnitDeliveryOrderItem.URNId); oldGarmentUnitDeliveryOrderItem.DOCurrencyRate = garmentUnitReceiptNote.DOCurrencyRate; GarmentUnitReceiptNoteItem garmentUnitReceiptNoteItem = dbContext.GarmentUnitReceiptNoteItems.Single(s => s.Id == oldGarmentUnitDeliveryOrderItem.URNItemId); EntityExtension.FlagForUpdate(garmentUnitReceiptNoteItem, identityService.Username, USER_AGENT); garmentUnitReceiptNoteItem.OrderQuantity = garmentUnitReceiptNoteItem.OrderQuantity - (decimal)oldGarmentUnitDeliveryOrderItem.Quantity; } } //dbSet.Update(garmentUnitDeliveryOrder); Updated = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }
public async Task <int> Update(int id, GarmentUnitExpenditureNote garmentUnitExpenditureNote) { int Updated = 0; using (var transaction = dbContext.Database.BeginTransaction()) { try { var itemIsSaveFalse = garmentUnitExpenditureNote.Items.Where(i => i.IsSave == false).ToList(); garmentUnitExpenditureNote.Items = garmentUnitExpenditureNote.Items.Where(x => x.IsSave).ToList(); var oldGarmentUnitExpenditureNote = dbSet .Include(d => d.Items) .Single(m => m.Id == id); foreach (var uncheck in itemIsSaveFalse) { var garmentInventorySummaryExisting = dbSetGarmentInventorySummary.FirstOrDefault(s => s.ProductId == uncheck.ProductId && s.StorageId == oldGarmentUnitExpenditureNote.StorageId && s.UomId == uncheck.UomId); var garmentInventoryMovement = GenerateGarmentInventoryMovement(oldGarmentUnitExpenditureNote, uncheck, garmentInventorySummaryExisting, "IN"); dbSetGarmentInventoryMovement.Add(garmentInventoryMovement); if (garmentInventorySummaryExisting != null) { EntityExtension.FlagForUpdate(garmentInventorySummaryExisting, identityService.Username, USER_AGENT); garmentInventorySummaryExisting.Quantity = garmentInventorySummaryExisting.Quantity + (decimal)uncheck.Quantity; garmentInventoryMovement.After = garmentInventorySummaryExisting.Quantity; } } if (garmentUnitExpenditureNote.ExpenditureType == "TRANSFER") { var garmentInventoryDocumentIn = GenerateGarmentInventoryDocument(oldGarmentUnitExpenditureNote, "IN"); dbSetGarmentInventoryDocument.Add(garmentInventoryDocumentIn); var garmentInventoryDocumentOut = GenerateGarmentInventoryDocument(garmentUnitExpenditureNote, "OUT"); dbSetGarmentInventoryDocument.Add(garmentInventoryDocumentOut); var garmentInventoryDocumentInRequest = GenerateGarmentInventoryDocument(garmentUnitExpenditureNote, "IN"); garmentInventoryDocumentInRequest.StorageId = garmentUnitExpenditureNote.StorageRequestId; garmentInventoryDocumentInRequest.StorageCode = garmentUnitExpenditureNote.StorageRequestCode; garmentInventoryDocumentInRequest.StorageName = garmentUnitExpenditureNote.StorageRequestName; dbSetGarmentInventoryDocument.Add(garmentInventoryDocumentInRequest); var garmentInventoryDocumentOutRequest = GenerateGarmentInventoryDocument(garmentUnitExpenditureNote, "OUT"); garmentInventoryDocumentOutRequest.StorageId = garmentUnitExpenditureNote.StorageRequestId; garmentInventoryDocumentOutRequest.StorageCode = garmentUnitExpenditureNote.StorageRequestCode; garmentInventoryDocumentOutRequest.StorageName = garmentUnitExpenditureNote.StorageRequestName; dbSetGarmentInventoryDocument.Add(garmentInventoryDocumentOutRequest); foreach (var garmentUnitExpenditureNoteItem in garmentUnitExpenditureNote.Items) { var oldGarmentUnitExpenditureNoteItem = oldGarmentUnitExpenditureNote.Items.Single(i => i.Id == garmentUnitExpenditureNoteItem.Id); //Buat IN untuk gudang yang mengeluarkan var oldGarmentInventorySummaryExisting = dbSetGarmentInventorySummary.Single(s => s.ProductId == oldGarmentUnitExpenditureNoteItem.ProductId && s.StorageId == oldGarmentUnitExpenditureNote.StorageId && s.UomId == oldGarmentUnitExpenditureNoteItem.UomId); var garmentInventoryMovementIn = GenerateGarmentInventoryMovement(oldGarmentUnitExpenditureNote, oldGarmentUnitExpenditureNoteItem, oldGarmentInventorySummaryExisting, "IN"); garmentInventoryMovementIn.After = garmentInventoryMovementIn.Before + (decimal)oldGarmentUnitExpenditureNoteItem.Quantity; dbSetGarmentInventoryMovement.Add(garmentInventoryMovementIn); var garmentInventoryMovementOut = GenerateGarmentInventoryMovement(garmentUnitExpenditureNote, garmentUnitExpenditureNoteItem, oldGarmentInventorySummaryExisting, "OUT"); garmentInventoryMovementOut.Before = garmentInventoryMovementIn.After; garmentInventoryMovementOut.After = garmentInventoryMovementOut.Before - (decimal)garmentUnitExpenditureNoteItem.Quantity; dbSetGarmentInventoryMovement.Add(garmentInventoryMovementOut); if (oldGarmentInventorySummaryExisting != null) { EntityExtension.FlagForUpdate(oldGarmentInventorySummaryExisting, identityService.Username, USER_AGENT); oldGarmentInventorySummaryExisting.Quantity = garmentInventoryMovementOut.After; } //Buat OUT untuk gudang yang mengeluarkan var garmentInventorySummaryExisting = dbSetGarmentInventorySummary.SingleOrDefault(s => s.ProductId == garmentUnitExpenditureNoteItem.ProductId && s.StorageId == garmentUnitExpenditureNote.StorageRequestId && s.UomId == garmentUnitExpenditureNoteItem.UomId); var garmentInventoryMovementInRequest = GenerateGarmentInventoryMovement(garmentUnitExpenditureNote, garmentUnitExpenditureNoteItem, garmentInventorySummaryExisting, "IN"); garmentInventoryMovementInRequest.StorageId = garmentUnitExpenditureNote.StorageRequestId; garmentInventoryMovementInRequest.StorageCode = garmentUnitExpenditureNote.StorageRequestCode; garmentInventoryMovementInRequest.StorageName = garmentUnitExpenditureNote.StorageRequestName; garmentInventoryMovementInRequest.After = garmentInventoryMovementInRequest.Before + (decimal)garmentUnitExpenditureNoteItem.Quantity; dbSetGarmentInventoryMovement.Add(garmentInventoryMovementInRequest); var garmentInventoryMovementOutRequest = GenerateGarmentInventoryMovement(garmentUnitExpenditureNote, garmentUnitExpenditureNoteItem, garmentInventorySummaryExisting, "OUT"); garmentInventoryMovementOutRequest.StorageId = garmentUnitExpenditureNote.StorageRequestId; garmentInventoryMovementOutRequest.StorageCode = garmentUnitExpenditureNote.StorageRequestCode; garmentInventoryMovementOutRequest.StorageName = garmentUnitExpenditureNote.StorageRequestName; garmentInventoryMovementOutRequest.Before = garmentInventoryMovementInRequest.After; garmentInventoryMovementOutRequest.After = garmentInventoryMovementOutRequest.Before - (decimal)garmentUnitExpenditureNoteItem.Quantity; if (garmentInventorySummaryExisting == null || garmentInventorySummaryExisting.Quantity == 0) { garmentInventoryMovementOutRequest.Before = garmentInventoryMovementInRequest.After; garmentInventoryMovementOutRequest.After = garmentInventoryMovementInRequest.Before; } dbSetGarmentInventoryMovement.Add(garmentInventoryMovementOutRequest); if (garmentInventorySummaryExisting == null) { var garmentInventorySummary = GenerateGarmentInventorySummary(garmentUnitExpenditureNote, garmentUnitExpenditureNoteItem, garmentInventoryMovementOutRequest); garmentInventorySummary.StorageId = garmentUnitExpenditureNote.StorageRequestId; garmentInventorySummary.StorageCode = garmentUnitExpenditureNote.StorageRequestCode; garmentInventorySummary.StorageName = garmentUnitExpenditureNote.StorageRequestName; dbSetGarmentInventorySummary.Add(garmentInventorySummary); } else { EntityExtension.FlagForUpdate(garmentInventorySummaryExisting, identityService.Username, USER_AGENT); garmentInventorySummaryExisting.Quantity = garmentInventoryMovementOutRequest.After; } } } else { var garmentInventoryDocumentIn = GenerateGarmentInventoryDocument(oldGarmentUnitExpenditureNote, "IN"); dbSetGarmentInventoryDocument.Add(garmentInventoryDocumentIn); var garmentInventoryDocumentOut = GenerateGarmentInventoryDocument(garmentUnitExpenditureNote, "OUT"); dbSetGarmentInventoryDocument.Add(garmentInventoryDocumentOut); foreach (var garmentUnitExpenditureNoteItem in garmentUnitExpenditureNote.Items) { var oldGarmentUnitExpenditureNoteItem = oldGarmentUnitExpenditureNote.Items.Single(i => i.Id == garmentUnitExpenditureNoteItem.Id); //Buat IN untuk gudang yang mengeluarkan var oldGarmentInventorySummaryExisting = dbSetGarmentInventorySummary.Single(s => s.ProductId == oldGarmentUnitExpenditureNoteItem.ProductId && s.StorageId == oldGarmentUnitExpenditureNote.StorageId && s.UomId == oldGarmentUnitExpenditureNoteItem.UomId); var garmentInventoryMovementIn = GenerateGarmentInventoryMovement(oldGarmentUnitExpenditureNote, oldGarmentUnitExpenditureNoteItem, oldGarmentInventorySummaryExisting, "IN"); dbSetGarmentInventoryMovement.Add(garmentInventoryMovementIn); var garmentInventoryMovementOut = GenerateGarmentInventoryMovement(garmentUnitExpenditureNote, garmentUnitExpenditureNoteItem, oldGarmentInventorySummaryExisting, "OUT"); garmentInventoryMovementOut.Before = garmentInventoryMovementIn.After; garmentInventoryMovementOut.After = garmentInventoryMovementOut.Before - (decimal)garmentUnitExpenditureNoteItem.Quantity; dbSetGarmentInventoryMovement.Add(garmentInventoryMovementOut); EntityExtension.FlagForUpdate(oldGarmentInventorySummaryExisting, identityService.Username, USER_AGENT); oldGarmentInventorySummaryExisting.Quantity = garmentInventoryMovementOut.After; } } EntityExtension.FlagForUpdate(oldGarmentUnitExpenditureNote, identityService.Username, USER_AGENT); foreach (var oldGarmentUnitExpenditureNoteItem in oldGarmentUnitExpenditureNote.Items) { var newGarmentUnitExpenditureNoteItem = garmentUnitExpenditureNote.Items.FirstOrDefault(i => i.Id == oldGarmentUnitExpenditureNoteItem.Id); if (newGarmentUnitExpenditureNoteItem == null) { var coba = dbContext.GarmentUnitExpenditureNotes.AsNoTracking().FirstOrDefault(d => d.Id == id); coba.Items = itemIsSaveFalse; EntityExtension.FlagForDelete(oldGarmentUnitExpenditureNoteItem, identityService.Username, USER_AGENT); var garmentUnitDeliveryOrderItem = dbSetGarmentUnitDeliveryOrderItem.FirstOrDefault(s => s.Id == oldGarmentUnitExpenditureNoteItem.UnitDOItemId); garmentUnitDeliveryOrderItem.Quantity = 0; GarmentUnitReceiptNoteItem garmentUnitReceiptNoteItem = dbContext.GarmentUnitReceiptNoteItems.Single(s => s.Id == oldGarmentUnitExpenditureNoteItem.URNItemId); EntityExtension.FlagForUpdate(garmentUnitReceiptNoteItem, identityService.Username, USER_AGENT); garmentUnitReceiptNoteItem.OrderQuantity = garmentUnitReceiptNoteItem.OrderQuantity - (decimal)oldGarmentUnitExpenditureNoteItem.Quantity; } else { EntityExtension.FlagForUpdate(oldGarmentUnitExpenditureNoteItem, identityService.Username, USER_AGENT); var garmentUnitDeliveryOrderItem = dbSetGarmentUnitDeliveryOrderItem.FirstOrDefault(s => s.Id == oldGarmentUnitExpenditureNoteItem.UnitDOItemId); var garmentUnitReceiptNoteItem = dbSetGarmentUnitReceiptNoteItem.FirstOrDefault(u => u.Id == oldGarmentUnitExpenditureNoteItem.URNItemId); if (garmentUnitDeliveryOrderItem != null && garmentUnitReceiptNoteItem != null) { EntityExtension.FlagForUpdate(garmentUnitReceiptNoteItem, identityService.Username, USER_AGENT); garmentUnitReceiptNoteItem.OrderQuantity = garmentUnitReceiptNoteItem.OrderQuantity - ((decimal)oldGarmentUnitExpenditureNoteItem.Quantity - (decimal)newGarmentUnitExpenditureNoteItem.Quantity); garmentUnitDeliveryOrderItem.Quantity = newGarmentUnitExpenditureNoteItem.Quantity; } oldGarmentUnitExpenditureNoteItem.Quantity = garmentUnitExpenditureNote.Items.FirstOrDefault(i => i.Id == oldGarmentUnitExpenditureNoteItem.Id).Quantity; } } //dbSet.Update(garmentUnitExpenditureNote); Updated = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }
public async Task <int> Create(GarmentReceiptCorrection m, string user, int clientTimeZoneOffset = 7) { int Created = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { EntityExtension.FlagForCreate(m, user, USER_AGENT); m.CorrectionNo = await GenerateNo(m, clientTimeZoneOffset); m.CorrectionDate = DateTimeOffset.Now; if (m.CorrectionType == "Konversi") { GarmentReceiptCorrection outCorrection = new GarmentReceiptCorrection { CorrectionDate = m.CorrectionDate, CorrectionNo = m.CorrectionNo, Remark = m.Remark, StorageCode = m.StorageCode, StorageId = m.StorageId, StorageName = m.StorageName, CorrectionType = m.CorrectionType, UnitCode = m.UnitCode, UnitName = m.UnitName, UnitId = m.UnitId, URNId = m.URNId, URNNo = m.URNNo, }; List <GarmentReceiptCorrectionItem> itemsOut = new List <GarmentReceiptCorrectionItem>(); foreach (var outs in m.Items) { GarmentUnitReceiptNoteItem garmentUnitReceiptNoteItem = dbContext.GarmentUnitReceiptNoteItems.FirstOrDefault(a => a.Id == outs.URNItemId); double SmallQuantityOut = (double)garmentUnitReceiptNoteItem.ReceiptCorrection * (double)garmentUnitReceiptNoteItem.CorrectionConversion; GarmentReceiptCorrectionItem outItem = new GarmentReceiptCorrectionItem { PricePerDealUnit = outs.PricePerDealUnit, POItemId = outs.POItemId, Conversion = outs.Conversion, SmallQuantity = SmallQuantityOut, DODetailId = outs.DODetailId, ProductCode = outs.ProductCode, ProductId = outs.ProductId, POSerialNumber = outs.POSerialNumber, ProductName = outs.ProductName, PRItemId = outs.PRItemId, ProductRemark = outs.ProductRemark, Quantity = outs.Quantity, CorrectionConversion = outs.CorrectionConversion, CorrectionId = outs.CorrectionId, CorrectionQuantity = outs.CorrectionQuantity, DesignColor = outs.DesignColor, EPOItemId = outs.EPOItemId, RONo = outs.RONo, SmallUomId = outs.SmallUomId, SmallUomUnit = outs.SmallUomUnit, UomId = outs.UomId, UomUnit = outs.UomUnit, URNItemId = outs.URNItemId }; itemsOut.Add(outItem); var garmentInventorySummaryExistingOut = dbSetGarmentInventorySummary.SingleOrDefault(s => s.ProductId == outItem.ProductId && s.StorageId == outCorrection.StorageId && s.UomId == outItem.SmallUomId); var garmentInventoryMovementOut = GenerateGarmentInventoryMovement(outCorrection, outItem, garmentInventorySummaryExistingOut, "OUT"); dbSetGarmentInventoryMovement.Add(garmentInventoryMovementOut); if (garmentInventorySummaryExistingOut == null) { var garmentInventorySummaryOut = GenerateGarmentInventorySummary(outCorrection, outItem, garmentInventoryMovementOut); dbSetGarmentInventorySummary.Add(garmentInventorySummaryOut); } else { EntityExtension.FlagForUpdate(garmentInventorySummaryExistingOut, identityService.Username, USER_AGENT); garmentInventorySummaryExistingOut.Quantity = garmentInventoryMovementOut.After; } await dbContext.SaveChangesAsync(); } outCorrection.Items = itemsOut; var invOut = GenerateGarmentInventoryDocumentConv(outCorrection, "OUT"); dbSetGarmentInventoryDocument.Add(invOut); } var type = "IN"; foreach (var item in m.Items) { GarmentUnitReceiptNoteItem garmentUnitReceiptNoteItem = dbContext.GarmentUnitReceiptNoteItems.FirstOrDefault(a => a.Id == item.URNItemId); GarmentDOItems garmentDOItems = dbContext.GarmentDOItems.SingleOrDefault(x => x.URNItemId == item.URNItemId); if (item.CorrectionQuantity < 0) { type = "OUT"; } if (m.CorrectionType == "Jumlah") { item.CorrectionConversion = 0; garmentUnitReceiptNoteItem.ReceiptCorrection += (decimal)item.CorrectionQuantity; var garmentInventoryDocument = GenerateGarmentInventoryDocument(m, item, type); dbSetGarmentInventoryDocument.Add(garmentInventoryDocument); if (garmentDOItems != null) { garmentDOItems.RemainingQuantity += (decimal)item.SmallQuantity; } } else { //decimal qty = (garmentUnitReceiptNoteItem.ReceiptCorrection - (garmentUnitReceiptNoteItem.OrderQuantity / garmentUnitReceiptNoteItem.CorrectionConversion))* garmentUnitReceiptNoteItem.CorrectionConversion; //decimal newQty = (garmentUnitReceiptNoteItem.ReceiptCorrection - (garmentUnitReceiptNoteItem.OrderQuantity / garmentUnitReceiptNoteItem.CorrectionConversion)) * (decimal)item.CorrectionConversion; //decimal diff = (newQty - qty)/(decimal)item.CorrectionConversion; item.SmallQuantity = (double)garmentUnitReceiptNoteItem.ReceiptCorrection * item.CorrectionConversion; //garmentUnitReceiptNoteItem.ReceiptCorrection += diff; garmentUnitReceiptNoteItem.CorrectionConversion = (decimal)item.CorrectionConversion; if (garmentDOItems != null) { garmentDOItems.RemainingQuantity = garmentDOItems.RemainingQuantity + ((garmentUnitReceiptNoteItem.CorrectionConversion * garmentUnitReceiptNoteItem.ReceiptCorrection) - garmentDOItems.RemainingQuantity); } } EntityExtension.FlagForCreate(item, user, USER_AGENT); var garmentInventorySummaryExisting = dbSetGarmentInventorySummary.SingleOrDefault(s => s.ProductId == item.ProductId && s.StorageId == m.StorageId && s.UomId == item.SmallUomId); var garmentInventoryMovement = GenerateGarmentInventoryMovement(m, item, garmentInventorySummaryExisting, type); dbSetGarmentInventoryMovement.Add(garmentInventoryMovement); if (garmentInventorySummaryExisting == null) { var garmentInventorySummary = GenerateGarmentInventorySummary(m, item, garmentInventoryMovement); dbSetGarmentInventorySummary.Add(garmentInventorySummary); } else { EntityExtension.FlagForUpdate(garmentInventorySummaryExisting, identityService.Username, USER_AGENT); garmentInventorySummaryExisting.Quantity = garmentInventoryMovement.After; } await dbContext.SaveChangesAsync(); } if (m.CorrectionType != "Jumlah") { var garmentInventoryDocumentConv = GenerateGarmentInventoryDocumentConv(m, type); dbSetGarmentInventoryDocument.Add(garmentInventoryDocumentConv); } this.dbSet.Add(m); Created = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Created); }
public List <GarmentDispositionPaymentReportDto> GetReportByDate(DateTimeOffset startDate, DateTimeOffset endDate) { var dispositions = _dbContext.GarmentDispositionPurchases.Where(entity => entity.CreatedUtc >= startDate.DateTime && entity.CreatedUtc <= endDate.DateTime).ToList(); var result = new List <GarmentDispositionPaymentReportDto>(); if (dispositions.Count > 0) { var dispositionIds = dispositions.Select(element => element.Id).ToList(); var dispositionItems = _dbContext.GarmentDispositionPurchaseItems.Where(entity => dispositionIds.Contains(entity.GarmentDispositionPurchaseId)).ToList(); var dispositionItemIds = dispositionItems.Select(element => element.Id).ToList(); var dispositionDetails = _dbContext.GarmentDispositionPurchaseDetailss.Where(entity => dispositionItemIds.Contains(entity.GarmentDispositionPurchaseItemId)).ToList(); var epoIds = dispositionItems.Select(element => (long)element.EPOId).ToList(); var externalPurchaseOrders = _dbContext.GarmentExternalPurchaseOrders.Where(entity => epoIds.Contains(entity.Id)).ToList(); var deliveryOrderItems = _dbContext.GarmentDeliveryOrderItems.Where(entity => epoIds.Contains(entity.EPOId)).ToList(); var deliveryOrderItemIds = deliveryOrderItems.Select(element => element.Id).ToList(); var deliveryOrderIds = deliveryOrderItems.Select(element => element.GarmentDOId).ToList(); var deliveryOrderDetails = _dbContext.GarmentDeliveryOrderDetails.Where(entity => deliveryOrderItemIds.Contains(entity.GarmentDOItemId)).ToList(); var deliveryOrderDetailIds = deliveryOrderDetails.Select(entity => entity.Id).ToList(); var deliveryOrders = _dbContext.GarmentDeliveryOrders.Where(entity => deliveryOrderIds.Contains(entity.Id)).ToList(); var customItems = _dbContext.GarmentBeacukaiItems.Where(entity => deliveryOrderIds.Contains(entity.GarmentDOId)).ToList(); var customIds = customItems.Select(entity => entity.BeacukaiId).ToList(); var customs = _dbContext.GarmentBeacukais.Where(entity => customIds.Contains(entity.Id)).ToList(); var unitReceiptNoteItems = _dbContext.GarmentUnitReceiptNoteItems.Where(entity => deliveryOrderDetailIds.Contains(entity.DODetailId)).ToList(); var unitReceiptNoteIds = unitReceiptNoteItems.Select(element => element.URNId).ToList(); var unitReceiptNotes = _dbContext.GarmentUnitReceiptNotes.Where(entity => unitReceiptNoteIds.Contains(entity.Id)).ToList(); var internalNoteDetails = _dbContext.GarmentInternNoteDetails.Where(entity => deliveryOrderIds.Contains(entity.DOId)).ToList(); var internalNoteItemIds = internalNoteDetails.Select(element => element.GarmentItemINId).ToList(); var internalNoteItems = _dbContext.GarmentInternNoteItems.Where(entity => internalNoteItemIds.Contains(entity.Id)).ToList(); var internalNoteIds = internalNoteItems.Select(element => element.GarmentINId).ToList(); var internalNotes = _dbContext.GarmentInternNotes.Where(entity => internalNoteIds.Contains(entity.Id)).ToList(); foreach (var dispositionItem in dispositionItems) { var disposition = dispositions.FirstOrDefault(element => element.Id == dispositionItem.GarmentDispositionPurchaseId); var externalPurchaseOrder = externalPurchaseOrders.FirstOrDefault(element => element.Id == dispositionItem.EPOId); var selectedDispoositionDetails = dispositionDetails.Where(element => element.GarmentDispositionPurchaseItemId == dispositionItem.Id).ToList(); var deliveryOrderItem = deliveryOrderItems.FirstOrDefault(element => element.EPOId == dispositionItem.EPOId); if (deliveryOrderItem == null) { deliveryOrderItem = new GarmentDeliveryOrderItem(); } var deliveryOrder = deliveryOrders.FirstOrDefault(element => deliveryOrderItem.GarmentDOId == element.Id); if (deliveryOrder == null) { deliveryOrder = new GarmentDeliveryOrder(); } var selectedDeliveryOrderDetails = deliveryOrderDetails.Where(element => element.GarmentDOItemId == deliveryOrderItem.Id).ToList(); var selectedDeliveryOrderDetailIds = selectedDeliveryOrderDetails.Select(element => element.Id).ToList(); var customItem = customItems.FirstOrDefault(element => element.GarmentDOId == deliveryOrder.Id); if (customItem == null) { customItem = new GarmentBeacukaiItem(); } var custom = customs.FirstOrDefault(element => customItem.BeacukaiId == element.Id); if (custom == null) { custom = new GarmentBeacukai(); } var unitReceiptNoteItem = unitReceiptNoteItems.FirstOrDefault(element => selectedDeliveryOrderDetailIds.Contains(element.DODetailId)); if (unitReceiptNoteItem == null) { unitReceiptNoteItem = new GarmentUnitReceiptNoteItem(); } var unitReceiptNote = unitReceiptNotes.FirstOrDefault(element => element.Id == unitReceiptNoteItem.URNId); if (unitReceiptNote == null) { unitReceiptNote = new GarmentUnitReceiptNote(); } var internalNoteDetail = internalNoteDetails.FirstOrDefault(element => element.DOId == deliveryOrder.Id); if (internalNoteDetail == null) { internalNoteDetail = new GarmentInternNoteDetail(); } var internalNoteItem = internalNoteItems.FirstOrDefault(element => element.Id == internalNoteDetail.GarmentItemINId); if (internalNoteItem == null) { internalNoteItem = new GarmentInternNoteItem(); } var internalNote = internalNotes.FirstOrDefault(element => element.Id == internalNoteItem.GarmentINId); if (internalNote == null) { internalNote = new GarmentInternNote(); } var customDate = (DateTimeOffset?)null; if (custom.Id > 0) { customDate = custom.BeacukaiDate; } var internalNoteDate = (DateTimeOffset?)null; if (internalNote.Id > 0) { internalNoteDate = internalNote.INDate; } result.Add(new GarmentDispositionPaymentReportDto( disposition.Id, disposition.DispositionNo, disposition.CreatedUtc, disposition.DueDate, disposition.InvoiceProformaNo, disposition.SupplierId, disposition.SupplierCode, disposition.SupplierName, disposition.CurrencyId, dispositionItem.CurrencyCode, dispositionItem.CurrencyRate, disposition.Dpp, disposition.VAT, disposition.IncomeTax, disposition.OtherCost, disposition.Amount, 0, disposition.Category, disposition.Category, externalPurchaseOrder != null? (int)externalPurchaseOrder.Id:0, externalPurchaseOrder != null? externalPurchaseOrder.EPONo:string.Empty, selectedDispoositionDetails.Sum(sum => sum.QTYPaid), deliveryOrder.Id > 0 ? (int)deliveryOrder.Id : 0, deliveryOrder.Id > 0 ? deliveryOrder.DONo : "", deliveryOrder.Id > 0 ? selectedDeliveryOrderDetails.Sum(sum => sum.DOQuantity) : 0, deliveryOrder.Id > 0 ? deliveryOrder.PaymentBill : "", deliveryOrder.Id > 0 ? deliveryOrder.BillNo : "", custom.Id > 0 ? (int)custom.Id : 0, custom.Id > 0 ? custom.BeacukaiNo : "", customDate, unitReceiptNote.Id > 0 ? (int)unitReceiptNote.Id : 0, unitReceiptNote.Id > 0 ? unitReceiptNote.URNNo : "", internalNote.Id > 0 ? (int)internalNote.Id : 0, internalNote.Id > 0 ? internalNote.INNo : "", internalNoteDate, disposition.CreatedBy )); } } return(result); }
public async Task <int> Update(int id, GarmentUnitDeliveryOrder garmentUnitDeliveryOrder) { int Updated = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { garmentUnitDeliveryOrder.Items = garmentUnitDeliveryOrder.Items.Where(x => x.IsSave).ToList(); var oldGarmentUnitDeliveryOrder = dbSet .Include(d => d.Items) //.AsNoTracking() .Single(m => m.Id == id); EntityExtension.FlagForUpdate(oldGarmentUnitDeliveryOrder, identityService.Username, USER_AGENT); foreach (var garmentUnitDeliveryOrderItem in garmentUnitDeliveryOrder.Items) { if (garmentUnitDeliveryOrderItem.Id != 0) { var oldGarmentUnitDeliveryOrderItem = oldGarmentUnitDeliveryOrder.Items.FirstOrDefault(i => i.Id == garmentUnitDeliveryOrderItem.Id); EntityExtension.FlagForUpdate(oldGarmentUnitDeliveryOrderItem, identityService.Username, USER_AGENT); GarmentDeliveryOrderDetail doDetail = dbContext.GarmentDeliveryOrderDetails.Single(s => s.Id.Equals(garmentUnitDeliveryOrderItem.DODetailId)); doDetail.ReturQuantity = doDetail.ReturQuantity - oldGarmentUnitDeliveryOrderItem.ReturQuantity + garmentUnitDeliveryOrderItem.ReturQuantity; GarmentUnitReceiptNoteItem garmentUnitReceiptNoteItem = dbContext.GarmentUnitReceiptNoteItems.Single(s => s.Id == oldGarmentUnitDeliveryOrderItem.URNItemId); EntityExtension.FlagForUpdate(garmentUnitReceiptNoteItem, identityService.Username, USER_AGENT); garmentUnitReceiptNoteItem.OrderQuantity = garmentUnitReceiptNoteItem.OrderQuantity - (decimal)oldGarmentUnitDeliveryOrderItem.Quantity + (decimal)garmentUnitDeliveryOrderItem.Quantity; GarmentDOItems garmentDOItems = dbContext.GarmentDOItems.SingleOrDefault(x => x.URNItemId == garmentUnitDeliveryOrderItem.URNItemId); if (garmentDOItems != null) { garmentDOItems.RemainingQuantity = garmentDOItems.RemainingQuantity + (decimal)oldGarmentUnitDeliveryOrderItem.Quantity - (decimal)garmentUnitDeliveryOrderItem.Quantity; } oldGarmentUnitDeliveryOrderItem.Quantity = garmentUnitDeliveryOrderItem.Quantity; oldGarmentUnitDeliveryOrderItem.ReturQuantity = garmentUnitDeliveryOrderItem.ReturQuantity; oldGarmentUnitDeliveryOrderItem.DefaultDOQuantity = garmentUnitDeliveryOrderItem.DefaultDOQuantity; } else { EntityExtension.FlagForCreate(garmentUnitDeliveryOrderItem, identityService.Username, USER_AGENT); oldGarmentUnitDeliveryOrder.Items.Add(garmentUnitDeliveryOrderItem); GarmentDeliveryOrderDetail doDetail = dbContext.GarmentDeliveryOrderDetails.Single(s => s.Id.Equals(garmentUnitDeliveryOrderItem.DODetailId)); doDetail.ReturQuantity = doDetail.ReturQuantity + garmentUnitDeliveryOrderItem.ReturQuantity; GarmentUnitReceiptNoteItem garmentUnitReceiptNoteItem = dbContext.GarmentUnitReceiptNoteItems.Single(s => s.Id == garmentUnitDeliveryOrderItem.URNItemId); EntityExtension.FlagForUpdate(garmentUnitReceiptNoteItem, identityService.Username, USER_AGENT); garmentUnitReceiptNoteItem.OrderQuantity = garmentUnitReceiptNoteItem.OrderQuantity + (decimal)garmentUnitDeliveryOrderItem.Quantity; GarmentDOItems garmentDOItems = dbContext.GarmentDOItems.SingleOrDefault(x => x.URNItemId == garmentUnitDeliveryOrderItem.URNItemId); if (garmentDOItems != null) { garmentDOItems.RemainingQuantity = garmentDOItems.RemainingQuantity - (decimal)garmentUnitDeliveryOrderItem.Quantity; } } } foreach (var oldGarmentUnitDeliveryOrderItem in oldGarmentUnitDeliveryOrder.Items) { var newGarmentUnitDeliveryOrderItem = garmentUnitDeliveryOrder.Items.FirstOrDefault(i => i.Id == oldGarmentUnitDeliveryOrderItem.Id); if (newGarmentUnitDeliveryOrderItem == null) { EntityExtension.FlagForDelete(oldGarmentUnitDeliveryOrderItem, identityService.Username, USER_AGENT); GarmentDeliveryOrderDetail doDetail = dbContext.GarmentDeliveryOrderDetails.Single(s => s.Id.Equals(oldGarmentUnitDeliveryOrderItem.DODetailId)); doDetail.ReturQuantity = doDetail.ReturQuantity - oldGarmentUnitDeliveryOrderItem.ReturQuantity; GarmentUnitReceiptNoteItem garmentUnitReceiptNoteItem = dbContext.GarmentUnitReceiptNoteItems.Single(s => s.Id == oldGarmentUnitDeliveryOrderItem.URNItemId); EntityExtension.FlagForUpdate(garmentUnitReceiptNoteItem, identityService.Username, USER_AGENT); garmentUnitReceiptNoteItem.OrderQuantity = garmentUnitReceiptNoteItem.OrderQuantity - (decimal)oldGarmentUnitDeliveryOrderItem.Quantity; GarmentDOItems garmentDOItems = dbContext.GarmentDOItems.SingleOrDefault(x => x.URNItemId == oldGarmentUnitDeliveryOrderItem.URNItemId); if (garmentDOItems != null) { garmentDOItems.RemainingQuantity = garmentDOItems.RemainingQuantity + (decimal)oldGarmentUnitDeliveryOrderItem.Quantity; } } } //dbSet.Update(garmentUnitDeliveryOrder); Updated = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }