From 4d90ab0d88092be4853bfe9fedb07a541619ccec Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 13 Jun 2022 18:21:30 +0200 Subject: [PATCH 1/2] Copy PurchaseOrderExtra... to SalesOrderExtra --- inventree/order.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/inventree/order.py b/inventree/order.py index 36631955..af30e484 100644 --- a/inventree/order.py +++ b/inventree/order.py @@ -101,6 +101,10 @@ def getLineItems(self, **kwargs): """ Return the line items associated with this order """ return SalesOrderLineItem.list(self._api, order=self.pk, **kwargs) + def getExtraLineItems(self, **kwargs): + """ Return the line items associated with this order """ + return SalesOrderExtraLineItem.list(self._api, order=self.pk, **kwargs) + def addLineItem(self, **kwargs): """ Create (and return) new SalesOrderLineItem object against this SalesOrder @@ -110,6 +114,15 @@ def addLineItem(self, **kwargs): return SalesOrderLineItem.create(self._api, data=kwargs) + def addExtraLineItem(self, **kwargs): + """ + Create (and return) new SalesOrderExtraLineItem object against this SalesOrder + """ + + kwargs['order'] = self.pk + + return SalesOrderExtraLineItem.create(self._api, data=kwargs) + def getAttachments(self): return SalesOrderAttachment.list(self._api, order=self.pk) @@ -140,6 +153,18 @@ def getOrder(self): return SalesOrder(self._api, self.order) +class SalesOrderExtraLineItem(inventree.base.InventreeObject): + """ Class representing the SalesOrderExtraLineItem database model """ + + URL = 'order/so-extra-line' + + def getOrder(self): + """ + Return the SalesOrder to which this SalesOrderLineItem belongs + """ + return SalesOrder(self._api, self.order) + + class SalesOrderAttachment(inventree.base.Attachment): """Class representing a file attachment for a SalesOrder""" From b17d42bddac27976331642716958ac0564baf9cb Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 13 Jun 2022 18:21:45 +0200 Subject: [PATCH 2/2] Add some tests for SO extra line items --- test/test_order.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/test/test_order.py b/test/test_order.py index cb5fff04..5f2afd68 100644 --- a/test/test_order.py +++ b/test/test_order.py @@ -293,6 +293,25 @@ def test_so_create(self): self.assertEqual(len(sales_order.getLineItems()), idx + 1) + # Should not be any extra-line-items yet! + self.assertEqual(len(sales_order.getExtraLineItems()), 0) + + # Let's add some! + extraline = sales_order.addExtraLineItem(quantity=1, reference="Transport costs", notes="Extra line item added from Python interface", price=10, price_currency="EUR") + + self.assertIsNotNone(extraline) + + self.assertEqual(extraline.getOrder().pk, sales_order.pk) + + # Assert that a new line item has been created + self.assertEqual(len(sales_order.getExtraLineItems()), 1) + + # Assert that we can delete the item again + extraline.delete() + + # Now there should be 0 lines left + self.assertEqual(len(sales_order.getExtraLineItems()), 0) + def test_so_attachment(self): """ Test upload of attachment against a SalesOrder