checkpoint tax editors and correct a blunder
[freeside.git] / httemplate / edit / process / part_pkg.cgi
index d3d4f85..94bff0f 100755 (executable)
 %}
 <%init>
 
-die "access denied"
-  unless $FS::CurrentUser::CurrentUser->access_right('Edit package definitions')
-      || $FS::CurrentUser::CurrentUser->access_right('Edit global package definitions');
-
 my $dbh = dbh;
 my $conf = new FS::Conf;
 
@@ -57,6 +53,9 @@ $error = "At least one agent type must be specified."
           !$pkgpart && $conf->exists('agent-defaultpkg')
         );
 
+$cgi->param('tax_override') =~ /^([\d,]+)$/;
+my (@tax_overrides) = (grep "$_", split (",", $1));
+
 my $new = new FS::part_pkg ( {
   map {
     $_ => scalar($cgi->param($_));
@@ -70,6 +69,8 @@ my %pkg_svc = map { $_ => scalar($cgi->param("pkg_svc$_")) }
               map { $_->svcpart }
               qsearch('part_svc', {} );
 
+my $curuser = $FS::CurrentUser::CurrentUser;
+
 my $custnum = '';
 if ( $error ) {
 
@@ -81,12 +82,21 @@ if ( $error ) {
 
 } elsif ( $pkgpart ) {
 
+  die "access denied"
+    unless $curuser->access_right('Edit package definitions')
+        || $curuser->access_right('Edit global package definitions');
+
   $error = $new->replace( $old,
                           pkg_svc     => \%pkg_svc,
                           primary_svc => scalar($cgi->param('pkg_svc_primary')),
                         );
 } else {
 
+  die "access denied"
+    unless $curuser->access_right('Edit package definitions')
+        || $curuser->access_right('Edit global package definitions')
+        || ( $cgi->param('pkgnum') && $curuser->access_right('Customize customer package') );
+
   $error = $new->insert(  pkg_svc     => \%pkg_svc,
                           primary_svc => scalar($cgi->param('pkg_svc_primary')),
                           cust_pkg    => $cgi->param('pkgnum'),
@@ -96,12 +106,19 @@ if ( $error ) {
 }
 
 unless ( $error || $conf->exists('agent_defaultpkg') ) {
-  my $error = $new->process_m2m(
+  $error = $new->process_m2m(
     'link_table'   => 'type_pkgs',
     'target_table' => 'agent_type',
     'params'       => \@agents,
   );
 }
 
-</%init>
+unless ( $error  ) {
+  $error = $new->process_m2m(
+    'link_table'   => 'part_pkg_taxoverride',
+    'target_table' => 'tax_class',
+    'params'       => \@tax_overrides,
+  );
+}
 
+</%init>