X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_main.pm;h=925eb4e444868e78ca8b2f481c969686c5a34326;hb=5f7c4a6025b9e3a49bee72dbc06cac37a45e6f10;hp=19a5816566b53f71e6ef2be7431d6dea663cb68a;hpb=5cfe4a2d5a299af5af44b249e12f114c9c886850;p=freeside.git diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index 19a581656..925eb4e44 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -377,6 +377,10 @@ sub insert { join(', ', map { "$_: $options{$_}" } keys %options ). "\n" if $DEBUG; + return "You are not permitted to change customer invoicing terms." + if $self->invoice_terms #i.e. not the default + && ! $FS::CurrentUser::CurrentUser->access_right('Edit customer invoice terms'); + local $SIG{HUP} = 'IGNORE'; local $SIG{INT} = 'IGNORE'; local $SIG{QUIT} = 'IGNORE'; @@ -1385,6 +1389,10 @@ sub replace { && ! $self->locale && $conf->exists('cust_main-require_locale'); + return "You are not permitted to change customer invoicing terms." + if $old->invoice_terms ne $self->invoice_terms + && ! $curuser->access_right('Edit customer invoice terms'); + local $SIG{HUP} = 'IGNORE'; local $SIG{INT} = 'IGNORE'; local $SIG{QUIT} = 'IGNORE'; @@ -1509,6 +1517,16 @@ sub replace { $implicit_contact->set('emailaddress', $email); $implicit_contact->set('invoice_dest', 'Y'); $implicit_contact->set('custnum', $self->custnum); + my $i_cust_contact = + qsearchs('cust_contact', { + contactnum => $implicit_contact->contactnum, + custnum => $self->custnum, + } + ); + if ( $i_cust_contact ) { + $implicit_contact->set($_, $i_cust_contact->$_) + foreach qw( classnum selfservice_access comment ); + } my $error; if ( $implicit_contact->contactnum ) { @@ -4599,6 +4617,8 @@ PAYBYLOOP: next if grep(/^$field$/, qw( custpaybynum payby weight ) ); next if grep(/^$field$/, @preserve ); next PAYBYLOOP unless $new->get($field) eq $cust_payby->get($field); + # check if paymask exists, if so stop and don't save, no need for a duplicate. + return '' if $new->get('paymask') eq $cust_payby->get('paymask'); } # now check fields that can replace if one value is blank my $replace = 0;