'agent_virt' => 1,
'agent_null_right' => $edit_global,
- 'agent_clone_extra_sql' => FS::part_pkg->curuser_pkgs_sql,
-
+ 'agent_clone_extra_sql' => $agent_clone_extra_sql,
#'viewall_dir' => 'browse',
'viewall_url' => $p.'browse/part_pkg.cgi',
'html_init' => include('/elements/init_overlib.html').
'clone_callback' => $clone_callback,
'edit_callback' => $edit_callback,
'error_callback' => $error_callback,
+ 'field_callback' => $field_callback,
'labels' => {
'pkgpart' => 'Package Definition',
my $disabled_type = $acl_edit_either ? 'checkbox' : 'hidden';
+my $agent_clone_extra_sql =
+ ' ( '. FS::part_pkg->curuser_pkgs_sql.
+ #kludge to clone custom customer packages you otherwise couldn't see
+ " OR ( part_pkg.disabled = 'Y' AND part_pkg.comment LIKE '(CUSTOM)%' ) ".
+ ' ) ';
+
my $conf = new FS::Conf;
my $taxproducts = $conf->exists('enable_taxproducts');
my %taxproductnums = map { ($_->classnum => 1) }
qsearch('usage_class', { 'disabled' => '' });
+my @taxproductnums = ( qw( setup recur ), sort (keys %taxproductnums) );
my %options = ();
my $recur_disabled = 1;
$usage_class{setup} = 'Setup';
$usage_class{recur} = 'Recurring';
-my @taxproductnums = ();
my %taxproduct_fields = ();
my $end_callback = sub {
my( $cgi, $object, $fields, $opt ) = @_;
};
+my $field_callback = sub {
+ my ($cgi, $object, $fieldref) = @_;
+
+ my $field = $fieldref->{field};
+ if ($field eq 'taxproductnums') {
+ $fieldref->{value} = join(',', @taxproductnums);
+ } elsif ($field eq 'taxproduct_select') {
+ $fieldref->{options} = [ '(default)', @taxproductnums ];
+ $fieldref->{labels} = { ( '(default)' => '(default)' ),
+ map {( $_ => ($usage_class{$_} || $_) )}
+ @taxproductnums
+ };
+ $fieldref->{layer_fields} = \%taxproduct_fields;
+ $fieldref->{layer_values_callback} = $taxproduct_values;
+ }
+};
+
</%init>