fixed billing and product handling


			
			
				1.2@1701
			
			
		
Daniel Tiefnig 17 years ago
parent 77b0f36253
commit 18aef238da

@ -69,34 +69,42 @@ sub detail : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/account_detail.tt';
my $account_id = $c->request->params->{account_id};
return unless $c->model('Provisioning')->call_prov( $c, 'billing', 'get_voip_account_by_id',
{ id => $account_id },
\$c->session->{voip_account}
);
if($c->config->{billing_features}) {
return unless $c->model('Provisioning')->call_prov( $c, 'billing', 'get_voip_account_balance',
my $account_id = $c->request->params->{account_id} || undef;
if(defined $account_id) {
return unless $c->model('Provisioning')->call_prov( $c, 'billing', 'get_voip_account_by_id',
{ id => $account_id },
\$c->session->{voip_account}{balance}
\$c->session->{voip_account}
);
} else {
delete $c->session->{voip_account};
$c->session->{voip_account}{customer_id} = $c->request->params->{customer_id} || undef;
}
if($c->config->{billing_features}) {
if(defined $account_id) {
return unless $c->model('Provisioning')->call_prov( $c, 'billing', 'get_voip_account_balance',
{ id => $account_id },
\$c->session->{voip_account}{balance}
);
$c->session->{voip_account}{balance}{cash_balance} = 0
unless defined $c->session->{voip_account}{balance}{cash_balance};
$c->session->{voip_account}{balance}{cash_balance_interval} = 0
unless defined $c->session->{voip_account}{balance}{cash_balance_interval};
$c->session->{voip_account}{balance}{free_time_balance} = 0
unless defined $c->session->{voip_account}{balance}{free_time_balance};
$c->session->{voip_account}{balance}{free_time_balance_interval} = 0
unless defined $c->session->{voip_account}{balance}{free_time_balance_interval};
$c->session->{voip_account}{balance}{cash_balance} =
sprintf "%.2f", $c->session->{voip_account}{balance}{cash_balance} / 100;
$c->session->{voip_account}{balance}{cash_balance_interval} =
sprintf "%.2f", $c->session->{voip_account}{balance}{cash_balance_interval} / 100;
$c->session->{voip_account}{balance}{cash_balance} = 0
unless defined $c->session->{voip_account}{balance}{cash_balance};
$c->session->{voip_account}{balance}{cash_balance_interval} = 0
unless defined $c->session->{voip_account}{balance}{cash_balance_interval};
$c->session->{voip_account}{balance}{free_time_balance} = 0
unless defined $c->session->{voip_account}{balance}{free_time_balance};
$c->session->{voip_account}{balance}{free_time_balance_interval} = 0
unless defined $c->session->{voip_account}{balance}{free_time_balance_interval};
$c->session->{voip_account}{balance}{cash_balance} =
sprintf "%.2f", $c->session->{voip_account}{balance}{cash_balance} / 100;
$c->session->{voip_account}{balance}{cash_balance_interval} =
sprintf "%.2f", $c->session->{voip_account}{balance}{cash_balance_interval} / 100;
}
if(ref $c->session->{restore_account_input} eq 'HASH') {
$c->stash->{account}{product} = $c->session->{restore_account_input}{product};
$c->stash->{account}{billing_profile} = $c->session->{restore_account_input}{billing_profile};
$c->session->{voip_account}{product} = $c->session->{restore_account_input}{product};
$c->session->{voip_account}{billing_profile} = $c->session->{restore_account_input}{billing_profile};
$c->session->{voip_account}{customer_id} = $c->session->{restore_account_input}{customer_id};
delete $c->session->{restore_account_input};
}
@ -115,14 +123,18 @@ sub detail : Local {
undef,
\$products
);
$c->stash->{products} = [ grep { $$_{class} eq 'voip' } @{$$products{result}} ];
$c->stash->{products} = [ grep { $$_{data}{class} eq 'voip' }
sort { $$a{data}{name} cmp $$b{data}{name} }
@{$$products{result}}
];
my $billing_profiles;
return unless $c->model('Provisioning')->call_prov( $c, 'billing', 'get_billing_profiles',
undef,
\$billing_profiles
);
$c->stash->{billing_profiles} = $$billing_profiles{result};
$c->stash->{billing_profiles} = [ sort { $$a{data}{name} cmp $$b{data}{name} }
@{$$billing_profiles{result}} ];
} else {
my $product;
return unless $c->model('Provisioning')->call_prov( $c, 'billing', 'get_product',
@ -130,6 +142,12 @@ sub detail : Local {
\$product
);
$c->session->{voip_account}{product_name} = $$product{data}{name};
my $profile;
return unless $c->model('Provisioning')->call_prov( $c, 'billing', 'get_billing_profile',
{ handle => $c->session->{voip_account}{billing_profile} },
\$profile
);
$c->session->{voip_account}{billing_profile_name} = $$profile{data}{name};
}
$c->stash->{billing_features} = 1;
@ -147,47 +165,19 @@ sub detail : Local {
return 1;
}
=head2 create_account
Creates a new VoIP account.
=cut
sub create_account : Local {
my ( $self, $c ) = @_;
my %messages;
my $acid;
if($c->model('Provisioning')->call_prov( $c, 'billing', 'create_voip_account',
{ product => $c->config->{def_product},
billing_group => $c->config->{def_billprof},
},
\$acid))
{
$messages{accmsg} = 'Web.Account.Created';
$c->session->{messages} = \%messages;
$c->response->redirect("/account/detail?account_id=$acid");
return;
}
$c->response->redirect("/account");
return;
}
=head2 update_account
=head2 save_account
Update details of a VoIP account.
Create or update details of a VoIP account.
=cut
sub update_account : Local {
sub save_account : Local {
my ( $self, $c ) = @_;
my %messages;
my %settings;
my $account_id = $c->request->params->{account_id};
my $account_id = $c->request->params->{account_id} || undef;
my $product = $c->request->params->{product};
$settings{product} = $product if defined $product;
@ -195,17 +185,32 @@ sub update_account : Local {
my $billing_profile = $c->request->params->{billing_profile};
$settings{billing_profile} = $billing_profile if defined $billing_profile;
my $customer_id = $c->request->params->{customer_id};
$settings{customer_id} = $customer_id if defined $customer_id;
if(keys %settings) {
if($c->model('Provisioning')->call_prov( $c, 'billing', 'update_voip_account',
{ id => $account_id,
data => \%settings,
},
undef))
{
$messages{accmsg} = 'Server.Voip.SavedSettings';
$c->session->{messages} = \%messages;
$c->response->redirect("/account/detail?account_id=$account_id");
return;
if(defined $account_id) {
if($c->model('Provisioning')->call_prov( $c, 'billing', 'update_voip_account',
{ id => $account_id,
data => \%settings,
},
undef))
{
$messages{accmsg} = 'Server.Voip.SavedSettings';
$c->session->{messages} = \%messages;
$c->response->redirect("/account/detail?account_id=$account_id");
return;
}
} else {
if($c->model('Provisioning')->call_prov( $c, 'billing', 'create_voip_account',
{ %settings },
\$account_id))
{
$messages{accmsg} = 'Web.Account.Created';
$c->session->{messages} = \%messages;
$c->response->redirect("/account/detail?account_id=$account_id");
return;
}
}
}

@ -131,13 +131,13 @@ sub detail : Local {
{ id => $customer_id },
\$contracts
);
$c->session->{customer}{contracts} = $$contracts{result};
$c->session->{customer}{contracts} = $$contracts{result} if eval { @{$$contracts{result}} };
my $orders;
return unless $c->model('Provisioning')->call_prov( $c, 'billing', 'get_customer_orders',
{ id => $customer_id },
\$orders
);
$c->session->{customer}{orders} = $$orders{result};
$c->session->{customer}{orders} = $$orders{result} if eval { @{$$orders{result}} };
$c->stash->{customer} = $c->session->{customer};
}

@ -203,6 +203,13 @@ h3 {
#contentplace h3 a:after {
content: "";
}
#contentplace a.force_arrows:after {
content: "\bb";
font-weight: bold;
}
#contentplace .p1 h3 {
margin: 10px 0px;
}
/* specify position of edit/lock/delete action links */
#contentplace .actions {

@ -16,12 +16,9 @@
</div>
[% UNLESS Catalyst.session.admin.read_only %]
<h3>Create new account</h3>
<div class="p1">
<form action="/account/create_account" method="post">
<input type="submit" value="Create &#187;" class="but" />
</form>
</div>
<div class="p1">
<h3><a class="force_arrows" href="/account/detail?edit_account=1">Create new account</a></h3>
</div>
[% END %]
[% IF subscriber_list %]

@ -1,7 +1,11 @@
[% IF account.id %]
<h3> VoIP Account
<a class="noarrow" href="detail?account_id=[% account.id %]">
#[% account.id %]</a>
</h3>
[% ELSE %]
<h3>New VoIP Account</h3>
[% END %]
[% UNLESS account.terminate_timestamp || Catalyst.session.admin.read_only %]
<div class="actions">
@ -9,7 +13,15 @@
<a href="detail?account_id=[% account.id %]&amp;edit_account=1" class="aaction">edit</a>
[% END %]
[% IF edit_account %]
[% IF account.id %]
<a href="detail?account_id=[% account.id %]" class="aaction">cancel</a>
[% ELSE %]
[% IF account.customer_id %]
<a href="/customer/detail?customer_id=[% account.customer_id %]#contract" class="aaction">cancel</a>
[% ELSE %]
<a href="/account" class="aaction">cancel</a>
[% END %]
[% END %]
[% ELSE %]
[% IF account.status == "pending" %]
<a href="activate?account_id=[% account.id %]" class="aaction">activate</a>
@ -34,7 +46,7 @@
[% END %]
[% IF messages.accmsg %]<div class="goodmsg">[% messages.accmsg %]</div>[% END %]
[% IF messages.accerr %]<div class="errormsg">[% messages.accerr %]</div>[% END %]
<form action="update_account" method="post">
<form action="save_account" method="post">
<input type="hidden" name="account_id" value="[% account.id %]" />
<table>
<tr><td class="tdkey">ContractID:</td><td>[% account.id %]</td></tr>
@ -43,8 +55,12 @@
<tr>
<td class="tdkey">CustomerID:</td>
<td>
[% IF account.customer_id %]
<a href="/customer/detail?customer_id=[% account.customer_id %]">[% account.customer_id %]</a>
[% IF edit_account %]
<input type="text" name="customer_id" value="[% account.customer_id %]" />
[% ELSE %]
[% IF account.customer_id %]
<a href="/customer/detail?customer_id=[% account.customer_id %]">[% account.customer_id %]</a>
[% END %]
[% END %]
</td>
</tr>
@ -57,7 +73,7 @@
<option value="[% product.handle %]"
[% IF product.handle == account.product %]
selected="selected"
[% END %]>[% product.name %]</option>
[% END %]>[% product.data.name %]</option>
[% END %]
</select>
[% ELSE %]
@ -71,11 +87,14 @@
[% IF edit_account %]
<select size="1" name="billing_profile">
[% FOREACH profile = billing_profiles %]
<option[% IF profile.name == account.billing_profile %] selected="selected"[% END %]>[% profile.name %]</option>
<option value="[% profile.handle %]"
[% IF profile.handle == account.billing_profile %]
selected="selected"
[% END %]>[% profile.data.name %]</option>
[% END %]
</select>
[% ELSE %]
[% account.billing_profile %]
[% account.billing_profile_name %]
[% END %]
</td>
</tr>

@ -17,12 +17,9 @@
</div>
[% UNLESS Catalyst.session.admin.read_only %]
<h3>Create new customer</h3>
<div class="p1">
<form action="/customer/detail?new_customer=1" method="post">
<input type="submit" value="Create &#187;" class="but" />
</form>
</div>
<div class="p1">
<h3><a class="force_arrows" href="/customer/detail?new_customer=1">Create new customer</a></h3>
</div>
[% END %]
[% IF customer_list %]

@ -370,6 +370,12 @@
<h3 id="contract">Contracts</h3>
[% UNLESS Catalyst.session.admin.read_only %]
<div class="actions">
<a href="/account/detail?edit_account=1&customer_id=[% customer.id %]" class="aaction">create new</a>
</div>
[% END %]
<div class="p1">
[% IF customer.contracts %]
<table class="contracts">

Loading…
Cancel
Save