public void LockPurchaseOrderHeaderTempTest() { var testUser = GetTestUser(); var testCompany = GetTestCompany(testUser, true); var testPurchase = GetTestPurchaseOrderHeader(testCompany, testUser, 10); var model = PurchasingService.CopyPurchaseOrderToTemp(testCompany, testPurchase, testUser); Assert.IsTrue(model != null, "Error: A NULL value was returned when an object was expected"); // Get the current Lock string lockGuid = PurchasingService.LockPurchaseOrderHeaderTemp(model); Assert.IsTrue(!string.IsNullOrEmpty(lockGuid), "Error: Lock record was not found"); // Simulate another user updating the record var otherUser = GetTestUser(); var error = PurchasingService.InsertOrUpdatePurchaseOrderHeaderTemp(model, otherUser, lockGuid); Assert.IsTrue(!error.IsError, error.Message); // Now get the first user to update the record error = PurchasingService.InsertOrUpdatePurchaseOrderHeaderTemp(model, testUser, lockGuid); Assert.IsTrue(error.IsError, "Error: The lock should have caused an error as it has changed"); // Try to update with the new lock lockGuid = PurchasingService.LockPurchaseOrderHeaderTemp(model); error = PurchasingService.InsertOrUpdatePurchaseOrderHeaderTemp(model, testUser, lockGuid); Assert.IsTrue(!error.IsError, $"Error: {error.Message}"); }
public void DeletePurchaseOrderDetailTempTest() { // Get a test user var testUser = GetTestUser(); var testCompany = GetTestCompany(testUser, true); var testPurchase = GetTestPurchaseOrderHeader(testCompany, testUser, 1); var pohtModel = PurchasingService.CopyPurchaseOrderToTemp(testCompany, testPurchase, testUser); var model = PurchasingService.FindPurchaseOrderDetailTempsListModel(testCompany.Id, pohtModel.Id, 0, 1, PageSize, ""); // Create a record var newItem = createPurchaseOrderDetailTemp(model); var error = PurchasingService.InsertOrUpdatePurchaseOrderDetailTemp(newItem, testUser, ""); Assert.IsTrue(!error.IsError, error.Message); // Check that it was written var result = db.FindPurchaseOrderDetailTemp(newItem.Id); var test = PurchasingService.MapToModel(result); AreEqual(model, test); // Now delete it PurchasingService.DeletePurchaseOrderDetailTemp(newItem.Id); // And check that is was deleted result = db.FindPurchaseOrderDetailTemp(newItem.Id); Assert.IsTrue(result == null, "Error: A non-NULL value was returned when a NULL value was expected - record delete failed"); }
public void CreateOrderSummaryTest() { var testUser = GetTestUser(); var testCompany = GetTestCompany(testUser, true); var testPurchase = GetTestPurchaseOrderHeader(testCompany, testUser, 10); var pohtModel = PurchasingService.CopyPurchaseOrderToTemp(testCompany, testPurchase, testUser); var pos = PurchasingService.CreateOrderSummary(pohtModel, testCompany.DateFormat); // 16/1/2018 TBD: Lines commented out below are because CreateOrderSummary does not // populate them yet as allocations have not been implemented Assert.IsTrue(pos.OrderNumber != 0, $"Error: OrderNumber '{pos.OrderNumber}' was returned when a non-zero value was expected"); Assert.IsTrue(pos.TotalCbms != 0, $"Error: TotalCbms '{pos.TotalCbms}' was returned when a non-zero value was expected"); //Assert.IsTrue(pos.AllocValueEx != 0, $"Error: AllocValueEx '{pos.AllocValueEx}' was returned when a non-zero value was expected"); Assert.IsTrue(pos.OrderValueEx != 0, $"Error: OrderValueEx '{pos.OrderValueEx}' was returned when a non-zero value was expected"); //Assert.IsTrue(pos.AllocatedPercent != 0, $"Error: AllocatedPercent '{pos.AllocatedPercent}' was returned when a non-zero value was expected"); // Can't check GST because it is permissible to be zero //Assert.IsTrue(pos.Tax != 0, $"Error: GST '{pos.Tax}' was returned when a non-zero value was expected"); Assert.IsTrue(pos.Total != 0, $"Error: Total '{pos.Total}' was returned when a non-zero value was expected"); Assert.IsTrue(!string.IsNullOrEmpty(pos.POStatusText), $"Error: POStatusText '{pos.POStatusText}' was returned when a non-empty value was expected"); // Can't test the LandingDate field as it is caluculated from multiple other tables which haven't been set up in this test //Assert.IsTrue(!string.IsNullOrEmpty(pos.LandingDate), $"Error: LandingDate '{pos.LandingDate}' was returned when a non-empty value was expected"); Assert.IsTrue(!string.IsNullOrEmpty(pos.RealisticRequiredDate), $"Error: RealisticRequiredDate '{pos.RealisticRequiredDate}' was returned when a non-empty value was expected"); Assert.IsTrue(!string.IsNullOrEmpty(pos.RequiredDate), $"Error: RequiredDate '{pos.RequiredDate}' was returned when a non-empty value was expected"); Assert.IsTrue(!string.IsNullOrEmpty(pos.CompletedDate), $"Error: CompletedDate '{pos.CompletedDate}' was returned when a non-empty value was expected"); }
public void CopyPurchaseOrderToTempTest() { var testUser = GetTestUser(); var testCompany = GetTestCompany(testUser, true); var testPurchase = GetTestPurchaseOrderHeader(testCompany, testUser, 10); var pohtModel = PurchasingService.CopyPurchaseOrderToTemp(testCompany, testPurchase, testUser); var excludes = new List <string>(); excludes.Add("Id"); excludes.Add("OriginalRowIdId"); AreEqual(testPurchase, pohtModel, excludes); }
public ActionResult Edit(int id) { // Called when a user clicks to edit an order var model = new EditPurchaseOrderHeaderTempViewModel(); var purchase = PurchasingService.FindPurchaseOrderHeaderModel(id, CurrentCompany, true); // Copy the order into temp tables for editing model.PurchaseTemp = PurchasingService.CopyPurchaseOrderToTemp(CurrentCompany, purchase, CurrentUser); prepareEditModel(model, model.PurchaseTemp.Id); model.LGS = PurchasingService.LockPurchaseOrderHeader(purchase); model.LGST = PurchasingService.LockPurchaseOrderHeaderTemp(model.PurchaseTemp); return(View("Edit", model)); }
public ActionResult Add() { // Called when the user clicks 'Create' to create a new order var editModel = new EditPurchaseOrderHeaderTempViewModel(); var purchase = PurchasingService.FindPurchaseOrderHeaderModel(0, CurrentCompany, true); purchase.OrderDate = DateTimeOffset.Now; purchase.SalespersonId = CurrentUser.Id; purchase.BrandCategoryId = CurrentUser.DefaultBrandCategoryId; purchase.LocationId = CurrentCompany.DefaultLocationID; purchase.CancelMessage = CurrentCompany.CancelMessage; // Copy the order into temp tables for editing editModel.PurchaseTemp = PurchasingService.CopyPurchaseOrderToTemp(CurrentCompany, purchase, CurrentUser); return(EditDetails(editModel.PurchaseTemp.Id)); }
public void FindPurchaseOrderDetailTempModelTest() { var testUser = GetTestUser(); var testCompany = GetTestCompany(testUser, true); var testPurchase = GetTestPurchaseOrderHeader(testCompany, testUser, 1); var pohtModel = PurchasingService.CopyPurchaseOrderToTemp(testCompany, testPurchase, testUser); var model = PurchasingService.FindPurchaseOrderDetailTempsListModel(testCompany.Id, pohtModel.Id, 0, 1, PageSize, ""); var newItem = createPurchaseOrderDetailTemp(model); var error = PurchasingService.InsertOrUpdatePurchaseOrderDetailTemp(newItem, testUser, ""); Assert.IsTrue(!error.IsError, $"Error: {error.Message}"); var test = PurchasingService.FindPurchaseOrderDetailTempModel(newItem.Id, null, false); AreEqual(model, test); }
public void FindPurchaseOrderDetailTempsListModelTest() { var testUser = GetTestUser(); var testCompany = GetTestCompany(testUser, true); var testPurchase = GetTestPurchaseOrderHeader(testCompany, testUser, 10); var pohtModel = PurchasingService.CopyPurchaseOrderToTemp(testCompany, testPurchase, testUser); var model = PurchasingService.FindPurchaseOrderDetailTempsListModel(testCompany.Id, pohtModel.Id, 0, 1, PageSize, ""); var dbData = db.FindPurchaseOrderDetailTemps(testCompany.Id, pohtModel.Id); int expected = dbData.Count(), actual = model.Items.Count(); Assert.IsTrue(actual == expected, $"Error: {actual} items were found when {expected} were expected"); // Check that all the items match foreach (var item in model.Items) { var dbItem = dbData.Where(m => m.Id == item.Id).FirstOrDefault(); Assert.IsTrue(dbItem != null, "Error: Model item not found in db item list"); var temp = PurchasingService.MapToModel(dbItem); AreEqual(item, temp); } // Add another item a make sure it is found var newItem = createPurchaseOrderDetailTemp(model); var error = PurchasingService.InsertOrUpdatePurchaseOrderDetailTemp(newItem, testUser, ""); Assert.IsTrue(!error.IsError, $"Error: {error.Message}"); model = PurchasingService.FindPurchaseOrderDetailTempsListModel(testCompany.Id, pohtModel.Id, 0, 1, PageSize, ""); var testItem = model.Items.Where(i => i.Id == newItem.Id).FirstOrDefault(); Assert.IsTrue(testItem != null, "Error: A NULL value was returned when a non-NULL value was expected"); // Delete it and make sure it disappears PurchasingService.DeletePurchaseOrderDetailTemp(newItem.Id); model = PurchasingService.FindPurchaseOrderDetailTempsListModel(testCompany.Id, pohtModel.Id, 0, 1, PageSize, ""); testItem = model.Items.Where(i => i.Id == newItem.Id).FirstOrDefault(); Assert.IsTrue(testItem == null, "Error: A non-NULL value was returned when a NULL value was expected"); }
public void SendPurchaseOrderToFreightForwarderTest() { // Get a test user and test company var testUser = GetTestUser(); var testCompany = GetTestCompany(testUser, true); CreateTestTransfers(testCompany, testUser); // Create a purchase order with items var poh = GetTestPurchaseOrderHeader(testCompany, testUser, 10); // Copy the purchase order to the temp tables var poht = PurchasingService.CopyPurchaseOrderToTemp(testCompany, poh, testUser); // Send the purchase order FilePackagerService.FilePackagerService fpService = new FilePackagerService.FilePackagerService(db); var error = fpService.SendPurchaseOrderToFreightForwarder(poht.Id); Assert.IsTrue(!error.IsError, error.Message); }
public void SendPurchaseOrderToWarehouseTest() { // This test places a file in an FTP 'send' folder but does not actually send the file. // It also queues an EMail, so make sure TaskProcessor email sending is switched off! // Get a test user and test company var testUser = GetTestUser(); var testCompany = GetTestCompany(testUser, true); CreateTestTransfers(testCompany, testUser); // Create a purchase order with items var poh = GetTestPurchaseOrderHeader(testCompany, testUser, 10); // Copy the purchase order to the temp tables var poht = PurchasingService.CopyPurchaseOrderToTemp(testCompany, poh, testUser); // Send the purchase order FilePackagerService.FilePackagerService fpService = new FilePackagerService.FilePackagerService(db); var error = fpService.SendPurchaseOrderToWarehouse(poht.Id); Assert.IsTrue(!error.IsError, error.Message); }
public void SendPurchaseOrderToSupplierTest() { // Get a test user and test company var testUser = GetTestUser(); var testCompany = GetTestCompany(testUser, true); var poh = GetTestPurchaseOrderHeader(testCompany, testUser, 58); // Copy the purchase order to the temp tables var poht = PurchasingService.CopyPurchaseOrderToTemp(testCompany, poh, testUser); // Create the PDF string pdfFile = ""; var error = PurchasingService.CreatePurchaseOrderPdf(poh, testCompany.POSupplierTemplateId, //DocumentTemplateType.PurchaseOrder, null, ref pdfFile); Assert.IsTrue(!error.IsError, error.Message); // Send the purchase order FilePackagerService.FilePackagerService fpService = new FilePackagerService.FilePackagerService(db); error = fpService.SendPurchaseOrderToSupplier(poht.Id, testUser, pdfFile); Assert.IsTrue(!error.IsError, error.Message); }
public void LockPurchaseOrderDetailTempTest() { var testUser = GetTestUser(); var testCompany = GetTestCompany(testUser, true); var testPurchase = GetTestPurchaseOrderHeader(testCompany, testUser, 1); var pohtModel = PurchasingService.CopyPurchaseOrderToTemp(testCompany, testPurchase, testUser); var model = PurchasingService.FindPurchaseOrderDetailTempsListModel(testCompany.Id, pohtModel.Id, 0, 1, PageSize, ""); // Create a record var newItem = createPurchaseOrderDetailTemp(model); var error = PurchasingService.InsertOrUpdatePurchaseOrderDetailTemp(newItem, testUser, ""); Assert.IsTrue(!error.IsError, $"Error: {error.Message}"); // Get the current Lock string lockGuid = PurchasingService.LockPurchaseOrderDetailTemp(newItem); Assert.IsTrue(!string.IsNullOrEmpty(lockGuid), "Error: Lock record was not found"); // Simulate another user updating the record var otherUser = GetTestUser(); error = PurchasingService.InsertOrUpdatePurchaseOrderDetailTemp(newItem, otherUser, lockGuid); Assert.IsTrue(!error.IsError, error.Message); // Now get the first user to update the record error = PurchasingService.InsertOrUpdatePurchaseOrderDetailTemp(newItem, testUser, lockGuid); Assert.IsTrue(error.IsError, "Error: The lock should have caused an error as it has changed"); // Try to update with the new lock lockGuid = PurchasingService.LockPurchaseOrderDetailTemp(newItem); error = PurchasingService.InsertOrUpdatePurchaseOrderDetailTemp(newItem, testUser, lockGuid); Assert.IsTrue(!error.IsError, $"Error: {error.Message}"); }
public void CompleteOrderTest() { var testUser = GetTestUser(); var testCompany = GetTestCompany(testUser, true); var poh = GetTestPurchaseOrderHeader(testCompany, testUser, 10); Assert.IsTrue(poh.POStatusValue != PurchaseOrderStatus.Closed, $"Error: Purchase order status {PurchaseOrderStatus.Closed} was found when any other value was expected"); var podList = PurchasingService.FindPurchaseOrderDetailListModel(poh); var testProd1 = ProductService.FindProductModel(podList.Items[0].ProductId.Value, null, null, false); var testProd2 = ProductService.FindProductModel(podList.Items[1].ProductId.Value, null, null, false); // Clear the records for the first product db.DeleteAllocationsForProduct(testCompany.Id, testProd1.Id); testProd1.QuantityOnHand = 0; string lgs = ProductService.LockProduct(testProd1); ProductService.InsertOrUpdateProduct(testProd1, testUser, lgs); db.DeleteProductLocationsForProduct(testCompany.Id, testProd1.Id); // Copy the order to temp var poht = PurchasingService.CopyPurchaseOrderToTemp(testCompany, poh, testUser); // Complete the order var error = PurchasingService.CompleteOrder(testCompany, testUser, poht.Id); Assert.IsTrue(!error.IsError, error.Message); poht = PurchasingService.FindPurchaseOrderHeaderTempModel(poht.Id, testCompany, false); Assert.IsTrue(poht.POStatusValue == PurchaseOrderStatus.Closed, $"Error: Purchase order status {poht.POStatusValue} was returned when {PurchaseOrderStatus.Closed} was expected"); // Now try to complete the order again error = PurchasingService.CompleteOrder(testCompany, testUser, poht.Id); Assert.IsTrue(error.IsError, "Error: No error was returned when one was expected - an order cannot be completed twice"); poht = PurchasingService.FindPurchaseOrderHeaderTempModel(poht.Id, testCompany, false); Assert.IsTrue(poht.POStatusValue == PurchaseOrderStatus.Closed, $"Error: Purchase order status {poht.POStatusValue} was returned when {PurchaseOrderStatus.Closed} was expected"); // Check the results of the completion // Force a reload of all objects //ReloadDbContext(); // Check the Allocations table for the first product // The Allocations table records quantity reservations against order lines. var allocs1 = AllocationService.FindAllocationListModel(testCompany, testProd1); int expected = 0, // Because it was deleted above actual = allocs1.Items.Count(); Assert.IsTrue(actual == expected, $"Error: {actual} records were returned when {expected} were expected"); // Check the Allocations table for the second product var allocs2 = AllocationService.FindAllocationListModel(testCompany, testProd2); expected = 1; actual = allocs2.Items.Count(); Assert.IsTrue(actual >= expected, $"Error: {actual} records were returned when >={expected} were expected"); expected = (int)podList.Items[1].OrderQty; actual = (int)allocs2.Items[0].Quantity; Assert.IsTrue(actual >= expected, $"Error: Allocation quantity {actual} was returned when {expected} was expected"); // Check that the product table has been updated // Product.QuantityOnHand is for all locations whereas Allocation and ProductLocation // are for individual locations so the quantity in Product will always be higher than // the latter two. testProd1 = ProductService.FindProductModel(podList.Items[0].ProductId.Value, null, null, false); expected = (int)podList.Items[0].OrderQty; actual = (int)testProd1.QuantityOnHand.Value; Assert.IsTrue(actual >= expected, $"Error: Product quantity {actual} was returned when {expected} was expected"); testProd2 = ProductService.FindProductModel(podList.Items[1].ProductId.Value, null, null, false); expected = (int)podList.Items[1].OrderQty; actual = (int)testProd2.QuantityOnHand.Value; Assert.IsTrue(actual >= expected, $"Error: Product quantity {actual} was returned when {expected} was expected"); // Check that the ProductLocation table has been updated var prodLoc = ProductService.FindProductLocationModel(testCompany, testProd1, poh.LocationId.Value); expected = (int)podList.Items[0].OrderQty; actual = (int)prodLoc.QuantityOnHand; Assert.IsTrue(actual == expected, $"Error: ProductLocation quantity {actual} was returned when {expected} was expected"); prodLoc = ProductService.FindProductLocationModel(testCompany, testProd2, poh.LocationId.Value); expected = (int)podList.Items[1].OrderQty; actual = (int)prodLoc.QuantityOnHand; Assert.IsTrue(actual == expected, $"Error: ProductLocation quantity {actual} was returned when {expected} was expected"); }