From 7ea83b2715da20bf68045628e855d18e4559cf49 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Wed, 19 Feb 2025 19:18:30 -0600 Subject: [PATCH] fix: require store for new orders, if so configured --- src/sideshow/batch/neworder.py | 8 +++++++- tests/batch/test_neworder.py | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/sideshow/batch/neworder.py b/src/sideshow/batch/neworder.py index 28e2627..d12cfaf 100644 --- a/src/sideshow/batch/neworder.py +++ b/src/sideshow/batch/neworder.py @@ -1017,8 +1017,14 @@ class NewOrderBatchHandler(BatchHandler): def why_not_execute(self, batch, **kwargs): """ By default this checks to ensure the batch has a customer with - phone number, and at least one item. + phone number, and at least one item. It also may check to + ensure the store is assigned, if applicable. """ + if not batch.store_id: + order_handler = self.app.get_order_handler() + if order_handler.expose_store_id(): + return "Must assign the store" + if not batch.customer_name: return "Must assign the customer" diff --git a/tests/batch/test_neworder.py b/tests/batch/test_neworder.py index ed2179a..f88b9b6 100644 --- a/tests/batch/test_neworder.py +++ b/tests/batch/test_neworder.py @@ -1114,9 +1114,15 @@ class TestNewOrderBatchHandler(DataTestCase): self.session.add(row) self.session.flush() + # batch is okay to execute.. reason = handler.why_not_execute(batch) self.assertIsNone(reason) + # unless we also require store + self.config.setdefault('sideshow.orders.expose_store_id', 'true') + reason = handler.why_not_execute(batch) + self.assertEqual(reason, "Must assign the store") + def test_make_local_customer(self): model = self.app.model enum = self.app.enum