add debugging to agent.cgi, make sure warnings are turned off when parsing templates...
[freeside.git] / FS / FS / ClientAPI / MyAccount.pm
index f2cd488..58ab6c0 100644 (file)
@@ -61,6 +61,11 @@ sub login {
                          );
   return { error => 'User not found.' } unless $svc_acct;
 
+  my $conf = new FS::Conf;
+  my $pkg_svc = $svc_acct->cust_svc->pkg_svc;
+  return { error => 'Only primary user may log in.' } 
+    if $conf->exists('selfservice_server-primary_only')
+       && ( ! $pkg_svc || $pkg_svc->primary_svc ne 'Y' );
 
   return { error => 'Incorrect password.' }
     unless $svc_acct->check_password($p->{'password'});
@@ -75,12 +80,6 @@ sub login {
     $session->{'custnum'} = $cust_main->custnum;
   }
 
-  my $conf = new FS::Conf;
-  my $pkg_svc = $svc_acct->cust_svc->pkg_svc;
-  return { error => 'Only primary user may log in.' } 
-    if $conf->exists('selfservice_server-primary_only')
-       && ( ! $pkg_svc || $pkg_svc->primary ne 'Y' );
-
   my $session_id;
   do {
     $session_id = md5_hex(md5_hex(time(). {}. rand(). $$))
@@ -239,7 +238,7 @@ sub payment_info {
 
   #list all counties/states/countries
   $return{'cust_main_county'} = 
-      [ map { $_->hashref } qsearch('cust_main_county', {}) ],
+      [ map { $_->hashref } qsearch('cust_main_county', {}) ];
 
   #shortcut for one-country folks
   my $conf = new FS::Conf;
@@ -542,6 +541,11 @@ sub order_pkg {
 
     if ( $cust_main->balance > $old_balance
          && $cust_main->payby !~ /^(BILL|DCRD|DCHK)$/ ) {
+      #this makes sense.  credit is "un-doing" the invoice
+      $cust_main->credit( sprintf("%.2f", $cust_main->balance - $old_balance ),
+                          'self-service decline' );
+      $cust_main->apply_credits( 'order' => 'newest' );
+
       $cust_pkg->cancel('quiet'=>1);
       return { 'error' => '_decline' };
     } else {