diff --git a/InvenTree/part/fixtures/part_pricebreaks.yaml b/InvenTree/part/fixtures/part_pricebreaks.yaml index 06e2a7f1ee..0fd14c84df 100644 --- a/InvenTree/part/fixtures/part_pricebreaks.yaml +++ b/InvenTree/part/fixtures/part_pricebreaks.yaml @@ -15,3 +15,37 @@ part: 3 quantity: 10 price: 0.10 + + +# Internal price breaks for parts + +# Internal Price breaks for R_2K2_0805 + +- model: part.partinternalpricebreak + pk: 1 + fields: + part: 3 + quantity: 1 + price: 0.08 + +- model: part.partinternalpricebreak + pk: 2 + fields: + part: 3 + quantity: 10 + price: 0.05 + +# Internal Price breaks for C_22N_0805 +- model: part.partinternalpricebreak + pk: 3 + fields: + part: 5 + quantity: 1 + price: 1 + +- model: part.partinternalpricebreak + pk: 4 + fields: + part: 5 + quantity: 24 + price: 0.5 diff --git a/InvenTree/part/test_bom_item.py b/InvenTree/part/test_bom_item.py index 7e553be73a..66897b28fc 100644 --- a/InvenTree/part/test_bom_item.py +++ b/InvenTree/part/test_bom_item.py @@ -1,5 +1,6 @@ from django.test import TestCase import django.core.exceptions as django_exceptions +from decimal import Decimal from .models import Part, BomItem @@ -11,11 +12,16 @@ class BomItemTest(TestCase): 'part', 'location', 'bom', + 'company', + 'supplier_part', + 'part_pricebreaks', + 'price_breaks', ] def setUp(self): self.bob = Part.objects.get(id=100) self.orphan = Part.objects.get(name='Orphan') + self.r1 = Part.objects.get(name='R_2K2_0805') def test_str(self): b = BomItem.objects.get(id=1) @@ -111,3 +117,10 @@ class BomItemTest(TestCase): item.validate_hash() self.assertNotEqual(h1, h2) + + def test_pricing(self): + self.bob.get_price(1) + self.assertEqual(self.bob.get_bom_price_range(1, internal=True), (Decimal(84.5), Decimal(89.5))) + # remove internal price for R_2K2_0805 + self.r1.internal_price_breaks.delete() + self.assertEqual(self.bob.get_bom_price_range(1, internal=True), (Decimal(82.5), Decimal(87.5))) diff --git a/InvenTree/part/test_part.py b/InvenTree/part/test_part.py index 388ea00faf..d26f610d05 100644 --- a/InvenTree/part/test_part.py +++ b/InvenTree/part/test_part.py @@ -122,6 +122,14 @@ class PartTest(TestCase): self.assertEqual(float(self.r1.get_price(1)), 0.15) self.assertEqual(float(self.r1.get_price(10)), 1.0) + def test_internal_pricing(self): + # check that the sell pricebreaks were loaded + self.assertTrue(self.r1.has_internal_price_breaks) + self.assertEqual(self.r1.internal_price_breaks.count(), 2) + # check that the sell pricebreaks work + self.assertEqual(float(self.r1.get_internal_price(1)), 0.08) + self.assertEqual(float(self.r1.get_internal_price(10)), 0.5) + class TestTemplateTest(TestCase): fixtures = [