Exemplo n.º 1
0
        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}");
        }
Exemplo n.º 2
0
        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");
        }
Exemplo n.º 3
0
        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");
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 12
0
        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}");
        }
Exemplo n.º 13
0
        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");
        }