add invoice event to suspend only when greater than N amount
[freeside.git] / httemplate / edit / part_bill_event.cgi
index 59a20ce..cc6bb47 100755 (executable)
@@ -83,16 +83,20 @@ sub select_pkgpart {
 
 sub select_agentnum {
   my $plandata = shift;
-  my $agentnum = $plandata->{'agentnum'};
-  '<SELECT NAME="agentnum">'.
+  #my $agentnum = $plandata->{'agentnum'};
+  my %agentnums = map { $_=>1 } split(/,\s*/, $plandata->{'agentnum'});
+  '<SELECT NAME="agentnum" MULTIPLE>'.
   join("\n", map {
     '<OPTION VALUE="'. $_->agentnum. '"'.
-    ( $_->agentnum == $agentnum ? ' SELECTED' : '' ).
+    ( $agentnums{$_->agentnum} ? ' SELECTED' : '' ).
     '>'. $_->agent
   } qsearch('agent', { 'disabled' => '' } ) ).
   '</SELECT>';
 }
 
+my $conf = new FS::Conf;
+my $money_char = $conf->config('money_char');
+
 #this is pretty kludgy right here.
 tie my %events, 'Tie::IxHash',
 
@@ -109,6 +113,12 @@ tie my %events, 'Tie::IxHash',
     'code'   => '$cust_main->suspend();',
     'weight' => 10,
   },
+  'suspend' => {
+    'name'   => 'Suspend if balance (this invoice and previous) over',
+    'code'   => '$cust_bill->cust_suspend_if_balance_over( %%%balanceover%%% );',
+    'html'   => " $money_char ". '<INPUT TYPE="text" SIZE="7" NAME="balanceover" VALUE="%%%balanceover%%%">',
+    'weight' => 10,
+  },
   'suspend-if-pkgpart' => {
     'name'   => 'Suspend packages',
     'code'   => '$cust_main->suspend_if_pkgpart(%%%if_pkgpart%%%);',
@@ -178,7 +188,7 @@ tie my %events, 'Tie::IxHash',
   },
 
   'send_if_newest' => {
-    'name' => 'Send invoice (email/print) with alternate template, if it is still the newest invoice (useful for late notices)',
+    'name' => 'Send invoice (email/print) with alternate template, if it is still the newest invoice (useful for late notices - set to 31 days or later)',
     'code' => '$cust_bill->send_if_newest(\'%%%if_newest_templatename%%%\');',
     'html' =>
         '<INPUT TYPE="text" NAME="if_newest_templatename" VALUE="%%%if_newest_templatename%%%">',
@@ -187,11 +197,11 @@ tie my %events, 'Tie::IxHash',
 
   'send_agent' => {
     'name' => 'Send invoice (email/print) ',
-    'code' => '$cust_bill->send(\'%%%agent_templatename%%%\', %%%agentnum%%%, \'%%%agent_invoice_from%%%\');',
+    'code' => '$cust_bill->send(\'%%%agent_templatename%%%\', [ %%%agentnum%%% ], \'%%%agent_invoice_from%%%\');',
     'html' => sub {
         '<TABLE BORDER=0>
           <TR>
-            <TD ALIGN="right">only for agent </TD>
+            <TD ALIGN="right">only for agent(s) </TD>
             <TD>'. &select_agentnum(@_). '</TD>
           </TR>
           <TR>
@@ -213,13 +223,26 @@ tie my %events, 'Tie::IxHash',
 
   'send_csv_ftp' => {
     'name' => 'Upload CSV invoice data to an FTP server',
-    'code' => '$cust_bill->send_csv( protocol => \'ftp\',
-                                     server   => \'%%%ftpserver%%%\',
-                                     username => \'%%%ftpusername%%%\',
-                                     password => \'%%%ftppassword%%%\',
-                                     dir      => \'%%%ftpdir%%%\'       );',
+    'code' => '$cust_bill->send_csv( protocol   => \'ftp\',
+                                     server     => \'%%%ftpserver%%%\',
+                                     username   => \'%%%ftpusername%%%\',
+                                     password   => \'%%%ftppassword%%%\',
+                                     dir        => \'%%%ftpdir%%%\',
+                                     \'format\' => \'%%%ftpformat%%%\',
+                                   );',
     'html' =>
-        '<TABLE BORDER=0><TR><TD ALIGN="right">FTP server: </TD>'.
+        '<TABLE BORDER=0>'.
+        '<TR><TD ALIGN="right">Format ("default" or "billco"): </TD>'.
+          '<TD>'.
+            '<!--'.
+            '<SELECT NAME="ftpformat">'.
+              '<OPTION VALUE="default">Default'.
+              '<OPTION VALUE="billco">Billco'.
+            '</SELECT>'.
+            '-->'.
+            '<INPUT TYPE="text" NAME="ftpformat" VALUE="%%%ftpformat%%%">'.
+          '</TD></TR>'.
+        '<TR><TD ALIGN="right">FTP server: </TD>'.
           '<TD><INPUT TYPE="text" NAME="ftpserver" VALUE="%%%ftpserver%%%">'.
           '</TD></TR>'.
         '<TR><TD ALIGN="right">FTP username: </TD><TD>'.
@@ -235,6 +258,63 @@ tie my %events, 'Tie::IxHash',
     'weight' => 50,
   },
 
+  'spool_csv' => {
+    'name' => 'Spool CSV invoice data',
+    'code' => '$cust_bill->spool_csv(
+                 \'format\' => \'%%%spoolformat%%%\',
+                 \'dest\'   => \'%%%spooldest%%%\',
+                 \'agent_spools\' => \'%%%spoolagent_spools%%%\',
+               );',
+    'html' => sub {
+       my $plandata = shift;
+
+       my $html =
+       '<TABLE BORDER=0>'.
+       '<TR><TD ALIGN="right">Format: </TD>'.
+         '<TD>'.
+           '<SELECT NAME="spoolformat">';
+
+       foreach my $option (qw( default billco )) {
+         $html .= qq(<OPTION VALUE="$option");
+         $html .= ' SELECTED' if $option eq $plandata->{'spoolformat'};
+         $html .= ">\u$option";
+       }
+
+       $html .= 
+           '</SELECT>'.
+         '</TD></TR>'.
+       '<TR><TD ALIGN="right">For destination: </TD>'.
+         '<TD>'.
+           '<SELECT NAME="spooldest">';
+
+       tie my %dest, 'Tie::IxHash', 
+         ''      => '(all)',
+         'POST'  => 'Postal Mail',
+         'EMAIL' => 'Email',
+         'FAX'   => 'Fax',
+       ;
+
+       foreach my $dest (keys %dest) {
+         $html .= qq(<OPTION VALUE="$dest");
+         $html .= ' SELECTED' if $dest eq $plandata->{'spooldest'};
+         $html .= '>'. $dest{$dest};
+       }
+
+       $html .=
+           '</SELECT>'.
+         '</TD></TR>'.
+       '<TR><TD ALIGN="right">Individual per-agent spools? </TD>'.
+         '<TD><INPUT TYPE="checkbox" NAME="spoolagent_spools" VALUE="1" '.
+           ( $plandata->{'spoolagent_spools'} ? 'CHECKED' : '' ).
+           '>'.
+         '</TD></TR>'.
+       '</TABLE>';
+
+       $html;
+    },
+    'weight' => 50,
+  },
+
   'bill' => {
     'name' => 'Generate invoices (normally only used with a <i>Late Fee</i> event)',
     'code' => '$cust_main->bill();',