summaryrefslogtreecommitdiff
path: root/FS/FS/msg_template.pm
diff options
context:
space:
mode:
authorJonathan Prykop <jonathan@freeside.biz>2015-06-22 18:34:27 -0500
committerJonathan Prykop <jonathan@freeside.biz>2015-07-03 20:53:47 -0500
commit4fe1fa31dffa6689d9cb88e2a0cda408b826b89d (patch)
tree31b0e094d8804cde15659b3bcdf7584c24953383 /FS/FS/msg_template.pm
parentf1d92e2f79225df5a4b6f56fcd616e016df425c0 (diff)
RT#34078: Payment History Report / Statement
Diffstat (limited to 'FS/FS/msg_template.pm')
-rw-r--r--FS/FS/msg_template.pm37
1 files changed, 34 insertions, 3 deletions
diff --git a/FS/FS/msg_template.pm b/FS/FS/msg_template.pm
index c52b633..fe8cbeb 100644
--- a/FS/FS/msg_template.pm
+++ b/FS/FS/msg_template.pm
@@ -269,7 +269,19 @@ invoicing_list addresses. Multiple addresses may be comma-separated.
=item substitutions
-A hash reference of additional substitutions
+A hash reference of additional string substitutions
+
+=item sub_param
+
+A hash reference, keys are the names of existing substitutions,
+values are an addition parameter object to pass to the subroutine
+for that substitution, e.g.
+
+ 'sub_param' => {
+ 'payment_history' => {
+ 'start_date' => 1434764295,
+ },
+ },
=back
@@ -327,7 +339,10 @@ sub prepare {
}
elsif( ref($name) eq 'ARRAY' ) {
# [ foo => sub { ... } ]
- $hash{$prefix.($name->[0])} = $name->[1]->($obj);
+ my @subparam = ();
+ push(@subparam, $opt{'sub_param'}->{$name->[0]})
+ if $opt{'sub_param'} && $opt{'sub_param'}->{$name->[0]};
+ $hash{$prefix.($name->[0])} = $name->[1]->($obj,@subparam);
}
else {
warn "bad msg_template substitution: '$name'\n";
@@ -340,7 +355,10 @@ sub prepare {
$hash{$_} = $opt{substitutions}->{$_} foreach keys %{$opt{substitutions}};
}
- $_ = encode_entities($_ || '') foreach values(%hash);
+ foreach my $key (keys %hash) {
+ next if $self->no_encode($key);
+ $hash{$key} = encode_entities($_ || '');
+ };
###
# clean up template
@@ -509,6 +527,13 @@ my $usage_warning = sub {
#my $conf = new FS::Conf;
+# for substitutions that handle their own encoding
+sub no_encode {
+ my $self = shift;
+ my $field = shift;
+ return ($field eq 'payment_history');
+}
+
#return contexts and fill-in values
# If you add anything, be sure to add a description in
# httemplate/edit/msg_template.html.
@@ -567,6 +592,12 @@ sub substitutions {
[ selfservice_server_base_url => sub {
$conf->config('selfservice_server-base_url') #, shift->agentnum)
} ],
+ [ payment_history => sub {
+ my $cust_main = shift;
+ my $param = shift || {};
+ #html works, see no_encode method
+ return '<PRE>' . encode_entities($cust_main->payment_history_text($param)) . '</PRE>';
+ } ],
],
# next_bill_date
'cust_pkg' => [qw(