Skip to content

Commit bcb8e13

Browse files
committed
Updated to_json mixin to filter out properties that have a value of None. Fixed issues on JournalEntry.
1 parent 3fa0d9e commit bcb8e13

File tree

7 files changed

+31
-14
lines changed

7 files changed

+31
-14
lines changed

quickbooks/client.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ def make_request(self, request_type, url, request_body=None, content_type='appli
153153
'Content-Type': content_type,
154154
'Accept': 'application/json'
155155
}
156+
156157
req = self.session.request(request_type, url, True, self.company_id, headers=headers, data=request_body)
157158

158159
try:

quickbooks/mixins.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,13 @@
44

55
class ToJsonMixin(object):
66
def to_json(self):
7-
return json.dumps(self, default=lambda obj: {k: v for k, v in obj.__dict__.items() if not k.startswith('_')},
8-
sort_keys=True, indent=4)
7+
return json.dumps(self, default=self.json_filter(), sort_keys=True, indent=4)
8+
9+
def json_filter(self):
10+
# filter out properties that have names starting with _ or properties that have a value of None
11+
return lambda obj: {k: v for k, v in obj.__dict__.items()
12+
if not k.startswith('_') and getattr(obj, k) is not None}
13+
914

1015
class FromJsonMixin(object):
1116
class_dict = {}

quickbooks/objects/base.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class QuickbooksTransactionEntity(QuickbooksBaseObject):
1313
def __init__(self):
1414
self.Id = None
1515
self.SyncToken = 0
16-
self.sparse = "false"
16+
self.sparse = False
1717
self.domain = "QBO"
1818
self.TxnDate = ""
1919

@@ -43,7 +43,7 @@ def to_linked_txn(self):
4343

4444
class Address(ToJsonMixin, FromJsonMixin):
4545
def __init__(self):
46-
self.Id = 0
46+
self.Id = None
4747
self.Line1 = ""
4848
self.Line2 = ""
4949
self.City = ""

quickbooks/objects/detailline.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class DetailLine(QuickbooksBaseObject):
99

1010
def __init__(self):
1111
super(DetailLine, self).__init__()
12-
self.Id = 0
12+
self.Id = None
1313
self.LineNum = 0
1414
self.Description = ""
1515
self.Amount = 0

quickbooks/objects/journalentry.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,34 @@
44
from detailline import DetailLine
55

66

7+
class Entity(QuickbooksBaseObject):
8+
class_dict = {
9+
"EntityRef": Ref
10+
}
11+
12+
def __init__(self):
13+
super(Entity, self).__init__()
14+
self.Type = ""
15+
self.EntityRef = None
16+
17+
718
class JournalEntryLineDetail(QuickbooksBaseObject):
819
class_dict = {
9-
"Entity": Ref
20+
"Entity": Entity,
21+
"AccountRef": Ref,
22+
"ClassRef": Ref,
23+
"DepartmentRef": Ref,
24+
"TaxCodeRef": Ref,
1025
}
1126

1227
def __init__(self):
1328
super(JournalEntryLineDetail, self).__init__()
1429
self.PostingType = ""
15-
self.TaxApplicableOn = ""
16-
self.Type = ""
30+
self.TaxApplicableOn = "Sales"
1731
self.TaxAmount = 0
1832
self.BillableStatus = ""
1933

2034
self.Entity = None
21-
self.EntityRef = None
2235
self.AccountRef = None
2336
self.ClassRef = None
2437
self.DepartmentRef = None
@@ -82,7 +95,7 @@ def __init__(self):
8295
super(JournalEntry, self).__init__()
8396
self.Adjustment = False
8497
self.TxnDate = ""
85-
self.TxnSource = ""
98+
#self.TxnSource = ""
8699
self.DocNumber = ""
87100
self.PrivateNote = ""
88101
self.TotalAmt = 0

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from setuptools import setup, find_packages
22

33

4-
VERSION = (0, 2, 4)
4+
VERSION = (0, 2, 5)
55
version = '.'.join(map(str, VERSION))
66

77
setup(

tests/unit/objects/test_journalentry.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,10 @@ def test_init(self):
2424
journalentry = JournalEntryLineDetail()
2525

2626
self.assertEquals(journalentry.PostingType, "")
27-
self.assertEquals(journalentry.TaxApplicableOn, "")
28-
self.assertEquals(journalentry.Type, "")
27+
self.assertEquals(journalentry.TaxApplicableOn, "Sales")
2928
self.assertEquals(journalentry.TaxAmount, 0)
3029
self.assertEquals(journalentry.BillableStatus, "")
3130
self.assertEquals(journalentry.Entity, None)
32-
self.assertEquals(journalentry.EntityRef, None)
3331
self.assertEquals(journalentry.AccountRef, None)
3432
self.assertEquals(journalentry.ClassRef, None)
3533
self.assertEquals(journalentry.DepartmentRef, None)

0 commit comments

Comments
 (0)