summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2014-03-25 16:33:19 -0700
committerIvan Kohler <ivan@freeside.biz>2014-03-25 16:33:19 -0700
commit4289ed53f86f18d6107339db5b7cee38f64533c0 (patch)
tree14a30eecf87502d7d0e4a9be88d962db8011447b
parentdef4273b6560ff747dfbb53fb5d921a4e5d1c79d (diff)
improve performance of package add/edit (don't pull up pricing info in add-on/supplemental package dropdowns), RT#24000
-rw-r--r--FS/FS/part_pkg.pm12
-rw-r--r--httemplate/edit/elements/edit.html3
-rwxr-xr-xhttemplate/edit/part_pkg.cgi3
-rw-r--r--httemplate/elements/select-part_pkg.html21
4 files changed, 28 insertions, 11 deletions
diff --git a/FS/FS/part_pkg.pm b/FS/FS/part_pkg.pm
index e872232a8..07f59aa96 100644
--- a/FS/FS/part_pkg.pm
+++ b/FS/FS/part_pkg.pm
@@ -839,6 +839,16 @@ sub pkg_comment {
$pre. $self->pkg. ( $custom_comment ? " - $custom_comment" : '' );
}
+#without price info (so without hitting the DB again)
+sub pkg_comment_only {
+ my $self = shift;
+ my %opt = @_;
+
+ my $pre = $opt{nopkgpart} ? '' : $self->pkgpart. ': ';
+ my $comment = $self->comment;
+ $pre. $self->pkg. ( $comment ? " - $comment" : '' );
+}
+
sub price_info { # safety, in case a part_pkg hasn't defined price_info
'';
}
@@ -1241,6 +1251,8 @@ will be suppressed.
sub option {
my( $self, $opt, $ornull ) = @_;
+ cluck "$self -> option: searching for $opt"
+ if $DEBUG;
my $part_pkg_option =
qsearchs('part_pkg_option', {
pkgpart => $self->pkgpart,
diff --git a/httemplate/edit/elements/edit.html b/httemplate/edit/elements/edit.html
index f35698022..54d676849 100644
--- a/httemplate/edit/elements/edit.html
+++ b/httemplate/edit/elements/edit.html
@@ -325,6 +325,9 @@ Example:
% 'disabled' => $f->{'disabled'},
% 'fixed' => $f->{'fixed'},
%
+% #umm. for select-agent_types at least
+% 'label_callback'=> $f->{'label_callback'},
+%
% #any?
% 'colspan' => $f->{'colspan'},
% 'required' => $f->{'required'},
diff --git a/httemplate/edit/part_pkg.cgi b/httemplate/edit/part_pkg.cgi
index cabaf0a05..c7d314c94 100755
--- a/httemplate/edit/part_pkg.cgi
+++ b/httemplate/edit/part_pkg.cgi
@@ -308,6 +308,7 @@
? "AND pkgpart != $pkgpart"
: ''
},
+ 'label_callback' => sub { shift->pkg_comment_only },
'm2_label' => 'Include line item(s) from package',
'm2m_method' => 'bill_part_pkg_link',
'm2m_dstcol' => 'dst_pkgpart',
@@ -334,6 +335,7 @@
? "AND pkgpart != $pkgpart"
: ''
},
+ 'label_callback' => sub { shift->pkg_comment_only },
'm2_label' => 'Include services of package: ',
'm2m_method' => 'svc_part_pkg_link',
'm2m_dstcol' => 'dst_pkgpart',
@@ -350,6 +352,7 @@
},
{ 'field' => 'supp_dst_pkgpart',
'type' => 'select-part_pkg',
+ 'label_callback' => sub { shift->pkg_comment_only },
'm2_label' => 'When ordering package, also order',
'm2m_method' => 'supp_part_pkg_link',
'm2m_dstcol' => 'dst_pkgpart',
diff --git a/httemplate/elements/select-part_pkg.html b/httemplate/elements/select-part_pkg.html
index 9d41b07dc..bf5819118 100644
--- a/httemplate/elements/select-part_pkg.html
+++ b/httemplate/elements/select-part_pkg.html
@@ -15,17 +15,16 @@ Example:
</%doc>
-<% include( '/elements/select-table.html',
- 'table' => 'part_pkg',
- 'agent_virt' => 1,
- 'agent_null' => 1,
- 'name_col' => 'pkg',
- 'empty_label' => 'Select package', #should this be the default?
- 'label_callback' => sub { shift->pkg_comment },
- 'hashref' => \%hash,
- %opt,
- )
-%>
+<& /elements/select-table.html,
+ 'table' => 'part_pkg',
+ 'agent_virt' => 1,
+ 'agent_null' => 1,
+ 'name_col' => 'pkg',
+ 'empty_label' => 'Select package', #should this be the default?
+ 'label_callback' => $opt{'label_callback'} || sub { shift->pkg_comment },
+ 'hashref' => \%hash,
+ %opt,
+&>
<%init>
my( %opt ) = @_;