fix cloning w/new package editor
authorivan <ivan>
Thu, 12 Jun 2008 21:53:32 +0000 (21:53 +0000)
committerivan <ivan>
Thu, 12 Jun 2008 21:53:32 +0000 (21:53 +0000)
httemplate/edit/elements/edit.html
httemplate/edit/part_pkg.cgi
httemplate/edit/process/elements/process.html
httemplate/edit/process/part_pkg.cgi
httemplate/view/cust_main/packages.html

index 4a62ba3..04ca81c 100644 (file)
@@ -91,7 +91,7 @@ Example:
     'agent_null_right' => 'Access Right Name',
    
     #run when re-displaying with an error
     'agent_null_right' => 'Access Right Name',
    
     #run when re-displaying with an error
-    'error_callback' => sub { my( $cgi, $object, $fields_listref ) = @_; },
+    'error_callback' => sub { my( $cgi, $object, $fields_listref, $opt_hashref ) = @_; },
    
     #run when editing
     'edit_callback' => sub { my( $cgi, $object, $fields_listref ) = @_; },
    
     #run when editing
     'edit_callback' => sub { my( $cgi, $object, $fields_listref ) = @_; },
@@ -548,7 +548,7 @@ if ( $cgi->param('error') ) {
     map { $_ => scalar($cgi->param($_)) } fields($table)
   });
 
     map { $_ => scalar($cgi->param($_)) } fields($table)
   });
 
