2021-08-24 17:43:29 +00:00
#!/usr/bin/perl
use DBI ;
use CGI qw( :cgi ) ;
use feature qw( switch ) ;
no warnings qw( experimental::smartmatch ) ;
##############################################################################
# #
# configuration #
# #
##############################################################################
## project
$ projectname = 'f20 budget' ;
$ script_name = 'f20_budget.pl' ;
$ currency = '€' ;
## server
$ website_url = 'https://www.feraltrade.org' ;
$ feral_logo = "$website_url/budget/feral_pigeon.jpg" ;
## database connection
$ db_conect = "DBI:mysql:feralbudget" ;
$ db_user = "feraltrade" ;
$ db_pass = "********" ;
## possibly unused
# $logo_url="$website_url/budget/logo/";
# $logo_path='/home/feraltrade/htdocs/budget/logo/';
# $arrow="$website_url/im6/arrow.jpg";
# $locations_script_name='./locations.pl';
# $agents_script_name='./agents/agents.pl';
# $locations_image_url="$website_url/locn_image/thumb/";
# $locations_image_path='/home/feraltrade/htdocs/budget/locn_image/thumb/';
##############################################################################
# #
# main CGI loop #
# #
##############################################################################
$ CGI:: DISABLE_UPLOADS = 0 ;
$ CGI:: POST_MAX = '10000000' ;
$ q = new CGI ;
$ action = $ q - > param ( "action" ) ;
$ password = $ q - > param ( 'password' ) ;
$ askpassword = $ q - > param ( 'askpassword' ) ;
$ delete_id = $ q - > param ( "delete_id" ) ;
$ edit_id = $ q - > param ( "edit_id" ) ;
$ budget_id = $ q - > param ( "budget_id" ) ;
$ agent_id = $ q - > param ( "agent_id" ) ;
$ edit_agent_id = $ q - > param ( "edit_agent_id" ) ;
$ new_auto_name = $ q - > param ( 'new_auto_name' ) ;
$ new_auto_name =~ s/\'/\'\'/g ;
$ new_auto_location = $ q - > param ( 'new_auto_location' ) ;
$ new_auto_location =~ s/\'/\'\'/g ;
$ new_auto_remarks = $ q - > param ( 'new_auto_remarks' ) ;
$ new_auto_remarks =~ s/\'/\'\'/g ;
$ new_auto_url = $ q - > param ( 'new_auto_url' ) ;
$ new_auto_url =~ s/\'/\'\'/g ;
$ new_name = $ q - > param ( 'new_name' ) ;
$ new_name =~ s/\'/\'\'/g ;
$ new_codename = $ q - > param ( 'new_codename' ) ;
$ new_codename =~ s/\'/\'\'/g ;
$ new_pseudo = $ q - > param ( 'new_pseudo' ) ;
$ new_pseudo =~ s/\'/\'\'/g ;
$ new_firstname = $ q - > param ( 'new_firstname' ) ;
$ new_firstname =~ s/\'/\'\'/g ;
$ new_lastname = $ q - > param ( 'new_lastname' ) ;
$ new_lastname =~ s/\'/\'\'/g ;
$ new_lastname = $ q - > param ( 'new_lastname' ) ;
$ new_fullname =~ s/\'/\'\'/g ;
$ new_fullname = $ q - > param ( 'new_fullname' ) ;
$ new_agent = $ q - > param ( 'new_agent' ) ;
$ new_location = $ q - > param ( 'new_location' ) ;
$ new_location =~ s/\'/\'\'/g ;
$ new_remarks = $ q - > param ( 'new_remarks' ) ;
$ new_remarks =~ s/\'/\'\'/g ;
$ new_url = $ q - > param ( 'new_url' ) ;
$ new_url =~ s/\'/\'\'/g ;
$ new_amount = $ q - > param ( 'new_amount' ) ;
$ new_amount = sprintf "%.2f" , $ new_amount ; ## 2 decimal places
$ new_url = $ q - > param ( "new_url" ) ;
#$new_url=~ s/http\:\/\///g; # don't remove http://
$ new_item = $ q - > param ( "new_item" ) ;
$ new_item =~ s/\'/\'\'/g ;
$ new_item =~ s/\x92/’/g ;
$ new_labour = $ q - > param ( "new_labour" ) ;
$ new_labour =~ s/\'/\'\'/g ;
$ new_labour =~ s/\x92/’/g ;
$ new_resource = $ q - > param ( "new_resource" ) ;
$ new_resource =~ s/\'/\'\'/g ;
$ new_resource =~ s/\x92/’/g ;
$ new_status = $ q - > param ( "new_status" ) ;
$ new_lstatus = $ q - > param ( "new_lstatus" ) ;
$ new_rstatus = $ q - > param ( "new_rstatus" ) ;
$ type = $ q - > param ( "type" ) ;
for ( $ i = 0 ; $ i <= 50 ; $ i += 1 ) {
$ new_status { $ i } = $ q - > param ( "new_status$i" ) ;
$ type { $ i } = $ q - > param ( "type$i" ) ;
$ new_item { $ i } = $ q - > param ( "new_item$i" ) ;
$ new_item { $ i } =~ s/\'/\'\'/g ;
$ new_item { $ i } =~ s/\x92/’/g ;
$ new_resource { $ i } = $ q - > param ( "new_resource$i" ) ;
$ new_resource { $ i } =~ s/\'/\'\'/g ;
$ new_resource { $ i } =~ s/\x92/’/g ;
$ new_labour { $ i } = $ q - > param ( "new_labour$i" ) ;
$ new_labour { $ i } =~ s/\'/\'\'/g ;
$ new_labour { $ i } =~ s/\x92/’/g ;
$ new_status { $ i } = $ q - > param ( "new_status$i" ) ;
$ new_lstatus { $ i } = $ q - > param ( "new_lstatus$i" ) ;
$ new_rstatus { $ i } = $ q - > param ( "new_rstatus$i" ) ;
$ new_firstname { $ i } = $ q - > param ( "new_firstname$i" ) ;
$ new_firstname { $ i } =~ s/\'/\'\'/g ;
$ new_firstname { $ i } =~ s/\x92/’/g ;
$ new_lastname { $ i } = $ q - > param ( "new_lastname$i" ) ;
$ new_lastname { $ i } =~ s/\'/\'\'/g ;
$ new_lastname { $ i } =~ s/\x92/’/g ;
$ new_codename { $ i } = $ q - > param ( "new_codename$i" ) ;
$ new_codename { $ i } =~ s/\'/\'\'/g ;
$ new_codename { $ i } =~ s/\x92/’/g ;
$ cost { $ i } =~ s/\€/@euro/g ;
$ cost { $ i } = $ q - > param ( "cost$i" ) ;
$ new_cost { $ i } =~ s/\€/@euro/g ;
$ new_cost { $ i } = $ q - > param ( "new_cost$i" ) ;
$ currency { $ i } = $ q - > param ( "currency$i" ) ;
}
( $ second , $ minute , $ hour , $ currentdayofmonth , $ month , $ year , $ weekday , $ dayofyear , $ IsDST ) = localtime ( time ) ;
$ currentmonth = $ month + 1 ;
$ currentyear = $ year + '1900' ;
$ new_day = $ q - > param ( "'new_day" ) ;
$ new_month = $ q - > param ( "new_month" ) ;
$ new_year = $ q - > param ( "new_year" ) ;
$ new_date = $ q - > param ( 'new_year' ) . $ q - > param ( "new_month" ) . $ q - > param ( "new_day" ) ;
$ new_start_date = $ q - > param ( 'new_start_year' ) . $ q - > param ( "new_start_month" ) . $ q - > param ( "new_start_day" ) ;
$ new_end_date = $ q - > param ( 'new_end_year' ) . $ q - > param ( "new_end_month" ) . $ q - > param ( "new_end_day" ) ;
$ new_print_date = $ q - > param ( 'new_print_year' ) . $ q - > param ( "new_print_month" ) . $ q - > param ( "new_print_day" ) ;
$ new_deliver_day = $ q - > param ( "new_deliver_day" ) ;
$ new_deliver_date = $ q - > param ( 'new_deliver_year' ) . $ q - > param ( "new_deliver_month" ) . $ q - > param ( "new_deliver_day" ) ;
if ( $ new_name eq '' ) {
$ new_name = $ new_auto_name ;
}
if ( $ new_location eq '' ) {
$ new_location = $ new_auto_location ;
}
if ( $ new_remarks eq '' ) {
$ new_remarks = $ new_auto_remarks ;
}
if ( $ new_url eq '' ) {
$ new_remarks = $ new_auto_url ;
}
given ( $ action ) {
when ( 'select_budget' ) { & select_budget ; }
when ( 'add_form' ) { & add_form ; }
when ( 'add_budget' ) { & add_budget ; }
when ( 'add_budget_information' ) { & add_budget_information ; }
when ( 'prepare_agents' ) { & prepare_agents ; }
when ( 'input_agents' ) { & input_agents ; }
when ( 'edit_agent' ) { & edit_agent ; }
when ( 'update_agent' ) { & update_agent ; }
when ( 'edit_form' ) { & edit_form ; }
when ( 'edit_select_form' ) { & edit_select_form ; }
when ( 'edit_budget' ) { & edit_budget ; }
when ( 'list_budgets' ) { & list_budgets ; }
when ( 'prepare_budget' ) { & prepare_budget ; }
when ( 'prepare_money' ) { & prepare_money ; }
when ( 'input_budget' ) { & input_budget ; }
when ( 'input_money' ) { & input_money ; }
when ( 'prepare_expenditure' ) { & prepare_expenditure ; }
when ( 'input_expenditure' ) { & input_expenditure ; }
when ( 'compile_budget' ) { & compile_budget ; }
when ( 'display_budgets' ) { & display_budgets ; }
when ( 'present_budget' ) { & present_budget ; }
when ( 'delete_form' ) { & delete_form ; }
when ( 'delete_budget' ) { & delete_budget ; }
when ( 'select_budget' ) { & select_budget ; }
when ( 'upload_image' ) { & upload_image ; }
#default {&display_budgets; }
default {
& select_budget ;
}
}
exit ;
##############################################################################
# #
# select budget #
# #
##############################################################################
sub select_budget {
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
my $ sql = qq( SELECT DISTINCT name from budgets ORDER BY id DESC ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
my $ sql2 = qq( SELECT DISTINCT firstname, lastname from agents ORDER BY firstname ) ;
my $ sth2 = $ dbh - > prepare ( $ sql2 ) ;
$ sth2 - > execute ;
& print_header ;
print << END ;
<center>
< table width = "700" cellspacing = "20" cellpadding = "0" bgcolor = "#cccccc" >
<tr> <td> < table width = "700" cellspacing = "5" cellpadding = "2" bgcolor = "#ffffff" border = "0" >
<tr> < td class = "lge" align = "center" bgcolor = "#fff000" colspan = "5" > < font color = "#000000" >
<b> feral budget generator: enter agent </b> </td> </tr>
<tr> < td height = "20" > & nbsp ; </td> </tr>
<tr> < td colspan = "1" > budget: </td>
< FORM ACTION = "$script_name" METHOD = "GET" >
< input type = "hidden" name = "action" value = "prepare_budget" >
END
## name budget
print "<td height=\"10\" colspan=\"2\"><select name=\"new_name\">" ;
while ( my $ record = $ sth - > fetchrow_hashref ) {
if ( $ record - > { name } eq 'f20' ) {
print "<option>$record->{name}</option>\n" ;
}
}
print "</select></td></tr>\n" ;
## enter agent code
print << END ;
<tr> < td colspan = "1" > enter your agent codename: </td>
< FORM ACTION = "$script_name" METHOD = "GET" >
< td colspan = "3" >
< input type = "text" name = "new_codename" value = "" size = "5" maxsize = "5" >
</td> </tr>
<tr> < td colspan = "2" >
< INPUT TYPE = "submit" VALUE = "ENTER" > </td> </tr>
</td> </tr>
</FORM>
</td> </tr> </table> </table>
END
& print_footer ;
$ dbh - > disconnect ;
}
##############################################################################
# #
# prepare budget #
# #
##############################################################################
sub prepare_budget {
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
my $ sql = qq( SELECT * from budgets WHERE name="$new_name" ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
## identify agent by codename
my $ sql2 = qq( SELECT * from agents where codename ="$new_codename" ) ;
my $ sth2 = $ dbh - > prepare ( $ sql2 ) ;
$ sth2 - > execute ;
while ( my $ record = $ sth - > fetchrow_hashref ) {
if ( my $ record2 = $ sth2 - > fetchrow_hashref ) {
# while (my $record2 = $sth2->fetchrow_hashref) {
# if ($record2->{codename} ne '') {
my $ sql3 = qq( SELECT * from finance LEFT JOIN agents ON finance.agent_id=agents.id WHERE finance.budget_id='$record->{id}' AND finance.agent_id ='$record2->{id}' ) ;
my $ sth3 = $ dbh - > prepare ( $ sql3 ) ;
$ sth3 - > execute ;
& print_header ;
print << END ;
<center>
< table width = "1000" cellspacing = "20" cellpadding = "0" bgcolor = "#ffffff" >
<tr> <td> < table width = "900" cellspacing = "1" cellpadding = "2" bgcolor = "#ffffff" border = "0" >
<tr> < td class = "lge" align = "center" bgcolor = "#fff000" colspan = "5" > < font color = "#000000" > <b> feral budget generator </b> </td> </tr>
<tr> < td height = "10" class = "medbig" colspan = "5" > <b> Instructions </td> </tr>
<tr> < td height = "10" class = "" colspan = "2" > < td align = "center" valign = "top" > <BR>
< img src = "$feral_logo" > </td>
<td> < table width = "500" border = "0" <tr> < td class = "serif" >
Enter your budget requests & amp ; contributions . You can return to edit your entries at any time . <BR> <BR> </td> </tr> </table>
<tr> < table width = "1000" cellspacing = "5" cellpadding = "2" bgcolor = "#ffffff" border = "0" > < td colspan = "1" > budget name: </td>
< FORM ACTION = "$script_name" METHOD = "GET" >
< input type = "hidden" name = "action" value = "input_budget" >
< input type = "hidden" name = "budget_id" value = "$record->{id}" >
< input type = "hidden" name = "agent_id" value = "$record2->{id}" >
< input type = "hidden" name = "new_codename" value = "$new_codename" >
< td height = "10" colspan = "2" class = "medbig" >
<b> $ record - > { name } </b> </td> <tr>
<tr> < td colspan = "1" > your name: </td>
< td height = "10" colspan = "3" class = "medbig" >
$ record2 - > { firstname } $ record2 - > { lastname }
</td> </tr>
<tr> < td colspan = "1" class = "medbig" >
<b> request money </b> </td> < td colspan = "3" >
your monetary requests from the f20 budget ( all sums in & euro ; ) </td> </tr>
</td> </tr>
<tr> <td>
END
my $ sql4 = qq( SELECT * from expenditure where budget_id='$record->{id}' AND agent_id ='$record2->{id}' ) ;
my $ sth4 = $ dbh - > prepare ( $ sql4 ) ;
$ sth4 - > execute ;
for ( $ i = 1 ; $ i <= 5 ; $ i + + ) {
while ( my $ record4 = $ sth4 - > fetchrow_hashref ) {
print "<tr><td colspan=\"2\">$i. \n" ;
print "$currency" ;
print "<input type =\"text\" name=\"new_cost$i\" " ;
print "value=\"$record4->{cost}\" " ;
print " size=\"2\" maxsize=\"5\"></td>\n" ;
print "<td><select name=\"type$i\">" ;
@ cats = ( 'select category' , 'fee' , 'materials' , 'misc' ) ;
foreach $ cat ( @ cats ) {
print "<option" ;
if ( $ cat eq $ record4 - > { type } ) {
print " selected" ;
}
print ">$cat</option>\n" ;
}
print "</select></td>\n" ;
print "<td colspan=\"3\">item <input type=\"text\" name=\"new_item$i\" value=\"$record4->{item}\" size=\"70\" maxsize=\"100\"></td>\n" ;
print "</tr>\n" ;
$ i + +
}
if ( $ i <= 5 ) {
print "<tr><td colspan=\"2\">$i. \n" ;
print "€ <input type =\"text\" name=\"new_cost$i\" " ;
print " size=\"2\" maxsize=\"5\"></td>\n" ;
print "<td><select name=\"type$i\">" ;
@ cats = ( 'select category' , 'fee' , 'materials' , 'misc' ) ;
foreach $ cat ( @ cats ) {
print "<option" ;
if ( $ cat eq $ record4 - > { type } ) {
print " selected" ;
}
print ">$cat</option>\n" ;
}
print "</select></td>\n" ;
print "<td colspan=\"3\">item <input type=\"text\" name=\"new_item$i\" value=\"$record4->{item}\" size=\"70\" maxsize=\"100\"></td>\n" ;
print "</tr>\n" ;
}
}
print "</td></tr></table>\n" ;
print "<tr><table width=\"950\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#ffffff\" border=\"0\"><td colspan=\"1\"></td> " ;
print "<tr><td colspan=\"1\" class=\"medbig\"><b>input money</b></td><td colspan=\"8\">your monetary contribution to the budget (direct payments for materials/services, donations to f20, as a sum total) </td></tr>" ;
print "<tr><td colspan=\"1\">€<input type =\"text\" name=\"new_amount\" " ;
while ( my $ record3 = $ sth3 - > fetchrow_hashref ) {
print "value=\"$record3->{amount}\" " ;
}
print " size=\"3\" maxsize=\"5\"></td></tr>\n" ;
## resources section !!! read-in notworking !!!
print "<tr><td colspan=\"8\" height=\"20\"> </td></tr>\n" ;
print "<tr><td colspan=\"1\" class=\"medbig\"><b>input labour</b></td><td colspan=\"8\">things you commit to doing, non-remunerated. (check the box if this labour has already been deployed) </td></tr>" ;
my $ sql5 = qq( SELECT * from nonfinance where budget_id=$record->{id} AND agent_id =$record2->{id} AND kind='labour' ) ;
my $ sth5 = $ dbh - > prepare ( $ sql5 ) ;
$ sth5 - > execute ;
for ( $ i = 1 ; $ i <= 8 ; $ i + + ) {
while ( my $ record5 = $ sth5 - > fetchrow_hashref ) {
print "<tr><td colspan=\"1\"><b>$i.</b></td>\n" ;
print "<td><input type=\"checkbox\" NAME=\"new_lstatus$i\" VALUE=\"delivered\"" ;
if ( $ record5 - > { status } eq 'delivered' ) {
print "CHECKED" ;
}
;
print "></td>\n" ;
print "<td colspan=\"3\"><input type=\"text\" name=\"new_labour$i\" value=\"$record5->{item}\" size=\"100\" maxsize=\"200\"></td></tr>\n" ;
$ i + +
}
if ( $ i <= 5 ) {
print "<tr><td colspan=\"1\"><b>$i.</b></td>\n" ;
print "<td><input type=\"checkbox\" NAME=\"new_lstatus$i\" VALUE=\"delivered\"" ;
if ( $ record5 - > { status } eq 'delivered' ) {
print "CHECKED" ;
}
;
print "></td>\n" ;
print "<td colspan=\"3\"><input type=\"text\" name=\"new_labour$i\" size=\"100\" maxsize=\"200\"></td></tr>\n" ;
}
}
print "<tr><td colspan=\"8\" height=\"20\"> </td></tr>\n" ;
print "<tr><td colspan=\"1\" class=\"medbig\"><b>input resources</b></td><td colspan=\"8\">materials, spaces, tools, previous work etc (check the box if your resource has already been deployed) </td></tr>" ;
my $ sql5 = qq( SELECT * from nonfinance where budget_id=$record->{id} AND agent_id =$record2->{id} AND kind='resources' ) ;
my $ sth5 = $ dbh - > prepare ( $ sql5 ) ;
$ sth5 - > execute ;
for ( $ i = 1 ; $ i <= 8 ; $ i + + ) {
while ( my $ record5 = $ sth5 - > fetchrow_hashref ) {
print "<tr><td colspan=\"1\"><b>$i.</b></td>\n" ;
print "<td><input type=\"checkbox\" NAME=\"new_rstatus$i\" VALUE=\"delivered\"" ;
if ( $ record5 - > { status } eq 'delivered' ) {
print "CHECKED" ;
}
;
print "></td>\n" ;
print "<td colspan=\"3\"><input type=\"text\" name=\"new_resource$i\" value=\"$record5->{item}\" size=\"100\" maxsize=\"200\"></td></tr>\n" ;
$ i + +
}
if ( $ i <= 5 ) {
print "<tr><td colspan=\"1\"><b>$i.</b></td>\n" ;
print "<td><input type=\"checkbox\" NAME=\"new_rstatus$i\" VALUE=\"delivered\"" ;
if ( $ record5 - > { status } eq 'delivered' ) {
print "CHECKED" ;
}
print "></td>\n" ;
print "<td colspan=\"3\"><input type=\"text\" name=\"new_resource$i\" size=\"100\" maxsize=\"200\"></td></tr>\n" ;
}
}
print "<tr><td colspan=\"1\"></td><td colspan=\"1\"></td><td colspan=\"1\"><INPUT TYPE=\"submit\" VALUE=\"SUBMIT\"></td></tr>\n" ;
print "</td></tr>\n" ;
print "</FORM>\n" ;
print "<tr><td height=\"10\"></td></tr>\n" ;
print "<tr><td colspan=\"5\"></td><td colspan=\"3\" class=\"serif_sm\">Notes:</td></tr>\n" ;
print "</td></tr></table></table>\n" ;
} else {
& print_header ;
print "codename not recognised. please retry\n" ;
}
}
& print_footer ;
$ dbh - > disconnect ;
}
##############################################################################
# #
# input budget: input individual budet items - money & resources #
# #
##############################################################################
sub input_budget {
#for ($i=1; $i<=8; $i++) {
# if (('$type{$i}' eq 'select category') && ('$new_item{$i}' ne '')) {
# print "<center>\n";
# print "<table width=\"700\" cellspacing=\"20\" cellpadding=\"0\" bgcolor=\"#ffffff\">\n";
# print "<FORM ACTION=\"$script_name\"METHOD=\"GET\">\n";
# print "<input type=\"hidden\" name=\"action\" value=\"prepare_budget\">\n";
# print "<input type=\"hidden\" name=\"new_name\" value=\"$record->{name}\">\n";
# print "<input type=\"hidden\" name=\"budget_id\" value=\"$budget_id\">\n";
# print "<input type=\"hidden\" name=\"agent_id\" value=\"$agent_id\">\n";
# print "<input type=\"hidden\" name=\"new_agent\" value=\"$record->{fullname}\">\n";
# print "<input type=\"hidden\" name=\"new_codename\" value=\"$record->{codename}\">\n";
# print "<tr><td colspan=\"1\"><INPUT TYPE=\"submit\" VALUE=\"please go back and select a category for each expenditure\"></td></tr>\n";
# print "</FORM>\n";
#} else {
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
& print_header ;
print "<center>\n" ;
print "<table width=\"700\" cellspacing=\"20\" cellpadding=\"0\" bgcolor=\"#ffffff\">\n" ;
print "<tr><td><<table width=\"700\" cellspacing=\"5\" cellpadding=\"2\" bgcolor=\"#ffffff\" border=\"0\">\n" ;
## delete expenditure line for agent + budget, if exists
my $ sqld = qq( DELETE from expenditure where budget_id="$budget_id" AND agent_id="$agent_id" ) ;
my $ sthd = $ dbh - > prepare ( $ sqld ) ;
$ sthd - > execute ;
## input new expenditure lines for agent
for ( $ i = 1 ; $ i <= 8 ; $ i + + ) {
if ( $ new_item { $ i } ne '' ) {
my $ sql = ( qq{ INSERT INTO expenditure (budget_id, agent_id, status, type, item, cost, currency) VALUES ($budget_id, $agent_id, '$new_status { $i } ', '$type { $i } ', '$new_item { $i } ', $new_cost { $i } , '€') } ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
}
}
## read in finance for agent
my $ sql = qq( SELECT * from finance LEFT JOIN agents ON finance.agent_id=agents.id
LEFT JOIN budgets ON finance . budget_id = budgets . id WHERE finance . budget_id = "$budget_id" AND finance . agent_id = "$agent_id" ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
#while (my $record = $sth->fetchrow_hashref) {
print "<tr><td class=\"lge\" align=\"center\" bgcolor=\"#fff000\" colspan=\"5\"><font color=\"#000000\"><b>feral budget generator: $record->{name}</b></td></tr>\n" ;
## delete finance line for agent + budget, if exists
my $ sqld = qq( DELETE from finance where budget_id="$budget_id" AND agent_id="$agent_id" ) ;
my $ sthd = $ dbh - > prepare ( $ sqld ) ;
$ sthd - > execute ;
## input money into finance
# if ($new_amount ne '') {
if ( $ new_amount eq '' ) {
$ new_amount = 0 ;
}
my $ sqli = ( qq{ INSERT INTO finance (budget_id, agent_id, amount) VALUES ($budget_id, $agent_id, $new_amount) } ) ;
my $ sthi = $ dbh - > prepare ( $ sqli ) ;
$ sthi - > execute ;
my $ sqld = qq( DELETE from nonfinance where budget_id="$budget_id" AND agent_id="$agent_id" ) ;
my $ sthd = $ dbh - > prepare ( $ sqld ) ;
$ sthd - > execute ;
## input labour into nonfinance for agent
for ( $ i = 1 ; $ i <= 8 ; $ i + + ) {
if ( $ new_labour { $ i } ne '' ) {
my $ sqll = ( qq{ INSERT INTO nonfinance (budget_id, agent_id, item, kind, status) VALUES ($budget_id, $agent_id, "$new_labour { $i } ", "labour", "$new_lstatus { $i } ") } ) ;
my $ sthl = $ dbh - > prepare ( $ sqll ) ;
$ sthl - > execute ;
}
}
## input resources into nonfinance for agent
for ( $ i = 1 ; $ i <= 8 ; $ i + + ) {
if ( $ new_resource { $ i } ne '' ) {
my $ sqlr = ( qq{ INSERT INTO nonfinance (budget_id, agent_id, item, kind, status) VALUES ($budget_id, $agent_id, "$new_resource { $i } ", "resources", "$new_rstatus { $i } ") } ) ;
my $ sthr = $ dbh - > prepare ( $ sqlr ) ;
$ sthr - > execute ;
}
}
## read back in to get these values from the db, not from the cgi
my $ sqlv = ( qq{ SELECT DISTINCT item, cost, expenditure.currency, type, fullname from expenditure RIGHT JOIN agents on expenditure.agent_id=agents.id LEFT JOIN finance on expenditure.agent_id=finance.agent_id
WHERE expenditure . agent_id = $ agent_id AND expenditure . budget_id = $ budget_id } ) ;
my $ sthv = $ dbh - > prepare ( $ sqlv ) ;
$ sthv - > execute ;
my $ sqln = ( qq{ SELECT fullname from agents where id=$agent_id } ) ;
my $ sthn = $ dbh - > prepare ( $ sqln ) ;
$ sthn - > execute ;
while ( my $ recordn = $ sthn - > fetchrow_hashref ) {
print "<tr><td colspan=\"1\" width=\"\" height=\"10\"class=\"medbig\">$projectname: <b>$recordn->{fullname}</b></td></tr> " ;
}
# print "<tr><td colspan=\"4\"><b>your PROPOSITION:</b> ";
while ( my $ recordv = $ sthv - > fetchrow_hashref ) {
if ( $ recordv - > { item } ne '' ) {
print "<tr><td>$recordv->{$currency} $recordv->{$cost} $recordv->{$item} $recordv->{$type}</td></tr>\n" ;
}
}
print "<tr><td></td></tr>\n" ;
print "<tr><td></td></tr>\n" ;
$ sth - > execute ;
while ( my $ record = $ sth - > fetchrow_hashref ) {
print "<FORM ACTION=\"$script_name\"METHOD=\"GET\">\n" ;
print "<input type=\"hidden\" name=\"action\" value=\"prepare_budget\">\n" ;
print "<input type=\"hidden\" name=\"new_name\" value=\"$record->{name}\">\n" ;
print "<input type=\"hidden\" name=\"budget_id\" value=\"$budget_id\">\n" ;
print "<input type=\"hidden\" name=\"agent_id\" value=\"$agent_id\">\n" ;
print "<input type=\"hidden\" name=\"new_agent\" value=\"$record->{fullname}\">\n" ;
print "<input type=\"hidden\" name=\"new_codename\" value=\"$record->{codename}\">\n" ;
print "<tr><td colspan=\"1\"><INPUT TYPE=\"submit\" VALUE=\"return to edit your contribution\"></td></tr>\n" ;
print "</FORM>\n" ;
print "<FORM ACTION=\"$script_name\"METHOD=\"GET\">\n" ;
print "<input type=\"hidden\" name=\"action\" value=\"compile_budget\">\n" ;
print "<input type=\"hidden\" name=\"new_name\" value=\"$record->{name}\">\n" ;
print "<input type=\"hidden\" name=\"budget_id\" value=\"$budget_id\">\n" ;
print "<input type=\"hidden\" name=\"agent_id\" value=\"$agent_id\">\n" ;
print "<input type=\"hidden\" name=\"new_agent\" value=\"$record->{fullname}\">\n" ;
print "<input type=\"hidden\" name=\"new_codename\" value=\"$record->{codename}\">\n" ;
print "<tr><td colspan=\"1\"><INPUT TYPE=\"submit\" VALUE=\"go to view the budget as a whole\"></td></tr>\n" ;
print "</td></tr></table>\n" ;
print "</FORM>\n" ;
}
& print_footer ;
}
###############################################################################
# input money
sub input_money {
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
& print_header ;
print "<center>\n" ;
print "<table width=\"700\" cellspacing=\"20\" cellpadding=\"0\" bgcolor=\"#ffffff\">\n" ;
print "<tr><td><table width=\"700\" cellspacing=\"5\" cellpadding=\"2\" bgcolor=\"#ffffff\" border=\"0\">\n" ;
## read in finance for agent+ budget
my $ sql = qq( SELECT * from finance LEFT JOIN agents ON finance.agent_id=agents.id
LEFT JOIN budgets ON finance . budget_id = budgets . id WHERE finance . budget_id = "$budget_id" AND finance . agent_id = "$agent_id" ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
while ( my $ record = $ sth - > fetchrow_hashref ) {
if ( $ record - > { id } ne '' ) {
## delete finance line for agent + budget, if exists
my $ sqld = qq( DELETE from finance where budget_id="$budget_id" AND agent_id="$agent_id" ) ;
my $ sthd = $ dbh - > prepare ( $ sqld ) ;
$ sthd - > execute ;
}
}
## input money into finance
if ( $ new_amount eq '' ) {
$ new_amount = 0 ;
}
my $ sqli = ( qq{ INSERT INTO finance (budget_id, agent_id, amount) VALUES ($budget_id, $agent_id, $new_amount) } ) ;
my $ sthi = $ dbh - > prepare ( $ sqli ) ;
$ sthi - > execute ;
#}
print "<tr><td class=\"lge\" align=\"center\" bgcolor=\"#fff000\" colspan=\"5\"><font color=\"#000000\"><b>feral budget generator: $record->{name}</b></td></tr>\n" ;
print "<tr><td colspan=\"1\" width=\"\">your name:</td> " ;
print "<td height=\"10\" colspan=\"3\" class=\"medbig\">$new_fullname</td></tr>\n" ;
print "</td></tr>\n" ;
print "<tr><td colspan=\"1\">your monetary contribution:</td> " ;
print "<td height=\"10\" colspan=\"3\" class=\"medbig\">€$new_amount</td></tr>\n" ;
print "</td></tr>\n" ;
print "<FORM ACTION=\"$script_name\"METHOD=\"GET\">\n" ;
print "<input type=\"hidden\" name=\"action\" value=\"compile_budget\">\n" ;
print "<input type=\"hidden\" name=\"new_name\" value=\"$record->{name}\">\n" ;
print "<input type=\"hidden\" name=\"budget_id\" value=\"$budget_id\">\n" ;
print "<input type=\"hidden\" name=\"agent_id\" value=\"$agent_id\">\n" ;
print "<input type=\"hidden\" name=\"new_agent\" value=\"$record->{fullname}\">\n" ;
print "<input type=\"hidden\" name=\"new_codename\" value=\"$record->{codename}\">\n" ;
print "<tr><td colspan=\"1\"><INPUT TYPE=\"submit\" VALUE=\"go to view the budget as a whole\"></td></tr>\n" ;
print "</td></tr></table>\n" ;
print "</FORM>\n" ;
& print_footer ;
}
###############################################################################
# compile budget: lay out the whole budget as it assembles
sub compile_budget {
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
my $ sqld = qq( SELECT * FROM nonfinance LEFT JOIN agents on nonfinance.agent_id=agents.id LEFT JOIN budgets ON nonfinance.budget_id=budgets.id
LEFT JOIN locations ON locations . structure = budgets . location WHERE nonfinance . budget_id = $ budget_id AND nonfinance . status = 'delivered' ORDER BY nonfinance . item ) ;
my $ sthd = $ dbh - > prepare ( $ sqld ) ;
$ sthd - > execute ;
my $ sqlol = qq( SELECT * FROM nonfinance LEFT JOIN agents on nonfinance.agent_id=agents.id LEFT JOIN budgets ON nonfinance.budget_id=budgets.id
LEFT JOIN locations ON locations . structure = budgets . location WHERE nonfinance . budget_id = $ budget_id AND nonfinance . status != 'delivered' AND kind = 'labour' ORDER BY nonfinance . item ) ;
my $ sthol = $ dbh - > prepare ( $ sqlol ) ;
$ sthol - > execute ;
my $ sqlor = qq( SELECT * FROM nonfinance LEFT JOIN agents on nonfinance.agent_id=agents.id LEFT JOIN budgets ON nonfinance.budget_id=budgets.id
LEFT JOIN locations ON locations . structure = budgets . location WHERE nonfinance . budget_id = $ budget_id AND nonfinance . status != 'delivered' AND kind = 'resources' ORDER BY nonfinance . item ) ;
my $ sthor = $ dbh - > prepare ( $ sqlor ) ;
$ sthor - > execute ;
my $ sqldl = qq( SELECT * FROM nonfinance LEFT JOIN agents on nonfinance.agent_id=agents.id LEFT JOIN budgets ON nonfinance.budget_id=budgets.id
LEFT JOIN locations ON locations . structure = budgets . location WHERE nonfinance . budget_id = $ budget_id AND nonfinance . status = 'delivered' AND kind = 'labour' ORDER BY nonfinance . item ) ;
my $ sthdl = $ dbh - > prepare ( $ sqldl ) ;
$ sthdl - > execute ;
my $ sqldr = qq( SELECT * FROM nonfinance LEFT JOIN agents on nonfinance.agent_id=agents.id LEFT JOIN budgets ON nonfinance.budget_id=budgets.id
LEFT JOIN locations ON locations . structure = budgets . location WHERE nonfinance . budget_id = $ budget_id AND nonfinance . status = 'delivered' AND kind = 'resources' ORDER BY nonfinance . item ) ;
my $ sthdr = $ dbh - > prepare ( $ sqldr ) ;
$ sthdr - > execute ;
## count potential deposits
my $ sqla = qq( SELECT COUNT ( fullname ) AS qty FROM agents WHERE budget_id=$budget_id AND status!='staff' ) ;
my $ stha = $ dbh - > prepare ( $ sqla ) ;
$ stha - > execute ;
## count deposits received
my $ sqlar = qq( SELECT COUNT ( fullname ) AS qty FROM agents WHERE budget_id=$budget_id AND status='deposit' ) ;
my $ sthar = $ dbh - > prepare ( $ sqlar ) ;
$ sthar - > execute ;
my $ sqlc = qq( SELECT COUNT ( * ) FROM nonfinance LEFT JOIN agents on nonfinance.agent_id=agent.id LEFT JOIN budgets ON nonfinance.budget_id=budgets.id
LEFT JOIN locations ON locations . structure = budgets . location WHERE nonfinance . budget_id = $ budget_id ) ;
my $ sthc = $ dbh - > prepare ( $ sqlc ) ;
$ sthc - > execute ;
my $ sqlf = qq( SELECT * FROM finance WHERE budget_id=$budget_id ORDER by amount ) ;
my $ sthf = $ dbh - > prepare ( $ sqlf ) ;
$ sthf - > execute ;
my $ sqlb = qq( SELECT *, date_format ( deliver_date,'%d-%m-%Y' ) AS end_date FROM budgets LEFT JOIN locations on budgets.location=locations.structure WHERE budgets.id=$budget_id ) ;
my $ sthb = $ dbh - > prepare ( $ sqlb ) ;
$ sthb - > execute ;
my $ sqlfc = qq( SELECT COUNT ( id ) AS count FROM finance WHERE budget_id=$budget_id ) ;
my $ sthfc = $ dbh - > prepare ( $ sqlfc ) ;
$ sthfc - > execute ;
my $ sqls = qq( SELECT SUM ( amount ) FROM finance WHERE budget_id=$budget_id ) ;
my $ sths = $ dbh - > prepare ( $ sqls ) ;
$ sths - > execute ;
my $ sqlse = qq( SELECT SUM ( cost ) FROM expenditure WHERE budget_id=$budget_id ) ;
my $ sthse = $ dbh - > prepare ( $ sqlse ) ;
$ sthse - > execute ;
my $ sqlr = qq( SELECT name, fullname, codename from finance LEFT JOIN agents ON finance.agent_id=agents.id
LEFT JOIN budgets ON finance . budget_id = budgets . id WHERE finance . budget_id = "$budget_id" AND finance . agent_id = "$agent_id" ) ;
my $ sthr = $ dbh - > prepare ( $ sqlr ) ;
$ sthr - > execute ;
my $ sqlef = qq( SELECT budget_id, item, cost, currency, type FROM expenditure LEFT JOIN budgets on expenditure.budget_id=budgets.id WHERE expenditure.budget_id = '$budget_id' AND type='fee' ORDER BY expenditure.item ) ;
my $ sthef = $ dbh - > prepare ( $ sqlef ) ;
$ sthef - > execute ;
my $ sqlem = qq( SELECT budget_id, item, cost, currency, type FROM expenditure LEFT JOIN budgets on expenditure.budget_id=budgets.id WHERE expenditure.budget_id = '$budget_id' AND type='materials' ORDER BY expenditure.item ) ;
my $ sthem = $ dbh - > prepare ( $ sqlem ) ;
$ sthem - > execute ;
my $ sqlex = qq( SELECT budget_id, item, cost, currency, type FROM expenditure LEFT JOIN budgets on expenditure.budget_id=budgets.id WHERE expenditure.budget_id = '$budget_id' AND type='misc' ORDER BY expenditure.item ) ;
my $ sthex = $ dbh - > prepare ( $ sqlex ) ;
$ sthex - > execute ;
& print_header ;
print "<META HTTP-EQUIV=\"Refresh\" CONTENT=20; URL=\"$script_name\">\n" ;
print "<table width=\"1200\" cellspacing=\"5\" cellpadding=\"2\" bgcolor=\"#ffffff\" border=\"1\">\n" ;
print "<tr><td class=\"lge\" align=\"center\" bgcolor=\"#fff000\" colspan=\"3\"><font color=\"#000000\"><b>feral budget generator</b> | | https://feraltrade.org/cgi-bin/budget/f20_budget.pl</td></tr>\n" ;
print "<center>\n" ;
print "<table width=\"1200\" height=\"\" cellspacing=\"5\" cellpadding=\"10\" bgcolor=\"#ffffff\" border=\"0\">\n" ;
# print "<tr><td><table width=\"1200\" cellspacing=\"20\" cellpadding=\"0\" bgcolor=\"#ffffff\">\n";
$ sthb - > execute ;
while ( my $ recordb = $ sthb - > fetchrow_hashref ) {
print "<table width=\"1200\" cellspacing=\"20\" cellpadding=\"0\" bgcolor=\"#ffffff\" border=\"1\">\n" ;
print "<tr><td height=\"10\" class=\"medbig\" colspan=\"3\"><b>$projectname </b> | | $recordb->{location} " ;
print " | |</b> <font size=\"\"> budget adjustments to $currentdayofmonth/$currentmonth/$currentyear</font></td></tr></table>" ;
# print " | |</b> <font size=\"\"> Budget";
while ( my $ recordd = $ sthd - > fetchrow_hashref ) {
$ title = substr ( $ recordd - > { item } , 0 , 30 ) ;
# print ": $title ";
}
# print "</font></td></tr></table>";
print "<table width=\"1100\" cellspacing=\"20\" cellpadding=\"0\" bgcolor=\"#ffffff\" border=\"1\">\n" ;
print "<tr><td align=\"left\" valign=\"middle\"><img src=\"$feral_logo\"></td>\n" ;
print "<td class=\"serif\" colspan=\"6\">\n" ;
if ( $ agent_id ne "" ) {
while ( my $ recordfc = $ sthfc - > fetchrow_hashref ) {
print " Contributing agents <b>[$recordfc->{count}]</b>. This budget will remain open for negotiations until <b>$recordb->{end_date}</b>.\n" ;
print " Monetary items will be kept anonymous (although visible to the budget r/administrators) labour & resources will be tagged with the ID of the resourcer.\n" ;
}
}
print "<BR><BR></td>\n\n" ;
}
$ sthr - > execute ;
while ( my $ recordr = $ sthr - > fetchrow_hashref ) {
print "<FORM ACTION=\"$script_name\"METHOD=\"GET\">\n" ;
print "<input type=\"hidden\" name=\"action\" value=\"prepare_budget\">\n" ;
print "<input type=\"hidden\" name=\"new_name\" value=\"$recordr->{name}\">\n" ;
print "<input type=\"hidden\" name=\"agent_id\" value=\"$agent_id\">\n" ;
print "<input type=\"hidden\" name=\"budget_id\" value=\"$budget_id\">\n" ;
print "<input type=\"hidden\" name=\"new_agent\" value=\"$recordr->{fullname}\">\n" ;
print "<input type=\"hidden\" name=\"new_codename\" value=\"$recordr->{codename}\">\n" ;
print "<td><INPUT TYPE=\"submit\" VALUE=\"return to edit your contribution\"></td>\n" ;
print "</FORM>\n\n" ;
}
if ( $ agent_id eq "" ) {
print "<FORM ACTION=\"$script_name\"METHOD=\"GET\">\n" ;
print "<input type=\"hidden\" name=\"action\" value=\"\">\n" ;
print "<input type=\"hidden\" name=\"new_name\" value=\"$recordr->{name}\">\n" ;
print "<input type=\"hidden\" name=\"budget_id\" value=\"$budget_id\">\n" ;
print "<td><INPUT TYPE=\"submit\" VALUE=\"log in\"></td></tr>\n" ;
print "</FORM>\n" ;
print "<BR><BR></td></tr>\n\n" ;
} else {
print "<FORM ACTION=\"$script_name\"METHOD=\"GET\">\n" ;
print "<input type=\"hidden\" name=\"action\" value=\"prepare_expenditure\">\n" ;
print "<input type=\"hidden\" name=\"new_name\" value=\"$recordr->{name}\">\n" ;
print "<input type=\"hidden\" name=\"budget_id\" value=\"$budget_id\">\n" ;
print "<input type=\"hidden\" name=\"agent_id\" value=\"$agent_id\">\n" ;
print "</FORM>\n" ;
print "<BR><BR></td></tr>\n\n" ;
}
print "<table width=\"1200\" height=\"200\" cellspacing=\"5\" cellpadding=\"2\" bgcolor=\"#ffffff\" border=\"1\">\n" ;
print "<tr><td valign=\"top\"><table width=\"600\" border=\"0\">" ;
print "<tr><td class=\"medbig\" colspan=\"\"><b>FINANCIAL</b></td></tr>\n" ;
print "<tr><td class=\"serif\" colspan=\"1\">OUTGOINGS: / money requested or supplied</td></tr>\n" ;
print "<tr><td class=\"serif_m\" colspan=\"1\">Fees</td></tr>\n" ;
while ( my $ recordef = $ sthef - > fetchrow_hashref ) {
my $ cost = $ recordef - > { cost } ;
$ display_cost = sprintf "%.2f" , $ cost ;
$ display_cost =~ s/(\d)(?=(\d{3})+(\D|$))/$1\,/g ; ## add commma
print "<tr><td bgcolor=\"#ffffff\" colspan=\"9\">$recordef->{item}</td> <td bgcolor=\"#ffffff\" colspan=\"\">$recordef->{currency}$display_cost</td></tr> \n" ;
}
print "<tr><td class=\"serif_m\" colspan=\"1\">Materials</td></tr>\n" ;
while ( my $ recordem = $ sthem - > fetchrow_hashref ) {
my $ cost = $ recordem - > { cost } ;
$ display_cost = sprintf "%.2f" , $ cost ;
$ display_cost =~ s/(\d)(?=(\d{3})+(\D|$))/$1\,/g ; ## add commma
print "<tr><td bgcolor=\"#ffffff\" colspan=\"9\">$recordem->{item}</td> <td bgcolor=\"#ffffff\" colspan=\"\">$recordem->{currency}$display_cost</td></tr> \n" ;
}
print "<tr><td class=\"serif_m\" colspan=\"1\">Miscellaneous</td></tr>\n" ;
while ( my $ recordex = $ sthex - > fetchrow_hashref ) {
my $ cost = $ recordex - > { cost } ;
$ display_cost = sprintf "%.2f" , $ cost ;
$ display_cost =~ s/(\d)(?=(\d{3})+(\D|$))/$1\,/g ; ## add commma
print "<tr><td bgcolor=\"#ffffff\" colspan=\"9\">$recordex->{item}</td> <td bgcolor=\"#ffffff\" colspan=\"\">$recordex->{currency}$display_cost</td></tr> \n" ;
}
print "<tr><td class=\"serif\" colspan=\"2\" height=\"30\"> </td></tr>\n" ;
print "<tr><td class=\"serif\" colspan=\"10\">INCOME: / donations, contributions, sums, funds</td></tr>\n" ;
# print "<tr><td class=\"serif\" colspan=\"9\">MONEY:</td>\n";
print "<tr><td class=\"medium\" colspan=\"9\">" ;
while ( my $ recordf = $ sthf - > fetchrow_hashref ) {
print "€$recordf->{amount} " ;
}
print "</td</tr>\n" ;
## actual paid deposits
while ( my $ recordar = $ sthar - > fetchrow_hashref ) {
print "<tr><td class=\"serif\" colspan=\"1\"> </td><td class=\"medium\"></td></tr>\n" ;
while ( my @ sum = $ sths - > fetchrow_array ( ) ) {
$ deposits = $ recordar - > { qty } * 50 ;
$ running = $ sum [ 0 ] + $ deposits ;
$ display_running = sprintf "%.2f" , $ running ;
$ display_running =~ s/(\d)(?=(\d{3})+(\D|$))/$1\,/g ; ## add commma
print "<tr><td class=\"serif\" colspan=\"9\">RUNNING total IN:</td><td class=\"medbig\">€$display_running</td></tr>\n" ;
}
}
while ( my @ sumex = $ sthse - > fetchrow_array ( ) ) {
$ runningex = $ sumex [ 0 ] ;
$ surplus = $ running - $ runningex ;
$ display_runningex = sprintf "%.2f" , $ runningex ;
$ display_runningex =~ s/(\d)(?=(\d{3})+(\D|$))/$1\,/g ; ## add commma
$ display_surplus = sprintf "%.2f" , $ surplus ;
$ display_surplus =~ s/(\d)(?=(\d{3})+(\D|$))/$1\,/g ; ## add commma
print "<tr><td class=\"serif\" colspan=\"9\">RUNNING total OUT:</td><td class=\"medbig\">€$display_runningex</td></tr>\n" ;
print "<tr><td class=\"serif\" colspan=\"9\" height=\"80\">BALANCE OF FINANCIAL TRADE:</td><td class=\"medbig\">€$display_surplus</td></tr>\n" ;
}
print "</table>\</td>\n\n" ;
print "<td valign=\"top\"><table width=\"600\" border=\"0\">\n" ;
print "<tr><td class=\"medbig\" colspan=\"\"><b>NONFINANCIAL</b></td></tr>\n" ;
print "<tr><td class=\"serif\" colspan=\"1\">Human and nonhuman budget contributions: / labour and resources, deployed &/or offfered, latent, awaiting activation</td></tr>\n" ;
print "<tr><td height=\"2\"></td><tr><tr><td class=\"serif_m\" colspan=\"2\">Labour / deployed</td></tr>\n" ;
$ sthdl - > execute ;
while ( my $ record = $ sthdl - > fetchrow_hashref ) {
$ record - > { item } =~ s/^([a-z])/\U$1/ ; ## capitalise first letter
my $ first = $ record - > { firstname } ;
my $ last = $ record - > { lastname } ;
$ first_init = substr ( $ first , 0 , 1 ) ;
$ last_init = substr ( $ last , 0 , 1 ) ;
$ first_init =~ s/^([a-z])/\U$1/ ; ## capitalise first letter
$ last_init =~ s/^([a-z])/\U$1/ ; ## capitalise first letter
print "<tr><td colspan=\"3\" width=\"800\">$record->{item} [$first_init$last_init]</td></tr>\n" ;
# print "<tr><td class=\"print\" colspan=\"3\" width=\"800\">$record->{item} [$first_init$last_init]</td></tr>\n";
}
print "<tr><td height=\"10\"></td><tr><tr><td class=\"serif_m\" colspan=\"2\">Resources / deployed</td></tr>\n" ;
while ( my $ record = $ sthdr - > fetchrow_hashref ) {
$ record - > { item } =~ s/^([a-z])/\U$1/ ; ## capitalise first letter
my $ first = $ record - > { firstname } ;
my $ last = $ record - > { lastname } ;
$ first_init = substr ( $ first , 0 , 1 ) ;
$ last_init = substr ( $ last , 0 , 1 ) ;
$ first_init =~ s/^([a-z])/\U$1/ ; ## capitalise first letter
$ last_init =~ s/^([a-z])/\U$1/ ; ## capitalise first letter
print "<tr><td colspan=\"3\" width=\"800\">$record->{item} [$first_init$last_init]</td></tr>\n" ;
}
print "<tr><td height=\"2\"></td><tr><tr><td class=\"serif_m\" colspan=\"2\">Labour / offered</td></tr>\n" ;
$ sthol - > execute ;
while ( my $ record = $ sthol - > fetchrow_hashref ) {
$ record - > { item } =~ s/^([a-z])/\U$1/ ; ## capitalise first letter
my $ first = $ record - > { firstname } ;
my $ last = $ record - > { lastname } ;
$ first_init = substr ( $ first , 0 , 1 ) ;
$ last_init = substr ( $ last , 0 , 1 ) ;
$ first_init =~ s/^([a-z])/\U$1/ ; ## capitalise first letter
$ last_init =~ s/^([a-z])/\U$1/ ; ## capitalise first letter
print "<tr><td colspan=\"3\" width=\"800\">$record->{item} [$first_init$last_init]</td></tr>\n" ;
}
print "<tr><td height=\"10\"></td><tr><tr><td class=\"serif_m\" colspan=\"2\">Resources / offered</td></tr>\n" ;
while ( my $ record = $ sthor - > fetchrow_hashref ) {
$ record - > { item } =~ s/^([a-z])/\U$1/ ; ## capitalise first letter
my $ first = $ record - > { firstname } ;
my $ last = $ record - > { lastname } ;
$ first_init = substr ( $ first , 0 , 1 ) ;
$ last_init = substr ( $ last , 0 , 1 ) ;
$ first_init =~ s/^([a-z])/\U$1/ ; ## capitalise first letter
$ last_init =~ s/^([a-z])/\U$1/ ; ## capitalise first letter
print "<tr><td colspan=\"3\" width=\"800\">$record->{item} [$first_init$last_init]</td></tr>\n" ;
}
print "</table></td></tr>\n" ;
$ dbh - > disconnect ;
& print_footer ;
}
############################################################################
# prepare expenditure
sub prepare_expenditure {
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
my $ sql = qq( SELECT item, cost, currency, firstname, lastname, type FROM expenditure LEFT JOIN agents on expenditure.agent_id = agents.id WHERE expenditure.budget_id = $budget_id ORDER BY fullname ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
my $ sqln = qq( SELECT name FROM budgets where id = $budget_id ) ;
my $ sthn = $ dbh - > prepare ( $ sqln ) ;
$ sthn - > execute ;
& print_header ;
print "<center>\n" ;
print "<table width=\"700\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#ffffff\">\n" ;
print "<tr><td><table width=\"700\" cellspacing=\"5\" cellpadding=\"2\" bgcolor=\"#ffffff\" border=\"0\">\n" ;
print "<tr><td class=\"lge\" align=\"center\" bgcolor=\"#fff000\" colspan=\"5\"><font color=\"#000000\"><b>feral budget generator</b></td></tr>\n" ;
while ( my $ recordn = $ sthn - > fetchrow_hashref ) {
print "<tr><td height=\"10\" class=\"medbig\" colspan=\"5\"><b> Expenditure: $recordn->{name}</td></tr>" ;
}
print "<FORM ACTION=\"$script_name\" METHOD=\"GET\">\n" ;
print "<input type=\"hidden\" name=\"action\" value=\"input_expenditure\">\n" ;
print "<input type=\"hidden\" name=\"budget_id\" value=\"$budget_id\">\n" ;
print "<input type=\"hidden\" name=\"agent_id\" value=\"$agent_id\">\n" ;
print "<tr><td></td><td>agent</td><td>item</td><td colspan=\"2\">cost</td><td>kind</td></tr>\n" ;
for ( $ i = 1 ; $ i <= 23 ; $ i + + ) {
while ( my $ record = $ sth - > fetchrow_hashref ) {
my $ cost = $ record - > { cost } ;
$ dec_cost = sprintf "%.2f" , $ cost ; ## 2 decimal places
my $ first = $ record - > { firstname } ;
my $ last = $ record - > { lastname } ;
$ first_init = substr ( $ first , 0 , 1 ) ;
$ last_init = substr ( $ last , 0 , 1 ) ;
$ first_init =~ s/^([a-z])/\U$1/ ; ## capitalise first letter
$ last_init =~ s/^([a-z])/\U$1/ ; ## capitalise first letter
print "<tr><td><b>$i.</b></td><td>[$first_init$last_init] </td>\n" ;
print "<td><input type=\"text\" name=\"new_item$i\" value=\"$record->{item}\" size=80 maxsize=100></td>\n" ;
print "<td><input type=\"text\" name=\"cost$i\" value=\"$dec_cost\" size=6 maxsize=10></td>\n" ;
print "<td><select name=\"currency$i\">" ;
# @currencies = ('€', '£', '$');
@ currencies = ( '€' ) ;
foreach $ currency ( @ currencies ) {
print "<option" ;
if ( $ currency eq $ record - > { currency } ) {
print " selected" ;
}
print ">$currency</option>\n" ;
}
print "</select></td></tr>\n" ;
$ i + +
}
print "<tr><td><b>$i.</b></td><td></td>\n" ;
print "<td><input type=\"text\" name=\"new_item$i\" size=80 maxsize=100></td>\n" ;
print "<td><input type=\"text\" name=\"cost$i\" size=6 maxsize=10></td>\n" ;
print "<td><select name=\"currency$i\">" ;
# @currencies = ('€', '£', '$');
@ currencies = ( '€' ) ;
foreach $ currency ( @ currencies ) {
print "<option" ;
if ( $ currency eq $ record - > { currency } ) {
print " selected" ;
}
print ">$currency</option>\n" ;
}
print "</select></td></tr>\n" ;
}
print "<tr><td><INPUT TYPE=\"submit\" VALUE=\"submit\"></td></tr>\n" ;
print "</FORM>\n" ;
print "<tr><td><BR><BR></td></tr>\n" ;
}
############################################################################
# input expenditure
sub input_expenditure {
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
# clear previous entries
my $ sql_del = ( qq{ DELETE FROM expenditure WHERE budget_id=$budget_id } ) ;
my $ sth_del = $ dbh - > prepare ( $ sql_del ) ;
$ sth_del - > execute ;
for ( $ i = 1 ; $ i <= 25 ; $ i + + ) {
if ( $ new_item { $ i } ne '' ) {
my $ sql = ( qq{ INSERT INTO expenditure (budget_id, item, cost, currency) VALUES ($budget_id, '$new_item { $i } ', $cost { $i } , '$currency { $i } ') } ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
}
}
# read back expenditure info
my $ sql2 = qq( SELECT budget_id, item, cost, currency FROM expenditure LEFT JOIN budgets on expenditure.budget_id=budgets.id WHERE expenditure.budget_id = '$budget_id' ORDER BY expenditure.id ) ;
my $ sth2 = $ dbh - > prepare ( $ sql2 ) ;
$ sth2 - > execute ;
& print_header ;
print "<center>\n" ;
print "<table width=\"700\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#ffffff\">\n" ;
print "<tr><td><table width=\"700\" cellspacing=\"5\" cellpadding=\"2\" bgcolor=\"#ffffff\" border=\"0\">\n" ;
print "<tr><td class=\"lge\" align=\"center\" bgcolor=\"#fff000\" colspan=\"5\"><font color=\"#000000\"><b>feral budget generator</b></td></tr>\n" ;
print "<tr><td height=\"10\" class=\"medbig\" colspan=\"5\"><b> Expenditure</td></tr>" ;
print "<table width=\"700\" cellspacing=\"1\" cellpadding=\"0\" bgcolor=\"#C0C0C0\">\n" ;
print "<tr><td bgcolor=\"#ffffff\"><b>item</b></td> <td bgcolor=\"#ffffff\"><b>cost</b></td></tr> \n" ;
while ( my $ record2 = $ sth2 - > fetchrow_hashref ) {
my $ cost = $ record2 - > { cost } ;
$ dec_cost = sprintf "%.2f" , $ cost ; ## 2 decimal places
# print "<tr><td bgcolor=\"#ffffff\">$record2->{item}</td> <td bgcolor=\"#ffffff\">$record2->{currency}$record2->{cost}</td></tr> \n";
print "<tr><td bgcolor=\"#ffffff\">$record2->{item}</td> <td bgcolor=\"#ffffff\">$dec_cost</td></tr> \n" ;
}
print "<tr><td></td></tr>\n" ;
print "</table>\n" ;
print "<table><tr><td height=\"10\"></td></tr>\n" ;
print "</table>\n" ;
my $ sql = qq( SELECT * from finance LEFT JOIN agents ON finance.agent_id=agents.id
LEFT JOIN budgets ON finance . budget_id = budgets . id WHERE finance . budget_id = "$budget_id" AND finance . agent_id = "$agent_id" ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
$ sth - > execute ;
while ( my $ record = $ sth - > fetchrow_hashref ) {
print "<FORM ACTION=\"$script_name\"METHOD=\"GET\">\n" ;
print "<input type=\"hidden\" name=\"action\" value=\"prepare_expenditure\">\n" ;
print "<input type=\"hidden\" name=\"new_name\" value=\"$record->{name}\">\n" ;
print "<input type=\"hidden\" name=\"budget_id\" value=\"$budget_id\">\n" ;
print "<input type=\"hidden\" name=\"agent_id\" value=\"$agent_id\">\n" ;
print "<input type=\"hidden\" name=\"new_agent\" value=\"$record->{fullname}\">\n" ;
print "<input type=\"hidden\" name=\"new_codename\" value=\"$record->{codename}\">\n" ;
print "<table><tr><td colspan=\"1\" height=\"20\"><INPUT TYPE=\"submit\" VALUE=\"return to edit expenditure\"></td></tr>\n" ;
print "</FORM>\n" ;
print "<FORM ACTION=\"$script_name\"METHOD=\"GET\">\n" ;
print "<input type=\"hidden\" name=\"action\" value=\"compile_budget\">\n" ;
print "<input type=\"hidden\" name=\"new_name\" value=\"$record->{name}\">\n" ;
print "<input type=\"hidden\" name=\"budget_id\" value=\"$budget_id\">\n" ;
print "<input type=\"hidden\" name=\"agent_id\" value=\"$agent_id\">\n" ;
print "<input type=\"hidden\" name=\"new_agent\" value=\"$record->{fullname}\">\n" ;
print "<input type=\"hidden\" name=\"new_codename\" value=\"$record->{codename}\">\n" ;
print "<tr><td colspan=\"1\" hegiht=\"10\"><INPUT TYPE=\"submit\" VALUE=\"go to view the budget as a whole\"></td></tr>\n" ;
print "</td></tr></table>\n" ;
print "</FORM>\n" ;
}
# print "<br><br><a href=\"$script_name?action=prepare_expenditure&budget_id=$budget_id\">add or ammend more expenditure items</a>\n";
# print "<br><br><a href=\"$script_name?action=compile_budget&budget_id=$budget_id\">got to view the budget as a whole</a>\n";
print "</center>\n" ;
print "</body>\n" ;
print "</html>\n" ;
$ dbh - > disconnect ;
}
############################################################################
# prepare agents
sub prepare_agents {
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
my $ sql = qq( SELECT * FROM agents WHERE budget_id = $budget_id ORDER BY lastname ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
my $ sqlc = qq( SELECT COUNT ( * ) AS count FROM agents WHERE budget_id = $budget_id ) ;
my $ sthc = $ dbh - > prepare ( $ sqlc ) ;
$ sthc - > execute ;
my $ sqln = qq( SELECT name FROM budgets where id = $budget_id ) ;
my $ sthn = $ dbh - > prepare ( $ sqln ) ;
$ sthn - > execute ;
& print_header ;
print "<center>\n" ;
print "<table width=\"700\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#ffffff\">\n" ;
print "<tr><td><table width=\"700\" cellspacing=\"5\" cellpadding=\"2\" bgcolor=\"#ffffff\" border=\"0\">\n" ;
print "<tr><td class=\"lge\" align=\"center\" bgcolor=\"#fff000\" colspan=\"5\"><font color=\"#000000\"><b>feral budget generator</b></td></tr>\n" ;
while ( my $ recordn = $ sthn - > fetchrow_hashref ) {
print "<tr><td height=\"10\" class=\"medbig\" colspan=\"5\"><b> Agents: $recordn->{name}</td></tr>" ;
}
print "<tr><td></td><td><b>firstname</b></td><td><b>lastname</b></td><td colspan=\"2\"><b>codename</b></td><td></tr>\n" ;
for ( $ i = 1 ; $ i <= 50 ; $ i + + ) {
while ( my $ record = $ sth - > fetchrow_hashref ) {
print "<FORM ACTION=\"$script_name\" METHOD=\"GET\">\n" ;
print "<input type=\"hidden\" name=\"action\" value=\"edit_agent\">\n" ;
print "<input type=\"hidden\" name=\"budget_id\" value=\"$budget_id\">\n" ;
print "<input type=\"hidden\" name=\"agent_id\" value=\"$agent_id\">\n" ;
print "<input type=\"hidden\" name=\"edit_agent_id\" value=\"$record->{id}\">\n" ;
print "<input type=\"hidden\" name=\"new_firstname\" value=\"$record->{firstname}\">\n" ;
print "<input type=\"hidden\" name=\"new_lastname\" value=\"$record->{lastname}\">\n" ;
print "<input type=\"hidden\" name=\"new_codename\" value=\"$record->{codename}\">\n" ;
print "<tr><td><INPUT TYPE=\"submit\" VALUE=\"$i\"></td>\n" ;
print "<td>$record->{firstname}</td>\n" ;
print "<td>$record->{lastname}</td>\n" ;
print "<td>$record->{codename}</td>\n" ;
print "</FORM>\n" ;
$ i + +
}
}
print "<FORM ACTION=\"$script_name\" METHOD=\"GET\">\n" ;
print "<input type=\"hidden\" name=\"action\" value=\"input_agents\">\n" ;
print "<input type=\"hidden\" name=\"budget_id\" value=\"$budget_id\">\n" ;
print "<input type=\"hidden\" name=\"agent_id\" value=\"$agent_id\">\n" ;
while ( my $ recordc = $ sthc - > fetchrow_hashref ) {
my $ c = ( $ recordc - > { count } ) ;
for ( $ i = 1 + $ c ; $ i <= 50 ; $ i + + ) {
print "<tr><td><b>$i.</b></td>\n" ;
print "<td><input type=\"text\" name=\"new_firstname$i\" size=20 maxsize=40></td>\n" ;
print "<td><input type=\"text\" name=\"new_lastname$i\" size=20 maxsize=40></td>\n" ;
print "<td><input type=\"text\" name=\"new_codename$i\" size=10 maxsize=10></td>\n" ;
# $i++
}
}
print "<tr><td><INPUT TYPE=\"submit\" VALUE=\"submit\"></td></tr>\n" ;
print "</FORM>\n" ;
print "<tr><td><BR><BR></td></tr>\n" ;
}
############################################################################
# edit agent
sub edit_agent {
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
# read in agent data
& print_header ;
print "<center>\n" ;
print "<table width=\"700\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#ffffff\">\n" ;
print "<tr><td><table width=\"700\" cellspacing=\"5\" cellpadding=\"2\" bgcolor=\"#ffffff\" border=\"0\">\n" ;
print "<tr><td class=\"lge\" align=\"center\" bgcolor=\"#fff000\" colspan=\"5\"><font color=\"#000000\"><b>feral budget generator</b></td></tr>\n" ;
print "<tr><td height=\"10\" class=\"medbig\" colspan=\"5\"><b> Edit agent</td></tr>" ;
print "<FORM ACTION=\"$script_name\" METHOD=\"GET\">\n" ;
print "<input type=\"hidden\" name=\"action\" value=\"update_agent\">\n" ;
print "<input type=\"hidden\" name=\"budget_id\" value=\"$budget_id\">\n" ;
print "<input type=\"hidden\" name=\"agent_id\" value=\"$agent_id\">\n" ;
print "<input type=\"hidden\" name=\"edit_agent_id\" value=\"$edit_agent_id\">\n" ;
print "<td><input type=\"text\" name=\"new_firstname\" value=\"$new_firstname\" size=20 maxsize=40></td>\n" ;
print "<td><input type=\"text\" name=\"new_lastname\" value=\"$new_lastname\" size=20 maxsize=40></td>\n" ;
print "<td><input type=\"text\" name=\"new_codename\" value=\"$new_codename\" size=10 maxsize=10></td>\n" ;
print "<tr><td><INPUT TYPE=\"submit\" VALUE=\"submit\"></td></tr>\n" ;
print "</FORM>\n" ;
print "</table>\n" ;
print "<table><tr><td height=\"10\"></td></tr>\n" ;
print "</table>\n" ;
print "<FORM ACTION=\"$script_name\"METHOD=\"GET\">\n" ;
print "<input type=\"hidden\" name=\"action\" value=\"prepare_agents\">\n" ;
print "<input type=\"hidden\" name=\"new_name\" value=\"$record->{name}\">\n" ;
print "<input type=\"hidden\" name=\"budget_id\" value=\"$budget_id\">\n" ;
print "<input type=\"hidden\" name=\"agent_id\" value=\"$agent_id\">\n" ;
print "<input type=\"hidden\" name=\"new_agent\" value=\"$record->{fullname}\">\n" ;
print "<input type=\"hidden\" name=\"new_codename\" value=\"$record->{codename}\">\n" ;
print "<table><tr><td colspan=\"1\" height=\"20\"><INPUT TYPE=\"submit\" VALUE=\"return to agents overview\"></td></tr>\n" ;
print "</FORM>\n" ;
print "</center>\n" ;
print "</body>\n" ;
print "</html>\n" ;
$ dbh - > disconnect ;
}
############################################################################
# update agent
sub update_agent {
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
my $ sql = ( qq{ UPDATE agents set firstname='$new_firstname', lastname='$new_lastname', fullname='$new_firstname $new_lastname', codename='$new_codename' WHERE budget_id=$budget_id AND id=$edit_agent_id } ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
# read back agent info
& print_header ;
print "<center>\n" ;
print "<table width=\"700\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#ffffff\">\n" ;
print "<tr><td><table width=\"700\" cellspacing=\"5\" cellpadding=\"2\" bgcolor=\"#ffffff\" border=\"0\">\n" ;
print "<tr><td class=\"lge\" align=\"center\" bgcolor=\"#fff000\" colspan=\"5\"><font color=\"#000000\"><b>feral budget generator</b></td></tr>\n" ;
print "<table><tr><td height=\"10\"></td></tr>\n" ;
print "</table>\n" ;
print "<FORM ACTION=\"$script_name\"METHOD=\"GET\">\n" ;
print "<input type=\"hidden\" name=\"action\" value=\"prepare_agents\">\n" ;
print "<input type=\"hidden\" name=\"new_name\" value=\"$record->{name}\">\n" ;
print "<input type=\"hidden\" name=\"budget_id\" value=\"$budget_id\">\n" ;
print "<input type=\"hidden\" name=\"agent_id\" value=\"$agent_id\">\n" ;
print "<table><tr><td colspan=\"1\" height=\"20\"><INPUT TYPE=\"submit\" VALUE=\"return to agents overview\"></td></tr>\n" ;
print "</FORM>\n" ;
print "</center>\n" ;
print "</body>\n" ;
print "</html>\n" ;
$ dbh - > disconnect ;
}
############################################################################
# input agents
sub input_agents {
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
for ( $ i = 1 ; $ i <= 50 ; $ i + + ) {
if ( $ new_firstname { $ i } ne '' ) {
my $ sql = ( qq{ INSERT INTO agents (budget_id, firstname, lastname, fullname, codename) VALUES ($budget_id, '$new_firstname { $i } ', '$new_lastname { $i } ', '$new_firstname { $i } $new_lastname { $i } ','$new_codename { $i } ') } ) ;
# my $sql = (qq{INSERT INTO agents (budget_id, firstname, lastname, codename) VALUES ($budget_id, '$new_firstname{i}', '$new_lastname{i}', '$new_codename{i}')});
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
}
}
# read back agent info
& print_header ;
print "<center>\n" ;
print "<table width=\"700\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#ffffff\">\n" ;
print "<tr><td><table width=\"700\" cellspacing=\"5\" cellpadding=\"2\" bgcolor=\"#ffffff\" border=\"0\">\n" ;
print "<tr><td class=\"lge\" align=\"center\" bgcolor=\"#fff000\" colspan=\"5\"><font color=\"#000000\"><b>feral budget generator</b></td></tr>\n" ;
print "<table><tr><td height=\"10\"></td></tr>\n" ;
print "</table>\n" ;
print "<FORM ACTION=\"$script_name\"METHOD=\"GET\">\n" ;
print "<input type=\"hidden\" name=\"action\" value=\"prepare_agents\">\n" ;
print "<input type=\"hidden\" name=\"new_name\" value=\"$record->{name}\">\n" ;
print "<input type=\"hidden\" name=\"budget_id\" value=\"$budget_id\">\n" ;
print "<input type=\"hidden\" name=\"agent_id\" value=\"$agent_id\">\n" ;
print "<table><tr><td colspan=\"1\" height=\"20\"><INPUT TYPE=\"submit\" VALUE=\"return to agents overview\"></td></tr>\n" ;
print "</FORM>\n" ;
print "</center>\n" ;
print "</body>\n" ;
print "</html>\n" ;
$ dbh - > disconnect ;
}
############################################################################
# add form
sub add_form {
& print_header ;
print "<center>\n" ;
print "<b> $projectname:</b> add a budget \n" ;
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
my $ sql = qq( SELECT DISTINCT * FROM budgets ORDER BY id ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
print "<h3> </h3>\n" ;
print "\n" ;
print "<table width=\"600\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#efefef\">\n" ;
print "<tr><td><b>Budget</b><td><b>Date</b></td><td><b></b></td></tr>" ;
while ( my $ record = $ sth - > fetchrow_hashref ) {
print "<tr><td>" ;
print "<a href=\"$script_name?action\=edit_form&edit_id=$record->{id}\">$record->{name}</a> </td>" ;
print "<td>$record->{date}</td>" ;
print "<td></td>" ;
print "</tr>" ;
}
print "<tr><td> </td></tr>\n" ;
$ dbh - > disconnect ;
print "<FORM ACTION=\"$script_name\"METHOD=\"GET\">\n" ;
print "<input type=\"hidden\" name=\"action\" value=\"add_budget\">\n" ;
print "<tr><td><b>add a new budget</b><br>\n" ;
print "<input type=\"text\" name=\"new_name\" size=60 maxsize=80><br></td>\n" ;
print "<td><b>date</b><br>" ;
print "<td><b></b><br>\n" ;
print "<tr><td> </td></tr>\n" ;
#print "<tr><td><b>password</b></td></tr>\n";
#print "<td><input type=\"password\" name=\"password\" size=10 value=\"\"maxsize=20></td></tr>\n";
print "<tr><td><br><INPUT TYPE=\"submit\" VALUE=\"add\"></td></tr>\n" ;
print "</FORM>\n" ;
print "</table>\n" ;
& print_footer ;
$ dbh - > disconnect ;
}
###############################################################################
# add budget
sub add_budget {
#if ($password eq $admin_password) {
### test if workshop exists already in database
if ( $ new_name ne '' ) {
$ new_name_found = 'false' ;
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
my $ sql = qq( SELECT DISTINCT name FROM budgets ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
while ( my $ record = $ sth - > fetchrow_hashref ) {
if ( $ record - > { name } eq $ new_name ) {
$ new_name_found = 'true' ;
}
}
if ( $ new_name_found eq 'false' ) {
my $ sql = ( qq{ INSERT INTO budgets (name) VALUES ('$new_name') } ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
my $ sql2 = ( qq{ SELECT * from budgets where name='$new_name' } ) ;
my $ sth2 = $ dbh - > prepare ( $ sql2 ) ;
$ sth2 - > execute ;
$ dbh - > disconnect ;
& print_header ;
while ( my $ record2 = $ sth2 - > fetchrow_hashref ) {
print "<center>\n" ;
print "<table width=\"800\" cellspacing=\"0\" cellpadding=\"2\" bgcolor=\"#efefef\">\n" ;
print "<tr><td>budget added <a href=\"$script_name?action=edit_form&edit_id=$record2->{id}\">$new_name</a></td></tr>\n" ;
print "</table>\n" ;
}
& print_footer ;
} else {
& print_header ;
print "duplicate budget entry<br>\n" ;
& print_footer ;
}
} else {
& print_header ;
print "no budget entered<br>\n" ;
& print_footer ;
}
#} else {
#&print_header;
#print "<h3>Wrong password !</h3><p>\n";
#&print_footer;
# }
}
###############################################################################
# add budget information
sub add_budget_information {
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
my $ sql = ( qq{ UPDATE budgets SET location='$new_location', deliver_date='$new_deliver_date', remarks='$new_remarks',
WHERE name = '$new_name' } ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
$ dbh - > disconnect ;
& print_header ;
print "<center>\n" ;
print "<b> $projectname:</b> $new_name added " ;
#print "$add_information \n";
print "<p><a href=\"$script_name?action=display_budgets\">view all budgets</a></p>\n" ;
print "<p><a href=\"$script_name\"></a></p>\n" ;
& print_footer ;
}
###############################################################################
# edit select form: select which budget to edit
sub edit_select_form {
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
my $ sql = qq( SELECT DISTINCT * FROM budgets ORDER BY id ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
& print_header ;
print "<center>\n" ;
print "<b> edit a budget <br> \n" ;
print "<table width=\"500\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#efefef\">\n" ;
print "<FORM ACTION=\"$script_name\" METHOD=\"GET\">\n" ;
print "<input type=\"hidden\" name=\"action\" value=\"edit_form\">\n" ;
while ( my $ record = $ sth - > fetchrow_hashref ) {
print "<tr><td><input type=\"radio\" name=\"edit_id\" value=\"$record->{id}\"</td> \n" ;
print " <td>$record->{name}\n" ;
}
print "<tr><td colspan=\"2\"><INPUT TYPE=\"submit\" VALUE=\"edit budget\"></td></tr>\n" ;
print "</FORM>\n" ;
print "</table>\n" ;
$ dbh - > disconnect ;
& print_footer ;
}
###############################################################################
# edit form: edit selected budget
sub edit_form {
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
my $ sql = qq( SELECT DISTINCT * FROM budgets WHERE id=$edit_id ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
& print_header ;
print "<center>\n" ;
print "<h3> $projectname: edit budget</h3>\n" ;
# print "<img src=\"$image_url/thumb/$edit_id.jpg\" width=\"100\"border=0\" alt=\"\">\n";
print "<table width=\"800\" cellspacing=\"0\" cellpadding=\"2\" bgcolor=\"#efefef\">\n" ;
print "<tr><td bgcolor=\"#ffffff\"> </td></tr>\n" ;
print "<FORM ACTION=\"$script_name\" METHOD=\"GET\">\n" ;
print "<input type=\"hidden\" name=\"action\" value=\"edit_budget\">\n" ;
print "<input type=\"hidden\" name=\"edit_id\" value=\"$edit_id\">\n" ;
while ( my $ record = $ sth - > fetchrow_hashref ) {
print "<tr><td class=\"mini\"><i></i> <input type=\"text\" name=\"new_name\" value=\"$record->{name}\"size=50 maxsize=100></td></tr>\n" ;
print "<tr><td class=\"mini\"><input type=\"text\" name=\"new_location\" value=\"$record->{location}\"size=50 maxsize=100> location</td></tr>\n" ;
print "<tr><td class=\"mini\"><input type=\"text\" name=\"new_url\" value=\"$record->{url}\"size=100 maxsize=100> url</td></tr>\n" ;
print "<tr><td><b><a href=\"$script_name?action=edit_field&edit_id=$edit_id&edit_field=remarks\">Remarks:</a></b> When, where, who</td></tr>\n" ;
print "<tr><td class=\"\"><TEXTAREA name=\"new_remarks\" ROWS=\"16\" COLS=\"120\" WRAP=SOFT>$record->{remarks}</TEXTAREA></td></tr>\n" ;
print "<tr><td><b></b></td></tr>\n" ;
# print "<tr><td><i>password</i></td></tr><tr><td><input type=\"password\" name=\"password\" size=10 value=\"\"maxsize=20></td></tr>\n";
print "<tr><td><INPUT TYPE=\"submit\" VALUE=\"edit budget\"></td></tr>\n" ;
print "</FORM>\n" ;
print "</table>\n" ;
print "</table>\n" ;
}
& print_footer ;
}
###############################################################################
# present budget: present singlebudget
sub present_budget {
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
my $ sql = qq( SELECT DISTINCT * FROM budgets WHERE id=$edit_id ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
& print_header ;
# print "<center>\n";
print "<h3> $projectname: budget notes</h3>\n" ;
# print "<img src=\"$image_url/thumb/$edit_id.jpg\" width=\"100\"border=0\" alt=\"\">\n";
print "<table width=\"1000\" cellspacing=\"20\" cellpadding=\"0\" bgcolor=\"#ffffff\">\n" ;
print "<input type=\"hidden\" name=\"edit_id\" value=\"$edit_id\">\n" ;
while ( my $ record = $ sth - > fetchrow_hashref ) {
$ record - > { remarks } =~ s/\n/\<br>/g ;
print "<tr><td bgcolor=\"fff000\" class=\"max\"><i></i>$record->{name}, \n" ;
print "$record->{location}</td><td> </td></tr>\n" ;
print "<tr><td class=\"med\"><a href=\"$record->{url}\">$record->{url}</a></td></tr>\n" ;
# print "<tr><td height=\"20\"><b></b></td></tr>\n";
print "<tr><td class=\"max\"><b>Remarks:</b> When, where, who</td></tr>\n" ;
print "<tr><td class=\"med\">$record->{remarks}</td></tr>\n" ;
# print "<tr><td height=\"20\"><b></b></td></tr>\n";
# print "<tr><td><i>password</i></td></tr><tr><td><input type=\"password\" name=\"password\" size=10 value=\"\"maxsize=20></td></tr>\n";
print "<tr><td></td></tr>\n" ;
print "</table>\n" ;
print "</table>\n" ;
}
& print_footer ;
}
###############################################################################
# edit budget: edit budget results
sub edit_budget {
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
#if ($password eq $admin_password) {
& print_header ;
### update budgets table
my $ sql_update = ( qq{ UPDATE budgets SET name='$new_name', location='$new_location', url='$new_url', remarks='$new_remarks', deliver_date="$new_deliver_date" WHERE id='$edit_id' } ) ;
my $ sth_update = $ dbh - > prepare ( $ sql_update ) ;
$ sth_update - > execute ;
### display results
my $ sql = qq( SELECT * FROM budgets WHERE id = '$edit_id' ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
while ( my $ record = $ sth - > fetchrow_hashref ) {
print "<center>\n" ;
# print "<a href=\"$image_url$edit_id.jpg\" border=\"0\"><img src=\"$image_url/thumb/$edit_id.jpg\" width=\"100\"border=0\" alt=\"\"></a>\n";
print "<table width=\"300\" cellspacing=\"0\" cellpadding=\"2\" bgcolor=\"#efefef\">\n" ;
print "<tr><td bgcolor=\"#ffffff\">updated</td></tr>\n" ;
print "<tr><td><a href=\"$script_name?action=edit_form&edit_id=$edit_id\">$record->{name}</a></td></tr>\n" ;
print "</table><br>" ;
}
$ dbh - > disconnect ;
& print_footer ;
}
###############################################################################
# delete form: select a budget to delete
sub delete_form {
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
my $ sql = qq( SELECT DISTINCT * FROM budgets ORDER BY id ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
& print_header ;
print "<center>\n" ;
print "<b> delete a budget <br> \n" ;
print "<table width=\"800\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#efefef\">\n" ;
print "<FORM ACTION=\"$script_name\" METHOD=\"GET\">\n" ;
print "<input type=\"hidden\" name=\"action\" value=\"delete_budget\">\n" ;
while ( my $ record = $ sth - > fetchrow_hashref ) {
# print "<input type=\"hidden\" name=\"new_name\" value=\"$record->{name}\">\n";
print "<tr><td><input type=\"radio\" name=\"delete_id\" value=\"$record->{id}\"</td> \n" ;
print " <td>$record->{name}\n" ;
print "$record->{location}\n" ;
}
print "<tr><td><b>password</b></td><td><input type=\"password\" name=\"password\" size=10 value=\"\"maxsize=20></td></tr>\n" ;
print "<tr><td colspan=\"2\"><INPUT TYPE=\"submit\" VALUE=\"delete budget\"></td></tr>\n" ;
print "</FORM>\n" ;
print "</table>\n" ;
$ dbh - > disconnect ;
& print_footer ;
}
###############################################################################
# delete budget: budget delete results
sub delete_budget {
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
my $ sql = ( qq{ SELECT * FROM budgets WHERE id = '$delete_id' } ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
my $ sql2 = ( qq{ DELETE FROM budgets WHERE id = '$delete_id' } ) ;
my $ sth2 = $ dbh - > prepare ( $ sql2 ) ;
$ sth2 - > execute ;
while ( my $ record = $ sth - > fetchrow_hashref ) {
& print_header ;
print "$record->{name} deleted\n" ;
}
& print_footer ;
$ dbh - > disconnect ;
}
###############################################################################
# display budget: displays all budgets
sub display_budgets {
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
my $ sql = qq( SELECT DISTINCT * FROM budgets ORDER BY id ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
& print_header ;
print "<center>\n" ;
print "<h3> $projectname: all budgets: edit mode</h3>\n" ;
print "<table width=\"1000\" cellspacing=\"2\" cellpadding=\"2\" bgcolor=\"#ffffff\"\">\n" ;
print "<tr><td bgcolor=\"#ffffff\"><b>Budget</b></td><td bgcolor=\"#ffffff\"><b>Location</b></td><td bgcolor=\"#ffffff\"><b>Date</b></td><td bgcolor=\"#ffffff\"><b>URL</b></td></tr>\n" ;
while ( my $ record = $ sth - > fetchrow_hashref ) {
print "<tr>\n" ;
print "<td bgcolor=\"#efefef\"><a href=\"$script_name?action\=edit_form&edit_id=$record->{id}\">$record->{name}</a></td>" ;
print "<td bgcolor=\"#efefef\">$record->{location}</td>" ;
print "<td bgcolor=\"#efefef\">$record->{deliver_date}</td>" ;
print "<td bgcolor=\"#efefef\"><a href=\"$record->{url}\">$record->{url}</a></td>" ;
# print "<td bgcolor=\"#efefef\"><img src=\"$image_url/thumb/$record->{id}.jpg\" width=\"100\"border=\"0\" title=\"edit $record->{name}\" alt=\"\"></td>";
print "</td></tr>\n" ;
}
$ dbh - > disconnect ;
print "</table>\n" ;
& print_footer ;
}
###############################################################################
# list budgets: list all budgets, non-edit mode
sub list_budgets {
my $ dbh = DBI - > connect ( $ db_conect , $ db_user , $ db_pass )
or die ( "can't connect: $DBI::errstr" ) ;
my $ sql = qq( SELECT DISTINCT * FROM budgets ORDER BY id ) ;
my $ sth = $ dbh - > prepare ( $ sql ) ;
$ sth - > execute ;
& print_header ;
print "<center>\n" ;
print "<h3> $projectname: all budgets: read-only</h3>\n" ;
print "<table width=\"1000\" cellspacing=\"2\" cellpadding=\"2\" bgcolor=\"#ffffff\"\">\n" ;
print "<tr><td bgcolor=\"#ffffff\"><b>Budget</b></td><td bgcolor=\"#ffffff\"><b>Location</b></td><td bgcolor=\"#ffffff\"><b>Date</b></td><td bgcolor=\"#ffffff\"><b>URL</b></td></tr>\n" ;
while ( my $ record = $ sth - > fetchrow_hashref ) {
print "<tr>\n" ;
print "<td bgcolor=\"#efefef\"><a href=\"$script_name?action\=present_budget&edit_id=$record->{id}\">$record->{name}</a></td>" ;
print "<td bgcolor=\"#efefef\">$record->{location}</td>" ;
print "<td bgcolor=\"#efefef\">$record->{deliver_date}</td>" ;
print "<td bgcolor=\"#efefef\"><a href=\"$record->{url}\">$record->{url}</a></td>" ;
# print "<td bgcolor=\"#efefef\"><img src=\"$image_url/thumb/$record->{id}.jpg\" width=\"100\"border=\"0\" title=\"edit $record->{name}\" alt=\"\"></td>";
print "</td></tr>\n" ;
}
$ dbh - > disconnect ;
print "</table>\n" ;
& print_footer ;
}
##############################################################################################
# select start date subroutine
sub select_start_date {
### day
print "<td colspan=\"2\"><select name=\"new_start_day\">\n" ;
for ( $ i = 1 ; $ i < 10 ; $ i += 1 ) {
print "<option" ;
if ( $ new_start_day eq "0$i" ) {
print " selected" ;
}
if ( ( $ new_start_day eq "" ) && ( $ currentdayofmonth eq $ i ) ) {
print " selected" ;
}
print ">0$i</option>\n" ;
}
for ( $ i = 10 ; $ i < 32 ; $ i += 1 ) {
print "<option" ;
if ( $ new_start_day eq $ i ) {
print " selected" ;
}
if ( ( $ new_start_day eq "" ) && ( $ currentdayofmonth eq $ i ) ) {
print " selected" ;
}
print ">$i</option>\n" ;
}
print "</select>\n" ;
### month
print "<select name=\"new_start_month\">\n" ;
for ( $ j = 1 ; $ j < 10 ; $ j += 1 ) {
print "<option" ;
if ( $ new_start_month eq "0$j" ) {
print " selected" ;
}
if ( ( $ new_start_month eq "" ) && ( $ currentmonth eq $ j ) ) {
print " selected" ;
}
print ">0$j</option>\n" ;
}
for ( $ j = 10 ; $ j < 13 ; $ j += 1 ) {
print "<option" ;
if ( $ new_start_month eq $ j ) {
print " selected" ;
}
if ( ( $ new_start_month eq "" ) && ( $ currentmonth eq $ j ) ) {
print " selected" ;
}
print ">$j</option>\n" ;
}
print "</select>\n" ;
### year
print "<select name=\"new_start_year\">\n" ;
for ( $ j = 2003 ; $ j < 2022 ; $ j += 1 ) {
print "<option" ;
if ( $ new_start_year eq $ j ) {
print " selected" ;
}
if ( ( $ new_start_year eq "" ) && ( $ currentyear eq $ j ) ) {
print " selected" ;
}
print ">$j</option>\n" ;
}
print "</select></td></tr>\n" ;
}
###############################################################################
# print_header subroutine
sub print_header {
print << END ;
< ! DOCTYPE html >
< html lang = "en" >
<head>
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width" >
<title> feral budget generator </title>
< link rel = "stylesheet" href = "css/styles.css" >
< link rel = "stylesheet" href = "css/print.css" media = "print" >
</head>
END
}
###############################################################################
# print_footer subroutine
sub print_footer {
print << END ;
</body>
</html>
END
}
###############################################################################
# adminfooter subroutine
sub adminfooter {
print "<tr><td bgcolor=\"ffffff\" colspan=\"4\"><br><a href=\"$script_name?action\=display_budgets\">all budgets: edit</a></td></tr>\n" ;
print "<tr><td bgcolor=\"ffffff\" colspan=\"4\"><br><a href=\"$script_name?action\=list_budgets\">all budgets: list</a></td></tr>\n" ;
print "<tr><td bgcolor=\"ffffff\" colspan=\"4\"><br><a href=\"$script_name?action\=add_form\">add a budget</a> \ \; \|\n" ;
print "<a href=\"$script_name?action\=delete_form\">delete a budget</a> \ \; \n" ;
print "</center>\n" ;
print "</body>\n" ;
print "</html>\n" ;
}