From 2926693630a88bc693e3e799497e5cb08de8b069 Mon Sep 17 00:00:00 2001 From: unsav Date: Wed, 7 Mar 2018 00:51:36 +0300 Subject: [PATCH 1/9] set to obj only valid fields --- quickbooks/mixins.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickbooks/mixins.py b/quickbooks/mixins.py index c4df8cc0..48352915 100644 --- a/quickbooks/mixins.py +++ b/quickbooks/mixins.py @@ -45,7 +45,7 @@ def from_json(cls, json_data): sub_list.append(sub_obj) setattr(obj, key, sub_list) - else: + elif key in vars(obj): setattr(obj, key, json_data[key]) return obj From d8adf3e9f00593d0a6595f2287d7df53e062634d Mon Sep 17 00:00:00 2001 From: unsav Date: Wed, 7 Mar 2018 20:48:15 +0300 Subject: [PATCH 2/9] fixed BillableStatus for ItemBasedExpenseLineDetail --- quickbooks/objects/detailline.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickbooks/objects/detailline.py b/quickbooks/objects/detailline.py index 9f852883..168aeb2b 100644 --- a/quickbooks/objects/detailline.py +++ b/quickbooks/objects/detailline.py @@ -220,7 +220,7 @@ class ItemBasedExpenseLineDetail(QuickbooksBaseObject): def __init__(self): super(ItemBasedExpenseLineDetail, self).__init__() - self.BillableStatus = "" + self.BillableStatus = None self.UnitPrice = 0 self.TaxInclusiveAmt = 0 self.Qty = 0 From 14fbeb3da550151d79657659bf28dfe521fb5169 Mon Sep 17 00:00:00 2001 From: kyle Date: Thu, 15 Mar 2018 10:30:51 -0600 Subject: [PATCH 3/9] add salesitemlinedetail --- quickbooks/objects/salesreceipt.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quickbooks/objects/salesreceipt.py b/quickbooks/objects/salesreceipt.py index 91ff18e8..65dcef69 100644 --- a/quickbooks/objects/salesreceipt.py +++ b/quickbooks/objects/salesreceipt.py @@ -2,7 +2,7 @@ from .base import Ref, CustomField, QuickbooksManagedObject, LinkedTxnMixin, Address, \ EmailAddress, QuickbooksTransactionEntity, LinkedTxn from .tax import TxnTaxDetail -from .detailline import DetailLine +from .detailline import DetailLine, SalesItemLine from ..mixins import QuickbooksPdfDownloadable, DeleteMixin @@ -37,7 +37,7 @@ class SalesReceipt(DeleteMixin, QuickbooksPdfDownloadable, QuickbooksManagedObje } detail_dict = { - + "SalesItemLineDetail": SalesItemLine } qbo_object_name = "SalesReceipt" From 021b162fcf4670027466bb241481130fa1746901 Mon Sep 17 00:00:00 2001 From: Oleg Rudko Date: Sat, 14 Apr 2018 12:41:57 +0300 Subject: [PATCH 4/9] API-2346 add txnDate field to invoice --- quickbooks/objects/invoice.py | 1 + 1 file changed, 1 insertion(+) diff --git a/quickbooks/objects/invoice.py b/quickbooks/objects/invoice.py index da615cdf..59aeb8b3 100644 --- a/quickbooks/objects/invoice.py +++ b/quickbooks/objects/invoice.py @@ -60,6 +60,7 @@ def __init__(self): self.AllowIPNPayment = True self.DocNumber = "" self.PrivateNote = "" + self.TxnDate = "" self.DueDate = "" self.ShipDate = "" self.TrackingNum = "" From 0b1bec745c8bf805b099bb218309d8db4e53bf89 Mon Sep 17 00:00:00 2001 From: Ruslan Avantis Date: Wed, 2 Jul 2025 15:51:19 +0200 Subject: [PATCH 5/9] API-38123 --- quickbooks/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickbooks/client.py b/quickbooks/client.py index b3acf68e..7d021139 100644 --- a/quickbooks/client.py +++ b/quickbooks/client.py @@ -247,7 +247,7 @@ def handle_exceptions(self, results): detail = error["Detail"] code = "" - if "code" in error: + if "code" in error and error["code"] != 'null': code = int(error["code"]) if code >= 10000: From fdbea197d651ae8e9894aef08d8086d303621460 Mon Sep 17 00:00:00 2001 From: Ruslan Avantis Date: Wed, 2 Jul 2025 15:56:12 +0200 Subject: [PATCH 6/9] update --- quickbooks/mixins.py | 2 +- quickbooks/objects/detailline.py | 2 +- quickbooks/objects/invoice.py | 1 - quickbooks/objects/salesreceipt.py | 4 ++-- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/quickbooks/mixins.py b/quickbooks/mixins.py index 48352915..c4df8cc0 100644 --- a/quickbooks/mixins.py +++ b/quickbooks/mixins.py @@ -45,7 +45,7 @@ def from_json(cls, json_data): sub_list.append(sub_obj) setattr(obj, key, sub_list) - elif key in vars(obj): + else: setattr(obj, key, json_data[key]) return obj diff --git a/quickbooks/objects/detailline.py b/quickbooks/objects/detailline.py index 168aeb2b..9f852883 100644 --- a/quickbooks/objects/detailline.py +++ b/quickbooks/objects/detailline.py @@ -220,7 +220,7 @@ class ItemBasedExpenseLineDetail(QuickbooksBaseObject): def __init__(self): super(ItemBasedExpenseLineDetail, self).__init__() - self.BillableStatus = None + self.BillableStatus = "" self.UnitPrice = 0 self.TaxInclusiveAmt = 0 self.Qty = 0 diff --git a/quickbooks/objects/invoice.py b/quickbooks/objects/invoice.py index 59aeb8b3..da615cdf 100644 --- a/quickbooks/objects/invoice.py +++ b/quickbooks/objects/invoice.py @@ -60,7 +60,6 @@ def __init__(self): self.AllowIPNPayment = True self.DocNumber = "" self.PrivateNote = "" - self.TxnDate = "" self.DueDate = "" self.ShipDate = "" self.TrackingNum = "" diff --git a/quickbooks/objects/salesreceipt.py b/quickbooks/objects/salesreceipt.py index 65dcef69..91ff18e8 100644 --- a/quickbooks/objects/salesreceipt.py +++ b/quickbooks/objects/salesreceipt.py @@ -2,7 +2,7 @@ from .base import Ref, CustomField, QuickbooksManagedObject, LinkedTxnMixin, Address, \ EmailAddress, QuickbooksTransactionEntity, LinkedTxn from .tax import TxnTaxDetail -from .detailline import DetailLine, SalesItemLine +from .detailline import DetailLine from ..mixins import QuickbooksPdfDownloadable, DeleteMixin @@ -37,7 +37,7 @@ class SalesReceipt(DeleteMixin, QuickbooksPdfDownloadable, QuickbooksManagedObje } detail_dict = { - "SalesItemLineDetail": SalesItemLine + } qbo_object_name = "SalesReceipt" From 062856eeaa470dcc81773c6c9e6478b92253b04e Mon Sep 17 00:00:00 2001 From: Ruslan Avantis Date: Wed, 2 Jul 2025 15:58:32 +0200 Subject: [PATCH 7/9] Update client.py --- quickbooks/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickbooks/client.py b/quickbooks/client.py index 7d021139..3ac57743 100644 --- a/quickbooks/client.py +++ b/quickbooks/client.py @@ -246,7 +246,7 @@ def handle_exceptions(self, results): if "Detail" in error: detail = error["Detail"] - code = "" + code = 0 if "code" in error and error["code"] != 'null': code = int(error["code"]) From ae0ab9ae49ce42d328fb75099e0d3d9913c08cc3 Mon Sep 17 00:00:00 2001 From: Ruslan Avantis Date: Wed, 2 Jul 2025 16:02:21 +0200 Subject: [PATCH 8/9] Update client.py --- quickbooks/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickbooks/client.py b/quickbooks/client.py index 3ac57743..77eb77cb 100644 --- a/quickbooks/client.py +++ b/quickbooks/client.py @@ -243,7 +243,7 @@ def handle_exceptions(self, results): message = error["Message"] detail = "" - if "Detail" in error: + if "Detail" in error and error["Detail"] != 'null': detail = error["Detail"] code = 0 From 9d8db4ef74bc453207f12fce0dca43ab0f5070e1 Mon Sep 17 00:00:00 2001 From: Ruslan Avantis Date: Fri, 4 Jul 2025 12:22:21 +0200 Subject: [PATCH 9/9] update --- quickbooks/mixins.py | 2 +- quickbooks/objects/detailline.py | 2 +- quickbooks/objects/invoice.py | 1 + quickbooks/objects/salesreceipt.py | 4 ++-- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/quickbooks/mixins.py b/quickbooks/mixins.py index c4df8cc0..48352915 100644 --- a/quickbooks/mixins.py +++ b/quickbooks/mixins.py @@ -45,7 +45,7 @@ def from_json(cls, json_data): sub_list.append(sub_obj) setattr(obj, key, sub_list) - else: + elif key in vars(obj): setattr(obj, key, json_data[key]) return obj diff --git a/quickbooks/objects/detailline.py b/quickbooks/objects/detailline.py index 9f852883..168aeb2b 100644 --- a/quickbooks/objects/detailline.py +++ b/quickbooks/objects/detailline.py @@ -220,7 +220,7 @@ class ItemBasedExpenseLineDetail(QuickbooksBaseObject): def __init__(self): super(ItemBasedExpenseLineDetail, self).__init__() - self.BillableStatus = "" + self.BillableStatus = None self.UnitPrice = 0 self.TaxInclusiveAmt = 0 self.Qty = 0 diff --git a/quickbooks/objects/invoice.py b/quickbooks/objects/invoice.py index da615cdf..59aeb8b3 100644 --- a/quickbooks/objects/invoice.py +++ b/quickbooks/objects/invoice.py @@ -60,6 +60,7 @@ def __init__(self): self.AllowIPNPayment = True self.DocNumber = "" self.PrivateNote = "" + self.TxnDate = "" self.DueDate = "" self.ShipDate = "" self.TrackingNum = "" diff --git a/quickbooks/objects/salesreceipt.py b/quickbooks/objects/salesreceipt.py index 91ff18e8..65dcef69 100644 --- a/quickbooks/objects/salesreceipt.py +++ b/quickbooks/objects/salesreceipt.py @@ -2,7 +2,7 @@ from .base import Ref, CustomField, QuickbooksManagedObject, LinkedTxnMixin, Address, \ EmailAddress, QuickbooksTransactionEntity, LinkedTxn from .tax import TxnTaxDetail -from .detailline import DetailLine +from .detailline import DetailLine, SalesItemLine from ..mixins import QuickbooksPdfDownloadable, DeleteMixin @@ -37,7 +37,7 @@ class SalesReceipt(DeleteMixin, QuickbooksPdfDownloadable, QuickbooksManagedObje } detail_dict = { - + "SalesItemLineDetail": SalesItemLine } qbo_object_name = "SalesReceipt"