You've allocated exactly one char to hold the month value. You need... more - std::string would be appropriate.
After you extract one char from the input file ('M') you try to extract numbers into year and total_collected. However, the input stream looks like: "arch 2013 63924.62" and as you can't stuff "arch" into an int, the input stream is put into an error state which is never cleared (or tested for.)
[Edit: Scratch that. You don't even attempt to extract the month if the file was succesfully opened. You only do so when the file was not. (line 26 is paired with line27.)]
1. Line 26: infile >> month; is only accessed if infile is false. It should be the other way around. Also you may want the input of year and total_collected to also depend on the boolean value for infile.
2. You've made month a char variable so that the code snippet infile >> month; will only store the single character 'M'. To solve this add the directive #include <string> and do string month