Files @ 13c316acf6e1
Branch filter:

Location: NPO-Accounting/import2ledger/import2ledger/importers/brightfunds.py

Brett Smith
tests: More tests for positive results for last commit.
from . import _xls
from .. import strparse

class DonorReportImporter(_xls.XLSImporterBase):
    BOOK_KWARGS = {'encoding_override': 'utf-8'}
    ENTRY_SEED = {'currency': 'USD'}
    NEEDED_FIELDS = frozenset(['Created', 'Amount'])
    COPIED_FIELDS = {
        'Company Name': 'company_name',
        'Donor Name': 'donor_name',
        'Donor Email': 'donor_email',
        'On Behalf Of': 'on_behalf_of',
        'Designation': 'designation',
        'Fund': 'fund',
        'Type': 'type',
    }

    def _cell_is_blank(self, value):
        return value == '-' or not value

    def _read_row(self, row):
        if any(self._cell_is_blank(row[key]) for key in self.NEEDED_FIELDS):
            return None
        names = [row[key] for key in ['Company Name', 'Donor Name', 'On Behalf Of']
                 if not self._cell_is_blank(row[key])]
        try:
            corporation, payee, *_ = names
        except ValueError:
            corporation = names[0]
            payee = corporation
        entry_data = {
            'amount': '{:.2f}'.format(row['Amount']),
            'corporation': corporation,
            'date': strparse.date(row['Created'], '%m/%d/%Y'),
            'payee': payee,
        }
        entry_data.update((entry_key, '')
                          for row_key, entry_key in self.COPIED_FIELDS.items()
                          if self._cell_is_blank(row[row_key]))
        return entry_data