#!/usr/bin/perl -T
use Config::General;
use HTML::Template;
use File::HomeDir;
use File::Spec::Functions;
use CGI qw/:standard/;
use strict;
use warnings;
my $config_directory = catdir(File::HomeDir->my_home, ".funds");
my $funds_info_filename = catfile($config_directory, "funds.info");
my $config_filename;
if (param()) {
my $name = param('n');
$config_filename = catfile($config_directory, "$name.config");
}
else {
$config_filename = catfile($config_directory, "config");
}
my %config = load_config($config_filename);
my %funds_info = load_config($funds_info_filename);
my $date = $funds_info{date};
my ($year, $month, $day) = split '-', $date;
my @invest;
my $sum = 0;
# use Data::Dumper;
# print Dumper(\%funds_info);
for my $code (keys %{$config{fund}}) {
my $data = $funds_info{$code};
my $investment = $config{fund}->{$code}{number} * $data->{net} - $config{fund}->{$code}{investment};
push @invest,
{
name => $data->{name},
income => sprintf("%.2f", $investment),
income_positive => $investment > 0,
diff => $data->{diff},
diff_positive => $data->{diff} > 0,
};
$sum += $investment;
}
my $m_tmpl = catfile($config_directory, "m.tmpl");
my $tmpl = HTML::Template->new(filename=>$m_tmpl);
$tmpl->param(YEAR=>$year);
$tmpl->param(MONTH=>$month);
$tmpl->param(DAY=>$day);
$tmpl->param(INVESTMENT_INFO=>\@invest);
$tmpl->param(TOTAL=>sprintf("%.2f", $sum));
$tmpl->param(TOTAL_POSITIVE=>$sum > 0);
print header(-type=>'text/html',
-charset=>'UTF-8'),
start_html(-title=>"移动简报",
-lang=>'zh-CN'),
$tmpl->output,
end_html;
sub load_config {
my $filename = shift;
my $conf = new Config::General($filename);
return $conf->getall;
}