add fraud parameters to billing profile web form

This is more or less untested and should not be enabled on production
systems yet. Also the cronjob is quite buggy as far as I can see.
3.4
Daniel Tiefnig 13 years ago
parent 3e3b1910d0
commit b82b8a9a61

@ -223,6 +223,10 @@ sub edit_bilprof : Local {
sprintf "%.2f", $c->stash->{bilprof}{data}{interval_charge} /= 100;
$c->stash->{bilprof}{data}{interval_free_cash} =
sprintf "%.2f", $c->stash->{bilprof}{data}{interval_free_cash} /= 100;
$c->stash->{bilprof}{data}{fraud_interval_limit} =
sprintf "%.2f", $c->stash->{bilprof}{data}{fraud_interval_limit} /= 100;
$c->stash->{bilprof}{data}{fraud_interval_notify} =
eval { join ', ', @{$c->stash->{bilprof}{data}{fraud_interval_notify}} };
} elsif($bilprof) {
return unless $c->model('Provisioning')->call_prov( $c, 'billing', 'get_billing_profile',
{ handle => $bilprof },
@ -232,6 +236,10 @@ sub edit_bilprof : Local {
sprintf "%.2f", $c->stash->{bilprof}{data}{interval_charge} /= 100;
$c->stash->{bilprof}{data}{interval_free_cash} =
sprintf "%.2f", $c->stash->{bilprof}{data}{interval_free_cash} /= 100;
$c->stash->{bilprof}{data}{fraud_interval_limit} =
sprintf "%.2f", $c->stash->{bilprof}{data}{fraud_interval_limit} /= 100;
$c->stash->{bilprof}{data}{fraud_interval_notify} =
eval { join ', ', @{$c->stash->{bilprof}{data}{fraud_interval_notify}} };
}
$c->stash->{handle} = $bilprof if $bilprof;
@ -299,6 +307,28 @@ sub do_edit_bilprof : Local {
$settings{interval_free_cash} = 0;
}
$settings{fraud_interval_limit} = $c->request->params->{fraud_interval_limit};
if(length $settings{fraud_interval_limit}) {
if($settings{fraud_interval_limit} =~ /^[+]?\d+(?:[.,]\d\d?)?$/) {
$settings{fraud_interval_limit} =~ s/^\+//;
$settings{interval_free_cash} =~ s/,/./;
$settings{fraud_interval_limit} *= 100;
} else {
$messages{fraud_interval_limit} = 'Client.Syntax.CashValue';
}
} else {
delete $settings{fraud_interval_limit};
}
$settings{fraud_interval_lock} = $c->request->params->{fraud_interval_lock}
if $c->request->params->{fraud_interval_lock};
$settings{fraud_interval_notify} = $c->request->params->{fraud_interval_notify}
if $c->request->params->{fraud_interval_notify};
if(length $settings{fraud_interval_notify}) {
@{$settings{fraud_interval_notify}} = split /\s*,\s*/, $settings{fraud_interval_notify};
}
$settings{currency} = $c->request->params->{currency} || '';
$settings{vat_rate} = $c->request->params->{vat_rate};

@ -68,7 +68,7 @@
<li class="ui-state-default">
<div class="span-3">Interval Free Cash:</div>
<div class="span-6">
<input type="text" name="interval_free_cash" title="float, specifying Euro"
<input type="text" name="interval_free_cash" title="float, specifying EUR, USD, etc."
value="[% bilprof.data.interval_free_cash %]" />
</div>
<div class="span-6 last">
@ -76,6 +76,46 @@
</div>
</li>
[% IF messages.free_cash %]<div class="error">[% messages.free_cash %]</div>[% END %]
<li class="ui-state-default">
<div class="span-3">Fraud Limit:</div>
<div class="span-6">
<input type="text" name="fraud_interval_limit" title="float, specifying EUR, USD, etc."
value="[% bilprof.data.fraud_interval_limit %]" />
</div>
<div class="span-6 last">
fraud detection threshold, per month
</div>
</li>
[% IF messages.fraud_interval_limit %]<div class="error">[% messages.fraud_interval_limit %]</div>[% END %]
<li class="ui-state-default">
<div class="span-3">Fraud Lock:</div>
<div class="span-6">
<select size="1" name="fraud_interval_lock" title="the lock level">
<option value="none" [% IF bilprof.data.fraud_interval_lock == 'none' %]selected="selected"[% END %]>none</option>
<option value="foreign" [% IF bilprof.data.fraud_interval_lock == 'foreign' %]selected="selected"[% END %]>foreign</option>
<option value="outgoing" [% IF bilprof.data.fraud_interval_lock == 'outgoing' %]selected="selected"[% END %]>outgoing</option>
<option value="incoming" [% IF bilprof.data.fraud_interval_lock == 'incoming' %]selected="selected"[% END %]>incoming</option>
<option value="global" [% IF bilprof.data.fraud_interval_lock == 'global' %]selected="selected"[% END %]>global</option>
</select>
</div>
<div class="span-6 last">
lock accounts if the limit is exceeded
</div>
</li>
[% IF messages.fraud_interval_lock %]<div class="error">[% messages.fraud_interval_lock %]</div>[% END %]
<li class="ui-state-default">
<div class="span-3">Fraud Notify:</div>
<div class="span-6">
<input type="text" name="fraud_interval_notify" title="string, a list of e-mail addreses separated by comma"
value="[% bilprof.data.fraud_interval_notify %]" />
</div>
<div class="span-6 last">
e-mail addresses where notifications about fraud detections are sent to
</div>
</li>
[% IF messages.fraud_interval_notify %]<div class="error">[% messages.fraud_interval_notify %]</div>[% END %]
<li class="ui-state-default">
<div class="span-3">Currency:</div>
<div class="span-6">

Loading…
Cancel
Save