X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=httemplate%2Fedit%2Fprocess%2Fpart_pkg.cgi;h=5d9c2355b847a4d1e6ef963722b7eab4cd3a07b0;hb=d6dbf288fd8ea42ebd5171d80817356248cf22ce;hp=5ff3e6f171d804e3ad641c45062e6143c721a09d;hpb=f7fd2a3e34da751cbc02bbf215e99c6dc89adc15;p=freeside.git diff --git a/httemplate/edit/process/part_pkg.cgi b/httemplate/edit/process/part_pkg.cgi index 5ff3e6f17..5d9c2355b 100755 --- a/httemplate/edit/process/part_pkg.cgi +++ b/httemplate/edit/process/part_pkg.cgi @@ -1,53 +1,98 @@ -<% +% +% +%my $dbh = dbh; +%my $conf = new FS::Conf; +% +%my $pkgpart = $cgi->param('pkgpart'); +% +%my $old = qsearchs('part_pkg',{'pkgpart'=>$pkgpart}) if $pkgpart; +% +%tie my %plans, 'Tie::IxHash', %{ FS::part_pkg::plan_info() }; +%my $href = $plans{$cgi->param('plan')}->{'fields'}; +% +%#fixup plandata +%my $error; +%my $plandata = $cgi->param('plandata'); +%my @plandata = split(',', $plandata); +%$cgi->param('plandata', +% join('', map { my $parser = sub { shift }; +% $parser = $href->{$_}{parse} if exists($href->{$_}{parse}); +% my $value = join(', ', &$parser($cgi->param($_))); +% my $check = $href->{$_}{check}; +% if ( $check && ! &$check($value) ) { +% $value = join(', ', $cgi->param($_)); +% $error ||= "Illegal ". ($href->{$_}{name}||$_). ": $value"; +% } +% "$_=$value\n"; +% } @plandata ) +%); +% +%foreach (qw( setuptax recurtax disabled )) { +% $cgi->param($_, '') unless defined $cgi->param($_); +%} +% +%my @agents; +%foreach ($cgi->param('agent_type')) { +% /^(\d+)$/; +% push @agents, $1 if $1; +%} +% +%my $new = new FS::part_pkg ( { +% map { +% $_ => scalar($cgi->param($_)); +% } fields('part_pkg') +%} ); +% +%my $oldAutoCommit = $FS::UID::AutoCommit; +%local $FS::UID::AutoCommit = 0; +% +%my %pkg_svc = map { $_ => scalar($cgi->param("pkg_svc$_")) } +% map { $_->svcpart } +% qsearch('part_svc', {} ); +% +%my $custnum = ''; +%if ( $error ) { +% +% # fall through +% +%} elsif ( $cgi->param('taxclass') eq '(select)' ) { +% +% $error = 'Must select a tax class'; +% +%} elsif ( $pkgpart ) { +% +% $error = $new->replace( $old, +% pkg_svc => \%pkg_svc, +% primary_svc => scalar($cgi->param('pkg_svc_primary')), +% ); +%} else { +% +% $error = $new->insert( pkg_svc => \%pkg_svc, +% primary_svc => scalar($cgi->param('pkg_svc_primary')), +% cust_pkg => $cgi->param('pkgnum'), +% custnum_ref => \$custnum, +% ); +% $pkgpart = $new->pkgpart; +%} +% +%unless ( $error || $conf->exists('agent_defaultpkg') ) { +% my $error = $new->process_m2m( +% 'link_table' => 'type_pkgs', +% 'target_table' => 'agent_type', +% 'params' => \@agents, +% ); +%} +%if ( $error ) { +% $dbh->rollback if $oldAutoCommit; +% $cgi->param('error', $error ); +% print $cgi->redirect(popurl(2). "part_pkg.cgi?". $cgi->query_string ); +%} elsif ( $custnum ) { +% $dbh->commit or die $dbh->errstr if $oldAutoCommit; +% print $cgi->redirect(popurl(3). "view/cust_main.cgi?$custnum"); +%} else { +% $dbh->commit or die $dbh->errstr if $oldAutoCommit; +% print $cgi->redirect(popurl(3). "browse/part_pkg.cgi"); +%} +% +% -my $dbh = dbh; - -my $pkgpart = $cgi->param('pkgpart'); - -my $old = qsearchs('part_pkg',{'pkgpart'=>$pkgpart}) if $pkgpart; - -#fixup plandata -my $plandata = $cgi->param('plandata'); -my @plandata = split(',', $plandata); -$cgi->param('plandata', - join('', map { "$_=". join(', ', $cgi->param($_)). "\n" } @plandata ) -); - -foreach (qw( setuptax recurtax disabled )) { - $cgi->param($_, '') unless defined $cgi->param($_); -} - -my $new = new FS::part_pkg ( { - map { - $_, scalar($cgi->param($_)); - } fields('part_pkg') -} ); - -my %pkg_svc = map { $_ => $cgi->param("pkg_svc$_") } - map { $_->svcpart } - qsearch('part_svc', {} ); - -my $error; -my $custnum = ''; -if ( $pkgpart ) { - $error = $new->replace( $old, 'pkg_svc' => \%pkg_svc, - 'primary_svc' => $cgi->param('pkg_svc_primary'), - ); -} else { - $error = $new->insert( 'pkg_svc' => \%pkg_svc, - 'primary_svc' => $cgi->param('pkg_svc_primary'), - 'cust_pkg' => $cgi->param('pkgnum'), - 'custnum_ref' => \$custnum, - ); - $pkgpart = $new->pkgpart; -} -if ( $error ) { - $cgi->param('error', $error ); - print $cgi->redirect(popurl(2). "part_pkg.cgi?". $cgi->query_string ); -} elsif ( $custnum ) { - print $cgi->redirect(popurl(3). "view/cust_main.cgi?$custnum"); -} else { - print $cgi->redirect(popurl(3). "browse/part_pkg.cgi"); -} - -%>