]> wagnertech.de Git - mfinanz.git/blobdiff - SL/DB/Helpers/AttrPercent.pm
RDBO Support.
[mfinanz.git] / SL / DB / Helpers / AttrPercent.pm
diff --git a/SL/DB/Helpers/AttrPercent.pm b/SL/DB/Helpers/AttrPercent.pm
new file mode 100644 (file)
index 0000000..24f8164
--- /dev/null
@@ -0,0 +1,37 @@
+package SL::DB::Helpers::AttrPercent;
+
+use strict;
+
+use Carp;
+use English;
+
+sub define {
+  my $package     = shift;
+  my $attribute   = shift;
+  my %params      = @_;
+
+  $params{places} = 2 if !defined($params{places});
+
+  my $code        = <<CODE;
+package ${package};
+
+sub ${attribute}_as_percent {
+  my \$self = shift;
+
+  if (scalar \@_) {
+    \$self->${attribute}(\$::form->parse_amount(\\\%::myconfig, \$_[0]) / 100);
+  }
+
+  return \$::form->format_amount(\\\%::myconfig, 100 * \$self->${attribute}, $params{places});
+}
+
+1;
+CODE
+
+  eval $code;
+  croak "Defining '${attribute}_as_number' failed: $EVAL_ERROR" if $EVAL_ERROR;
+
+  return 1;
+}
+
+1;