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; } }
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; } }
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; } }
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; } }