projects
/
freeside.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
e86b357
)
RT#40215: OFM - Separate permissions for edit dates and contract dates [v3 only]
author
Jonathan Prykop
<jonathan@freeside.biz>
Mon, 23 May 2016 21:55:57 +0000
(16:55 -0500)
committer
Jonathan Prykop
<jonathan@freeside.biz>
Tue, 24 May 2016 01:34:46 +0000
(20:34 -0500)
FS/FS/AccessRight.pm
patch
|
blob
|
history
httemplate/edit/REAL_cust_pkg.cgi
patch
|
blob
|
history
httemplate/edit/process/REAL_cust_pkg.cgi
patch
|
blob
|
history
httemplate/misc/confirm-cust_pkg-edit_dates.html
patch
|
blob
|
history
httemplate/view/cust_main/packages/package.html
patch
|
blob
|
history
diff --git
a/FS/FS/AccessRight.pm
b/FS/FS/AccessRight.pm
index
8879500
..
a162cf0
100644
(file)
--- a/
FS/FS/AccessRight.pm
+++ b/
FS/FS/AccessRight.pm
@@
-154,6
+154,7
@@
tie my %rights, 'Tie::IxHash',
'View appointments', #NEWNEW
'Make appointment',
'View package definition costs', #NEWNEW
'View appointments', #NEWNEW
'Make appointment',
'View package definition costs', #NEWNEW
+ 'Change package contract end date',
],
###
],
###
diff --git
a/httemplate/edit/REAL_cust_pkg.cgi
b/httemplate/edit/REAL_cust_pkg.cgi
index
ac8aa40
..
606cf87
100755
(executable)
--- a/
httemplate/edit/REAL_cust_pkg.cgi
+++ b/
httemplate/edit/REAL_cust_pkg.cgi
@@
-35,6
+35,11
@@
function confirm_changes() {
<FORM NAME="formname" ACTION="process/REAL_cust_pkg.cgi" METHOD="POST">
<INPUT TYPE="hidden" NAME="pkgnum" VALUE="<% $pkgnum %>">
<FORM NAME="formname" ACTION="process/REAL_cust_pkg.cgi" METHOD="POST">
<INPUT TYPE="hidden" NAME="pkgnum" VALUE="<% $pkgnum %>">
+% if ($contract_only) {
+ <INPUT TYPE="hidden" ID="contract_only_text" NAME="contract_only" VALUE="1">
+ <SCRIPT>submit_fields.push('contract_only');</SCRIPT>
+% }
+
% # raw error from below
% if ( $error ) {
<FONT SIZE="+1" COLOR="#ff0000">Error: <% $error %></FONT>
% # raw error from below
% if ( $error ) {
<FONT SIZE="+1" COLOR="#ff0000">Error: <% $error %></FONT>
@@
-124,8
+129,10
@@
function confirm_changes() {
% my $value = $cust_pkg->get($column);
% $value = $value ? time2str($format, $value) : "";
%
% my $value = $cust_pkg->get($column);
% $value = $value ? time2str($format, $value) : "";
%
+% if ($contract_only and $column ne 'contract_end') {
+ <& .row_display, %ARGS &>
% # if_primary for the dates that can't be edited on supplemental packages
% # if_primary for the dates that can't be edited on supplemental packages
-% if ($if_primary and $cust_pkg->main_pkgnum) {
+%
} els
if ($if_primary and $cust_pkg->main_pkgnum) {
<INPUT TYPE="hidden" ID="<%$column%>_text" VALUE="<% $cust_pkg->get($column) %>">
<SCRIPT>submit_fields.push('<%$column%>');</SCRIPT>
<& .row_display, %ARGS &>
<INPUT TYPE="hidden" ID="<%$column%>_text" VALUE="<% $cust_pkg->get($column) %>">
<SCRIPT>submit_fields.push('<%$column%>');</SCRIPT>
<& .row_display, %ARGS &>
@@
-198,12
+205,15
@@
my $date_format = $conf->config('date_format') || '%m/%d/%Y';
my $format = $date_format. ' %T'; # %z (%Z)';
my $format = $date_format. ' %T'; # %z (%Z)';
+my $contract_only = $FS::CurrentUser::CurrentUser->access_right('Edit customer package dates') ? 0 : 1;
+
</%shared>
<%init>
</%shared>
<%init>
+# see $contract_only in shared block above
die "access denied"
die "access denied"
- unless $FS::CurrentUser::CurrentUser->access_right('Edit customer package dates')
;
-
+ unless $FS::CurrentUser::CurrentUser->access_right('Edit customer package dates')
+ or $FS::CurrentUser::CurrentUser->access_right('Change package contract end date');
my $error = '';
my( $pkgnum, $cust_pkg );
my $error = '';
my( $pkgnum, $cust_pkg );
diff --git
a/httemplate/edit/process/REAL_cust_pkg.cgi
b/httemplate/edit/process/REAL_cust_pkg.cgi
index
fd28934
..
0757c76
100755
(executable)
--- a/
httemplate/edit/process/REAL_cust_pkg.cgi
+++ b/
httemplate/edit/process/REAL_cust_pkg.cgi
@@
-14,12
+14,16
@@
my $curuser = $FS::CurrentUser::CurrentUser;
die "access denied"
my $curuser = $FS::CurrentUser::CurrentUser;
die "access denied"
- unless $curuser->access_right('Edit customer package dates');
+ unless $curuser->access_right('Edit customer package dates')
+ or $curuser->access_right('Change package contract end date');
+
+my $contract_only = $curuser->access_right('Edit customer package dates') ? 0 : 1;
+$contract_only = 1 if $cgi->param('contract_only');
my $pkgnum = $cgi->param('pkgnum') or die;
my $old = qsearchs('cust_pkg',{'pkgnum'=>$pkgnum});
my %hash = $old->hash;
my $pkgnum = $cgi->param('pkgnum') or die;
my $old = qsearchs('cust_pkg',{'pkgnum'=>$pkgnum});
my %hash = $old->hash;
-foreach ( qw( start_date setup bill last_bill contract_end ) ) {
+foreach (
$contract_only ? qw( contract_end ) :
qw( start_date setup bill last_bill contract_end ) ) {
if ( $cgi->param($_) =~ /^(\d+)$/ ) {
$hash{$_} = $1;
} else {
if ( $cgi->param($_) =~ /^(\d+)$/ ) {
$hash{$_} = $1;
} else {
@@
-36,11
+40,11
@@
$error = $new->replace($old);
if (!$error) {
my @supp_pkgs = $old->supplemental_pkgs;
foreach $new (@supp_pkgs) {
if (!$error) {
my @supp_pkgs = $old->supplemental_pkgs;
foreach $new (@supp_pkgs) {
- foreach ( qw( start_date setup contract_end ) ) {
+ foreach (
$contract_only ? qw( contract_end ) :
qw( start_date setup contract_end ) ) {
# propagate these to supplementals
$new->set($_, $hash{$_});
}
# propagate these to supplementals
$new->set($_, $hash{$_});
}
- if (
$hash{'bill'} ne $old->get('bill')
) {
+ if (
( $hash{'bill'} ne $old->get('bill') ) && !$contract_only
) {
if ( $hash{'bill'} and $old->get('bill') ) {
# adjust by the same interval
my $diff = $hash{'bill'} - $old->get('bill');
if ( $hash{'bill'} and $old->get('bill') ) {
# adjust by the same interval
my $diff = $hash{'bill'} - $old->get('bill');
diff --git
a/httemplate/misc/confirm-cust_pkg-edit_dates.html
b/httemplate/misc/confirm-cust_pkg-edit_dates.html
index
8e54852
..
a0f79cd
100755
(executable)
--- a/
httemplate/misc/confirm-cust_pkg-edit_dates.html
+++ b/
httemplate/misc/confirm-cust_pkg-edit_dates.html
@@
-2,15
+2,19
@@
my $curuser = $FS::CurrentUser::CurrentUser;
die "access denied"
my $curuser = $FS::CurrentUser::CurrentUser;
die "access denied"
- unless $curuser->access_right('Edit customer package dates');
+ unless $curuser->access_right('Edit customer package dates')
+ or $curuser->access_right('Change package contract end date');
my %arg = $cgi->Vars;
my %arg = $cgi->Vars;
+my $contract_only = $curuser->access_right('Edit customer package dates') ? 0 : 1;
+$contract_only = 1 if $arg{'contract_only'};
+
my $pkgnum = $arg{'pkgnum'};
$pkgnum =~ /^\d+$/ or die "bad pkgnum '$pkgnum'";
my $cust_pkg = qsearchs('cust_pkg',{'pkgnum'=>$pkgnum});
my %hash = $cust_pkg->hash;
my $pkgnum = $arg{'pkgnum'};
$pkgnum =~ /^\d+$/ or die "bad pkgnum '$pkgnum'";
my $cust_pkg = qsearchs('cust_pkg',{'pkgnum'=>$pkgnum});
my %hash = $cust_pkg->hash;
-foreach (qw( start_date setup bill last_bill contract_end )) {
+foreach (
$contract_only ? qw( contract_end ) :
qw( start_date setup bill last_bill contract_end )) {
# adjourn, expire, resume not editable this way
if( $arg{$_} =~ /^\d+$/ ) {
$hash{$_} = $arg{$_};
# adjourn, expire, resume not editable this way
if( $arg{$_} =~ /^\d+$/ ) {
$hash{$_} = $arg{$_};
@@
-262,6
+266,9
@@
if ( @errors ) {
% foreach (keys %hash) {
<INPUT TYPE="hidden" NAME="<%$_%>" VALUE="<% $hash{$_} |h%>">
% }
% foreach (keys %hash) {
<INPUT TYPE="hidden" NAME="<%$_%>" VALUE="<% $hash{$_} |h%>">
% }
+% if ($contract_only) {
+<INPUT TYPE="hidden" NAME="contract_only" VALUE="1">
+% }
</FORM>
<SCRIPT>
function submit_ready() {
</FORM>
<SCRIPT>
function submit_ready() {
diff --git
a/httemplate/view/cust_main/packages/package.html
b/httemplate/view/cust_main/packages/package.html
index
a7facee
..
c7abd46
100644
(file)
--- a/
httemplate/view/cust_main/packages/package.html
+++ b/
httemplate/view/cust_main/packages/package.html
@@
-82,7
+82,7
@@
( <%pkg_change_link($cust_pkg)%> )
% }
%
( <%pkg_change_link($cust_pkg)%> )
% }
%
-% if ( $curuser->access_right('Edit customer package dates') ) {
+% if ( $curuser->access_right('Edit customer package dates')
or $curuser->access_right('Change package contract end date')
) {
% $br=1;
( <%pkg_dates_link($cust_pkg)%> )
% }
% $br=1;
( <%pkg_dates_link($cust_pkg)%> )
% }