async Task <string> GenerateNo(GarmentUnitDeliveryOrder model, int clientTimeZoneOffset) { GarmentUnitReceiptNote garmentUnitReceiptNote = (from data in dbContext.GarmentUnitReceiptNotes select data).FirstOrDefault(); DateTimeOffset dateTimeOffsetNow = garmentUnitReceiptNote.ReceiptDate; string Month = dateTimeOffsetNow.ToOffset(new TimeSpan(clientTimeZoneOffset, 0, 0)).ToString("MM"); string Year = dateTimeOffsetNow.ToOffset(new TimeSpan(clientTimeZoneOffset, 0, 0)).ToString("yy"); string Day = dateTimeOffsetNow.ToOffset(new TimeSpan(clientTimeZoneOffset, 0, 0)).ToString("dd"); string no = string.Concat("DO", garmentUnitReceiptNote.UnitCode, Year, Month, Day); int Padding = 4; var lastNo = await this.dbSet.Where(w => w.UnitDONo.StartsWith(no) && !w.IsDeleted).OrderByDescending(o => o.UnitDONo).FirstOrDefaultAsync(); if (lastNo == null) { return(no + "1".PadLeft(Padding, '0')); } else { //int lastNoNumber = Int32.Parse(lastNo.INNo.Replace(no, "")) + 1; int.TryParse(lastNo.UnitDONo.Replace(no, ""), out int lastno1); int lastNoNumber = lastno1 + 1; return(no + lastNoNumber.ToString().PadLeft(Padding, '0')); } }
public async Task <string> GenerateNo(GarmentUnitDeliveryOrder model) { DateTimeOffset dateTimeOffset = model.UnitDODate.ToOffset(new TimeSpan(identityService.TimezoneOffset, 0, 0)); string Month = dateTimeOffset.ToString("MM"); string Year = dateTimeOffset.ToString("yy"); string Day = dateTimeOffset.ToString("dd"); string pre = model.UnitDOType == "MARKETING" ? "DOM" : "DO"; string unitCode = model.UnitDOType == "MARKETING" ? model.UnitSenderCode: model.UnitRequestCode; string no = string.Concat(pre, unitCode, Year, Month, Day); int Padding = 3; var lastDataByNo = await dbSet.Where(w => w.UnitDONo.StartsWith(no) && !w.IsDeleted).OrderByDescending(o => o.UnitDONo).FirstOrDefaultAsync(); if (lastDataByNo == null) { return(no + "1".PadLeft(Padding, '0')); } else { int.TryParse(lastDataByNo.UnitDONo.Replace(no, ""), out int lastNoNumber); return(string.Concat(no, (lastNoNumber + 1).ToString().PadLeft(Padding, '0'))); } }
public async Task <GarmentUnitDeliveryOrder> GetNewData(GarmentUnitReceiptNote unitReceiptNote1 = null) { DateTimeOffset now = DateTimeOffset.Now; long nowTicks = now.Ticks; var garmentUnitReceiptNote = unitReceiptNote1 ?? await Task.Run(() => UNDataUtil.GetTestDataWithStorage(nowTicks)); GarmentUnitDeliveryOrder garmentUnitDeliveryOrder = new GarmentUnitDeliveryOrder { UnitDOType = "SAMPLE", UnitDODate = DateTimeOffset.Now, UnitSenderId = garmentUnitReceiptNote.UnitId, UnitRequestCode = garmentUnitReceiptNote.UnitCode, UnitRequestName = garmentUnitReceiptNote.UnitName, UnitRequestId = garmentUnitReceiptNote.UnitId, UnitSenderCode = garmentUnitReceiptNote.UnitCode, UnitSenderName = garmentUnitReceiptNote.UnitName, StorageId = garmentUnitReceiptNote.StorageId, StorageCode = garmentUnitReceiptNote.StorageCode, StorageName = garmentUnitReceiptNote.StorageName, RONo = garmentUnitReceiptNote.Items.Select(i => i.RONo).FirstOrDefault(), Article = $"Article{nowTicks}", Items = new List <GarmentUnitDeliveryOrderItem>() }; foreach (var item in garmentUnitReceiptNote.Items) { var garmentDOItems = UNDataUtil.ReadDOItemsByURNItemId((int)item.Id); garmentUnitDeliveryOrder.Items.Add( new GarmentUnitDeliveryOrderItem { IsSave = true, DODetailId = item.DODetailId, EPOItemId = item.EPOItemId, POItemId = item.POItemId, PRItemId = item.PRItemId, FabricType = "FABRIC", URNId = garmentUnitReceiptNote.Id, URNItemId = item.Id, URNNo = garmentUnitReceiptNote.URNNo, POSerialNumber = item.POSerialNumber, RONo = item.RONo, ProductId = item.ProductId, ProductCode = item.ProductCode, ProductName = item.ProductName, Quantity = (double)(item.SmallQuantity - item.OrderQuantity), UomId = item.UomId, UomUnit = item.UomUnit, ReturUomId = item.UomId, ReturUomUnit = item.UomUnit, DOItemsId = (int)garmentDOItems.Id, DOCurrencyRate = 1 }); } return(garmentUnitDeliveryOrder); }
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 IActionResult Get(int id) { try { var indexAcceptPdf = Request.Headers["Accept"].ToList().IndexOf("application/pdf"); var viewModel = facade.ReadById(id); if (viewModel == null) { throw new Exception("Invalid Id"); } else { foreach (var item in viewModel.Items) { GarmentUnitDeliveryOrder garmentUnitDeliveryOrder = facadeUnitDO.ReadById((int)viewModel.UnitDOId); if (garmentUnitDeliveryOrder != null) { GarmentUnitDeliveryOrderViewModel garmentUnitDeliveryOrderViewModel = mapper.Map <GarmentUnitDeliveryOrderViewModel>(garmentUnitDeliveryOrder); var garmentUnitDOItem = garmentUnitDeliveryOrder.Items.FirstOrDefault(i => i.Id == item.UnitDOItemId); if (garmentUnitDOItem != null) { item.DesignColor = garmentUnitDOItem.DesignColor; item.RONo = garmentUnitDOItem.RONo; } } } } if (indexAcceptPdf < 0) { Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.OK_STATUS_CODE, General.OK_MESSAGE) .Ok(viewModel); return(Ok(Result)); } else { int clientTimeZoneOffset = int.Parse(Request.Headers["x-timezone-offset"].First()); var stream = GarmentUnitExpenditureNotePDFTemplate.GeneratePdfTemplate(serviceProvider, viewModel); return(new FileStreamResult(stream, "application/pdf") { FileDownloadName = $"{viewModel.UENNo}.pdf" }); } } catch (Exception e) { Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message) .Fail(); return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, Result)); } }
public Dictionary <string, object> GetResultFormatterOk(GarmentUnitDeliveryOrder garmentUnitDeliveryOrder = null) { var data = GetNewData(garmentUnitDeliveryOrder); Dictionary <string, object> result = new ResultFormatter("1.0", General.OK_STATUS_CODE, General.OK_MESSAGE) .Ok(data); return(result); }
private void Test_Get_PDF_By_Id() { var mockFacade = new Mock <IGarmentUnitExpenditureNoteFacade>(); mockFacade.Setup(x => x.ReadById(It.IsAny <int>())) .Returns(ViewModel); var mockMapper = new Mock <IMapper>(); mockMapper.Setup(x => x.Map <GarmentUnitExpenditureNoteViewModel>(It.IsAny <GarmentUnitExpenditureNote>())) .Returns(ViewModel); var serviceProvider = GetServiceProvider(); var garmentUnitDeliveryOrder = new GarmentUnitDeliveryOrder { Id = It.IsAny <int>(), UnitDONo = "unitdono", Article = "Article12345", RONo = "RONo12345", Items = new List <GarmentUnitDeliveryOrderItem> { new GarmentUnitDeliveryOrderItem { Id = It.IsAny <int>(), RONo = "RONO", } } }; var mockGarmentUnitDeliveryOrderFacade = new Mock <IGarmentUnitDeliveryOrderFacade>(); mockGarmentUnitDeliveryOrderFacade.Setup(x => x.ReadById(It.IsAny <int>())) .Returns(garmentUnitDeliveryOrder); mockMapper.Setup(x => x.Map <GarmentUnitDeliveryOrderViewModel>(It.IsAny <GarmentUnitDeliveryOrder>())) .Returns(new GarmentUnitDeliveryOrderViewModel { Id = It.IsAny <int>(), Items = new List <GarmentUnitDeliveryOrderItemViewModel> { new GarmentUnitDeliveryOrderItemViewModel { Id = It.IsAny <int>() } } }); GarmentUnitExpenditureNoteController controller = GetController(mockFacade, mockGarmentUnitDeliveryOrderFacade, null, mockMapper); controller.ControllerContext.HttpContext.Request.Headers["Accept"] = "application/pdf"; var response = controller.Get(It.IsAny <int>()); Assert.NotNull(response.GetType().GetProperty("FileStream")); }
public async Task <GarmentUnitDeliveryOrder> GetNewData() { DateTimeOffset now = DateTimeOffset.Now; long nowTicks = now.Ticks; var garmentUnitReceiptNote = await Task.Run(() => UNDataUtil.GetTestDataWithStorage(nowTicks)); GarmentUnitDeliveryOrder garmentUnitDeliveryOrder = new GarmentUnitDeliveryOrder { UnitDOType = "RETUR", UnitDODate = DateTimeOffset.Now, UnitSenderId = garmentUnitReceiptNote.UnitId, UnitSenderCode = garmentUnitReceiptNote.UnitCode, UnitSenderName = garmentUnitReceiptNote.UnitName, StorageId = garmentUnitReceiptNote.StorageId, StorageCode = garmentUnitReceiptNote.StorageCode, StorageName = garmentUnitReceiptNote.StorageName, DONo = garmentUnitReceiptNote.DONo, Items = new List <GarmentUnitDeliveryOrderItem>() }; foreach (var item in garmentUnitReceiptNote.Items) { garmentUnitDeliveryOrder.Items.Add( new GarmentUnitDeliveryOrderItem { IsSave = true, DODetailId = item.DODetailId, EPOItemId = item.EPOItemId, POItemId = item.POItemId, PRItemId = item.PRItemId, URNId = garmentUnitReceiptNote.Id, URNItemId = item.Id, URNNo = garmentUnitReceiptNote.URNNo, POSerialNumber = item.POSerialNumber, RONo = item.RONo, ProductId = item.ProductId, ProductCode = item.ProductCode, ProductName = item.ProductName, Quantity = (double)(item.SmallQuantity - item.OrderQuantity), UomId = item.UomId, UomUnit = item.UomUnit, ReturQuantity = 20, ReturUomId = item.UomId, ReturUomUnit = item.UomUnit, DefaultDOQuantity = 20 }); } return(garmentUnitDeliveryOrder); }
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 GarmentUnitDeliveryOrder GetNewData() { var GarmentUnitReceiptNote = Task.Run(() => UNDataUtil.GetTestData()).Result; GarmentUnitDeliveryOrder garmentUnitDeliveryOrder = new GarmentUnitDeliveryOrder { UnitDONo = "NK1234L", UnitDOType = "Jumlah", UnitDODate = DateTimeOffset.Now, UnitSenderId = 1, UnitRequestCode = "unitno", UnitRequestName = "unitname", UnitRequestId = 1, UnitSenderCode = "sendercode", UnitSenderName = "sendername", StorageId = 1, StorageCode = "storagecode", StorageName = "storagename", RONo = "RONO", Article = "Article", Items = new List <GarmentUnitDeliveryOrderItem>() }; foreach (var item in GarmentUnitReceiptNote.Items) { garmentUnitDeliveryOrder.Items.Add( new GarmentUnitDeliveryOrderItem { DODetailId = item.DODetailId, EPOItemId = item.EPOItemId, POItemId = item.POItemId, PRItemId = item.PRItemId, FabricType = "fabric", URNId = GarmentUnitReceiptNote.Id, URNItemId = item.Id, URNNo = GarmentUnitReceiptNote.URNNo, POSerialNumber = item.POSerialNumber, RONo = item.RONo, ProductId = item.ProductId, ProductCode = item.ProductCode, ProductName = item.ProductName, Quantity = 8, UomId = Convert.ToInt32(item.UomId), UomUnit = item.UomUnit, }); } return(garmentUnitDeliveryOrder); }
public GarmentDeliveryReturnViewModel GetNewData(GarmentUnitDeliveryOrder garmentUnitDeliveryOrder = null) { long nowTicks = DateTimeOffset.Now.Ticks; var data = new GarmentDeliveryReturnViewModel { UnitDOId = garmentUnitDeliveryOrder != null? garmentUnitDeliveryOrder.Id : 0, DRNo = $"DRNO{nowTicks}", RONo = $"RONO{nowTicks}", Items = new List <GarmentDeliveryReturnItemViewModel> { new GarmentDeliveryReturnItemViewModel { Quantity = 1, IsSave = true, } } }; return(data); }
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 string GetResultFormatterOkString(GarmentUnitDeliveryOrder data = null) { var result = GetResultFormatterOk(data); return(JsonConvert.SerializeObject(result)); }
public Task <int> Update(int id, GarmentUnitDeliveryOrder m, string user, int clientTimeZoneOffset = 7) { throw new NotImplementedException(); }
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 <GarmentUnitExpenditureNote> GetNewDataMonitoringFlow(GarmentUnitDeliveryOrder garmentunitdeliveryorder = null) { long nowTicks = DateTimeOffset.Now.Ticks; var garmentUnitDeliveryOrder = garmentunitdeliveryorder ?? await Task.Run(() => garmentUnitDeliveryOrderDataUtil.GetTestDataMultipleItem()); var garmentUnitExpenditureNote = new GarmentUnitExpenditureNote { UnitSenderId = garmentUnitDeliveryOrder.UnitSenderId, UnitSenderCode = "SMP1", UnitSenderName = garmentUnitDeliveryOrder.UnitSenderName, UnitRequestId = garmentUnitDeliveryOrder.UnitRequestId, UnitRequestCode = garmentUnitDeliveryOrder.UnitRequestCode, UnitRequestName = garmentUnitDeliveryOrder.UnitRequestName, UnitDOId = garmentUnitDeliveryOrder.Id, UnitDONo = garmentUnitDeliveryOrder.UnitDONo, StorageId = garmentUnitDeliveryOrder.StorageId, StorageCode = garmentUnitDeliveryOrder.StorageCode, StorageName = garmentUnitDeliveryOrder.StorageName, StorageRequestId = garmentUnitDeliveryOrder.StorageRequestId, StorageRequestCode = garmentUnitDeliveryOrder.StorageRequestCode, StorageRequestName = garmentUnitDeliveryOrder.StorageRequestName, ExpenditureType = "PROSES", ExpenditureTo = "PROSES", UENNo = "UENNO12345", ExpenditureDate = DateTimeOffset.Now, IsPreparing = false, Items = new List <GarmentUnitExpenditureNoteItem>() }; foreach (var item in garmentUnitDeliveryOrder.Items) { var garmentUnitExpenditureNoteItem = new GarmentUnitExpenditureNoteItem { IsSave = true, DODetailId = item.DODetailId, EPOItemId = item.EPOItemId, URNItemId = item.URNItemId, UnitDOItemId = item.Id, PRItemId = item.PRItemId, FabricType = item.FabricType, POItemId = item.POItemId, POSerialNumber = item.POSerialNumber, ProductId = item.ProductId, ProductCode = item.ProductCode, ProductName = "FABRIC", ProductRemark = item.ProductRemark, Quantity = 5, RONo = item.RONo, UomId = item.UomId, UomUnit = item.UomUnit, PricePerDealUnit = item.PricePerDealUnit, DOCurrencyRate = item.DOCurrencyRate, Conversion = 1, ReturQuantity = 1, }; new GarmentUnitExpenditureNoteItem { Id = 0, IsSave = true, DODetailId = item.DODetailId, EPOItemId = item.EPOItemId, URNItemId = item.URNItemId, UnitDOItemId = item.Id, PRItemId = item.PRItemId, FabricType = item.FabricType, POItemId = item.POItemId, POSerialNumber = item.POSerialNumber, ProductId = item.ProductId, ProductCode = item.ProductCode, ProductName = "FABRIC", ProductRemark = item.ProductRemark, Quantity = item.Quantity, RONo = item.RONo, UomId = item.UomId, UomUnit = item.UomUnit, PricePerDealUnit = item.PricePerDealUnit, DOCurrencyRate = item.DOCurrencyRate, Conversion = 1, ReturQuantity = 1, }; garmentUnitExpenditureNote.Items.Add(garmentUnitExpenditureNoteItem); } return(garmentUnitExpenditureNote); }
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); }
public async Task <GarmentUnitDeliveryOrder> GetNewDataMultipleItem() { DateTimeOffset now = DateTimeOffset.Now; long nowTicks = now.Ticks; var garmentUnitReceiptNote1 = await Task.Run(() => UNDataUtil.GetTestDataWithStorage()); var garmentUnitReceiptNote2 = await Task.Run(() => UNDataUtil.GetTestDataWithStorage(nowTicks + 1)); GarmentUnitDeliveryOrder garmentUnitDeliveryOrder = new GarmentUnitDeliveryOrder { UnitDOType = "SAMPLE", UnitDODate = DateTimeOffset.Now, UnitSenderId = garmentUnitReceiptNote1.UnitId, UnitRequestCode = garmentUnitReceiptNote1.UnitCode, UnitRequestName = garmentUnitReceiptNote1.UnitName, UnitRequestId = garmentUnitReceiptNote1.UnitId, UnitSenderCode = garmentUnitReceiptNote1.UnitCode, UnitSenderName = garmentUnitReceiptNote1.UnitName, StorageId = garmentUnitReceiptNote1.StorageId, StorageCode = garmentUnitReceiptNote1.StorageCode, StorageName = garmentUnitReceiptNote1.StorageName, RONo = garmentUnitReceiptNote1.Items.Select(i => i.RONo).FirstOrDefault(), Article = $"Article{nowTicks}", Items = new List <GarmentUnitDeliveryOrderItem>() }; foreach (var item in garmentUnitReceiptNote1.Items) { garmentUnitDeliveryOrder.Items.Add( new GarmentUnitDeliveryOrderItem { IsSave = true, DODetailId = item.DODetailId, EPOItemId = item.EPOItemId, POItemId = item.POItemId, PRItemId = item.PRItemId, FabricType = "FABRIC", URNId = garmentUnitReceiptNote1.Id, URNItemId = item.Id, URNNo = garmentUnitReceiptNote1.URNNo, POSerialNumber = item.POSerialNumber, RONo = item.RONo, ProductId = item.ProductId, ProductCode = item.ProductCode, ProductName = item.ProductName, Quantity = (double)(item.SmallQuantity - item.OrderQuantity), UomId = item.UomId, UomUnit = item.UomUnit, }); } foreach (var item in garmentUnitReceiptNote2.Items) { garmentUnitDeliveryOrder.Items.Add( new GarmentUnitDeliveryOrderItem { IsSave = true, DODetailId = item.DODetailId, EPOItemId = item.EPOItemId, POItemId = item.POItemId, PRItemId = item.PRItemId, FabricType = "FABRIC", URNId = garmentUnitReceiptNote1.Id, URNItemId = item.Id, URNNo = garmentUnitReceiptNote1.URNNo, POSerialNumber = item.POSerialNumber, RONo = item.RONo, ProductId = item.ProductId + 1, ProductCode = item.ProductCode + $"{nowTicks}", ProductName = item.ProductName + $"{nowTicks}", Quantity = (double)(item.SmallQuantity - item.OrderQuantity), UomId = item.UomId, UomUnit = item.UomUnit, }); } return(garmentUnitDeliveryOrder); }