Browse Source

invoice: added attr 'discounts'

Fabian Peter Hammerle 7 years ago
parent
commit
86b053297b
2 changed files with 25 additions and 3 deletions
  1. 14 2
      finoex/__init__.py
  2. 11 1
      tests/test_yaml.py

+ 14 - 2
finoex/__init__.py

@@ -121,8 +121,14 @@ class Invoice(_Object, _YamlInitConstructor, _YamlVarsRepresenter):
 
     yaml_tag = u'!invoice'
 
-    def __init__(self, creditor, invoice_id, invoice_date,
-                 debitor_id, items=None):
+    def __init__(self,
+                 creditor,
+                 debitor_id,
+                 invoice_date,
+                 invoice_id,
+                 discounts=None,
+                 items=None
+                 ):
         assert isinstance(creditor, str)
         self.creditor = creditor
         assert isinstance(invoice_id, str)
@@ -132,6 +138,12 @@ class Invoice(_Object, _YamlInitConstructor, _YamlVarsRepresenter):
         self.invoice_date = invoice_date
         assert isinstance(debitor_id, str)
         self.debitor_id = debitor_id
+        if discounts:
+            assert isinstance(discounts, list)
+            assert all([isinstance(d, Discount) for d in discounts])
+            self.discounts = discounts
+        else:
+            self.discounts = []
         if items:
             assert isinstance(items, list)
             assert all([isinstance(i, Item) for i in items])

+ 11 - 1
tests/test_yaml.py

@@ -201,7 +201,7 @@ def get_order_c():
             )
     return order
 
-def get_invoice(items = True):
+def get_invoice(items = True, discounts = True):
     inv = finoex.Invoice(
             creditor = u'platformπ',
             invoice_id = u'id',
@@ -211,6 +211,8 @@ def get_invoice(items = True):
     if items:
         inv.items.append(get_item_a())
         inv.items.append(get_item_b())
+    if discounts:
+        inv.discounts.append(get_discount_a())
     return inv
 
 def get_distance():
@@ -387,6 +389,10 @@ price_brutto: !sum '1.23 EUR'
     [get_invoice(), u"""!invoice
 creditor: platformπ
 debitor_id: customer
+discounts:
+- !discount
+  amount: !sum '1.23 EUR'
+  name: discount a
 invoice_date: 2016-05-08 00:18:17
 invoice_id: id
 items:
@@ -561,6 +567,10 @@ items:
 - !item
   name: item β
   price_brutto: !sum '20.45 EUR'
+discounts:
+- !discount
+  name: discount a
+  amount: !sum 1.23 EUR
 """],
     ])
 def test_from_yaml(expected_object, source_yaml):