X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2FClientAPI%2FMyAccount.pm;h=ac3ebdfc596a765862940dea3c37d68198e14164;hp=53e67404cea3a8aadef5faf5ac92fcfdb9fc9b3f;hb=687d99781b3a8c555534e0a4f7fd826e59e4cf2f;hpb=bf3dbb0c455af0fdafbb0e699ed2db343ab40320 diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm index 53e67404c..ac3ebdfc5 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; @@ -1140,7 +1141,10 @@ sub invoice_pdf { return { 'error' => '', 'invnum' => $invnum, - 'invoice_pdf' => $cust_bill->print_pdf( { unsquelch_cdr => 1 } ), + 'invoice_pdf' => $cust_bill->print_pdf({ + 'unsquelch_cdr' => 1, + 'locale' => $p->{'locale'}, + }), }; } @@ -1154,10 +1158,15 @@ sub legacy_invoice { my $legacyinvnum = $p->{'legacyinvnum'}; - my $legacy_cust_bill = qsearchs('legacy_cust_bill', { + my %hash = ( 'legacyinvnum' => $legacyinvnum, 'custnum' => $custnum, - }) or return { 'error' => "Can't find legacyinvnum" }; + ); + + my $legacy_cust_bill = + qsearchs('legacy_cust_bill', { %hash, 'locale' => $p->{'locale'} } ) + || qsearchs('legacy_cust_bill', \%hash ) + or return { 'error' => "Can't find legacyinvnum" }; #my %return; @@ -1240,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; @@ -1504,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"; @@ -1515,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 } ); @@ -1527,7 +1528,8 @@ sub svc_status_html { my($context, $session, $custnum) = _custoragent_session_custnum($p); return { 'error' => $session } if $context eq 'error'; - my $svc_x = _customer_svc_x( $custnum, $p->{'svcnum'}) + #XXX only svc_dsl for now + my $svc_x = _customer_svc_x( $custnum, $p->{'svcnum'}, 'svc_dsl') or return { 'error' => "Service not found" }; my $html = $svc_x->getstatus_html; @@ -1536,6 +1538,70 @@ 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', + ); + + 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;