use FS::Misc qw(card_types);
use FS::Misc::DateTime qw(parse_datetime);
use FS::ClientAPI_SessionCache;
+use FS::cust_svc;
use FS::svc_acct;
use FS::svc_domain;
use FS::svc_phone;
$return{discount_terms_hash} = { $cust_main->discount_terms_hash };
}
+ if ( $session->{'svcnum'} ) {
+ my $cust_svc = qsearchs('cust_svc', { 'svcnum' => $session->{'svcnum'} });
+ $return{'svc_label'} = ($cust_svc->label)[1] if $cust_svc;
+ }
+
} elsif ( $session->{'svcnum'} ) { #no customer record
my $svc_acct = qsearchs('svc_acct', { 'svcnum' => $session->{'svcnum'} } )
}
+sub invoice_pdf {
+ my $p = shift;
+ my $session = _cache->get($p->{'session_id'})
+ or return { 'error' => "Can't resume session" }; #better error message
+
+ my $custnum = $session->{'custnum'};
+
+ my $invnum = $p->{'invnum'};
+
+ my $cust_bill = qsearchs('cust_bill', { 'invnum' => $invnum,
+ 'custnum' => $custnum } )
+ or return { 'error' => "Can't find invnum" };
+
+ #my %return;
+
+ return { 'error' => '',
+ 'invnum' => $invnum,
+ 'invoice_pdf' => $cust_bill->print_pdf( { unsquelch_cdr => 1 } ),
+ };
+
+}
+
sub invoice_logo {
my $p = shift;
my @cust_bill = $cust_main->cust_bill;
+ my $balance = 0;
+
return { 'error' => '',
- 'invoices' => [ map { { 'invnum' => $_->invnum,
- '_date' => $_->_date,
- 'date' => time2str("%b %o, %Y", $_->_date),
- }
- } @cust_bill
- ]
+ 'invoices' => [
+ map {
+ my $owed = $_->owed;
+ $balance += $owed;
+ +{ 'invnum' => $_->invnum,
+ '_date' => $_->_date,
+ 'date' => time2str("%b %o, %Y", $_->_date),
+ 'date_short' => time2str("%m-%d-%Y", $_->_date),
+ 'previous' => sprintf('%.2f', ($_->previous)[0]),
+ 'charged' => sprintf('%.2f', $_->charged),
+ 'owed' => sprintf('%.2f', $owed),
+ 'balance' => sprintf('%.2f', $balance),
+ }
+ }
+ @cust_bill
+ ]
};
}
{ 'svcnum' => $session->{'svcnum'},
'custnum' => $custnum,
'cust_pkg' => [ map {
- { $_->hash,
+ my $primary_cust_svc = $_->primary_cust_svc;
+ +{ $_->hash,
$_->part_pkg->hash,
+ status => $_->status,
part_svc =>
[ map $_->hashref, $_->available_part_svc ],
cust_svc =>
$ref;
} $_->cust_svc
],
+ primary_cust_svc =>
+ $primary_cust_svc
+ ? { $primary_cust_svc->hash,
+ label => [ $primary_cust_svc->label ],
+ finger => $primary_cust_svc->svc_x->finger, #uuh
+ $primary_cust_svc->part_svc->hash,
+ }
+ : {}, #'' ?
};
} $cust_main->ncancelled_pkgs
],