示例#1
0
        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();
        }
示例#2
0
        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"));
        }
示例#3
0
        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;
            }
        }
示例#4
0
        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();
        }
示例#5
0
        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);
        }
示例#7
0
        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;
        }