X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fedit%2Fprocess%2Fagent.cgi;h=554992958cec8737d59c12ad55d0fae7025e7957;hp=2b4991363596a8cc6e2cfd65d73cb518cf5b3031;hb=HEAD;hpb=51984ac3d3da3006809c6866fdecd4ad83610731 diff --git a/httemplate/edit/process/agent.cgi b/httemplate/edit/process/agent.cgi index 2b4991363..554992958 100755 --- a/httemplate/edit/process/agent.cgi +++ b/httemplate/edit/process/agent.cgi @@ -1,73 +1,56 @@ -<% -# -# $Id: agent.cgi,v 1.1 2001-07-30 07:36:04 ivan Exp $ -# -# ivan@sisd.com 97-dec-12 -# -# Changes to allow page to work at a relative position in server -# bmccane@maxbaud.net 98-apr-3 -# -# lose background, FS::CGI ivan@sisd.com 98-sep-2 -# -# $Log: agent.cgi,v $ -# Revision 1.1 2001-07-30 07:36:04 ivan -# templates!!! -# -# Revision 1.7 1999/01/25 12:09:57 ivan -# yet more mod_perl stuff -# -# Revision 1.6 1999/01/19 05:13:47 ivan -# for mod_perl: no more top-level my() variables; use vars instead -# also the last s/create/new/; -# -# Revision 1.5 1999/01/18 22:47:49 ivan -# s/create/new/g; and use fields('table_name') -# -# Revision 1.4 1998/12/30 23:03:26 ivan -# bugfixes; fields isn't exported by derived classes -# -# Revision 1.3 1998/12/17 08:40:16 ivan -# s/CGI::Request/CGI.pm/; etc -# -# Revision 1.2 1998/11/23 07:52:29 ivan -# *** empty log message *** -# +<% include( 'elements/process.html', + 'table' => 'agent', + 'viewall_dir' => 'browse', + 'viewall_ext' => 'cgi', + 'process_m2m' => { 'link_table' => 'access_groupagent', + 'target_table' => 'access_group', + }, + 'process_m2name' => { + 'link_table' => 'agent_currency', + 'name_col' => 'currency', + 'names_list' => [ $conf->config('currencies') ], + 'param_style' => 'link_table.value checkboxes', + }, + 'edit_ext' => 'cgi', + 'noerror_callback' => $process_agent_pkg_class, + ) +%> +<%init> -use strict; -use vars qw ( $cgi $agentnum $old $new $error ); -use CGI; -use CGI::Carp qw(fatalsToBrowser); -use FS::UID qw(cgisuidsetup); -use FS::Record qw(qsearch qsearchs fields); -use FS::agent; -use FS::CGI qw(popurl); +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); -$cgi = new CGI; +my $conf = new FS::Conf; -&cgisuidsetup($cgi); +if ( $conf->exists('disable_acl_changes') ) { + errorpage('ACL changes disabled in public demo.'); + die "shouldn't be reached"; +} -$agentnum = $cgi->param('agentnum'); +my $process_agent_pkg_class = sub { + my( $cgi, $agent ) = @_; -$old = qsearchs('agent',{'agentnum'=>$agentnum}) if $agentnum; + #surprising amount of false laziness w/ edit/agent.cgi + my @pkg_class = qsearch('pkg_class', { 'disabled'=>'' }); + foreach my $pkg_class ( '', @pkg_class ) { + my %agent_pkg_class = ( 'agentnum' => $agent->agentnum, + 'classnum' => $pkg_class ? $pkg_class->classnum : '' + ); + my $agent_pkg_class = + qsearchs( 'agent_pkg_class', \%agent_pkg_class ) + || new FS::agent_pkg_class \%agent_pkg_class; -$new = new FS::agent ( { - map { - $_, scalar($cgi->param($_)); - } fields('agent') -} ); + my $param = 'classnum'. $agent_pkg_class{classnum}; -if ( $agentnum ) { - $error=$new->replace($old); -} else { - $error=$new->insert; - $agentnum=$new->getfield('agentnum'); -} + $agent_pkg_class->commission_percent( $cgi->param($param) ); -if ( $error ) { - $cgi->param('error', $error); - print $cgi->redirect(popurl(2). "agent.cgi?". $cgi->query_string ); -} else { - print $cgi->redirect(popurl(3). "browse/agent.cgi"); -} + my $method = $agent_pkg_class->agentpkgclassnum ? 'replace' : 'insert'; -%> + my $error = $agent_pkg_class->$method; + die $error if $error; #XXX push this down into agent.pm w/better/transactional error handling + + } + +}; + +