X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FClientAPI%2FMyAccount.pm;h=abb93e8ecffab4ff0640a5157079760ac7edfcc6;hb=ee7abaf6cf68da08a8183e8d6aadb2e211f7be7d;hp=71e47b56743398a53a01522111a4b90c46d3640a;hpb=cd7626282ab808893f3b1d06bd77d0a64300c3e5;p=freeside.git diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm index 71e47b567..abb93e8ec 100644 --- a/FS/FS/ClientAPI/MyAccount.pm +++ b/FS/FS/ClientAPI/MyAccount.pm @@ -27,6 +27,7 @@ use FS::TicketSystem; use FS::ClientAPI_SessionCache; use FS::cust_svc; use FS::svc_acct; +use FS::svc_forward; use FS::svc_domain; use FS::svc_phone; use FS::svc_external; @@ -1248,16 +1249,7 @@ sub list_invoices { my @legacy_cust_bill = $cust_main->legacy_cust_bill; - my @cust_bill = $cust_main->cust_bill; - - my $hide_taxclass = $conf->config('selfservice-hide_invoices-taxclass'); - if ( $hide_taxclass ) { - @cust_bill = grep { my @cust_bill_pkg = $_->cust_bill_pkg; - my @part_pkg= grep $_, map $_->part_pkg, @cust_bill_pkg; - grep { $_->taxclass ne $hide_taxclass } @part_pkg; - } - @cust_bill; - } + my @cust_bill = grep ! $_->hide, $cust_main->cust_bill; my $balance = 0; @@ -1512,7 +1504,8 @@ sub list_svcs { } sub _customer_svc_x { - my($custnum, $svcnum, $table) = @_; + my($custnum, $svcnum, $table) = (shift, shift, shift); + my $hashref = ref($svcnum) ? $svcnum : { 'svcnum' => $svcnum }; $custnum =~ /^(\d+)$/ or die "illegal custnum"; my $search = " AND custnum = $1"; @@ -1523,7 +1516,7 @@ sub _customer_svc_x { 'addl_from' => 'LEFT JOIN cust_svc USING ( svcnum ) '. 'LEFT JOIN cust_pkg USING ( pkgnum ) ',#. #'LEFT JOIN cust_main USING ( custnum ) ', - 'hashref' => { 'svcnum' => $svcnum, }, + 'hashref' => $hashref, 'extra_sql' => $search, #important } ); @@ -1545,6 +1538,71 @@ sub svc_status_html { } +sub acct_forward_info { + my $p = shift; + + my($context, $session, $custnum) = _custoragent_session_custnum($p); + return { 'error' => $session } if $context eq 'error'; + + my $svc_forward = _customer_svc_x( $custnum, + { 'srcsvc' => $p->{'svcnum'} }, + 'svc_forward', + ) + or return { 'error' => '', + 'dst' => '', + }; + + return { 'error' => '', + 'dst' => $svc_forward->dst || $svc_forward->dstsvc_acct->email, + }; + +} + +sub process_acct_forward { + my $p = shift; + warn Dumper($p); + + my($context, $session, $custnum) = _custoragent_session_custnum($p); + return { 'error' => $session } if $context eq 'error'; + + my $old = _customer_svc_x( $custnum, + { 'srcsvc' => $p->{'svcnum'} }, + 'svc_forward', + ); + warn $old; + + if ( $p->{'dst'} eq '' ) { + if ( $old ) { + my $error = $old->delete; + return { 'error' => $error }; + } + return { 'error' => '' }; + } + + my $new = new FS::svc_forward { 'srcsvc' => $p->{'svcnum'}, + 'dst' => $p->{'dst'}, + }; + + my $error; + if ( $old ) { + $new->svcnum($old->svcnum); + my $cust_svc = $old->cust_svc; + $new->svcpart($old->svcpart); + $new->pkgnuym($old->pkgnum); + $error = $new->replace($old); + } else { + my $conf = new FS::Conf; + $new->svcpart($conf->config('selfservice-svc_forward_svcpart')); + $new->pkgnum($old->cust_svc->pkgnum); + warn Dumper($new); + $error = $new->insert; + warn $error; + } + + return { 'error' => $error }; + +} + sub list_dsl_devices { my $p = shift;