public async Task <int> CreateAsync(FPReturnInvToPurchasing model) { int Created = 0; using (var transaction = DbContext.Database.BeginTransaction()) { try { IFpRegradingResultDocsService fpRegradingResultDocsService = ServiceProvider.GetService <IFpRegradingResultDocsService>(); foreach (FPReturnInvToPurchasingDetail detail in model.FPReturnInvToPurchasingDetails) { fpRegradingResultDocsService.UpdateIsReturnedToPurchasing(detail.FPRegradingResultDocsId, true); detail.FlagForCreate(IdentityService.Username, UserAgent); detail.FlagForUpdate(IdentityService.Username, UserAgent); } model = await this.NoGenerator(model); DbSet.Add(model); Created = await DbContext.SaveChangesAsync(); await CreateInventoryDocumentAsync(model, "OUT"); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception("Insert Error : " + e.Message); } } return(Created); }
public async Task <int> DeleteAsync(int id) { int Count = 0; using (var Transaction = this.DbContext.Database.BeginTransaction()) { try { IFpRegradingResultDocsService fpRegradingResultDocsService = ServiceProvider.GetService <IFpRegradingResultDocsService>(); FPReturnInvToPurchasing fpReturnInvToPurchasing = await ReadByIdAsync(id); fpReturnInvToPurchasing.FlagForDelete(IdentityService.Username, UserAgent); foreach (var item in fpReturnInvToPurchasing.FPReturnInvToPurchasingDetails) { fpRegradingResultDocsService.UpdateIsReturnedToPurchasing(item.FPRegradingResultDocsId, false); item.FlagForDelete(IdentityService.Username, UserAgent); } Count = await DbContext.SaveChangesAsync(); await CreateInventoryDocumentAsync(fpReturnInvToPurchasing, "IN"); Transaction.Commit(); } catch (Exception e) { Transaction.Rollback(); throw new Exception("Delete Error : " + e.Message); } } return(Count); }
public async Task <FPReturnInvToPurchasing> NoGenerator(FPReturnInvToPurchasing Model) { var unit = string.Equals(Model.UnitName.ToUpper(), "PRINTING") ? "PR" : "FS"; var lastData = await this.DbSet.Where(w => w.UnitName == Model.UnitName).OrderByDescending(o => o._CreatedUtc).FirstOrDefaultAsync(); DateTime Now = DateTime.Now; string Year = Now.ToString("yy"); if (lastData == null) { Model.AutoIncrementNumber = 1; string Number = Model.AutoIncrementNumber.ToString().PadLeft(4, '0'); Model.No = $"BL{unit}{Year}{Number}"; } else { if (lastData._CreatedUtc.Year < Now.Year) { Model.AutoIncrementNumber = 1; string Number = Model.AutoIncrementNumber.ToString().PadLeft(4, '0'); Model.No = $"BL{unit}{Year}{Number}"; } else { Model.AutoIncrementNumber = lastData.AutoIncrementNumber + 1; string Number = Model.AutoIncrementNumber.ToString().PadLeft(4, '0'); Model.No = $"BL{unit}{Year}{Number}"; } } return(Model); }
public FPReturnInvToPurchasing GetNewData() { FPReturnInvToPurchasing TestData = new FPReturnInvToPurchasing { UnitName = "unit", SupplierId = "1", SupplierName = "name", SupplierCode = "code", FPReturnInvToPurchasingDetails = new List <FPReturnInvToPurchasingDetail>() { new FPReturnInvToPurchasingDetail() { FPRegradingResultDocsId = 1, FPRegradingResultDocsCode = "code", ProductId = "1", ProductCode = "coode", ProductName = "name", Quantity = 1, NecessaryLength = 1, Length = 1, Description = "" } } }; return(TestData); }
public async Task <FPReturnInvToPurchasing> GetTestData() { FpRegradingResultDataUtil.FpRegradingResultDataUtil fprsDataUtil = new FpRegradingResultDataUtil.FpRegradingResultDataUtil(FPRService); var regradDocs = await fprsDataUtil.GetTestData(); FPReturnInvToPurchasing Data = GetNewData(); foreach (var item in Data.FPReturnInvToPurchasingDetails) { item.FPRegradingResultDocsId = regradDocs.Id; item.FPRegradingResultDocsCode = regradDocs.Code; } await this.Service.CreateAsync(Data); return(Data); }
public FPReturnInvToPurchasingViewModel MapToViewModel(FPReturnInvToPurchasing model) { FPReturnInvToPurchasingViewModel viewModel = new FPReturnInvToPurchasingViewModel(); PropertyCopier <FPReturnInvToPurchasing, FPReturnInvToPurchasingViewModel> .Copy(model, viewModel); #region Unit viewModel.Unit = new UnitViewModel(); viewModel.Unit.Name = model.UnitName; #endregion Unit #region Supplier viewModel.Supplier = new SupplierViewModel(); viewModel.Supplier._id = model.SupplierId; viewModel.Supplier.code = model.SupplierCode; viewModel.Supplier.name = model.SupplierName; #endregion Supplier viewModel.FPReturnInvToPurchasingDetails = new List <FPReturnInvToPurchasingDetailViewModel>(); foreach (FPReturnInvToPurchasingDetail detail in model.FPReturnInvToPurchasingDetails) { FPReturnInvToPurchasingDetailViewModel detailVM = new FPReturnInvToPurchasingDetailViewModel(); PropertyCopier <FPReturnInvToPurchasingDetail, FPReturnInvToPurchasingDetailViewModel> .Copy(detail, detailVM); #region Product detailVM.Product = new ProductViewModel(); detailVM.Product.Id = detail.ProductId; detailVM.Product.Code = detail.ProductCode; detailVM.Product.Name = detail.ProductName; #endregion Product viewModel.FPReturnInvToPurchasingDetails.Add(detailVM); } return(viewModel); }
public FPReturnInvToPurchasing MapToModel(FPReturnInvToPurchasingViewModel viewModel) { FPReturnInvToPurchasing model = new FPReturnInvToPurchasing(); PropertyCopier <FPReturnInvToPurchasingViewModel, FPReturnInvToPurchasing> .Copy(viewModel, model); #region Unit model.UnitName = viewModel.Unit.Name; #endregion Unit #region Supplier model.SupplierId = viewModel.Supplier._id; model.SupplierCode = viewModel.Supplier.code; model.SupplierName = viewModel.Supplier.name; #endregion Supplier model.FPReturnInvToPurchasingDetails = new List <FPReturnInvToPurchasingDetail>(); foreach (FPReturnInvToPurchasingDetailViewModel detailVM in viewModel.FPReturnInvToPurchasingDetails) { FPReturnInvToPurchasingDetail detail = new FPReturnInvToPurchasingDetail(); PropertyCopier <FPReturnInvToPurchasingDetailViewModel, FPReturnInvToPurchasingDetail> .Copy(detailVM, detail); #region Product detail.ProductId = detailVM.Product.Id; detail.ProductCode = detailVM.Product.Code; detail.ProductName = detailVM.Product.Name; #endregion Product model.FPReturnInvToPurchasingDetails.Add(detail); } return(model); }
public async Task <int> CreateInventoryDocumentAsync(FPReturnInvToPurchasing model, string Type) { string storageURI = "master/storages"; string uomURI = "master/uoms"; IHttpService httpClient = (IHttpService)this.ServiceProvider.GetService(typeof(IHttpService)); #region UOM Dictionary <string, object> filterUOM = new Dictionary <string, object> { { "unit", "MTR" } }; var responseUOM = httpClient.GetAsync($@"{APIEndpoint.Core}{uomURI}?filter=" + JsonConvert.SerializeObject(filterUOM)).Result.Content.ReadAsStringAsync(); Dictionary <string, object> resultUOM = JsonConvert.DeserializeObject <Dictionary <string, object> >(responseUOM.Result); var jsonUOM = resultUOM.Single(p => p.Key.Equals("data")).Value; Dictionary <string, object> uom = JsonConvert.DeserializeObject <List <Dictionary <string, object> > >(jsonUOM.ToString())[0]; #endregion UOM #region Storage var storageName = model.UnitName.Equals("PRINTING") ? "Gudang Greige Printing" : "Gudang Greige Finishing"; Dictionary <string, object> filterStorage = new Dictionary <string, object> { { "name", storageName } }; var responseStorage = httpClient.GetAsync($@"{APIEndpoint.Core}{storageURI}?filter=" + JsonConvert.SerializeObject(filterStorage)).Result.Content.ReadAsStringAsync(); Dictionary <string, object> resultStorage = JsonConvert.DeserializeObject <Dictionary <string, object> >(responseStorage.Result); var jsonStorage = resultStorage.Single(p => p.Key.Equals("data")).Value; Dictionary <string, object> storage = JsonConvert.DeserializeObject <List <Dictionary <string, object> > >(jsonStorage.ToString())[0]; #endregion Storage #region Inventory Document List <InventoryDocumentItem> inventoryDocumentItems = new List <InventoryDocumentItem>(); foreach (FPReturnInvToPurchasingDetail detail in model.FPReturnInvToPurchasingDetails) { InventoryDocumentItem inventoryDocumentItem = new InventoryDocumentItem { ProductId = int.Parse(detail.ProductId), ProductCode = detail.ProductCode, ProductName = detail.ProductName, Quantity = detail.Length, UomId = int.Parse(uom["Id"].ToString()), UomUnit = uom["Unit"].ToString() }; inventoryDocumentItems.Add(inventoryDocumentItem); } InventoryDocument inventoryDocument = new InventoryDocument { Date = DateTimeOffset.UtcNow, ReferenceNo = model.No, ReferenceType = "Bon Retur Barang - Pembelian", Type = Type, StorageId = int.Parse(storage["_id"].ToString()), StorageCode = storage["code"].ToString(), StorageName = storage["name"].ToString(), Items = inventoryDocumentItems }; var inventoryDocumentFacade = ServiceProvider.GetService <IInventoryDocumentService>(); return(await inventoryDocumentFacade.Create(inventoryDocument)); #endregion Inventory Document }
public async Task <int> UpdateAsync(int id, FPReturnInvToPurchasing model) { int updated = 0; using (var transaction = DbContext.Database.BeginTransaction()) { try { if (id != model.Id) { throw new Exception("data not found"); } var dbModel = await ReadByIdAsync(id); dbModel.SupplierCode = model.SupplierCode; dbModel.SupplierName = model.SupplierName; dbModel.SupplierId = model.SupplierId; dbModel.UnitName = model.UnitName; dbModel.FlagForUpdate(IdentityService.Username, UserAgent); //DbSet.Update(dbModel); var deletedItems = dbModel.FPReturnInvToPurchasingDetails.Where(x => !model.FPReturnInvToPurchasingDetails.Any(y => x.Id == y.Id)); var updatedItems = dbModel.FPReturnInvToPurchasingDetails.Where(x => model.FPReturnInvToPurchasingDetails.Any(y => x.Id == y.Id)); var addedItems = model.FPReturnInvToPurchasingDetails.Where(x => !dbModel.FPReturnInvToPurchasingDetails.Any(y => y.Id == x.Id)); foreach (var item in deletedItems) { item.FlagForDelete(IdentityService.Username, UserAgent); } foreach (var item in updatedItems) { var selectedItem = model.FPReturnInvToPurchasingDetails.FirstOrDefault(x => x.Id == item.Id); item.Length = selectedItem.Length; item.ProductCode = selectedItem.ProductCode; item.ProductId = selectedItem.ProductId; item.ProductName = selectedItem.ProductName; item.Quantity = selectedItem.Quantity; item.Description = selectedItem.Description; item.FPRegradingResultDocsCode = selectedItem.FPRegradingResultDocsCode; item.FPRegradingResultDocsId = selectedItem.FPRegradingResultDocsId; item.NecessaryLength = selectedItem.NecessaryLength; item.FlagForUpdate(IdentityService.Username, UserAgent); } foreach (var item in addedItems) { item.FPReturnInvToPurchasingId = id; item.FlagForCreate(IdentityService.Username, UserAgent); item.FlagForUpdate(IdentityService.Username, UserAgent); } updated = await DbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); throw ex; } } return(updated); }