From: ivan Date: Thu, 2 Aug 2007 23:01:01 +0000 (+0000) Subject: fix slowness on change package and also make it into a popup X-Git-Tag: TRIXBOX_2_6~433 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=58cfac8638978d97857ee42883e8f8b56b22451b fix slowness on change package and also make it into a popup --- diff --git a/httemplate/elements/select-cust-part_pkg.html b/httemplate/elements/select-cust-part_pkg.html new file mode 100644 index 000000000..8b446b95d --- /dev/null +++ b/httemplate/elements/select-cust-part_pkg.html @@ -0,0 +1,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 + ) + + + +<% 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', + }) + ]; + +