1 <% include( 'elements/process.html',
3 'table' => 'part_event',
4 'viewall_dir' => 'browse',
7 'link_table' => 'part_event_condition',
8 'num_col' => 'eventpart',
9 'name_col' => 'conditionname',
10 'names_list' => [ FS::part_event_condition->all_conditionnames() ],
11 'param_style' => 'name_colN values',
12 'args_callback' => sub { # FS/FS/m2name_Common.pm
13 my( $object, $prefix, $params, $listref ) = @_;
14 #warn "$object $prefix $params $listref\n";
16 my $cond = $object->conditionname;
18 my %option_fields = $object->option_fields;
23 my $cgi_field = "$prefix$cond.$field";
25 my $value = $params->{$cgi_field};
27 my $info = $option_fields{$_};
28 $info = { label=>$info, type=>'text' }
31 if ( $info->{'type'} =~
32 /^(select|checkbox)-?multiple$/
33 or $info->{'type'} =~ /^select/
34 && $info->{'multiple'}
37 #special processing for compound fields
38 $value = { map { $_ => 1 }
41 } elsif ( $info->{'type'} eq 'freq' ) {
42 $value = '0' if !length($value);
43 $value .= $params->{$cgi_field.'_units'};
46 #warn "value of $cgi_field is $value\n";
54 'args_callback' => sub {
56 my( $cgi, $object ) = @_;
58 my $prefix = $object->action.'.';
60 map { my $option = $_;
61 #my $value = scalar( $cgi->param( "$prefix$option" ) );
62 my $value = join(',', $cgi->param( "$prefix$option" ) );
64 if ( $option eq 'reasonnum' && $value == -1 ) {
66 'typenum' => scalar( $cgi->param( "new$prefix${option}T" ) ),
67 'reason' => scalar( $cgi->param( "new$prefix${option}" ) ),
71 ( $option => $value );
73 @{ $object->option_fields_listref };
76 'precheck_callback' => sub {
78 my $action = $cgi->param('action') or return;
79 my %actionfields = map { $_ =~ /^$action\.(.*)/; $1 => $cgi->param($_) }
80 grep { /^$action\./ } $cgi->param;
81 if ( exists($actionfields{'reasonnum'}) and
82 length($actionfields{'reasonnum'}) == 0 ) {
83 return 'Reason required';
85 if ( $cgi->param('_initialize') ) {
86 $cgi->param('disabled', 'Y');
90 'noerror_callback' => sub {
92 if ( $cgi->param('_initialize') ) {
93 my $job = new FS::queue {
94 'job' => 'FS::part_event::process_initialize'
96 my $error = $job->insert('eventpart' => $new->eventpart);
97 warn "error queueing job: $error\n" if $error; # can't do anything else
102 'agent_null_right' => 'Edit global billing events',
108 unless $FS::CurrentUser::CurrentUser->access_right('Edit billing events')
109 || $FS::CurrentUser::CurrentUser->access_right('Edit global billing events');