have the UI use full country names, and state names outside the US...
[freeside.git] / FS / FS / part_bill_event.pm
index 4774b8d..98e15d4 100644 (file)
@@ -61,8 +61,8 @@ FS::Record.  The following fields are currently supported:
 
 =item new HASHREF
 
-Creates a new invoice event definition.  To add the example to the database,
-see L<"insert">.
+Creates a new invoice event definition.  To add the invoice event definition to
+the database, see L<"insert">.
 
 Note that this stores the hash reference, not a distinct copy of the hash it
 points to.  You can ask the object for a copy with the I<hash> method.
@@ -124,14 +124,18 @@ sub check {
 
     $c =~ /^\s*\$cust_main\->(suspend|cancel|invoicing_list_addpost|bill|collect)\(\);\s*("";)?\s*$/
 
-      or $c =~ /^\s*\$cust_bill\->(comp|realtime_(card|ach|lec)|realtime_card_cybercash|batch_card|send)\(\);\s*$/
+      or $c =~ /^\s*\$cust_bill\->(comp|realtime_(card|ach|lec)|batch_card|send)\(\);\s*$/
 
-      or $c =~ /^\s*\$cust_bill\->send\(\'\w+\'\);\s*$/
+      or $c =~ /^\s*\$cust_bill\->send(_if_newest)?\(\'[\w\-\s]+\'\s*(,\s*(\d+|\[\s*\d+(,\s*\d+)*\s*\])\s*,\s*'[\w\@\.\-\+]*'\s*)?\);\s*$/
 
       or $c =~ /^\s*\$cust_main\->apply_payments; \$cust_main->apply_credits; "";\s*$/
 
       or $c =~ /^\s*\$cust_main\->charge\( \s*\d*\.?\d*\s*,\s*\'[\w \!\@\#\$\%\&\(\)\-\+\;\:\"\,\.\?\/]*\'\s*\);\s*$/
 
+      or $c =~ /^\s*\$cust_main\->suspend_(if|unless)_pkgpart\([\d\,\s]*\);\s*$/
+
+      or $c =~ /^\s*\$cust_bill\->cust_suspend_if_balance_over\([\d\.\s]*\);\s*$/
+
       or do {
         #log
         return "illegal eventcode: $c";
@@ -156,7 +160,12 @@ sub check {
   if ( $self->plandata =~ /^(agent_)?templatename\s+(.*)$/m ) {
     my $name= $2;
 
-    foreach my $file (qw( template latex latexnotes )) {
+    foreach my $file (qw( template
+                          latex latexnotes latexreturnaddress latexfooter
+                            latexsmallfooter
+                          html htmlnotes htmlreturnaddress htmlfooter
+                     ))
+    {
       unless ( $conf->exists("invoice_${file}_$name") ) {
         $conf->set(
           "invoice_${file}_$name" =>
@@ -169,11 +178,32 @@ sub check {
   $self->SUPER::check;
 }
 
+=item templatename
+
+Returns the alternate invoice template name, if any, or false if there is
+no alternate template for this invoice event.
+
+=cut
+
+sub templatename {
+  my $self = shift;
+  if (    $self->plan     =~ /^send_(alternate|agent)$/
+       && $self->plandata =~ /^(agent_)?templatename (.*)$/m
+     )
+  {
+    $2;
+  } else {
+    '';
+  }
+}
+
+
 =back
 
 =head1 BUGS
 
-Alas.
+The whole "eventcode" idea is bunk.  This should be refactored with subclasses
+like part_pkg/ and part_export/
 
 =head1 SEE ALSO