From 18dc74fb078b0e7cf6fcb5d87dddba0bfc44c124 Mon Sep 17 00:00:00 2001 From: Nicolas Vigier Date: Mon, 13 May 2013 19:55:02 +0000 Subject: Rename mga-treasurer to mktreasurer git-svn-id: svn+ssh://svn.mageia.org/svn/soft/mga-treasurer/trunk@8226 5b7c3c08-40e5-403b-9995-ace06908e4af --- mga-treasurer | 138 ---------------------------------------------------------- mktreasurer | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 138 insertions(+), 138 deletions(-) delete mode 100755 mga-treasurer create mode 100755 mktreasurer diff --git a/mga-treasurer b/mga-treasurer deleted file mode 100755 index 786246b..0000000 --- a/mga-treasurer +++ /dev/null @@ -1,138 +0,0 @@ -#!/usr/bin/perl -w - -use strict; - -use YAML qw/LoadFile/; -use XML::Simple; -use Template; -use DateTime; -#use Data::Dump qw/dd/; - -my $config_file = '/usr/share/mga-treasurer/config'; -my $config = LoadFile($ENV{MGATRES_CONF} ? $ENV{MGATRES_CONF} : $config_file); -my $etc_config_file = '/etc/mga-treasurer.conf'; -my $etc_config = LoadFile($etc_config_file); - -foreach my $k (keys %{$etc_config}) { - $config->{$k} = $etc_config->{$k}; -} - - -sub donation_category { - my $r = shift; - my @c = grep {$_->{Na} eq 'Donation'} @{$r->{Category}}; - return @c ? $c[0]->{Nb} : undef; -} - -sub party_name { - my ($r, $Nb) = @_; - (grep { $_->{Nb} == $Nb } @{$r->{Party}})[0]->{Na}; -} - -sub subcat_name { - my ($r, $Nb, $Nbc) = @_; - (grep { $_->{Nb} == $Nb && $_->{Nbc} == $Nbc } - @{$r->{Sub_category}})[0]->{Na}; -} - -sub epoch_date { - my ($m, $d, $y) = split /\//, shift; - DateTime->new(day => $d, month => $m, year => $y)->epoch; -} - -sub donations_list { - my $r = shift; - my @res; - my $don_cat = donation_category($r); - my @donations = grep { $_->{Ca} == $don_cat } @{$r->{Transaction}}; - foreach my $don (@donations) { - my %d = ( - amount => $don->{Am}, - date => epoch_date($don->{Dt}), - who => party_name($r, $don->{Pa}), - type => subcat_name($r, $don->{Sca}, $don_cat), - $don->{No} ne '(null)' ? (notes => $don->{No}) : (), - ); - push @res, \%d; - } - return \@res; -} - -sub donations_infos { - my $r = shift; - my %res = ( - donations => donations_list($r), - by_month => {}, - by_year => {}, - total_30 => 0, - ); - foreach my $don (@{$res{donations}}) { - my $dt = DateTime->from_epoch(epoch => $don->{date}); - my $month = $dt->year . '-' . sprintf("%02d", $dt->month); - my $year = $dt->year; - push @{$res{by_month}->{$month}->{donations}}, $don; - $res{by_month}->{$month}->{year} = $year; - $res{by_month}->{$month}->{month} = $dt->month; - push @{$res{by_year}->{$year}->{donations}}, $don; - push @{$res{by_year}->{$year}->{months}}, $month; - if (time - $don->{date} < '2592000') { # last 30 days - $res{total_30} += $don->{amount}; - } - } - foreach my $d ((values $res{by_month}), (values $res{by_year})) { - foreach my $don (@{$d->{donations}}) { - $d->{total} += $don->{amount}; - $d->{type}->{$don->{type}} += $don->{amount}; - } - } - return \%res; -} - -sub process_template { - my ($template, $src, $vars, $dest) = @_; - foreach my $extension (@{$config->{output_format}}) { - next unless -f "$config->{tmpl_dir}/$src.$extension"; - $template->process("$src.$extension", $vars, "$dest.$extension"); - } -} - -sub output_pages { - my ($donations) = @_; - my $template = Template->new( - INCLUDE_PATH => $config->{tmpl_dir}, - OUTPUT_PATH => $config->{out_dir}, - ); - - my $last_update = (stat $config->{grisbi_file})[9]; - foreach my $month (keys $donations->{by_month}) { - my $vars = { - config => $config, - month => $month, - donations => $donations, - }; - process_template($template, 'donations_by_month', $vars, "donations_$month"); - } - - foreach my $year (keys $donations->{by_year}) { - my $vars = { - config => $config, - year => $year, - donations => $donations, - }; - process_template($template, 'donations_by_year', $vars, "donations_$year"); - } - - my $vars = { - config => $config, - donations => $donations, - last_update => $last_update, - }; - process_template($template, 'donations', $vars, 'donations'); - process_template($template, 'index', $vars, 'index'); -} - -my $r = XMLin($config->{grisbi_file}); -my $donations = donations_infos($r); - -output_pages($donations); - diff --git a/mktreasurer b/mktreasurer new file mode 100755 index 0000000..786246b --- /dev/null +++ b/mktreasurer @@ -0,0 +1,138 @@ +#!/usr/bin/perl -w + +use strict; + +use YAML qw/LoadFile/; +use XML::Simple; +use Template; +use DateTime; +#use Data::Dump qw/dd/; + +my $config_file = '/usr/share/mga-treasurer/config'; +my $config = LoadFile($ENV{MGATRES_CONF} ? $ENV{MGATRES_CONF} : $config_file); +my $etc_config_file = '/etc/mga-treasurer.conf'; +my $etc_config = LoadFile($etc_config_file); + +foreach my $k (keys %{$etc_config}) { + $config->{$k} = $etc_config->{$k}; +} + + +sub donation_category { + my $r = shift; + my @c = grep {$_->{Na} eq 'Donation'} @{$r->{Category}}; + return @c ? $c[0]->{Nb} : undef; +} + +sub party_name { + my ($r, $Nb) = @_; + (grep { $_->{Nb} == $Nb } @{$r->{Party}})[0]->{Na}; +} + +sub subcat_name { + my ($r, $Nb, $Nbc) = @_; + (grep { $_->{Nb} == $Nb && $_->{Nbc} == $Nbc } + @{$r->{Sub_category}})[0]->{Na}; +} + +sub epoch_date { + my ($m, $d, $y) = split /\//, shift; + DateTime->new(day => $d, month => $m, year => $y)->epoch; +} + +sub donations_list { + my $r = shift; + my @res; + my $don_cat = donation_category($r); + my @donations = grep { $_->{Ca} == $don_cat } @{$r->{Transaction}}; + foreach my $don (@donations) { + my %d = ( + amount => $don->{Am}, + date => epoch_date($don->{Dt}), + who => party_name($r, $don->{Pa}), + type => subcat_name($r, $don->{Sca}, $don_cat), + $don->{No} ne '(null)' ? (notes => $don->{No}) : (), + ); + push @res, \%d; + } + return \@res; +} + +sub donations_infos { + my $r = shift; + my %res = ( + donations => donations_list($r), + by_month => {}, + by_year => {}, + total_30 => 0, + ); + foreach my $don (@{$res{donations}}) { + my $dt = DateTime->from_epoch(epoch => $don->{date}); + my $month = $dt->year . '-' . sprintf("%02d", $dt->month); + my $year = $dt->year; + push @{$res{by_month}->{$month}->{donations}}, $don; + $res{by_month}->{$month}->{year} = $year; + $res{by_month}->{$month}->{month} = $dt->month; + push @{$res{by_year}->{$year}->{donations}}, $don; + push @{$res{by_year}->{$year}->{months}}, $month; + if (time - $don->{date} < '2592000') { # last 30 days + $res{total_30} += $don->{amount}; + } + } + foreach my $d ((values $res{by_month}), (values $res{by_year})) { + foreach my $don (@{$d->{donations}}) { + $d->{total} += $don->{amount}; + $d->{type}->{$don->{type}} += $don->{amount}; + } + } + return \%res; +} + +sub process_template { + my ($template, $src, $vars, $dest) = @_; + foreach my $extension (@{$config->{output_format}}) { + next unless -f "$config->{tmpl_dir}/$src.$extension"; + $template->process("$src.$extension", $vars, "$dest.$extension"); + } +} + +sub output_pages { + my ($donations) = @_; + my $template = Template->new( + INCLUDE_PATH => $config->{tmpl_dir}, + OUTPUT_PATH => $config->{out_dir}, + ); + + my $last_update = (stat $config->{grisbi_file})[9]; + foreach my $month (keys $donations->{by_month}) { + my $vars = { + config => $config, + month => $month, + donations => $donations, + }; + process_template($template, 'donations_by_month', $vars, "donations_$month"); + } + + foreach my $year (keys $donations->{by_year}) { + my $vars = { + config => $config, + year => $year, + donations => $donations, + }; + process_template($template, 'donations_by_year', $vars, "donations_$year"); + } + + my $vars = { + config => $config, + donations => $donations, + last_update => $last_update, + }; + process_template($template, 'donations', $vars, 'donations'); + process_template($template, 'index', $vars, 'index'); +} + +my $r = XMLin($config->{grisbi_file}); +my $donations = donations_infos($r); + +output_pages($donations); + -- cgit v1.2.1