feat: add basic support to "resolve" a pending product
This commit is contained in:
parent
6b4bc3da10
commit
1ee398e8fb
17 changed files with 780 additions and 69 deletions
|
@ -70,6 +70,75 @@ class TestOrderHandler(DataTestCase):
|
|||
self.assertEqual(handler.item_status_to_variant(enum.ORDER_ITEM_STATUS_EXPIRED), 'warning')
|
||||
self.assertEqual(handler.item_status_to_variant(enum.ORDER_ITEM_STATUS_INACTIVE), 'warning')
|
||||
|
||||
def test_resolve_pending_product(self):
|
||||
model = self.app.model
|
||||
enum = self.app.enum
|
||||
handler = self.make_handler()
|
||||
|
||||
# sample data
|
||||
user = model.User(username='barney')
|
||||
self.session.add(user)
|
||||
pending = model.PendingProduct(description='vinegar', unit_price_reg=5.99,
|
||||
status=enum.PendingProductStatus.PENDING,
|
||||
created_by=user)
|
||||
self.session.add(pending)
|
||||
order = model.Order(order_id=100, customer_name="Fred Flintstone", created_by=user)
|
||||
item = model.OrderItem(pending_product=pending,
|
||||
order_qty=1, order_uom=enum.ORDER_UOM_UNIT,
|
||||
status_code=enum.ORDER_ITEM_STATUS_READY)
|
||||
order.items.append(item)
|
||||
self.session.add(order)
|
||||
self.session.flush()
|
||||
|
||||
info = {
|
||||
'product_id': '07430500132',
|
||||
'scancode': '07430500132',
|
||||
'brand_name': "Bragg's",
|
||||
'description': "Apple Cider Vinegar",
|
||||
'size': "32oz",
|
||||
'weighed': False,
|
||||
'department_id': None,
|
||||
'department_name': None,
|
||||
'special_order': False,
|
||||
'vendor_name': None,
|
||||
'vendor_item_code': None,
|
||||
'case_size': 12,
|
||||
'unit_cost': 2.99,
|
||||
'unit_price_reg': 5.99,
|
||||
}
|
||||
|
||||
# first try fails b/c pending status
|
||||
self.assertEqual(len(item.events), 0)
|
||||
self.assertRaises(ValueError, handler.resolve_pending_product, pending, info, user)
|
||||
|
||||
# resolves okay if ready status
|
||||
pending.status = enum.PendingProductStatus.READY
|
||||
handler.resolve_pending_product(pending, info, user)
|
||||
self.assertEqual(len(item.events), 1)
|
||||
self.assertEqual(item.events[0].type_code, enum.ORDER_ITEM_EVENT_PRODUCT_RESOLVED)
|
||||
self.assertIsNone(item.events[0].note)
|
||||
|
||||
# more sample data
|
||||
pending2 = model.PendingProduct(description='vinegar', unit_price_reg=5.99,
|
||||
status=enum.PendingProductStatus.READY,
|
||||
created_by=user)
|
||||
self.session.add(pending2)
|
||||
order2 = model.Order(order_id=101, customer_name="Wilma Flintstone", created_by=user)
|
||||
item2 = model.OrderItem(pending_product=pending2,
|
||||
order_qty=1, order_uom=enum.ORDER_UOM_UNIT,
|
||||
status_code=enum.ORDER_ITEM_STATUS_READY)
|
||||
order2.items.append(item2)
|
||||
self.session.add(order2)
|
||||
self.session.flush()
|
||||
|
||||
# resolve with extra note
|
||||
handler.resolve_pending_product(pending2, info, user, note='hello world')
|
||||
self.assertEqual(len(item2.events), 2)
|
||||
self.assertEqual(item2.events[0].type_code, enum.ORDER_ITEM_EVENT_PRODUCT_RESOLVED)
|
||||
self.assertIsNone(item2.events[0].note)
|
||||
self.assertEqual(item2.events[1].type_code, enum.ORDER_ITEM_EVENT_NOTE_ADDED)
|
||||
self.assertEqual(item2.events[1].note, "hello world")
|
||||
|
||||
def test_process_placement(self):
|
||||
model = self.app.model
|
||||
enum = self.app.enum
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue