From 0930d22ffc440f80c1b222b2e750cadbabd9e8f6 Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 13 Jan 2008 21:35:54 +0000 Subject: [PATCH] ACLs --- httemplate/edit/REAL_cust_pkg.cgi | 12 +- httemplate/edit/access_user.html | 6 + httemplate/edit/agent.cgi | 6 +- httemplate/edit/agent_payment_gateway.html | 37 +- httemplate/edit/agent_type.cgi | 39 +- httemplate/edit/bulk-cust_svc.html | 14 +- httemplate/edit/cust_bill_pay.cgi | 13 +- httemplate/edit/cust_credit.cgi | 9 +- httemplate/edit/cust_credit_bill.cgi | 9 +- httemplate/edit/cust_main.cgi | 196 +++++---- httemplate/edit/cust_main_county-expand.cgi | 3 + httemplate/edit/cust_main_note.cgi | 19 +- httemplate/edit/cust_pay.cgi | 7 +- httemplate/edit/cust_pkg.cgi | 69 ++-- httemplate/edit/cust_refund.cgi | 61 +-- httemplate/edit/inventory_class.html | 6 + httemplate/edit/part_bill_event.cgi | 69 ++-- httemplate/edit/part_export.cgi | 215 +++++----- httemplate/edit/part_pkg.cgi | 15 +- httemplate/edit/part_referral.html | 7 + httemplate/edit/part_svc.cgi | 71 ++-- httemplate/edit/part_virtual_field.cgi | 53 +-- httemplate/edit/payment_gateway.html | 46 +-- httemplate/edit/pkg_class.html | 6 + httemplate/edit/prepay_credit.cgi | 75 ++-- httemplate/edit/process/REAL_cust_pkg.cgi | 57 +-- httemplate/edit/process/access_user.html | 6 + httemplate/edit/process/agent.cgi | 49 +-- httemplate/edit/process/agent_payment_gateway.html | 53 +-- httemplate/edit/process/agent_type.cgi | 62 ++- httemplate/edit/process/bulk-cust_svc.cgi | 11 +- httemplate/edit/process/cust_bill_pay.cgi | 84 ++-- httemplate/edit/process/cust_credit.cgi | 73 ++-- httemplate/edit/process/cust_credit_bill.cgi | 86 ++-- httemplate/edit/process/cust_main.cgi | 3 + .../edit/process/cust_main_county-collapse.cgi | 8 + .../edit/process/cust_main_county-expand.cgi | 3 + httemplate/edit/process/cust_main_county.html | 7 + httemplate/edit/process/cust_main_note.cgi | 84 ++-- httemplate/edit/process/cust_pay.cgi | 61 ++- httemplate/edit/process/cust_pkg.cgi | 15 +- httemplate/edit/process/cust_refund.cgi | 73 ++-- httemplate/edit/process/cust_svc.cgi | 50 +-- httemplate/edit/process/domain_record.cgi | 54 ++- httemplate/edit/process/generic.cgi | 140 ++++--- httemplate/edit/process/inventory_class.html | 6 + httemplate/edit/process/msgcat.cgi | 33 +- httemplate/edit/process/part_bill_event.cgi | 173 ++++---- httemplate/edit/process/part_export.cgi | 71 ++-- httemplate/edit/process/part_pkg.cgi | 196 ++++----- httemplate/edit/process/part_referral.html | 7 + httemplate/edit/process/part_svc.cgi | 11 +- httemplate/edit/process/payment_gateway.html | 59 +-- httemplate/edit/process/pkg_class.html | 6 + httemplate/edit/process/prepay_credit.cgi | 8 +- httemplate/edit/process/quick-charge.cgi | 83 ++-- httemplate/edit/process/quick-cust_pkg.cgi | 30 +- httemplate/edit/process/rate.cgi | 11 +- httemplate/edit/process/reason.html | 6 + httemplate/edit/process/reason_type.html | 6 + httemplate/edit/process/reg_code.cgi | 64 ++- httemplate/edit/process/router.cgi | 8 +- httemplate/edit/process/svc_Common.html | 15 +- httemplate/edit/process/svc_acct.cgi | 117 +++--- httemplate/edit/process/svc_acct_pop.cgi | 49 +-- httemplate/edit/process/svc_broadband.cgi | 63 +-- httemplate/edit/process/svc_domain.cgi | 55 +-- httemplate/edit/process/svc_external.cgi | 51 +-- httemplate/edit/process/svc_forward.cgi | 51 +-- httemplate/edit/process/svc_phone.html | 6 + httemplate/edit/process/svc_www.cgi | 65 +-- httemplate/edit/quick-charge.html | 3 + httemplate/edit/rate.cgi | 1 - httemplate/edit/rate_region.cgi | 2 +- httemplate/edit/reason.html | 6 + httemplate/edit/reason_type.html | 17 +- httemplate/edit/reg_code.cgi | 29 +- httemplate/edit/router.cgi | 54 +-- httemplate/edit/svc_Common.html | 15 +- httemplate/edit/svc_acct.cgi | 264 ++++++------ httemplate/edit/svc_acct_pop.cgi | 105 +++-- httemplate/edit/svc_broadband.cgi | 183 +++++---- httemplate/edit/svc_domain.cgi | 132 +++--- httemplate/edit/svc_external.cgi | 195 ++++----- httemplate/edit/svc_forward.cgi | 219 +++++----- httemplate/edit/svc_phone.cgi | 6 + httemplate/edit/svc_www.cgi | 455 +++++++++++---------- 87 files changed, 2614 insertions(+), 2364 deletions(-) diff --git a/httemplate/edit/REAL_cust_pkg.cgi b/httemplate/edit/REAL_cust_pkg.cgi index fe6984673..fea85456f 100755 --- a/httemplate/edit/REAL_cust_pkg.cgi +++ b/httemplate/edit/REAL_cust_pkg.cgi @@ -2,7 +2,6 @@ %#, menubar( %# "View this customer (#$custnum)" => popurl(2). "view/cust_main.cgi?$custnum", -%# 'Main Menu' => popurl(2) %#)); @@ -13,9 +12,12 @@
+% # raw error from below % if ( $error ) { Error: <% $error %> % } +% #or, regular error handler +<% include('/elements/error.html') %> <% ntable("#cccccc",2) %> @@ -122,16 +124,19 @@ my $format = "%m/%d/%Y %T %z (%Z)"; <%init> +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Edit customer package dates'); + my $error = ''; my( $pkgnum, $cust_pkg ); if ( $cgi->param('error') ) { - $error = $cgi->param('error'); $pkgnum = $cgi->param('pkgnum'); - if ( $error eq '_bill_areyousure' ) { + if ( $cgi->param('error') eq '_bill_areyousure' ) { if ( $cgi->param('bill') =~ /^([\s\d\/\:\-\(\w\)]*)$/ ) { my $bill = $1; + $cgi->param('error', ''); $error = "You are attempting to set the next bill date to $bill, which is in the past. This will charge the customer for the interval from $bill until now. Are you sure you want to do this? ". @@ -174,4 +179,3 @@ unless ( $part_pkg->is_prepaid ) { } - diff --git a/httemplate/edit/access_user.html b/httemplate/edit/access_user.html index 065e60c4b..224d8d722 100644 --- a/httemplate/edit/access_user.html +++ b/httemplate/edit/access_user.html @@ -42,3 +42,9 @@ }, ) %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + + diff --git a/httemplate/edit/agent.cgi b/httemplate/edit/agent.cgi index 46ab5c705..11bfc5932 100755 --- a/httemplate/edit/agent.cgi +++ b/httemplate/edit/agent.cgi @@ -1,5 +1,4 @@ <% include("/elements/header.html","$action Agent", menubar( - 'Main Menu' => $p, 'View all agents' => $p. 'browse/agent.cgi', )) %> @@ -77,6 +76,9 @@ Agent #<% $agent->agentnum ? $agent->agentnum : "(NEW)" %> <%init> +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + my $agent; if ( $cgi->param('error') ) { $agent = new FS::agent ( { @@ -94,5 +96,3 @@ my $action = $agent->agentnum ? 'Edit' : 'Add'; my $conf = new FS::Conf; - - diff --git a/httemplate/edit/agent_payment_gateway.html b/httemplate/edit/agent_payment_gateway.html index 9692199ef..4a7cedf79 100644 --- a/httemplate/edit/agent_payment_gateway.html +++ b/httemplate/edit/agent_payment_gateway.html @@ -1,20 +1,4 @@ -% -% -%$cgi->param('agentnum') =~ /(\d+)$/ or die "illegal agentnum"; -%my $agent = qsearchs('agent', { 'agentnum' => $1 } ); -%die "agentnum $1 not found" unless $agent; -% -%#my @agent_payment_gateway; -%if ( $cgi->param('error') ) { -%} -% -%my $action = 'Add'; -% -% - - <% include("/elements/header.html","$action payment gateway override for ". $agent->agent, menubar( - 'Main Menu' => $p, #'View all payment gateways' => $p. 'browse/payment_gateway.html', 'View all agents' => $p. 'browse/agent.html', )) %> @@ -63,5 +47,22 @@ for
- - + +<% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +$cgi->param('agentnum') =~ /(\d+)$/ or die "illegal agentnum"; +my $agent = qsearchs('agent', { 'agentnum' => $1 } ); +die "agentnum $1 not found" unless $agent; + +#my @agent_payment_gateway; +if ( $cgi->param('error') ) { +} + +my $action = 'Add'; + + diff --git a/httemplate/edit/agent_type.cgi b/httemplate/edit/agent_type.cgi index bfef42fea..abf4bf89f 100755 --- a/httemplate/edit/agent_type.cgi +++ b/httemplate/edit/agent_type.cgi @@ -1,22 +1,4 @@ -% -% -%my($agent_type); -%if ( $cgi->param('error') ) { -% $agent_type = new FS::agent_type ( { -% map { $_, scalar($cgi->param($_)) } fields('agent') -% } ); -%} elsif ( $cgi->keywords ) { #editing -% my( $query ) = $cgi->keywords; -% $query =~ /^(\d+)$/; -% $agent_type=qsearchs('agent_type',{'typenum'=>$1}); -%} else { #adding -% $agent_type = new FS::agent_type {}; -%} -%my $action = $agent_type->typenum ? 'Edit' : 'Add'; -% -% <% include("/elements/header.html","$action Agent Type", menubar( - 'Main Menu' => "$p", 'View all agent types' => "${p}browse/agent_type.cgi", )) %> @@ -52,3 +34,24 @@ Select which packages agents of this type may sell to customers
<% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my($agent_type); +if ( $cgi->param('error') ) { + $agent_type = new FS::agent_type ( { + map { $_, scalar($cgi->param($_)) } fields('agent') + } ); +} elsif ( $cgi->keywords ) { #editing + my( $query ) = $cgi->keywords; + $query =~ /^(\d+)$/; + $agent_type=qsearchs('agent_type',{'typenum'=>$1}); +} else { #adding + $agent_type = new FS::agent_type {}; +} +my $action = $agent_type->typenum ? 'Edit' : 'Add'; + + diff --git a/httemplate/edit/bulk-cust_svc.html b/httemplate/edit/bulk-cust_svc.html index f2efc3ff9..6f6e3f850 100644 --- a/httemplate/edit/bulk-cust_svc.html +++ b/httemplate/edit/bulk-cust_svc.html @@ -1,9 +1,4 @@ -<% include("/elements/header.html", 'Bulk customer service change', - menubar( - 'Main Menu' => $p, - ), - ) -%> +<% include('/elements/header.html', 'Bulk customer service change') %> @@ -92,8 +87,11 @@ var confirm_change = '

Bulk customer service change - Are yo - - +<% include('/elements/footer.html') %> +<%init> +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + diff --git a/httemplate/edit/cust_bill_pay.cgi b/httemplate/edit/cust_bill_pay.cgi index 44e783eb7..28c14618f 100755 --- a/httemplate/edit/cust_bill_pay.cgi +++ b/httemplate/edit/cust_bill_pay.cgi @@ -1,4 +1,4 @@ -<% header("Apply Payment", '') %> +<% include('/elements/header-popup.html', 'Apply Payment') %> <% include('/elements/error.html') %> @@ -47,10 +47,15 @@ function changed(what) {

- - + +<% include('/elements/footer.html') %> <%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Apply payment') #; + || $FS::CurrentUser::CurrentUser->access_right('Post payment'): #remove after 1.7.3 + my($paynum, $amount, $invnum); if ( $cgi->param('error') ) { $paynum = $cgi->param('paynum'); @@ -78,5 +83,5 @@ my @cust_bill = sort { $a->_date <=> $b->_date } grep { $_->owed != 0 } qsearch('cust_bill', { 'custnum' => $cust_pay->custnum } ); - + diff --git a/httemplate/edit/cust_credit.cgi b/httemplate/edit/cust_credit.cgi index 2ff09d00b..36109cf5d 100755 --- a/httemplate/edit/cust_credit.cgi +++ b/httemplate/edit/cust_credit.cgi @@ -48,12 +48,16 @@ Credit - <%once> + my $conf = new FS::Conf; - + <%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Post credit'); + my($custnum, $amount, $reason); if ( $cgi->param('error') ) { #$cust_credit = new FS::cust_credit ( { @@ -76,4 +80,5 @@ my $_date = time; my $otaker = getotaker; my $p1 = popurl(1); + diff --git a/httemplate/edit/cust_credit_bill.cgi b/httemplate/edit/cust_credit_bill.cgi index ee29f8e0c..43ba4fb7e 100755 --- a/httemplate/edit/cust_credit_bill.cgi +++ b/httemplate/edit/cust_credit_bill.cgi @@ -1,4 +1,4 @@ -<% header("Apply Credit", '') %> +<% include('/elements/header-popup.html', 'Apply Credit') %> <% include('/elements/error.html') %> @@ -53,6 +53,11 @@ function changed(what) { <%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Apply credit') #; + || $FS::CurrentUser::CurrentUser->access_right('Post credit'): #remove after 1.7.3 + my($crednum, $amount, $invnum); if ( $cgi->param('error') ) { #$cust_credit_bill = new FS::cust_credit_bill ( { @@ -85,5 +90,5 @@ my @cust_bill = sort { $a->_date <=> $b->_date } grep { $_->owed != 0 } qsearch('cust_bill', { 'custnum' => $cust_credit->custnum } ); - + diff --git a/httemplate/edit/cust_main.cgi b/httemplate/edit/cust_main.cgi index be9dd1bfb..3ba097028 100755 --- a/httemplate/edit/cust_main.cgi +++ b/httemplate/edit/cust_main.cgi @@ -1,110 +1,10 @@ -% -% -% #for misplaced logic below -% #use FS::part_pkg; -% -% #for false laziness below (now more properly lazy) -% #use FS::svc_acct_pop; -% -% #for (other) false laziness below -% #use FS::agent; -% #use FS::type_pkgs; -% -%my $conf = new FS::Conf; -% -%#get record -% -%my $error = ''; -%my($custnum, $username, $password, $popnum, $cust_main, $saved_pkgpart, $saved_domsvc); -%my(@invoicing_list); -%my ($ss,$stateid,$payinfo); -%my $same = ''; -%if ( $cgi->param('error') ) { -% $error = $cgi->param('error'); -% $cust_main = new FS::cust_main ( { -% map { $_, scalar($cgi->param($_)) } fields('cust_main') -% } ); -% $custnum = $cust_main->custnum; -% $saved_domsvc = $cgi->param('domsvc') || ''; -% if ( $saved_domsvc =~ /^(\d+)$/ ) { -% $saved_domsvc = $1; -% } else { -% $saved_domsvc = ''; -% } -% $saved_pkgpart = $cgi->param('pkgpart_svcpart') || ''; -% if ( $saved_pkgpart =~ /^(\d+)_/ ) { -% $saved_pkgpart = $1; -% } else { -% $saved_pkgpart = ''; -% } -% $username = $cgi->param('username'); -% $password = $cgi->param('_password'); -% $popnum = $cgi->param('popnum'); -% @invoicing_list = split( /\s*,\s*/, $cgi->param('invoicing_list') ); -% $same = $cgi->param('same'); -% $cust_main->setfield('paid' => $cgi->param('paid')) if $cgi->param('paid'); -% $ss = $cust_main->ss; # don't mask an entered value on errors -% $stateid = $cust_main->stateid; # don't mask an entered value on errors -% $payinfo = $cust_main->payinfo; # don't mask an entered value on errors -%} elsif ( $cgi->keywords ) { #editing -% my( $query ) = $cgi->keywords; -% $query =~ /^(\d+)$/; -% $custnum=$1; -% $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } ); -% if ( $cust_main->dbdef_table->column('paycvv') -% && length($cust_main->paycvv) ) { -% my $paycvv = $cust_main->paycvv; -% $paycvv =~ s/./*/g; -% $cust_main->paycvv($paycvv); -% } -% $saved_pkgpart = 0; -% $saved_domsvc = 0; -% $username = ''; -% $password = ''; -% $popnum = 0; -% @invoicing_list = $cust_main->invoicing_list; -% $ss = $cust_main->masked('ss'); -% $stateid = $cust_main->masked('stateid'); -% $payinfo = $cust_main->paymask; -%} else { -% $custnum=''; -% $cust_main = new FS::cust_main ( {} ); -% $cust_main->otaker( &getotaker ); -% $cust_main->referral_custnum( $cgi->param('referral_custnum') ); -% $saved_pkgpart = 0; -% $saved_domsvc = 0; -% $username = ''; -% $password = ''; -% $popnum = 0; -% @invoicing_list = (); -% push @invoicing_list, 'POST' -% unless $conf->exists('disablepostalinvoicedefault'); -% $ss = ''; -% $stateid = ''; -% $payinfo = ''; -%} -%$cgi->delete_all(); -% -%my $action = $custnum ? 'Edit' : 'Add'; -%$action .= ": ". $cust_main->name if $custnum; -% -%my $r = qq!* !; -% -% - - - - <% include('/elements/header.html', "Customer $action", '', ' onUnload="myclose()"' ) %> -% if ( $error ) { - -Error: <% $error %>

-% } +<% include('/elements.error.html') %>
@@ -544,3 +444,97 @@ function copyelement(from, to) { <% include('/elements/footer.html') %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Edit customer'); + +#for misplaced logic below +#use FS::part_pkg; + +#for false laziness below (now more properly lazy) +#use FS::svc_acct_pop; + +#for (other) false laziness below +#use FS::agent; +#use FS::type_pkgs; + +my $conf = new FS::Conf; + +#get record + +my($custnum, $username, $password, $popnum, $cust_main, $saved_pkgpart, $saved_domsvc); +my(@invoicing_list); +my ($ss,$stateid,$payinfo); +my $same = ''; +if ( $cgi->param('error') ) { + $cust_main = new FS::cust_main ( { + map { $_, scalar($cgi->param($_)) } fields('cust_main') + } ); + $custnum = $cust_main->custnum; + $saved_domsvc = $cgi->param('domsvc') || ''; + if ( $saved_domsvc =~ /^(\d+)$/ ) { + $saved_domsvc = $1; + } else { + $saved_domsvc = ''; + } + $saved_pkgpart = $cgi->param('pkgpart_svcpart') || ''; + if ( $saved_pkgpart =~ /^(\d+)_/ ) { + $saved_pkgpart = $1; + } else { + $saved_pkgpart = ''; + } + $username = $cgi->param('username'); + $password = $cgi->param('_password'); + $popnum = $cgi->param('popnum'); + @invoicing_list = split( /\s*,\s*/, $cgi->param('invoicing_list') ); + $same = $cgi->param('same'); + $cust_main->setfield('paid' => $cgi->param('paid')) if $cgi->param('paid'); + $ss = $cust_main->ss; # don't mask an entered value on errors + $stateid = $cust_main->stateid; # don't mask an entered value on errors + $payinfo = $cust_main->payinfo; # don't mask an entered value on errors +} elsif ( $cgi->keywords ) { #editing + my( $query ) = $cgi->keywords; + $query =~ /^(\d+)$/; + $custnum=$1; + $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } ); + if ( $cust_main->dbdef_table->column('paycvv') + && length($cust_main->paycvv) ) { + my $paycvv = $cust_main->paycvv; + $paycvv =~ s/./*/g; + $cust_main->paycvv($paycvv); + } + $saved_pkgpart = 0; + $saved_domsvc = 0; + $username = ''; + $password = ''; + $popnum = 0; + @invoicing_list = $cust_main->invoicing_list; + $ss = $cust_main->masked('ss'); + $stateid = $cust_main->masked('stateid'); + $payinfo = $cust_main->paymask; +} else { + $custnum=''; + $cust_main = new FS::cust_main ( {} ); + $cust_main->otaker( &getotaker ); + $cust_main->referral_custnum( $cgi->param('referral_custnum') ); + $saved_pkgpart = 0; + $saved_domsvc = 0; + $username = ''; + $password = ''; + $popnum = 0; + @invoicing_list = (); + push @invoicing_list, 'POST' + unless $conf->exists('disablepostalinvoicedefault'); + $ss = ''; + $stateid = ''; + $payinfo = ''; +} +$cgi->delete_all(); + +my $action = $custnum ? 'Edit' : 'Add'; +$action .= ": ". $cust_main->name if $custnum; + +my $r = qq!* !; + + diff --git a/httemplate/edit/cust_main_county-expand.cgi b/httemplate/edit/cust_main_county-expand.cgi index abf8e27f2..22e823021 100755 --- a/httemplate/edit/cust_main_county-expand.cgi +++ b/httemplate/edit/cust_main_county-expand.cgi @@ -18,6 +18,9 @@ <%init> +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + my($taxnum, $expansion, $taxclass); my($query) = $cgi->keywords; if ( $cgi->param('error') ) { diff --git a/httemplate/edit/cust_main_note.cgi b/httemplate/edit/cust_main_note.cgi index 58ea779a2..6c6a1a9a0 100755 --- a/httemplate/edit/cust_main_note.cgi +++ b/httemplate/edit/cust_main_note.cgi @@ -20,13 +20,12 @@ <%init> -my($custnum, $comment, $notenum, $action); -$comment = ''; +my $comment; +my $notenum = ''; if ( $cgi->param('error') ) { $comment = $cgi->param('comment'); -}elsif ($cgi->param('notenum')) { - $cgi->param('notenum') =~ /^(\d+)$/; +} elsif ( $cgi->param('notenum') =~ /^(\d+)$/ ) { $notenum = $1; die "illegal query ". $cgi->keywords unless $notenum; my $note = qsearchs('cust_main_note', { 'notenum' => $notenum }); @@ -34,15 +33,13 @@ if ( $cgi->param('error') ) { $comment = $note->comments; } -$cgi->param('notenum') =~ /^(\d+)$/; -$notenum = $1; +$cgi->param('custnum') =~ /^(\d+)$/ or die "illeagl custnum"; +my $custnum = $1; -$cgi->param('custnum') =~ /^(\d+)$/; -$custnum = $1; +my $action = $notenum ? 'Edit' : 'Add'; -die "illegal query ". $cgi->keywords unless $custnum; - -$action = $notenum ? 'Edit' : 'Add'; +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right("$action customer note"); diff --git a/httemplate/edit/cust_pay.cgi b/httemplate/edit/cust_pay.cgi index aaa200fc4..92abb7be8 100755 --- a/httemplate/edit/cust_pay.cgi +++ b/httemplate/edit/cust_pay.cgi @@ -86,6 +86,7 @@ Payment <%once> + my $conf = new FS::Conf; my %payby = ( @@ -96,9 +97,13 @@ my %payby = ( ); my $money_char = $conf->config('money_char') || '$'; - + <%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Post payment'); + my($link, $linknum, $paid, $payby, $payinfo, $_date); if ( $cgi->param('error') ) { $link = $cgi->param('link'); diff --git a/httemplate/edit/cust_pkg.cgi b/httemplate/edit/cust_pkg.cgi index 065136c55..ecc21195d 100755 --- a/httemplate/edit/cust_pkg.cgi +++ b/httemplate/edit/cust_pkg.cgi @@ -1,35 +1,3 @@ -% -% -%my %pkg = (); -%my %comment = (); -%my %all_pkg = (); -%my %all_comment = (); -%#foreach (qsearch('part_pkg', { 'disabled' => '' })) { -%# $pkg{ $_ -> getfield('pkgpart') } = $_->getfield('pkg'); -%# $comment{ $_ -> getfield('pkgpart') } = $_->getfield('comment'); -%#} -%foreach (qsearch('part_pkg', {} )) { -% $all_pkg{ $_ -> getfield('pkgpart') } = $_->getfield('pkg'); -% $all_comment{ $_ -> getfield('pkgpart') } = $_->getfield('comment'); -% next if $_->disabled; -% $pkg{ $_ -> getfield('pkgpart') } = $_->getfield('pkg'); -% $comment{ $_ -> getfield('pkgpart') } = $_->getfield('comment'); -%} -% -%my($custnum, %remove_pkg); -%if ( $cgi->param('error') ) { -% $custnum = $cgi->param('custnum'); -% %remove_pkg = map { $_ => 1 } $cgi->param('remove_pkg'); -%} else { -% my($query) = $cgi->keywords; -% $query =~ /^(\d+)$/; -% $custnum = $1; -% %remove_pkg = (); -%} -% -%my $p1 = popurl(1); -% -% <% include('/elements/header.html', "Add/Edit Packages", '') %> <% include('/elements/error.html') %> @@ -147,3 +115,40 @@ Order new packages
<% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Bulk change customer packages'); + +my %pkg = (); +my %comment = (); +my %all_pkg = (); +my %all_comment = (); +#foreach (qsearch('part_pkg', { 'disabled' => '' })) { +# $pkg{ $_ -> getfield('pkgpart') } = $_->getfield('pkg'); +# $comment{ $_ -> getfield('pkgpart') } = $_->getfield('comment'); +#} +foreach (qsearch('part_pkg', {} )) { + $all_pkg{ $_ -> getfield('pkgpart') } = $_->getfield('pkg'); + $all_comment{ $_ -> getfield('pkgpart') } = $_->getfield('comment'); + next if $_->disabled; + $pkg{ $_ -> getfield('pkgpart') } = $_->getfield('pkg'); + $comment{ $_ -> getfield('pkgpart') } = $_->getfield('comment'); +} + +my($custnum, %remove_pkg); +if ( $cgi->param('error') ) { + $custnum = $cgi->param('custnum'); + %remove_pkg = map { $_ => 1 } $cgi->param('remove_pkg'); +} else { + my($query) = $cgi->keywords; + $query =~ /^(\d+)$/; + $custnum = $1; + %remove_pkg = (); +} + +my $p1 = popurl(1); + + + diff --git a/httemplate/edit/cust_refund.cgi b/httemplate/edit/cust_refund.cgi index b260949f0..3333f5d8c 100755 --- a/httemplate/edit/cust_refund.cgi +++ b/httemplate/edit/cust_refund.cgi @@ -1,33 +1,3 @@ -% -% -%my $conf = new FS::Conf; -%my $custnum = $cgi->param('custnum'); -%my $refund = $cgi->param('refund'); -%my $payby = $cgi->param('payby'); -%my $reason = $cgi->param('reason'); -% -%my( $paynum, $cust_pay ) = ( '', '' ); -%if ( $cgi->param('paynum') =~ /^(\d+)$/ ) { -% $paynum = $1; -% $cust_pay = qsearchs('cust_pay', { paynum=>$paynum } ) -% or die "unknown payment # $paynum"; -% $refund ||= $cust_pay->unrefunded; -% if ( $custnum ) { -% die "payment # $paynum is not for specified customer # $custnum" -% unless $custnum == $cust_pay->custnum; -% } else { -% $custnum = $cust_pay->custnum; -% } -%} -%die "no custnum or paynum specified!" unless $custnum; -% -%my $_date = time; -% -%my $p1 = popurl(1); -% -% - - <% include('/elements/header.html', 'Refund '. ucfirst(lc($payby)). ' payment', '') %> <% include('/elements/error.html') %> @@ -138,3 +108,34 @@ <% include('/elements/footer.html') %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Refund payment'); + +my $conf = new FS::Conf; +my $custnum = $cgi->param('custnum'); +my $refund = $cgi->param('refund'); +my $payby = $cgi->param('payby'); +my $reason = $cgi->param('reason'); + +my( $paynum, $cust_pay ) = ( '', '' ); +if ( $cgi->param('paynum') =~ /^(\d+)$/ ) { + $paynum = $1; + $cust_pay = qsearchs('cust_pay', { paynum=>$paynum } ) + or die "unknown payment # $paynum"; + $refund ||= $cust_pay->unrefunded; + if ( $custnum ) { + die "payment # $paynum is not for specified customer # $custnum" + unless $custnum == $cust_pay->custnum; + } else { + $custnum = $cust_pay->custnum; + } +} +die "no custnum or paynum specified!" unless $custnum; + +my $_date = time; + +my $p1 = popurl(1); + + diff --git a/httemplate/edit/inventory_class.html b/httemplate/edit/inventory_class.html index beefcd580..3ab47fe28 100644 --- a/httemplate/edit/inventory_class.html +++ b/httemplate/edit/inventory_class.html @@ -8,3 +8,9 @@ 'viewall_dir' => 'browse', ) %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + + diff --git a/httemplate/edit/part_bill_event.cgi b/httemplate/edit/part_bill_event.cgi index bb7aea49b..c7f452dc3 100755 --- a/httemplate/edit/part_bill_event.cgi +++ b/httemplate/edit/part_bill_event.cgi @@ -1,40 +1,6 @@ - -% -% -%if ( $cgi->param('eventpart') && $cgi->param('eventpart') =~ /^(\d+)$/ ) { -% $cgi->param('eventpart', $1); -%} else { -% $cgi->param('eventpart', ''); -%} -% -%my ($creason, $newcreasonT, $newcreason); -%my ($sreason, $newsreasonT, $newsreason); -% -% -%my ($query) = $cgi->keywords; -%my $action = ''; -%my $part_bill_event = ''; -%my $currentreasonclass = ''; -%if ( $cgi->param('error') ) { -% $part_bill_event = new FS::part_bill_event ( { -% map { $_, scalar($cgi->param($_)) } fields('part_bill_event') -% } ); -%} -%if ( $query && $query =~ /^(\d+)$/ ) { -% $part_bill_event ||= qsearchs('part_bill_event',{'eventpart'=>$1}); -%} else { -% $part_bill_event ||= new FS::part_bill_event {}; -%} -%$action ||= $part_bill_event->eventpart ? 'Edit' : 'Add'; -%my $hashref = $part_bill_event->hashref; -% -% - - <% include('/elements/header.html', "$action Invoice Event Definition", menubar( - 'Main Menu' => popurl(2), 'View all invoice events' => popurl(2). 'browse/part_bill_event.cgi', ) ) @@ -536,7 +502,38 @@ Invoice Event #<% $hashref->{eventpart} ? $hashref->{eventpart} : "(NEW)" %> - - +<% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +if ( $cgi->param('eventpart') && $cgi->param('eventpart') =~ /^(\d+)$/ ) { + $cgi->param('eventpart', $1); +} else { + $cgi->param('eventpart', ''); +} + +my ($creason, $newcreasonT, $newcreason); +my ($sreason, $newsreasonT, $newsreason); + +my ($query) = $cgi->keywords; +my $action = ''; +my $part_bill_event = ''; +my $currentreasonclass = ''; +if ( $cgi->param('error') ) { + $part_bill_event = new FS::part_bill_event ( { + map { $_, scalar($cgi->param($_)) } fields('part_bill_event') + } ); +} +if ( $query && $query =~ /^(\d+)$/ ) { + $part_bill_event ||= qsearchs('part_bill_event',{'eventpart'=>$1}); +} else { + $part_bill_event ||= new FS::part_bill_event {}; +} +$action ||= $part_bill_event->eventpart ? 'Edit' : 'Add'; +my $hashref = $part_bill_event->hashref; + diff --git a/httemplate/edit/part_export.cgi b/httemplate/edit/part_export.cgi index 72a07134b..d57979751 100644 --- a/httemplate/edit/part_export.cgi +++ b/httemplate/edit/part_export.cgi @@ -1,110 +1,4 @@ - -% -% -%#if ( $cgi->param('clone') && $cgi->param('clone') =~ /^(\d+)$/ ) { -%# $cgi->param('clone', $1); -%#} else { -%# $cgi->param('clone', ''); -%#} -% -%my($query) = $cgi->keywords; -%my $action = ''; -%my $part_export = ''; -%if ( $cgi->param('error') ) { -% $part_export = new FS::part_export ( { -% map { $_, scalar($cgi->param($_)) } fields('part_export') -% } ); -%} elsif ( $query =~ /^(\d+)$/ ) { -% $part_export = qsearchs('part_export', { 'exportnum' => $1 } ); -%} else { -% $part_export = new FS::part_export; -%} -%$action ||= $part_export->exportnum ? 'Edit' : 'Add'; -% -%#my $exports = FS::part_export::export_info($svcdb); -%my $exports = FS::part_export::export_info(); -% -%my %layers = map { $_ => "$_ - ". $exports->{$_}{desc} } keys %$exports; -%$layers{''}=''; -% -%my $widget = new HTML::Widgets::SelectLayers( -% 'selected_layer' => $part_export->exporttype, -% 'options' => \%layers, -% 'form_name' => 'dummy', -% 'form_action' => 'process/part_export.cgi', -% 'form_text' => [qw( exportnum machine )], -%# 'form_checkbox' => [qw()], -% 'html_between' => "\n", -% 'layer_callback' => sub { -% my $layer = shift; -% my $html = qq!!. -% ntable("#cccccc",2); -% -% $html .= 'Description'. -% $exports->{$layer}{notes}. '' -% if $layer; -% -% foreach my $option ( keys %{$exports->{$layer}{options}} ) { -% my $optinfo = $exports->{$layer}{options}{$option}; -% die "Retreived non-ref export info option from $layer export: $optinfo" -% unless ref($optinfo); -% my $label = $optinfo->{label}; -% my $type = defined($optinfo->{type}) ? $optinfo->{type} : 'text'; -% my $value = $cgi->param($option) -% || ( $part_export->exportnum && $part_export->option($option) ) -% || ( (exists $optinfo->{default} && !$part_export->exportnum) -% ? $optinfo->{default} -% : '' -% ); -% $html .= qq!$label!; -% if ( $type eq 'select' ) { -% $html .= qq!'; -% } elsif ( $type eq 'textarea' ) { -% $html .= qq!'; -% } elsif ( $type eq 'text' ) { -% $html .= qq!'; -% } elsif ( $type eq 'checkbox' ) { -% $html .= qq!{$layer}{options}} ). '">'; -% -% $html .= ''; -% -% $html .= ''; -% -% $html; -% }, -%); -% -% - -<% include("/elements/header.html","$action Export", menubar( - 'Main Menu' => popurl(2), -), ' onLoad="visualize()"') -%> +<% include('/elements/header.html', "$action Export", '', ' onLoad="visualize()"') %> <% include('/elements/error.html') %> @@ -121,6 +15,109 @@ Export <% $widget->html %> - - +<% include('/elements/footer.html') %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +#if ( $cgi->param('clone') && $cgi->param('clone') =~ /^(\d+)$/ ) { +# $cgi->param('clone', $1); +#} else { +# $cgi->param('clone', ''); +#} + +my($query) = $cgi->keywords; +my $action = ''; +my $part_export = ''; +if ( $cgi->param('error') ) { + $part_export = new FS::part_export ( { + map { $_, scalar($cgi->param($_)) } fields('part_export') + } ); +} elsif ( $query =~ /^(\d+)$/ ) { + $part_export = qsearchs('part_export', { 'exportnum' => $1 } ); +} else { + $part_export = new FS::part_export; +} +$action ||= $part_export->exportnum ? 'Edit' : 'Add'; + +#my $exports = FS::part_export::export_info($svcdb); +my $exports = FS::part_export::export_info(); + +my %layers = map { $_ => "$_ - ". $exports->{$_}{desc} } keys %$exports; +$layers{''}=''; + +my $widget = new HTML::Widgets::SelectLayers( + 'selected_layer' => $part_export->exporttype, + 'options' => \%layers, + 'form_name' => 'dummy', + 'form_action' => 'process/part_export.cgi', + 'form_text' => [qw( exportnum machine )], +# 'form_checkbox' => [qw()], + 'html_between' => "\n", + 'layer_callback' => sub { + my $layer = shift; + my $html = qq!!. + ntable("#cccccc",2); + + $html .= 'Description'. + $exports->{$layer}{notes}. '' + if $layer; + + foreach my $option ( keys %{$exports->{$layer}{options}} ) { + my $optinfo = $exports->{$layer}{options}{$option}; + die "Retreived non-ref export info option from $layer export: $optinfo" + unless ref($optinfo); + my $label = $optinfo->{label}; + my $type = defined($optinfo->{type}) ? $optinfo->{type} : 'text'; + my $value = $cgi->param($option) + || ( $part_export->exportnum && $part_export->option($option) ) + || ( (exists $optinfo->{default} && !$part_export->exportnum) + ? $optinfo->{default} + : '' + ); + $html .= qq!$label!; + if ( $type eq 'select' ) { + $html .= qq!'; + } elsif ( $type eq 'textarea' ) { + $html .= qq!'; + } elsif ( $type eq 'text' ) { + $html .= qq!'; + } elsif ( $type eq 'checkbox' ) { + $html .= qq!{$layer}{options}} ). '">'; + + $html .= ''; + + $html .= ''; + + $html; + }, +); + + diff --git a/httemplate/edit/part_pkg.cgi b/httemplate/edit/part_pkg.cgi index a337d2272..82d622610 100755 --- a/httemplate/edit/part_pkg.cgi +++ b/httemplate/edit/part_pkg.cgi @@ -1,5 +1,4 @@ -<% include("/elements/header.html","$action Package Definition", menubar( - 'Main Menu' => popurl(2), +<% include('/elements/header.html', "$action Package Definition", menubar( 'View all packages' => popurl(2). 'browse/part_pkg.cgi', )) %> % #), ' onLoad="visualize()"'); @@ -360,10 +359,18 @@ Line-item revenue recognition

