| 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
 | <%doc>
Example:
  include( '/elements/select-cust-part_pkg.html',
    #required
    'cust_main'  => $cust_main, #or 'custnum' ? 
             
    #strongly recommended (you want your forms to be "sticky" on errors, right?)
    'curr_value' => 'current_value',
  
    #opt
    'part_pkg'   => \@records,
    #select-table.html options
  )
</%doc>
<% include( '/elements/select-table.html',
              'table'          => 'part_pkg',
              'name_col'       => 'pkg',
              'empty_label'    => 'Select package',
              'label_callback' => sub { $_[0]->pkgpart. ': '.
                                        $_[0]->pkg.     ' - '.
                                        $_[0]->comment;
                                      },
              %opt,
          )
%>
<%init>
my( %opt ) = @_;
my $cust_main = $opt{'cust_main'}
  or die "cust_main not specified";
$opt{'records'} = delete $opt{'part_pkg'}
  if $opt{'part_pkg'};
my $extra_sql = $opt{'extra_sql'}.
  ' AND 0 < ( SELECT COUNT(*) FROM type_pkgs '.
  '             WHERE typenum = '. $cust_main->agent->typenum.
  '             AND type_pkgs.pkgpart = part_pkg.pkgpart )';
$opt{'records'} ||= [ qsearch({ 
                                'table'     => 'part_pkg',
                                'hashref'   => { 'disabled' => '', },
                                'extra_sql' => "$extra_sql ORDER BY pkg",
                                #'extra_sql' => $extra_sql,
                                #'order_by'  => 'ORDER BY pkg',
                             })
                    ];
</%init>
 |