summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/Conf.pm7
-rwxr-xr-xhttemplate/misc/unapply-cust_credit.cgi18
-rwxr-xr-xhttemplate/view/cust_main.cgi11
3 files changed, 35 insertions, 1 deletions
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index 99eee18ea..ecd2a9790 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -351,6 +351,13 @@ httemplate/docs/config.html
},
{
+ 'key' => 'unapplycredits',
+ 'section' => 'UI',
+ 'description' => 'Enable "unapplication" of unclosed credits.',
+ 'type' => 'checkbox',
+ },
+
+ {
'key' => 'dirhash',
'section' => 'shell',
'description' => 'Optional numeric value to control directory hashing. If positive, hashes directories for the specified number of levels from the front of the username. If negative, hashes directories for the specified number of levels from the end of the username. Some examples: <ul><li>1: user -> <a href="#home">/home</a>/u/user<li>2: user -> <a href="#home">/home</a>/u/s/user<li>-1: user -> <a href="#home">/home</a>/r/user<li>-2: user -> <a href="#home">home</a>/r/e/user</ul>',
diff --git a/httemplate/misc/unapply-cust_credit.cgi b/httemplate/misc/unapply-cust_credit.cgi
new file mode 100755
index 000000000..c658d2acc
--- /dev/null
+++ b/httemplate/misc/unapply-cust_credit.cgi
@@ -0,0 +1,18 @@
+<%
+
+#untaint crednum
+my($query) = $cgi->keywords;
+$query =~ /^(\d+)$/ || die "Illegal crednum";
+my $crednum = $1;
+
+my $cust_credit = qsearchs('cust_credit', { 'crednum' => $crednum } );
+my $custnum = $cust_credit->custnum;
+
+foreach my $cust_credit_bill ( $cust_credit->cust_credit_bill ) {
+ my $error = $cust_credit_bill->delete;
+ eidiot($error) if $error;
+}
+
+print $cgi->redirect($p. "view/cust_main.cgi?". $custnum);
+
+%>
diff --git a/httemplate/view/cust_main.cgi b/httemplate/view/cust_main.cgi
index ee5f86973..c41d2d894 100755
--- a/httemplate/view/cust_main.cgi
+++ b/httemplate/view/cust_main.cgi
@@ -554,6 +554,11 @@ function cust_pay_unapply_areyousure(href) {
== true)
window.location.href = href;
}
+function cust_credit_unapply_areyousure(href) {
+ if (confirm("Are you sure you want to unapply this credit?")
+ == true)
+ window.location.href = href;
+}
function cust_credit_areyousure(href) {
if (confirm("Are you sure you want to delete this credit?")
== true)
@@ -637,9 +642,13 @@ if ( $conf->config('payby-default') ne 'HIDE' ) {
$cust_credit->closed !~ /^Y/i && $conf->exists('deletecredits')
? qq! (<A HREF="javascript:cust_credit_areyousure('${p}misc/delete-cust_credit.cgi?!. $cust_credit->crednum. qq!')">delete</A>)!
: '';
+ my $unapply =
+ $cust_credit->closed !~ /^Y/i && $conf->exists('unapplycredits')
+ ? qq! (<A HREF="javascript:cust_credit_unapply_areyousure('${p}misc/unapply-cust_credit.cgi?!. $cust_credit->crednum. qq!')">unapply</A>)!
+ : '';
push @history,
"$date\tCredit #$crednum: $reason<BR>".
- "(applied to invoice #$invnum on $app_date)$delete\t\t\t$amount\t";
+ "(applied to invoice #$invnum on $app_date)$delete$unapply\t\t\t$amount\t";
}
}