public async Task <int> DeleteAsync(int id) { using (var transaction = DbContext.Database.CurrentTransaction ?? DbContext.Database.BeginTransaction()) { try { int Deleted = 0; GarmentLeftoverWarehouseExpenditureFabric model = await ReadByIdAsync(id); model.FlagForDelete(IdentityService.Username, UserAgent); foreach (var item in model.Items) { item.FlagForDelete(IdentityService.Username, UserAgent); } Deleted = await DbContext.SaveChangesAsync(); foreach (var item in model.Items) { GarmentLeftoverWarehouseStock stock = GenerateStock(item); await StockService.StockIn(stock, model.ExpenditureNo, model.Id, item.Id); } transaction.Commit(); return(Deleted); } catch (Exception e) { transaction.Rollback(); throw e; } } }
public async Task ReadById_Success() { GarmentLeftoverWarehouseStockService service = new GarmentLeftoverWarehouseStockService(_dbContext(GetCurrentMethod()), GetServiceProvider().Object); GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.FABRIC, UnitId = 1, UnitCode = "UnitFromCode", UnitName = "UnitFromName", PONo = "POSerialNumber", Quantity = 1 }; await service.StockIn(stock, "StockReferenceNo", 1, 1); var result = service.Read(1, 1, "{}", new List <string>(), "", "{}"); Assert.NotEmpty(result.Data); var id = result.Data.Select(d => d.Id).First(); var data = service.ReadById(id); Assert.NotNull(data); }
public async Task Should_Success_GetFabricExcelReport() { var serviceProvider = GetServiceProvider(); var stockServiceMock = new Mock <IGarmentLeftoverWarehouseStockService>(); stockServiceMock.Setup(s => s.StockOut(It.IsAny <GarmentLeftoverWarehouseStock>(), It.IsAny <string>(), It.IsAny <int>(), It.IsAny <int>())) .ReturnsAsync(1); stockServiceMock.Setup(s => s.StockIn(It.IsAny <GarmentLeftoverWarehouseStock>(), It.IsAny <string>(), It.IsAny <int>(), It.IsAny <int>())) .ReturnsAsync(1); serviceProvider .Setup(x => x.GetService(typeof(IGarmentLeftoverWarehouseStockService))) .Returns(stockServiceMock.Object); serviceProvider .Setup(x => x.GetService(typeof(IHttpService))) .Returns(new HttpTestService()); GarmentLeftoverWarehouseStockReportService utilService = new GarmentLeftoverWarehouseStockReportService(_dbContext(GetCurrentMethod()), GetServiceProvider().Object); GarmentLeftoverWarehouseExpenditureFabricService service = new GarmentLeftoverWarehouseExpenditureFabricService(_dbContext(GetCurrentMethod()), serviceProvider.Object); GarmentLeftoverWarehouseBalanceStockService _balanceservice = new GarmentLeftoverWarehouseBalanceStockService(_dbContext(GetCurrentMethod()), serviceProvider.Object); GarmentLeftoverWarehouseReceiptFabricService receiptservice = new GarmentLeftoverWarehouseReceiptFabricService(_dbContext(GetCurrentMethod()), serviceProvider.Object); var data_Balance = _dataUtilbalanceStock(_balanceservice).GetTestData_FABRIC(); var dataReceiptFabric = _dataUtilReceiptFabric(receiptservice).GetTestData(); var dataFabric = await _dataUtilFabric(service).GetTestData(); GarmentLeftoverWarehouseStockService serviceStock = new GarmentLeftoverWarehouseStockService(_dbContext(GetCurrentMethod()), GetServiceProvider().Object); GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.FABRIC, UnitId = 1, UnitCode = "Unit", UnitName = "UnitFromName", PONo = "PONo", ProductCode = "ProductCode", ProductName = "ProductName", Quantity = 1, UomId = 1, UomUnit = "Uom" }; var resultStock = await serviceStock.StockIn(stock, "StockReferenceNo", 1, 1); await serviceStock.StockIn(stock, "StockReferenceNo", 1, 1); var result = utilService.GenerateExcelFabric(DateTime.Now, DateTime.Now, 1, 7); Assert.NotNull(result); }
private GarmentLeftoverWarehouseStock GenerateStock(string typeOfGoods, GarmentLeftoverWarehouseBalanceStockItem item) { GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock(); var referenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.FABRIC; if (typeOfGoods == "ACCESSORIES") { referenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.ACCESSORIES; } else if (typeOfGoods == "BARANG JADI") { referenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.FINISHED_GOOD; } if (typeOfGoods != "BARANG JADI") { stock = new GarmentLeftoverWarehouseStock { ReferenceType = referenceType, UnitId = item.UnitId, UnitCode = item.UnitCode, UnitName = item.UnitName, PONo = item.PONo, UomId = item.UomId, UomUnit = item.UomUnit, Quantity = item.Quantity, RONo = item.RONo, LeftoverComodityCode = item.LeftoverComodityCode, LeftoverComodityId = item.LeftoverComodityId, LeftoverComodityName = item.LeftoverComodityName, ProductCode = item.ProductCode, ProductId = item.ProductId, ProductName = item.ProductName, BasicPrice = item.BasicPrice }; } else { stock = new GarmentLeftoverWarehouseStock { ReferenceType = referenceType, UnitId = item.UnitId, UnitCode = item.UnitCode, UnitName = item.UnitName, PONo = item.PONo, Quantity = item.Quantity, RONo = item.RONo, LeftoverComodityCode = item.LeftoverComodityCode, LeftoverComodityId = item.LeftoverComodityId, LeftoverComodityName = item.LeftoverComodityName, BasicPrice = item.BasicPrice }; } return(stock); }
public async Task <int> CreateAsync(GarmentLeftoverWarehouseReceiptFabric model) { using (var transaction = DbContext.Database.CurrentTransaction ?? DbContext.Database.BeginTransaction()) { try { int Created = 0; model.FlagForCreate(IdentityService.Username, UserAgent); model.FlagForUpdate(IdentityService.Username, UserAgent); model.ReceiptNoteNo = GenerateNo(model); foreach (var item in model.Items) { item.FlagForCreate(IdentityService.Username, UserAgent); item.FlagForUpdate(IdentityService.Username, UserAgent); } DbSet.Add(model); Created = await DbContext.SaveChangesAsync(); foreach (var item in model.Items) { GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.FABRIC, UnitId = model.UnitFromId, UnitCode = model.UnitFromCode, UnitName = model.UnitFromName, PONo = item.POSerialNumber, UomId = item.UomId, UomUnit = item.UomUnit, Quantity = item.Quantity, ProductCode = item.ProductCode, ProductId = item.ProductId, ProductName = item.ProductName, BasicPrice = item.BasicPrice }; await StockService.StockIn(stock, model.ReceiptNoteNo, model.Id, item.Id); } await UpdateUnitExpenditureNoteIsReceived(model.UENId, true); transaction.Commit(); return(Created); } catch (Exception e) { transaction.Rollback(); throw e; } } }
public async Task <int> CreateAsync(GarmentLeftoverWarehouseReceiptFinishedGood model) { int Created = 0; using (var transaction = DbContext.Database.CurrentTransaction ?? DbContext.Database.BeginTransaction()) { try { model.FlagForCreate(IdentityService.Username, UserAgent); model.FlagForUpdate(IdentityService.Username, UserAgent); model.FinishedGoodReceiptNo = GenerateNo(model); foreach (var item in model.Items) { item.FlagForCreate(IdentityService.Username, UserAgent); item.FlagForUpdate(IdentityService.Username, UserAgent); } DbSet.Add(model); Created = await DbContext.SaveChangesAsync(); foreach (var item in model.Items) { GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.FINISHED_GOOD, UnitId = model.UnitFromId, UnitCode = model.UnitFromCode, UnitName = model.UnitFromName, RONo = item.RONo, LeftoverComodityCode = item.LeftoverComodityCode, LeftoverComodityId = item.LeftoverComodityId, LeftoverComodityName = item.LeftoverComodityName, Quantity = item.Quantity, BasicPrice = item.BasicPrice }; await StockService.StockIn(stock, model.FinishedGoodReceiptNo, model.Id, item.Id); await UpdateExpenditureGoodIsReceived(item.ExpenditureGoodId, "true"); } transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw e; } } return(Created); }
public async Task <int> DeleteAsync(int id) { using (var transaction = DbContext.Database.CurrentTransaction ?? DbContext.Database.BeginTransaction()) { try { int Deleted = 0; GarmentLeftoverWarehouseReceiptAccessory model = await ReadByIdAsync(id); model.FlagForDelete(IdentityService.Username, UserAgent); foreach (var item in model.Items) { item.FlagForDelete(IdentityService.Username, UserAgent); } Deleted = await DbContext.SaveChangesAsync(); foreach (var item in model.Items) { GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.ACCESSORIES, UnitId = model.RequestUnitId, UnitCode = model.RequestUnitCode, UnitName = model.RequestUnitName, PONo = item.POSerialNumber, UomId = item.UomUnitId, UomUnit = item.UomUnit, Quantity = item.Quantity, ProductCode = item.ProductCode, ProductId = item.ProductId, ProductName = item.ProductName }; await StockService.StockOut(stock, model.InvoiceNoReceive, model.Id, item.Id); } await UpdateUnitExpenditureNoteIsReceived(model.UENid, false); transaction.Commit(); return(Deleted); } catch (Exception e) { transaction.Rollback(); throw e; } } }
public async Task <int> DeleteAsync(int id) { int Deleted = 0; using (var transaction = DbContext.Database.CurrentTransaction ?? DbContext.Database.BeginTransaction()) { try { GarmentLeftoverWarehouseExpenditureFinishedGood model = await ReadByIdAsync(id); model.FlagForDelete(IdentityService.Username, UserAgent); foreach (var item in model.Items) { item.FlagForDelete(IdentityService.Username, UserAgent); } Deleted = await DbContext.SaveChangesAsync(); foreach (var item in model.Items) { GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.FINISHED_GOOD, UnitId = item.UnitId, UnitCode = item.UnitCode, UnitName = item.UnitName, RONo = item.RONo, Quantity = item.ExpenditureQuantity, LeftoverComodityCode = item.LeftoverComodityCode, LeftoverComodityId = item.LeftoverComodityId, LeftoverComodityName = item.LeftoverComodityName }; await StockService.StockIn(stock, model.FinishedGoodExpenditureNo, model.Id, item.Id); } transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw e; } } return(Deleted); }
private GarmentLeftoverWarehouseStock GenerateStock(GarmentLeftoverWarehouseExpenditureFabricItem item) { GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.FABRIC, UnitId = item.UnitId, UnitCode = item.UnitCode, UnitName = item.UnitName, PONo = item.PONo, UomId = item.UomId, UomUnit = item.UomUnit, Quantity = item.Quantity, BasicPrice = item.BasicPrice }; return(stock); }
public GarmentLeftoverWarehouseStockViewModel MapToViewModel(GarmentLeftoverWarehouseStock model) { GarmentLeftoverWarehouseStockViewModel viewModel = new GarmentLeftoverWarehouseStockViewModel(); PropertyCopier <GarmentLeftoverWarehouseStock, GarmentLeftoverWarehouseStockViewModel> .Copy(model, viewModel); viewModel.Unit = new UnitViewModel { Id = model.UnitId.ToString(), Code = model.UnitCode, Name = model.UnitName }; viewModel.Product = new ProductViewModel { Id = model.ProductId.ToString(), Code = model.ProductCode, Name = model.ProductName }; viewModel.Uom = new UomViewModel { Id = model.UomId.ToString(), Unit = model.UomUnit }; viewModel.LeftoverComodity = new LeftoverComodityViewModel { Id = model.LeftoverComodityId.GetValueOrDefault(), Code = model.ProductCode, Name = model.ProductName }; if (model.Histories != null) { viewModel.Histories = new List <GarmentLeftoverWarehouseStockHistoryViewModel>(); foreach (var modelHistory in model.Histories) { GarmentLeftoverWarehouseStockHistoryViewModel viewModelHistory = new GarmentLeftoverWarehouseStockHistoryViewModel(); PropertyCopier <GarmentLeftoverWarehouseStockHistory, GarmentLeftoverWarehouseStockHistoryViewModel> .Copy(modelHistory, viewModelHistory); } } return(viewModel); }
public async Task StockIn_KG_Success() { GarmentLeftoverWarehouseStockService service = new GarmentLeftoverWarehouseStockService(_dbContext(GetCurrentMethod()), GetServiceProvider().Object); GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.AVAL_FABRIC, UnitId = 1, UnitCode = "UnitFromCode", UnitName = "UnitFromName", Quantity = 1 }; var result = await service.StockIn(stock, "StockReferenceNo", 1, 1); await service.StockIn(stock, "StockReferenceNo", 1, 1); Assert.NotEqual(0, result); }
public async Task MapToViewModel() { GarmentLeftoverWarehouseStockService service = new GarmentLeftoverWarehouseStockService(_dbContext(GetCurrentMethod()), GetServiceProvider().Object); GarmentLeftoverWarehouseStock data = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.FABRIC, UnitId = 1, UnitCode = "UnitFromCode", UnitName = "UnitFromName", PONo = "POSerialNumber", Quantity = 1 }; await service.StockIn(data, "StockReferenceNo", 1, 1); var result = service.MapToViewModel(data); Assert.NotNull(result); }
private GarmentLeftoverWarehouseStock GenerateStock(GarmentLeftoverWarehouseExpenditureAccessoriesItem item) { GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.ACCESSORIES, UnitId = item.UnitId, UnitCode = item.UnitCode, UnitName = item.UnitName, PONo = item.PONo, UomId = item.UomId, UomUnit = item.UomUnit, Quantity = item.Quantity, ProductCode = item.ProductCode, ProductId = item.ProductId, ProductName = item.ProductName, BasicPrice = item.BasicPrice }; return(stock); }
public async Task <int> CreateAsync(GarmentLeftoverWarehouseExpenditureAccessories model) { using (var transaction = DbContext.Database.CurrentTransaction ?? DbContext.Database.BeginTransaction()) { try { int Created = 0; model.FlagForCreate(IdentityService.Username, UserAgent); model.FlagForUpdate(IdentityService.Username, UserAgent); model.ExpenditureNo = GenerateNo(model); foreach (var item in model.Items) { item.FlagForCreate(IdentityService.Username, UserAgent); item.FlagForUpdate(IdentityService.Username, UserAgent); } DbSet.Add(model); Created = await DbContext.SaveChangesAsync(); foreach (var item in model.Items) { GarmentLeftoverWarehouseStock stock = GenerateStock(item); await StockService.StockOut(stock, model.ExpenditureNo, model.Id, item.Id); } transaction.Commit(); return(Created); } catch (Exception e) { transaction.Rollback(); throw e; } } }
public async Task <int> UpdateAsync(int id, GarmentLeftoverWarehouseExpenditureFinishedGood model) { using (var transaction = DbContext.Database.CurrentTransaction ?? DbContext.Database.BeginTransaction()) { try { int Updated = 0; GarmentLeftoverWarehouseExpenditureFinishedGood existingModel = await ReadByIdAsync(id); if (existingModel.ExpenditureDate != model.ExpenditureDate) { existingModel.ExpenditureDate = model.ExpenditureDate; } if (existingModel.Consignment != model.Consignment) { existingModel.Consignment = model.Consignment; } if (existingModel.Description != model.Description) { existingModel.Description = model.Description; } existingModel.FlagForUpdate(IdentityService.Username, UserAgent); foreach (var existingItem in existingModel.Items) { GarmentLeftoverWarehouseStock stockIn = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.FINISHED_GOOD, UnitId = existingItem.UnitId, UnitCode = existingItem.UnitCode, UnitName = existingItem.UnitName, RONo = existingItem.RONo, Quantity = existingItem.ExpenditureQuantity, LeftoverComodityCode = existingItem.LeftoverComodityCode, LeftoverComodityId = existingItem.LeftoverComodityId, LeftoverComodityName = existingItem.LeftoverComodityName }; await StockService.StockIn(stockIn, model.FinishedGoodExpenditureNo, model.Id, existingItem.Id); } foreach (var existingItem in existingModel.Items) { var item = model.Items.FirstOrDefault(i => i.Id == existingItem.Id); if (item == null) { existingItem.FlagForDelete(IdentityService.Username, UserAgent); } else { if (existingItem.ExpenditureQuantity != item.ExpenditureQuantity) { existingItem.ExpenditureQuantity = item.ExpenditureQuantity; } existingItem.FlagForUpdate(IdentityService.Username, UserAgent); } } foreach (var item in model.Items.Where(i => i.Id == 0)) { item.FlagForCreate(IdentityService.Username, UserAgent); item.FlagForUpdate(IdentityService.Username, UserAgent); existingModel.Items.Add(item); } Updated = await DbContext.SaveChangesAsync(); foreach (var item in model.Items) { GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.FINISHED_GOOD, UnitId = item.UnitId, UnitCode = item.UnitCode, UnitName = item.UnitName, RONo = item.RONo, Quantity = item.ExpenditureQuantity, LeftoverComodityCode = item.LeftoverComodityCode, LeftoverComodityId = item.LeftoverComodityId, LeftoverComodityName = item.LeftoverComodityName }; await StockService.StockOut(stock, model.FinishedGoodExpenditureNo, model.Id, item.Id); } transaction.Commit(); return(Updated); } catch (Exception e) { transaction.Rollback(); throw e; } } }
public async Task <int> UpdateAsync(int id, GarmentLeftoverWarehouseExpenditureFabric model) { using (var transaction = DbContext.Database.CurrentTransaction ?? DbContext.Database.BeginTransaction()) { try { int Updated = 0; GarmentLeftoverWarehouseExpenditureFabric existingModel = await ReadByIdAsync(id); if (existingModel.ExpenditureDate != model.ExpenditureDate) { existingModel.ExpenditureDate = model.ExpenditureDate; } if (existingModel.Remark != model.Remark) { existingModel.Remark = model.Remark; } if (existingModel.QtyKG != model.QtyKG) { existingModel.QtyKG = model.QtyKG; } existingModel.FlagForUpdate(IdentityService.Username, UserAgent); foreach (var existingItem in existingModel.Items) { GarmentLeftoverWarehouseStock stockIn = GenerateStock(existingItem); await StockService.StockIn(stockIn, model.ExpenditureNo, model.Id, existingItem.Id); } foreach (var existingItem in existingModel.Items) { var item = model.Items.FirstOrDefault(i => i.Id == existingItem.Id); if (item == null) { existingItem.FlagForDelete(IdentityService.Username, UserAgent); } else { if (existingItem.Quantity != item.Quantity) { existingItem.Quantity = item.Quantity; } existingItem.FlagForUpdate(IdentityService.Username, UserAgent); } } foreach (var item in model.Items.Where(i => i.Id == 0)) { item.FlagForCreate(IdentityService.Username, UserAgent); item.FlagForUpdate(IdentityService.Username, UserAgent); existingModel.Items.Add(item); } Updated = await DbContext.SaveChangesAsync(); foreach (var item in model.Items) { GarmentLeftoverWarehouseStock stock = GenerateStock(item); await StockService.StockOut(stock, model.ExpenditureNo, model.Id, item.Id); } transaction.Commit(); return(Updated); } catch (Exception e) { transaction.Rollback(); throw e; } } }
public async Task <int> StockOut(GarmentLeftoverWarehouseStock stock, string StockReferenceNo, int StockReferenceId, int StockReferenceItemId) { try { int Affected = 0; var Query = DbSetStock.Where(w => w.ReferenceType == stock.ReferenceType && w.UnitId == stock.UnitId); switch (stock.ReferenceType) { case GarmentLeftoverWarehouseStockReferenceTypeEnum.FABRIC: Query = Query.Where(w => w.PONo == stock.PONo && w.UomId == stock.UomId); break; case GarmentLeftoverWarehouseStockReferenceTypeEnum.FINISHED_GOOD: Query = Query.Where(w => w.RONo == stock.RONo && w.LeftoverComodityId == stock.LeftoverComodityId); break; case GarmentLeftoverWarehouseStockReferenceTypeEnum.AVAL_FABRIC: break; case GarmentLeftoverWarehouseStockReferenceTypeEnum.AVAL_BAHAN_PENOLONG: Query = Query.Where(w => w.ProductId == stock.ProductId && w.UomId == stock.UomId); break; case GarmentLeftoverWarehouseStockReferenceTypeEnum.COMPONENT: break; case GarmentLeftoverWarehouseStockReferenceTypeEnum.ACCESSORIES: Query = Query.Where(w => w.PONo == stock.PONo && w.UomId == stock.UomId && w.ProductId == stock.ProductId); break; } var existingStock = Query.Single(); existingStock.Quantity -= stock.Quantity; existingStock.FlagForUpdate(IdentityService.Username, UserAgent); var lastStockHistory = DbSetStockHistory.Where(w => w.StockId == existingStock.Id).OrderBy(o => o._CreatedUtc).Last(); var beforeQuantity = lastStockHistory.AfterQuantity; var stockHistory = new GarmentLeftoverWarehouseStockHistory { StockId = existingStock.Id, StockReferenceNo = StockReferenceNo, StockReferenceId = StockReferenceId, StockReferenceItemId = StockReferenceItemId, StockType = GarmentLeftoverWarehouseStockTypeEnum.OUT, BeforeQuantity = beforeQuantity, Quantity = -stock.Quantity, AfterQuantity = beforeQuantity - stock.Quantity }; stockHistory.FlagForCreate(IdentityService.Username, UserAgent); stockHistory.FlagForUpdate(IdentityService.Username, UserAgent); DbSetStockHistory.Add(stockHistory); Affected = await DbContext.SaveChangesAsync(); return(Affected); } catch (Exception e) { throw e; } }
public async Task <int> CreateAsync(GarmentLeftoverWarehouseExpenditureAval model) { int Created = 0; using (var transaction = DbContext.Database.CurrentTransaction ?? DbContext.Database.BeginTransaction()) { try { model.FlagForCreate(IdentityService.Username, UserAgent); model.FlagForUpdate(IdentityService.Username, UserAgent); model.AvalExpenditureNo = GenerateNo(model); foreach (var item in model.Items) { if (model.AvalType == "AVAL FABRIC" || model.AvalType == "AVAL KOMPONEN") { var receiptAval = DbContext.GarmentLeftoverWarehouseReceiptAvals.Where(a => a.Id == item.AvalReceiptId).Single(); receiptAval.IsUsed = true; } item.FlagForCreate(IdentityService.Username, UserAgent); item.FlagForUpdate(IdentityService.Username, UserAgent); } DbSet.Add(model); Created = await DbContext.SaveChangesAsync(); foreach (var item in model.Items) { if (model.AvalType == "AVAL FABRIC") { GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.AVAL_FABRIC, UnitId = item.UnitId, UnitCode = item.UnitCode, UnitName = item.UnitName, Quantity = item.Quantity }; await StockService.StockOut(stock, model.AvalExpenditureNo, model.Id, item.Id); } else if (model.AvalType == "AVAL KOMPONEN") { GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.COMPONENT, UnitId = item.UnitId, UnitCode = item.UnitCode, UnitName = item.UnitName, Quantity = item.Quantity }; await StockService.StockOut(stock, model.AvalExpenditureNo, model.Id, item.Id); } else { GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.AVAL_BAHAN_PENOLONG, UnitId = item.UnitId, UnitCode = item.UnitCode, UnitName = item.UnitName, Quantity = item.Quantity, ProductCode = item.ProductCode, ProductName = item.ProductName, ProductId = item.ProductId, UomId = item.UomId, UomUnit = item.UomUnit, }; await StockService.StockOut(stock, model.AvalExpenditureNo, model.Id, item.Id); } } transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw e; } } return(Created); }
public async Task <int> UpdateAsync(int id, GarmentLeftoverWarehouseExpenditureAval model) { using (var transaction = DbContext.Database.CurrentTransaction ?? DbContext.Database.BeginTransaction()) { try { int Updated = 0; GarmentLeftoverWarehouseExpenditureAval existingModel = await ReadByIdAsync(id); if (existingModel.ExpenditureDate != model.ExpenditureDate) { existingModel.ExpenditureDate = model.ExpenditureDate; } if (existingModel.Description != model.Description) { existingModel.Description = model.Description; } existingModel.FlagForUpdate(IdentityService.Username, UserAgent); foreach (var existingItem in existingModel.Items) { if (existingModel.AvalType == "AVAL FABRIC") { GarmentLeftoverWarehouseStock stockIn = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.AVAL_FABRIC, UnitId = existingItem.UnitId, UnitCode = existingItem.UnitCode, UnitName = existingItem.UnitName, Quantity = existingItem.Quantity }; await StockService.StockIn(stockIn, model.AvalExpenditureNo, model.Id, existingItem.Id); } else if (existingModel.AvalType == "AVAL KOMPONEN") { GarmentLeftoverWarehouseStock stockIn = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.COMPONENT, UnitId = existingItem.UnitId, UnitCode = existingItem.UnitCode, UnitName = existingItem.UnitName, Quantity = existingItem.Quantity }; await StockService.StockIn(stockIn, model.AvalExpenditureNo, model.Id, existingItem.Id); } else { GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.AVAL_BAHAN_PENOLONG, UnitId = existingItem.UnitId, UnitCode = existingItem.UnitCode, UnitName = existingItem.UnitName, Quantity = existingItem.Quantity, ProductCode = existingItem.ProductCode, ProductName = existingItem.ProductName, ProductId = existingItem.ProductId, UomId = existingItem.UomId, UomUnit = existingItem.UomUnit, }; await StockService.StockIn(stock, model.AvalExpenditureNo, model.Id, existingItem.Id); } } foreach (var existingItem in existingModel.Items) { var item = model.Items.FirstOrDefault(i => i.Id == existingItem.Id); if (item == null) { if (model.AvalType == "AVAL FABRIC" || model.AvalType == "AVAL KOMPONEN") { var receiptAval = DbContext.GarmentLeftoverWarehouseReceiptAvals.Where(a => a.Id == existingItem.AvalReceiptId).Single(); receiptAval.IsUsed = false; } existingItem.FlagForDelete(IdentityService.Username, UserAgent); } else { if (existingItem.Quantity != item.Quantity) { existingItem.Quantity = item.Quantity; } if (existingItem.ActualQuantity != item.ActualQuantity) { existingItem.ActualQuantity = item.ActualQuantity; } existingItem.FlagForUpdate(IdentityService.Username, UserAgent); } } foreach (var item in model.Items.Where(i => i.Id == 0)) { if (model.AvalType == "AVAL FABRIC" || model.AvalType == "AVAL KOMPONEN") { var receiptAval = DbContext.GarmentLeftoverWarehouseReceiptAvals.Where(a => a.Id == item.AvalReceiptId).Single(); receiptAval.IsUsed = true; } item.FlagForCreate(IdentityService.Username, UserAgent); item.FlagForUpdate(IdentityService.Username, UserAgent); existingModel.Items.Add(item); } Updated = await DbContext.SaveChangesAsync(); foreach (var item in model.Items) { if (model.AvalType == "AVAL FABRIC") { GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.AVAL_FABRIC, UnitId = item.UnitId, UnitCode = item.UnitCode, UnitName = item.UnitName, Quantity = item.Quantity }; await StockService.StockOut(stock, model.AvalExpenditureNo, model.Id, item.Id); } else if (model.AvalType == "AVAL KOMPONEN") { GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.COMPONENT, UnitId = item.UnitId, UnitCode = item.UnitCode, UnitName = item.UnitName, Quantity = item.Quantity }; await StockService.StockOut(stock, model.AvalExpenditureNo, model.Id, item.Id); } else { GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.AVAL_BAHAN_PENOLONG, UnitId = item.UnitId, UnitCode = item.UnitCode, UnitName = item.UnitName, Quantity = item.Quantity, ProductCode = item.ProductCode, ProductName = item.ProductName, ProductId = item.ProductId, UomId = item.UomId, UomUnit = item.UomUnit, }; await StockService.StockOut(stock, model.AvalExpenditureNo, model.Id, item.Id); } } transaction.Commit(); return(Updated); } catch (Exception e) { transaction.Rollback(); throw e; } } }
public async Task <int> UpdateAsync(int id, GarmentLeftoverWarehouseReceiptAval model) { int Updated = 0; using (var transaction = DbContext.Database.CurrentTransaction ?? DbContext.Database.BeginTransaction()) { try { GarmentLeftoverWarehouseReceiptAval existingModel = await DbSet.Where(w => w.Id == id).FirstOrDefaultAsync(); if (existingModel.ReceiptDate != model.ReceiptDate) { existingModel.ReceiptDate = model.ReceiptDate; } if (existingModel.Remark != model.Remark) { existingModel.Remark = model.Remark; } if (existingModel.TotalAval != model.TotalAval) { existingModel.TotalAval = model.TotalAval; } if (model.AvalType == "AVAL FABRIC") { if (existingModel.TotalAval != model.TotalAval) { GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.AVAL_FABRIC, UnitId = model.UnitFromId, UnitCode = model.UnitFromCode, UnitName = model.UnitFromName, Quantity = existingModel.TotalAval }; await StockService.StockOut(stock, existingModel.AvalReceiptNo, model.Id, 0); GarmentLeftoverWarehouseStock stock1 = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.AVAL_FABRIC, UnitId = model.UnitFromId, UnitCode = model.UnitFromCode, UnitName = model.UnitFromName, Quantity = model.TotalAval }; await StockService.StockIn(stock1, model.AvalReceiptNo, model.Id, 0); existingModel.TotalAval = model.TotalAval; } } else if (model.AvalType == "AVAL KOMPONEN") { if (existingModel.TotalAval != model.TotalAval) { GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.COMPONENT, UnitId = model.UnitFromId, UnitCode = model.UnitFromCode, UnitName = model.UnitFromName, Quantity = existingModel.TotalAval }; await StockService.StockOut(stock, existingModel.AvalReceiptNo, model.Id, 0); GarmentLeftoverWarehouseStock stock1 = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.COMPONENT, UnitId = model.UnitFromId, UnitCode = model.UnitFromCode, UnitName = model.UnitFromName, Quantity = model.TotalAval }; await StockService.StockIn(stock1, model.AvalReceiptNo, model.Id, 0); existingModel.TotalAval = model.TotalAval; } } existingModel.FlagForUpdate(IdentityService.Username, UserAgent); Updated = await DbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw e; } } return(Updated); }
public async Task <int> DeleteAsync(int id) { int Deleted = 0; using (var transaction = DbContext.Database.CurrentTransaction ?? DbContext.Database.BeginTransaction()) { try { GarmentLeftoverWarehouseReceiptAval model = await ReadByIdAsync(id); model.FlagForDelete(IdentityService.Username, UserAgent); List <string> avalItemIds = new List <string>(); foreach (var item in model.Items) { avalItemIds.Add(item.GarmentAvalProductItemId.ToString()); item.FlagForDelete(IdentityService.Username, UserAgent); } Deleted = await DbContext.SaveChangesAsync(); if (model.AvalType == "AVAL FABRIC") { GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.AVAL_FABRIC, UnitId = model.UnitFromId, UnitCode = model.UnitFromCode, UnitName = model.UnitFromName, Quantity = model.TotalAval }; await StockService.StockOut(stock, model.AvalReceiptNo, model.Id, 0); await UpdateAvalProductIsReceived(avalItemIds, false); } else if (model.AvalType == "AVAL BAHAN PENOLONG") { foreach (var item in model.Items) { GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.AVAL_BAHAN_PENOLONG, UnitId = model.UnitFromId, UnitCode = model.UnitFromCode, UnitName = model.UnitFromName, Quantity = item.Quantity, ProductCode = item.ProductCode, ProductName = item.ProductName, ProductId = item.ProductId, UomId = item.UomId, UomUnit = item.UomUnit }; await StockService.StockOut(stock, model.AvalReceiptNo, model.Id, item.Id); } } else if (model.AvalType == "AVAL KOMPONEN") { GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock { ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.COMPONENT, UnitId = model.UnitFromId, UnitCode = model.UnitFromCode, UnitName = model.UnitFromName, Quantity = model.TotalAval }; await StockService.StockOut(stock, model.AvalReceiptNo, model.Id, 0); foreach (var item in model.Items) { await UpdateAvalComponentIsReceived(item.AvalComponentId.ToString(), false); } } transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw e; } } return(Deleted); }