diff --git a/setra_client/client.py b/setra_client/client.py index 9c887fed4851ed4a0526d13a3c0318e873414b02..74e384a63054191de2cc9b33e98322aac22fdd5e 100644 --- a/setra_client/client.py +++ b/setra_client/client.py @@ -41,6 +41,7 @@ class SetraEndpoints: transaction_url='api/transaction/', voucher_url='api/voucher/', new_batch_url='api/addtrans/', + put_batch_url='api/addtrans/', batch_complete_url='api/batch_complete/', batch_error_url="api/batch_error/", parameters_url="api/parameters/", @@ -50,6 +51,7 @@ class SetraEndpoints: self.transaction_url = transaction_url self.voucher_url = voucher_url self.new_batch_url = new_batch_url + self.put_batch_url = put_batch_url self.batch_complete_url = batch_complete_url self.batch_error_url = batch_error_url self.parameters_url = parameters_url @@ -95,6 +97,9 @@ class SetraEndpoints: def post_new_batch(self): return urllib.parse.urljoin(self.baseurl, self.new_batch_url) + def put_update_batch(self): + return urllib.parse.urljoin(self.baseurl, self.new_batch_url) + def batch_complete(self, batch_id: str): """ URL for Batch endpoint @@ -269,6 +274,25 @@ class SetraClient(object): response.raise_for_status() return response + def put_update_batch(self, batchdata: Batch): + """ + PUT updates an existing batch with vouchers and transactions, + if the batch exists in setra, and has status=created, or validation failed. + Returns 404 if no batch was found, 202 for successful update, or 409 if batch was found, but + did not meet the status criteria mentioned above. + """ + url = self.urls.put_update_batch() + headers = {'Content-Type': 'application/json'} + response = self.put(url, + data=batchdata.json(), + headers=headers, + return_response=True) + if response.status_code in (409, 202): + return 'OK' + else: + response.raise_for_status() + return response + def get_batch_complete(self, batch_id: str): """ GETs complete batch (with vouchers and transactions)