private void SaveNewPoForm(PoForm poForm) { poForm.Created = DateTime.Now; poForm.CreatedBy = System.Web.HttpContext.Current.User.Identity.Name; poForm.Modified = DateTime.Now; poForm.ModifiedBy = System.Web.HttpContext.Current.User.Identity.Name; poForm.SubmittedDate = DateTime.Now; foreach (var lineItem in poForm.LineItems) { lineItem.CreatedBy = System.Web.HttpContext.Current.User.Identity.Name; lineItem.ModifiedBy = System.Web.HttpContext.Current.User.Identity.Name; lineItem.Created = DateTime.Now; lineItem.Modified = DateTime.Now; } // These arguments may seem redundant, but this function was created to handle // looking at any random vendor that could have come from anywhere AssignVendorToPoForm(poForm, poForm.Vendor); _context.PoForms.Add(poForm); _context.SaveChanges(); poForm.Documents.Add(PoFormConversions.CreatePoDocument(poForm)); _context.SaveChanges(); }
public async Task <ActionResult> Save(PoForm poForm) { if (poForm == null || poForm.Vendor == null || poForm.LineItems == null) { throw new InvalidDataException(); } if (poForm.Id == 0) { SaveNewPoForm(poForm); } else { SaveEditedPoForm(poForm); } // Take the PO form and turn it into a PDF, then write it. var url = Url.Action("CompleteForm", "Home", new { id = poForm.Id }, protocol: Request.Url.Scheme); var pdf = TuesPechkinService.ConvertToPdf(TuesPechkin.Service.Uri.PrdApp01, url); if (pdf == null) { return(HttpNotFound()); } await Pdf.WriteAsPdf(poForm.Id, pdf); return(RedirectToAction("Info/" + poForm.Id, "Home")); }
private void AssignVendorToPoForm(PoForm poFormInDb, Vendor vendor) { bool vendorAlreadyExists = false; int i = 0; var vendors = _context.Vendors.ToList(); while (!vendorAlreadyExists && i < vendors.Count) { // NOTE: We are only checking if the user // has entered the same vendor's NAME, and if they did, // then we match it to an existing vendor, regardless of if the rest of the data // is different (it shouldn't be different, assuming one vendor has one address, city, state, and zip) // Also, "examPleVenDOR" will be equal to "EXAmpleVendoR" if (vendor.Name != null && vendor.Name.ToLower().Equals(vendors[i].Name.ToLower())) { poFormInDb.Vendor = vendors[i]; poFormInDb.VendorId = vendors[i].Id; vendorAlreadyExists = true; } i++; } // Ensure that a new vendor has the PO form assigned to it. if (!vendorAlreadyExists) { poFormInDb.Vendor = vendor; } }
private void SaveEditedPoForm(PoForm poForm) { var poFormInDb = _context.PoForms .Include(p => p.Vendor) .Include(p => p.LineItems) .First(p => p.Id == poForm.Id); poFormInDb.Modified = DateTime.Now; poFormInDb.ModifiedBy = System.Web.HttpContext.Current.User.Identity.Name; poFormInDb.ExpirationDate = poForm.ExpirationDate; poFormInDb.ResponsibleParty = poForm.ResponsibleParty; poFormInDb.PoNumber = poForm.PoNumber; poFormInDb.Overview = poForm.Overview; poFormInDb.Status = Data.Services.Status.Pending; poFormInDb.Attn = poForm.Attn; poFormInDb.DateRequired = poForm.DateRequired; poFormInDb.RequisitioningDepartment = poForm.RequisitioningDepartment; poFormInDb.ShipViaTerms = poForm.ShipViaTerms; AssignVendorToPoForm(poFormInDb, poForm.Vendor); _context.SaveChanges(); var oldLineItems = poFormInDb.LineItems; ClearLineItems(poFormInDb); poFormInDb.LineItems = poForm.LineItems; CheckChangesInLineItems(oldLineItems, poFormInDb.LineItems); _context.SaveChanges(); }
private PoForm SaveOldPoToDatabase(Dictionary <string, string> data, DateTime dateModified, DateTime?dateSubmitted, DateTime?dateExpired) { var vendorName = data["vendorName"]; var vendor = _context.Vendors.FirstOrDefault(v => v.Name.Equals(vendorName)) ?? new Vendor { Name = data["vendorName"] }; var poForm = new PoForm { Overview = Path.GetFileNameWithoutExtension(data["fileName"]), Status = data["poNumber"] != null ? Data.Services.Status.Approved : Data.Services.Status.Pending, Vendor = vendor, VendorId = vendor.Id, PoNumber = data["poNumber"] ?? null, ShipViaTerms = "Net 30", Created = dateModified, CreatedBy = data["responsibleParty"] ?? Contants.CurrentUser, Modified = dateModified, ModifiedBy = data["responsibleParty"] ?? Contants.CurrentUser, ResponsibleParty = data["responsibleParty"] ?? Contants.CurrentUser, SubmittedDate = dateSubmitted, ExpirationDate = dateExpired }; _context.PoForms.Add(poForm); _context.SaveChanges(); // We have to apply these changes after saving the poForm because // before it is saved, the id is 0. poForm.LineItems = new List <LineItem> { new LineItem { PoFormId = poForm.Id, AccountNumber = data["accountNumber"], Description = Path.GetFileNameWithoutExtension(data["fileName"]), Quantity = 1, UnitCost = Convert.ToDecimal(data["total"]), Created = dateModified, Modified = dateModified } }; poForm.Documents = new List <Document> { new Document { PoFormId = poForm.Id, TypeOfDocument = Data.Services.TypeOfDocument.Po, FilePath = FilePaths.WritePoForm + poForm.Id + ".pdf", Created = dateModified, Modified = dateModified } }; _context.SaveChanges(); return(poForm); }
public static decimal CalculateGrandTotal(PoForm poForm) { decimal grandTotal = 0.0m; foreach (var lineItem in poForm.LineItems) { grandTotal += (lineItem.Quantity * lineItem.UnitCost); } return(grandTotal); }
private void ClearLineItems(PoForm poForm) { // We have to actually get rid of the line items in the table so that they don't // have a null PoFormId var lineItems = _context.LineItems.Where(l => l.PoFormId == poForm.Id).ToList(); _context.LineItems.RemoveRange(lineItems); poForm.LineItems.Clear(); _context.SaveChanges(); }
public static Document CreatePoDocument(PoForm poForm) { return(new Document { PoFormId = poForm.Id, TypeOfDocument = TypeOfDocument.Po, FilePath = FilePaths.WritePoForm + poForm.Id + ".pdf", Created = DateTime.Now, CreatedBy = HttpContext.Current.User.Identity.Name, Modified = DateTime.Now, ModifiedBy = HttpContext.Current.User.Identity.Name }); }
public static PoFormSearchData PoFormToPoFormSearchData(PoForm poForm) { return(new PoFormSearchData { Id = poForm.Id, Overview = poForm.Overview, Modified = poForm.Modified, ModifiedBy = poForm.ModifiedBy, Status = poForm.Status, VendorName = _context.Vendors.FirstOrDefault(v => v.Id == poForm.VendorId).Name, PoNumber = poForm.PoNumber, GrandTotal = CalculateGrandTotal(poForm) }); }
public static PoForm MakeDuplicateForm(PoForm poForm, string newOverview) { return(new PoForm { //Username = FormatUserName(HttpContext.Current.User.Identity.Name), //FilePath = FilePaths.WritePoForm + myGuid + ".pdf", Overview = newOverview, //DateLastModified = DateTime.Now, // Blanket PO copies MUST be re-approved, get a new PO number, etc. Status = Data.Services.Status.Pending, RequisitioningDepartment = poForm.RequisitioningDepartment, DateRequired = poForm.DateRequired, ShipViaTerms = poForm.ShipViaTerms ?? "", Attn = poForm.Attn }); }
public static void EditForm(PoForm poFormInDb, PoForm poForm) { poFormInDb.Overview = poForm.Overview; poFormInDb.Attn = poForm.Attn; poFormInDb.DateRequired = poForm.DateRequired; poFormInDb.RequisitioningDepartment = poForm.RequisitioningDepartment; poFormInDb.ShipViaTerms = poForm.ShipViaTerms; poFormInDb.Vendor = poForm.Vendor; poFormInDb.PoNumber = poForm.PoNumber; // LineItems must be cleared first so that the DB doesn't just add additional ones. // Clear out line items, save changes, then add all of them again as new ones. poFormInDb.LineItems = new List <LineItem>(); //poFormInDb.GrandTotal = poForm.GrandTotal; poFormInDb.Modified = DateTime.Now; poFormInDb.ModifiedBy = System.Web.HttpContext.Current.User.Identity.Name; }