public static List <InvoiceAttachment> ConvertPdfToPng(string pathToDocument, string folderPath) { XSettings.InstallLicense(ConfigurationManager.AppSettings["ABCPdfKey"]); pathToDocument = LocalizePath(pathToDocument); var convertedFileName = string.Empty; var convertedAttachments = new List <InvoiceAttachment>(); var pdfToConvert = new Doc(); pdfToConvert.Read(pathToDocument); // loop through the pages var n = pdfToConvert.PageCount; for (var i = 1; i <= n; i++) { pdfToConvert.PageNumber = i; pdfToConvert.Rect.String = pdfToConvert.CropBox.String; convertedFileName = $"{folderPath}\\{Path.GetFileNameWithoutExtension(pathToDocument)}{i}.png"; pdfToConvert.Rendering.Save(convertedFileName); var newDoc = new InvoiceAttachment { DocumentPath = convertedFileName }; convertedAttachments.Add(newDoc); newDoc = null; } pdfToConvert.Clear(); return(convertedAttachments); }
public static List <InvoiceAttachment> ConvertMsgToPng(string pathToDocument, string folderPath) { SetAsposeLicense(); pathToDocument = LocalizePath(pathToDocument); var convertedAttachments = new List <InvoiceAttachment>(); var convertedFileName = $"{folderPath}\\{Path.GetFileNameWithoutExtension(pathToDocument)}.png"; var msg = MailMessage.Load(pathToDocument); var msgStream = new MemoryStream(); msg.Save(msgStream, MailMessageSaveType.MHtmlFormat); msgStream.Position = 0; var msgDocument = new Document(msgStream); msgDocument.Save(convertedFileName, SaveFormat.Png); var newDoc = new InvoiceAttachment { DocumentPath = convertedFileName }; convertedAttachments.Add(newDoc); return(convertedAttachments); }
public static List <InvoiceAttachment> ConvertToPng(string pathToDocument, string folderPath) { pathToDocument = LocalizePath(pathToDocument); var convertedFileName = $"{folderPath}\\{Path.GetFileNameWithoutExtension(pathToDocument)}.png"; var convertedAttachments = new List <InvoiceAttachment>(); var oldImage = Image.FromFile(pathToDocument); oldImage.Save(convertedFileName, ImageFormat.Png); var newDoc = new InvoiceAttachment { DocumentPath = convertedFileName }; convertedAttachments.Add(newDoc); return(convertedAttachments); }
public virtual int _GetUniqueIdentifier() { var hashCode = 399326290; hashCode = hashCode * -1521134295 + (Id?.GetHashCode() ?? 0); hashCode = hashCode * -1521134295 + (InvoiceNumber?.GetHashCode() ?? 0); hashCode = hashCode * -1521134295 + (Description?.GetHashCode() ?? 0); hashCode = hashCode * -1521134295 + (DateIssued?.GetHashCode() ?? 0); hashCode = hashCode * -1521134295 + (Amount?.GetHashCode() ?? 0); hashCode = hashCode * -1521134295 + (CustomerType?.GetHashCode() ?? 0); hashCode = hashCode * -1521134295 + (CumulativeBalance?.GetHashCode() ?? 0); hashCode = hashCode * -1521134295 + (TotalPrice?.GetHashCode() ?? 0); hashCode = hashCode * -1521134295 + (DescriptionTwo?.GetHashCode() ?? 0); hashCode = hashCode * -1521134295 + (Attribute?.GetHashCode() ?? 0); hashCode = hashCode * -1521134295 + (InvoiceAttachment?.GetHashCode() ?? 0); hashCode = hashCode * -1521134295 + (Status?.GetHashCode() ?? 0); return(hashCode); }
public async Task <IActionResult> AddAttachment(int id, IFormFile file) { var team = await GetAuthorizedTeam(); // find item var invoice = await _dbContext.Invoices .Include(i => i.Items) .Include(i => i.Attachments) .Include(i => i.Team) .Where(i => i.Team.Id == team.Id) .FirstOrDefaultAsync(i => i.Id == id); if (invoice == null) { return(NotFound()); } // upload file var identifier = await _storageService.UploadAttachment(file); // add to invoice var attachment = new InvoiceAttachment() { Invoice = invoice, Identifier = identifier, FileName = file.FileName, ContentType = file.ContentType, Size = file.Length, }; invoice.Attachments.Add(attachment); await _dbContext.SaveChangesAsync(); return(new JsonResult(new { success = true, identifier, })); }
public async Task <JsonResult> EditInvoice(InvoiceViewModel model) { if (!ModelState.IsValid) { return(Json(new { Error = "Complete all required fields" })); } if (model.Id.HasValue) { var isAdmin = User.IsInRole("admin"); var invoice = _invoiceService.AllIncluding(item => item.Assignment, item => item.Assignment.Customer, item => item.Assignment.Invoices, item => item.InvoiceAttachments, item => item.InvoiceAttachments.Select(e => e.Attachment)).SingleOrDefault(item => item.Id == model.Id.Value && (isAdmin || item.Assignment.CustomerId == CustomerId)); if (invoice != null) { var assignment = invoice.Assignment; if (!isAdmin && assignment.StatusId != 1) { return(Json(new { Error = "Cannot edit submitted or approved invoices" })); } _uow.BeginTransaction(); invoice.Amount = model.Amount; invoice.PaidAmount = invoice.Amount - (invoice.Amount * assignment.Customer.Rate / 100); invoice.CustomerName = model.CustomerName; invoice.Number = model.Number; invoice.WONumber = model.WONumber; invoice.HoldReason = model.HoldReason; Attachment attachment = null; //if check amount < paid amount and overpayment is null then create overpayment decimal?adjustment = null; if (isAdmin) { invoice.CheckAmount = model.CheckAmount; invoice.CheckNumber = model.CheckNumber; if (model.CheckDate != null) { invoice.CheckDate = model.CheckDate; } //upload check if (Request.Files.Count > 0 && Request.Files["check"] != null) { var ext = Request.Files["check"].FileName.Substring(Request.Files["check"].FileName.LastIndexOf(".", StringComparison.Ordinal)).ToLower(); var tempFileName = UploadFileService.UploadFile(Request.Files["check"]); var invoiceCheck = invoice.InvoiceAttachments.Where(item => item.IsCheck).FirstOrDefault(); if (invoiceCheck?.Attachment != null) { invoiceCheck.Attachment.Path = "/PdfFiles/" + tempFileName + ".pdf"; invoiceCheck.Attachment.OrgFilePath = "/OrgFiles/" + tempFileName + ext; invoiceCheck.Attachment.Name = Request.Form["Check_Name"]; _attachmentService.Update(invoiceCheck.Attachment); } else { invoiceCheck = new InvoiceAttachment { IsCheck = true, Attachment = new Attachment { Path = "/PdfFiles/" + tempFileName + ".pdf", OrgFilePath = "/OrgFiles/" + tempFileName + ext, Name = Request.Form["Check_Name"] } }; if (invoice.InvoiceAttachments == null) { invoice.InvoiceAttachments = new List <InvoiceAttachment>(); } invoice.InvoiceAttachments.Add(invoiceCheck); } attachment = invoiceCheck.Attachment; } if (model.CheckAmount >= 0 && !string.IsNullOrEmpty(model.CheckNumber) && model.CheckDate.HasValue) { if (model.CheckAmount == 0) { invoice.StatusId = 5; } else { invoice.StatusId = 2; } var oldAdjustment = _adjustmentService.FindBy(item => item.OriginInvoiceId == invoice.Id).FirstOrDefault(); if (oldAdjustment != null) { oldAdjustment.Amount = invoice.CheckAmount - invoice.Amount; if (oldAdjustment.Amount == 0) { _adjustmentService.Delete(oldAdjustment); } else { _adjustmentService.Update(oldAdjustment); } } else { if (invoice.CheckAmount != invoice.Amount) { var newAdjustment = new Adjustment { OriginInvoice = invoice, CustomerId = assignment.CustomerId, StatusId = 1, Amount = invoice.CheckAmount - invoice.Amount }; _adjustmentService.Insert(newAdjustment); } } } //implement hold invoices if (model.StatusId.HasValue && (model.StatusId == 3 || model.StatusId == 4)) { //create new assignment var newAssignment = Mapper.Map <Assignment>(assignment); SetAssignmnetLetter(newAssignment); newAssignment.Invoices = new List <Invoice>(); _assignmentService.Insert(newAssignment); _uow.SaveChanges(); invoice.AssignmentId = newAssignment.Id; newAssignment.Invoices.Add(invoice); assignment.Invoices.Remove(invoice); _invoiceService.Update(invoice); _uow.SaveChanges(); _assignmentService.Recaculate(newAssignment); _uow.SaveChanges(); //send email to user var user = UserManager.Users.SingleOrDefault(item => item.Id == invoice.Assignment.UserId); var msg = GetInvoiceHoldEmail(invoice, user); MailService.SendMail(user.Email, "Invoice on Hold", msg); } } _invoiceService.Update(invoice); _assignmentService.Recaculate(assignment); if (assignment.Invoices.Count == 0) { assignment.StatusId = 5; } _uow.SaveChanges(); _uow.Commit(); if (isAdmin) { adjustment = _adjustmentService.All.FirstOrDefault(item => item.OriginInvoiceId == invoice.Id)?.Amount; assignment = _assignmentService.Find(assignment.Id); return(Json(new { Done = 1, Adjustment = adjustment, Path = attachment?.Path, CheckId = attachment?.Id, Total = assignment.Total, TotalPayable = assignment.TotalPayable, Funded = assignment.Funded })); } return(Json(new { Done = 1, Adjustment = adjustment, CheckId = attachment?.Id })); } } return(Json(new { Error = "Invoice not exist." })); }
//public static Invoice Create(InvoiceAddModel model, string userId, List<Item> items) //{ // var invoice = new Invoice // { // CustomerId = model.CustomerId, // InvoiceNumber = string.Empty, // Tax = model.Tax, // Discount = model.Discount, // TotalAmount = model.TotalAmount, // Remark = model.Remark, // Status = Constants.InvoiceStatus.Pending, // CreatedBy = userId, // CreatedOn = Utility.GetDateTime(), // Services = items.Select(x => new InvoiceService // { // Id = Guid.NewGuid(), // ServiceId = x.Id, // Rate = x.Rate // }).ToList() // }; // if (model.Attachments == null || !model.Attachments.Any()) // { // return invoice; // } // foreach (var attachment in model.Attachments) // { // invoice.Attachments = new List<InvoiceAttachment> // { // new InvoiceAttachment // { // Title = attachment.Title, // FileName = attachment.FileName, // OriginalFileName = attachment.OriginalFileName, // CreatedBy =userId, // CreatedOn =Utility.GetDateTime() // } // }; // } // return invoice; //} //public static void Create(InvoiceEditModel model, Invoice entity, string userId, List<Item> items) //{ // entity.CustomerId = model.CustomerId; // entity.Tax = model.Tax; // entity.Discount = model.Discount; // entity.TotalAmount = model.TotalAmount; // entity.Remark = model.Remark; // entity.UpdatedBy = userId; // entity.UpdatedOn = Utility.GetDateTime(); // var deletedServices = entity.Services.Where(x => !model.Items.Contains(x.ServiceId)).ToList(); // foreach (var deletedService in deletedServices) // { // entity.Services.Remove(deletedService); // } // var addedServices = items // .Where(x => !entity.Services.Select(y => y.ServiceId).Contains(x.Id)) // .ToList(); // foreach (var service in addedServices) // { // entity.Services.Add(new InvoiceService // { // Id = Guid.NewGuid(), // ServiceId = service.Id, // Rate = service.Rate // }); // } // if (model.Attachments == null || !model.Attachments.Any()) // { // return; // } // var deletedAttachemntFiles = entity.Attachments.Select(x => x.FileName) // .Except(model.Attachments.Select(y => y.FileName)).ToList(); // foreach (var deletedAttachemntFile in deletedAttachemntFiles) // { // var attachemnt = entity.Attachments.Single(x => x.FileName.Equals(deletedAttachemntFile)); // entity.Attachments.Remove(attachemnt); // } // foreach (var attachment in model.Attachments) // { // var invoiceAttachment = entity.Attachments.SingleOrDefault(x => x.FileName.Equals(attachment.FileName)); // if (invoiceAttachment == null) // { // invoiceAttachment = new InvoiceAttachment // { // Title = attachment.Title, // FileName = attachment.FileName, // OriginalFileName = attachment.OriginalFileName, // CreatedBy = userId, // CreatedOn = Utility.GetDateTime() // }; // } // else // { // invoiceAttachment.Title = attachment.Title; // invoiceAttachment.FileName = attachment.FileName; // invoiceAttachment.OriginalFileName = attachment.OriginalFileName; // } // entity.Attachments.Add(invoiceAttachment); // } //} public static void EditInvoice(InvoiceEditModel model, Invoice entity, string userId) { entity.CustomerId = model.CustomerId; entity.Tax = model.Tax; entity.Discount = model.Discount; entity.TotalAmount = model.TotalAmount; entity.Remark = model.Remark; entity.UpdatedBy = userId ?? "0"; entity.UpdatedOn = Utility.GetDateTime(); entity.InvoiceDate = model.InvoiceDate; entity.StrInvoiceDate = model.InvoiceDate.ToString("yyyy-MM-dd"); entity.DueDate = model.DueDate; entity.StrDueDate = model.DueDate.ToString("yyyy-MM-dd"); entity.PoSoNumber = model.PoSoNumber; entity.SubTotal = model.SubTotal; entity.LineAmountSubTotal = model.LineAmountSubTotal; //int[] arr = new int[100]; ArrayList tempArr = new ArrayList(); //for (int i=0;i<model.Items.Count; i++) //{ // arr[i] = model.Items[i].ServiceId; //} foreach (var item in model.Items) { tempArr.Add(item.ServiceId); var alreadyExistServices = entity.Services.Where(x => item.ServiceId == x.ServiceId).FirstOrDefault(); //entity.Services.Where(x => item.ServiceId == x.ServiceId).Select(c => { c.CreditLimit = 1000; return c; }); if (alreadyExistServices != null) { alreadyExistServices.Price = item.Price; alreadyExistServices.TaxId = item.TaxId; alreadyExistServices.TaxPercentage = item.TaxPercentage; alreadyExistServices.Rate = item.Rate; alreadyExistServices.Quantity = item.Quantity; alreadyExistServices.TaxPrice = item.TaxPrice; alreadyExistServices.LineAmount = item.LineAmount; entity.Services.Add(alreadyExistServices); } } var deletedServices = entity.Services.Where(x => !tempArr.Contains(x.ServiceId)).ToList(); //var alreadyExistServices = entity.Services.Where(x => tempArr.Contains(x.ServiceId)).ToList(); //var resultAll = items.Where(i => filter.All(x => i.Features.Any(f => x == f.Id))); foreach (var deletedService in deletedServices) { entity.Services.Remove(deletedService); } var addedServices = model.Items .Where(x => !entity.Services.Select(y => y.ServiceId).Contains(x.ServiceId)) .ToList(); foreach (var service in addedServices) { entity.Services.Add(new InvoiceService { Id = Guid.NewGuid(), ServiceId = service.ServiceId, Rate = service.Rate, TaxId = service.TaxId, Price = service.Price, TaxPrice = service.TaxPrice, Quantity = service.Quantity, TaxPercentage = service.TaxPercentage, LineAmount = service.LineAmount }); } if (model.Attachments == null || !model.Attachments.Any()) { return; } var deletedAttachemntFiles = entity.Attachments.Select(x => x.FileName) .Except(model.Attachments.Select(y => y.FileName)).ToList(); foreach (var deletedAttachemntFile in deletedAttachemntFiles) { var attachemnt = entity.Attachments.SingleOrDefault(x => x.FileName.Equals(deletedAttachemntFile)); entity.Attachments.Remove(attachemnt); } foreach (var attachment in model.Attachments) { var invoiceAttachment = entity.Attachments.SingleOrDefault(x => x.FileName.Equals(attachment.FileName)); if (invoiceAttachment == null) { invoiceAttachment = new InvoiceAttachment { Title = attachment.Title, FileName = attachment.FileName, OriginalFileName = attachment.OriginalFileName, CreatedBy = userId ?? "0", CreatedOn = Utility.GetDateTime() }; } else { invoiceAttachment.Title = attachment.Title; invoiceAttachment.FileName = attachment.FileName; invoiceAttachment.OriginalFileName = attachment.OriginalFileName; } entity.Attachments.Add(invoiceAttachment); } }