Skip to content

Instantly share code, notes, and snippets.

@justdave
Created January 24, 2021 18:01
Show Gist options
  • Save justdave/32acea8ecd8d404f7ec71f3550eb106c to your computer and use it in GitHub Desktop.
Save justdave/32acea8ecd8d404f7ec71f3550eb106c to your computer and use it in GitHub Desktop.
Script to generate separate dues import files for each legacy lodge for LodgeMaster. Download the "myEvent Data" report from Black Pug, and call it via `perl BPmyEvent2duesImport.pl myEventData.csv`
#!/usr/bin/perl
use Text::CSV;
## CONFIGURATION ##
my $max_dues_year = "2021";
## END CONFIGURATION ##
my $file = $::ARGV[0];
if ( !-r "$file") {
die "$file not found.\n";
}
my $csv = Text::CSV->new ( { binary => 1, quote_binary => 1 } )
or die "Cannot use CSV: ".Text::CSV->error_diag ();
open $cfh, "<:encoding(utf8)", $file;
my $r1 = $csv->getline($cfh);
$csv->column_names($r1);
my $basename = "Export_OALM_Dues_2021.csv";
my ($nsname, $amname, $noname, $kiname) = ($basename, $basename, $basename, $basename);
$nsname =~ s/\.csv$/-Shohpe.csv/;
$amname =~ s/\.csv$/-Agaming.csv/;
$noname =~ s/\.csv$/-Noquet.csv/;
$kiname =~ s/\.csv$/-Kishatek.csv/;
open $fhns, ">:encoding(utf8)", "$nsname" or die "$nsname: $!";
open $fham, ">:encoding(utf8)", "$amname" or die "$amname: $!";
open $fhno, ">:encoding(utf8)", "$noname" or die "$noname: $!";
open $fhki, ">:encoding(utf8)", "$kiname" or die "$kiname: $!";
$csv->print($fhns, ["First Name", "Last Name", "BSA ID", "Max Dues Year", "Dues Receipt Number", "Dues Payment Method", "Dues Paid Amount", "Dues Paid Date"]);
print $fhns "\n";
$csv->print($fham, ["First Name", "Last Name", "BSA ID", "Max Dues Year", "Dues Receipt Number", "Dues Payment Method", "Dues Paid Amount", "Dues Paid Date"]);
print $fham "\n";
$csv->print($fhno, ["First Name", "Last Name", "BSA ID", "Max Dues Year", "Dues Receipt Number", "Dues Payment Method", "Dues Paid Amount", "Dues Paid Date"]);
print $fhno "\n";
$csv->print($fhki, ["First Name", "Last Name", "BSA ID", "Max Dues Year", "Dues Receipt Number", "Dues Payment Method", "Dues Paid Amount", "Dues Paid Date"]);
print $fhki "\n";
my ($ns, $am, $no, $ki) = (0,0,0,0);
while ( my $row = $csv->getline_hr( $cfh ) ) {
my ($first_name, $last_name, $bsa_id, $legacy_lodge, $paid_amount, $bookingdate) = (
$row->{'First Name'},
$row->{'Last Name'},
$row->{'BSA Membership Number'},
$row->{'OA Legacy Lodge'},
$row->{'Total Cost'},
$row->{"Booking Date"},
);
#my $bookingdate = str2time($row->{"Booking Date"},'America/Detroit');
my $receiptno = $row->{"Reg Nbr."} || "";
$receiptno = $receiptno ? "MCC-$receiptno" : "MCC";
if ($legacy_lodge eq "Nataepu Shohpe") {
$ns++;
$csv->print($fhns, [ $first_name, $last_name, $bsa_id, $max_dues_year, $receiptno, "Online", $paid_amount, $bookingdate ]);
print $fhns "\n";
}
elsif ($legacy_lodge eq "Agaming Maangogwan ") {
# yes there's a space at the end. That's the way they put it in when they built the "event"
$am++;
$csv->print($fham, [ $first_name, $last_name, $bsa_id, $max_dues_year, $receiptno, "Online", $paid_amount, $bookingdate ]);
print $fham "\n";
}
elsif ($legacy_lodge eq "Noquet") {
$no++;
$csv->print($fhno, [ $first_name, $last_name, $bsa_id, $max_dues_year, $receiptno, "Online", $paid_amount, $bookingdate ]);
print $fhno "\n";
}
elsif ($legacy_lodge eq "Kishahtek") {
$ki++;
$csv->print($fhki, [ $first_name, $last_name, $bsa_id, $max_dues_year, $receiptno, "Online", $paid_amount, $bookingdate ]);
print $fhki "\n";
}
}
close $fhns or die "$nsname: $!";
close $fham or die "$amname: $!";
close $fhno or die "$noname: $!";
close $fhki or die "$kiname: $!";
close $cfh;
print <<EOH;
Nataepu Shohpe: $ns
Agaming Maangogwan: $am
Noquet: $no
Kishahtek: $ki
EOH
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment