'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 ) = @_; },
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
},
'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' },
#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
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');
+ $opt->{action} = 'Custom' if $cgi->param('clone');
$clone_part_pkg= qsearchs('part_pkg', { 'pkgpart' => $cgi->param('clone') } );
$recur_disabled = $cgi->param('freq') ? 0 : 1;
'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
</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 ) %>
%
-%} else {
-% my $ext = $opt{'viewall_ext'} || 'html';
+% } else {
+%
+% my $ext = $opt{'viewall_ext'} || 'html';
+%
<% $cgi->redirect( popurl(3). ($opt{viewall_dir}||'search'). "/$table.$ext" ) %>
+%
+% }
+%
%}
-<%once>
-
- my $me = 'process.html:';
-
-</%once>
+%
<%init>
+my $me = 'process.html:';
+
my(%opt) = @_;
my $curuser = $FS::CurrentUser::CurrentUser;
<% include( 'elements/process.html',
#'debug' => 1,
'table' => 'part_pkg',
+ 'redirect' => $redirect_callback,
'viewall_dir' => 'browse',
'viewall_ext' => 'cgi',
'edit_ext' => 'cgi',
'custnum_ref' => \$custnum;
}
+ warn "args: ".join('/', @args). "\n";
+
@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,]+)$/;
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>!;