|
- donations_from_receipts <- function(
- receipts,
- addresses_out = NULL,
- receipt_type_code = c("IND", "CPCM", "GEN", "PPTY", "OUTS", "NFPC"),
- exclude_org_name = c("AGGREGATED INDIVIDUAL CONTRIBUTION", "VARIOUS VARIOUS")
- ) {
- if (is.character(receipts)) {
- receipts <- prep_open_dataset_db(receipts)
- }
-
- if (!is.null(addresses_out) && is.character(addresses_out)) {
- addresses <- out_open_dataset_db(addresses_out)
- }
-
- ret <-
- receipts |>
- filter(
- # Keep individual/party donors; drop record keeping things, like refunds
- receipt_type_code %in% !!receipt_type_code,
- !toupper(org_name) %in% !!exclude_org_name
- ) |>
- rename(donor_name = org_name) |>
- # address lookup is the key for matching with the resolved addresses db
- add_address_lookup(name = "donor_address_raw") |>
- select(
- sboe_id,
- report_id,
- donor_name,
- donor_address_raw,
- amount,
- profession,
- employers_name,
- form_of_payment_desc,
- everything()
- )
-
- if (is.null(addresses_out)) return(ret)
-
- ret |>
- left_join(
- addresses |> select(1:2),
- by = join_by(donor_address_raw == address_lookup)
- ) |>
- rename(donor_address = address_resolved) |>
- relocate(donor_address, .after = donor_name) |>
- mutate(donor_address = coalesce(donor_address, !!fixup_po_box_query(donor_address_raw)))
- }
-
- count_receipt_types <- function(receipts) {
- # # A tibble: 13 × 3
- # receipt_type_code receipt_type_desc n
- # <chr> <chr> <dbl>
- # 1 IND Individual Contribution 7425756
- # 2 CPCM Other Political Committee Contribution 78354
- # 3 GEN General Contribution 65692
- # 4 PPTY Party Contribution 27623
- # 5 OUTS Outside Source 16415
- # 6 INT Interest Earned 10308
- # 7 RFND Refund/Reimbursement to the Committee 7353
- # 8 CNRE Contribution to be Reimbursed 3057
- # 9 EPPS Exempt Party Price Sale 685
- # 10 NFPC Not for Profit Contribution 628
- # 11 DON Donation 28
- # 12 DEBT Debt Payment 4
- # 13 GNS Goods and Services 1
- #
- receipts |>
- count(receipt_type_code, receipt_type_desc, sort = TRUE)
- }
|