Update Eventbrite importer for new CSV format

This commit is contained in:
Ben Sturmfels 2025-09-30 23:32:14 +10:00
parent 9f8e5d7942
commit 2e87f9eaf0
Signed by: bsturmfels
GPG key ID: 023C05E2C9C068F0
2 changed files with 16 additions and 21 deletions

View file

@ -1,30 +1,28 @@
import decimal import datetime
from . import _csv from . import _csv
from .. import strparse from .. import strparse
class SalesImporter(_csv.CSVImporterBase): class SalesImporter(_csv.CSVImporterBase):
DECIMAL_FIELDS = { DECIMAL_FIELDS = {
'Eventbrite Fees': 'eventbrite_fees', 'Eventbrite service fee': 'service_fee',
'Eventbrite Payment Processing': 'payment_fees', 'Eventbrite payment processing fee': 'payment_processing_fee',
'Fees Paid': 'total_fees', 'Ticket quantity': 'ticket_quantity',
'Quantity': 'quantity', 'Eventbrite tax': 'eventbrite_tax',
'Tax Paid': 'tax', 'Organizer tax': 'organizer_tax',
'Total Paid': 'amount', 'Gross sales': 'amount',
} }
NEEDED_FIELDS = frozenset([ NEEDED_FIELDS = frozenset([
'Order Date', 'Order date',
'Order Type', 'Payment status',
*DECIMAL_FIELDS, *DECIMAL_FIELDS,
]) ])
OPTIONAL_FIELDS = { OPTIONAL_FIELDS = {
'Attendee #': 'attendee_id',
'Company': 'corporation',
'Currency': 'currency', 'Currency': 'currency',
'Event ID': 'event_id', 'Event ID': 'event_id',
'Event Name': 'event_name', 'Event name': 'event_name',
'Order #': 'order_id', 'Order ID': 'order_id',
'Ticket Type': 'ticket_type',
} }
ENTRY_SEED = {'currency': 'USD'} ENTRY_SEED = {'currency': 'USD'}
@ -36,12 +34,9 @@ class SalesImporter(_csv.CSVImporterBase):
self.DECIMAL_FIELDS[key]: strparse.currency_decimal(row[key]) self.DECIMAL_FIELDS[key]: strparse.currency_decimal(row[key])
for key in self.DECIMAL_FIELDS for key in self.DECIMAL_FIELDS
} }
date_s, _, _ = row['Order Date'].partition(' ') retval['date'] = datetime.datetime.fromisoformat(row['Order date']).date()
retval['date'] = strparse.date(date_s, '%Y-%m-%d') retval['payee'] = '{Buyer first name} {Buyer last name}'.format_map(row)
try: retval['total_fees'] = retval['service_fee'] + retval['payment_processing_fee']
retval['payee'] = '{Buyer First Name} {Buyer Last Name}'.format_map(row)
except KeyError:
retval['payee'] = '{First Name} {Last Name}'.format_map(row)
retval.update( retval.update(
(self.OPTIONAL_FIELDS[key], row.get(key, '')) (self.OPTIONAL_FIELDS[key], row.get(key, ''))
for key in self.OPTIONAL_FIELDS for key in self.OPTIONAL_FIELDS

View file

@ -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='1.4.5', version='1.4.6',
author='Brett Smith', author='Brett Smith',
author_email='brettcsmith@brettcsmith.org', author_email='brettcsmith@brettcsmith.org',
license='GNU AGPLv3+', license='GNU AGPLv3+',