public HttpResponseMessage LockSalesInvoice(Entities.TrnSalesInvoice objSalesInvoice, String id) { try { var currentUser = from d in db.MstUsers where d.UserId == User.Identity.GetUserId() select d; if (currentUser.Any()) { var currentUserId = currentUser.FirstOrDefault().Id; var userForms = from d in db.MstUserForms where d.UserId == currentUserId && d.SysForm.FormName.Equals("SalesInvoiceDetail") select d; if (userForms.Any()) { if (userForms.FirstOrDefault().CanLock) { var salesInvoice = from d in db.TrnSalesInvoices where d.Id == Convert.ToInt32(id) select d; if (salesInvoice.Any()) { if (!salesInvoice.FirstOrDefault().IsLocked) { String oldObject = auditTrail.GetObjectString(salesInvoice.FirstOrDefault()); Decimal amount = 0; var salesInvoiceItems = from d in db.TrnSalesInvoiceItems where d.SIId == Convert.ToInt32(id) select d; if (salesInvoiceItems.Any()) { amount = salesInvoiceItems.Sum(d => d.Amount); } var lockSalesInvoice = salesInvoice.FirstOrDefault(); lockSalesInvoice.SIDate = Convert.ToDateTime(objSalesInvoice.SIDate); lockSalesInvoice.CustomerId = objSalesInvoice.CustomerId; lockSalesInvoice.TermId = objSalesInvoice.TermId; lockSalesInvoice.DocumentReference = objSalesInvoice.DocumentReference; lockSalesInvoice.ManualSINumber = objSalesInvoice.ManualSINumber; lockSalesInvoice.Remarks = objSalesInvoice.Remarks; lockSalesInvoice.Amount = amount; lockSalesInvoice.SoldById = objSalesInvoice.SoldById; lockSalesInvoice.CheckedById = objSalesInvoice.CheckedById; lockSalesInvoice.ApprovedById = objSalesInvoice.ApprovedById; lockSalesInvoice.Status = objSalesInvoice.Status; lockSalesInvoice.IsLocked = true; lockSalesInvoice.UpdatedById = currentUserId; lockSalesInvoice.UpdatedDateTime = DateTime.Now; db.SubmitChanges(); if (lockSalesInvoice.IsLocked) { accountsReceivable.UpdateAccountsReceivable(Convert.ToInt32(id)); inventory.InsertSalesInvoiceInventory(Convert.ToInt32(id)); journal.InsertSalesInvoiceJournal(Convert.ToInt32(id)); } String newObject = auditTrail.GetObjectString(salesInvoice.FirstOrDefault()); auditTrail.InsertAuditTrail(currentUser.FirstOrDefault().Id, GetType().Name, MethodBase.GetCurrentMethod().Name, oldObject, newObject); return(Request.CreateResponse(HttpStatusCode.OK)); } else { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Locking Error. These sales invoice details are already locked.")); } } else { return(Request.CreateResponse(HttpStatusCode.NotFound, "Data not found. These sales invoice details are not found in the server.")); } } else { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Sorry. You have no rights to lock sales invoice.")); } } else { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Sorry. You have no access for this sales invoice page.")); } } else { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Theres no current user logged in.")); } } catch (Exception e) { Debug.WriteLine(e); return(Request.CreateResponse(HttpStatusCode.InternalServerError, "Something's went wrong from the server.")); } }
public HttpResponseMessage LockSalesInvoice(Entities.TrnSalesInvoice objSalesInvoice, String id) { try { var currentUser = from d in db.MstUsers where d.UserId == User.Identity.GetUserId() select d; if (currentUser.Any()) { var currentUserId = currentUser.FirstOrDefault().Id; var userForms = from d in db.MstUserForms where d.UserId == currentUserId && d.SysForm.FormName.Equals("SalesInvoiceDetail") select d; if (userForms.Any()) { if (userForms.FirstOrDefault().CanLock) { var salesInvoice = from d in db.TrnSalesInvoices where d.Id == Convert.ToInt32(id) select d; if (salesInvoice.Any()) { if (!salesInvoice.FirstOrDefault().IsLocked) { Decimal paidAmount = 0; var collectionLines = from d in db.TrnCollectionLines where d.SIId == Convert.ToInt32(id) && d.TrnCollection.IsLocked == true select d; if (collectionLines.Any()) { paidAmount = collectionLines.Sum(d => d.Amount); } var lockSalesInvoice = salesInvoice.FirstOrDefault(); lockSalesInvoice.SIDate = Convert.ToDateTime(objSalesInvoice.SIDate); lockSalesInvoice.CustomerId = objSalesInvoice.CustomerId; lockSalesInvoice.TermId = objSalesInvoice.TermId; lockSalesInvoice.DocumentReference = objSalesInvoice.DocumentReference; lockSalesInvoice.ManualSINumber = objSalesInvoice.ManualSINumber; lockSalesInvoice.Remarks = objSalesInvoice.Remarks; lockSalesInvoice.Amount = GetSalesInvoiceAmount(Convert.ToInt32(id)); lockSalesInvoice.PaidAmount = paidAmount; lockSalesInvoice.AdjustmentAmount = 0; lockSalesInvoice.BalanceAmount = GetSalesInvoiceAmount(Convert.ToInt32(id)) - paidAmount; lockSalesInvoice.SoldById = objSalesInvoice.SoldById; lockSalesInvoice.CheckedById = objSalesInvoice.CheckedById; lockSalesInvoice.ApprovedById = objSalesInvoice.ApprovedById; lockSalesInvoice.IsLocked = true; lockSalesInvoice.UpdatedById = currentUserId; lockSalesInvoice.UpdatedDateTime = DateTime.Now; db.SubmitChanges(); // ===================== // Inventory and Journal // ===================== Business.Inventory inventory = new Business.Inventory(); Business.Journal journal = new Business.Journal(); if (lockSalesInvoice.IsLocked) { inventory.InsertSIInventory(Convert.ToInt32(id)); journal.insertSIJournal(Convert.ToInt32(id)); } // ============================ // Check for Negative Inventory // ============================ Boolean foundNegativeQuantity = false; if (salesInvoice.FirstOrDefault().TrnSalesInvoiceItems.Any()) { foreach (var salesInvoiceItem in salesInvoice.FirstOrDefault().TrnSalesInvoiceItems) { if (salesInvoiceItem.MstArticle.IsInventory) { var mstArticleInventory = from d in db.MstArticleInventories where d.TrnSalesInvoiceItems.Contains(salesInvoiceItem) select d; if (mstArticleInventory.Any()) { if (salesInvoiceItem.MstArticleInventory.Quantity < 0) { foundNegativeQuantity = true; break; } } } } } if (foundNegativeQuantity) { inventory.deleteSIInventory(Convert.ToInt32(id)); journal.deleteSIJournal(Convert.ToInt32(id)); lockSalesInvoice.IsLocked = false; db.SubmitChanges(); return(Request.CreateResponse(HttpStatusCode.BadRequest, "Negative Inventory Found!")); } else { return(Request.CreateResponse(HttpStatusCode.OK)); } } else { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Locking Error. These sales invoice details are already locked.")); } } else { return(Request.CreateResponse(HttpStatusCode.NotFound, "Data not found. These sales invoice details are not found in the server.")); } } else { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Sorry. You have no rights to lock sales invoice.")); } } else { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Sorry. You have no access for this sales invoice page.")); } } else { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Theres no current user logged in.")); } } catch (Exception e) { Debug.WriteLine(e); return(Request.CreateResponse(HttpStatusCode.InternalServerError, "Something's went wrong from the server.")); } }