void createPicksTest(int numSohs, int itemCount, List <SalesOrderHeaderModel> sohList, bool bCombine, List <PickHeaderModel> pickHeaders) { // Create a test sale var testUser = GetTestUser(); var testCompany = GetTestCompany(testUser, true); CreateTestTransfers(testCompany, testUser); var testCustomer = GetTestCustomer(testCompany, testUser); // Create some SOHs for (int i = 0; i < numSohs; i++) { sohList.Add(GetTestSalesOrderHeader(testCompany, testCustomer, testUser, itemCount, true)); } var error = PickService.CreatePicks(testCompany, sohList, bCombine, pickHeaders); // Log all the files so they get cleaned up at test tear-down foreach (var pickH in pickHeaders) { db.LogTestFile(pickH.PickFiles); } Assert.IsTrue(!error.IsError, error.Message); }
public void CreatePicksTest() { // This test creates multiple picks int itemCount = 10; // Create a test sale var testUser = GetTestUser(); var testCompany = GetTestCompany(testUser, true); CreateTestTransfers(testCompany, testUser); var testCustomer = GetTestCustomer(testCompany, testUser); var sohList = new List <SalesOrderHeaderModel>(); var pickHeaders = new List <PickHeaderModel>(); sohList.Add(GetTestSalesOrderHeader(testCompany, testCustomer, testUser, 0, true)); var error = PickService.CreatePicks(testCompany, sohList, false, pickHeaders); Assert.IsTrue(error.IsError, "Error: Creating a Pick with no lines should have cause an error"); int beforePicks = db.FindPickHeaders(testCompany.Id).Count(), beforePickLines = db.FindPickDetails(testCompany.Id).Count(); sohList = new List <SalesOrderHeaderModel>(); sohList.Add(GetTestSalesOrderHeader(testCompany, testCustomer, testUser, itemCount, true)); error = PickService.CreatePicks(testCompany, sohList, false, pickHeaders); foreach (var pickH in pickHeaders) { db.LogTestFile(pickH.PickFiles); } Assert.IsTrue(!error.IsError, error.Message); int afterPicks = db.FindPickHeaders(testCompany.Id).Count(), afterPickLines = db.FindPickDetails(testCompany.Id).Count(); int expected = 1, actual = afterPicks - beforePicks; Assert.IsTrue(actual == expected, $"Error: {actual} pick headers were found when {expected} were expected"); expected = itemCount; actual = afterPickLines - beforePickLines; Assert.IsTrue(actual == expected, $"Error: {actual} pick lines were found when {expected} were expected"); // Check to see if the pick CSV file exists var ph = pickHeaders.FirstOrDefault(); Assert.IsTrue(ph != null, "Error: No Pick Headers were found"); Assert.IsTrue(ph.PickFiles.Count() > 0, "Error: No Pick Data File was returned"); Assert.IsTrue(File.Exists(ph.PickFiles[0]), $"Error: Pick Data File '{ph.PickFiles[0]}' could not be found"); // Cleanup File.Delete(ph.PickFiles[0]); }
public void SetPickSentToWarehouseDateTest() { int numSohs = 1, itemCount = 15; var testUser = GetTestUser(); var testCompany = GetTestCompany(testUser, true); CreateTestTransfers(testCompany, testUser); var testCustomer = GetTestCustomer(testCompany, testUser); var sohList = new List <SalesOrderHeaderModel>(); var pickHeaders = new List <PickHeaderModel>(); // Create some SOHs for (int i = 0; i < numSohs; i++) { sohList.Add(GetTestSalesOrderHeader(testCompany, testCustomer, testUser, itemCount, true)); } var error = PickService.CreatePicks(testCompany, sohList, true, pickHeaders); // Log all the files so they get cleaned up at test tear-down foreach (var pickH in pickHeaders) { db.LogTestFile(pickH.PickFiles); //PickService.SetPickSentToWarehouseDate(pickH, DateTimeOffset.Now); } // Check the sent to warehouse state var pickList = PickService.FindPicksListModel(testCompany.Id, null, null); int expected = 1, actual = pickList.Items.Count(); Assert.IsTrue(actual == expected, $"Error: {actual} picks were created when {expected} were expected"); Assert.IsTrue(pickList.Items[0].STWDate == null, $"Error: {pickList.Items[0].STWDate} for STW Date was found when NULL was expected"); // Change the state var stwDate = DateTimeOffset.Now; PickService.SetPickSentToWarehouseDate(pickList.Items[0], stwDate); // Check it pickList = PickService.FindPicksListModel(testCompany.Id, DateTimeOffset.Now.AddDays(-2), DateTimeOffset.Now); expected = 1; actual = pickList.Items.Count(); Assert.IsTrue(actual == expected, $"Error: {actual} picks were created when {expected} were expected"); Assert.IsTrue(pickList.Items[0].STWDate == stwDate, $"Error: {pickList.Items[0].STWDate} for STW Date was found when {stwDate} was expected"); }
public Error CreatePicks(CompanyModel company, UserModel currentUser, string sohIds, bool bCombine) { var error = validateSingleOrder(company, sohIds); if (!error.IsError) { // TBD: Validate the document creation so that we don't have a rollback scenario // All sales validate, so drop them as individual drops List <PickHeaderModel> picks = new List <PickHeaderModel>(); error = PickService.CreatePicks(company, sohList, bCombine, picks); // The returned list contains the names of the pick CSV temp files. // Now create the corresponding support PDF document when // the location configuration specifies that it should be created. if (!error.IsError) { error = createDocuments(company, picks); } // Now drop the files to the warehouse if (!error.IsError) { var sohIdList = new List <int>(); foreach (var pick in picks) { error = FilePackagerService.SendPickToWarehouse(pick); if (error.IsError) { break; } else { // Pick successfully sent, so: foreach (var detail in pick.PickDetails) { var sod = FindSalesOrderDetailModel(detail.SalesOrderDetailId); if (sod != null) { // Change all the line items to 'sent for picking' sod.LineStatusId = (int)SalesOrderLineStatus.SentForPicking; InsertOrUpdateSalesOrderDetail(sod, ""); // Remove allocations from sale AllocationService.DeleteAllocationsForPurchaseLine(company, sod.Id); if (sohIdList.Where(l => l == sod.SalesOrderHeaderId).Count() == 0) { sohIdList.Add(sod.SalesOrderHeaderId); } } } // Set 'sent to warehouse date' on pick header PickService.SetPickSentToWarehouseDate(pick, DateTimeOffset.Now); } } // Attach notes to SOH's to indicate pick sent to W/House TaskManagerService.TaskManagerService tm = new TaskManagerService.TaskManagerService(db, company); foreach (var sohId in sohIdList) { var soh = FindSalesOrderHeaderModel(sohId, company, false); if (soh != null) { var subject = "Order Sent to Warehouse"; var message = "Order sent to Warehouse for picking"; NoteService.AttachNoteToSalesOrder(soh, currentUser, subject, message); } } } // Cleanup all the temp pick files foreach (var pick in picks) { foreach (var pickFile in pick.PickFiles) { FileManagerService.FileManagerService.DeleteFile(pickFile); } } if (!error.IsError) { error.SetInfo(EvolutionResources.infPicksSuccessfullyCreated); } } return(error); }
public void FindPicksListModelTest() { int itemCount = 5, numSohs = 6; // Create a test sale var testUser = GetTestUser(); var testCompany = GetTestCompany(testUser, true); CreateTestTransfers(testCompany, testUser); var testCustomer = GetTestCustomer(testCompany, testUser); // Create some SOHs var sohList = new List <SalesOrderHeaderModel>(); var pickHeaders = new List <PickHeaderModel>(); for (int i = 0; i < numSohs; i++) { sohList.Add(GetTestSalesOrderHeader(testCompany, testCustomer, testUser, itemCount, true)); } var error = PickService.CreatePicks(testCompany, sohList, false, pickHeaders); foreach (var pickH in pickHeaders) { db.LogTestFile(pickH.PickFiles); PickService.SetPickSentToWarehouseDate(pickH, DateTimeOffset.Now); } Assert.IsTrue(!error.IsError, error.Message); // Now find the picks var pickList = PickService.FindPicksListModel(testCompany.Id, DateTimeOffset.Now.AddDays(-2), DateTimeOffset.Now) .Items .OrderBy(pl => pl.Id) .ToList(); // Check that the list contains all the picks we created int expected = numSohs, actual = pickList.Count(); Assert.IsTrue(actual == expected, "Error: {actual} picks were returned when {expected} were expected"); var exceptions = new List <string>(); exceptions.Add("PickDetails"); exceptions.Add("PickDropFolder"); // Because we don't know it at test prep for (int i = 0; i < numSohs; i++) { AreEqual(pickHeaders[i], pickList[i], exceptions); } // Delete the picks for (int i = 0; i < pickHeaders.Count(); i++) { PickService.DeletePick(pickHeaders[i]); } // Make sure they no longer exist pickList = PickService.FindPicksListModel(testCompany.Id, DateTimeOffset.Now.AddDays(-2), DateTimeOffset.Now).Items; expected = 0; actual = pickList.Count(); Assert.IsTrue(actual == expected, "Error: {actual} picks were returned when {expected} were expected"); }