freeside/FS/FS part_pkg.pm,1.30,1.31

ivan ivan at pouncequick.420.am
Tue Nov 30 19:35:09 PST 2004


Update of /home/cvs/cvsroot/freeside/FS/FS
In directory pouncequick:/tmp/cvs-serv24250/FS/FS

Modified Files:
	part_pkg.pm 
Log Message:
creditcard-less promo code signup

Index: part_pkg.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/part_pkg.pm,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- part_pkg.pm	26 Nov 2004 08:51:51 -0000	1.30
+++ part_pkg.pm	1 Dec 2004 03:35:05 -0000	1.31
@@ -453,9 +453,9 @@
 
 Returns a list of the acceptable payment types for this package.  Eventually
 this should come out of a database table and be editable, but currently has the
-following logic instead;
+following logic instead:
 
-If the package has B<0> setup and B<0> recur, the single item B<BILL> is
+If the package is free, the single item B<BILL> is
 returned, otherwise, the single item B<CARD> is returned.
 
 (CHEK?  LEC?  Probably shouldn't accept those by default, prone to abuse)
@@ -464,12 +464,32 @@
 
 sub payby {
   my $self = shift;
-  #if ( $self->setup == 0 && $self->recur == 0 ) {
-  if (    $self->setup =~ /^\s*0+(\.0*)?\s*$/
-       && $self->recur =~ /^\s*0+(\.0*)?\s*$/ ) {
+  if ( $self->is_free ) {
     ( 'BILL' );
   } else {
     ( 'CARD' );
+  }
+}
+
+=item is_free
+
+Returns true if this package is free.  
+
+=cut
+
+sub is_free {
+  my $self = shift;
+  unless ( $self->plan ) {
+    $self->setup =~ /^\s*0+(\.0*)?\s*$/
+      && $self->recur =~ /^\s*0+(\.0*)?\s*$/;
+  } elsif ( $self->can('is_free_options') ) {
+    not grep { $_ !~ /^\s*0*(\.0*)?\s*$/ }
+         map { $self->option($_) } 
+             $self->is_free_options;
+  } else {
+    warn "FS::part_pkg::is_free: FS::part_pkg::". $self->plan. " subclass ".
+         "provides neither is_free_options nor is_free method; returning false";
+    0;
   }
 }
 




More information about the freeside-commits mailing list