X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2FClientAPI%2FMyAccount.pm;h=66697efb5318b3a10f35c6be75a4c94abd34a255;hp=5c86b7820ba0a2032321fda82587ba2d8467e6c4;hb=de549dfea65bf78508b508f03e4f9637122166a6;hpb=cbfeb5f6b7490f78361318ce6290bfb442dbfcbe diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm index 5c86b7820..66697efb5 100644 --- a/FS/FS/ClientAPI/MyAccount.pm +++ b/FS/FS/ClientAPI/MyAccount.pm @@ -237,6 +237,13 @@ sub login { $svc_x = $svc_phone; + } elsif ( $p->{'domain'} eq 'ip_mac' ) { + + my $svc_broadband = qsearchs( 'svc_broadband', { 'mac_addr' => $p->{'username'} } ); + return { error => 'IP address not found' } + unless $svc_broadband; + $svc_x = $svc_broadband; + } elsif ( $p->{email} && (my $contact = FS::contact->by_selfservice_email($p->{email})) ) @@ -882,6 +889,7 @@ sub payment_info { if ($cust_payby) { $return{payname} = $cust_payby->payname || ( $cust_main->first. ' '. $cust_main->get('last') ); + $return{custpaybynum} = $cust_payby->custpaybynum; if ( $cust_payby->payby =~ /^(CARD|DCRD)$/ ) { $return{card_type} = cardtype($cust_payby->payinfo); @@ -980,6 +988,7 @@ sub validate_payment { #false laziness w/process/payment.cgi my $payinfo; my $paycvv = ''; + my $replace_cust_payby; if ( $payby eq 'CHEK' || $payby eq 'DCHK' ) { $p->{'payinfo1'} =~ /^([\dx]+)$/ @@ -994,6 +1003,7 @@ sub validate_payment { foreach my $cust_payby ($cust_main->cust_payby('CHEK','DCHK')) { if ( $cust_payby->paymask eq $payinfo ) { $payinfo = $cust_payby->payinfo; + $replace_cust_payby = $cust_payby; $achonfile = 1; last; } @@ -1014,6 +1024,7 @@ sub validate_payment { foreach my $cust_payby ($cust_main->cust_payby('CARD','DCRD')) { if ( $cust_payby->paymask eq $payinfo ) { $payinfo = $cust_payby->payinfo; + $replace_cust_payby = $cust_payby; $onfile = 1; last; } @@ -1055,6 +1066,8 @@ sub validate_payment { 'CHEK' => [ qw( ss paytype paystate stateid stateid_state payip ) ], ); + my %replace = ( 'replace' => $replace_cust_payby, ); + my $card_type = ''; $card_type = cardtype($payinfo) if $payby eq 'CARD'; @@ -1063,7 +1076,7 @@ sub validate_payment { 'amount' => sprintf('%.2f', $amount), 'payby' => $payby, 'payinfo' => $payinfo, - 'paymask' => $cust_main->mask_payinfo( $payby, $payinfo ), + 'paymask' => FS::payinfo_Mixin->mask_payinfo( $payby, $payinfo ), 'card_type' => $card_type, 'paydate' => $p->{'year'}. '-'. $p->{'month'}. '-01', 'paydate_pretty' => $p->{'month'}. ' / '. $p->{'year'}, @@ -1076,6 +1089,7 @@ sub validate_payment { 'payname' => $payname, 'discount_term' => $discount_term, 'pkgnum' => $session->{'pkgnum'}, + %replace, map { $_ => $p->{$_} } ( @{ $payby2fields{$payby} }, qw( save auto ), ) @@ -1158,6 +1172,7 @@ sub do_process_payment { my $error = $cust_main->save_cust_payby( 'payment_payby' => $payby, + 'replace' => $validate->{'replace'}, # cust_payby object to replace %saveopt ); @@ -1667,14 +1682,15 @@ sub insert_payby { #XXX payinfo1 + payinfo2 for CHEK? #or take the opportunity to use separate, more well- named fields? - # my $payinfo; - # $p->{'payinfo1'} =~ /^([\dx]+)$/ - # or return { 'error' => "illegal account number ". $p->{'payinfo1'} }; - # my $payinfo1 = $1; - # $p->{'payinfo2'} =~ /^([\dx\.]+)$/ # . turned on by echeck-country CA ? - # or return { 'error' => "illegal ABA/routing number ". $p->{'payinfo2'} }; - # my $payinfo2 = $1; - # $payinfo = $payinfo1. '@'. $payinfo2; + if ($p->{'payby'} eq 'CHEK') { + $p->{'payinfo1'} =~ /^([\dx]+)$/ + or return { 'error' => "illegal account number ". $p->{'payinfo1'} }; + my $payinfo1 = $1; + $p->{'payinfo2'} =~ /^([\dx\.]+)$/ # . turned on by echeck-country CA ? + or return { 'error' => "illegal ABA/routing number ". $p->{'payinfo2'} }; + my $payinfo2 = $1; + $p->{'payinfo'} = $payinfo1. '@'. $payinfo2; + } my $cust_payby = new FS::cust_payby { 'custnum' => $custnum, @@ -1698,6 +1714,16 @@ sub update_payby { my($context, $session, $custnum) = _custoragent_session_custnum($p); return { 'error' => $session } if $context eq 'error'; + if ($p->{'payby'} eq 'CHEK') { + $p->{'payinfo1'} =~ /^([\dx]+)$/ + or return { 'error' => "illegal account number ". $p->{'payinfo1'} }; + my $payinfo1 = $1; + $p->{'payinfo2'} =~ /^([\dx\.]+)$/ # . turned on by echeck-country CA ? + or return { 'error' => "illegal ABA/routing number ". $p->{'payinfo2'} }; + my $payinfo2 = $1; + $p->{'payinfo'} = $payinfo1. '@'. $payinfo2; + } + my $cust_payby = qsearchs('cust_payby', { 'custnum' => $custnum, 'custpaybynum' => $p->{'custpaybynum'}, @@ -3563,6 +3589,11 @@ sub list_tickets { # unavoidable false laziness w/ httemplate/view/cust_main/tickets.html if ( $FS::TicketSystem::system && FS::TicketSystem->selfservice_priority ) { + + @tickets = grep { $_->{'_selfservice_priority'} + !~ /^\s*(closed?|resolved?|done)\s*/i } + @tickets; + my $conf = new FS::Conf; my $dir = $conf->exists('ticket_system-priority_reverse') ? -1 : 1; +{ tickets => [