remove ancient invoice events
[freeside.git] / httemplate / edit / process / part_bill_event.cgi
1 %if ( $error ) {
2 %  $cgi->param('error', $error);
3 <% $cgi->redirect(popurl(2). "part_bill_event.cgi?". $cgi->query_string ) %>
4 %} else {
5 <% $cgi->redirect(popurl(3)."browse/part_bill_event.cgi") %>
6 %}
7 <%init>
8
9 die "access denied"
10   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
11
12 my $eventpart = $cgi->param('eventpart');
13
14 my $old = qsearchs('part_bill_event',{'eventpart'=>$eventpart}) if $eventpart;
15
16 #s/days/seconds/
17 $cgi->param('seconds', int( $cgi->param('days') * 86400 ) );
18
19 my $error;
20 if ( ! $cgi->param('plan_weight_eventcode') ) {
21   $error = "Must select an action";
22 } else {
23
24   $cgi->param('plan_weight_eventcode') =~ /^([\w\-]+):(\d+):(.*)$/s
25     or die "illegal plan_weight_eventcode:".
26            $cgi->param('plan_weight_eventcode');
27   $cgi->param('plan', $1);
28   $cgi->param('weight', $2);
29   my $eventcode = $3;
30   my $plandata = '';
31
32   my $rnum;
33   my $rtype;
34   my $reasonm;
35   my $class  = '';
36   $class='c' if ($eventcode =~ /cancel/);
37   $class='s' if ($eventcode =~ /suspend/);
38   if ($class) {
39     $cgi->param("${class}reason") =~ /^(-?\d+)$/
40       or $error =  "Invalid ${class}reason";
41     $rnum = $1;
42     if ($rnum == -1) {
43       $cgi->param("new${class}reasonT") =~ /^(\d+)$/
44         or $error =  "Invalid new${class}reasonT";
45       $rtype = $1;
46       $cgi->param("new${class}reason") =~ /^([\s\w]+)$/
47         or $error = "Invalid new${class}reason";
48       $reasonm = $1;
49     }
50   }
51  
52   if ($rnum == -1 && !$error) {
53     my $reason = new FS::reason ({ 'reason'      => $reasonm,
54                                    'reason_type' => $rtype,
55                                  });
56     $error = $reason->insert;
57     unless ($error) {
58       $rnum = $reason->reasonnum;
59       $cgi->param("${class}reason", $rnum);
60       $cgi->param("new${class}reason", '');
61       $cgi->param("new${class}reasonT", '');
62     }
63   }
64
65   while ( $eventcode =~ /%%%(\w+)%%%/ ) {
66     my $field = $1;
67     my $value = join(', ', $cgi->param($field) );
68     $cgi->param($field, $value); #in case it errors out
69     $eventcode =~ s/%%%$field%%%/$value/;
70     $plandata .= "$field $value\n";
71   }
72   $cgi->param('eventcode', $eventcode);
73   $cgi->param('plandata', $plandata);
74
75   unless($error) {
76
77     if ( $eventpart ) {
78
79       my $new = new FS::part_bill_event ( {
80         map { $_ => scalar($cgi->param($_)) }
81             fields('part_bill_event'),
82       } );
83       $new->setfield('reason' => $rnum);
84       $error = $new->replace($old);
85
86     } else {
87
88       foreach my $payby ( $cgi->param('payby') ) {
89         my $new = new FS::part_bill_event ( {
90           map  { $_ => scalar($cgi->param($_)) }
91           grep { $_ ne 'payby' }
92                fields('part_bill_event')
93         } );
94         $new->setfield('payby'  => $payby);
95         $new->setfield('reason' => $rnum );
96         $error = $new->insert;
97         last if $error;
98       }
99
100     }
101
102   }
103
104
105
106 </%init>