public async Task <GarmentStockOpname> Upload(Stream stream) { ExcelPackage excelPackage = new ExcelPackage(); excelPackage.Load(stream); var ws = excelPackage.Workbook.Worksheets[0]; var storage = ((string)ws.Cells["B3"].Value).Split("-"); var data = new GarmentStockOpname { Date = DateTimeOffset.Parse((string)ws.Cells["B1"].Value), UnitCode = (string)ws.Cells["B2"].Value, StorageCode = storage[0].Trim(), StorageName = storage[1].Trim(), Items = new List <GarmentStockOpnameItem>() }; EntityExtension.FlagForCreate(data, identityService.Username, USER_AGENT); for (int row = 6; row <= ws.Dimension.End.Row; row++) { if (!string.IsNullOrWhiteSpace(ws.Cells[row, 1].Text)) { GarmentStockOpnameItem item = new GarmentStockOpnameItem { DOItemId = (int)(double)ws.Cells[row, 1].Value, BeforeQuantity = (decimal)(double)ws.Cells[row, 7].Value, Quantity = (decimal)(double)ws.Cells[row, 8].Value }; EntityExtension.FlagForCreate(item, identityService.Username, USER_AGENT); data.Items.Add(item); if (item.BeforeQuantity != item.Quantity) { item.DOItem = dbSetDOItem.Where(doi => doi.Id == item.DOItemId).Single(); item.DOItem.RemainingQuantity = item.Quantity; EntityExtension.FlagForUpdate(item.DOItem, identityService.Username, USER_AGENT); } } } dbSet.Add(data); await dbContext.SaveChangesAsync(); return(data); }
public async Task <GarmentStockOpname> Upload(Stream stream) { ExcelPackage excelPackage = new ExcelPackage(); excelPackage.Load(stream); var ws = excelPackage.Workbook.Worksheets[0]; var storage = new string[2] { "", "" }; if (!string.IsNullOrWhiteSpace((string)ws.Cells["B3"].Value)) { storage = ((string)ws.Cells["B3"].Value).Split("-"); } var data = new GarmentStockOpname { Date = DateTimeOffset.Parse((string)ws.Cells["B1"].Value), UnitCode = (string)ws.Cells["B2"].Value, StorageCode = storage[0].Trim(), StorageName = storage[1].Trim(), Items = new List <GarmentStockOpnameItem>() }; EntityExtension.FlagForCreate(data, identityService.Username, USER_AGENT); var doItem = dbSetDOItem.Where(i => i.UnitCode == data.UnitCode && i.StorageCode == data.StorageCode) .Select(i => new { i.UnitId, i.UnitName, i.StorageId }) .FirstOrDefault(); if (doItem != null) { data.UnitId = (int)doItem.UnitId; data.UnitName = doItem.UnitName; data.StorageId = (int)doItem.StorageId; } for (int row = 6; row <= ws.Dimension.End.Row; row++) { if (!string.IsNullOrWhiteSpace(ws.Cells[row, 1].Text)) { GarmentStockOpnameItem item = new GarmentStockOpnameItem { DOItemId = (int)(double)ws.Cells[row, 1].Value, BeforeQuantity = (decimal)(double)ws.Cells[row, 7].Value, Quantity = (decimal)(double)ws.Cells[row, 8].Value }; EntityExtension.FlagForCreate(item, identityService.Username, USER_AGENT); data.Items.Add(item); } } ValidateUpload(data); foreach (var item in data.Items) { var DOItem = dbSetDOItem.Where(doi => doi.Id == item.DOItemId).FirstOrDefault(); if (DOItem != null) { item.DOItemNo = DOItem.DOItemNo; item.UId = DOItem.UId; item.UnitId = DOItem.UnitId; item.UnitCode = DOItem.UnitCode; item.UnitName = DOItem.UnitName; item.StorageId = DOItem.StorageId; item.StorageCode = DOItem.StorageCode; item.StorageName = DOItem.StorageName; item.POId = DOItem.POId; item.POItemId = DOItem.POItemId; item.PRItemId = DOItem.PRItemId; item.EPOItemId = DOItem.EPOItemId; item.POSerialNumber = DOItem.POSerialNumber; item.ProductId = DOItem.ProductId; item.ProductCode = DOItem.ProductCode; item.ProductName = DOItem.ProductName; item.DesignColor = DOItem.DesignColor; item.SmallQuantity = DOItem.SmallQuantity; item.SmallUomId = DOItem.SmallUomId; item.SmallUomUnit = DOItem.SmallUomUnit; item.DOCurrencyRate = DOItem.DOCurrencyRate; item.DetailReferenceId = DOItem.DetailReferenceId; item.URNItemId = DOItem.URNItemId; item.RO = DOItem.RO; DOItem.RemainingQuantity = item.Quantity; EntityExtension.FlagForUpdate(DOItem, identityService.Username, USER_AGENT); //if (item.BeforeQuantity != item.Quantity) //{ // DOItem.RemainingQuantity = item.Quantity; // EntityExtension.FlagForUpdate(DOItem, identityService.Username, USER_AGENT); //} } var urnItem = dbSetUnitReceiptNoteItems.FirstOrDefault(urni => urni.Id == item.URNItemId); if (urnItem != null) { item.Price = item.Quantity * (decimal)item.DOCurrencyRate * (decimal)urnItem.PricePerDealUnit; } } dbSet.Add(data); await dbContext.SaveChangesAsync(); return(data); }