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%] + + + + + + + + + + + + + + [%# Dumper.dump_html(invoice_details_zones.as_query)%] + [%FOREACH invoice IN invoice_list -%] + + + + + + + + + [%END%] + +
[% 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') %] + +
+ + + + + + + + \ No newline at end of file diff --git a/share/templates/invoice/list.tt b/share/templates/invoice/list.tt index 5b4733e8a7..4e8f614f08 100644 --- a/share/templates/invoice/list.tt +++ b/share/templates/invoice/list.tt @@ -37,7 +37,7 @@
- +[%PROCESS 'invoice/invoice_list.tt' %]
diff --git a/share/tools/generate_invoices.pl b/share/tools/generate_invoices.pl index 704f25034b..0adf97c06a 100644 --- a/share/tools/generate_invoices.pl +++ b/share/tools/generate_invoices.pl @@ -58,7 +58,7 @@ my $email_transport = Email::Sender::Transport::SMTP->new({ #host => 'mail.sipwise.com', #port => 587, - #sasl_password => 'KfC4pXuV', + #sasl_password => '', #ssl => 0, host => 'smtp.googlemail.com',