From b82b8a9a61bb95e2f8f157ee930b3a0a30f7a382 Mon Sep 17 00:00:00 2001 From: Daniel Tiefnig Date: Fri, 30 Mar 2012 13:23:45 +0000 Subject: [PATCH] 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. --- lib/admin/Controller/billing.pm | 30 +++++++++++++++++++++++ root/tt/bilprof_edit.tt | 42 ++++++++++++++++++++++++++++++++- 2 files changed, 71 insertions(+), 1 deletion(-) diff --git a/lib/admin/Controller/billing.pm b/lib/admin/Controller/billing.pm index 78b0c43..e9fae32 100644 --- a/lib/admin/Controller/billing.pm +++ b/lib/admin/Controller/billing.pm @@ -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}; diff --git a/root/tt/bilprof_edit.tt b/root/tt/bilprof_edit.tt index 7dbf244..54e012f 100644 --- a/root/tt/bilprof_edit.tt +++ b/root/tt/bilprof_edit.tt @@ -68,7 +68,7 @@
  • Interval Free Cash:
    -
    @@ -76,6 +76,46 @@
  • [% IF messages.free_cash %]
    [% messages.free_cash %]
    [% END %] + +
  • +
    Fraud Limit:
    +
    + +
    +
    + fraud detection threshold, per month +
    +
  • + [% IF messages.fraud_interval_limit %]
    [% messages.fraud_interval_limit %]
    [% END %] +
  • +
    Fraud Lock:
    +
    + +
    +
    + lock accounts if the limit is exceeded +
    +
  • + [% IF messages.fraud_interval_lock %]
    [% messages.fraud_interval_lock %]
    [% END %] +
  • +
    Fraud Notify:
    +
    + +
    +
    + e-mail addresses where notifications about fraud detections are sent to +
    +
  • + [% IF messages.fraud_interval_notify %]
    [% messages.fraud_interval_notify %]
    [% END %] +
  • Currency: