8000 Merge pull request #52 from balanced/reversals · balanced/balanced-python@7d80c77 · GitHub
[go: up one dir, main page]

Skip to content

Commit 7d80c77

Browse files
committed
Merge pull request #52 from balanced/reversals
adding reversals
2 parents fca7072 + 0440d17 commit 7d80c77

File tree

2 files changed

+48
-2
lines changed

2 files changed

+48
-2
lines changed

balanced/resources.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -938,6 +938,23 @@ class Credit(Resource):
938938
__metaclass__ = resource_base(collection='credits',
939939
resides_under_marketplace=False)
940940

941+
def reverse(self, amount=None, description=None, meta=None):
942+
"""
943+
Reverse a Credit. If no amount is specified it will reverse the entire
944+
amount of the Credit, you may create many Reversals up to the sum of the
945+
total of the original Credit amount.
946+
947+
:rtype: Reversal
948+
"""
949+
meta = meta or {}
950+
return Reversal(
951+
uri=self.reversals_uri,
952+
credits_uri=self.uri,
953+
amount=amount,
954+
description=description,
955+
meta=meta,
956+
).save()
957+
941958

942959
class Refund(Resource):
943960
"""
@@ -948,6 +965,14 @@ class Refund(Resource):
948965
"""
949966
__metaclass__ = resource_base(collection='refunds')
950967

968+
class Reversal(Resource):
969+
"""
970+
A Reverse represents a reversal of funds from a Credit. A Credit can have
971+
many Reverses associated with it up to the total amount of the original
972+
Credit. Funds are returned to your Marketplace's Merchant Account
973+
proportional to the amount of the Refund.
974+
"""
975+
__metaclass__ = resource_base(collection='reversals')
951976

952977
class Hold(Resource):
953978
"""

tests/suite.py

Lines changed: 23 additions & 2 deletions
< 8000 td data-grid-cell-id="diff-728e4e226094895fe3ff06292ee04a3dc47e7c866b767f4463224807aa12222b-595-599-1" data-selected="false" role="gridcell" style="background-color:var(--diffBlob-additionNum-bgColor, var(--diffBlob-addition-bgColor-num));text-align:center" tabindex="-1" valign="top" class="focusable-grid-cell diff-line-number position-relative left-side">599
Original file line numberDiff line numberDiff line change
@@ -592,14 +592,35 @@ def test_30_customer_transactions(self):
592592
customer.add_bank_account(bank_account.uri)
593593
customer.destination.credit(amount=100)
594594

595-
def test_31_delete_bank_account(self):
595+
def test_31_reverse(self):
596+
self._create_marketplace()
597+
buyer = self._find_account('buyer')
598+
card = balanced.Marketplace.my_marketplace.create_card(**CARD)
+
buyer.add_card(card.uri)
600+
buyer.debit(100000)
601+
# create bank account where transactions will switched to payed
602+
merchant = balanced.Customer().save()
603+
ba = balanced.BankAccount(
604+
routing_number="021000021",
605+
account_number="9900000002",
606+
name="lolz ftw",
607+
).save()
608+
merchant.add_bank_account(ba)
609+
merchant.save()
610+
credit = merchant.credit(amount=5000)
611+
reverse = credit.reverse()
612+
self.assertEqual(reverse.amount, 5000)
613+
self.assertIn('reversal', reverse.uri)
614+
self.assertIn(credit.id, reverse.credit.uri)
615+
616+
def test_32_delete_bank_account(self):
596617
mp = self._create_marketplace()
597618
customer = balanced.Customer().save()
598619
bank_account = mp.create_bank_account(**BANK_ACCOUNT)
599620
customer.add_bank_account(bank_account)
600621
bank_account.unstore()
601622

602-
def test_32_delete_card(self):
623+
def test_33_delete_card(self):
603624
mp = self._create_marketplace()
604625
customer = balanced.Customer().save()
605626
card = mp.create_card(**CARD)

0 commit comments

Comments
 (0)
0