MT#5879 Web generation is working.

For further testing and improvements.
ipeshinskaya/InvoiceTemplate5
Irina Peshinskaya 12 years ago committed by Victor Seva
parent d22ade4c4e
commit 6c4f2e7d2b

@ -222,7 +222,7 @@ sub invoice_generate :Chained('base') :PathPart('generate') :Args(0) {
my $parser = DateTime::Format::Strptime->new(
#pattern => '%Y-%m-%d %H:%M',
pattern => '%Y-%m-%d',
pattern => '%Y-%m-%d %H:%M:%S',
);
if($in->{start}) {
$in->{stime} = $parser->parse_datetime($in->{start});
@ -230,6 +230,7 @@ sub invoice_generate :Chained('base') :PathPart('generate') :Args(0) {
if($in->{end}) {
$in->{etime} = $parser->parse_datetime($in->{end});
}
#$c->log->debug("stime=".$in->{stime}.";etime=".$in->{etime}.";");
$in->{provider_id} = $c->stash->{provider}->id;
#$in->{client_contact_id} = $c->request->parameters->{client_contact_id};
#(undef,undef,@$in{qw/client_contact_id/}) = @_;
@ -262,14 +263,22 @@ sub invoice_generate :Chained('base') :PathPart('generate') :Args(0) {
item => $out->{invoice_data},
#item => $out->{invoice_data},
);
use irka;
use Data::Dumper;
irka::loglong(Dumper($in));
my $in_validated = $validator->fif;
if($posted){
if($validator->validated) {
$c->log->debug("validated=".$validator->validated.";");
if(1 || $validator->validated) {
#copy/pasted from NGCP\Panel\Role\API\Customers.pm
use irka;
use Data::Dumper;
irka::loglong(Dumper($in));
#$c->log->debug('getInvoice:contract_id='.Dumper($in).';');
my $client_contract = $backend->getContractInfo('contract_id' => $in->{client_contract_id});
my $client_contact = $backend->getContactInfo('contact_id' => $client_contract->contact_id);
my $client_contact = $backend->getContactInfo('contact_id' => $client_contract->get_column('contact_id') );
my $provider_contract = $backend->getContractInfo('contract_id' => $c->stash->{provider}->contract_id);
my $provider_contact = $backend->getContactInfo('contact_id' => $provider_contract->id);
my $provider_contact = $backend->getContactInfo('contact_id' => $provider_contract->get_column('id'));
my $contract_balance = $backend->getContractBalance($in);
#$c->log->debug("customer->id="..";");
if(!$contract_balance){
@ -284,14 +293,17 @@ sub invoice_generate :Chained('base') :PathPart('generate') :Args(0) {
$contract_balance = $backend->getContractBalance($in);
}
my $invoice;
if($contract_balance->invoice_id){
$invoice = $backend->getInvoice('invoice_id' => $contract_balance->invoice_id);
if($contract_balance->get_column('invoice_id')){
$invoice = $backend->getInvoice('invoice_id' => $contract_balance->get_column('invoice_id') );
#$c->log->debug('getInvoice:invoice.id='.$invoice->get_column('id').';');
$c->log->debug('getInvoice:invoice.id='.$contract_balance->get_column('invoice_id').';');
}else{
$invoice = $backend->createInvoice(
'contract_balance' => $contract_balance,
stime => $in->{stime},
etime => $in->{etime},
);
$c->log->debug('createInvoice:invoice.id='.$invoice->get_column('id').';');
}
$c->forward('invoice_details_calls');
$c->forward('invoice_details_zones');
@ -322,7 +334,7 @@ sub invoice_generate :Chained('base') :PathPart('generate') :Args(0) {
}
$svg = $c->view('SVG')->getTemplateProcessed($c,\$svg, $stash );
NGCP::Panel::Utils::InvoiceTemplate::convertSvg2Pdf($c,\$svg,$in,$out);
$backend->storeInvoiceData($invoice,\$out->{tt_string_pdf});
$backend->storeInvoiceData('invoice'=>$invoice,'data'=>\$out->{tt_string_pdf});
try {
#$backend->storeInvoiceTemplateInfo(%$in_validated);
$c->flash(messages => [{type => 'success', text => $c->loc(

@ -54,7 +54,8 @@ has_field 'save' => (
element_class => [qw/btn btn-primary/],
do_label => 0,
);
has_field 'client_contact_id' => (
has_field 'client_contract_id' => (
type => 'Hidden',
required => 1,
);
@ -62,7 +63,7 @@ has_field 'client_contact_id' => (
has_block 'fields' => (
tag => 'div',
class => [qw/modal-body/],
render_list => [qw/start end/],
render_list => [qw/start end client_contract_id/],
);
has_block 'actions' => (

@ -225,7 +225,7 @@ sub getContractInfo{
my ($contract_id) = @params{qw/contract_id/};
return $self->schema->resultset('contracts')->search({
id => $contract_id,
});
})->first;
}
sub getContactInfo{
my $self = shift;
@ -233,12 +233,12 @@ sub getContactInfo{
my ($contact_id) = @params{qw/contact_id/};
return $self->schema->resultset('contacts')->search({
id => $contact_id,
});
})->first;
}
sub getBillingProfile{
my $self = shift;
my (%params) = @_;
my ($client_contract_id, $stime, $etime) = @params{qw/client_contract_id start end/};
my ($client_contract_id, $stime, $etime) = @params{qw/client_contract_id stime etime/};
#select distinct billing_profiles.*
#from billing_mappings
#inner join billing_profiles on billing_mappings.billing_profile_id=billing_profiles.id
@ -263,12 +263,12 @@ sub getBillingProfile{
],
},{
'join' => [ { 'billing_mappings' => [ 'product', 'contract' ] } ],
});
})->first;
}
sub getContractBalance{
my $self = shift;
my (%params) = @_;
my ($client_contact_id, $stime, $etime) = @params{qw/client_contact_id start end/};
my ($params) = @_;
my ($client_contract_id, $stime, $etime) = @$params{qw/client_contract_id stime etime/};
#select distinct billing_profiles.*
#from billing_mappings
#inner join billing_profiles on billing_mappings.billing_profile_id=billing_profiles.id
@ -280,19 +280,17 @@ sub getContractBalance{
# and (billing_mappings.start_date <= ? OR billing_mappings.start_date IS NULL)
# and (billing_mappings.end_date >= ? OR billing_mappings.end_date IS NULL)
return $self->schema->resultset('contract_balances')->search({
'contract.contact_id' => $client_contact_id,
'contract_id' => $client_contract_id,
#'contract.status' => { '!=' => 'terminated' },
'start' => [
{ '<=' => $etime->epoch },
{ '<=' => $etime->ymd },
{ '-is' => undef },
],
'end' => [
{ '>=' => $stime->epoch },
{ '>=' => $stime->ymd },
{ '-is' => undef },
],
},{
'join' => [ 'contract' ],
});
},undef)->first;
}
sub getProviderInvoiceList{
@ -349,37 +347,46 @@ sub createInvoice{
#my $invoice_id = $dbh->last_insert_id(undef,'billing','invoices','id');
#$dbh->do('update contract_balances set invoice_id = ? where contract_id=? and start=? and end=?', undef, $invoice_id,$contract_id, $stime->datetime, $etime->datetime );
#return $dbh->selectrow_hashref('select * from invoices where id=?',undef, $invoice_id);
my $invoice;
if( $contract_balance->get_column('invoice_id')){
$invoice = $self->schema->resultset('invoices')->search({
id => $contract_balance->get_column('invoice_id'),
})->first;
}else{
my $invoice_serial = $self->schema->resultset('invoices')->search(undef, {
'select' => { 'max' => 'me.serial', '-as' => 'serial_max'},
})->first->get_column('serial_max');
$invoice_serial +=1;
my $invoice_serial = $self->schema->resultset('invoices')->search(undef, {
'select' => { 'max' => 'me.serial', '-as' => 'serial_max'},
})->first->get_column('serial_max');
$invoice_serial +=1;
my $invoice_record = $self->schema->resultset('invoices')->create({
year => $stime->year,
month => $stime->month,
serial => $invoice_serial,
data => $data,
});
if($invoice_record){
$self->schema->resultset('contract_balances')->search({
id => $contract_balance->id,
})->update({
invoice_id => $invoice_record->id()
my $invoice_record = $self->schema->resultset('invoices')->create({
year => $stime->year,
month => $stime->month,
serial => $invoice_serial,
data => $data,
});
if($invoice_record){
$self->schema->resultset('contract_balances')->search({
id => $contract_balance->get_column('id'),
})->update({
invoice_id => $invoice_record->id()
});
$invoice = $self->schema->resultset('invoices')->search({
id => $invoice_record->id(),
})->first;
}
}
return $invoice_record;
return $invoice;
}
sub storeInvoiceData{
my $self = shift;
my (%params) = @_;
my ($invoice,$data_ref) = @params{qw/invoice data/};
$self->schema->resultset('invoices')->search({
id => $invoice->id,
id => $invoice->get_column('id'),
})->update({
data => $invoice->data
data => $$data_ref
});
}
sub getInvoice{
@ -388,7 +395,7 @@ sub getInvoice{
my ($invoice_id) = @params{qw/invoice_id/};
return $self->schema->resultset('invoices')->search({
'id' => $invoice_id,
},undef );
}, undef )->first;
}
sub getInvoiceProviderClients{
my $self = shift;

@ -85,7 +85,7 @@ function applyClientFilter(table,tr,contact_id){
{ name => 'contracts.status', title => c.loc('Status'), search => 1 },
];
helper.dt_buttons = [
{ name => c.loc('Generate invoice'), uri => 'javascript:void(0);', onclick => "fetch_into(\\'invoice_generate_form\\', \\'" _ c.uri_for_action('/invoice/invoice_generate', [ provider.id]) _ "\\',\\'item=invoice_generate&client_contract_id='+full.contract_id+'\\',function(){modalFormScript();});void(0);", class => 'btn-small btn-primary', icon => 'icon-star' },
{ name => c.loc('Generate invoice'), uri => 'javascript:void(0);', onclick => "fetch_into(\\'invoice_generate_form\\', \\'" _ c.uri_for_action('/invoice/invoice_generate', [ provider.id]) _ "\\',\\'item=invoice_generate&client_contract_id='+full.contracts_id+'\\',function(){modalFormScript();});void(0);", class => 'btn-small btn-primary', icon => 'icon-star' },
{ name => c.loc('Filter invoices'), uri=>'javascript:void(0);', onclick => "applyClientFilter(\\'\\',\$(this).closest(\\'tr\\'),'+full.id+');", class => 'btn-small btn-primary', icon => 'icon-glass', tooltip => 'Click twice to clear client filter.' },
];
helper.identifier = 'provider_client_list_ajax';

Loading…
Cancel
Save