feral-budget/f20-budget.pl

1896 lines
78 KiB
Perl
Raw Normal View History

2021-08-24 09:51:58 +00:00
#!/usr/bin/perl
use Switch;
use DBI;
use CGI qw(:cgi);
###############################################################################
# configuration
### server
$website_url='https://www.feraltrade.org/budget';
#### local
#$website_url='http://localhost';
$projectname='f20 budget';
$script_name='f20_budget.pl';
### server
$website_url='https://www.feraltrade.org';
$feral_logo="$website_url/budget/feral_pigeon.jpg";
### local
#$website_url='http://localhost';
$currency='€';
$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/';
# database connection
$db_conect="DBI:mysql:feralbudget";
$db_user="feraltrade";
$db_pass="********";
("DBI:mysql:feralbudget","feraltrade","********")
($db_conect,$db_user,$db_pass)
###############################################################################
# main 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/&rsquo;/g;
$new_resource{$i} = $q->param("new_resource$i");
$new_resource{$i} =~ s/\'/\'\'/g;
$new_resource{$i} =~ s/\x92/&rsquo;/g;
$new_labour{$i} = $q->param("new_labour$i");
$new_labour{$i} =~ s/\'/\'\'/g;
$new_labour{$i} =~ s/\x92/&rsquo;/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/&rsquo;/g;
$new_lastname{$i} = $q->param("new_lastname$i");
$new_lastname{$i} =~ s/\'/\'\'/g;
$new_lastname{$i} =~ s/\x92/&rsquo;/g;
$new_codename{$i} = $q->param("new_codename$i");
$new_codename{$i} =~ s/\'/\'\'/g;
$new_codename{$i} =~ s/\x92/&rsquo;/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; }
switch ($action)
{
'select_budget' {&select_budget; }
'add_form' {&add_form; }
'add_budget' {&add_budget; }
'add_budget_information' {&add_budget_information; }
'prepare_agents' {&prepare_agents; }
'input_agents' {&input_agents; }
'edit_agent' {&edit_agent; }
'update_agent' {&update_agent; }
'edit_form' {&edit_form; }
'edit_select_form' {&edit_select_form; }
'edit_budget' {&edit_budget; }
'list_budgets' {&list_budgets; }
'prepare_budget' {&prepare_budget; }
'prepare_money' {&prepare_money; }
'input_budget' {&input_budget; }
'input_money' {&input_money; }
'prepare_expenditure' {&prepare_expenditure; }
'input_expenditure' {&input_expenditure; }
'compile_budget' {&compile_budget; }
'display_budgets' {&display_budgets; }
'present_budget' {&present_budget; }
'delete_form' {&delete_form; }
'delete_budget' {&delete_budget; }
'select_budget' {&select_budget; }
'upload_image' {&upload_image; }
#else {&display_budgets; }
else {&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;
&header;
print "<center>\n";
print(qq(<table width="700" cellspacing="20" cellpadding="0" bgcolor="#cccccc">\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: enter agent </b></td></tr>\n";
print "<tr><td height=\"20\">&nbsp;</td></tr>\n";
print "<tr><td colspan=\"1\">budget:</td> ";
print "<FORM ACTION=\"$script_name\"METHOD=\"GET\">\n";
print "<input type=\"hidden\" name=\"action\" value=\"prepare_budget\">\n";
## 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 "<tr><td colspan=\"1\">enter your agent codename:</td> ";
print "<FORM ACTION=\"$script_name\"METHOD=\"GET\">\n";
print "<td colspan=\"3\"><input type=\"text\" name=\"new_codename\" value=\"\" size=\"5\" maxsize=\"5\"></td></tr>\n";
print "<tr><td colspan=\"2\"><INPUT TYPE=\"submit\" VALUE=\"ENTER\"></td></tr>\n";
print "</td></tr>\n";
print "</FORM>\n";
print "</td></tr></table></table>\n"; &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;
&header;
print "<center>\n";
print "<table width=\"1000\" cellspacing=\"20\" cellpadding=\"0\" bgcolor=\"#ffffff\">\n";
print "<tr><td><table width=\"900\" cellspacing=\"1\" 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> Instructions</td></tr>";
print "<tr><td height=\"10\" class=\"\" colspan=\"2\"><td align=\"center\" valign=\"top\"><BR><img src=\"$feral_logo\"></td>\n";
print "<td><table width=\"500\" border=\"0\"<tr><td class=\"serif\">";
print "Enter your budget requests &amp; contributions. You can return to edit your entries at any time. ";
# print "MONEY<font size=\"2px\">[1]</font> will remain anonymous, RESOURCES<font size=\"2px\">[2]</font> will be linked to the resource giver when the budget is activated. ";
# print "The MONEY & RESOURCES will together serve to bankroll the $record->{name} as a whole.";
print "<BR><BR></td></tr></table>\n";
print "<tr><table width=\"1000\" cellspacing=\"5\" cellpadding=\"2\" bgcolor=\"#ffffff\" border=\"0\"><td colspan=\"1\">budget name:</td> ";
print "<FORM ACTION=\"$script_name\"METHOD=\"GET\">\n";
print "<input type=\"hidden\" name=\"action\" value=\"input_budget\">\n";
print "<input type=\"hidden\" name=\"budget_id\" value=\"$record->{id}\">\n";
print "<input type=\"hidden\" name=\"agent_id\" value=\"$record2->{id}\">\n";
print "<input type=\"hidden\" name=\"new_codename\" value=\"$new_codename\">\n";
print "<td height=\"10\" colspan=\"2\" class=\"medbig\">";
print "<b>$record->{name}</b></td><tr>\n";
print "<tr><td colspan=\"1\">your name:</td> ";
print "<td height=\"10\" colspan=\"3\" class=\"medbig\">$record2->{firstname} $record2->{lastname}</td></tr>\n";
print "<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>";
print "</td></tr>\n";
print "<tr><td>\n";
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 "&euro; <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\">&euro;<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\">&nbsp;</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\">&nbsp;</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 {
& header;
print "codeame not recognised. please retry\n";
# }
}
}
&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");
&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}, '&euro;')});
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";
}
&footer;
# }
# }
}
###############################################################################
# input money
sub input_money {
my $dbh = DBI->connect($db_conect,$db_user,$db_pass)
or die ("can't connect: $DBI::errstr");
&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 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;
#}
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\">&euro;$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";
&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;
&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> &nbsp; &nbsp; | | &nbsp; &nbsp; 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 &nbsp;&nbsp;</b> | | $recordb->{location} &nbsp;&nbsp; ";
print " &nbsp;&nbsp;| |</b> <font size=\"\"> budget adjustments to $currentdayofmonth/$currentmonth/$currentyear</font></td></tr></table>";
# print " &nbsp;&nbsp;| |</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 &amp; 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\">&nbsp;</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 "&euro;$recordf->{amount} &nbsp;";
}
print "</td</tr>\n";
## actual paid deposits
while (my $recordar = $sthar->fetchrow_hashref) {
print "<tr><td class=\"serif\" colspan=\"1\">&nbsp;</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\">&euro;$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\">&euro;$display_runningex</td></tr>\n";
print "<tr><td class=\"serif\" colspan=\"9\" height=\"80\">BALANCE OF FINANCIAL TRADE:</td><td class=\"medbig\">&euro;$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 &amp;/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;
&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;
&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 = ('&euro;', '&pound;', '$');
@currencies = ('&euro;');
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 = ('&euro;', '&pound;', '$');
@currencies = ('&euro;');
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;
&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;
&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
&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
&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
&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 {
&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>&nbsp;</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>&nbsp;</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>&nbsp;</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";
&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;
&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";
}
&footer;
} else {
&header;
print "duplicate budget entry<br>\n";
&footer;
}
} else {
&header;
print "no budget entered<br>\n";
&footer;
}
#} else {
#&header;
#print "<h3>Wrong password !</h3><p>\n";
#&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;
&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";
&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;
&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;
&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;
&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\">&nbsp;</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";
}
&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;
&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>&nbsp;</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";
}
&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) {
&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;
&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;
&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;
&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) {
&header;
print "$record->{name} deleted\n";
}
&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;
&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";
&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;
&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";
&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";
}
###############################################################################
# header subroutine
sub 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
}
###############################################################################
# footer subroutine
sub 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> \&nbsp\; \|\n";
print "<a href=\"$script_name?action\=delete_form\">delete a budget</a> \&nbsp\; \n";
print "</center>\n";
print "</body>\n";
print "</html>\n";
}
}