X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fedit%2Fprocess%2Fpart_pkg.cgi;h=d27ddb0b0d3c8d9cd32f4f43f25ac5579b5adc27;hb=447f1a906b47868497485edc3ba190a808539956;hp=3b6562f13e05097a462a2ff2aa9cfa71d128830a;hpb=3d0a1bb06b895c5be6e3f0517d355442a6b1e125;p=freeside.git diff --git a/httemplate/edit/process/part_pkg.cgi b/httemplate/edit/process/part_pkg.cgi index 3b6562f13..d27ddb0b0 100755 --- a/httemplate/edit/process/part_pkg.cgi +++ b/httemplate/edit/process/part_pkg.cgi @@ -50,8 +50,7 @@ my $precheck_callback = sub { } return "At least one agent type must be specified." unless scalar(@agents) - || ( $cgi->param('clone') && $cgi->param('clone') =~ /^\d+$/ ) - || ( !$cgi->param('pkgpart') && $conf->exists('agent-defaultpkg') ) + #wtf? || ( $cgi->param('clone') && $cgi->param('clone') =~ /^\d+$/ ) || $cgi->param('disabled') || $cgi->param('agentnum'); @@ -128,14 +127,28 @@ my $args_callback = sub { push @args, 'part_pkg_currency' => \%part_pkg_currency; ### + # fcc options + ### + my $fcc_options_string = $cgi->param('fcc_options_string'); + if ($fcc_options_string) { + push @args, 'fcc_options' => decode_json($fcc_options_string); + } + + ### #pkg_svc ### my @svcparts = map { $_->svcpart } qsearch('part_svc', {}); - my %pkg_svc = map { $_ => scalar($cgi->param("pkg_svc$_")) } @svcparts; - my %hidden_svc = map { $_ => scalar($cgi->param("hidden$_")) } @svcparts; + my %pkg_svc = map { $_ => scalar($cgi->param("pkg_svc$_" )) } @svcparts; + my %hidden_svc = map { $_ => scalar($cgi->param("hidden$_" )) } @svcparts; + my %bulk_skip = map { $_ => ( $cgi->param("no_bulk_skip$_") eq 'Y' + ? '' : 'Y' + ) + } @svcparts; - push @args, 'pkg_svc' => \%pkg_svc, 'hidden_svc' => \%hidden_svc; + push @args, 'pkg_svc' => \%pkg_svc, + 'hidden_svc' => \%hidden_svc, + 'bulk_skip' => \%bulk_skip; ### # cust_pkg and custnum_ref (inserts only) @@ -245,17 +258,30 @@ foreach my $override_class ($cgi->param) { my $conf = new FS::Conf; -if ( $cgi->param('pkgpart') || ! $conf->exists('agent_defaultpkg') ) { - my @agents = (); - foreach ($cgi->param('agent_type')) { - /^(\d+)$/; - push @agents, $1 if $1; - } - push @process_m2m, { - 'link_table' => 'type_pkgs', - 'target_table' => 'agent_type', - 'params' => \@agents, - }; +my @agents = (); +foreach ($cgi->param('agent_type')) { + /^(\d+)$/; + push @agents, $1 if $1; +} +push @process_m2m, { + 'link_table' => 'type_pkgs', + 'target_table' => 'agent_type', + 'params' => \@agents, +}; + +my $targets = FS::part_pkg_usageprice->targets; +foreach my $amount_param ( grep /^usagepricepart(\d+)_amount$/, $cgi->param ) { + $amount_param =~ /^usagepricepart(\d+)_amount$/ or die 'unpossible'; + my $num = $1; + my $amount = $cgi->param($amount_param); + if ( ! $amount && ! $cgi->param("usagepricepart${num}_price") ) { + #don't add empty rows just because the dropdowns have a value + $cgi->param("usagepricepart${num}_$_", '') for qw( currency action target ); + next; + } + my $target = $cgi->param("usagepricepart${num}_target"); + $amount *= $targets->{$target}{multiplier} if $targets->{$target}{multiplier}; + $cgi->param($amount_param, $amount); } my @process_o2m = ( @@ -263,6 +289,11 @@ my @process_o2m = ( 'table' => 'part_pkg_msgcat', 'fields' => [qw( locale pkg )], }, + { + 'table' => 'part_pkg_usageprice', + 'fields' => [qw( price currency action target amount )], + + } );