public virtual void AddInvoice(Invoice invoiceVm)
        {
            try
            {
                var customerIdIfNotAvailable         = db.Customer.Where(cus => cus.CustomerName == "N/A").FirstOrDefault().Id;
                var vendorIdIfNotAvailable           = db.Vendors.Where(cus => cus.VenderName == "N/A").FirstOrDefault().Id;
                var itemTypeIdIfNotAvailable         = db.ItemType.Where(cus => cus.ItemTypeName == "N/A").FirstOrDefault().Id;
                var expirationPeriodIdIfNotAvailable = db.ExpirationPeriod.Where(cus => cus.ExpirationPeriodName == "N/A").FirstOrDefault().Id;
                var supplierIdIfNotAvailable         = db.Supplier.Where(cus => cus.SupplierName == "N/A").FirstOrDefault().Id;

                var invoiceModel       = new Invoice();
                var partForInvoiceList = new List <PartsForInvoice>();
                invoiceModel.CustomerId    = invoiceVm.Customer?.Id ?? customerIdIfNotAvailable;
                invoiceModel.Customer      = invoiceVm.Customer;
                invoiceModel.InvoiceDate   = invoiceVm.InvoiceDate;
                invoiceModel.InvoiceNumber = invoiceVm.InvoiceNumber;

                if (invoiceVm.PartsForInvoice != null && invoiceVm.PartsForInvoice.Count > 0)
                {
                    foreach (var item in invoiceVm.PartsForInvoice)
                    {
                        var partForInvoice = new PartsForInvoice();
                        partForInvoice.Id                 = Guid.NewGuid().ToString();
                        partForInvoice.Description        = item.Description;
                        partForInvoice.EndDate            = item.EndDate;
                        partForInvoice.ExpirationPeriodId = (item.ExpirationPeriod == null) ? expirationPeriodIdIfNotAvailable : item.ExpirationPeriod.Id;
                        partForInvoice.ItemTypeId         = (item.ItemType == null) ? itemTypeIdIfNotAvailable : item.ItemType.Id;
                        partForInvoice.PartNumber         = item.PartNumber;
                        partForInvoice.Quantity           = item.Quantity;
                        partForInvoice.SerialNumber       = item.SerialNumber;
                        partForInvoice.SupplierId         = (item.Supplier == null) ? supplierIdIfNotAvailable : item.Supplier.Id;
                        partForInvoice.StartingDate       = item.StartingDate;
                        partForInvoice.VendorId           = (item.Vendor == null) ? vendorIdIfNotAvailable : item.Vendor.Id;
                        partForInvoice.Status             = true;
                        partForInvoice.UserName           = WebSecurity.CurrentUserName;
                        partForInvoiceList.Add(partForInvoice);
                    }
                    invoiceModel.PartsForInvoice = partForInvoiceList;
                }

                invoiceModel.Status   = true;
                invoiceModel.UserName = WebSecurity.CurrentUserName;

                TryUpdateModel(invoiceModel, "InvoiceNumber,InvoiceDate,CustomerId,Status,UserName");
                db.Invoice.Add(invoiceModel);
                db.Entry(invoiceModel).State = System.Data.Entity.EntityState.Added;
                db.SaveChanges();
            }
            catch (Exception ex)
            {
                logger.Log(LogLevel.Error, "Exception occurred in uploading excel" + ex.Message);
                throw;
            }
        }
