public int EPOPost(List <GarmentExternalPurchaseOrder> ListEPO, string user) { int Updated = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { var Ids = ListEPO.Select(d => d.Id).ToList(); var listData = this.dbSet .Where(m => Ids.Contains(m.Id) && !m.IsDeleted) .Include(d => d.Items) .ToList(); listData.ForEach(m => { EntityExtension.FlagForUpdate(m, user, "Facade"); m.IsPosted = true; foreach (var item in m.Items) { GarmentInternalPurchaseOrderItem IPOItems = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(a => a.GPOId.Equals(item.POId)); if (item.ProductId.ToString() == IPOItems.ProductId) { IPOItems.RemainingBudget += item.UsedBudget; IPOItems.Status = "Sudah diorder ke Supplier"; } GarmentPurchaseRequestItem PRItems = this.dbContext.GarmentPurchaseRequestItems.FirstOrDefault(a => a.Id.Equals(IPOItems.GPRItemId)); PRItems.Status = "Sudah diorder ke Supplier"; EntityExtension.FlagForUpdate(item, user, "Facade"); } //foreach (var item in m.Items) //{ // EntityExtension.FlagForUpdate(item, user, "Facade"); //} }); Updated = dbContext.SaveChanges(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }
public int EPOCancel(int id, string user) { int Updated = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { var m = this.dbSet .Include(d => d.Items) .SingleOrDefault(epo => epo.Id == id && !epo.IsDeleted); EntityExtension.FlagForUpdate(m, user, "Facade"); m.IsCanceled = true; foreach (var item in m.Items) { GarmentInternalPurchaseOrder internalPurchaseOrder = this.dbContext.GarmentInternalPurchaseOrders.FirstOrDefault(s => s.Id == item.POId); internalPurchaseOrder.IsPosted = false; GarmentInternalPurchaseOrderItem IPOItem = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(a => a.GPOId.Equals(item.POId)); if (item.ProductId.ToString() == IPOItem.ProductId) { IPOItem.Status = "Dibatalkan"; } var ipoItems = this.dbContext.GarmentInternalPurchaseOrderItems.Where(a => a.GPRItemId.Equals(IPOItem.GPRItemId) && a.ProductId.Equals(item.ProductId.ToString())).ToList(); //returning Values foreach (var a in ipoItems) { a.RemainingBudget += item.UsedBudget; } EntityExtension.FlagForUpdate(item, user, "Facade"); } Updated = dbContext.SaveChanges(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }
public int EPOUnpost(int id, string user) { int Updated = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { var m = this.dbSet .Include(d => d.Items) .SingleOrDefault(epo => epo.Id == id && !epo.IsDeleted); EntityExtension.FlagForUpdate(m, user, "Facade"); m.IsPosted = false; foreach (var item in m.Items) { GarmentInternalPurchaseOrderItem IPOItems = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(a => a.GPOId.Equals(item.POId)); if (item.ProductId.ToString() == IPOItems.ProductId) { //IPOItems.RemainingBudget += item.UsedBudget; IPOItems.Status = "Sudah dibuat PO Eksternal"; } GarmentPurchaseRequestItem PRItems = this.dbContext.GarmentPurchaseRequestItems.FirstOrDefault(a => a.Id.Equals(IPOItems.GPRItemId)); PRItems.Status = "Sudah diterima Pembelian"; EntityExtension.FlagForUpdate(item, user, "Facade"); } Updated = dbContext.SaveChanges(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }
public async Task <int> Create(GarmentExternalPurchaseOrder m, string user, int clientTimeZoneOffset = 7) { int Created = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { foreach (var item in m.Items) { if (item.IsOverBudget) { m.IsOverBudget = true; break; } } m.EPONo = await GenerateNo(m, clientTimeZoneOffset); EntityExtension.FlagForCreate(m, user, USER_AGENT); foreach (var item in m.Items) { GarmentInternalPurchaseOrder internalPurchaseOrder = this.dbContext.GarmentInternalPurchaseOrders.FirstOrDefault(s => s.Id.Equals(item.POId)); internalPurchaseOrder.IsPosted = true; GarmentInternalPurchaseOrderItem IPOItem = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(a => a.GPOId.Equals(item.POId)); if (item.ProductId.ToString() == IPOItem.ProductId) { IPOItem.Status = "Sudah dibuat PO Eksternal"; } if ((m.PaymentMethod == "CMT" || m.PaymentMethod == "FREE FROM BUYER") && (m.PaymentType == "FREE" || m.PaymentType == "EX MASTER FREE")) { item.UsedBudget = 0; } else { var ipoItems = this.dbContext.GarmentInternalPurchaseOrderItems.Where(a => a.GPRItemId.Equals(IPOItem.GPRItemId) && a.ProductId.Equals(item.ProductId.ToString())).ToList(); foreach (var a in ipoItems) { a.RemainingBudget -= item.UsedBudget; } } 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 <int> Update(int id, GarmentExternalPurchaseOrder m, string user, int clientTimeZoneOffset = 7) { int Updated = 0; using (var transaction = dbContext.Database.BeginTransaction()) { try { var oldM = this.dbSet.AsNoTracking() .Include(d => d.Items) .SingleOrDefault(pr => pr.Id == id && !pr.IsDeleted); m.IsOverBudget = false; foreach (var item in m.Items) { if (item.IsOverBudget) { m.IsOverBudget = true; break; } } if (oldM != null && oldM.Id == id) { EntityExtension.FlagForUpdate(m, user, USER_AGENT); foreach (var Olditem in oldM.Items) { GarmentInternalPurchaseOrder internalPurchaseOrder = this.dbContext.GarmentInternalPurchaseOrders.FirstOrDefault(s => s.Id.Equals(Olditem.POId)); //internalPurchaseOrder.IsPosted = true; GarmentInternalPurchaseOrderItem IPOItem = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(a => a.GPOId.Equals(Olditem.POId)); var ipoItems = this.dbContext.GarmentInternalPurchaseOrderItems.Where(a => a.GPRItemId.Equals(IPOItem.GPRItemId) && a.ProductId.Equals(Olditem.ProductId.ToString())).ToList(); //returning Values foreach (var a in ipoItems) { a.RemainingBudget += Olditem.UsedBudget; } } foreach (var item in m.Items) { if (item.Id == 0) { GarmentInternalPurchaseOrder internalPurchaseOrder = this.dbContext.GarmentInternalPurchaseOrders.FirstOrDefault(s => s.Id.Equals(item.POId)); internalPurchaseOrder.IsPosted = true; GarmentInternalPurchaseOrderItem IPOItem = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(a => a.GPOId.Equals(item.POId)); if (item.ProductId.ToString() == IPOItem.ProductId) { IPOItem.Status = "Sudah dibuat PO Eksternal"; } if ((m.PaymentMethod == "CMT" || m.PaymentMethod == "FREE FROM BUYER") && (m.PaymentType == "FREE" || m.PaymentType == "EX MASTER FREE")) { item.UsedBudget = 0; } else { var ipoItems = this.dbContext.GarmentInternalPurchaseOrderItems.Where(a => a.GPRItemId.Equals(IPOItem.GPRItemId) && a.ProductId.Equals(item.ProductId.ToString())).ToList(); foreach (var a in ipoItems) { a.RemainingBudget -= item.UsedBudget; } } EntityExtension.FlagForCreate(item, user, USER_AGENT); } else { GarmentInternalPurchaseOrder internalPurchaseOrder = this.dbContext.GarmentInternalPurchaseOrders.FirstOrDefault(s => s.Id.Equals(item.POId)); internalPurchaseOrder.IsPosted = true; GarmentInternalPurchaseOrderItem IPOItem = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(a => a.GPOId.Equals(item.POId)); var ipoItems = this.dbContext.GarmentInternalPurchaseOrderItems.Where(a => a.GPRItemId.Equals(IPOItem.GPRItemId) && a.ProductId.Equals(item.ProductId.ToString())).ToList(); if ((m.PaymentMethod == "CMT" || m.PaymentMethod == "FREE FROM BUYER") && (m.PaymentType == "FREE" || m.PaymentType == "EX MASTER FREE")) { item.UsedBudget = 0; } else { foreach (var a in ipoItems) { a.RemainingBudget -= item.UsedBudget; } } EntityExtension.FlagForUpdate(item, user, USER_AGENT); } } dbSet.Update(m); foreach (var oldItem in oldM.Items) { var newItem = m.Items.FirstOrDefault(i => i.Id.Equals(oldItem.Id)); if (newItem == null) { GarmentInternalPurchaseOrder internalPurchaseOrder = this.dbContext.GarmentInternalPurchaseOrders.FirstOrDefault(s => s.Id.Equals(oldItem.POId)); internalPurchaseOrder.IsPosted = false; GarmentInternalPurchaseOrderItem IPOItems = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(a => a.GPOId.Equals(oldItem.POId)); if (oldItem.ProductId.ToString() == IPOItems.ProductId) { IPOItems.Status = "PO Internal belum diorder"; } EntityExtension.FlagForDelete(oldItem, user, USER_AGENT); dbContext.GarmentExternalPurchaseOrderItems.Update(oldItem); } } Updated = await dbContext.SaveChangesAsync(); transaction.Commit(); } else { throw new Exception("Invalid Id"); } } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }
public async Task <int> Create(GarmentDeliveryOrder m, string user, int clientTimeZoneOffset = 7) { int Created = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { EntityExtension.FlagForCreate(m, user, USER_AGENT); m.IsClosed = false; m.IsCorrection = false; m.IsCustoms = false; foreach (var item in m.Items) { EntityExtension.FlagForCreate(item, user, USER_AGENT); CurrencyViewModel garmentCurrencyViewModel = GetCurrency(item.CurrencyCode, m.DODate); m.DOCurrencyId = garmentCurrencyViewModel.Id; m.DOCurrencyCode = garmentCurrencyViewModel.Code; m.DOCurrencyRate = garmentCurrencyViewModel.Rate; foreach (var detail in item.Details) { GarmentInternalPurchaseOrder internalPurchaseOrder = this.dbContext.GarmentInternalPurchaseOrders.FirstOrDefault(s => s.Id.Equals(detail.POId)); GarmentInternalPurchaseOrderItem internalPurchaseOrderItem = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(s => s.GPOId.Equals(internalPurchaseOrder.Id)); detail.POItemId = (int)internalPurchaseOrderItem.Id; detail.PRItemId = internalPurchaseOrderItem.GPRItemId; detail.UnitId = internalPurchaseOrder.UnitId; detail.UnitCode = internalPurchaseOrder.UnitCode; EntityExtension.FlagForCreate(detail, user, USER_AGENT); GarmentExternalPurchaseOrderItem externalPurchaseOrderItem = this.dbContext.GarmentExternalPurchaseOrderItems.FirstOrDefault(s => s.Id.Equals(detail.EPOItemId)); externalPurchaseOrderItem.DOQuantity = externalPurchaseOrderItem.DOQuantity + detail.DOQuantity; if (externalPurchaseOrderItem.ReceiptQuantity == 0) { if (externalPurchaseOrderItem.DOQuantity > 0 && externalPurchaseOrderItem.DOQuantity < externalPurchaseOrderItem.DealQuantity) { internalPurchaseOrderItem.Status = "Barang sudah datang parsial"; } else if (externalPurchaseOrderItem.DOQuantity > 0 && externalPurchaseOrderItem.DOQuantity >= externalPurchaseOrderItem.DealQuantity) { internalPurchaseOrderItem.Status = "Barang sudah datang semua"; } } detail.QuantityCorrection = detail.DOQuantity; detail.PricePerDealUnitCorrection = detail.PricePerDealUnit; detail.PriceTotalCorrection = detail.PriceTotal; m.TotalAmount += detail.PriceTotal; } } 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 <int> Delete(int id, string user) { int Deleted = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { var model = this.dbSet .Include(m => m.Items) .ThenInclude(i => i.Details) .SingleOrDefault(m => m.Id == id && !m.IsDeleted); EntityExtension.FlagForDelete(model, user, USER_AGENT); foreach (var item in model.Items) { EntityExtension.FlagForDelete(item, user, USER_AGENT); foreach (var detail in item.Details) { GarmentExternalPurchaseOrderItem externalPurchaseOrderItem = this.dbContext.GarmentExternalPurchaseOrderItems.FirstOrDefault(s => s.Id.Equals(detail.EPOItemId)); GarmentInternalPurchaseOrder internalPurchaseOrder = this.dbContext.GarmentInternalPurchaseOrders.FirstOrDefault(s => s.Id.Equals(detail.POId)); GarmentInternalPurchaseOrderItem internalPurchaseOrderItem = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(s => s.GPOId.Equals(detail.POId)); GarmentDeliveryOrderDetail deliveryOrderDetail = this.dbContext.GarmentDeliveryOrderDetails.FirstOrDefault(s => s.Id.Equals(detail.Id)); externalPurchaseOrderItem.DOQuantity = externalPurchaseOrderItem.DOQuantity - detail.DOQuantity; if (externalPurchaseOrderItem.ReceiptQuantity == 0) { if (externalPurchaseOrderItem.DOQuantity == 0) { GarmentPurchaseRequestItem purchaseRequestItem = this.dbContext.GarmentPurchaseRequestItems.FirstOrDefault(s => s.Id.Equals(detail.PRItemId)); purchaseRequestItem.Status = "Sudah diorder ke Supplier"; internalPurchaseOrderItem.Status = "Sudah diorder ke Supplier"; } else if (externalPurchaseOrderItem.DOQuantity > 0 && externalPurchaseOrderItem.DOQuantity < externalPurchaseOrderItem.DealQuantity) { internalPurchaseOrderItem.Status = "Barang sudah datang parsial"; } else if (externalPurchaseOrderItem.DOQuantity > 0 && externalPurchaseOrderItem.DOQuantity >= externalPurchaseOrderItem.DealQuantity) { internalPurchaseOrderItem.Status = "Barang Sudah Datang Semua"; } } EntityExtension.FlagForDelete(detail, user, USER_AGENT); } } Deleted = await dbContext.SaveChangesAsync(); await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Deleted); }
public async Task <int> Update(int id, GarmentDeliveryOrderViewModel vm, GarmentDeliveryOrder m, string user, int clientTimeZoneOffset = 7) { int Updated = 0; using (var transaction = dbContext.Database.BeginTransaction()) { try { var oldM = this.dbSet.AsNoTracking() .Include(d => d.Items) .ThenInclude(d => d.Details) .SingleOrDefault(pr => pr.Id == id && !pr.IsDeleted); if (oldM != null && oldM.Id == id) { EntityExtension.FlagForUpdate(m, user, USER_AGENT); foreach (var vmItem in vm.items) { foreach (var modelItem in m.Items.Where(i => i.Id == vmItem.Id)) { foreach (var item in oldM.Items.Where(i => i.EPOId == modelItem.EPOId).ToList()) { EntityExtension.FlagForUpdate(modelItem, user, USER_AGENT); CurrencyViewModel garmentCurrencyViewModel = GetCurrency(item.CurrencyCode, m.DODate); m.DOCurrencyId = garmentCurrencyViewModel.Id; m.DOCurrencyCode = garmentCurrencyViewModel.Code; m.DOCurrencyRate = garmentCurrencyViewModel.Rate; foreach (var vmDetail in vmItem.fulfillments) { foreach (var modelDetail in modelItem.Details.Where(j => j.Id == vmDetail.Id)) { foreach (var detail in item.Details.Where(j => j.EPOItemId == modelDetail.EPOItemId).ToList()) { GarmentInternalPurchaseOrder internalPurchaseOrder = this.dbContext.GarmentInternalPurchaseOrders.FirstOrDefault(s => s.Id.Equals(modelDetail.POId)); GarmentInternalPurchaseOrderItem internalPurchaseOrderItem = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(s => s.GPOId.Equals(modelDetail.POId)); GarmentExternalPurchaseOrderItem externalPurchaseOrderItem = this.dbContext.GarmentExternalPurchaseOrderItems.FirstOrDefault(s => s.Id.Equals(modelDetail.EPOItemId)); if (vmDetail.isSave == false) { externalPurchaseOrderItem.DOQuantity = externalPurchaseOrderItem.DOQuantity - detail.DOQuantity; } else { externalPurchaseOrderItem.DOQuantity = externalPurchaseOrderItem.DOQuantity - detail.DOQuantity + modelDetail.DOQuantity; modelDetail.POItemId = (int)internalPurchaseOrderItem.Id; modelDetail.PRItemId = internalPurchaseOrderItem.GPRItemId; modelDetail.UnitId = internalPurchaseOrder.UnitId; modelDetail.UnitCode = internalPurchaseOrder.UnitCode; modelDetail.QuantityCorrection = modelDetail.DOQuantity; modelDetail.PricePerDealUnitCorrection = modelDetail.PricePerDealUnit; modelDetail.PriceTotalCorrection = modelDetail.PriceTotal; } if (externalPurchaseOrderItem.ReceiptQuantity == 0) { if (externalPurchaseOrderItem.DOQuantity == 0) { GarmentPurchaseRequestItem purchaseRequestItem = this.dbContext.GarmentPurchaseRequestItems.FirstOrDefault(s => s.Id.Equals(modelDetail.PRItemId)); purchaseRequestItem.Status = "Sudah diorder ke Supplier"; internalPurchaseOrderItem.Status = "Sudah diorder ke Supplier"; } else if (externalPurchaseOrderItem.DOQuantity > 0 && externalPurchaseOrderItem.DOQuantity < externalPurchaseOrderItem.DealQuantity) { internalPurchaseOrderItem.Status = "Barang sudah datang parsial"; } else if (externalPurchaseOrderItem.DOQuantity > 0 && externalPurchaseOrderItem.DOQuantity >= externalPurchaseOrderItem.DealQuantity) { internalPurchaseOrderItem.Status = "Barang Sudah Datang Semua"; } } EntityExtension.FlagForUpdate(modelDetail, user, USER_AGENT); } } } } } } dbSet.Update(m); Updated = await dbContext.SaveChangesAsync(); transaction.Commit(); } else { throw new Exception("Invalid Id"); } } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }