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);
        }
Exemple #2
0
        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");
        }
Exemple #3
0
        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");
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }