Skip to content

Commit 93eef51

Browse files
committed
Updated purchase. Moved MarkupInfo to base and updated objects that use it.
1 parent 4325b83 commit 93eef51

File tree

8 files changed

+122
-29
lines changed

8 files changed

+122
-29
lines changed

quickbooks/objects/base.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,4 +125,14 @@ def __unicode__(self):
125125
return self.Value
126126

127127

128+
class MarkupInfo(QuickbooksBaseObject):
129+
class_dict = {
130+
"PriceLevelRef": Ref,
131+
}
128132

133+
def __init__(self):
134+
super(MarkupInfo, self).__init__()
135+
self.PercentBased = False
136+
self.Value = 0
137+
self.Percent = 0
138+
self.PriceLevelRef = None

quickbooks/objects/bill.py

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,8 @@
11
from base import QuickbooksBaseObject, Ref, LinkedTxn, QuickbooksManagedObject, QuickbooksTransactionEntity, \
2-
LinkedTxnMixin
2+
LinkedTxnMixin, MarkupInfo
33
from tax import TxnTaxDetail
44

55

6-
class MarkupInfo(QuickbooksBaseObject):
7-
class_dict = {
8-
"PriceLevelRef": Ref,
9-
}
10-
11-
def __init__(self):
12-
super(MarkupInfo, self).__init__()
13-
self.PercentBased = False
14-
self.Value = 0
15-
self.Percent = 0
16-
self.PriceLevelRef = None
17-
18-
196
class AccountBasedExpenseLineDetail(QuickbooksBaseObject):
207
class_dict = {
218
"CustomerRef": Ref,

quickbooks/objects/creditmemo.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from base import QuickbooksBaseObject, Address, EmailAddress, Ref, CustomField, CustomerMemo, QuickbooksManagedObject, \
2-
LinkedTxnMixin, LinkedTxn
2+
LinkedTxnMixin, LinkedTxn, MarkupInfo
33
from tax import TxnTaxDetail
44

55

@@ -9,16 +9,17 @@ class SalesItemLineDetail(QuickbooksBaseObject):
99
"TaxCodeRef": Ref,
1010
"ClassRef": Ref,
1111
"PriceLevelRef": Ref,
12+
"MarkupInfo": MarkupInfo
1213
}
1314

1415
def __init__(self):
1516
super(SalesItemLineDetail, self).__init__()
1617
self.Qty = 0
1718
self.UnitPrice = 0
18-
self.MarkupInfo = ""
1919
self.ServiceDate = ""
2020
self.TaxInclusiveAmt = 0
2121

22+
self.MarkupInfo = None
2223
self.ItemRef = None
2324
self.TaxCodeRef = None
2425
self.ClassRef = None

quickbooks/objects/detailline.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from base import QuickbooksBaseObject, Ref, CustomField, LinkedTxn
1+
from base import QuickbooksBaseObject, Ref, CustomField, LinkedTxn, MarkupInfo
22

33

44
class DetailLine(QuickbooksBaseObject):
@@ -112,16 +112,22 @@ class SalesItemLineDetail(QuickbooksBaseObject):
112112
"ClassRef": Ref,
113113
"TaxCodeRef": Ref,
114114
"PriceLevelRef": Ref,
115+
"MarkupInfo": MarkupInfo,
115116
}
116117

117118
def __init__(self):
118119
super(SalesItemLineDetail, self).__init__()
119120
self.UnitPrice = 0
120121
self.Qty = 0
121-
self.MarkupInfo = ""
122122
self.ServiceDate = ""
123123
self.TaxInclusiveAmt = 0
124124

125+
self.MarkupInfo = None
126+
self.ItemRef = None
127+
self.ClassRef = None
128+
self.TaxCodeRef = None
129+
self.PriceLevelRef = None
130+
125131
def __unicode__(self):
126132
return str(self.UnitPrice)
127133

quickbooks/objects/paymentmethod.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from base import QuickbooksManagedObject
1+
from base import QuickbooksManagedObject, QuickbooksTransactionEntity
22

33

