2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-17 12:35:46 +00:00

Merge branch 'master' of https://github.com/inventree/InvenTree into part-import

This commit is contained in:
2021-06-02 00:36:15 +02:00
143 changed files with 53382 additions and 16913 deletions

View File

@ -50,6 +50,15 @@
supplier: 3
status: 40 # Cancelled
# for pricebreaks
- model: order.purchaseorder
pk: 7
fields:
reference: '0007'
description: 'Another PO'
supplier: 2
status: 10 # Pending
# Add some line items against PO 0001
# 100 x ACME0001 (M2x4 LPHS)

View File

@ -60,18 +60,18 @@ class PurchaseOrderTest(OrderTest):
def test_po_list(self):
# List *ALL* PO items
self.filter({}, 6)
self.filter({}, 7)
# Filter by supplier
self.filter({'supplier': 1}, 1)
self.filter({'supplier': 3}, 5)
# Filter by "outstanding"
self.filter({'outstanding': True}, 4)
self.filter({'outstanding': True}, 5)
self.filter({'outstanding': False}, 2)
# Filter by "status"
self.filter({'status': 10}, 2)
self.filter({'status': 10}, 3)
self.filter({'status': 40}, 1)
def test_overdue(self):
@ -80,14 +80,14 @@ class PurchaseOrderTest(OrderTest):
"""
self.filter({'overdue': True}, 0)
self.filter({'overdue': False}, 6)
self.filter({'overdue': False}, 7)
order = PurchaseOrder.objects.get(pk=1)
order.target_date = datetime.now().date() - timedelta(days=10)
order.save()
self.filter({'overdue': True}, 1)
self.filter({'overdue': False}, 5)
self.filter({'overdue': False}, 6)
def test_po_detail(self):

View File

@ -21,6 +21,7 @@ class OrderTest(TestCase):
fixtures = [
'company',
'supplier_part',
'price_breaks',
'category',
'part',
'location',
@ -63,7 +64,7 @@ class OrderTest(TestCase):
next_ref = PurchaseOrder.getNextOrderNumber()
self.assertEqual(next_ref, '0007')
self.assertEqual(next_ref, '0008')
def test_on_order(self):
""" There should be 3 separate items on order for the M2x4 LPHS part """
@ -117,6 +118,39 @@ class OrderTest(TestCase):
with self.assertRaises(django_exceptions.ValidationError):
order.add_line_item(sku, 99)
def test_pricing(self):
""" Test functions for adding line items to an order including price-breaks """
order = PurchaseOrder.objects.get(pk=7)
self.assertEqual(order.status, PurchaseOrderStatus.PENDING)
self.assertEqual(order.lines.count(), 0)
sku = SupplierPart.objects.get(SKU='ZERGM312')
part = sku.part
# Order the part
self.assertEqual(part.on_order, 0)
# Order 25 with manually set high value
pp = sku.get_price(25)
order.add_line_item(sku, 25, purchase_price=pp)
self.assertEqual(part.on_order, 25)
self.assertEqual(order.lines.count(), 1)
self.assertEqual(order.lines.first().purchase_price.amount, 200)
# Add a few, now the pricebreak should adjust although wrong price given
order.add_line_item(sku, 10, purchase_price=sku.get_price(25))
self.assertEqual(part.on_order, 35)
self.assertEqual(order.lines.count(), 1)
self.assertEqual(order.lines.first().purchase_price.amount, 8)
# Order the same part again (it should be merged)
order.add_line_item(sku, 100, purchase_price=sku.get_price(100))
self.assertEqual(order.lines.count(), 1)
self.assertEqual(part.on_order, 135)
self.assertEqual(order.lines.first().purchase_price.amount, 1.25)
def test_receive(self):
""" Test order receiving functions """