def funds_from_gsheet(session, extract_from_detailed_ledger): fund_gsheet = get_gsheet_fields( Fund, { 'name': 'fund', 'restriction': 'type', 'is parish fund': 'parish fund', 'is realised': 'realised', 'account': 'bank account id' }) fund_gsheet['restriction'] = StringField('restriction') fund_gsheet['parish fund'] = StringField('parish fund') fund_gsheet['realised'] = StringField('realised') fund_gsheet['bank account id'] = StringField('bank account id') field_casts = { 'type': conform_fund_restriction, 'parish fund': conform_yes_no, 'realised': conform_yes_no, 'bank account id': AccountQuery(session).instance_finder('reference_no', int) } fund_mapping = Mapping(fund_gsheet, Fund.constructor_parameters, field_casts=field_casts) funds = extract_from_detailed_ledger( 'funds', 'A11', ('fund', 'type', 'parish fund', 'realised', 'bank account id')) load_class(session, funds, fund_mapping, Fund)
def nominal_accounts_from_gsheet(session, extract_from_detailed_ledger): nominal_account_gsheet = get_gsheet_fields( NominalAccount, { 'code': 'Code', 'description': 'Description', 'SOFA heading': 'SOFA heading', 'category': 'Category', 'sub category': 'Sub-category', }) nominal_account_gsheet['SOFA heading'] = StringField('SOFA heading') nominal_account_gsheet['Category'] = StringField('Category') nominal_account_gsheet['Sub-category'] = StringField('Sub-category') field_casts = { 'SOFA heading': conform_sofa_heading, 'Category': conform_category, 'Sub-category': conform_sub_category, } nominal_account_mapping = Mapping(nominal_account_gsheet, NominalAccount.constructor_parameters, field_casts=field_casts) nominal_accounts = extract_from_detailed_ledger( 'RCB Nominal Accounts', 'A1', ('Code', 'Description', 'SOFA heading', 'Category', 'Sub-category')) load_class(session, nominal_accounts, nominal_account_mapping, NominalAccount)
def households_from_gsheet(session, extract_from_parish_list): household_gsheet = get_gsheet_fields( Household, { 'reference no': 'id', 'address1': 'ADDRESS1', 'address2': 'ADDRESS2', 'address3': 'ADDRESS3', 'county': 'County', 'eircode': 'EIRCODE', 'telephone': 'landline', }) household_mapping = Mapping(household_gsheet, Household.constructor_parameters, field_casts={ 'address1': strip_commas_and_spaces, 'address2': strip_commas_and_spaces, 'address3': strip_commas_and_spaces, 'county': strip_commas_and_spaces, 'eircode': strip_commas_and_spaces, }) household_rows = extract_from_parish_list( 'households', 'A1', ('id', 'ADDRESS1', 'ADDRESS2', 'ADDRESS3', 'County', 'EIRCODE', 'landline')) households = list( model_instances(household_rows, household_mapping, Household)) session.add_all(households)
def subjects_from_gsheet(session, extract_from_detailed_ledger): subject_gsheet = get_gsheet_fields(Subject, { 'name': 'subject', }) subject_mapping = Mapping(subject_gsheet, Subject.constructor_parameters) subjects = extract_from_detailed_ledger( 'report lookups', 'A3', ('subject', 'select vestry summary', 'easter vestry summary')) load_class(session, subjects, subject_mapping, Subject)
def accounts_from_gsheet(session, extract_from_detailed_ledger): account_gsheet = get_gsheet_fields(Account, {'reference no': 'id'}) account_gsheet['status'] = StringField('status') account_mapping = Mapping(account_gsheet, Account.constructor_parameters, field_casts=field_casts) accounts = extract_from_detailed_ledger( 'bank accounts', 'A1', ('id', 'purpose', 'status', 'name', 'institution', 'sort code', 'account no', 'BIC', 'IBAN')) load_class(session, accounts, account_mapping, Account)
def statement_item_from_gsheet(session, extract_from_detailed_ledger): statement_item_gsheet = get_gsheet_fields(StatementItem, None) field_casts = { 'account': AccountQuery(session).instance_finder('account_no', None), 'date': cast_dmy_date_from_string, 'debit': strip_commas, 'credit': strip_commas, 'balance': ignore_na, 'designated balance': cast_designated_balance, } statement_item_mapping = Mapping(statement_item_gsheet, StatementItem.constructor_parameters, field_casts=field_casts) statement_items = extract_from_detailed_ledger( 'bank statements', 'A1', ('account', 'date', 'details', 'currency', 'debit', 'credit', 'balance', 'detail override', 'designated balance')) load_class(session, statement_items, statement_item_mapping, StatementItem)