@@ -119,21 +119,66 @@ def send(self, qb=None, send_to=None):
119119
120120
121121class VoidMixin (object ):
122+
123+ def get_void_params (self ):
124+ qb_object_params_map = {
125+ "Payment" : {
126+ "operation" : "update" ,
127+ "include" : "void"
128+ },
129+ "SalesReceipt" : {
130+ "operation" : "update" ,
131+ "include" : "void"
132+ },
133+ "BillPayment" : {
134+ "operation" : "update" ,
135+ "include" : "void"
136+ },
137+ "Invoice" : {
138+ "operation" : "void" ,
139+ },
140+ }
141+ # setting the default operation to void (the original behavior)
142+ return qb_object_params_map .get (self .qbo_object_name , {"operation" : "void" })
143+
144+ def get_void_data (self ):
145+ qb_object_params_map = {
146+ "Payment" : {
147+ "Id" : self .Id ,
148+ "SyncToken" : self .SyncToken ,
149+ "sparse" : True
150+ },
151+ "SalesReceipt" : {
152+ "Id" : self .Id ,
153+ "SyncToken" : self .SyncToken ,
154+ "sparse" : True
155+ },
156+ "BillPayment" : {
157+ "Id" : self .Id ,
158+ "SyncToken" : self .SyncToken ,
159+ "sparse" : True
160+ },
161+ "Invoice" : {
162+ "Id" : self .Id ,
163+ "SyncToken" : self .SyncToken ,
164+ },
165+ }
166+ # setting the default operation to void (the original behavior)
167+ return qb_object_params_map .get (self .qbo_object_name , {"operation" : "void" })
168+
122169 def void (self , qb = None ):
123170 if not qb :
124171 qb = QuickBooks ()
125172
126173 if not self .Id :
127174 raise QuickbooksException ('Cannot void unsaved object' )
128175
129- data = {
130- 'Id' : self .Id ,
131- 'SyncToken' : self .SyncToken ,
132- }
133-
134176 endpoint = self .qbo_object_name .lower ()
135177 url = "{0}/company/{1}/{2}" .format (qb .api_url , qb .company_id , endpoint )
136- results = qb .post (url , json .dumps (data ), params = {'operation' : 'void' })
178+
179+ data = self .get_void_data ()
180+ params = self .get_void_params ()
181+ results = qb .post (url , json .dumps (data ), params = params )
137182
138183 return results
139184
0 commit comments