Price plan <% $widget->html %> - - + +<% include('/elements/footer.html') %> <%init> +#1.7 +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); +#1.9 +#die "access denied" +# unless $FS::CurrentUser::CurrentUser->access_right('Edit package definitions') +# || $FS::CurrentUser::CurrentUser->access_right('Edit global package definitions'); + if ( $cgi->param('clone') && $cgi->param('clone') =~ /^(\d+)$/ ) { $cgi->param('clone', $1); } else { diff --git a/httemplate/edit/part_referral.html b/httemplate/edit/part_referral.html index f4572c067..daf8773f0 100755 --- a/httemplate/edit/part_referral.html +++ b/httemplate/edit/part_referral.html @@ -10,3 +10,10 @@ 'viewall_dir' => 'browse', ) %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Edit advertising sources') + || $FS::CurrentUser::CurrentUser->access_right('Edit global advertising sources'); + + diff --git a/httemplate/edit/part_svc.cgi b/httemplate/edit/part_svc.cgi index 9432839e7..4b8a24080 100755 --- a/httemplate/edit/part_svc.cgi +++ b/httemplate/edit/part_svc.cgi @@ -1,34 +1,7 @@ -% -%my $part_svc; -%my $clone = ''; -%if ( $cgi->param('clone') && $cgi->param('clone') =~ /^(\d+)$/ ) {#clone -% #$cgi->param('clone') =~ /^(\d+)$/ or die "malformed query: $query"; -% $part_svc = qsearchs('part_svc', { 'svcpart'=>$1 } ) -% or die "unknown svcpart: $1"; -% $clone = $part_svc->svcpart; -% $part_svc->svcpart(''); -%} elsif ( $cgi->keywords ) { #edit -% my($query) = $cgi->keywords; -% $query =~ /^(\d+)$/ or die "malformed query: $query"; -% $part_svc=qsearchs('part_svc', { 'svcpart'=>$1 } ) -% or die "unknown svcpart: $1"; -%} else { #adding -% $part_svc = new FS::part_svc {}; -%} -% -%my $action = $part_svc->svcpart ? 'Edit' : 'Add'; -%my $hashref = $part_svc->hashref; -%# my $p_svcdb = $part_svc->svcdb || 'svc_acct'; -% -% -% #" onLoad=\"visualize()\"" -% - -<% include("/elements/header.html","$action Service Definition", - menubar( 'Main Menu' => $p, - 'View all service definitions' => "${p}browse/part_svc.cgi" - ), - ) +<% include('/elements/header.html', "$action Service Definition", + menubar('View all service definitions' => "${p}browse/part_svc.cgi"), + #" onLoad=\"visualize()\"" + ) %>
@@ -350,6 +323,38 @@ that field. % Table <% $widget->html %> - - + +<% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my $part_svc; +my $clone = ''; +if ( $cgi->param('clone') && $cgi->param('clone') =~ /^(\d+)$/ ) {#clone + #$cgi->param('clone') =~ /^(\d+)$/ or die "malformed query: $query"; + $part_svc = qsearchs('part_svc', { 'svcpart'=>$1 } ) + or die "unknown svcpart: $1"; + $clone = $part_svc->svcpart; + $part_svc->svcpart(''); +} elsif ( $cgi->keywords ) { #edit + my($query) = $cgi->keywords; + $query =~ /^(\d+)$/ or die "malformed query: $query"; + $part_svc=qsearchs('part_svc', { 'svcpart'=>$1 } ) + or die "unknown svcpart: $1"; +} else { #adding + $part_svc = new FS::part_svc {}; +} + +my $action = $part_svc->svcpart ? 'Edit' : 'Add'; +my $hashref = $part_svc->hashref; +# my $p_svcdb = $part_svc->svcdb || 'svc_acct'; + + + + + + diff --git a/httemplate/edit/part_virtual_field.cgi b/httemplate/edit/part_virtual_field.cgi index f7f20cfd7..04ba9b0c0 100644 --- a/httemplate/edit/part_virtual_field.cgi +++ b/httemplate/edit/part_virtual_field.cgi @@ -1,27 +1,3 @@ -% -%my ($vfieldpart, $part_virtual_field); -% -%if ( $cgi->param('error') ) { -% $part_virtual_field = new FS::part_virtual_field ( { -% map { $_, scalar($cgi->param($_)) } fields('part_virtual_field')}); -% $vfieldpart = $part_virtual_field->vfieldpart; -%} else { -% my($query) = $cgi->keywords; -% if ( $query =~ /^(\d+)$/ ) { #editing -% $vfieldpart=$1; -% $part_virtual_field=qsearchs('part_virtual_field', -% {'vfieldpart' => $vfieldpart}) -% or die "Unknown vfieldpart!"; -% -% } else { #adding -% $part_virtual_field = new FS::part_virtual_field({}); -% } -%} -%my $action = $part_virtual_field->vfieldpart ? 'Edit' : 'Add'; -% -%my $p1 = popurl(1); -% -% <% include('/elements/header.html', "$action Virtual Field Definition") %> <% include('/elements/error.html') %> @@ -97,3 +73,32 @@ Field #<%$vfieldpart or "(NEW)"%>

list_source mean, LEAVE THEM BLANK. We mean it. <% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my ($vfieldpart, $part_virtual_field); + +if ( $cgi->param('error') ) { + $part_virtual_field = new FS::part_virtual_field ( { + map { $_, scalar($cgi->param($_)) } fields('part_virtual_field')}); + $vfieldpart = $part_virtual_field->vfieldpart; +} else { + my($query) = $cgi->keywords; + if ( $query =~ /^(\d+)$/ ) { #editing + $vfieldpart=$1; + $part_virtual_field=qsearchs('part_virtual_field', + {'vfieldpart' => $vfieldpart}) + or die "Unknown vfieldpart!"; + + } else { #adding + $part_virtual_field = new FS::part_virtual_field({}); + } +} +my $action = $part_virtual_field->vfieldpart ? 'Edit' : 'Add'; + +my $p1 = popurl(1); + + diff --git a/httemplate/edit/payment_gateway.html b/httemplate/edit/payment_gateway.html index 84d453cdd..e3893cf49 100644 --- a/httemplate/edit/payment_gateway.html +++ b/httemplate/edit/payment_gateway.html @@ -1,25 +1,4 @@ -% -% -%my $payment_gateway; -%if ( $cgi->param('error') ) { -% $payment_gateway = new FS::payment_gateway ( { -% map { $_, scalar($cgi->param($_)) } fields('payment_gateway') -% } ); -%} elsif ( $cgi->keywords ) { -% my($query) = $cgi->keywords; -% $query =~ /^(\d+)$/; -% $payment_gateway = qsearchs( 'payment_gateway', { 'gatewaynum' => $1 } ); -%} else { #adding -% $payment_gateway = new FS::payment_gateway {}; -%} -%my $action = $payment_gateway->gatewaynum ? 'Edit' : 'Add'; -%#my $hashref = $payment_gateway->hashref; -% -% - - <% include("/elements/header.html","$action Payment gateway", menubar( - 'Main Menu' => $p, 'View all payment gateways' => $p. 'browse/payment_gateway.html', )) %> @@ -127,6 +106,27 @@ Gateway #<% $payment_gateway->gatewaynum || "(NEW)" %>
">
- - +<% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my $payment_gateway; +if ( $cgi->param('error') ) { + $payment_gateway = new FS::payment_gateway ( { + map { $_, scalar($cgi->param($_)) } fields('payment_gateway') + } ); +} elsif ( $cgi->keywords ) { + my($query) = $cgi->keywords; + $query =~ /^(\d+)$/; + $payment_gateway = qsearchs( 'payment_gateway', { 'gatewaynum' => $1 } ); +} else { #adding + $payment_gateway = new FS::payment_gateway {}; +} +my $action = $payment_gateway->gatewaynum ? 'Edit' : 'Add'; +#my $hashref = $payment_gateway->hashref; + + diff --git a/httemplate/edit/pkg_class.html b/httemplate/edit/pkg_class.html index 6f2b072f1..eddbfc16e 100644 --- a/httemplate/edit/pkg_class.html +++ b/httemplate/edit/pkg_class.html @@ -14,3 +14,9 @@ ) %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + + diff --git a/httemplate/edit/prepay_credit.cgi b/httemplate/edit/prepay_credit.cgi index c32c04d16..9e1c30ba6 100644 --- a/httemplate/edit/prepay_credit.cgi +++ b/httemplate/edit/prepay_credit.cgi @@ -1,38 +1,11 @@ -% -%my $agent = ''; -%my $agentnum = ''; -%if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) { -% $agent = qsearchs('agent', { 'agentnum' => $agentnum=$1 } ); -%} -% -%tie my %multiplier, 'Tie::IxHash', -% 1 => 'seconds', -% 60 => 'minutes', -% 3600 => 'hours', -%; -% -%tie my %bytemultiplier, 'Tie::IxHash', -% 1 => 'bytes', -% 1000 => 'Kbytes', -% 1000000 => 'Mbytes', -% 1000000000 => 'Gbytes', -%; -% -%$cgi->param('multiplier', '60') unless $cgi->param('multiplier'); -%$cgi->param('upmultiplier', '1000000') unless $cgi->param('upmultiplier'); -%$cgi->param('downmultiplier', '1000000') unless $cgi->param('downmultiplier'); -%$cgi->param('totalmultiplier','1000000') unless $cgi->param('totalmultiplier'); - -<% include("/elements/header.html",'Generate prepaid cards'. ($agent ? ' for '. $agent->agent : ''), - menubar( 'Main Menu' => $p, )) -%> +<% include("/elements/header.html",'Generate prepaid cards'. ($agent ? ' for '. $agent->agent : '') ) %> <% include('/elements/error.html') %>
Generate - + +$ and/or - + + + + -
+ +<% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my $agent = ''; +my $agentnum = ''; +if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) { + $agent = qsearchs('agent', { 'agentnum' => $agentnum=$1 } ); +} + +tie my %multiplier, 'Tie::IxHash', + 1 => 'seconds', + 60 => 'minutes', + 3600 => 'hours', +; + +tie my %bytemultiplier, 'Tie::IxHash', + 1 => 'bytes', + 1000 => 'Kbytes', + 1000000 => 'Mbytes', + 1000000000 => 'Gbytes', +; + +$cgi->param('multiplier', '60') unless $cgi->param('multiplier'); +$cgi->param('upmultiplier', '1000000') unless $cgi->param('upmultiplier'); +$cgi->param('downmultiplier', '1000000') unless $cgi->param('downmultiplier'); +$cgi->param('totalmultiplier','1000000') unless $cgi->param('totalmultiplier'); + + diff --git a/httemplate/edit/process/REAL_cust_pkg.cgi b/httemplate/edit/process/REAL_cust_pkg.cgi index ec951c86c..ebcb7e4ba 100755 --- a/httemplate/edit/process/REAL_cust_pkg.cgi +++ b/httemplate/edit/process/REAL_cust_pkg.cgi @@ -1,31 +1,36 @@ -%my $pkgnum = $cgi->param('pkgnum') or die; -%my $old = qsearchs('cust_pkg',{'pkgnum'=>$pkgnum}); -%my %hash = $old->hash; -%$hash{'setup'} = $cgi->param('setup') ? str2time($cgi->param('setup')) : ''; -%$hash{'bill'} = $cgi->param('bill') ? str2time($cgi->param('bill')) : ''; -%$hash{'last_bill'} = -% $cgi->param('last_bill') ? str2time($cgi->param('last_bill')) : ''; -%$hash{'adjourn'} = $cgi->param('adjourn') ? str2time($cgi->param('adjourn')) : ''; -%$hash{'expire'} = $cgi->param('expire') ? str2time($cgi->param('expire')) : ''; -% -%my $new; -%my $error; -%if ( $hash{'bill'} != $old->bill # if the next bill date was changed -% && $hash{'bill'} < time # to a date in the past -% && ! $cgi->param('bill_areyousure') # and it wasn't confirmed -% ) -%{ -% $error = '_bill_areyousure'; -%} else { -% $new = new FS::cust_pkg \%hash; -% $error = $new->replace($old); -%} -% %if ( $error ) { % $cgi->param('error', $error); -% print $cgi->redirect(popurl(2). "REAL_cust_pkg.cgi?". $cgi->query_string ); +<% $cgi->redirect(popurl(2). "REAL_cust_pkg.cgi?". $cgi->query_string ) %> %} else { % my $custnum = $new->custnum; -% print $cgi->redirect(popurl(3). "view/cust_main.cgi?$custnum". -% "#cust_pkg$pkgnum" ); +<% $cgi->redirect(popurl(3). "view/cust_main.cgi?$custnum#cust_pkg$pkgnum" ) %> %} +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Edit customer package dates'); + +my $pkgnum = $cgi->param('pkgnum') or die; +my $old = qsearchs('cust_pkg',{'pkgnum'=>$pkgnum}); +my %hash = $old->hash; +$hash{'setup'} = $cgi->param('setup') ? str2time($cgi->param('setup')) : ''; +$hash{'bill'} = $cgi->param('bill') ? str2time($cgi->param('bill')) : ''; +$hash{'last_bill'} = + $cgi->param('last_bill') ? str2time($cgi->param('last_bill')) : ''; +$hash{'adjourn'} = $cgi->param('adjourn') ? str2time($cgi->param('adjourn')) : ''; +$hash{'expire'} = $cgi->param('expire') ? str2time($cgi->param('expire')) : ''; + +my $new; +my $error; +if ( $hash{'bill'} != $old->bill # if the next bill date was changed + && $hash{'bill'} < time # to a date in the past + && ! $cgi->param('bill_areyousure') # and it wasn't confirmed + ) +{ + $error = '_bill_areyousure'; +} else { + $new = new FS::cust_pkg \%hash; + $error = $new->replace($old); +} + + diff --git a/httemplate/edit/process/access_user.html b/httemplate/edit/process/access_user.html index 9f7c4ddbf..ca6bb603f 100644 --- a/httemplate/edit/process/access_user.html +++ b/httemplate/edit/process/access_user.html @@ -13,3 +13,9 @@ ) %> % } +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + + diff --git a/httemplate/edit/process/agent.cgi b/httemplate/edit/process/agent.cgi index 5128d7ae8..ad550cc37 100755 --- a/httemplate/edit/process/agent.cgi +++ b/httemplate/edit/process/agent.cgi @@ -1,29 +1,30 @@ -% -% -%my $agentnum = $cgi->param('agentnum'); -% -%my $old = qsearchs('agent',{'agentnum'=>$agentnum}) if $agentnum; -% -%my $new = new FS::agent ( { -% map { -% $_, scalar($cgi->param($_)); -% } fields('agent') -%} ); -% -%my $error; -%if ( $agentnum ) { -% $error=$new->replace($old); -%} else { -% $error=$new->insert; -% $agentnum=$new->getfield('agentnum'); -%} -% %if ( $error ) { % $cgi->param('error', $error); -% print $cgi->redirect(popurl(2). "agent.cgi?". $cgi->query_string ); +<% $cgi->redirect(popurl(2). "agent.cgi?". $cgi->query_string ) %> %} else { -% print $cgi->redirect(popurl(3). "browse/agent.cgi"); +<% $cgi->redirect(popurl(3). "browse/agent.cgi") %> %} -% -% +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my $agentnum = $cgi->param('agentnum'); + +my $old = qsearchs('agent',{'agentnum'=>$agentnum}) if $agentnum; + +my $new = new FS::agent ( { + map { + $_, scalar($cgi->param($_)); + } fields('agent') +} ); + +my $error; +if ( $agentnum ) { + $error=$new->replace($old); +} else { + $error=$new->insert; + $agentnum=$new->getfield('agentnum'); +} + diff --git a/httemplate/edit/process/agent_payment_gateway.html b/httemplate/edit/process/agent_payment_gateway.html index 436317ec4..5b5fd948a 100644 --- a/httemplate/edit/process/agent_payment_gateway.html +++ b/httemplate/edit/process/agent_payment_gateway.html @@ -1,26 +1,29 @@ -% -% -%$cgi->param('agentnum') =~ /(\d+)$/ or die "illegal agentnum"; -%my $agent = qsearchs('agent', { 'agentnum' => $1 } ); -%die "agentnum $1 not found" unless $agent; -% -%#my $old -% -%my @new = map { -% my $cardtype = $_; -% new FS::agent_payment_gateway { -% ( map { $_ => scalar($cgi->param($_)) } -% fields('agent_payment_gateway') -% ), -% 'cardtype' => $cardtype, -% }; -% } -% $cgi->param('cardtype'); -% -%foreach my $new (@new) { -% my $error = $new->insert; -% die $error if $error; -%} -% -% <% $cgi->redirect(popurl(3). "browse/agent.cgi") %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +$cgi->param('agentnum') =~ /(\d+)$/ or die "illegal agentnum"; +my $agent = qsearchs('agent', { 'agentnum' => $1 } ); +die "agentnum $1 not found" unless $agent; + +#my $old + +my @new = map { + my $cardtype = $_; + new FS::agent_payment_gateway { + ( map { $_ => scalar($cgi->param($_)) } + fields('agent_payment_gateway') + ), + 'cardtype' => $cardtype, + }; + } + $cgi->param('cardtype'); + +foreach my $new (@new) { + my $error = $new->insert; + die $error if $error; +} + + diff --git a/httemplate/edit/process/agent_type.cgi b/httemplate/edit/process/agent_type.cgi index b8d03705c..898e0667d 100755 --- a/httemplate/edit/process/agent_type.cgi +++ b/httemplate/edit/process/agent_type.cgi @@ -1,37 +1,35 @@ -% -% -%my $typenum = $cgi->param('typenum'); -%my $old = qsearchs('agent_type',{'typenum'=>$typenum}) if $typenum; -% -%my $new = new FS::agent_type ( { -% map { -% $_, scalar($cgi->param($_)); -% } fields('agent_type') -%} ); -% -%my $error; -%if ( $typenum ) { -% $error = $new->replace($old); -%} else { -% $error = $new->insert; -% $typenum = $new->getfield('typenum'); -%} -%#$error ||= $new->process_m2m( ); -% %if ( $error ) { % $cgi->param('error', $error); -% print $cgi->redirect(popurl(2). "agent_type.cgi?". $cgi->query_string ); +<% $cgi->redirect(popurl(2). "agent_type.cgi?". $cgi->query_string ) %> %} else { -% -% my $error = $new->process_m2m( -% 'link_table' => 'type_pkgs', -% 'target_table' => 'part_pkg', -% 'params' => scalar($cgi->Vars) -% ); -% die $error if $error; -% -% print $cgi->redirect(popurl(3). "browse/agent_type.cgi"); +<% $cgi->redirect(popurl(3). "browse/agent_type.cgi") %> %} -% -% +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my $typenum = $cgi->param('typenum'); +my $old = qsearchs('agent_type',{'typenum'=>$typenum}) if $typenum; + +my $new = new FS::agent_type ( { + map { + $_, scalar($cgi->param($_)); + } fields('agent_type') +} ); + +my $error; +if ( $typenum ) { + $error = $new->replace($old); +} else { + $error = $new->insert; + $typenum = $new->getfield('typenum'); +} + + $error ||= $new->process_m2m( + 'link_table' => 'type_pkgs', + 'target_table' => 'part_pkg', + 'params' => scalar($cgi->Vars) + ); +<%/init> diff --git a/httemplate/edit/process/bulk-cust_svc.cgi b/httemplate/edit/process/bulk-cust_svc.cgi index ad4d67307..313b061ff 100644 --- a/httemplate/edit/process/bulk-cust_svc.cgi +++ b/httemplate/edit/process/bulk-cust_svc.cgi @@ -1,4 +1,9 @@ -% -% my $server = new FS::UI::Web::JSRPC 'FS::part_svc::process_bulk_cust_svc', $cgi; -% <% $server->process %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my $server = new FS::UI::Web::JSRPC 'FS::part_svc::process_bulk_cust_svc', $cgi; + + diff --git a/httemplate/edit/process/cust_bill_pay.cgi b/httemplate/edit/process/cust_bill_pay.cgi index 962fc4eb9..43e672647 100755 --- a/httemplate/edit/process/cust_bill_pay.cgi +++ b/httemplate/edit/process/cust_bill_pay.cgi @@ -1,54 +1,50 @@ -% -% -%$cgi->param('paynum') =~ /^(\d*)$/ or die "Illegal paynum!"; -%my $paynum = $1; -% -%my $cust_pay = qsearchs('cust_pay', { 'paynum' => $paynum } ) -% or die "No such paynum"; -% -%my $cust_main = qsearchs('cust_main', { 'custnum' => $cust_pay->custnum } ) -% or die "Bogus credit: not attached to customer"; -% -%my $custnum = $cust_main->custnum; -% -%my $new; -%if ($cgi->param('invnum') =~ /^Refund$/) { -% $new = new FS::cust_refund ( { -% 'reason' => 'Refunding payment', #enter reason in UI -% 'refund' => $cgi->param('amount'), -% 'payby' => 'BILL', -% #'_date' => $cgi->param('_date'), -% 'payinfo' => 'Cash', #enter payinfo in UI -% 'paynum' => $paynum, -% } ); -%} else { -% $new = new FS::cust_bill_pay ( { -% map { -% $_, scalar($cgi->param($_)); -% #} qw(custnum _date amount invnum) -% } fields('cust_bill_pay') -% } ); -%} -% -%my $error = $new->insert; -% %if ( $error ) { -% % $cgi->param('error', $error); -% <% $cgi->redirect(popurl(2). "cust_bill_pay.cgi?". $cgi->query_string ) %> -% -% %} else { -% -% #print $cgi->redirect(popurl(3). "view/cust_main.cgi?$custnum"); -% -% <% header('Payment application sucessful') %> - - + + % } +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Apply payment') #; + || $FS::CurrentUser::CurrentUser->access_right('Post payment'): #remove after 1.7.3 + +$cgi->param('paynum') =~ /^(\d*)$/ or die "Illegal paynum!"; +my $paynum = $1; + +my $cust_pay = qsearchs('cust_pay', { 'paynum' => $paynum } ) + or die "No such paynum"; + +my $cust_main = qsearchs('cust_main', { 'custnum' => $cust_pay->custnum } ) + or die "Bogus credit: not attached to customer"; + +my $custnum = $cust_main->custnum; + +my $new; +if ($cgi->param('invnum') =~ /^Refund$/) { + $new = new FS::cust_refund ( { + 'reason' => 'Refunding payment', #enter reason in UI + 'refund' => $cgi->param('amount'), + 'payby' => 'BILL', + #'_date' => $cgi->param('_date'), + 'payinfo' => 'Cash', #enter payinfo in UI + 'paynum' => $paynum, + } ); +} else { + $new = new FS::cust_bill_pay ( { + map { + $_, scalar($cgi->param($_)); + #} qw(custnum _date amount invnum) + } fields('cust_bill_pay') + } ); +} + +my $error = $new->insert; + diff --git a/httemplate/edit/process/cust_credit.cgi b/httemplate/edit/process/cust_credit.cgi index 9dcad7f68..8715ad61e 100755 --- a/httemplate/edit/process/cust_credit.cgi +++ b/httemplate/edit/process/cust_credit.cgi @@ -1,46 +1,10 @@ -% -% -%$cgi->param('custnum') =~ /^(\d*)$/ or die "Illegal custnum!"; -%my $custnum = $1; -% -%$cgi->param('reasonnum') =~ /^(-?\d+)$/ or die "Illegal reasonnum"; -%my $reasonnum = $1; -% -%my $oldAutoCommit = $FS::UID::AutoCommit; -%local $FS::UID::AutoCommit = 0; -%my $dbh = dbh; -% -%my $error = ''; -%if ($reasonnum == -1) { -% -% $error = 'Enter a new reason (or select an existing one)' -% unless $cgi->param('newreasonnum') !~ /^\s*$/; -% my $reason = new FS::reason({ 'reason_type' => $cgi->param('newreasonnumT'), -% 'reason' => $cgi->param('newreasonnum'), -% }); -% $error ||= $reason->insert; -% $cgi->param('reasonnum', $reason->reasonnum) -% unless $error; -%} -% -%unless ($error) { -% my $new = new FS::cust_credit ( { -% map { -% $_, scalar($cgi->param($_)); -% } fields('cust_credit') -% } ); -% $error = $new->insert; -%} -% %if ( $error ) { % $cgi->param('reasonnum', $reasonnum); % $cgi->param('error', $error); % $dbh->rollback if $oldAutoCommit; -% % <% $cgi->redirect(popurl(2). "cust_credit.cgi?". $cgi->query_string ) %> % -% %} else { % % if ( $cgi->param('apply') eq 'yes' ) { @@ -59,4 +23,41 @@ % } +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Post credit'); + +$cgi->param('custnum') =~ /^(\d*)$/ or die "Illegal custnum!"; +my $custnum = $1; + +$cgi->param('reasonnum') =~ /^(-?\d+)$/ or die "Illegal reasonnum"; +my $reasonnum = $1; + +my $oldAutoCommit = $FS::UID::AutoCommit; +local $FS::UID::AutoCommit = 0; +my $dbh = dbh; + +my $error = ''; +if ($reasonnum == -1) { + + $error = 'Enter a new reason (or select an existing one)' + unless $cgi->param('newreasonnum') !~ /^\s*$/; + my $reason = new FS::reason({ 'reason_type' => $cgi->param('newreasonnumT'), + 'reason' => $cgi->param('newreasonnum'), + }); + $error ||= $reason->insert; + $cgi->param('reasonnum', $reason->reasonnum) + unless $error; +} + +unless ($error) { + my $new = new FS::cust_credit ( { + map { + $_, scalar($cgi->param($_)); + } fields('cust_credit') + } ); + $error = $new->insert; +} + diff --git a/httemplate/edit/process/cust_credit_bill.cgi b/httemplate/edit/process/cust_credit_bill.cgi index 7509a3f02..74ae00888 100755 --- a/httemplate/edit/process/cust_credit_bill.cgi +++ b/httemplate/edit/process/cust_credit_bill.cgi @@ -1,55 +1,51 @@ -% -% -%$cgi->param('crednum') =~ /^(\d*)$/ or die "Illegal crednum!"; -%my $crednum = $1; -% -%my $cust_credit = qsearchs('cust_credit', { 'crednum' => $crednum } ) -% or die "No such crednum"; -% -%my $cust_main = qsearchs('cust_main', { 'custnum' => $cust_credit->custnum } ) -% or die "Bogus credit: not attached to customer"; -% -%my $custnum = $cust_main->custnum; -% -%my $new; -%if ($cgi->param('invnum') =~ /^Refund$/) { -% $new = new FS::cust_refund ( { -% 'reason' => ( $cust_credit->reason || 'refund from credit' ), -% 'refund' => $cgi->param('amount'), -% 'payby' => 'BILL', -% #'_date' => $cgi->param('_date'), -% #'payinfo' => 'Cash', -% 'payinfo' => 'Refund', -% 'crednum' => $crednum, -% } ); -%} else { -% $new = new FS::cust_credit_bill ( { -% map { -% $_, scalar($cgi->param($_)); -% #} qw(custnum _date amount invnum) -% } fields('cust_credit_bill') -% } ); -%} -% -%my $error = $new->insert; -% %if ( $error ) { -% % $cgi->param('error', $error); -% <% $cgi->redirect(popurl(2). "cust_credit_bill.cgi?". $cgi->query_string ) %> -% -% %} else { -% -% #print $cgi->redirect(popurl(3). "view/cust_main.cgi?$custnum"); -% -% <% header('Credit application sucessful') %> - - + + % } +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Apply credit') #; + || $FS::CurrentUser::CurrentUser->access_right('Post credit'): #remove after 1.7.3 + +$cgi->param('crednum') =~ /^(\d*)$/ or die "Illegal crednum!"; +my $crednum = $1; + +my $cust_credit = qsearchs('cust_credit', { 'crednum' => $crednum } ) + or die "No such crednum"; + +my $cust_main = qsearchs('cust_main', { 'custnum' => $cust_credit->custnum } ) + or die "Bogus credit: not attached to customer"; + +my $custnum = $cust_main->custnum; + +my $new; +if ($cgi->param('invnum') =~ /^Refund$/) { + $new = new FS::cust_refund ( { + 'reason' => ( $cust_credit->reason || 'refund from credit' ), + 'refund' => $cgi->param('amount'), + 'payby' => 'BILL', + #'_date' => $cgi->param('_date'), + #'payinfo' => 'Cash', + 'payinfo' => 'Refund', + 'crednum' => $crednum, + } ); +} else { + $new = new FS::cust_credit_bill ( { + map { + $_, scalar($cgi->param($_)); + #} qw(custnum _date amount invnum) + } fields('cust_credit_bill') + } ); +} + +my $error = $new->insert; + diff --git a/httemplate/edit/process/cust_main.cgi b/httemplate/edit/process/cust_main.cgi index 8de2092f9..b0c9e3e57 100755 --- a/httemplate/edit/process/cust_main.cgi +++ b/httemplate/edit/process/cust_main.cgi @@ -16,6 +16,9 @@ my $DEBUG = 0; <%init> +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Edit customer'); + my $error = ''; #unmunge stuff diff --git a/httemplate/edit/process/cust_main_county-collapse.cgi b/httemplate/edit/process/cust_main_county-collapse.cgi index 4bcaf1de3..a917825ce 100755 --- a/httemplate/edit/process/cust_main_county-collapse.cgi +++ b/httemplate/edit/process/cust_main_county-collapse.cgi @@ -33,4 +33,12 @@ %print $cgi->redirect(popurl(3). "browse/cust_main_county.cgi"); % % +<%init> +#this isn't actually linked from anywhere just now, but it will be again soon + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + + + diff --git a/httemplate/edit/process/cust_main_county-expand.cgi b/httemplate/edit/process/cust_main_county-expand.cgi index 4e04f37fc..a8b4c2511 100755 --- a/httemplate/edit/process/cust_main_county-expand.cgi +++ b/httemplate/edit/process/cust_main_county-expand.cgi @@ -8,6 +8,9 @@ <%init> +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + $cgi->param('taxnum') =~ /^(\d+)$/ or die "Illegal taxnum!"; my $taxnum = $1; my $cust_main_county = qsearchs('cust_main_county',{'taxnum'=>$taxnum}) diff --git a/httemplate/edit/process/cust_main_county.html b/httemplate/edit/process/cust_main_county.html index 3d9d20b85..cb56166c8 100644 --- a/httemplate/edit/process/cust_main_county.html +++ b/httemplate/edit/process/cust_main_county.html @@ -4,3 +4,10 @@ #someday change the individual element and go away instead ) %> +<%init> + +my $conf = new FS::Conf; +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + + diff --git a/httemplate/edit/process/cust_main_note.cgi b/httemplate/edit/process/cust_main_note.cgi index 8b9105bd8..9689ca6d6 100755 --- a/httemplate/edit/process/cust_main_note.cgi +++ b/httemplate/edit/process/cust_main_note.cgi @@ -1,42 +1,7 @@ -% -% -%$cgi->param('custnum') =~ /^(\d+)$/ -% or die "Illegal custnum: ". $cgi->param('custnum'); -%my $custnum = $1; -% -%$cgi->param('notenum') =~ /^(\d*)$/ -% or die "Illegal notenum: ". $cgi->param('notenum'); -%my $notenum = $1; -% -%my $otaker = $FS::CurrentUser::CurrentUser->name; -%$otaker = $FS::CurrentUser::CurrentUser->username -% if ($otaker eq "User, Legacy"); -% -%my $new = new FS::cust_main_note ( { -% notenum => $notenum, -% custnum => $custnum, -% _date => time, -% otaker => $otaker, -% comments => $cgi->param('comment'), -%} ); -% -%my $error; -%if ($notenum){ -% my $old = qsearchs('cust_main_note', { 'notenum' => $notenum }); -% $error = "No such note: $notenum" unless $old; -% unless($error){ -% map { $new->$_($old->$_) } ('_date', 'otaker'); -% $error = $new->replace($old); -% } -%}else{ -% $error = $new->insert; -%} -% %if ($error) { % $cgi->param('error', $error); -% print $cgi->redirect(popurl(2). 'cust_main_note.cgi?'. $cgi->query_string ); -%} -% +<% $cgi->redirect(popurl(2). 'cust_main_note.cgi?'. $cgi->query_string ) %> +%} else { % <% header('Note ' . ($notenum ? 'updated' : 'added') ) %> % -% +% } +<%init> + +$cgi->param('custnum') =~ /^(\d+)$/ + or die "Illegal custnum: ". $cgi->param('custnum'); +my $custnum = $1; + +$cgi->param('notenum') =~ /^(\d*)$/ + or die "Illegal notenum: ". $cgi->param('notenum'); +my $notenum = $1; + +my $otaker = $FS::CurrentUser::CurrentUser->name; +$otaker = $FS::CurrentUser::CurrentUser->username + if ($otaker eq "User, Legacy"); + +my $new = new FS::cust_main_note ( { + notenum => $notenum, + custnum => $custnum, + _date => time, + otaker => $otaker, + comments => $cgi->param('comment'), +} ); + +my $error; +if ($notenum) { + + die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Edit customer note'); + + my $old = qsearchs('cust_main_note', { 'notenum' => $notenum }); + $error = "No such note: $notenum" unless $old; + unless ($error) { + map { $new->$_($old->$_) } ('_date', 'otaker'); + $error = $new->replace($old); + } + +} else { + + die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Add customer note'); + + $error = $new->insert; +} + diff --git a/httemplate/edit/process/cust_pay.cgi b/httemplate/edit/process/cust_pay.cgi index a34c88aba..647f6fc6c 100755 --- a/httemplate/edit/process/cust_pay.cgi +++ b/httemplate/edit/process/cust_pay.cgi @@ -1,32 +1,8 @@ -% -% -%$cgi->param('linknum') =~ /^(\d+)$/ -% or die "Illegal linknum: ". $cgi->param('linknum'); -%my $linknum = $1; -% -%$cgi->param('link') =~ /^(custnum|invnum|popup)$/ -% or die "Illegal link: ". $cgi->param('link'); -%my $field = my $link = $1; -%$field = 'custnum' if $field eq 'popup'; -% -%my $_date = str2time($cgi->param('_date')); -% -%my $new = new FS::cust_pay ( { -% $field => $linknum, -% _date => $_date, -% map { -% $_, scalar($cgi->param($_)); -% } qw(paid payby payinfo paybatch) -% #} fields('cust_pay') -%} ); -% -%my $error = $new->insert( 'manual' => 1 ); -% %if ($error) { % $cgi->param('error', $error); -% print $cgi->redirect(popurl(2). 'cust_pay.cgi?'. $cgi->query_string ); +<% $cgi->redirect(popurl(2). 'cust_pay.cgi?'. $cgi->query_string ) %> %} elsif ( $field eq 'invnum' ) { -% print $cgi->redirect(popurl(3). "view/cust_bill.cgi?$linknum"); +<% $cgi->redirect(popurl(3). "view/cust_bill.cgi?$linknum") %> %} elsif ( $field eq 'custnum' ) { % if ( $cgi->param('apply') eq 'yes' ) { % my $cust_main = qsearchs('cust_main', { 'custnum' => $linknum }) @@ -34,7 +10,6 @@ % $cust_main->apply_payments; % } % if ( $link eq 'popup' ) { -% % <% header('Payment entered') %> +% } +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('One-time charge'); + +my $error = ''; +my $param = $cgi->Vars; + +my @description = (); +for ( my $row = 0; exists($param->{"description$row"}); $row++ ) { + push @description, $param->{"description$row"} + if ($param->{"description$row"} =~ /\S/); +} + +$param->{"custnum"} =~ /^(\d+)$/ + or $error .= "Illegal customer number " . $param->{"custnum"} . " "; +my $custnum = $1; + +$param->{"amount"} =~ /^\s*(\d+(\.\d{1,2})?)\s*$/ + or $error .= "Illegal amount " . $param->{"amount"} . " "; +my $amount = $1; + +if ( $param->{'taxclass'} eq '(select)' ) { + $error .= "Must select a tax class. "; +} + +unless ( $error ) { + my $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } ) + or $error .= "Unknown customer number $custnum. "; + + $error ||= $cust_main->charge( { + 'amount' => $amount, + 'pkg' => scalar($cgi->param('pkg')), + 'taxclass' => scalar($cgi->param('taxclass')), + 'additional' => \@description, + } ); +} + + diff --git a/httemplate/edit/process/quick-cust_pkg.cgi b/httemplate/edit/process/quick-cust_pkg.cgi index 66d02e307..6b65653c2 100644 --- a/httemplate/edit/process/quick-cust_pkg.cgi +++ b/httemplate/edit/process/quick-cust_pkg.cgi @@ -1,17 +1,6 @@ -%#untaint custnum -%$cgi->param('custnum') =~ /^(\d+)$/ -% or die 'illegal custnum '. $cgi->param('custnum'); -%my $custnum = $1; -%$cgi->param('pkgpart') =~ /^(\d+)$/ -% or die 'illegal pkgpart '. $cgi->param('pkgpart'); -%my $pkgpart = $1; -% -%my @cust_pkg = (); -%my $error = FS::cust_pkg::order($custnum, [ $pkgpart ], [], \@cust_pkg, [ $cgi->param('refnum') ] ); -% %if ($error) { % $cgi->param('error', $error); -% print $cgi->redirect(popurl(2). 'misc/order_pkg.html?'. $cgi->query_string ); +<% $cgi->redirect(popurl(2). 'misc/order_pkg.html?'. $cgi->query_string ) %> %} else { % my $frag = "cust_pkg". $cust_pkg[0]->pkgnum; <% header('Package ordered') %> @@ -25,3 +14,20 @@ %} +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Order customer package'); + +#untaint custnum +$cgi->param('custnum') =~ /^(\d+)$/ + or die 'illegal custnum '. $cgi->param('custnum'); +my $custnum = $1; +$cgi->param('pkgpart') =~ /^(\d+)$/ + or die 'illegal pkgpart '. $cgi->param('pkgpart'); +my $pkgpart = $1; + +my @cust_pkg = (); +my $error = FS::cust_pkg::order($custnum, [ $pkgpart ], [], \@cust_pkg, [ $cgi->param('refnum') ] ); + + diff --git a/httemplate/edit/process/rate.cgi b/httemplate/edit/process/rate.cgi index c81f883b7..48d9322ca 100755 --- a/httemplate/edit/process/rate.cgi +++ b/httemplate/edit/process/rate.cgi @@ -1,4 +1,9 @@ -% -% my $server = new FS::UI::Web::JSRPC 'FS::rate::process', $cgi; -% <% $server->process %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my $server = new FS::UI::Web::JSRPC 'FS::rate::process', $cgi; + + diff --git a/httemplate/edit/process/reason.html b/httemplate/edit/process/reason.html index 55c1ea958..cb79ed254 100644 --- a/httemplate/edit/process/reason.html +++ b/httemplate/edit/process/reason.html @@ -4,3 +4,9 @@ $cgi->param('class') . '&', ) %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + + diff --git a/httemplate/edit/process/reason_type.html b/httemplate/edit/process/reason_type.html index 4ccccaddd..3172b27c4 100644 --- a/httemplate/edit/process/reason_type.html +++ b/httemplate/edit/process/reason_type.html @@ -4,3 +4,9 @@ $cgi->param('class') . '&', ) %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + + diff --git a/httemplate/edit/process/reg_code.cgi b/httemplate/edit/process/reg_code.cgi index d93bb55a2..c4327991d 100644 --- a/httemplate/edit/process/reg_code.cgi +++ b/httemplate/edit/process/reg_code.cgi @@ -1,50 +1,46 @@ -% -% -%$cgi->param('agentnum') =~ /^(\d+)$/ -% or errorpage('illegal agentnum '. $cgi->param('agentnum')); -%my $agentnum = $1; -%my $agent = qsearchs('agent', { 'agentnum' => $agentnum } ); -% -%my $error = ''; -% -%my $num = 0; -%if ( $cgi->param('num') =~ /^\s*(\d+)\s*$/ ) { -% $num = $1; -%} else { -% $error = 'Illegal number of codes: '. $cgi->param('num'); -%} -% -%my @pkgparts = -% map { /^pkgpart(.*)$/; $1 } -% grep { $cgi->param($_) } -% grep { /^pkgpart/ } -% $cgi->param; -% -%$error ||= $agent->generate_reg_codes($num, \@pkgparts); -% %unless ( ref($error) ) { % $cgi->param('error'. $error ); -% -<% - $cgi->redirect(popurl(3). "edit/reg_code.cgi?". $cgi->query_string ) -%> +<% $cgi->redirect(popurl(3). "edit/reg_code.cgi?". $cgi->query_string ) %> % } else { - <% include("/elements/header.html","$num registration codes generated for ". $agent->agent, menubar( - 'Main menu' => popurl(3), 'View all agents' => popurl(3). 'browse/agent.cgi', ) ) %>

 % foreach my $code ( @$error ) { 
-
   <% $code %>
 % } 
-
-
 
- +<% include('/elements/footer.html') %> % } +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +$cgi->param('agentnum') =~ /^(\d+)$/ + or errorpage('illegal agentnum '. $cgi->param('agentnum')); +my $agentnum = $1; +my $agent = qsearchs('agent', { 'agentnum' => $agentnum } ); + +my $error = ''; + +my $num = 0; +if ( $cgi->param('num') =~ /^\s*(\d+)\s*$/ ) { + $num = $1; +} else { + $error = 'Illegal number of codes: '. $cgi->param('num'); +} + +my @pkgparts = + map { /^pkgpart(.*)$/; $1 } + grep { $cgi->param($_) } + grep { /^pkgpart/ } + $cgi->param; + +$error ||= $agent->generate_reg_codes($num, \@pkgparts); + + diff --git a/httemplate/edit/process/router.cgi b/httemplate/edit/process/router.cgi index c69114ea4..7e0baf782 100644 --- a/httemplate/edit/process/router.cgi +++ b/httemplate/edit/process/router.cgi @@ -1,5 +1,3 @@ -% -% %local $FS::UID::AutoCommit=0; % %sub check { @@ -64,5 +62,9 @@ %dbh->commit or die dbh->errstr; %print $cgi->redirect(popurl(3). "browse/router.cgi"); % -% +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + diff --git a/httemplate/edit/process/svc_Common.html b/httemplate/edit/process/svc_Common.html index f5c869a12..cf5f01f71 100644 --- a/httemplate/edit/process/svc_Common.html +++ b/httemplate/edit/process/svc_Common.html @@ -1,13 +1,16 @@ +<% include( 'elements/svc_Common.html', + 'table' => $table, + 'redirect' => popurl(3)."view/svc_Common.html?svcdb=$table;svcnum=", + 'error_redirect' => popurl(3)."edit/svc_Common.html?svcdb=$table;", + ) +%> <%init> +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? + $cgi->param('svcdb') =~ /^(svc_\w+)$/ or die "unparsable svcdb"; my $table = $1; require "FS/$table.pm"; -<% include( 'elements/svc_Common.html', - 'table' => $table, - 'redirect' => popurl(3)."view/svc_Common.html?svcdb=$table;svcnum=", - 'error_redirect' => popurl(3)."edit/svc_Common.html?svcdb=$table;", - ) -%> diff --git a/httemplate/edit/process/svc_acct.cgi b/httemplate/edit/process/svc_acct.cgi index d9aac9fac..0a89e253c 100755 --- a/httemplate/edit/process/svc_acct.cgi +++ b/httemplate/edit/process/svc_acct.cgi @@ -1,63 +1,64 @@ -% -% -%$cgi->param('svcnum') =~ /^(\d*)$/ or die "Illegal svcnum!"; -%my $svcnum = $1; -% -%my $old; -%if ( $svcnum ) { -% $old = qsearchs('svc_acct', { 'svcnum' => $svcnum } ) -% or die "fatal: can't find account (svcnum $svcnum)!"; -%} else { -% $old = ''; -%} -% -%#unmunge popnum -%$cgi->param('popnum', (split(/:/, $cgi->param('popnum') ))[0] ); -% -%#unmunge passwd -%if ( $cgi->param('_password') eq '*HIDDEN*' ) { -% die "fatal: no previous account to recall hidden password from!" unless $old; -% $cgi->param('_password',$old->getfield('_password')); -%} -% -%#unmunge usergroup -%$cgi->param('usergroup', [ $cgi->param('radius_usergroup') ] ); -% -%#unmunge bytecounts -%foreach (map { $_,$_."_threshold" } qw( upbytes downbytes totalbytes )) { -% $cgi->param($_, FS::UI::bytecount::parse_bytecount($cgi->param($_)) ); -%} -% -%my %hash = $svcnum ? $old->hash : (); -%map { -% $hash{$_} = scalar($cgi->param($_)); -% #} qw(svcnum pkgnum svcpart username _password popnum uid gid finger dir -% # shell quota slipip) -% } (fields('svc_acct'), qw ( pkgnum svcpart usergroup )); -%my $new = new FS::svc_acct ( \%hash ); -% -%my $error; -%if ( $svcnum ) { -% foreach (grep { $old->$_ != $new->$_ } qw( seconds upbytes downbytes totalbytes )) { -% my %hash = map { $_ => $new->$_ } -% grep { $new->$_ } -% qw( seconds upbytes downbytes totalbytes ); -% -% $error = $new->set_usage(\%hash); #unoverlimit and trigger radius changes -% last; #once is enough -% } -% $error ||= $new->replace($old); -%} else { -% $error = $new->insert; -% $svcnum = $new->svcnum; -%} -% %if ( $error ) { % $cgi->param('error', $error); -% print $cgi->redirect(popurl(2). "svc_acct.cgi?". $cgi->query_string ); +<% $cgi->redirect(popurl(2). "svc_acct.cgi?". $cgi->query_string ) %> %} else { -% print $cgi->redirect(popurl(3). "view/svc_acct.cgi?" . $svcnum ); +<% $cgi->redirect(popurl(3). "view/svc_acct.cgi?" . $svcnum ) %> %} -% -% +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? + +$cgi->param('svcnum') =~ /^(\d*)$/ or die "Illegal svcnum!"; +my $svcnum = $1; + +my $old; +if ( $svcnum ) { + $old = qsearchs('svc_acct', { 'svcnum' => $svcnum } ) + or die "fatal: can't find account (svcnum $svcnum)!"; +} else { + $old = ''; +} + +#unmunge popnum +$cgi->param('popnum', (split(/:/, $cgi->param('popnum') ))[0] ); + +#unmunge passwd +if ( $cgi->param('_password') eq '*HIDDEN*' ) { + die "fatal: no previous account to recall hidden password from!" unless $old; + $cgi->param('_password',$old->getfield('_password')); +} + +#unmunge usergroup +$cgi->param('usergroup', [ $cgi->param('radius_usergroup') ] ); + +#unmunge bytecounts +foreach (map { $_,$_."_threshold" } qw( upbytes downbytes totalbytes )) { + $cgi->param($_, FS::UI::bytecount::parse_bytecount($cgi->param($_)) ); +} + +my %hash = $svcnum ? $old->hash : (); +map { + $hash{$_} = scalar($cgi->param($_)); + #} qw(svcnum pkgnum svcpart username _password popnum uid gid finger dir + # shell quota slipip) + } (fields('svc_acct'), qw ( pkgnum svcpart usergroup )); +my $new = new FS::svc_acct ( \%hash ); + +my $error; +if ( $svcnum ) { + foreach (grep { $old->$_ != $new->$_ } qw( seconds upbytes downbytes totalbytes )) { + my %hash = map { $_ => $new->$_ } + grep { $new->$_ } + qw( seconds upbytes downbytes totalbytes ); + + $error = $new->set_usage(\%hash); #unoverlimit and trigger radius changes + last; #once is enough + } + $error ||= $new->replace($old); +} else { + $error = $new->insert; + $svcnum = $new->svcnum; +} + diff --git a/httemplate/edit/process/svc_acct_pop.cgi b/httemplate/edit/process/svc_acct_pop.cgi index 9e9df7bf0..75b89c88f 100755 --- a/httemplate/edit/process/svc_acct_pop.cgi +++ b/httemplate/edit/process/svc_acct_pop.cgi @@ -1,29 +1,30 @@ -% -% -%my $popnum = $cgi->param('popnum'); -% -%my $old = qsearchs('svc_acct_pop',{'popnum'=>$popnum}) if $popnum; -% -%my $new = new FS::svc_acct_pop ( { -% map { -% $_, scalar($cgi->param($_)); -% } fields('svc_acct_pop') -%} ); -% -%my $error = ''; -%if ( $popnum ) { -% $error = $new->replace($old); -%} else { -% $error = $new->insert; -% $popnum=$new->getfield('popnum'); -%} -% %if ( $error ) { % $cgi->param('error', $error); -% print $cgi->redirect(popurl(2). "svc_acct_pop.cgi?". $cgi->query_string ); +<% $cgi->redirect(popurl(2). "svc_acct_pop.cgi?". $cgi->query_string ) %> %} else { -% print $cgi->redirect(popurl(3). "browse/svc_acct_pop.cgi"); +<% $cgi->redirect(popurl(3). "browse/svc_acct_pop.cgi") %> %} -% -% +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my $popnum = $cgi->param('popnum'); + +my $old = qsearchs('svc_acct_pop',{'popnum'=>$popnum}) if $popnum; + +my $new = new FS::svc_acct_pop ( { + map { + $_, scalar($cgi->param($_)); + } fields('svc_acct_pop') +} ); + +my $error = ''; +if ( $popnum ) { + $error = $new->replace($old); +} else { + $error = $new->insert; + $popnum=$new->getfield('popnum'); +} + diff --git a/httemplate/edit/process/svc_broadband.cgi b/httemplate/edit/process/svc_broadband.cgi index cf4604639..8600da349 100644 --- a/httemplate/edit/process/svc_broadband.cgi +++ b/httemplate/edit/process/svc_broadband.cgi @@ -1,37 +1,38 @@ -% -% -%$cgi->param('svcnum') =~ /^(\d*)$/ or die "Illegal svcnum!"; -%my $svcnum = $1; -% -%my $old; -%if ( $svcnum ) { -% $old = qsearchs('svc_broadband', { 'svcnum' => $svcnum } ) -% or die "fatal: can't find broadband service (svcnum $svcnum)!"; -%} else { -% $old = ''; -%} -% -%my $new = new FS::svc_broadband ( { -% map { -% ($_, scalar($cgi->param($_))); -% } ( fields('svc_broadband'), qw( pkgnum svcpart ) ) -%} ); -% -%my $error; -%if ( $svcnum ) { -% $error = $new->replace($old); -%} else { -% $error = $new->insert; -% $svcnum = $new->svcnum; -%} -% %if ( $error ) { % $cgi->param('error', $error); % $cgi->param('ip_addr', $new->ip_addr); -% print $cgi->redirect(popurl(2). "svc_broadband.cgi?". $cgi->query_string ); +<% $cgi->redirect(popurl(2). "svc_broadband.cgi?". $cgi->query_string ) %> %} else { -% print $cgi->redirect(popurl(3). "view/svc_broadband.cgi?" . $svcnum ); +<% $cgi->redirect(popurl(3). "view/svc_broadband.cgi?" . $svcnum ) %> %} -% -% +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? + +$cgi->param('svcnum') =~ /^(\d*)$/ or die "Illegal svcnum!"; +my $svcnum = $1; + +my $old; +if ( $svcnum ) { + $old = qsearchs('svc_broadband', { 'svcnum' => $svcnum } ) + or die "fatal: can't find broadband service (svcnum $svcnum)!"; +} else { + $old = ''; +} + +my $new = new FS::svc_broadband ( { + map { + ($_, scalar($cgi->param($_))); + } ( fields('svc_broadband'), qw( pkgnum svcpart ) ) +} ); + +my $error; +if ( $svcnum ) { + $error = $new->replace($old); +} else { + $error = $new->insert; + $svcnum = $new->svcnum; +} + diff --git a/httemplate/edit/process/svc_domain.cgi b/httemplate/edit/process/svc_domain.cgi index 773143fe3..9993a879e 100755 --- a/httemplate/edit/process/svc_domain.cgi +++ b/httemplate/edit/process/svc_domain.cgi @@ -1,32 +1,33 @@ -% -% -%#remove this to actually test the domains! -%$FS::svc_domain::whois_hack = 1; -% -%$cgi->param('svcnum') =~ /^(\d*)$/ or die "Illegal svcnum!"; -%my $svcnum = $1; -% -%my $new = new FS::svc_domain ( { -% map { -% $_, scalar($cgi->param($_)); -% #} qw(svcnum pkgnum svcpart domain action purpose) -% } ( fields('svc_domain'), qw( pkgnum svcpart action purpose ) ) -%} ); -% -%my $error = ''; -%if ($cgi->param('svcnum')) { -% $error="Can't modify a domain!"; -%} else { -% $error=$new->insert; -% $svcnum=$new->svcnum; -%} -% %if ($error) { % $cgi->param('error', $error); -% print $cgi->redirect(popurl(2). "svc_domain.cgi?". $cgi->query_string ); +<% $cgi->redirect(popurl(2). "svc_domain.cgi?". $cgi->query_string ) %> %} else { -% print $cgi->redirect(popurl(3). "view/svc_domain.cgi?$svcnum"); +<% $cgi->redirect(popurl(3). "view/svc_domain.cgi?$svcnum") %> %} -% -% +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? + +#remove this to actually test the domains! +$FS::svc_domain::whois_hack = 1; + +$cgi->param('svcnum') =~ /^(\d*)$/ or die "Illegal svcnum!"; +my $svcnum = $1; + +my $new = new FS::svc_domain ( { + map { + $_, scalar($cgi->param($_)); + #} qw(svcnum pkgnum svcpart domain action purpose) + } ( fields('svc_domain'), qw( pkgnum svcpart action purpose ) ) +} ); + +my $error = ''; +if ($cgi->param('svcnum')) { + $error="Can't modify a domain!"; +} else { + $error=$new->insert; + $svcnum=$new->svcnum; +} + diff --git a/httemplate/edit/process/svc_external.cgi b/httemplate/edit/process/svc_external.cgi index 97da6ba87..673e5a5a0 100755 --- a/httemplate/edit/process/svc_external.cgi +++ b/httemplate/edit/process/svc_external.cgi @@ -1,30 +1,31 @@ -% -% -%$cgi->param('svcnum') =~ /^(\d*)$/ or die "Illegal svcnum!"; -%my $svcnum =$1; -% -%my $old = qsearchs('svc_external',{'svcnum'=>$svcnum}) if $svcnum; -% -%my $new = new FS::svc_external ( { -% map { -% ($_, scalar($cgi->param($_))); -% } ( fields('svc_external'), qw( pkgnum svcpart ) ) -%} ); -% -%my $error = ''; -%if ( $svcnum ) { -% $error = $new->replace($old); -%} else { -% $error = $new->insert; -% $svcnum = $new->getfield('svcnum'); -%} -% %if ($error) { % $cgi->param('error', $error); -% print $cgi->redirect(popurl(2). "svc_external.cgi?". $cgi->query_string ); +<% $cgi->redirect(popurl(2). "svc_external.cgi?". $cgi->query_string ) %> %} else { -% print $cgi->redirect(popurl(3). "view/svc_external.cgi?$svcnum"); +<% $cgi->redirect(popurl(3). "view/svc_external.cgi?$svcnum") %> %} -% -% +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? + +$cgi->param('svcnum') =~ /^(\d*)$/ or die "Illegal svcnum!"; +my $svcnum =$1; + +my $old = qsearchs('svc_external',{'svcnum'=>$svcnum}) if $svcnum; + +my $new = new FS::svc_external ( { + map { + ($_, scalar($cgi->param($_))); + } ( fields('svc_external'), qw( pkgnum svcpart ) ) +} ); + +my $error = ''; +if ( $svcnum ) { + $error = $new->replace($old); +} else { + $error = $new->insert; + $svcnum = $new->getfield('svcnum'); +} + diff --git a/httemplate/edit/process/svc_forward.cgi b/httemplate/edit/process/svc_forward.cgi index 3205312f1..fffad84d6 100755 --- a/httemplate/edit/process/svc_forward.cgi +++ b/httemplate/edit/process/svc_forward.cgi @@ -1,30 +1,31 @@ -% -% -%$cgi->param('svcnum') =~ /^(\d*)$/ or die "Illegal svcnum!"; -%my $svcnum =$1; -% -%my $old = qsearchs('svc_forward',{'svcnum'=>$svcnum}) if $svcnum; -% -%my $new = new FS::svc_forward ( { -% map { -% ($_, scalar($cgi->param($_))); -% } ( fields('svc_forward'), qw( pkgnum svcpart ) ) -%} ); -% -%my $error = ''; -%if ( $svcnum ) { -% $error = $new->replace($old); -%} else { -% $error = $new->insert; -% $svcnum = $new->getfield('svcnum'); -%} -% %if ($error) { % $cgi->param('error', $error); -% print $cgi->redirect(popurl(2). "svc_forward.cgi?". $cgi->query_string ); +<% $cgi->redirect(popurl(2). "svc_forward.cgi?". $cgi->query_string ) %> %} else { -% print $cgi->redirect(popurl(3). "view/svc_forward.cgi?$svcnum"); +<% $cgi->redirect(popurl(3). "view/svc_forward.cgi?$svcnum") %> %} -% -% +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? + +$cgi->param('svcnum') =~ /^(\d*)$/ or die "Illegal svcnum!"; +my $svcnum =$1; + +my $old = qsearchs('svc_forward',{'svcnum'=>$svcnum}) if $svcnum; + +my $new = new FS::svc_forward ( { + map { + ($_, scalar($cgi->param($_))); + } ( fields('svc_forward'), qw( pkgnum svcpart ) ) +} ); + +my $error = ''; +if ( $svcnum ) { + $error = $new->replace($old); +} else { + $error = $new->insert; + $svcnum = $new->getfield('svcnum'); +} + diff --git a/httemplate/edit/process/svc_phone.html b/httemplate/edit/process/svc_phone.html index 44235de63..27a703cdf 100644 --- a/httemplate/edit/process/svc_phone.html +++ b/httemplate/edit/process/svc_phone.html @@ -2,3 +2,9 @@ 'table' => 'svc_phone', ) %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? + + diff --git a/httemplate/edit/process/svc_www.cgi b/httemplate/edit/process/svc_www.cgi index e9a52aff2..f02d25305 100644 --- a/httemplate/edit/process/svc_www.cgi +++ b/httemplate/edit/process/svc_www.cgi @@ -1,37 +1,38 @@ -% -% -%$cgi->param('svcnum') =~ /^(\d*)$/ or die "Illegal svcnum!"; -%my $svcnum = $1; -% -%my $old; -%if ( $svcnum ) { -% $old = qsearchs('svc_www', { 'svcnum' => $svcnum } ) -% or die "fatal: can't find website (svcnum $svcnum)!"; -%} else { -% $old = ''; -%} -% -%my $new = new FS::svc_www ( { -% map { -% ($_, scalar($cgi->param($_))); -% #} qw(svcnum pkgnum svcpart recnum usersvc) -% } ( fields('svc_www'), qw( pkgnum svcpart ) ) -%} ); -% -%my $error; -%if ( $svcnum ) { -% $error = $new->replace($old); -%} else { -% $error = $new->insert; -% $svcnum = $new->svcnum; -%} -% %if ( $error ) { % $cgi->param('error', $error); -% print $cgi->redirect(popurl(2). "svc_www.cgi?". $cgi->query_string ); +<% $cgi->redirect(popurl(2). "svc_www.cgi?". $cgi->query_string ) %> %} else { -% print $cgi->redirect(popurl(3). "view/svc_www.cgi?" . $svcnum ); +<% $cgi->redirect(popurl(3). "view/svc_www.cgi?" . $svcnum ) %> %} -% -% +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? + +$cgi->param('svcnum') =~ /^(\d*)$/ or die "Illegal svcnum!"; +my $svcnum = $1; + +my $old; +if ( $svcnum ) { + $old = qsearchs('svc_www', { 'svcnum' => $svcnum } ) + or die "fatal: can't find website (svcnum $svcnum)!"; +} else { + $old = ''; +} + +my $new = new FS::svc_www ( { + map { + ($_, scalar($cgi->param($_))); + #} qw(svcnum pkgnum svcpart recnum usersvc) + } ( fields('svc_www'), qw( pkgnum svcpart ) ) +} ); + +my $error; +if ( $svcnum ) { + $error = $new->replace($old); +} else { + $error = $new->insert; + $svcnum = $new->svcnum; +} + diff --git a/httemplate/edit/quick-charge.html b/httemplate/edit/quick-charge.html index 92e0ae753..e8df37103 100644 --- a/httemplate/edit/quick-charge.html +++ b/httemplate/edit/quick-charge.html @@ -163,6 +163,9 @@ function validate_quick_charge () { <%init> +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('One-time charge'); + $cgi->param('custnum') =~ /^(\d+)$/ or die 'illegal custnum'; my $custnum = $1; diff --git a/httemplate/edit/rate.cgi b/httemplate/edit/rate.cgi index 269b3b09a..4c0abfe01 100644 --- a/httemplate/edit/rate.cgi +++ b/httemplate/edit/rate.cgi @@ -1,5 +1,4 @@ <% include("/elements/header.html","$action Rate plan", menubar( - 'Main Menu' => $p, 'View all rate plans' => "${p}browse/rate.cgi", )) %> diff --git a/httemplate/edit/rate_region.cgi b/httemplate/edit/rate_region.cgi index 47d1888e0..9dfcb3740 100644 --- a/httemplate/edit/rate_region.cgi +++ b/httemplate/edit/rate_region.cgi @@ -81,7 +81,7 @@ - min_included %>"> + min_included |h %>"> diff --git a/httemplate/edit/reason.html b/httemplate/edit/reason.html index 512013ace..620a2ea15 100644 --- a/httemplate/edit/reason.html +++ b/httemplate/edit/reason.html @@ -42,3 +42,9 @@ 'viewall_url' => $p . "browse/reason.html?class=$class", ) %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + + diff --git a/httemplate/edit/reason_type.html b/httemplate/edit/reason_type.html index 056544e5d..ea5650ec3 100644 --- a/httemplate/edit/reason_type.html +++ b/httemplate/edit/reason_type.html @@ -1,9 +1,3 @@ -% -%$cgi->param('class') =~ /^(\w)$/; -%my $class = $1; -% -%my $classname = $FS::reason_type::class_name{$class}; -% <% include( 'elements/edit.html', 'name' => $classname . ' Reason Type', 'table' => 'reason_type', @@ -22,3 +16,14 @@ 'new_hashref_callback' => sub {{ 'class' => $class }}, ) %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +$cgi->param('class') =~ /^(\w)$/; +my $class = $1; + +my $classname = $FS::reason_type::class_name{$class}; + + diff --git a/httemplate/edit/reg_code.cgi b/httemplate/edit/reg_code.cgi index 4ad39051a..e57ac09bf 100644 --- a/httemplate/edit/reg_code.cgi +++ b/httemplate/edit/reg_code.cgi @@ -1,16 +1,4 @@ -% -%my $agentnum = $cgi->param('agentnum'); -%$agentnum =~ /^(\d+)$/ or errorpage("illegal agentnum $agentnum"); -%$agentnum = $1; -%my $agent = qsearchs('agent', { 'agentnum' => $agentnum } ); -% -% - - -<% include("/elements/header.html",'Generate registration codes for '. $agent->agent, menubar( - 'Main Menu' => $p, - )) -%> +<% include('/elements/header.html', 'Generate registration codes for '. $agent->agent) %> <% include('/elements/error.html') %> @@ -39,5 +27,18 @@ registration codes for <% $agent->agent %> allowing the following package
- + + +<% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my $agentnum = $cgi->param('agentnum'); +$agentnum =~ /^(\d+)$/ or errorpage("illegal agentnum $agentnum"); +$agentnum = $1; +my $agent = qsearchs('agent', { 'agentnum' => $agentnum } ); + diff --git a/httemplate/edit/router.cgi b/httemplate/edit/router.cgi index 8b01035d5..c08e54449 100755 --- a/httemplate/edit/router.cgi +++ b/httemplate/edit/router.cgi @@ -1,27 +1,7 @@ - -% -% -%my $router; -%if ( $cgi->keywords ) { -% my($query) = $cgi->keywords; -% $query =~ /^(\d+)$/; -% $router = qsearchs('router', { routernum => $1 }) -% or print $cgi->redirect(popurl(2)."browse/router.cgi") ; -%} else { -% $router = new FS::router ( { -% map { $_, scalar($cgi->param($_)) } fields('router') -% } ); -%} -% -%my $routernum = $router->routernum; -%my $action = $routernum ? 'Edit' : 'Add'; -% -%print header("$action Router", menubar( -% 'Main Menu' => "$p", -% 'View all routers' => "${p}browse/router.cgi", -%)); -% -%my $p3 = popurl(3); +<% include('/elements/header.html', "$action Router", menubar( + 'View all routers' => "${p}browse/router.cgi", + )) +%> <% include('/elements/error.html') %> @@ -70,5 +50,29 @@ Custom fields:

- +<% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my $router; +if ( $cgi->keywords ) { + my($query) = $cgi->keywords; + $query =~ /^(\d+)$/; + $router = qsearchs('router', { routernum => $1 }) + or print $cgi->redirect(popurl(2)."browse/router.cgi") ; +} else { + $router = new FS::router ( { + map { $_, scalar($cgi->param($_)) } fields('router') + } ); +} + +my $routernum = $router->routernum; +my $action = $routernum ? 'Edit' : 'Add'; + +my $p3 = popurl(3); + + diff --git a/httemplate/edit/svc_Common.html b/httemplate/edit/svc_Common.html index 6393f9ebc..6666d9720 100644 --- a/httemplate/edit/svc_Common.html +++ b/httemplate/edit/svc_Common.html @@ -1,5 +1,14 @@ +<% include('elements/svc_Common.html', + 'table' => $table, + 'post_url' => popurl(1). "process/svc_Common.html", + %opt, + ) +%> <%init> +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? + # false laziness w/view/svc_Common.html $cgi->param('svcdb') =~ /^(svc_\w+)$/ or die "unparsable svcdb"; @@ -22,9 +31,3 @@ if ( UNIVERSAL::can("FS::$table", 'table_info') ) { } -<% include('elements/svc_Common.html', - 'table' => $table, - 'post_url' => popurl(1). "process/svc_Common.html", - %opt, - ) -%> diff --git a/httemplate/edit/svc_acct.cgi b/httemplate/edit/svc_acct.cgi index 5bf3f0dd1..58283ef54 100755 --- a/httemplate/edit/svc_acct.cgi +++ b/httemplate/edit/svc_acct.cgi @@ -1,132 +1,4 @@ -% -% -%my $conf = new FS::Conf; -%my @shells = $conf->config('shells'); -% -%my $curuser = $FS::CurrentUser::CurrentUser; -% -%my($svcnum, $pkgnum, $svcpart, $part_svc, $svc_acct, @groups); -%if ( $cgi->param('error') ) { -% -% $svc_acct = new FS::svc_acct ( { -% map { $_, scalar($cgi->param($_)) } fields('svc_acct') -% } ); -% $svcnum = $svc_acct->svcnum; -% $pkgnum = $cgi->param('pkgnum'); -% $svcpart = $cgi->param('svcpart'); -% $part_svc = qsearchs( 'part_svc', { 'svcpart' => $svcpart } ); -% die "No part_svc entry for svcpart $svcpart!" unless $part_svc; -% @groups = $cgi->param('radius_usergroup'); -% -%} elsif ( $cgi->param('pkgnum') && $cgi->param('svcpart') ) { #adding -% -% $cgi->param('pkgnum') =~ /^(\d+)$/ or die 'unparsable pkgnum'; -% $pkgnum = $1; -% $cgi->param('svcpart') =~ /^(\d+)$/ or die 'unparsable svcpart'; -% $svcpart = $1; -% -% $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); -% die "No part_svc entry!" unless $part_svc; -% -% $svc_acct = new FS::svc_acct({svcpart => $svcpart}); -% -% $svcnum=''; -% -%} else { #editing -% -% my($query) = $cgi->keywords; -% $query =~ /^(\d+)$/ or die "unparsable svcnum"; -% $svcnum=$1; -% $svc_acct=qsearchs('svc_acct',{'svcnum'=>$svcnum}) -% or die "Unknown (svc_acct) svcnum!"; -% -% my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum}) -% or die "Unknown (cust_svc) svcnum!"; -% -% $pkgnum=$cust_svc->pkgnum; -% $svcpart=$cust_svc->svcpart; -% -% $part_svc = qsearchs( 'part_svc', { 'svcpart' => $svcpart } ); -% die "No part_svc entry for svcpart $svcpart!" unless $part_svc; -% -% @groups = $svc_acct->radius_groups; -% -%} -% -%my( $cust_pkg, $cust_main ) = ( '', '' ); -%if ( $pkgnum ) { -% $cust_pkg = qsearchs('cust_pkg', { 'pkgnum' => $pkgnum } ); -% $cust_main = $cust_pkg->cust_main; -%} -% -%unless ( $svcnum || $cgi->param('error') ) { #adding -% -% #set gecos -% if ($cust_main) { -% unless ( $part_svc->part_svc_column('uid')->columnflag eq 'F' ) { -% $svc_acct->setfield('finger', -% $cust_main->getfield('first') . " " . $cust_main->getfield('last') -% ); -% } -% } -% -% $svc_acct->set_default_and_fixed( { -% #false laziness w/svc-acct::_fieldhandlers -% 'usergroup' => sub { -% my( $self, $groups ) = @_; -% if ( ref($groups) eq 'ARRAY' ) { -% @groups = @$groups; -% $groups; -% } elsif ( length($groups) ) { -% @groups = split(/\s*,\s*/, $groups); -% [ @groups ]; -% } else { -% @groups = (); -% []; -% } -% } -% } ); -% -%} -% -%#fixed radius groups always override & display -%if ( $part_svc->part_svc_column('usergroup')->columnflag eq 'F' ) { -% @groups = split(',', $part_svc->part_svc_column('usergroup')->columnvalue); -%} -% -%my $action = $svcnum ? 'Edit' : 'Add'; -% -%my $svc = $part_svc->getfield('svc'); -% -%my $otaker = getotaker; -% -%my $username = $svc_acct->username; -%my $password; -%if ( $svc_acct->_password ) { -% if ( $conf->exists('showpasswords') || ! $svcnum ) { -% $password = $svc_acct->_password; -% } else { -% $password = "*HIDDEN*"; -% } -%} else { -% $password = ''; -%} -% -%my $ulen = -% $conf->exists('usernamemax') -% ? $conf->config('usernamemax') -% : dbdef->table('svc_acct')->column('username')->length; -%my $ulen2 = $ulen+2; -% -%my $pmax = $conf->config('passwordmax') || 8; -%my $pmax2 = $pmax+2; -% -%my $p1 = popurl(1); -% -% - - -<% include("/elements/header.html","$action $svc account") %> +<% include('/elements/header.html', "$action $svc account") %> <% include('/elements/error.html') %> @@ -445,4 +317,136 @@ Service # <% $svcnum ? "$svcnum" : " (NEW)" %>
- + + +<% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? + +my $conf = new FS::Conf; +my @shells = $conf->config('shells'); + +my $curuser = $FS::CurrentUser::CurrentUser; + +my($svcnum, $pkgnum, $svcpart, $part_svc, $svc_acct, @groups); +if ( $cgi->param('error') ) { + + $svc_acct = new FS::svc_acct ( { + map { $_, scalar($cgi->param($_)) } fields('svc_acct') + } ); + $svcnum = $svc_acct->svcnum; + $pkgnum = $cgi->param('pkgnum'); + $svcpart = $cgi->param('svcpart'); + $part_svc = qsearchs( 'part_svc', { 'svcpart' => $svcpart } ); + die "No part_svc entry for svcpart $svcpart!" unless $part_svc; + @groups = $cgi->param('radius_usergroup'); + +} elsif ( $cgi->param('pkgnum') && $cgi->param('svcpart') ) { #adding + + $cgi->param('pkgnum') =~ /^(\d+)$/ or die 'unparsable pkgnum'; + $pkgnum = $1; + $cgi->param('svcpart') =~ /^(\d+)$/ or die 'unparsable svcpart'; + $svcpart = $1; + + $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); + die "No part_svc entry!" unless $part_svc; + + $svc_acct = new FS::svc_acct({svcpart => $svcpart}); + + $svcnum=''; + +} else { #editing + + my($query) = $cgi->keywords; + $query =~ /^(\d+)$/ or die "unparsable svcnum"; + $svcnum=$1; + $svc_acct=qsearchs('svc_acct',{'svcnum'=>$svcnum}) + or die "Unknown (svc_acct) svcnum!"; + + my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum}) + or die "Unknown (cust_svc) svcnum!"; + + $pkgnum=$cust_svc->pkgnum; + $svcpart=$cust_svc->svcpart; + + $part_svc = qsearchs( 'part_svc', { 'svcpart' => $svcpart } ); + die "No part_svc entry for svcpart $svcpart!" unless $part_svc; + + @groups = $svc_acct->radius_groups; + +} + +my( $cust_pkg, $cust_main ) = ( '', '' ); +if ( $pkgnum ) { + $cust_pkg = qsearchs('cust_pkg', { 'pkgnum' => $pkgnum } ); + $cust_main = $cust_pkg->cust_main; +} + +unless ( $svcnum || $cgi->param('error') ) { #adding + + #set gecos + if ($cust_main) { + unless ( $part_svc->part_svc_column('uid')->columnflag eq 'F' ) { + $svc_acct->setfield('finger', + $cust_main->getfield('first') . " " . $cust_main->getfield('last') + ); + } + } + + $svc_acct->set_default_and_fixed( { + #false laziness w/svc-acct::_fieldhandlers + 'usergroup' => sub { + my( $self, $groups ) = @_; + if ( ref($groups) eq 'ARRAY' ) { + @groups = @$groups; + $groups; + } elsif ( length($groups) ) { + @groups = split(/\s*,\s*/, $groups); + [ @groups ]; + } else { + @groups = (); + []; + } + } + } ); + +} + +#fixed radius groups always override & display +if ( $part_svc->part_svc_column('usergroup')->columnflag eq 'F' ) { + @groups = split(',', $part_svc->part_svc_column('usergroup')->columnvalue); +} + +my $action = $svcnum ? 'Edit' : 'Add'; + +my $svc = $part_svc->getfield('svc'); + +my $otaker = getotaker; + +my $username = $svc_acct->username; +my $password; +if ( $svc_acct->_password ) { + if ( $conf->exists('showpasswords') || ! $svcnum ) { + $password = $svc_acct->_password; + } else { + $password = "*HIDDEN*"; + } +} else { + $password = ''; +} + +my $ulen = + $conf->exists('usernamemax') + ? $conf->config('usernamemax') + : dbdef->table('svc_acct')->column('username')->length; +my $ulen2 = $ulen+2; + +my $pmax = $conf->config('passwordmax') || 8; +my $pmax2 = $pmax+2; + +my $p1 = popurl(1); + + diff --git a/httemplate/edit/svc_acct_pop.cgi b/httemplate/edit/svc_acct_pop.cgi index 641aa0378..3c16a1f95 100755 --- a/httemplate/edit/svc_acct_pop.cgi +++ b/httemplate/edit/svc_acct_pop.cgi @@ -1,57 +1,50 @@ - -% -% -%my $svc_acct_pop; -%if ( $cgi->param('error') ) { -% $svc_acct_pop = new FS::svc_acct_pop ( { -% map { $_, scalar($cgi->param($_)) } fields('svc_acct_pop') -% } ); -%} elsif ( $cgi->keywords ) { #editing -% my($query)=$cgi->keywords; -% $query =~ /^(\d+)$/; -% $svc_acct_pop=qsearchs('svc_acct_pop',{'popnum'=>$1}); -%} else { #adding -% $svc_acct_pop = new FS::svc_acct_pop {}; -%} -%my $action = $svc_acct_pop->popnum ? 'Edit' : 'Add'; -%my $hashref = $svc_acct_pop->hashref; -% -%my $p1 = popurl(1); -%print header("$action Access Number", menubar( -% 'Main Menu' => popurl(2), -% 'View all Access Numbers' => popurl(2). "browse/svc_acct_pop.cgi", -%)); -% -%print qq!Error: !, $cgi->param('error'), -% "" -% if $cgi->param('error'); -% -%print qq!
!; -% -%#display -% -%print qq!!, -% "POP #", $hashref->{popnum} ? $hashref->{popnum} : "(NEW)"; -% -%print < -%City -%State -%Area Code -%Exchange -%Local -% -%END -% -%print qq!
!; -% -%print < -% -% -%END -% -% +<% include('/elements/header.html', "$action Access Number", menubar( + 'View all Access Numbers' => popurl(2). "browse/svc_acct_pop.cgi", + )) +%> +<% include('/elements/error.html') %> + + + + +Access Number #<% $hashref->{popnum} ? $hashref->{popnum} : "(NEW)" %> + +
+City      
+State     
+Area Code 
+Exchange  
+Local     
+
+ +
+"> + + + +<% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my $svc_acct_pop; +if ( $cgi->param('error') ) { + $svc_acct_pop = new FS::svc_acct_pop ( { + map { $_, scalar($cgi->param($_)) } fields('svc_acct_pop') + } ); +} elsif ( $cgi->keywords ) { #editing + my($query)=$cgi->keywords; + $query =~ /^(\d+)$/; + $svc_acct_pop=qsearchs('svc_acct_pop',{'popnum'=>$1}); +} else { #adding + $svc_acct_pop = new FS::svc_acct_pop {}; +} +my $action = $svc_acct_pop->popnum ? 'Edit' : 'Add'; +my $hashref = $svc_acct_pop->hashref; + +my $p1 = popurl(1); + + diff --git a/httemplate/edit/svc_broadband.cgi b/httemplate/edit/svc_broadband.cgi index a1580ce01..c2fb58dda 100644 --- a/httemplate/edit/svc_broadband.cgi +++ b/httemplate/edit/svc_broadband.cgi @@ -1,91 +1,4 @@ -%# If it's stupid but it works, it's still stupid. -%# -Kristian -% -%use HTML::Widgets::SelectLayers; -%use Tie::IxHash; -% -%my( $svcnum, $pkgnum, $svcpart, $part_svc, $svc_broadband ); -%if ( $cgi->param('error') ) { -% -% $svc_broadband = new FS::svc_broadband ( { -% map { $_, scalar($cgi->param($_)) } fields('svc_broadband'), qw(svcpart) -% } ); -% $svcnum = $svc_broadband->svcnum; -% $pkgnum = $cgi->param('pkgnum'); -% $svcpart = $svc_broadband->svcpart; -% $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); -% die "No part_svc entry!" unless $part_svc; -% -%} elsif ( $cgi->param('pkgnum') && $cgi->param('svcpart') ) { #adding -% -% $cgi->param('pkgnum') =~ /^(\d+)$/ or die 'unparsable pkgnum'; -% $pkgnum = $1; -% $cgi->param('svcpart') =~ /^(\d+)$/ or die 'unparsable svcpart'; -% $svcpart = $1; -% -% $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); -% die "No part_svc entry!" unless $part_svc; -% -% $svc_broadband = new FS::svc_broadband({ svcpart => $svcpart }); -% -% $svcnum=''; -% -% $svc_broadband->set_default_and_fixed; -% -%} else { #editing -% -% my($query) = $cgi->keywords; -% $query =~ /^(\d+)$/ or die "unparsable svcnum"; -% $svcnum=$1; -% $svc_broadband=qsearchs('svc_broadband',{'svcnum'=>$svcnum}) -% or die "Unknown (svc_broadband) svcnum!"; -% -% my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum}) -% or die "Unknown (cust_svc) svcnum!"; -% -% $pkgnum=$cust_svc->pkgnum; -% $svcpart=$cust_svc->svcpart; -% -% $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); -% die "No part_svc entry!" unless $part_svc; -% -%} -%my $action = $svc_broadband->svcnum ? 'Edit' : 'Add'; -% -%if ($pkgnum) { -% -% #Nothing? -% -%} elsif ( $action eq 'Edit' ) { -% -% #Nothing? -% -%} else { -% die "\$action eq Add, but \$pkgnum is null!\n"; -%} -% -%my $p1 = popurl(1); -% -%my ($ip_addr, $speed_up, $speed_down, $blocknum, $mac_addr, -% $latitude, $longitude, $altitude, $vlan_profile, $auth_key, -% $description) = -% ($svc_broadband->ip_addr, -% $svc_broadband->speed_up, -% $svc_broadband->speed_down, -% $svc_broadband->blocknum, -% $svc_broadband->mac_addr, -% $svc_broadband->latitude, -% $svc_broadband->longitude, -% $svc_broadband->altitude, -% $svc_broadband->vlan_profile, -% $svc_broadband->auth_key, -% $svc_broadband->description, -% ); -% -% - - -<% include("/elements/header.html","Broadband Service $action", '') %> +<% include('/elements/header.html', "Broadband Service $action") %> <% include('/elements/error.html') %> @@ -246,6 +159,96 @@ Service #<%$svcnum ? $svcnum : "(NEW)"%>


- - +<% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? + +# If it's stupid but it works, it's still stupid. +# -Kristian + +use HTML::Widgets::SelectLayers; +use Tie::IxHash; + +my( $svcnum, $pkgnum, $svcpart, $part_svc, $svc_broadband ); +if ( $cgi->param('error') ) { + + $svc_broadband = new FS::svc_broadband ( { + map { $_, scalar($cgi->param($_)) } fields('svc_broadband'), qw(svcpart) + } ); + $svcnum = $svc_broadband->svcnum; + $pkgnum = $cgi->param('pkgnum'); + $svcpart = $svc_broadband->svcpart; + $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); + die "No part_svc entry!" unless $part_svc; + +} elsif ( $cgi->param('pkgnum') && $cgi->param('svcpart') ) { #adding + + $cgi->param('pkgnum') =~ /^(\d+)$/ or die 'unparsable pkgnum'; + $pkgnum = $1; + $cgi->param('svcpart') =~ /^(\d+)$/ or die 'unparsable svcpart'; + $svcpart = $1; + + $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); + die "No part_svc entry!" unless $part_svc; + + $svc_broadband = new FS::svc_broadband({ svcpart => $svcpart }); + + $svcnum=''; + + $svc_broadband->set_default_and_fixed; + +} else { #editing + + my($query) = $cgi->keywords; + $query =~ /^(\d+)$/ or die "unparsable svcnum"; + $svcnum=$1; + $svc_broadband=qsearchs('svc_broadband',{'svcnum'=>$svcnum}) + or die "Unknown (svc_broadband) svcnum!"; + + my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum}) + or die "Unknown (cust_svc) svcnum!"; + + $pkgnum=$cust_svc->pkgnum; + $svcpart=$cust_svc->svcpart; + + $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); + die "No part_svc entry!" unless $part_svc; + +} +my $action = $svc_broadband->svcnum ? 'Edit' : 'Add'; + +if ($pkgnum) { + + #Nothing? + +} elsif ( $action eq 'Edit' ) { + + #Nothing? + +} else { + die "\$action eq Add, but \$pkgnum is null!\n"; +} + +my $p1 = popurl(1); + +my ($ip_addr, $speed_up, $speed_down, $blocknum, $mac_addr, + $latitude, $longitude, $altitude, $vlan_profile, $auth_key, + $description) = + ($svc_broadband->ip_addr, + $svc_broadband->speed_up, + $svc_broadband->speed_down, + $svc_broadband->blocknum, + $svc_broadband->mac_addr, + $svc_broadband->latitude, + $svc_broadband->longitude, + $svc_broadband->altitude, + $svc_broadband->vlan_profile, + $svc_broadband->auth_key, + $svc_broadband->description, + ); + + diff --git a/httemplate/edit/svc_domain.cgi b/httemplate/edit/svc_domain.cgi index 60c67a005..56ba604bf 100755 --- a/httemplate/edit/svc_domain.cgi +++ b/httemplate/edit/svc_domain.cgi @@ -1,67 +1,3 @@ -%my($svcnum, $pkgnum, $svcpart, $kludge_action, $purpose, $part_svc, -% $svc_domain); -%if ( $cgi->param('error') ) { -% -% $svc_domain = new FS::svc_domain ( { -% map { $_, scalar($cgi->param($_)) } fields('svc_domain') -% } ); -% $svcnum = $svc_domain->svcnum; -% $pkgnum = $cgi->param('pkgnum'); -% $svcpart = $cgi->param('svcpart'); -% $kludge_action = $cgi->param('action'); -% $purpose = $cgi->param('purpose'); -% $part_svc = qsearchs('part_svc', { 'svcpart' => $svcpart } ); -% die "No part_svc entry!" unless $part_svc; -% -%} elsif ( $cgi->param('pkgnum') && $cgi->param('svcpart') ) { #adding -% -% $cgi->param('pkgnum') =~ /^(\d+)$/ or die 'unparsable pkgnum'; -% $pkgnum = $1; -% $cgi->param('svcpart') =~ /^(\d+)$/ or die 'unparsable svcpart'; -% $svcpart = $1; -% -% $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); -% die "No part_svc entry!" unless $part_svc; -% -% $svc_domain = new FS::svc_domain({}); -% -% $svcnum=''; -% -% $svc_domain->set_default_and_fixed; -% -%} else { #editing -% -% $kludge_action = ''; -% $purpose = ''; -% my($query) = $cgi->keywords; -% $query =~ /^(\d+)$/ or die "unparsable svcnum"; -% $svcnum=$1; -% $svc_domain=qsearchs('svc_domain',{'svcnum'=>$svcnum}) -% or die "Unknown (svc_domain) svcnum!"; -% -% my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum}) -% or die "Unknown (cust_svc) svcnum!"; -% -% $pkgnum=$cust_svc->pkgnum; -% $svcpart=$cust_svc->svcpart; -% -% $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); -% die "No part_svc entry!" unless $part_svc; -% -%} -%my $action = $svcnum ? 'Edit' : 'Add'; -% -%my $svc = $part_svc->getfield('svc'); -% -%my $otaker = getotaker; -% -%my $domain = $svc_domain->domain; -% -%my $p1 = popurl(1); -% -% - - <% include('/elements/header.html', "$action $svc", '') %> <% include('/elements/error.html') %> @@ -85,3 +21,71 @@ <% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? + +my($svcnum, $pkgnum, $svcpart, $kludge_action, $purpose, $part_svc, + $svc_domain); +if ( $cgi->param('error') ) { + + $svc_domain = new FS::svc_domain ( { + map { $_, scalar($cgi->param($_)) } fields('svc_domain') + } ); + $svcnum = $svc_domain->svcnum; + $pkgnum = $cgi->param('pkgnum'); + $svcpart = $cgi->param('svcpart'); + $kludge_action = $cgi->param('action'); + $purpose = $cgi->param('purpose'); + $part_svc = qsearchs('part_svc', { 'svcpart' => $svcpart } ); + die "No part_svc entry!" unless $part_svc; + +} elsif ( $cgi->param('pkgnum') && $cgi->param('svcpart') ) { #adding + + $cgi->param('pkgnum') =~ /^(\d+)$/ or die 'unparsable pkgnum'; + $pkgnum = $1; + $cgi->param('svcpart') =~ /^(\d+)$/ or die 'unparsable svcpart'; + $svcpart = $1; + + $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); + die "No part_svc entry!" unless $part_svc; + + $svc_domain = new FS::svc_domain({}); + + $svcnum=''; + + $svc_domain->set_default_and_fixed; + +} else { #editing + + $kludge_action = ''; + $purpose = ''; + my($query) = $cgi->keywords; + $query =~ /^(\d+)$/ or die "unparsable svcnum"; + $svcnum=$1; + $svc_domain=qsearchs('svc_domain',{'svcnum'=>$svcnum}) + or die "Unknown (svc_domain) svcnum!"; + + my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum}) + or die "Unknown (cust_svc) svcnum!"; + + $pkgnum=$cust_svc->pkgnum; + $svcpart=$cust_svc->svcpart; + + $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); + die "No part_svc entry!" unless $part_svc; + +} +my $action = $svcnum ? 'Edit' : 'Add'; + +my $svc = $part_svc->getfield('svc'); + +my $otaker = getotaker; + +my $domain = $svc_domain->domain; + +my $p1 = popurl(1); + + diff --git a/httemplate/edit/svc_external.cgi b/httemplate/edit/svc_external.cgi index 393e71c38..0df842b21 100644 --- a/httemplate/edit/svc_external.cgi +++ b/httemplate/edit/svc_external.cgi @@ -1,99 +1,102 @@ -%my( $svcnum, $pkgnum, $svcpart, $part_svc, $svc_external ); -%if ( $cgi->param('error') ) { -% -% $svc_external = new FS::svc_external ( { -% map { $_, scalar($cgi->param($_)) } fields('svc_external') -% } ); -% $svcnum = $svc_external->svcnum; -% $pkgnum = $cgi->param('pkgnum'); -% $svcpart = $cgi->param('svcpart'); -% $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); -% die "No part_svc entry!" unless $part_svc; -% -%} elsif ( $cgi->param('pkgnum') && $cgi->param('svcpart') ) { #adding -% -% $cgi->param('pkgnum') =~ /^(\d+)$/ or die 'unparsable pkgnum'; -% $pkgnum = $1; -% $cgi->param('svcpart') =~ /^(\d+)$/ or die 'unparsable svcpart'; -% $svcpart = $1; -% -% $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); -% die "No part_svc entry!" unless $part_svc; -% -% $svc_external = new FS::svc_external { svcpart => $svcpart }; -% -% $svcnum=''; -% -% $svc_external->set_default_and_fixed; -% -%} else { #adding -% -% my($query) = $cgi->keywords; -% $query =~ /^(\d+)$/ or die "unparsable svcnum"; -% $svcnum=$1; -% $svc_external=qsearchs('svc_external',{'svcnum'=>$svcnum}) -% or die "Unknown (svc_external) svcnum!"; -% -% my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum}) -% or die "Unknown (cust_svc) svcnum!"; -% -% $pkgnum=$cust_svc->pkgnum; -% $svcpart=$cust_svc->svcpart; -% -% $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); -% die "No part_svc entry!" unless $part_svc; -% -%} -%my $action = $svc_external->svcnum ? 'Edit' : 'Add'; -% -%my $p1 = popurl(1); -%print header("External service $action", ''); -% -%print qq!Error: !, $cgi->param('error'), -% "" -% if $cgi->param('error'); -% -%print qq!
!; -% -%#display -% -% -%#svcnum -%print qq!!; -%print qq!Service #!, $svcnum ? $svcnum : "(NEW)", "

"; -% -%#pkgnum -%print qq!!; -% -%#svcpart -%print qq!!; -% -%my($id,$title)=( -% $svc_external->id, -% $svc_external->title, -%); -% -%print &ntable("#cccccc",2), -% 'External ID'. -% qq!!. -% ''. -% 'Title'. -% qq!!. -% ''; -% -%foreach my $field ($svc_external->virtual_fields) { -% if ( $part_svc->part_svc_column($field)->columnflag ne 'F' ) { -% # If the flag is X, it won't even show up in $svc_acct->virtual_fields. -% print $svc_external->pvf($field)->widget('HTML', 'edit', -% $svc_external->getfield($field)); -% } -%} -% -% +<% include('/elements/header.html', "External service $action") %> + +<% include('/elements/error.html') %> + + + + +Service #<% $svcnum ? $svcnum : "(NEW)" %> +

+ + + + + +% my $id = $svc_external->id; +% my $title = $svc_external->title; +% +<% &ntable("#cccccc",2) %> + + External ID + + + + Title + + + +% foreach my $field ($svc_external->virtual_fields) { +% if ( $part_svc->part_svc_column($field)->columnflag ne 'F' ) { +% # If the flag is X, it won't even show up in $svc_acct->virtual_fields. + <% $svc_external->pvf($field)->widget( 'HTML', + 'edit', + $svc_external->getfield($field) + ) + %> +% } +% } + + +
+ + +
+ +<% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? + +my( $svcnum, $pkgnum, $svcpart, $part_svc, $svc_external ); +if ( $cgi->param('error') ) { + + $svc_external = new FS::svc_external ( { + map { $_, scalar($cgi->param($_)) } fields('svc_external') + } ); + $svcnum = $svc_external->svcnum; + $pkgnum = $cgi->param('pkgnum'); + $svcpart = $cgi->param('svcpart'); + $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); + die "No part_svc entry!" unless $part_svc; + +} elsif ( $cgi->param('pkgnum') && $cgi->param('svcpart') ) { #adding + + $cgi->param('pkgnum') =~ /^(\d+)$/ or die 'unparsable pkgnum'; + $pkgnum = $1; + $cgi->param('svcpart') =~ /^(\d+)$/ or die 'unparsable svcpart'; + $svcpart = $1; + + $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); + die "No part_svc entry!" unless $part_svc; + + $svc_external = new FS::svc_external { svcpart => $svcpart }; + + $svcnum=''; + + $svc_external->set_default_and_fixed; + +} else { #adding + + my($query) = $cgi->keywords; + $query =~ /^(\d+)$/ or die "unparsable svcnum"; + $svcnum=$1; + $svc_external=qsearchs('svc_external',{'svcnum'=>$svcnum}) + or die "Unknown (svc_external) svcnum!"; + + my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum}) + or die "Unknown (cust_svc) svcnum!"; + + $pkgnum=$cust_svc->pkgnum; + $svcpart=$cust_svc->svcpart; + + $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); + die "No part_svc entry!" unless $part_svc; +} +my $action = $svc_external->svcnum ? 'Edit' : 'Add'; -
- - - +my $p1 = popurl(1); + diff --git a/httemplate/edit/svc_forward.cgi b/httemplate/edit/svc_forward.cgi index c9159b3e1..96a00a5aa 100755 --- a/httemplate/edit/svc_forward.cgi +++ b/httemplate/edit/svc_forward.cgi @@ -1,111 +1,4 @@ - -% -% -%my $conf = new FS::Conf; -% -%my($svcnum, $pkgnum, $svcpart, $part_svc, $svc_forward); -%if ( $cgi->param('error') ) { -% $svc_forward = new FS::svc_forward ( { -% map { $_, scalar($cgi->param($_)) } fields('svc_forward') -% } ); -% $svcnum = $svc_forward->svcnum; -% $pkgnum = $cgi->param('pkgnum'); -% $svcpart = $cgi->param('svcpart'); -% $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); -% die "No part_svc entry!" unless $part_svc; -% -%} elsif ( $cgi->param('pkgnum') && $cgi->param('svcpart') ) { #adding -% -% $cgi->param('pkgnum') =~ /^(\d+)$/ or die 'unparsable pkgnum'; -% $pkgnum = $1; -% $cgi->param('svcpart') =~ /^(\d+)$/ or die 'unparsable svcpart'; -% $svcpart = $1; -% -% $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); -% die "No part_svc entry!" unless $part_svc; -% -% $svc_forward = new FS::svc_forward({}); -% -% $svcnum=''; -% -% $svc_forward->set_default_and_fixed; -% -%} else { #editing -% -% my($query) = $cgi->keywords; -% -% $query =~ /^(\d+)$/ or die "unparsable svcnum"; -% $svcnum=$1; -% $svc_forward=qsearchs('svc_forward',{'svcnum'=>$svcnum}) -% or die "Unknown (svc_forward) svcnum!"; -% -% my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum}) -% or die "Unknown (cust_svc) svcnum!"; -% -% $pkgnum=$cust_svc->pkgnum; -% $svcpart=$cust_svc->svcpart; -% -% $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); -% die "No part_svc entry!" unless $part_svc; -% -%} -%my $action = $svc_forward->svcnum ? 'Edit' : 'Add'; -% -%my %email; -% -%#starting with those currently attached -%foreach my $method (qw( srcsvc_acct dstsvc_acct )) { -% my $svc_acct = $svc_forward->$method(); -% $email{$svc_acct->svcnum} = $svc_acct->email if $svc_acct; -%} -% -%if ($pkgnum) { -% -% #find all possible user svcnums (and emails) -% -% #and including the rest for this customer -% my($u_part_svc,@u_acct_svcparts); -% foreach $u_part_svc ( qsearch('part_svc',{'svcdb'=>'svc_acct'}) ) { -% push @u_acct_svcparts,$u_part_svc->getfield('svcpart'); -% } -% -% my($cust_pkg)=qsearchs('cust_pkg',{'pkgnum'=>$pkgnum}); -% my($custnum)=$cust_pkg->getfield('custnum'); -% my($i_cust_pkg); -% foreach $i_cust_pkg ( qsearch('cust_pkg',{'custnum'=>$custnum}) ) { -% my($cust_pkgnum)=$i_cust_pkg->getfield('pkgnum'); -% my($acct_svcpart); -% foreach $acct_svcpart (@u_acct_svcparts) { #now find the corresponding -% #record(s) in cust_svc ( for this -% #pkgnum ! ) -% foreach my $i_cust_svc ( -% qsearch( 'cust_svc', { 'pkgnum' => $cust_pkgnum, -% 'svcpart' => $acct_svcpart } ) -% ) { -% my $svc_acct = -% qsearchs( 'svc_acct', { 'svcnum' => $i_cust_svc->svcnum } ); -% $email{$svc_acct->svcnum} = $svc_acct->email; -% } -% } -% } -% -%} elsif ( $action eq 'Add' ) { -% die "\$action eq Add, but \$pkgnum is null!\n"; -%} -% -%my($srcsvc,$dstsvc,$dst)=( -% $svc_forward->srcsvc, -% $svc_forward->dstsvc, -% $svc_forward->dst, -%); -%my $src = $svc_forward->dbdef_table->column('src') ? $svc_forward->src : ''; -% -%#display -% -% - - -<% include("/elements/header.html","Mail Forward $action") %> +<% include('/elements/header.html', "Mail Forward $action") %> <% include('/elements/error.html') %> @@ -172,5 +65,111 @@ function dstchanged(what) {
- - + +<% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? + +my $conf = new FS::Conf; + +my($svcnum, $pkgnum, $svcpart, $part_svc, $svc_forward); +if ( $cgi->param('error') ) { + $svc_forward = new FS::svc_forward ( { + map { $_, scalar($cgi->param($_)) } fields('svc_forward') + } ); + $svcnum = $svc_forward->svcnum; + $pkgnum = $cgi->param('pkgnum'); + $svcpart = $cgi->param('svcpart'); + $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); + die "No part_svc entry!" unless $part_svc; + +} elsif ( $cgi->param('pkgnum') && $cgi->param('svcpart') ) { #adding + + $cgi->param('pkgnum') =~ /^(\d+)$/ or die 'unparsable pkgnum'; + $pkgnum = $1; + $cgi->param('svcpart') =~ /^(\d+)$/ or die 'unparsable svcpart'; + $svcpart = $1; + + $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); + die "No part_svc entry!" unless $part_svc; + + $svc_forward = new FS::svc_forward({}); + + $svcnum=''; + + $svc_forward->set_default_and_fixed; + +} else { #editing + + my($query) = $cgi->keywords; + + $query =~ /^(\d+)$/ or die "unparsable svcnum"; + $svcnum=$1; + $svc_forward=qsearchs('svc_forward',{'svcnum'=>$svcnum}) + or die "Unknown (svc_forward) svcnum!"; + + my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum}) + or die "Unknown (cust_svc) svcnum!"; + + $pkgnum=$cust_svc->pkgnum; + $svcpart=$cust_svc->svcpart; + + $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); + die "No part_svc entry!" unless $part_svc; + +} +my $action = $svc_forward->svcnum ? 'Edit' : 'Add'; + +my %email; + +#starting with those currently attached +foreach my $method (qw( srcsvc_acct dstsvc_acct )) { + my $svc_acct = $svc_forward->$method(); + $email{$svc_acct->svcnum} = $svc_acct->email if $svc_acct; +} + +if ($pkgnum) { + + #find all possible user svcnums (and emails) + + #and including the rest for this customer + my($u_part_svc,@u_acct_svcparts); + foreach $u_part_svc ( qsearch('part_svc',{'svcdb'=>'svc_acct'}) ) { + push @u_acct_svcparts,$u_part_svc->getfield('svcpart'); + } + + my($cust_pkg)=qsearchs('cust_pkg',{'pkgnum'=>$pkgnum}); + my($custnum)=$cust_pkg->getfield('custnum'); + my($i_cust_pkg); + foreach $i_cust_pkg ( qsearch('cust_pkg',{'custnum'=>$custnum}) ) { + my($cust_pkgnum)=$i_cust_pkg->getfield('pkgnum'); + my($acct_svcpart); + foreach $acct_svcpart (@u_acct_svcparts) { #now find the corresponding + #record(s) in cust_svc ( for this + #pkgnum ! ) + foreach my $i_cust_svc ( + qsearch( 'cust_svc', { 'pkgnum' => $cust_pkgnum, + 'svcpart' => $acct_svcpart } ) + ) { + my $svc_acct = + qsearchs( 'svc_acct', { 'svcnum' => $i_cust_svc->svcnum } ); + $email{$svc_acct->svcnum} = $svc_acct->email; + } + } + } + +} elsif ( $action eq 'Add' ) { + die "\$action eq Add, but \$pkgnum is null!\n"; +} + +my($srcsvc,$dstsvc,$dst)=( + $svc_forward->srcsvc, + $svc_forward->dstsvc, + $svc_forward->dst, +); +my $src = $svc_forward->dbdef_table->column('src') ? $svc_forward->src : ''; + + diff --git a/httemplate/edit/svc_phone.cgi b/httemplate/edit/svc_phone.cgi index ca62b6416..78b849c8d 100644 --- a/httemplate/edit/svc_phone.cgi +++ b/httemplate/edit/svc_phone.cgi @@ -9,3 +9,9 @@ }, ) %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? + + diff --git a/httemplate/edit/svc_www.cgi b/httemplate/edit/svc_www.cgi index e19a4fa08..e64928694 100644 --- a/httemplate/edit/svc_www.cgi +++ b/httemplate/edit/svc_www.cgi @@ -1,227 +1,240 @@ -%my $conf = new FS::Conf; -% -%my( $svcnum, $pkgnum, $svcpart, $part_svc, $svc_www, $config ); -% -%if ( $cgi->param('error') ) { -% -% $svc_www = new FS::svc_www ( { -% map { $_, scalar($cgi->param($_)) } fields('svc_www') -% } ); -% $svcnum = $svc_www->svcnum; -% $pkgnum = $cgi->param('pkgnum'); -% $svcpart = $cgi->param('svcpart'); -% $config = $cgi->param('config'); -% $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); -% die "No part_svc entry!" unless $part_svc; -% -%} elsif ( $cgi->param('pkgnum') && $cgi->param('svcpart') ) { #adding -% -% $cgi->param('pkgnum') =~ /^(\d+)$/ or die 'unparsable pkgnum'; -% $pkgnum = $1; -% $cgi->param('svcpart') =~ /^(\d+)$/ or die 'unparsable svcpart'; -% $svcpart = $1; -% -% $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); -% die "No part_svc entry!" unless $part_svc; -% -% $svc_www = new FS::svc_www { svcpart => $svcpart }; -% -% $svcnum=''; -% -% $svc_www->set_default_and_fixed; -% -%} else { #editing -% -% my($query) = $cgi->keywords; -% $query =~ /^(\d+)$/ or die "unparsable svcnum"; -% $svcnum=$1; -% $svc_www=qsearchs('svc_www',{'svcnum'=>$svcnum}) -% or die "Unknown (svc_www) svcnum!"; -% -% my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum}) -% or die "Unknown (cust_svc) svcnum!"; -% -% $pkgnum=$cust_svc->pkgnum; -% $svcpart=$cust_svc->svcpart; -% $config=$cgi->escapeHTML($svc_www->config); -% -% $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); -% die "No part_svc entry!" unless $part_svc; -% -%} -%my $action = $svc_www->svcnum ? 'Edit' : 'Add'; -% -%my( %svc_acct, %arec ); -%if ($pkgnum) { -% -% my @u_acct_svcparts; -% foreach my $svcpart ( -% map { $_->svcpart } qsearch( 'part_svc', { 'svcdb' => 'svc_acct' } ) -% ) { -% next if $conf->exists('svc_www-usersvc_svcpart') -% && ! grep { $svcpart == $_ } -% $conf->config('svc_www-usersvc_svcpart'); -% push @u_acct_svcparts, $svcpart; -% } -% -% my($cust_pkg)=qsearchs('cust_pkg',{'pkgnum'=>$pkgnum}); -% my($custnum)=$cust_pkg->getfield('custnum'); -% my($i_cust_pkg); -% foreach $i_cust_pkg ( qsearch('cust_pkg',{'custnum'=>$custnum}) ) { -% my($cust_pkgnum)=$i_cust_pkg->getfield('pkgnum'); -% my($acct_svcpart); -% foreach $acct_svcpart (@u_acct_svcparts) { #now find the corresponding -% #record(s) in cust_svc ( for this -% #pkgnum ! ) -% my($i_cust_svc); -% foreach $i_cust_svc ( qsearch('cust_svc',{'pkgnum'=>$cust_pkgnum,'svcpart'=>$acct_svcpart}) ) { -% my($svc_acct)=qsearchs('svc_acct',{'svcnum'=>$i_cust_svc->getfield('svcnum')}); -% $svc_acct{$svc_acct->getfield('svcnum')}= -% $svc_acct->cust_svc->part_svc->svc. ': '. $svc_acct->email; -% } -% } -% } -% -% -% my($d_part_svc,@d_acct_svcparts); -% foreach $d_part_svc ( qsearch('part_svc',{'svcdb'=>'svc_domain'}) ) { -% push @d_acct_svcparts,$d_part_svc->getfield('svcpart'); -% } -% -% foreach $i_cust_pkg ( qsearch( 'cust_pkg', { 'custnum' => $custnum } ) ) { -% my $cust_pkgnum = $i_cust_pkg->pkgnum; -% -% foreach my $acct_svcpart (@d_acct_svcparts) { -% -% foreach my $i_cust_svc ( -% qsearch( 'cust_svc', { 'pkgnum' => $cust_pkgnum, -% 'svcpart' => $acct_svcpart } ) -% ) { -% my $svc_domain = -% qsearchs( 'svc_domain', { 'svcnum' => $i_cust_svc->svcnum } ); -% -% my $extra_sql = "AND ( rectype = 'A' OR rectype = 'CNAME' )"; -% unless ( $conf->exists('svc_www-enable_subdomains') ) { -% $extra_sql .= " AND ( reczone = '\@' OR reczone = '". -% $svc_domain->domain. ".' )"; -% } -% -% foreach my $domain_rec ( -% qsearch( 'domain_record', -% { -% 'svcnum' => $svc_domain->svcnum, -% }, -% '', -% $extra_sql, -% ) -% ) { -% $arec{$domain_rec->recnum} = $domain_rec->zone; -% } -% -% if ( $conf->exists('svc_www-enable_subdomains') ) { -% $arec{'www.'. $svc_domain->domain} = 'www.'. $svc_domain->domain -% unless qsearchs( 'domain_record', { -% svcnum => $svc_domain->svcnum, -% reczone => 'www', -% } ) -% || qsearchs( 'domain_record', { -% svcnum => $svc_domain->svcnum, -% reczone => 'www.'.$svc_domain->domain.'.', -% } ); -% } -% -% $arec{'@.'. $svc_domain->domain} = $svc_domain->domain -% unless qsearchs('domain_record', { -% svcnum => $svc_domain->svcnum, -% reczone => '@', -% } ) -% || qsearchs('domain_record', { -% svcnum => $svc_domain->svcnum, -% reczone => $svc_domain->domain.'.', -% } ); -% -% } -% -% } -% } -% -%} elsif ( $action eq 'Edit' ) { -% -% my($domain_rec) = qsearchs('domain_record', { 'recnum'=>$svc_www->recnum }); -% $arec{$svc_www->recnum} = join '.', $domain_rec->recdata, $domain_rec->reczone; -% -%} else { -% die "\$action eq Add, but \$pkgnum is null!\n"; -%} -% -% -%my $p1 = popurl(1); - -<% include("/elements/header.html", "Web Hosting $action", '') %> - -%print qq!Error: !, $cgi->param('error'), -% "" -% if $cgi->param('error'); -% -%print qq!
!; -% -%#display -% -% -% -%#svcnum -%print qq!!; -%print qq!Service #!, $svcnum ? $svcnum : "(NEW)", "

"; -% -%#pkgnum -%print qq!!; -% -%#svcpart -%print qq!!; -% -%my($recnum,$usersvc)=( -% $svc_www->recnum, -% $svc_www->usersvc, -%); -% -%print &ntable("#cccccc",2), -% 'Zone"; -% -%if ( $part_svc->part_svc_column('usersvc')->columnflag ne 'F' +<% include('/elements/header.html', "Web Hosting $action") %> + +<% include('/elements.error.html') %> + + + + +Service #<% $svcnum ? $svcnum : "(NEW)" %> +

+ + + + + +% my $recnum = $svc_www->recnum; +% my $usersvc = $svc_www->usersvc; + +<% &ntable("#cccccc",2) %> + + + Zone + + + + + +% if ( $part_svc->part_svc_column('usersvc')->columnflag ne 'F' % || $part_svc->part_svc_column('usersvc')->columnvalue !~ /^\s*$/) { -% print 'Username"; -%} -% -%if ( $part_svc->part_svc_column('config')->columnflag ne 'F' && -% $FS::CurrentUser::CurrentUser->access_right('Edit www config') ) { -% print 'Config lines'; -% print qq!! -%}else{ -% print qq!!; -%} -% -%foreach my $field ($svc_www->virtual_fields) { -% if ( $part_svc->part_svc_column($field)->columnflag ne 'F' ) { -% # If the flag is X, it won't even show up in $svc_acct->virtual_fields. -% print $svc_www->pvf($field)->widget('HTML', 'edit', -% $svc_www->getfield($field)); -% } + + Username + + + + +% } + +% if ( $part_svc->part_svc_column('config')->columnflag ne 'F' && +% $FS::CurrentUser::CurrentUser->access_right('Edit www config') ) { + + Config lines + + + + +% } else { + %} -% -%print '
'; -% + +% foreach my $field ($svc_www->virtual_fields) { +% if ( $part_svc->part_svc_column($field)->columnflag ne 'F' ) { +% # If the flag is X, it won't even show up in $svc_acct->virtual_fields. + <% $svc_www->pvf($field)->widget( 'HTML', 'edit', + $svc_www->getfield($field) + ) + %> +% } +% } + + +
+ +
<% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? + +my $conf = new FS::Conf; + +my( $svcnum, $pkgnum, $svcpart, $part_svc, $svc_www, $config ); + +if ( $cgi->param('error') ) { + + $svc_www = new FS::svc_www ( { + map { $_, scalar($cgi->param($_)) } fields('svc_www') + } ); + $svcnum = $svc_www->svcnum; + $pkgnum = $cgi->param('pkgnum'); + $svcpart = $cgi->param('svcpart'); + $config = $cgi->param('config'); + $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); + die "No part_svc entry!" unless $part_svc; + +} elsif ( $cgi->param('pkgnum') && $cgi->param('svcpart') ) { #adding + + $cgi->param('pkgnum') =~ /^(\d+)$/ or die 'unparsable pkgnum'; + $pkgnum = $1; + $cgi->param('svcpart') =~ /^(\d+)$/ or die 'unparsable svcpart'; + $svcpart = $1; + + $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); + die "No part_svc entry!" unless $part_svc; + + $svc_www = new FS::svc_www { svcpart => $svcpart }; + + $svcnum=''; + + $svc_www->set_default_and_fixed; + +} else { #editing + + my($query) = $cgi->keywords; + $query =~ /^(\d+)$/ or die "unparsable svcnum"; + $svcnum=$1; + $svc_www=qsearchs('svc_www',{'svcnum'=>$svcnum}) + or die "Unknown (svc_www) svcnum!"; + + my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum}) + or die "Unknown (cust_svc) svcnum!"; + + $pkgnum=$cust_svc->pkgnum; + $svcpart=$cust_svc->svcpart; + #$config=$cgi->escapeHTML($svc_www->config); + + $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); + die "No part_svc entry!" unless $part_svc; + +} +my $action = $svc_www->svcnum ? 'Edit' : 'Add'; + +my( %svc_acct, %arec ); +if ($pkgnum) { + + my @u_acct_svcparts; + foreach my $svcpart ( + map { $_->svcpart } qsearch( 'part_svc', { 'svcdb' => 'svc_acct' } ) + ) { + next if $conf->exists('svc_www-usersvc_svcpart') + && ! grep { $svcpart == $_ } + $conf->config('svc_www-usersvc_svcpart'); + push @u_acct_svcparts, $svcpart; + } + + my($cust_pkg)=qsearchs('cust_pkg',{'pkgnum'=>$pkgnum}); + my($custnum)=$cust_pkg->getfield('custnum'); + my($i_cust_pkg); + foreach $i_cust_pkg ( qsearch('cust_pkg',{'custnum'=>$custnum}) ) { + my($cust_pkgnum)=$i_cust_pkg->getfield('pkgnum'); + my($acct_svcpart); + foreach $acct_svcpart (@u_acct_svcparts) { #now find the corresponding + #record(s) in cust_svc ( for this + #pkgnum ! ) + my($i_cust_svc); + foreach $i_cust_svc ( qsearch('cust_svc',{'pkgnum'=>$cust_pkgnum,'svcpart'=>$acct_svcpart}) ) { + my($svc_acct)=qsearchs('svc_acct',{'svcnum'=>$i_cust_svc->getfield('svcnum')}); + $svc_acct{$svc_acct->getfield('svcnum')}= + $svc_acct->cust_svc->part_svc->svc. ': '. $svc_acct->email; + } + } + } + + + my($d_part_svc,@d_acct_svcparts); + foreach $d_part_svc ( qsearch('part_svc',{'svcdb'=>'svc_domain'}) ) { + push @d_acct_svcparts,$d_part_svc->getfield('svcpart'); + } + + foreach $i_cust_pkg ( qsearch( 'cust_pkg', { 'custnum' => $custnum } ) ) { + my $cust_pkgnum = $i_cust_pkg->pkgnum; + + foreach my $acct_svcpart (@d_acct_svcparts) { + + foreach my $i_cust_svc ( + qsearch( 'cust_svc', { 'pkgnum' => $cust_pkgnum, + 'svcpart' => $acct_svcpart } ) + ) { + my $svc_domain = + qsearchs( 'svc_domain', { 'svcnum' => $i_cust_svc->svcnum } ); + + my $extra_sql = "AND ( rectype = 'A' OR rectype = 'CNAME' )"; + unless ( $conf->exists('svc_www-enable_subdomains') ) { + $extra_sql .= " AND ( reczone = '\@' OR reczone = '". + $svc_domain->domain. ".' )"; + } + + foreach my $domain_rec ( + qsearch( 'domain_record', + { + 'svcnum' => $svc_domain->svcnum, + }, + '', + $extra_sql, + ) + ) { + $arec{$domain_rec->recnum} = $domain_rec->zone; + } + + if ( $conf->exists('svc_www-enable_subdomains') ) { + $arec{'www.'. $svc_domain->domain} = 'www.'. $svc_domain->domain + unless qsearchs( 'domain_record', { + svcnum => $svc_domain->svcnum, + reczone => 'www', + } ) + || qsearchs( 'domain_record', { + svcnum => $svc_domain->svcnum, + reczone => 'www.'.$svc_domain->domain.'.', + } ); + } + + $arec{'@.'. $svc_domain->domain} = $svc_domain->domain + unless qsearchs('domain_record', { + svcnum => $svc_domain->svcnum, + reczone => '@', + } ) + || qsearchs('domain_record', { + svcnum => $svc_domain->svcnum, + reczone => $svc_domain->domain.'.', + } ); + + } + + } + } + +} elsif ( $action eq 'Edit' ) { + + my($domain_rec) = qsearchs('domain_record', { 'recnum'=>$svc_www->recnum }); + $arec{$svc_www->recnum} = join '.', $domain_rec->recdata, $domain_rec->reczone; + +} else { + die "\$action eq Add, but \$pkgnum is null!\n"; +} + +my $p1 = popurl(1); + + -- 2.11.0