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) .ThenInclude(d => d.Details) .SingleOrDefault(epo => epo.Id == id && !epo.IsDeleted); EntityExtension.FlagForUpdate(m, user, "Facade"); m.IsPosted = false; foreach (var item in m.Items) { //var existPR = this.dbContext.ExternalPurchaseOrderItems.Include(a => a.Details).Where(a => a.EPOId != item.EPOId); EntityExtension.FlagForUpdate(item, user, "Facade"); foreach (var detail in item.Details) { var existPR = (from a in this.dbContext.ExternalPurchaseOrderDetails join b in dbContext.ExternalPurchaseOrderItems on a.EPOItemId equals b.Id join c in dbContext.ExternalPurchaseOrders on b.EPOId equals c.Id where a.PRItemId == detail.PRItemId && a.IsDeleted == false && b.EPOId != item.EPOId && c.IsPosted == true select a).FirstOrDefault(); EntityExtension.FlagForUpdate(detail, user, "Facade"); if (existPR == null) { PurchaseRequestItem purchaseRequestItem = this.dbContext.PurchaseRequestItems.FirstOrDefault(s => s.Id == detail.PRItemId); purchaseRequestItem.Status = "Sudah diterima Pembelian"; } InternalPurchaseOrderItem internalPurchaseOrderItem = this.dbContext.InternalPurchaseOrderItems.FirstOrDefault(s => s.Id == detail.POItemId); internalPurchaseOrderItem.Status = "Sudah dibuat PO Eksternal"; } } Updated = dbContext.SaveChanges(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }
public async Task <int> Create(ExternalPurchaseOrder m, string user, int clientTimeZoneOffset) { int Created = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { EntityExtension.FlagForCreate(m, user, "Facade"); m.EPONo = await GenerateNo(m, clientTimeZoneOffset); if (m.UseIncomeTax == false) { m.IncomeTaxBy = ""; } foreach (var item in m.Items) { EntityExtension.FlagForCreate(item, user, "Facade"); foreach (var detail in item.Details) { detail.PricePerDealUnit = detail.IncludePpn ? (100 * detail.PriceBeforeTax) / 110 : detail.PriceBeforeTax; //PurchaseRequestItem purchaseRequestItem = this.dbContext.PurchaseRequestItems.FirstOrDefault(s => s.Id == detail.PRItemId); //purchaseRequestItem.Status = "Sudah diorder ke Supplier"; EntityExtension.FlagForCreate(detail, user, "Facade"); InternalPurchaseOrderItem internalPurchaseOrderItem = this.dbContext.InternalPurchaseOrderItems.FirstOrDefault(s => s.Id == detail.POItemId); internalPurchaseOrderItem.Status = "Sudah dibuat PO Eksternal"; } InternalPurchaseOrder internalPurchaseOrder = this.dbContext.InternalPurchaseOrders.FirstOrDefault(s => s.Id == item.POId); internalPurchaseOrder.IsPosted = true; } this.dbSet.Add(m); Created = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Created); }
public int EPOPost(List <ExternalPurchaseOrder> 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) .ThenInclude(d => d.Details) .ToList(); listData.ForEach(m => { EntityExtension.FlagForUpdate(m, user, "Facade"); m.IsPosted = true; foreach (var item in m.Items) { EntityExtension.FlagForUpdate(item, user, "Facade"); foreach (var detail in item.Details) { EntityExtension.FlagForUpdate(detail, user, "Facade"); InternalPurchaseOrderItem internalPurchaseOrderItem = this.dbContext.InternalPurchaseOrderItems.FirstOrDefault(s => s.Id == detail.POItemId); internalPurchaseOrderItem.Status = "Sudah diorder ke Supplier"; PurchaseRequestItem purchaseRequestItem = this.dbContext.PurchaseRequestItems.FirstOrDefault(s => s.Id == detail.PRItemId); purchaseRequestItem.Status = "Sudah diorder ke Supplier"; } } }); 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) .ThenInclude(d => d.Details) .SingleOrDefault(epo => epo.Id == id && !epo.IsDeleted); EntityExtension.FlagForUpdate(m, user, "Facade"); m.IsCanceled = true; foreach (var item in m.Items) { EntityExtension.FlagForUpdate(item, user, "Facade"); foreach (var detail in item.Details) { EntityExtension.FlagForUpdate(detail, user, "Facade"); InternalPurchaseOrderItem internalPurchaseOrderItem = this.dbContext.InternalPurchaseOrderItems.FirstOrDefault(s => s.Id == detail.POItemId); internalPurchaseOrderItem.Status = "Dibatalkan"; //PurchaseRequestItem purchaseRequestItem = this.dbContext.PurchaseRequestItems.FirstOrDefault(s => s.Id == detail.PRItemId); //purchaseRequestItem.Status = "Dibatalkan"; } } Updated = dbContext.SaveChanges(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }
public int Delete(int id, string user) { int Deleted = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { var m = this.dbSet .Include(d => d.Items) .ThenInclude(d => d.Details) .SingleOrDefault(epo => epo.Id == id && !epo.IsDeleted); EntityExtension.FlagForDelete(m, user, "Facade"); foreach (var item in m.Items) { EntityExtension.FlagForDelete(item, user, "Facade"); foreach (var detail in item.Details) { //PurchaseRequestItem purchaseRequestItem = this.dbContext.PurchaseRequestItems.FirstOrDefault(s => s.Id == detail.PRItemId); //purchaseRequestItem.Status = "Sudah diterima Pembelian"; EntityExtension.FlagForDelete(detail, user, "Facade"); InternalPurchaseOrderItem internalPurchaseOrderItem = this.dbContext.InternalPurchaseOrderItems.FirstOrDefault(s => s.Id == detail.POItemId); internalPurchaseOrderItem.Status = "PO Internal belum diorder"; } InternalPurchaseOrder internalPurchaseOrder = this.dbContext.InternalPurchaseOrders.FirstOrDefault(s => s.Id == item.POId); internalPurchaseOrder.IsPosted = false; } Deleted = dbContext.SaveChanges(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Deleted); }
private void SetStatus(UnitPaymentOrderDetail detail, string username) { ExternalPurchaseOrderDetail EPODetail = dbContext.ExternalPurchaseOrderDetails.Single(m => m.Id == detail.EPODetailId); InternalPurchaseOrderItem POItem = dbContext.InternalPurchaseOrderItems.Single(m => m.Id == EPODetail.POItemId); List <long> EPODetailIds = dbContext.ExternalPurchaseOrderDetails.Where(m => m.POItemId == POItem.Id).Select(m => m.Id).ToList(); List <long> URNItemIds = dbContext.UnitReceiptNoteItems.Where(m => EPODetailIds.Contains(m.EPODetailId)).Select(m => m.Id).ToList(); var totalReceiptQuantity = dbContext.UnitPaymentOrderDetails.AsNoTracking().Where(m => m.IsDeleted == false && URNItemIds.Contains(m.URNItemId)).Sum(m => m.ReceiptQuantity); if (totalReceiptQuantity > 0) { if (totalReceiptQuantity < EPODetail.DealQuantity) { POItem.Status = "Sudah dibuat SPB sebagian"; } else { POItem.Status = "Sudah dibuat SPB semua"; } } else if (totalReceiptQuantity == 0) { if (EPODetail.DOQuantity >= EPODetail.DealQuantity) { if (EPODetail.ReceiptQuantity < EPODetail.DealQuantity) { POItem.Status = "Barang sudah diterima Unit parsial"; } else { POItem.Status = "Barang sudah diterima Unit semua"; } } else { POItem.Status = "Barang sudah diterima Unit parsial"; } } EntityExtension.FlagForUpdate(POItem, username, USER_AGENT); }
private void SetStatus(ExternalPurchaseOrderDetail externalPurchaseOrderDetail, DeliveryOrderDetail detail, string username) { if (externalPurchaseOrderDetail.ReceiptQuantity == 0) { if (dbContext.UnitPaymentOrderDetails.FirstOrDefault(d => d.POItemId == externalPurchaseOrderDetail.POItemId) == null) { //PurchaseRequestItem purchaseRequestItem = this.dbContext.PurchaseRequestItems.SingleOrDefault(i => i.Id == detail.PRItemId); InternalPurchaseOrderItem internalPurchaseOrderItem = this.dbContext.InternalPurchaseOrderItems.SingleOrDefault(i => i.Id == detail.POItemId); if (externalPurchaseOrderDetail.DOQuantity == 0) { //purchaseRequestItem.Status = "Sudah diorder ke Supplier"; internalPurchaseOrderItem.Status = "Sudah diorder ke Supplier"; //EntityExtension.FlagForUpdate(purchaseRequestItem, username, USER_AGENT); EntityExtension.FlagForUpdate(internalPurchaseOrderItem, username, USER_AGENT); } else if (externalPurchaseOrderDetail.DOQuantity > 0 && externalPurchaseOrderDetail.DOQuantity < externalPurchaseOrderDetail.DealQuantity) { //purchaseRequestItem.Status = "Barang sudah datang parsial"; internalPurchaseOrderItem.Status = "Barang sudah datang parsial"; //EntityExtension.FlagForUpdate(purchaseRequestItem, username, USER_AGENT); EntityExtension.FlagForUpdate(internalPurchaseOrderItem, username, USER_AGENT); } else if (externalPurchaseOrderDetail.DOQuantity > 0 && externalPurchaseOrderDetail.DOQuantity >= externalPurchaseOrderDetail.DealQuantity) { //purchaseRequestItem.Status = "Barang sudah datang semua"; internalPurchaseOrderItem.Status = "Barang sudah datang semua"; //EntityExtension.FlagForUpdate(purchaseRequestItem, username, USER_AGENT); EntityExtension.FlagForUpdate(internalPurchaseOrderItem, username, USER_AGENT); } } } }
public async Task <int> Update(int id, ExternalPurchaseOrder externalPurchaseOrder, string user) { int Updated = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { var existingModel = this.dbSet.AsNoTracking() .Include(d => d.Items) .ThenInclude(d => d.Details) .Single(epo => epo.Id == id && !epo.IsDeleted); if (existingModel != null && id == externalPurchaseOrder.Id) { EntityExtension.FlagForUpdate(externalPurchaseOrder, user, "Facade"); if (externalPurchaseOrder.UseIncomeTax == false) { externalPurchaseOrder.IncomeTaxBy = ""; } foreach (var item in externalPurchaseOrder.Items.ToList()) { var existingItem = existingModel.Items.SingleOrDefault(m => m.Id == item.Id); List <ExternalPurchaseOrderItem> duplicateExternalPurchaseOrderItems = externalPurchaseOrder.Items.Where(i => i.POId == item.POId && i.Id != item.Id).ToList(); if (item.Id == 0) { if (duplicateExternalPurchaseOrderItems.Count <= 0) { EntityExtension.FlagForCreate(item, user, "Facade"); foreach (var detail in item.Details) { detail.PricePerDealUnit = detail.IncludePpn ? (100 * detail.PriceBeforeTax) / 110 : detail.PriceBeforeTax; EntityExtension.FlagForCreate(detail, user, "Facade"); //PurchaseRequestItem purchaseRequestItem = this.dbContext.PurchaseRequestItems.FirstOrDefault(s => s.Id == detail.PRItemId); //purchaseRequestItem.Status = "Sudah diorder ke Supplier"; InternalPurchaseOrderItem internalPurchaseOrderItem = this.dbContext.InternalPurchaseOrderItems.FirstOrDefault(s => s.Id == detail.POItemId); internalPurchaseOrderItem.Status = "Sudah dibuat PO Eksternal"; } InternalPurchaseOrder internalPurchaseOrder = this.dbContext.InternalPurchaseOrders.FirstOrDefault(s => s.Id == item.POId); internalPurchaseOrder.IsPosted = true; } } else { EntityExtension.FlagForUpdate(item, user, "Facade"); if (duplicateExternalPurchaseOrderItems.Count > 0) { foreach (var detail in item.Details.ToList()) { if (detail.Id != 0) { EntityExtension.FlagForUpdate(detail, user, "Facade"); foreach (var duplicateItem in duplicateExternalPurchaseOrderItems.ToList()) { foreach (var duplicateDetail in duplicateItem.Details.ToList()) { if (detail.ProductId.Equals(duplicateDetail.ProductId)) { detail.PricePerDealUnit = detail.IncludePpn ? (100 * detail.PriceBeforeTax) / 110 : detail.PriceBeforeTax; } else if (item.Details.Count(d => d.ProductId.Equals(duplicateDetail.ProductId)) < 1) { EntityExtension.FlagForCreate(duplicateDetail, user, "Facade"); item.Details.Add(duplicateDetail); duplicateDetail.PricePerDealUnit = duplicateDetail.IncludePpn ? (100 * duplicateDetail.PriceBeforeTax) / 110 : duplicateDetail.PriceBeforeTax; //PurchaseRequestItem purchaseRequestItem = this.dbContext.PurchaseRequestItems.FirstOrDefault(s => s.Id == detail.PRItemId); //purchaseRequestItem.Status = "Sudah diorder ke Supplier"; InternalPurchaseOrderItem internalPurchaseOrderItem = this.dbContext.InternalPurchaseOrderItems.FirstOrDefault(s => s.Id == detail.POItemId); internalPurchaseOrderItem.Status = "Sudah dibuat PO Eksternal"; } } externalPurchaseOrder.Items.Remove(duplicateItem); } } } } else { foreach (var detail in item.Details) { if (detail.Id != 0) { EntityExtension.FlagForUpdate(detail, user, "Facade"); detail.PricePerDealUnit = detail.IncludePpn ? (100 * detail.PriceBeforeTax) / 110 : detail.PriceBeforeTax; } } } } } this.dbContext.Update(externalPurchaseOrder); foreach (var existingItem in existingModel.Items) { var newItem = externalPurchaseOrder.Items.FirstOrDefault(i => i.Id == existingItem.Id); if (newItem == null) { EntityExtension.FlagForDelete(existingItem, user, "Facade"); InternalPurchaseOrder internalPurchaseOrder = this.dbContext.InternalPurchaseOrders.FirstOrDefault(s => s.Id == existingItem.POId); internalPurchaseOrder.IsPosted = false; this.dbContext.ExternalPurchaseOrderItems.Update(existingItem); foreach (var existingDetail in existingItem.Details) { EntityExtension.FlagForDelete(existingDetail, user, "Facade"); //PurchaseRequestItem purchaseRequestItem = this.dbContext.PurchaseRequestItems.FirstOrDefault(s => s.Id == existingDetail.PRItemId); //purchaseRequestItem.Status = "Sudah diterima Pembelian"; existingDetail.PricePerDealUnit = existingDetail.IncludePpn ? (100 * existingDetail.PriceBeforeTax) / 110 : existingDetail.PriceBeforeTax; InternalPurchaseOrderItem internalPurchaseOrderItem = this.dbContext.InternalPurchaseOrderItems.FirstOrDefault(s => s.Id == existingDetail.POItemId); internalPurchaseOrderItem.Status = "PO Internal belum diorder"; this.dbContext.ExternalPurchaseOrderDetails.Update(existingDetail); } } else { foreach (var existingDetail in existingItem.Details) { var newDetail = newItem.Details.FirstOrDefault(d => d.Id == existingDetail.Id); if (newDetail == null) { EntityExtension.FlagForDelete(existingDetail, user, "Facade"); //PurchaseRequestItem purchaseRequestItem = this.dbContext.PurchaseRequestItems.FirstOrDefault(s => s.Id == existingDetail.PRItemId); //purchaseRequestItem.Status = "Sudah diterima Pembelian"; existingDetail.PricePerDealUnit = existingDetail.IncludePpn ? (100 * existingDetail.PriceBeforeTax) / 110 : existingDetail.PriceBeforeTax; InternalPurchaseOrderItem internalPurchaseOrderItem = this.dbContext.InternalPurchaseOrderItems.FirstOrDefault(s => s.Id == existingDetail.POItemId); internalPurchaseOrderItem.Status = "PO Internal belum diorder"; this.dbContext.ExternalPurchaseOrderDetails.Update(existingDetail); } } } } Updated = await dbContext.SaveChangesAsync(); transaction.Commit(); } else { throw new Exception("Error"); } } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }
public int Delete(int id, string user) { int Deleted = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { var m = this.dbSet .Include(d => d.Items) .SingleOrDefault(pr => pr.Id == id && !pr.IsDeleted); EntityExtension.FlagForDelete(m, user, USER_AGENT); foreach (var item in m.Items) { EntityExtension.FlagForDelete(item, user, USER_AGENT); ExternalPurchaseOrderDetail externalPurchaseOrderDetail = this.dbContext.ExternalPurchaseOrderDetails.FirstOrDefault(s => s.IsDeleted == false && s.Id == item.EPODetailId); PurchaseRequestItem prItem = this.dbContext.PurchaseRequestItems.FirstOrDefault(s => s.IsDeleted == false && s.Id == externalPurchaseOrderDetail.PRItemId); InternalPurchaseOrderItem poItem = this.dbContext.InternalPurchaseOrderItems.FirstOrDefault(s => s.IsDeleted == false && s.Id == externalPurchaseOrderDetail.POItemId); DeliveryOrderDetail doDetail = dbContext.DeliveryOrderDetails.FirstOrDefault(s => s.IsDeleted == false && s.Id == item.DODetailId); UnitPaymentOrderDetail upoDetail = dbContext.UnitPaymentOrderDetails.FirstOrDefault(s => s.IsDeleted == false && s.POItemId == poItem.Id); doDetail.ReceiptQuantity -= item.ReceiptQuantity; externalPurchaseOrderDetail.ReceiptQuantity -= item.ReceiptQuantity; if (externalPurchaseOrderDetail.ReceiptQuantity == 0 && upoDetail == null) { if (externalPurchaseOrderDetail.DOQuantity > 0 && externalPurchaseOrderDetail.DOQuantity >= externalPurchaseOrderDetail.DealQuantity) { //prItem.Status = "Barang sudah diterima Unit semua"; poItem.Status = "Barang sudah datang semua"; } else if (externalPurchaseOrderDetail.DOQuantity > 0 && externalPurchaseOrderDetail.DOQuantity < externalPurchaseOrderDetail.DealQuantity) { //prItem.Status = "Barang sudah diterima Unit parsial"; poItem.Status = "Barang sudah datang parsial"; } } else if (externalPurchaseOrderDetail.ReceiptQuantity > 0 && upoDetail == null) { if (externalPurchaseOrderDetail.DOQuantity >= externalPurchaseOrderDetail.DealQuantity) { if (externalPurchaseOrderDetail.ReceiptQuantity < externalPurchaseOrderDetail.DealQuantity) { //prItem.Status = "Barang sudah diterima Unit parsial"; poItem.Status = "Barang sudah diterima Unit parsial"; } else if (externalPurchaseOrderDetail.ReceiptQuantity >= externalPurchaseOrderDetail.DealQuantity) { //prItem.Status = "Barang sudah diterima Unit semua"; poItem.Status = "Barang sudah diterima Unit semua"; } else if (externalPurchaseOrderDetail.DOQuantity < externalPurchaseOrderDetail.DealQuantity) { poItem.Status = "Barang sudah diterima Unit parsial"; } } } } if (m.IsStorage == true) { insertStorage(m, user, "OUT"); } Deleted = dbContext.SaveChanges(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Deleted); }
public async Task <int> Create(UnitReceiptNote m, string user) { int Created = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { EntityExtension.FlagForCreate(m, user, "Facade"); m.URNNo = await GenerateNo(m); if (m.Items != null) { foreach (var item in m.Items) { EntityExtension.FlagForCreate(item, user, "Facade"); ExternalPurchaseOrderDetail externalPurchaseOrderDetail = this.dbContext.ExternalPurchaseOrderDetails.FirstOrDefault(s => s.Id == item.EPODetailId); PurchaseRequestItem prItem = this.dbContext.PurchaseRequestItems.FirstOrDefault(s => s.Id == externalPurchaseOrderDetail.PRItemId); InternalPurchaseOrderItem poItem = this.dbContext.InternalPurchaseOrderItems.FirstOrDefault(s => s.Id == externalPurchaseOrderDetail.POItemId); DeliveryOrderDetail doDetail = dbContext.DeliveryOrderDetails.FirstOrDefault(s => s.Id == item.DODetailId); UnitPaymentOrderDetail upoDetail = dbContext.UnitPaymentOrderDetails.FirstOrDefault(s => s.IsDeleted == false && s.POItemId == poItem.Id); item.PRItemId = doDetail.PRItemId; item.PricePerDealUnit = externalPurchaseOrderDetail.PricePerDealUnit; doDetail.ReceiptQuantity += item.ReceiptQuantity; externalPurchaseOrderDetail.ReceiptQuantity += item.ReceiptQuantity; if (upoDetail == null) { if (externalPurchaseOrderDetail.DOQuantity >= externalPurchaseOrderDetail.DealQuantity) { if (externalPurchaseOrderDetail.ReceiptQuantity < externalPurchaseOrderDetail.DealQuantity) { //prItem.Status = "Barang sudah diterima Unit parsial"; poItem.Status = "Barang sudah diterima Unit parsial"; } else { //prItem.Status = "Barang sudah diterima Unit semua"; poItem.Status = "Barang sudah diterima Unit semua"; } } else { //prItem.Status = "Barang sudah diterima Unit parsial"; poItem.Status = "Barang sudah diterima Unit parsial"; } } } } if (m.IsStorage == true) { insertStorage(m, user, "IN"); } this.dbSet.Add(m); Created = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Created); }