input and output on data volume fields specified with k,m,g,or t
[freeside.git] / httemplate / edit / process / part_bill_event.cgi
index e224bf6..af594f2 100755 (executable)
@@ -1,53 +1,89 @@
-<%
-
-my $eventpart = $cgi->param('eventpart');
-
-my $old = qsearchs('part_bill_event',{'eventpart'=>$eventpart}) if $eventpart;
-
-#s/days/seconds/
-$cgi->param('seconds', $cgi->param('days') * 86400 );
-
-my $error;
-if ( ! $cgi->param('plan_weight_eventcode') ) {
-  $error = "Must select an action";
-} else {
-
-  $cgi->param('plan_weight_eventcode') =~ /^([\w\-]+):(\d+):(.*)$/s
-    or die "illegal plan_weight_eventcode:".
-           $cgi->param('plan_weight_eventcode');
-  $cgi->param('plan', $1);
-  $cgi->param('weight', $2);
-  my $eventcode = $3;
-  my $plandata = '';
-  while ( $eventcode =~ /%%%(\w+)%%%/ ) {
-    my $field = $1;
-    my $value = $cgi->param($field);
-    $eventcode =~ s/%%%$field%%%/$value/;
-    $plandata .= "$field $value\n";
-  }
-  $cgi->param('eventcode', $eventcode);
-  $cgi->param('plandata', $plandata);
-
-  my $new = new FS::part_bill_event ( {
-    map {
-      $_, scalar($cgi->param($_));
-    } fields('part_bill_event'),
-  } );
-
-  if ( $eventpart ) {
-    $error = $new->replace($old);
-  } else {
-    $error = $new->insert;
-    $eventpart = $new->getfield('eventpart');
-  }
-} 
-
-if ( $error ) {
-  $cgi->param('error', $error);
-  print $cgi->redirect(popurl(2). "part_bill_event.cgi?". $cgi->query_string );
-} else {
-  print $cgi->redirect(popurl(3)."browse/part_bill_event.cgi");
-}
-
-%>
-
+%
+%my $eventpart = $cgi->param('eventpart');
+%
+%my $old = qsearchs('part_bill_event',{'eventpart'=>$eventpart}) if $eventpart;
+%
+%#s/days/seconds/
+%$cgi->param('seconds', int( $cgi->param('days') * 86400 ) );
+%
+%my $error;
+%if ( ! $cgi->param('plan_weight_eventcode') ) {
+%  $error = "Must select an action";
+%} else {
+%
+%  $cgi->param('plan_weight_eventcode') =~ /^([\w\-]+):(\d+):(.*)$/s
+%    or die "illegal plan_weight_eventcode:".
+%           $cgi->param('plan_weight_eventcode');
+%  $cgi->param('plan', $1);
+%  $cgi->param('weight', $2);
+%  my $eventcode = $3;
+%  my $plandata = '';
+%
+%  my $rnum;
+%  my $rtype;
+%  my $reasonm;
+%  my $class  = '';
+%  $class='c' if ($eventcode =~ /cancel/);
+%  $class='s' if ($eventcode =~ /suspend/);
+%  if ($class) {
+%    $cgi->param("${class}reason") =~ /^(-?\d+)$/
+%      or $error =  "Invalid ${class}reason";
+%    $rnum = $1;
+%    if ($rnum == -1) {
+%      $cgi->param("new${class}reasonT") =~ /^(\d+)$/
+%        or $error =  "Invalid new${class}reasonT";
+%      $rtype = $1;
+%      $cgi->param("new${class}reason") =~ /^([\s\w]+)$/
+%        or $error = "Invalid new${class}reason";
+%      $reasonm = $1;
+%    }
+%  }
+% 
+%  if ($rnum == -1 && !$error) {
+%    my $reason = new FS::reason ({ 'reason'      => $reasonm,
+%                                   'reason_type' => $rtype,
+%                                 });
+%    $error = $reason->insert;
+%    unless ($error) {
+%      $rnum = $reason->reasonnum;
+%      $cgi->param("${class}reason", $rnum);
+%      $cgi->param("new${class}reason", '');
+%      $cgi->param("new${class}reasonT", '');
+%    }
+%  }
+%
+%  while ( $eventcode =~ /%%%(\w+)%%%/ ) {
+%    my $field = $1;
+%    my $value = join(', ', $cgi->param($field) );
+%    $cgi->param($field, $value); #in case it errors out
+%    $eventcode =~ s/%%%$field%%%/$value/;
+%    $plandata .= "$field $value\n";
+%  }
+%  $cgi->param('eventcode', $eventcode);
+%  $cgi->param('plandata', $plandata);
+%
+%  unless($error){
+%    my $new = new FS::part_bill_event ( {
+%      map {
+%        $_, scalar($cgi->param($_));
+%      } fields('part_bill_event'),
+%    } );
+%    $new->setfield('reason', $rnum);
+%
+%    if ( $eventpart ) {
+%      $error = $new->replace($old);
+%    } else {
+%      $error = $new->insert;
+%      $eventpart = $new->getfield('eventpart');
+%    }
+%  }
+%} 
+%
+%if ( $error ) {
+%  $cgi->param('error', $error);
+%  print $cgi->redirect(popurl(2). "part_bill_event.cgi?". $cgi->query_string );
+%} else {
+%  print $cgi->redirect(popurl(3)."browse/part_bill_event.cgi");
+%}
+%
+%