Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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");
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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");
        }