X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fedit%2Fprocess%2Fpart_pkg.cgi;h=69138bc65eb17c15973abb6f6a2ae3d436d14e58;hb=f3ac48703be75c0e2aec161487057eafeb8fc74f;hp=c388676df3f7c484e01b333017d879ed718cf4b8;hpb=3f8dd846e92d44fc461d91d5fd5e012a770370d1;p=freeside.git diff --git a/httemplate/edit/process/part_pkg.cgi b/httemplate/edit/process/part_pkg.cgi index c388676df..69138bc65 100755 --- a/httemplate/edit/process/part_pkg.cgi +++ b/httemplate/edit/process/part_pkg.cgi @@ -10,6 +10,7 @@ 'precheck_callback' => $precheck_callback, 'args_callback' => $args_callback, 'process_m2m' => \@process_m2m, + 'process_o2m' => \@process_o2m, ) %> <%init> @@ -114,14 +115,33 @@ my $args_callback = sub { push @args, 'options' => \%options; ### + #part_pkg_currency + ### + + my %part_pkg_currency = ( + map { $_ => scalar($cgi->param($_)) } + #grep /._[A-Z]{3}$/, #support other options + grep /^(setup|recur)_fee_[A-Z]{3}$/, + $cgi->param + ); + + push @args, 'part_pkg_currency' => \%part_pkg_currency; + + ### #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) @@ -185,6 +205,15 @@ my @process_m2m = ( grep /^svc_dst_pkgpart/, $cgi->param ], }, + { 'link_table' => 'part_pkg_link', + 'target_table' => 'part_pkg', + 'base_field' => 'src_pkgpart', + 'target_field' => 'dst_pkgpart', + 'hashref' => { 'link_type' => 'supp', 'hidden' => '' }, + 'params' => [ map $cgi->param($_), + grep /^supp_dst_pkgpart/, $cgi->param + ], + }, map { my $hidden = $_; { 'link_table' => 'part_pkg_link', @@ -235,4 +264,31 @@ if ( $cgi->param('pkgpart') || ! $conf->exists('agent_defaultpkg') ) { }; } +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 = ( + { + 'table' => 'part_pkg_msgcat', + 'fields' => [qw( locale pkg )], + }, + { + 'table' => 'part_pkg_usageprice', + 'fields' => [qw( price currency action target amount )], + + } +); +