4-
class PaymentMethod(QuickbooksManagedObject):
4+
class PaymentMethod(QuickbooksManagedObject, QuickbooksTransactionEntity):
55
"""
66
QBO definition: The PaymentMethod entity provides the method of payment for received goods. Delete is achieved by setting the
77
Active attribute to false in an entity update request; thus, making it inactive. In this type of delete,

quickbooks/objects/purchase.py

Lines changed: 69 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
from base import QuickbooksBaseObject, Ref, QuickbooksManagedObject, LinkedTxnMixin
1+
from base import QuickbooksBaseObject, Ref, QuickbooksManagedObject, QuickbooksTransactionEntity, LinkedTxnMixin, \
2+
LinkedTxn, Address, CustomField, MarkupInfo
3+
4+
from tax import TxnTaxDetail
25

36

47
class AccountBasedExpenseLineDetail(QuickbooksBaseObject):
@@ -21,27 +24,63 @@ def __unicode__(self):
2124
return self.BillableStatus
2225

2326

27+
class ItemBasedExpenseLineDetail(QuickbooksBaseObject):
28+
29+
class_dict = {
30+
"ItemRef": Ref,
31+
"ClassRef": Ref,
32+
"PriceLevelRef": Ref,
33+
"TaxCodeRef": Ref,
34+
"CustomerRef": Ref,
35+
"MarkupInfo": MarkupInfo
36+
}
37+
38+
def __init__(self):
39+
40+
self.UnitPrice = 0
41+
self.Qty = 0
42+
self.BillableStatus = ""
43+
self.TaxInclusiveAmt = 0
44+
45+
self.ItemRef = None
46+
self.ClassRef = None
47+
self.PriceLevelRef = None
48+
self.TaxCodeRef = None
49+
self.CustomerRef = None
50+
self.MarkupInfo = None
51+
52+
2453
class PurchaseLine(QuickbooksBaseObject):
2554
class_dict = {
2655
"AccountBasedExpenseLineDetail": Ref,
56+
"ItemBasedExpenseLineDetail": ItemBasedExpenseLineDetail,
2757
}
2858

29-
list_dict = {}
59+
list_dict = {
60+
"LinkedTxn": LinkedTxn,
61+
"CustomField": CustomField,
62+
}
3063

3164
def __init__(self):
3265
super(PurchaseLine, self).__init__()
66+
self.Id = 0
67+
self.LineNum = 0
68+
self.Description = ""
3369
self.Amount = 0
34-
self.DetailType = ""
70+
self.DetailType = "ItemBasedExpenseLineDetail"
3571

3672
self.TaxCodeRef = None
3773
self.AccountRef = None
74+
self.ItemBasedExpenseLineDetail = None
75+
76+
self.LinkedTxn = []
3877
self.AccountBasedExpenseLineDetail = []
3978

4079
def __unicode__(self):
4180
return str(self.Amount)
4281

4382

44-
class Purchase(QuickbooksManagedObject, LinkedTxnMixin):
83+
class Purchase(QuickbooksManagedObject, QuickbooksTransactionEntity, LinkedTxnMixin):
4584
"""
4685
QBO definition: This entity represents expenses, such as a purchase made from a vendor.
4786
There are three types of Purchases: Cash, Check, and Credit Card.
@@ -59,20 +98,44 @@ class Purchase(QuickbooksManagedObject, LinkedTxnMixin):
5998
class_dict = {
6099
"AccountRef": Ref,
61100
"EntityRef": Ref,
101+
"DepartmentRef": Ref,
102+
"CurrencyRef": Ref,
103+
"PaymentMethodRef": Ref,
104+
"RemitToAddr": Address,
105+
"TxnTaxDetail": TxnTaxDetail
62106
}
63107

64108
list_dict = {
65-
"Line": PurchaseLine
109+
"Line": PurchaseLine,
110+
"LinkedTxn": LinkedTxn,
66111
}
67112

68113
qbo_object_name = "Purchase"
69114

70115
def __init__(self):
71116
super(Purchase, self).__init__()
117+
self.DocNumber = ""
118+
self.TxnDate = ""
119+
self.ExchangeRate = 1
120+
self.PrivateNote = ""
72121
self.PaymentType = ""
73122
self.Credit = False
74123
self.TotalAmt = 0
75-
self.TxnDate = ""
124+
self.PrintStatus = "NeedToPrint"
125+
self.PurchaseEx = ""
126+
self.TxnSource = ""
127+
self.GlobalTaxCalculation = "TaxExcluded"
128+
129+
self.TxnTaxDetail = None
130+
self.DepartmentRef = None
131+
self.AccountRef = None
132+
self.EnitityRef = None
133+
self.CurrencyRef = None
134+
self.PaymentMethodRef = None
135+
self.RemitToAddr = None
136+
137+
self.Line = []
138+
self.LinkedTxn = []
76139

77140
def __unicode__(self):
78141
return str(self.TotalAmt)

tests/unit/objects/test_base.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import unittest
22

3-
from quickbooks.objects.base import CustomerMemo, CustomField, Ref, WebAddress, EmailAddress, PhoneNumber, Address, LinkedTxn, MetaData
4-
3+
from quickbooks.objects.base import CustomerMemo, CustomField, Ref, WebAddress, EmailAddress, PhoneNumber, \
4+
Address, LinkedTxn, MetaData, MarkupInfo
55

66

77
class AddressTests(unittest.TestCase):
@@ -80,3 +80,12 @@ def test_unicode(self):
8080

8181
self.assertEquals(unicode(meta), "Created 1/1/2000")
8282

83+
84+
class MarkupInfoTests(unittest.TestCase):
85+
def test_init(self):
86+
markup = MarkupInfo()
87+
88+
self.assertEquals(markup.PercentBased, False)
89+
self.assertEquals(markup.Value, 0)
90+
self.assertEquals(markup.Percent, 0)
91+
self.assertEquals(markup.PriceLevelRef, None)

tests/unit/objects/test_purchase.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import unittest
22

3-
from quickbooks.objects.purchase import Purchase, PurchaseLine, AccountBasedExpenseLineDetail
3+
from quickbooks.objects.purchase import Purchase, PurchaseLine, AccountBasedExpenseLineDetail, \
4+
ItemBasedExpenseLineDetail
45

56

67
class AccountBasedExpenseLineDetailTests(unittest.TestCase):
@@ -25,3 +26,19 @@ def test_unicode(self):
2526
purchase.TotalAmt = 1000
2627

2728
self.assertEquals(unicode(purchase), "1000")
29+
30+
31+
class ItemBasedExpenseLineDetailTest(unittest.TestCase):
32+
def test_init(self):
33+
item_detail = ItemBasedExpenseLineDetail()
34+
35+
self.assertEquals(item_detail.UnitPrice, 0)
36+
self.assertEquals(item_detail.Qty, 0)
37+
self.assertEquals(item_detail.BillableStatus, "")
38+
self.assertEquals(item_detail.TaxInclusiveAmt, 0)
39+
self.assertEquals(item_detail.ItemRef, None)
40+
self.assertEquals(item_detail.ClassRef, None)
41+
self.assertEquals(item_detail.PriceLevelRef, None)
42+
self.assertEquals(item_detail.TaxCodeRef, None)
43+
self.assertEquals(item_detail.CustomerRef, None)
44+
self.assertEquals(item_detail.MarkupInfo, None)

0 commit comments

Comments
 (0)