Пример #2
0
        public virtual ActionResult AddPartToInvoice(PartsForInvoiceViewModel partsForInvoiceVm)
        {
            try
            {
                var invoiceId       = Int32.Parse(Session["InvoiceIdForPart"].ToString());
                var invoiceToUpdate = db.Invoice.ToList().Find(inv => inv.Id == invoiceId);
                var partlist        = new List <PartsForInvoice>();
                var part            = new PartsForInvoice();
                part.Description        = partsForInvoiceVm.Description;
                part.EndDate            = DateTime.ParseExact(partsForInvoiceVm.EndDate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                part.ExpirationPeriodId = partsForInvoiceVm.ExpirationPeriod.Id;
                part.ItemTypeId         = partsForInvoiceVm.ItemType.Id;
                part.PartNumber         = partsForInvoiceVm.PartNumber;
                part.Quantity           = partsForInvoiceVm.Quantity;
                part.SerialNumber       = partsForInvoiceVm.SerialNumber;
                part.StartingDate       = DateTime.ParseExact(partsForInvoiceVm.StartingDate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                part.Status             = partsForInvoiceVm.Status;
                part.SupplierId         = partsForInvoiceVm.Supplier.Id;
                part.UserName           = WebSecurity.CurrentUserName;
                part.VendorId           = partsForInvoiceVm.Vendor.Id;
                part.Id         = Guid.NewGuid().ToString();
                part.Invoice    = new Invoice();
                part.Invoice    = invoiceToUpdate;
                part.Invoice_Id = Int32.Parse(Session["InvoiceIdForPart"].ToString());
                //partlist.Add(part);
                //invoiceToUpdate.PartsForInvoice.Add(part);


                TryUpdateModel(part, "test", new string[] { "Invoice_Id,Description,EndDate,ExpirationPeriodId,ItemTypeId,PartNumber,Quantity,SerialNumber,StartingDate,Status,SupplierId,UserName,VendorId" }, new string[] { "Invoice" });
                db.PartsForInvoice.Add(part);
                db.Entry(invoiceToUpdate).State = System.Data.Entity.EntityState.Added;
                db.SaveChanges();
                return(RedirectToAction("ListPartsForInvoice", new { Id = partsForInvoiceVm.InvoiceId }));
            }
            catch (Exception ex)
            {
                logger.Log(LogLevel.Error, "Exception occurred in Invoice -> AddPartToInvoice[POST]: " + ex.Message);
                throw;
            }
        }
Пример #3
0
        public ActionResult EditPart(PartsForInvoiceViewModel partsForInvoiceVm)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    TempData["Message"]     = "Failure in invoice edit action. Check for following issues." + string.Join(" , ", ModelState.Values.SelectMany(v => v.Errors).Select(e => e.ErrorMessage));
                    TempData["MessageType"] = "alert-danger";
                    return(RedirectToAction("Index"));
                }

                var part = new PartsForInvoice();
                part.Description        = partsForInvoiceVm.Description;
                part.EndDate            = DateTime.ParseExact(partsForInvoiceVm.EndDate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                part.ExpirationPeriodId = partsForInvoiceVm.ExpirationPeriod.Id;
                part.ItemTypeId         = partsForInvoiceVm.ItemType.Id;
                part.PartNumber         = partsForInvoiceVm.PartNumber;
                part.Quantity           = partsForInvoiceVm.Quantity;
                part.SerialNumber       = partsForInvoiceVm.SerialNumber;
                part.StartingDate       = DateTime.ParseExact(partsForInvoiceVm.StartingDate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                part.Status             = partsForInvoiceVm.Status;
                part.SupplierId         = partsForInvoiceVm.Supplier.Id;
                part.UserName           = WebSecurity.CurrentUserName;
                part.VendorId           = partsForInvoiceVm.Vendor.Id;
                part.Id         = partsForInvoiceVm.Id;
                part.Invoice_Id = partsForInvoiceVm.InvoiceId;
                TryUpdateModel(part, "Description,EndDate,ExpirationPeriodId,ItemTypeId,PartNumber,Quantity,SerialNumber,StartingDate,Status,SupplierId,UserName,VendorId");
                db.PartsForInvoice.Add(part);
                db.Entry(part).State = System.Data.Entity.EntityState.Modified;
                db.SaveChanges();
                TempData["Message"]     = "Parts details are updated successfully.";
                TempData["MessageType"] = "alert-success";
                return(RedirectToAction("ListPartsForInvoice", new { Id = partsForInvoiceVm.InvoiceId }));
            }
            catch (Exception ex)
            {
                logger.Log(LogLevel.Error, "Exception occurred in Invoice -> EditPart[HttpPost]: " + ex.Message);
                throw;
            }
        }
        public virtual void UploadDataInvoice(object[,] dataSet, int numberOfColumns, int numberOfRows)
        {
            var rowId = 0;

            try
            {
                var customers        = db.Customer.ToList();
                var vendors          = db.Vendors.ToList();
                var itemTypes        = db.ItemType.ToList();
                var expirationPeriod = db.ExpirationPeriod.ToList();
                var suppliers        = db.Supplier.ToList();

                var partForInvoiceList = new List <PartsForInvoice>();
                var invoiceModelList   = new List <Invoice>();
                for (int rows = 0; rows < numberOfRows; rows++)
                {
                    if ((rows == 0) || (dataSet[rows, 1] == null))
                    {
                        continue;
                    }

                    rowId = rows + 1;

                    var invoiceModel = new Invoice();

                    var partForInvoice = new PartsForInvoice();


                    var validExperiance = (dataSet[rows, 11] == null) ? "N/A" : dataSet[rows, 11].ToString().Trim();
                    var validVendor     = (dataSet[rows, 4] == null) ? "N/A" : dataSet[rows, 4].ToString().Trim();
                    var validItemType   = (dataSet[rows, 5] == null) ? "N/A" : dataSet[rows, 5].ToString().Trim();
                    var validSupplier   = (dataSet[rows, 10] == null) ? "N/A" : dataSet[rows, 10].ToString().Trim();
                    var validCustomer   = (dataSet[rows, 3] == null) ? "N/A" : dataSet[rows, 3].ToString().Trim();
                    var startingDate    = (dataSet[rows, 12] == null) ? "0" : dataSet[rows, 12].ToString().Trim();
                    var endDate         = (dataSet[rows, 13] == null) ? "0" : dataSet[rows, 13].ToString().Trim();
                    var quantity        = (dataSet[rows, 8] == null) ? "0" : dataSet[rows, 8].ToString().Trim();


                    if (invoiceModelList?.Where(lst => lst.InvoiceNumber == dataSet[rows, 1].ToString()).FirstOrDefault() != null)
                    {
                        partForInvoice.Vendor           = vendors.Where(ven => ven.VenderName.Trim() == validVendor)?.FirstOrDefault();
                        partForInvoice.ItemType         = itemTypes.Where(itm => itm.ItemTypeName.Trim() == validItemType)?.FirstOrDefault();
                        partForInvoice.PartNumber       = (dataSet[rows, 6] == null) ? string.Empty : dataSet[rows, 6].ToString().Trim();
                        partForInvoice.Description      = (dataSet[rows, 7] == null) ? string.Empty : dataSet[rows, 7].ToString().Trim();
                        partForInvoice.Quantity         = Int32.Parse(quantity);
                        partForInvoice.SerialNumber     = (dataSet[rows, 9] == null) ? string.Empty : dataSet[rows, 9].ToString().Trim();
                        partForInvoice.Supplier         = suppliers.Where(sup => sup.SupplierName.Trim() == validSupplier)?.FirstOrDefault();
                        partForInvoice.StartingDate     = DateTime.ParseExact(new DateTime(1899, 12, 31).AddDays(Double.Parse(startingDate)).ToString("dd/MM/yyyy"), "dd/MM/yyyy", CultureInfo.InvariantCulture);
                        partForInvoice.EndDate          = DateTime.ParseExact(new DateTime(1899, 12, 31).AddDays(Double.Parse(endDate)).ToString("dd/MM/yyyy"), "dd/MM/yyyy", CultureInfo.InvariantCulture);
                        partForInvoice.ExpirationPeriod = expirationPeriod.Where(exp => exp.ExpirationPeriodName.Trim() == validExperiance)?.FirstOrDefault();

                        invoiceModelList?.Where(lst => lst.InvoiceNumber.Trim() == dataSet[rows, 1].ToString().Trim()).FirstOrDefault().PartsForInvoice.Add(partForInvoice);
                    }
                    else
                    {
                        partForInvoiceList         = new List <PartsForInvoice>();
                        invoiceModel.InvoiceNumber = dataSet[rows, 1].ToString().Trim();
                        var invoiceDate = (dataSet[rows, 2] == null) ? "0" : dataSet[rows, 2].ToString().Trim();
                        invoiceModel.InvoiceDate = DateTime.ParseExact(new DateTime(1899, 12, 31).AddDays(Double.Parse(invoiceDate)).ToString("dd/MM/yyyy"), "dd/MM/yyyy", CultureInfo.InvariantCulture);
                        invoiceModel.Customer    = customers.Where(cus => cus.CustomerName.Trim() == validCustomer)?.FirstOrDefault();
                        invoiceModel.Status      = true;
                        invoiceModel.UserName    = "******";

                        partForInvoice.Vendor           = vendors.Where(ven => ven.VenderName.Trim() == validVendor)?.FirstOrDefault();
                        partForInvoice.ItemType         = itemTypes.Where(itm => itm.ItemTypeName.Trim() == validItemType)?.FirstOrDefault();
                        partForInvoice.PartNumber       = (dataSet[rows, 6] == null) ? string.Empty : dataSet[rows, 6].ToString().Trim();
                        partForInvoice.Description      = (dataSet[rows, 7] == null) ? string.Empty : dataSet[rows, 7].ToString().Trim();
                        partForInvoice.Quantity         = Int32.Parse(quantity);
                        partForInvoice.SerialNumber     = (dataSet[rows, 9] == null) ? string.Empty : dataSet[rows, 9].ToString().Trim();
                        partForInvoice.Supplier         = suppliers.Where(sup => sup.SupplierName.Trim() == validSupplier)?.FirstOrDefault();
                        partForInvoice.StartingDate     = DateTime.ParseExact(new DateTime(1899, 12, 31).AddDays(Double.Parse(startingDate)).ToString("dd/MM/yyyy"), "dd/MM/yyyy", CultureInfo.InvariantCulture);
                        partForInvoice.EndDate          = DateTime.ParseExact(new DateTime(1899, 12, 31).AddDays(Double.Parse(endDate)).ToString("dd/MM/yyyy"), "dd/MM/yyyy", CultureInfo.InvariantCulture);
                        partForInvoice.ExpirationPeriod = expirationPeriod.Where(exp => exp.ExpirationPeriodName.Trim() == validExperiance)?.FirstOrDefault();
                        partForInvoiceList.Add(partForInvoice);
                        invoiceModel.PartsForInvoice = partForInvoiceList;
                        invoiceModelList.Add(invoiceModel);
                    }
                }

                foreach (var item in invoiceModelList)
                {
                    AddInvoice(item);
                }
            }
            catch (Exception ex)
            {
                logger.Log(LogLevel.Error, "Exception occurred in uploading excel row Id : " + rowId + " : " + ex.Message);
                throw;
            }
        }
Пример #5
0
        public ActionResult Add(InvoiceViewModel invoiceVm)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    TempData["Message"] = "Failure in invoice save action. Check error logs for more details.";
                    logger.Log(LogLevel.Error, "Exception occurred in Invoice -> Add[HTTPPOST]: " + string.Join(" , ", ModelState.Values.SelectMany(v => v.Errors).Select(e => e.ErrorMessage)));
                    TempData["MessageType"] = "alert-danger";
                    return(RedirectToAction("Index"));
                }

                if (invoiceVm == null)
                {
                    TempData["Message"]     = "No invoicess to add.";
                    TempData["MessageType"] = "alert-danger";
                    return(RedirectToAction("Index"));
                }

                if (invoiceVm.PartsForInvoiceViewModel == null)
                {
                    TempData["Message"]     = "No parts availabble for the invoice to add.";
                    TempData["MessageType"] = "alert-danger";
                    return(RedirectToAction("Index"));
                }

                if (string.IsNullOrEmpty(invoiceVm.InvoiceDate) || string.IsNullOrWhiteSpace(invoiceVm.InvoiceDate))
                {
                    TempData["Message"]     = "Invoice date is mandatory.";
                    TempData["MessageType"] = "alert-danger";
                    return(RedirectToAction("Index"));
                }

                var isInvoiceExist = db.Invoice.ToList().Where(inv => inv.Status == true && inv.InvoiceNumber == invoiceVm.InvoiceNumber).ToList().Count;

                if (isInvoiceExist > 0)
                {
                    TempData["Message"]     = "Invoice with same number already exist in the system. The invoice number is : " + invoiceVm.InvoiceNumber;
                    TempData["MessageType"] = "alert-danger";
                    return(RedirectToAction("Index"));
                }


                var invoiceModel       = new Invoice();
                var partForInvoiceList = new List <PartsForInvoice>();
                invoiceModel.CustomerId    = invoiceVm.Customer.Id;
                invoiceModel.InvoiceDate   = DateTime.ParseExact(invoiceVm.InvoiceDate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                invoiceModel.InvoiceNumber = invoiceVm.InvoiceNumber;

                if (invoiceVm.PartsForInvoiceViewModel.Count > 0)
                {
                    var count = 0;
                    foreach (var item in invoiceVm.PartsForInvoiceViewModel)
                    {
                        if (count == 0)
                        {
                            count = count + 1;
                            continue;
                        }

                        var partForInvoice = new PartsForInvoice();
                        partForInvoice.Id          = Guid.NewGuid().ToString();
                        partForInvoice.Description = item.Description;
                        var endDate      = (string.IsNullOrEmpty(item.EndDate) || string.IsNullOrWhiteSpace(item.EndDate)) ? DateTime.Now.AddYears(20).ToString("dd/MM/yyyy") : item.EndDate;
                        var startingDate = (string.IsNullOrEmpty(item.StartingDate) || string.IsNullOrWhiteSpace(item.StartingDate)) ? DateTime.Now.AddYears(20).ToString("dd/MM/yyyy") : item.StartingDate;

                        partForInvoice.EndDate            = DateTime.ParseExact(endDate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                        partForInvoice.ExpirationPeriodId = item.ExpirationPeriodId;
                        partForInvoice.ItemTypeId         = item.ItemTypeId;
                        partForInvoice.PartNumber         = item.PartNumber;
                        partForInvoice.Quantity           = item.Quantity;
                        partForInvoice.SerialNumber       = item.SerialNumber;
                        partForInvoice.SupplierId         = item.SupplierId;
                        partForInvoice.StartingDate       = DateTime.ParseExact(startingDate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                        partForInvoice.VendorId           = item.VendorId;
                        partForInvoice.Status             = true;
                        partForInvoice.UserName           = WebSecurity.CurrentUserName;
                        partForInvoiceList.Add(partForInvoice);
                    }

                    invoiceModel.PartsForInvoice = partForInvoiceList;
                }

                invoiceModel.Status   = true;
                invoiceModel.UserName = WebSecurity.CurrentUserName;

                TryUpdateModel(invoiceModel, "InvoiceNumber,InvoiceDate,CustomerId,Status,UserName");
                db.Invoice.Add(invoiceModel);
                db.Entry(invoiceModel).State = System.Data.Entity.EntityState.Added;
                db.SaveChanges();

                TempData["Message"]     = "Invoice saved successfully. Invoice number is: " + invoiceVm.InvoiceNumber;
                TempData["MessageType"] = "alert-success";

                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                logger.Log(LogLevel.Error, "Exception occurred in Invoice -> Add[HTTPPOST]: " + ex.Message);
                throw;
            }
        }