public void CreateOrderConfirmationPdfTest() { var testUser = GetTestUser(); var testCompany = GetTestCompanyAU(); // Find a random sales order header int range = db.FindSalesOrderHeaders(testCompany.Id).Count(); var sohList = db.FindSalesOrderHeaders(testCompany.Id) .Skip(RandomInt(0, range - 1)) .Take(1) .FirstOrDefault(); // Uncomment the following line to get a document for a random SOH, possibly with no items //var soh = SalesService.MapToModel(sohList); // Uncomment the following line to get a document known to have a number of items var soh = SalesService.FindSalesOrderHeaderModel(45176, testCompany); // 158 items var template = LookupService.FindDocumentTemplateModel(DocumentTemplateCategory.SalesOrders, DocumentTemplateType.OrderConfirmation); string pdfFile = ""; var error = SalesService.CreateOrderConfirmationPdf(soh, template, null, true, ref pdfFile); MediaServices.AddFileToLog(pdfFile, 20); // So it gets cleaned up later Assert.IsTrue(File.Exists(pdfFile)); Assert.IsTrue(!error.IsError, error.Message); }
public void CreateSalesDocumentPdfTest() { var testUser = GetTestUser(); var testCompany = GetTestCompany(testUser, true); var testCustomer = GetTestCustomer(testCompany, testUser); var soh = GetTestSalesOrderHeader(testCompany, testCustomer, testUser, 100); var template = LookupService.FindDocumentTemplateModel(DocumentTemplateCategory.SalesOrders, DocumentTemplateType.ConfirmedOrder); string outputFile = ""; var error = SalesService.CreateSalesDocumentPdf(soh, template.Id, "", true, ref outputFile); MediaServices.AddFileToLog(outputFile, 10); Assert.IsTrue(!error.IsError, error.Message); Assert.IsTrue(File.Exists(outputFile), $"Error: File '{outputFile}' could not be found"); }
public void AddFileToLogTest() { int folderDeletes = 0, fileDeletes = 0; // Clean the log to a known state MediaServices.CleanFileLog(ref folderDeletes, ref fileDeletes, true); // Create a temp folder string tempFolder = Path.GetTempPath() + Guid.NewGuid().ToString(); MediaServices.AddFolderToLog(tempFolder, 30); Directory.CreateDirectory(tempFolder); string tempFile = tempFolder + "\\" + Guid.NewGuid().ToString() + ".txt"; MediaServices.AddFileToLog(tempFile, 30); File.WriteAllText(tempFile, LorumIpsum()); Assert.IsTrue(File.Exists(tempFile), "Error: File {tempFile} could not be found"); // Clean the log - files/folders are to be kept for 30 mins, so shouldn't be deleted MediaServices.CleanFileLog(ref folderDeletes, ref fileDeletes, false); int expected = 0; Assert.IsTrue(folderDeletes == expected, $"Error: {folderDeletes} folders were deleted when {expected} were expected"); Assert.IsTrue(fileDeletes == expected, $"Error: {fileDeletes} files were deleted when {expected} were expected"); Assert.IsTrue(File.Exists(tempFile), "Error: File {tempFile} could not be found"); // Change the log times foreach (var log in db.FindFileLogs(true)) { log.DeleteAfterDate = log.DeleteAfterDate.AddMinutes(-31); db.InsertOrUpdateFileLog(log); } // Clean the log, taking advantage of the timeout period MediaServices.CleanFileLog(ref folderDeletes, ref fileDeletes, false); expected = 1; Assert.IsTrue(folderDeletes == expected, $"Error: {folderDeletes} folders were deleted when {expected} were expected"); Assert.IsTrue(fileDeletes == expected, $"Error: {fileDeletes} files were deleted when {expected} were expected"); Assert.IsTrue(!File.Exists(tempFile), $"Error: File {tempFile} was found when it should have been deleted"); Assert.IsTrue(!File.Exists(tempFolder), $"Error: Folder {tempFolder} was found when it should have been deleted"); }
public void CreatePurchaseOrderPdfTest() { var testUser = GetTestUser(); var testCompany = GetTestCompanyAU(); // Find a random purchase order header var poh = db.FindPurchaseOrderHeaders(testCompany.Id) .Skip(RandomInt(0, 4999)) .Take(1) .FirstOrDefault(); string pdfFile = ""; var error = PurchasingService.CreatePurchaseOrderPdf(poh, testCompany.POSupplierTemplateId, //DocumentTemplateType.PurchaseOrder, null, ref pdfFile); MediaServices.AddFileToLog(pdfFile, 20); // So it gets cleaned up later Assert.IsTrue(!error.IsError, error.Message); }
public Error PrintSale(SalePrintOptionsViewModel model, CompanyModel company, UserModel currentUser, string selectedIds) { // Prints the sale according to the user selections var error = new Error(); var soh = FindSalesOrderHeaderModelFromTempId(model.SalesOrderHeaderTempId, company, false); if (soh != null) { var customer = CustomerService.FindCustomerModel(soh.CustomerId.Value, company, false); if (customer != null) { // Check the recipients and new contacts var recipients = new List <UserModel>(); var copies = new List <UserModel>(); error = BuildRecipientLists(selectedIds.ToLower(), model.CustomerContact, company, customer, model.SaveAsContact, recipients, copies); if (!error.IsError) { // Create the required document PDF string outputFile = ""; string pdfFile = MediaServices.GetMediaFolder(MediaFolder.Temp, soh.CompanyId) + "\\" + soh.OrderNumber + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf"; error = CreateSalesDocumentPdf(soh, model.TemplateId, pdfFile, model.ShowCancelledItems, ref outputFile); if (!error.IsError) { string url = MediaServices.GetMediaFolder(MediaFolder.Temp, soh.CompanyId, -1, -1, true) + "/" + outputFile.FileName(); if (model.SaveInSaleNotesAttachments) { // Save it against sale notes/attachments error = NoteService.AttachNoteToSalesOrder(soh, currentUser, (string.IsNullOrEmpty(model.Subject) ? "Sale Preview Document" : model.Subject), model.Message, outputFile.ToStringList(), FileCopyType.Copy); } if (!error.IsError) { if (model.SendAsEMail) { // Send it as an email attachment Dictionary <string, string> dict = new Dictionary <string, string>(); if (!error.IsError) { var message = new EMailMessage(currentUser, recipients, model.Subject, model.Message); message.AddCopies(copies); message.AddProperties(dict); message.AddAttachment(outputFile, FileCopyType.Copy); EMailService.EMailService emailService = new Evolution.EMailService.EMailService(db, company); error = emailService.SendEMail(message); if (!error.IsError) { error.SetInfo(EvolutionResources.infEMailSuccessfullySent); if (model.ViewCreatedDocument) { error.URL = url; } } } } else if (model.ViewCreatedDocument) { error.URL = url; } else { error.SetInfo(EvolutionResources.infDocumentSuccessfullyCreated); } } } if (!string.IsNullOrEmpty(outputFile)) { MediaServices.AddFileToLog(outputFile, 30); } } } else { error.SetRecordError("Customer", soh.CustomerId.Value); } } else { error.SetError(EvolutionResources.errFailedToFindSOGForSOHT, "", model.SalesOrderHeaderTempId.ToString()); } model.SetError(error.Icon, error.Message, null, null, null, null, true); return(error); }