add per-agent invoice templates, add per-package suspend invoice events, fix automati...
[freeside.git] / httemplate / edit / process / part_bill_event.cgi
1 <%
2
3 my $eventpart = $cgi->param('eventpart');
4
5 my $old = qsearchs('part_bill_event',{'eventpart'=>$eventpart}) if $eventpart;
6
7 #s/days/seconds/
8 $cgi->param('seconds', int( $cgi->param('days') * 86400 ) );
9
10 my $error;
11 if ( ! $cgi->param('plan_weight_eventcode') ) {
12   $error = "Must select an action";
13 } else {
14
15   $cgi->param('plan_weight_eventcode') =~ /^([\w\-]+):(\d+):(.*)$/s
16     or die "illegal plan_weight_eventcode:".
17            $cgi->param('plan_weight_eventcode');
18   $cgi->param('plan', $1);
19   $cgi->param('weight', $2);
20   my $eventcode = $3;
21   my $plandata = '';
22   while ( $eventcode =~ /%%%(\w+)%%%/ ) {
23     my $field = $1;
24     my $value = join(', ', $cgi->param($field) );
25     $cgi->param($field, $value); #in case it errors out
26     $eventcode =~ s/%%%$field%%%/$value/;
27     $plandata .= "$field $value\n";
28   }
29   $cgi->param('eventcode', $eventcode);
30   $cgi->param('plandata', $plandata);
31
32   my $new = new FS::part_bill_event ( {
33     map {
34       $_, scalar($cgi->param($_));
35     } fields('part_bill_event'),
36   } );
37
38   if ( $eventpart ) {
39     $error = $new->replace($old);
40   } else {
41     $error = $new->insert;
42     $eventpart = $new->getfield('eventpart');
43   }
44
45
46 if ( $error ) {
47   $cgi->param('error', $error);
48   print $cgi->redirect(popurl(2). "part_bill_event.cgi?". $cgi->query_string );
49 } else {
50   print $cgi->redirect(popurl(3)."browse/part_bill_event.cgi");
51 }
52
53 %>
54