summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/cust_main.pm4
-rw-r--r--FS/FS/payby.pm2
-rw-r--r--httemplate/elements/cust_payby.html6
3 files changed, 9 insertions, 3 deletions
diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm
index a202e3dde..0c109ceb9 100644
--- a/FS/FS/cust_main.pm
+++ b/FS/FS/cust_main.pm
@@ -2174,7 +2174,7 @@ sub cust_contact {
Returns all payment methods (see L<FS::cust_payby>) for this customer.
If one or more PAYBY are specified, returns only payment methods for specified PAYBY.
-Does not validate PAYBY--do not pass tainted values.
+Does not validate PAYBY.
=cut
@@ -2186,7 +2186,7 @@ sub cust_payby {
'hashref' => { 'custnum' => $self->custnum },
'order_by' => "ORDER BY payby IN ('CARD','CHEK') DESC, weight ASC",
};
- $search->{'extra_sql'} = ' AND payby IN ( ' . join(',', map { "'$_'" } @payby) . ' ) '
+ $search->{'extra_sql'} = ' AND payby IN ( ' . join(',', map { dbh->quote($_) } @payby) . ' ) '
if @payby;
qsearch($search);
diff --git a/FS/FS/payby.pm b/FS/FS/payby.pm
index 530d88d80..b84965587 100644
--- a/FS/FS/payby.pm
+++ b/FS/FS/payby.pm
@@ -41,6 +41,8 @@ Payment types.
# - a customer saved payment type (cust_payby.payby)
# - a payment or refund type (cust_pay.payby, cust_pay_batch.payby, cust_refund.payby)
+# customer methods that start with 'D' will be interpreted as on-demand
+
tie %hash, 'Tie::IxHash',
'CARD' => {
tinyname => 'card',
diff --git a/httemplate/elements/cust_payby.html b/httemplate/elements/cust_payby.html
index 5e0f09d3f..c7d4549df 100644
--- a/httemplate/elements/cust_payby.html
+++ b/httemplate/elements/cust_payby.html
@@ -216,7 +216,7 @@
</TABLE>
% }
-% unless ( $opt{'html_only'} ) {
+% unless ( $opt{'html_only'} || $payby_changed_init ) {
<SCRIPT TYPE="text/javascript">
function payby_changed(what) {
@@ -264,7 +264,11 @@
}
</SCRIPT>
+% $payby_changed_init = 1;
% }
+<%once>
+my $payby_changed_init = 0;
+</%once>
<%init>
my( %opt ) = @_;