X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fcust_pkg%2FImport.pm;h=2b183232942d9ca294fc3829411c8aa07ccf0b75;hp=3cf38cd411261cd1da5250e7fb93e402d17c2dcf;hb=7c4c3bd3e3e2d6a820c77bec346f9d378e2761dc;hpb=ac58d397dab0e70684682775036cd73d23c4213e diff --git a/FS/FS/cust_pkg/Import.pm b/FS/FS/cust_pkg/Import.pm index 3cf38cd41..2b1832329 100644 --- a/FS/FS/cust_pkg/Import.pm +++ b/FS/FS/cust_pkg/Import.pm @@ -102,6 +102,7 @@ my %formatfields = ( 'default' => [], 'all_dates' => [], 'svc_acct' => [qw( username _password domsvc )], + 'svc_broadband' => [qw( ip_addr description routernum blocknum sectornum speed_up speed_down )], 'svc_phone' => [qw( countrycode phonenum sip_password pin )], 'svc_external' => [qw( id title )], 'location' => [qw( address1 address2 city state zip country )], @@ -121,7 +122,6 @@ my %import_options = ( my @location_params = grep { /^location\./ && length($param->{$_}) } keys %$param; if (@location_params) { -warn join('-', @location_params); my $cust_location = FS::cust_location->new({ 'custnum' => $record->custnum, }); @@ -141,17 +141,30 @@ warn join('-', @location_params); my $s = $param->{'quan_price.setup_fee'}; my $r = $param->{'quan_price.recur_fee'}; my $part_pkg = $record->part_pkg; - if ( ( $s && $s != $part_pkg->option('setup_fee') ) - or ( $r && $r != $part_pkg->option('recur_fee') ) + if ( ( length($s) && $s != $part_pkg->option('setup_fee') ) + or ( length($r) && $r != $part_pkg->option('recur_fee') ) ) { + + local($FS::part_pkg::skip_pkg_svc_hack) = 1; + my $custom_part_pkg = $part_pkg->clone; $custom_part_pkg->disabled('Y'); my %options = $part_pkg->options; - $options{'setup_fee'} = $s if $s; - $options{'recur_fee'} = $r if $r; + $options{'setup_fee'} = $s if length($s); + $options{'recur_fee'} = $r if length($r); my $error = $custom_part_pkg->insert( options=>\%options ); return "error customizing package: $error" if $error; + + #not ->pkg_svc, we want to ignore links and clone the actual package def + foreach my $pkg_svc ( $part_pkg->_pkg_svc ) { + my $c_pkg_svc = new FS::pkg_svc { $pkg_svc->hash }; + $c_pkg_svc->pkgsvcnum(''); + $c_pkg_svc->pkgpart( $custom_part_pkg->pkgpart ); + my $error = $c_pkg_svc->insert; + return "error customizing package: $error" if $error; + } + $record->pkgpart( $custom_part_pkg->pkgpart ); } @@ -187,6 +200,7 @@ warn join('-', @location_params); my $ff = $formatfields->{$svc_x}; if ( grep $param->{"$svc_x.$_"}, @$ff ) { + my $svc = "FS::$svc_x"->new( { 'pkgnum' => $record->pkgnum, 'svcpart' => $record->part_pkg->svcpart($svc_x),