'type'        => 'checkbox',
   },
 
+  {
+    'key'         => 'unapplycredits',
+    'section'     => 'UI',
+    'description' => 'Enable "unapplication" of unclosed credits.',
+    'type'        => 'checkbox',
+  },
+
   {
     'key'         => 'dirhash',
     'section'     => 'shell',
 
--- /dev/null
+<%
+
+#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);
+
+%>
 
  == 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)
         $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";
     }
   }