summaryrefslogtreecommitdiff
path: root/httemplate/edit/process/part_event.html
blob: 428025fd1f85bcf540d9141b7ee00f8978c0143e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<% include( 'elements/process.html',
    #'debug'          => 1,
    'table'          => 'part_event',
    'viewall_dir'    => 'browse',
    'process_m2name' =>
      {
        'link_table'    => 'part_event_condition',
        'num_col'       => 'eventpart',
        'name_col'      => 'conditionname',
        'names_list'    => [ FS::part_event_condition->all_conditionnames() ],
        'param_style'   => 'name_colN values',
        'args_callback' => sub { # FS/FS/m2name_Common.pm
          my( $object, $prefix, $params, $listref ) = @_;
          #warn "$object $prefix $params $listref\n";

          my $cond = $object->conditionname;

          my %option_fields = $object->option_fields;

          push @$listref, map {
                                my $field = $_;

                                my $cgi_field = "$prefix$cond.$field";

                                my $value = $params->{$cgi_field};

                                my $info = $option_fields{$_};
                                $info = { label=>$info, type=>'text' }
                                  unless ref($info);

                                if ( $info->{'type'} =~
                                       /^(select|checkbox)-?multiple$/
                                     or $info->{'type'} =~ /^select/
                                        && $info->{'multiple'}
                                   )
                                {
                                  #special processing for compound fields
                                  $value = { map { $_ => 1 }
                                                 split(/\0/, $value)
                                           };
                                } elsif ( $info->{'type'} eq 'freq' ) {
                                  $value .= $params->{$cgi_field.'_units'};
                                }

                                #warn "value of $cgi_field is $value\n";

                                ( $field => $value );
                              }
                              keys %option_fields;
        },
      },

    'args_callback' => sub {

      my( $cgi, $object ) = @_;

      my $prefix = $object->action.'.';

      map { my $option = $_;
            #my $value = scalar( $cgi->param( "$prefix$option" ) );
            my $value = join(',', $cgi->param( "$prefix$option" ) );

            if ( $option eq 'reasonnum' && $value == -1 ) {
              $value = {
                'typenum' => scalar( $cgi->param( "new$prefix${option}T" ) ),
                'reason'  => scalar( $cgi->param( "new$prefix${option}"  ) ),
              };
            }

            ( $option => $value );
          }
          @{ $object->option_fields_listref };

    },

    'agent_virt'       => 1,
    'agent_null_right' => 'Edit global billing events',
)
%>
<%init>

die "access denied"
  unless $FS::CurrentUser::CurrentUser->access_right('Edit billing events')
      || $FS::CurrentUser::CurrentUser->access_right('Edit global billing events');

</%init>