diff options
-rw-r--r-- | FS/FS/cust_payby.pm | 15 | ||||
-rw-r--r-- | FS/FS/o2m_Common.pm | 2 | ||||
-rwxr-xr-x | httemplate/edit/cust_main.cgi | 6 | ||||
-rw-r--r-- | httemplate/edit/cust_main/billing.html | 1 | ||||
-rw-r--r-- | httemplate/elements/cust_payby.html | 48 |
5 files changed, 42 insertions, 30 deletions
diff --git a/FS/FS/cust_payby.pm b/FS/FS/cust_payby.pm index b9e79a2be..83b951eda 100644 --- a/FS/FS/cust_payby.pm +++ b/FS/FS/cust_payby.pm @@ -577,15 +577,20 @@ sub cgi_cust_payby_fields { payinfo1 payinfo2 payinfo3 paytype paystate payname_CHEK )]; } -=item cgi_hash_callback HASHREF +=item cgi_hash_callback HASHREF OLD Subroutine (not a class or object method). Processes a hash reference of web interface contet (transfers the data from pseudo-fields to real fields). +If OLD object is passed, also preserves locationnum, paystart_month, paystart_year, +payissue and payip. If the new field is blank but the old is not, the old field +will be preserved. + =cut sub cgi_hash_callback { my $hashref = shift; + my $old = shift; my %noauto = ( 'CARD' => 'DCRD', @@ -619,6 +624,14 @@ sub cgi_hash_callback { $hashref->{paydate}= $hashref->{paydate_month}. '-'. $hashref->{paydate_year}; + if ($old) { + foreach my $field ( qw(locationnum paystart_month paystart_year payissue payip) ) { + next if $hashref->{$field}; + next unless $old->get($field); + $hashref->{$field} = $old->get($field); + } + } + } =item search_sql diff --git a/FS/FS/o2m_Common.pm b/FS/FS/o2m_Common.pm index 430f00bbb..915393ae9 100644 --- a/FS/FS/o2m_Common.pm +++ b/FS/FS/o2m_Common.pm @@ -111,7 +111,7 @@ sub process_o2m { map { $_ => $opt{'params'}->{$add_param."_$_"} } @{ $opt{'fields'} } ); - &{ $opt{'hash_callback'} }( \%hash ) if $opt{'hash_callback'}; + &{ $opt{'hash_callback'} }( \%hash, $old_obj ) if $opt{'hash_callback'}; #next unless grep { $_ =~ /\S/ } values %hash; my $new_obj = "FS::$table"->new( { %$hashref, %hash } ); diff --git a/httemplate/edit/cust_main.cgi b/httemplate/edit/cust_main.cgi index bdf3431d7..39cddc021 100755 --- a/httemplate/edit/cust_main.cgi +++ b/httemplate/edit/cust_main.cgi @@ -115,7 +115,6 @@ function samechanged(what) { %# billing info <& cust_main/billing.html, $cust_main, - 'payinfo' => $payinfo, 'invoicing_list' => \@invoicing_list, &> @@ -186,7 +185,7 @@ my $conf = new FS::Conf; #get record -my($custnum, $cust_main, $ss, $stateid, $payinfo, @invoicing_list); +my($custnum, $cust_main, $ss, $stateid, @invoicing_list); my $pkgpart_svcpart = ''; #first_pkg my($username, $password, $popnum, $saved_domsvc) = ( '', '', 0, 0 ); #svc_acct my %svc_phone = (); @@ -234,7 +233,6 @@ if ( $cgi->param('error') ) { $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 $cust_main->national_id( $cgi->param('national_id1') || $cgi->param('national_id2') ); @@ -282,7 +280,6 @@ if ( $cgi->param('error') ) { @invoicing_list = $cust_main->invoicing_list; $ss = $conf->exists('unmask_ss') ? $cust_main->ss : $cust_main->masked('ss'); $stateid = $cust_main->masked('stateid'); - $payinfo = $cust_main->paymask; } else { #new customer @@ -298,7 +295,6 @@ if ( $cgi->param('error') ) { unless $conf->exists('disablepostalinvoicedefault'); $ss = ''; $stateid = ''; - $payinfo = ''; $cgi->param('tagnum', FS::part_tag->default_tags); diff --git a/httemplate/edit/cust_main/billing.html b/httemplate/edit/cust_main/billing.html index 7bca17b50..fbe3e485c 100644 --- a/httemplate/edit/cust_main/billing.html +++ b/httemplate/edit/cust_main/billing.html @@ -326,7 +326,6 @@ function toggle(obj) { my( $cust_main, %options ) = @_; my @invoicing_list = @{ $options{'invoicing_list'} }; -my $payinfo = $options{'payinfo'}; my $conf = new FS::Conf; my $money_char = $conf->config('money_char') || '$'; diff --git a/httemplate/elements/cust_payby.html b/httemplate/elements/cust_payby.html index 6e2610bbe..5e0f09d3f 100644 --- a/httemplate/elements/cust_payby.html +++ b/httemplate/elements/cust_payby.html @@ -11,7 +11,8 @@ <TD> <SELECT NAME="<%$name%>_payby" - onChange="<%$name%>_payby_changed(this)" + ID="<%$id%>_payby" + onChange="payby_changed(this)" > % foreach my $payby (@payby) { <OPTION VALUE="<% $payby %>" @@ -218,45 +219,48 @@ % unless ( $opt{'html_only'} ) { <SCRIPT TYPE="text/javascript"> - function <%$name%>_payby_changed(what) { + function payby_changed(what) { + var field_match = what.id.match(/(.*)_payby$/); + var field_id = field_match[1]; var payby = what.options[what.selectedIndex].value; if ( payby == 'CARD' ) { - document.getElementById('<%$id%>_td_payinfo').style.display = ''; - document.getElementById('<%$id%>_td_paydate').style.display = ''; - document.getElementById('<%$id%>_td_paycvv').style.display = ''; - document.getElementById('<%$id%>_td_payname').style.display = ''; - document.getElementById('<%$id%>_td_payinfo1').style.display = 'none'; - document.getElementById('<%$id%>_td_payinfo2').style.display = 'none'; - document.getElementById('<%$id%>_td_paytype').style.display = 'none'; - document.getElementById('<%$id%>_td_payname_CHEK').style.display = 'none'; - var td_payinfo3 = document.getElementById('<%$id%>_td_payinfo3'); + document.getElementById(field_id+'_td_payinfo').style.display = ''; + document.getElementById(field_id+'_td_paydate').style.display = ''; + document.getElementById(field_id+'_td_paycvv').style.display = ''; + document.getElementById(field_id+'_td_payname').style.display = ''; + document.getElementById(field_id+'_td_payinfo1').style.display = 'none'; + document.getElementById(field_id+'_td_payinfo2').style.display = 'none'; + document.getElementById(field_id+'_td_paytype').style.display = 'none'; + document.getElementById(field_id+'_td_payname_CHEK').style.display = 'none'; + var td_payinfo3 = document.getElementById(field_id+'_td_payinfo3'); if ( td_payinfo3 ) { td_payinfo3.style.display = 'none'; } - var td_paystate = document.getElementById('<%$id%>_td_paystate'); + var td_paystate = document.getElementById(field_id+'_td_paystate'); if ( td_paystate ) { td_paystate.style.display = 'none'; } } else if ( payby == 'CHEK' ) { - document.getElementById('<%$id%>_td_payinfo').style.display = 'none'; - document.getElementById('<%$id%>_td_paydate').style.display = 'none'; - document.getElementById('<%$id%>_td_paycvv').style.display = 'none'; - document.getElementById('<%$id%>_td_payname').style.display = 'none'; - document.getElementById('<%$id%>_td_payinfo1').style.display = ''; - document.getElementById('<%$id%>_td_payinfo2').style.display = ''; - document.getElementById('<%$id%>_td_paytype').style.display = ''; - document.getElementById('<%$id%>_td_payname_CHEK').style.display = ''; - var td_payinfo3 = document.getElementById('<%$id%>_td_payinfo3'); + document.getElementById(field_id+'_td_payinfo').style.display = 'none'; + document.getElementById(field_id+'_td_paydate').style.display = 'none'; + document.getElementById(field_id+'_td_paycvv').style.display = 'none'; + document.getElementById(field_id+'_td_payname').style.display = 'none'; + document.getElementById(field_id+'_td_payinfo1').style.display = ''; + document.getElementById(field_id+'_td_payinfo2').style.display = ''; + document.getElementById(field_id+'_td_paytype').style.display = ''; + document.getElementById(field_id+'_td_payname_CHEK').style.display = ''; + var td_payinfo3 = document.getElementById(field_id+'_td_payinfo3'); if ( td_payinfo3 ) { td_payinfo3.style.display = ''; } - var td_paystate = document.getElementById('<%$id%>_td_paystate'); + var td_paystate = document.getElementById(field_id+'_td_paystate'); if ( td_paystate ) { td_paystate.style.display = ''; } } else { alert( 'unknown payby ' + payby ); } + spawn_custpaybynum(what); } </SCRIPT> |