add pkg_freq event condition, RT#8896
[freeside.git] / FS / FS / Misc.pm
index afe6c63..6799a24 100644 (file)
@@ -8,6 +8,7 @@ use Data::Dumper;
 use IPC::Run qw( run timeout );   # for _pslatex
 use IPC::Run3; # for do_print... should just use IPC::Run i guess
 use File::Temp;
+use Tie::IxHash;
 #do NOT depend on any FS:: modules here, causes weird (sometimes unreproducable
 #until on client machine) dependancy loops.  put them in FS::Misc::Something
 #instead
@@ -16,6 +17,7 @@ use File::Temp;
 @EXPORT_OK = qw( generate_email send_email send_fax
                  states_hash counties state_label
                  card_types
+                 pkg_freqs
                  generate_ps generate_pdf do_print
                  csv_from_fixed
                );
@@ -353,12 +355,16 @@ sub send_email {
     $smtp_opt{'ssl'} = 1 if defined($enc) && $enc eq 'tls';
     $transport = Email::Sender::Transport::SMTP->new( %smtp_opt );
   }
-
-  eval { sendmail($message, { transport => $transport }); };
-  ref($@) eq 'Email::Sender::Failure'
-    ? ( $@->code ? $@->code.' ' : '' ). $@->message
-    : $@;
-
+  
+  local $@; # just in case
+  eval { sendmail($message, { transport => $transport }) };
+  if(ref($@) and $@->isa('Email::Sender::Failure')) {
+    return ($@->code ? $@->code.' ' : '').$@->message
+  }
+  else {
+    return $@;
+  }
 }
 
 =item send_fax OPTION => VALUE ...
@@ -614,6 +620,39 @@ sub generate_ps {
 
 }
 
+=item pkg_freqs
+
+Returns a hash reference of allowed package billing frequencies.
+
+=cut
+
+sub pkg_freqs {
+  tie my %freq, 'Tie::IxHash', (
+    '0'    => '(no recurring fee)',
+    '1h'   => 'hourly',
+    '1d'   => 'daily',
+    '2d'   => 'every two days',
+    '3d'   => 'every three days',
+    '1w'   => 'weekly',
+    '2w'   => 'biweekly (every 2 weeks)',
+    '1'    => 'monthly',
+    '45d'  => 'every 45 days',
+    '2'    => 'bimonthly (every 2 months)',
+    '3'    => 'quarterly (every 3 months)',
+    '4'    => 'every 4 months',
+    '137d' => 'every 4 1/2 months (137 days)',
+    '6'    => 'semiannually (every 6 months)',
+    '12'   => 'annually',
+    '13'   => 'every 13 months (annually +1 month)',
+    '24'   => 'biannually (every 2 years)',
+    '36'   => 'triannually (every 3 years)',
+    '48'   => '(every 4 years)',
+    '60'   => '(every 5 years)',
+    '120'  => '(every 10 years)',
+  ) ;
+  \%freq;
+}
+
 =item generate_pdf FILENAME
 
 Returns an PDF rendition of the LaTex file, as a scalar.  FILENAME does not