diff --git a/lib/NGCP/Panel/Controller/Invoice.pm b/lib/NGCP/Panel/Controller/Invoice.pm index 904bdecf12..0bcc0dc4f5 100644 --- a/lib/NGCP/Panel/Controller/Invoice.pm +++ b/lib/NGCP/Panel/Controller/Invoice.pm @@ -168,6 +168,15 @@ sub invoice_list :Chained('invoice_details_calls') :PathPart('list') :Args(0) { #$c->detach( $c->view() ); } +sub invoice_data :Chained('invoice') :PathPart('data') :Args(1) { + my ($self, $c) = @_; + my ($invoice_id) = pop; + my $backend = NGCP::Panel::Model::DB::InvoiceTemplate->new( schema => $c->model('DB') ); + my $invoice = $backend->getInvoice(invoice_id => $invoice_id); + $c->response->content_type('application/pdf'); + $c->response->body( $invoice->first->get_column('data') ); +} + sub template_base :Chained('base') :PathPart('template') :CaptureArgs(0) { my ($self, $c) = @_; my($validator,$backend,$in,$out); diff --git a/lib/NGCP/Panel/Model/DB/InvoiceTemplate.pm b/lib/NGCP/Panel/Model/DB/InvoiceTemplate.pm index ee7416ae0a..decc19378c 100644 --- a/lib/NGCP/Panel/Model/DB/InvoiceTemplate.pm +++ b/lib/NGCP/Panel/Model/DB/InvoiceTemplate.pm @@ -233,16 +233,25 @@ sub getProviderInvoiceList{ my ($provider_reseller_id,$stime,$etime) = @params{qw/provider_id stime etime/}; $stime ||= NGCP::Panel::Utils::DateTime::current_local()->truncate( to => 'month' ); $etime ||= $stime->clone->add( months => 1); - $self->schema->resultset('contacts')->search_rs({ + $self->schema->resultset('invoices')->search({ '-and' => [ - 'reseller_id' => $provider_reseller_id, #$client_contract_id - contract of the client + 'contact.reseller_id' => $provider_reseller_id, #$client_contract_id - contract of the client ], },{ - '+select' => ['contract_balances.invoice_id','contract_balances.start','contract_balances.end'], - 'join' => [{ 'contracts' => {'contract_balances' => 'invoice' }}] + '+select' => ['contract_balances.invoice_id','contract_balances.start','contract_balances.end','contract_balances.cash_balance','contract_balances.free_time_balance'], + '+as' => ['invoice_id','contract_balance_start','contract_balance_end','cash_balance','free_time_balance'], + 'prefetch' => [ {'contract_balances' => { 'contract' => 'contact' }} ], }); } +sub getInvoice{ + my $self = shift; + my (%params) = @_; + my ($invoice_id) = @params{qw/invoice_id/}; + return $self->schema->resultset('invoices')->search({ + 'id' => $invoice_id, + },undef ); +} sub getInvoiceProviderClients{ my $self = shift; my (%params) = @_; diff --git a/share/templates/invoice/invoice_list.tt b/share/templates/invoice/invoice_list.tt new file mode 100644 index 0000000000..c23507c5a9 --- /dev/null +++ b/share/templates/invoice/invoice_list.tt @@ -0,0 +1,39 @@ +[%USE Date%] +[%manip=date.manip%] + +
| [% c.loc('Serial') %] | +[% c.loc('Start') %] | +[% c.loc('End') %] | +[% c.loc('Cache Balance') %] | +[% c.loc('Free time balance') %] | ++ |
|---|---|---|---|---|---|
[% invoice.get_column('serial')|format('%06d') %] |
+ [% invoice.get_column('contract_balance_start') %] |
+ [% invoice.get_column('contract_balance_end') %] |
+ [% invoice.get_column('cash_balance') %] |
+ [% invoice.get_column('free_time_balance') %] |
+ + [% c.loc('View invoice') %] + + | +