- web interface for hourly account charges!
[freeside.git] / FS / FS / cust_pay.pm
index b96e29f..51c7b29 100644 (file)
@@ -61,6 +61,8 @@ L<Time::Local> and L<Date::Parse> for conversion functions.
 
 =item paybatch - text field for tracking card processing
 
+=item closed - books closed flag, empty or `Y'
+
 =back
 
 =head1 METHODS
@@ -179,11 +181,17 @@ sub upgrade_replace { #1.3.x->1.4.x
       '_date'  => $self->_date,
     };
     $error = $cust_bill_pay->insert;
-    if ( $error ) {
+    if ( $error =~ 
+           /total cust_bill_pay.amount and cust_credit_bill.amount .* for invnum .* greater than cust_bill.charged/ ) {
+      #warn $error;
+      my $cust_bill = qsearchs( 'cust_bill', { 'invnum' => $self->invnum } );
+      $new->custnum($cust_bill->custnum);
+    } elsif ( $error ) {
       $dbh->rollback if $oldAutoCommit;
       return $error;
+    } else {
+      $new->custnum($cust_bill_pay->cust_bill->custnum);
     }
-    $new->custnum($cust_bill_pay->cust_bill->custnum);
   } else {
     die;
   }
@@ -208,7 +216,9 @@ Currently unimplemented (accounting reasons).
 =cut
 
 sub delete {
-  return "Can't (yet?) delete cust_pay records!";
+  my $self = shift;
+  return "Can't delete closed payment" if $self->closed =~ /^Y/i;
+  $self->SUPER::delete(@_);
 }
 
 =item replace OLD_RECORD
@@ -237,10 +247,11 @@ sub check {
     || $self->ut_money('paid')
     || $self->ut_numbern('_date')
     || $self->ut_textn('paybatch')
+    || $self->ut_enum('closed', [ '', 'Y' ])
   ;
   return $error if $error;
 
-  return "paid must be > 0 " if $self->paid == 0;
+  return "paid must be > 0 " if $self->paid <= 0;
 
   return "unknown cust_main.custnum: ". $self->custnum
     unless $self->invnum
@@ -251,6 +262,7 @@ sub check {
   $self->payby =~ /^(CARD|BILL|COMP)$/ or return "Illegal payby";
   $self->payby($1);
 
+  #false laziness with cust_refund::check
   if ( $self->payby eq 'CARD' ) {
     my $payinfo = $self->payinfo;
     $payinfo =~ s/\D//g;
@@ -306,7 +318,7 @@ sub unapplied {
 
 =head1 VERSION
 
-$Id: cust_pay.pm,v 1.11 2002-01-22 15:57:33 ivan Exp $
+$Id: cust_pay.pm,v 1.15 2002-01-29 16:33:15 ivan Exp $
 
 =head1 BUGS