Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions inventree/order.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)

Expand Down Expand Up @@ -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"""

Expand Down
19 changes: 19 additions & 0 deletions test/test_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down