patreon: New importer for payouts.
This commit is contained in:
parent
e22b2f7c17
commit
0eb014aeeb
5 changed files with 64 additions and 1 deletions
15
README.rst
15
README.rst
|
@ -201,6 +201,21 @@ Patreon
|
||||||
``patreon income ledger entry``
|
``patreon income ledger entry``
|
||||||
Imports one transaction per patron per month. Generated from Patreon's monthly patron report CSVs.
|
Imports one transaction per patron per month. Generated from Patreon's monthly patron report CSVs.
|
||||||
|
|
||||||
|
``patreon payout ledger entry``
|
||||||
|
Imports one transaction per month for that month's payout. Generated from Patreon's payout report CSV.
|
||||||
|
|
||||||
|
This template can use these variables:
|
||||||
|
|
||||||
|
=============== ===========================================================
|
||||||
|
Name Contents
|
||||||
|
=============== ===========================================================
|
||||||
|
pledges_amount A decimal with the amount paid out by Patreon to pledges
|
||||||
|
you've made
|
||||||
|
--------------- -----------------------------------------------------------
|
||||||
|
transfer_amount A decimal with the amount paid out by Patreon to your bank
|
||||||
|
account
|
||||||
|
=============== ===========================================================
|
||||||
|
|
||||||
``patreon cardfees ledger entry``
|
``patreon cardfees ledger entry``
|
||||||
Imports one expense transaction per month for that month's credit card fees. Generated from Patreon's earnings report CSV.
|
Imports one expense transaction per month for that month's credit card fees. Generated from Patreon's earnings report CSV.
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,34 @@ class IncomeImporter(_csv.CSVImporterBase):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class PayoutImporter(_csv.CSVImporterBase):
|
||||||
|
AMOUNT_KEY = 'Total funds deducted from creator balance'
|
||||||
|
PLEDGE_KEY = 'Funds used for pledges to other creators'
|
||||||
|
TRANSFER_KEY = 'Funds transferred to you'
|
||||||
|
NEEDED_FIELDS = frozenset([
|
||||||
|
'Month',
|
||||||
|
TRANSFER_KEY,
|
||||||
|
PLEDGE_KEY,
|
||||||
|
AMOUNT_KEY,
|
||||||
|
])
|
||||||
|
ENTRY_SEED = {
|
||||||
|
'currency': 'USD',
|
||||||
|
'payee': 'Patreon',
|
||||||
|
}
|
||||||
|
|
||||||
|
def _read_row(self, row):
|
||||||
|
amount = strparse.currency_decimal(row[self.AMOUNT_KEY])
|
||||||
|
if not amount:
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
return {
|
||||||
|
'amount': amount,
|
||||||
|
'date': strparse.date(row['Month'], '%Y-%m'),
|
||||||
|
'pledges_amount': strparse.currency_decimal(row[self.PLEDGE_KEY]),
|
||||||
|
'transfer_amount': strparse.currency_decimal(row[self.TRANSFER_KEY]),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class FeeImporterBase(_csv.CSVImporterBase):
|
class FeeImporterBase(_csv.CSVImporterBase):
|
||||||
ENTRY_SEED = {
|
ENTRY_SEED = {
|
||||||
'currency': 'USD',
|
'currency': 'USD',
|
||||||
|
|
2
setup.py
2
setup.py
|
@ -30,7 +30,7 @@ REQUIREMENTS['tests_require'] = [
|
||||||
setup(
|
setup(
|
||||||
name='import2ledger',
|
name='import2ledger',
|
||||||
description="Import different sources of financial data to Ledger",
|
description="Import different sources of financial data to Ledger",
|
||||||
version='0.5',
|
version='0.6',
|
||||||
author='Brett Smith',
|
author='Brett Smith',
|
||||||
author_email='brettcsmith@brettcsmith.org',
|
author_email='brettcsmith@brettcsmith.org',
|
||||||
license='GNU AGPLv3+',
|
license='GNU AGPLv3+',
|
||||||
|
|
4
tests/data/PatreonPayouts.csv
Normal file
4
tests/data/PatreonPayouts.csv
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
Month,Funds transferred to you,Funds used for pledges to other creators,Total funds deducted from creator balance
|
||||||
|
2018-03,$0,$0,$0
|
||||||
|
2018-04,$123.45,$0,$123.45
|
||||||
|
2018-05,"$2,345.67",$0,"$2,345.67"
|
|
|
@ -62,6 +62,22 @@
|
||||||
country_code: CZ
|
country_code: CZ
|
||||||
country_name: Czech Republic
|
country_name: Czech Republic
|
||||||
|
|
||||||
|
- source: PatreonPayouts.csv
|
||||||
|
importer: patreon.PayoutImporter
|
||||||
|
expect:
|
||||||
|
- payee: Patreon
|
||||||
|
date: !!python/object/apply:datetime.date [2018, 4, 1]
|
||||||
|
amount: !!python/object/apply:decimal.Decimal ["123.45"]
|
||||||
|
pledges_amount: !!python/object/apply:decimal.Decimal ["0"]
|
||||||
|
transfer_amount: !!python/object/apply:decimal.Decimal ["123.45"]
|
||||||
|
currency: USD
|
||||||
|
- payee: Patreon
|
||||||
|
date: !!python/object/apply:datetime.date [2018, 5, 1]
|
||||||
|
amount: !!python/object/apply:decimal.Decimal ["2345.67"]
|
||||||
|
pledges_amount: !!python/object/apply:decimal.Decimal ["0"]
|
||||||
|
transfer_amount: !!python/object/apply:decimal.Decimal ["2345.67"]
|
||||||
|
currency: USD
|
||||||
|
|
||||||
- source: StripePayments.csv
|
- source: StripePayments.csv
|
||||||
importer: stripe.PaymentImporter
|
importer: stripe.PaymentImporter
|
||||||
expect:
|
expect:
|
||||||
|
|
Loading…
Reference in a new issue