#!/usr/bin/perl # # Script for handling expense requests # Copyright (C) Free Software Foundation Europe e.V. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see use CGI; use POSIX qw(strftime); # ----------------------------------------------------------------------------- # List of full names # ----------------------------------------------------------------------------- my %names = ( "albers" => "Erik Albers", "gerloff" => "Karsten Gerloff", "gollowitzer" => "Martin Gollowitzer", "harmuth" => "Stefan Harmuth", "kersten" => "Rainer Kersten", "kirschner" => "Matthias Kirschner", "kekalainen" => "Otto Kekäläinen", "morris" => "Anna Morris", "mueller" => "Reinhard Müller", "roy" => "Hugo Roy", "sandklef" => "Henrik Sandklef", "suklje" => "Matija Šuklje", "tuke" => "Sam Tuke", ); # ----------------------------------------------------------------------------- # List of people responsible for the projects # ----------------------------------------------------------------------------- my %responsible = ( "ADMIN-PERSONELL" => "gerloff", "ADMIN-OFFICE" => "gerloff", "ADMIN-TRAVEL" => "gerloff", "ADMIN-COORDINATION" => "gerloff", "ADMIN-GA" => "gerloff", "ADMIN-TECH" => "gerloff", "ADMIN-FUNDRAISING" => "gerloff", "PA-PERSONELL" => "kirschner", "PA-OFFICE" => "kirschner", "PA-TRAVEL" => "kirschner", "PA-MATERIAL" => "kirschner", "PA-CAMPAIGNS" => "kirschner", "FELLOWSHIP-PERSONELL" => "kirschner", "FELLOWSHIP-MATERIAL" => "kirschner", "FELLOWSHIP-CONF" => "kirschner", "FELLOWSHIP-LOCAL" => "kirschner", "LEGAL-PERSONELL" => "suklje", "LEGAL-OFFICE" => "suklje", "LEGAL-TRAVEL" => "suklje", "LEGAL-CONF" => "suklje", "LEGAL-COMPLIANCE" => "suklje", "POLICY-PERSONELL" => "gerloff", "POLICY-OFFICE" => "gerloff", "POLICY-TRAVEL" => "gerloff", "MERCHANDISE-PURCHASE" => "gerloff", "MERCHANDISE-SHIPPING" => "gerloff", ); my %account = ( "ADMIN-PERSONELL" => "2501", "ADMIN-OFFICE" => "2502", "ADMIN-TRAVEL" => "2503", "ADMIN-COORDINATION" => "2504", "ADMIN-GA" => "2505", "ADMIN-TECH" => "2506", "ADMIN-FUNDRAISING" => "2507", "PA-PERSONELL" => "2511", "PA-OFFICE" => "2512", "PA-TRAVEL" => "2513", "PA-MATERIAL" => "2514", "PA-CAMPAIGNS" => "2515", "FELLOWSHIP-PERSONELL" => "2521", "FELLOWSHIP-MATERIAL" => "2524", "FELLOWSHIP-CONF" => "2525", "FELLOWSHIP-LOCAL" => "2526", "LEGAL-PERSONELL" => "2531", "LEGAL-OFFICE" => "2532", "LEGAL-TRAVEL" => "2533", "LEGAL-CONF" => "2535", "LEGAL-COMPLIANCE" => "2536", "POLICY-PERSONELL" => "2541", "POLICY-OFFICE" => "2542", "POLICY-TRAVEL" => "2543", "MERCHANDISE-PURCHASE" => "8154", "MERCHANDISE-SHIPPING" => "8159", ); # ----------------------------------------------------------------------------- # Get parameters # ----------------------------------------------------------------------------- my $query = new CGI; my $who = $query->param("who"); my $what = $query->param("what"); my $when = $query->param("when"); my $why = $query->param("why"); my $estimate = $query->param("estimate"); my $budget1 = $query->param("budget1"); my $percent1 = $query->param("percent1"); my $budget2 = $query->param("budget2"); my $percent2 = $query->param("percent2"); my $refund = $query->param("refund"); my $date = strftime "%Y-%m-%d", localtime; my $time = strftime "%s", localtime; my $account1 = $account{$budget1}; my $account2 = ""; if ($budget2 ne "NONE") { $account2 = $account{$budget2}; } my $reference = "er.$date." . substr $time, -3; $reference .= ".$account1"; if ($budget2 ne "NONE") { $reference .= "+$account2"; } my $to1 = $responsible{$budget1}; my $to2 = ""; if ($budget2 ne "NONE") { $to2 = $responsible{$budget2}; } my $subject = "Expense Request $reference ($budget1"; if ($budget2 ne "NONE") { $subject .= "+$budget2"; } $subject .= ")"; # ----------------------------------------------------------------------------- # Generate mail to responsible person # ----------------------------------------------------------------------------- my $boundary = "NextPart$reference"; my $replyto = "finance\@fsfeurope.org, $who\@fsfeurope.org, $to1\@fsfeurope.org"; if ($budget2 ne "NONE") { $replyto .= ", $to2\@fsfeurope.org"; } $replyto .= ", council\@fsfeurope.org"; open(MAIL, "|/usr/lib/sendmail -t -f $who\@fsfeurope.org"); print MAIL "From: $who\@fsfeurope.org\n"; print MAIL "Reply-To: $replyto\n"; print MAIL "Mail-Followup-To: $replyto\n"; if ($budget2 ne "NONE") { print MAIL "To: $to1\@fsfeurope.org, $to2\@fsfeurope.org\n"; } else { print MAIL "To: $to1\@fsfeurope.org\n"; } print MAIL "CC: $who\@fsfeurope.org\n"; print MAIL "Subject: $subject\n"; print MAIL "Mime-Version: 1.0\n"; print MAIL "Content-Type: multipart/mixed; boundary=$boundary\n"; print MAIL "Content-Transfer-Encoding: 8bit\n\n\n"; print MAIL "--$boundary\n"; print MAIL "Content-Type: text/plain; charset=utf-8\n"; print MAIL "Content-Transfer-Encoding: 8bit\n\n"; print MAIL "This expense request was sent via web interface\n\n"; print MAIL "--$boundary\n"; print MAIL "Content-Type: text/plain; charset=utf-8\n"; print MAIL "Content-Disposition: attachment; filename=$reference.txt\n"; print MAIL "Content-Description: Expense Request\n"; print MAIL "Content-Transfer-Encoding: 8bit\n\n"; print MAIL "WHO: $names{$who}\n\n"; print MAIL "WHAT: $what\n\n"; print MAIL "WHEN: $when\n\n"; print MAIL "WHY: $why\n\n"; print MAIL "ESTIMATE: $estimate\n\n"; if ($budget2 ne "NONE") { print MAIL "BUDGET: $budget1 ($account1) $percent1\% $budget2 ($account2) $percent2\%\n\n"; } else { print MAIL "BUDGET: $budget1 ($account1)\n\n"; } print MAIL "REFUND CONTACT: $refund\n\n"; print MAIL "AUTHORISED:\n\n"; print MAIL "BY:\n\n"; print MAIL "--$boundary--\n"; close MAIL; # ----------------------------------------------------------------------------- # Inform user that everything was ok # ----------------------------------------------------------------------------- print "Content-type: text/html\n\n"; print "Your request $reference was sent. Thank you.

"; print "WHO: $names{$who}
\n\n"; print "WHAT: $what
\n\n"; print "WHEN: $when
\n\n"; print "WHY: $why
\n\n"; print "ESTIMATE: $estimate
\n\n"; if ($budget2 ne "NONE") { print "BUDGET: $budget1 $percent1\% $budget2 $percent2\%
\n\n"; } else { print "BUDGET: $budget1
\n\n"; } print "REFUND CONTACT: $refund
\n\n";