-  &{$opt{'error_callback'}}($cgi, $object, $fields)
+  &{$opt{'error_callback'}}($cgi, $object, $fields, \%opt )
     if $opt{'error_callback'};
 
 } elsif ( $cgi->keywords || $cgi->param($pkey) ) { #editing
     if $opt{'error_callback'};
 
 } elsif ( $cgi->keywords || $cgi->param($pkey) ) { #editing
index 39c0ac3..032970c 100755 (executable)
                           },
 
               'fields' => [
                           },
 
               'fields' => [
-                            { field=>'clone',  type=>'hidden' },
-                            { field=>'pkgnum', type=>'hidden' },
+                            { field=>'clone',  type=>'hidden',
+                              curr_value_callback =>
+                                sub { shift->param('clone') },
+                            },
+                            { field=>'pkgnum', type=>'hidden',
+                              curr_value_callback =>
+                                sub { shift->param('pkgnum') },
+                            },
 
                             { type => 'columnstart' },
                             
 
                             { type => 'columnstart' },
                             
@@ -149,6 +155,7 @@ die "access denied"
 #XXX
 # - tr-part_pkg_freq: month_increments_only (from price plans)
 # - test cloning
 #XXX
 # - tr-part_pkg_freq: month_increments_only (from price plans)
 # - test cloning
+# - test errors cloning
 # - test custom pricing
 # - move the selectlayer divs away from lame layer_callback
 
 # - test custom pricing
 # - move the selectlayer divs away from lame layer_callback
 
@@ -164,9 +171,10 @@ my $clone_part_pkg = '';
 my %options = ();
 my $recur_disabled = 1;
 my $error_callback = sub {
 my %options = ();
 my $recur_disabled = 1;
 my $error_callback = sub {
-  my($cgi, $object, $fields) = @_;
+  my($cgi, $object, $fields, $opt ) = @_;
   (@agent_type) = $cgi->param('agent_type');
   $tax_override = $cgi->param('tax_override');
   (@agent_type) = $cgi->param('agent_type');
   $tax_override = $cgi->param('tax_override');
+  $opt->{action} = 'Custom' if $cgi->param('clone');
   $clone_part_pkg= qsearchs('part_pkg', { 'pkgpart' => $cgi->param('clone') } );
 
   $recur_disabled = $cgi->param('freq') ? 0 : 1;
   $clone_part_pkg= qsearchs('part_pkg', { 'pkgpart' => $cgi->param('clone') } );
 
   $recur_disabled = $cgi->param('freq') ? 0 : 1;
index 7964dfa..6f271ee 100644 (file)
@@ -20,6 +20,7 @@ Example:
    'viewall_dir'  => '', #'search' or 'browse', defaults to 'search'
    OR
    'redirect'     => 'view/table.cgi?', # value of primary key is appended
    'viewall_dir'  => '', #'search' or 'browse', defaults to 'search'
    OR
    'redirect'     => 'view/table.cgi?', # value of primary key is appended
+                                        # (string or coderef returning a string)
    OR
    'popup_reload' => 'Momentary success message', #will reload parent window
 
    OR
    'popup_reload' => 'Momentary success message', #will reload parent window
 
@@ -111,21 +112,29 @@ Example:
   </BODY>
   </HTML>
 
   </BODY>
   </HTML>
 
-%} elsif ( $opt{'redirect'} ) {
+%} else {
+%  
+%  $opt{'redirect'} = &{$opt{'redirect'}}($cgi, $new)
+%    if ref($opt{'redirect'}) eq 'CODE';
+%
+%  if ( $opt{'redirect'} ) {
 %
 <% $cgi->redirect( $opt{'redirect'}. $pkeyvalue ) %>
 %
 %
 <% $cgi->redirect( $opt{'redirect'}. $pkeyvalue ) %>
 %
-%} else { 
-%  my $ext = $opt{'viewall_ext'} || 'html';
+%  } else { 
+%
+%    my $ext = $opt{'viewall_ext'} || 'html';
+%
 <% $cgi->redirect( popurl(3). ($opt{viewall_dir}||'search'). "/$table.$ext" ) %>
 <% $cgi->redirect( popurl(3). ($opt{viewall_dir}||'search'). "/$table.$ext" ) %>
+%
+%  }
+%
 %}
 %}
-<%once>
-
-  my $me = 'process.html:';
-
-</%once>
+%
 <%init>
 
 <%init>
 
+my $me = 'process.html:';
+
 my(%opt) = @_;
 
 my $curuser = $FS::CurrentUser::CurrentUser;
 my(%opt) = @_;
 
 my $curuser = $FS::CurrentUser::CurrentUser;
index e90dee2..faaedf9 100755 (executable)
@@ -1,6 +1,7 @@
 <% include( 'elements/process.html',
               #'debug'             => 1,
               'table'             => 'part_pkg',
 <% include( 'elements/process.html',
               #'debug'             => 1,
               'table'             => 'part_pkg',
+              'redirect'          => $redirect_callback,
               'viewall_dir'       => 'browse',
               'viewall_ext'       => 'cgi',
               'edit_ext'          => 'cgi',
               'viewall_dir'       => 'browse',
               'viewall_ext'       => 'cgi',
               'edit_ext'          => 'cgi',
@@ -106,10 +107,18 @@ my $args_callback = sub {
                 'custnum_ref' => \$custnum;
   }
 
                 'custnum_ref' => \$custnum;
   }
 
+  warn "args: ".join('/', @args). "\n";
+
   @args;
 
 };
 
   @args;
 
 };
 
+my $redirect_callback = sub {
+  #my( $cgi, $new ) = @_;
+  return '' unless $custnum;
+  popurl(3). "view/cust_main.cgi?keywords=$custnum;dummy=";
+};
+
 #these should probably move to @args above and be processed by part_pkg.pm...
 
 $cgi->param('tax_override') =~ /^([\d,]+)$/;
 #these should probably move to @args above and be processed by part_pkg.pm...
 
 $cgi->param('tax_override') =~ /^([\d,]+)$/;
index b71bdee..9b1bed9 100755 (executable)
@@ -628,7 +628,6 @@ sub pkg_customize_link {
   my $cust_pkg = shift or return '';
   my $custnum = $cust_pkg->custnum;
   qq!<A HREF="${p}edit/part_pkg.cgi?!.
   my $cust_pkg = shift or return '';
   my $custnum = $cust_pkg->custnum;
   qq!<A HREF="${p}edit/part_pkg.cgi?!.
-    "keywords=$custnum;".
     "clone=". $cust_pkg->part_pkg->pkgpart. ';'.
     "pkgnum=". $cust_pkg->pkgnum.
     qq!">Customize</A>!;
     "clone=". $cust_pkg->part_pkg->pkgpart. ';'.
     "pkgnum=". $cust_pkg->pkgnum.
     qq!">Customize</A>!;