fix slowness on change package and also make it into a popup
authorivan <ivan>
Thu, 2 Aug 2007 23:01:01 +0000 (23:01 +0000)
committerivan <ivan>
Thu, 2 Aug 2007 23:01:01 +0000 (23:01 +0000)
httemplate/elements/select-cust-part_pkg.html [new file with mode: 0644]

diff --git a/httemplate/elements/select-cust-part_pkg.html b/httemplate/elements/select-cust-part_pkg.html
new file mode 100644 (file)
index 0000000..8b446b9
--- /dev/null
@@ -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
+  )
+
+</%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>