[freeside-commits] branch FREESIDE_4_BRANCH updated. 54d0218255a59a5133668e6ae06ccf264c58c758
Mark Wells
mark at 420.am
Mon Aug 29 18:33:06 PDT 2016
The branch, FREESIDE_4_BRANCH has been updated
via 54d0218255a59a5133668e6ae06ccf264c58c758 (commit)
via 4cddc2516b02ea66015ac04c835e64419d0e3052 (commit)
via b178e8c996031020ae8687ee254507dad303a43c (commit)
from 21385930c7ca62c993c0f55993a286d4edfa34c1 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 54d0218255a59a5133668e6ae06ccf264c58c758
Author: Mark Wells <mark at freeside.biz>
Date: Mon Aug 29 18:26:18 2016 -0700
add a script to inherit report classes on cloned/customized packages, #72260
diff --git a/bin/part_pkg-clone_fix_options b/bin/part_pkg-clone_fix_options
new file mode 100755
index 0000000..4d8192b
--- /dev/null
+++ b/bin/part_pkg-clone_fix_options
@@ -0,0 +1,53 @@
+#!/usr/bin/perl
+
+use strict;
+use FS::Misc::Getopt;
+use FS::part_pkg;
+use FS::Record qw(qsearch dbh);
+
+our %opt;
+getopts('p:'); # pkgpart
+$FS::UID::AutoCommit = 0;
+
+sub usage {
+ die "Usage: part_pkg-clone_fix_options -p pkgpart[,pkgpart...] user\n\n";
+}
+
+my @pkgpart = split(',',$opt{p}) or usage();
+foreach my $base_pkgpart (@pkgpart) {
+ my $base_part_pkg = FS::part_pkg->by_key($base_pkgpart);
+ warn "Base package '".$base_part_pkg->pkg."'\n";
+ my @children = qsearch('part_pkg', { 'family_pkgpart' => $base_pkgpart });
+ next if !@children;
+ my $n_pkg = 0;
+ my $n_upd = 0;
+ my %base_options = $base_part_pkg->options;
+ my %report_classes = map { $_ => $base_options{$_} }
+ grep /^report_option_/, keys %base_options;
+ if (!keys %report_classes) {
+ warn "No report classes.\n";
+ next;
+ }
+
+ foreach my $part_pkg (@children) {
+ my $pkgpart = $part_pkg->pkgpart;
+ next if $pkgpart == $base_pkgpart;
+ $n_pkg++;
+
+ # don't do this if it has report options already
+ my %options = $part_pkg->options;
+ if (grep /^report_option_/, keys %options) {
+ warn "#$pkgpart has report classes; skipped\n";
+ } else {
+ %options = ( %options, %report_classes );
+ my $error = $part_pkg->replace(options => \%options);
+ die "#$pkgpart: $error\n" if $error;
+ $n_upd++;
+ }
+ }
+ warn "Updated $n_upd / $n_pkg child packages.\n";
+}
+
+warn "Finished.\n";
+dbh->commit;
+
commit 4cddc2516b02ea66015ac04c835e64419d0e3052
Author: Mark Wells <mark at freeside.biz>
Date: Mon Aug 29 14:23:13 2016 -0700
retain report classes when editing package defs, #71904
diff --git a/httemplate/edit/part_pkg.cgi b/httemplate/edit/part_pkg.cgi
index 7fe659f..e08f0e1 100755
--- a/httemplate/edit/part_pkg.cgi
+++ b/httemplate/edit/part_pkg.cgi
@@ -326,6 +326,7 @@
'name_col' => 'name',
'hashref' => { 'disabled' => '' },
'multiple' => 1,
+ 'curr_value_callback' => $report_option_value_callback,
},
{ 'type' => 'tablebreak-tr-title',
@@ -563,29 +564,42 @@ my $new_object_callback = sub {
};
+my $report_option_value_callback = sub {
+ my ($cgi, $object) = @_;
+ my @report_option;
+ if ( defined $cgi->param('report_option') ) {
+ @report_option = $cgi->param('report_option');
+ } else {
+ foreach ($object->options) {
+ /^report_option_(\d+)$/ && (push @report_option, $1);
+ }
+ }
+ join(',', @report_option);
+};
+
sub set_report_option {
my($cgi, $object, $fields ) = @_; #, $opt
my @report_option = ();
foreach ($object->options) {
/^usage_taxproductnum_(\d+)$/ && ($taxproductnums{$1} = 1);
- /^report_option_(\d+)$/ && (push @report_option, $1);
+# /^report_option_(\d+)$/ && (push @report_option, $1);
}
foreach ($object->part_pkg_taxoverride) {
$taxproductnums{$_->usage_class} = 1
if $_->usage_class;
}
- $cgi->param('report_option', join(',', @report_option));
- foreach my $field ( @$fields ) {
- next unless (
- ref($field) eq 'HASH' &&
- $field->{field} &&
- $field->{field} eq 'report_option'
- );
- #$field->{curr_value} = join(',', @report_option);
- $field->{value} = join(',', @report_option);
- }
+# $cgi->param('report_option', join(',', @report_option));
+# foreach my $field ( @$fields ) {
+# next unless (
+# ref($field) eq 'HASH' &&
+# $field->{field} &&
+# $field->{field} eq 'report_option'
+# );
+# #$field->{curr_value} = join(',', @report_option);
+# $field->{value} = join(',', @report_option);
+# }
}
commit b178e8c996031020ae8687ee254507dad303a43c
Author: Mark Wells <mark at freeside.biz>
Date: Mon Aug 29 12:20:34 2016 -0700
allow "debug" option in edit/ field definitions
diff --git a/httemplate/edit/elements/edit.html b/httemplate/edit/elements/edit.html
index bbc9797..35818dd 100644
--- a/httemplate/edit/elements/edit.html
+++ b/httemplate/edit/elements/edit.html
@@ -372,6 +372,7 @@ Example:
% qw( alt_format ), #select-cust_location
% qw( classnum ), # select-inventory_item
% qw( aligned ), # columnstart
+% qw( debug ), # select-table
% ;
%
% #select-table
-----------------------------------------------------------------------
Summary of changes:
bin/part_pkg-clone_fix_options | 53 ++++++++++++++++++++++++++++++++++++
httemplate/edit/elements/edit.html | 1 +
httemplate/edit/part_pkg.cgi | 36 ++++++++++++++++--------
3 files changed, 79 insertions(+), 11 deletions(-)
create mode 100755 bin/part_pkg-clone_fix_options
More information about the freeside-commits
mailing list