]> wagnertech.de Git - mfinanz.git/blobdiff - SL/DB/Object.pm
Globales Konfigurationsobjekt %lx_office_conf zur Verfügung stellen
[mfinanz.git] / SL / DB / Object.pm
index f9508507e42586fd3ceb13bbc4a5ace51f194fd7..9ac7644f9ae1dc0632f11c90ddf6a4eaa2513706 100644 (file)
@@ -7,11 +7,9 @@ use Rose::DB::Object;
 use List::MoreUtils qw(any);
 
 use SL::DB;
 use List::MoreUtils qw(any);
 
 use SL::DB;
-use SL::DB::Helpers::AttrNumber;
-use SL::DB::Helpers::AttrDate;
-use SL::DB::Helpers::AttrPercent;
-use SL::DB::Helpers::Metadata;
-use SL::DB::Helpers::Manager;
+use SL::DB::Helper::Attr;
+use SL::DB::Helper::Metadata;
+use SL::DB::Helper::Manager;
 
 use base qw(Rose::DB::Object);
 
 
 use base qw(Rose::DB::Object);
 
@@ -27,13 +25,13 @@ sub new {
 sub init_db {
   my $class_or_self = shift;
   my $class         = ref($class_or_self) || $class_or_self;
 sub init_db {
   my $class_or_self = shift;
   my $class         = ref($class_or_self) || $class_or_self;
-  my $type          = 'LXOFFICE';
+  my $type          = $class =~ m/::Auth/ ? 'LXOFFICE_AUTH' : 'LXOFFICE';
 
   return SL::DB::create(undef, $type);
 }
 
 sub meta_class {
 
   return SL::DB::create(undef, $type);
 }
 
 sub meta_class {
-  return 'SL::DB::Helpers::Metadata';
+  return 'SL::DB::Helper::Metadata';
 }
 
 sub _get_manager_class {
 }
 
 sub _get_manager_class {
@@ -63,9 +61,10 @@ sub _assign_attributes {
 
   while (my ($attribute, $value) = each %attributes) {
     my $type = lc($types{$attribute} || 'text');
 
   while (my ($attribute, $value) = each %attributes) {
     my $type = lc($types{$attribute} || 'text');
-    $value   = $type eq 'boolean'        ? ($value ? 't' : 'f')
-             : $text_column_types{$type} ? $value
-             :                             ($value || undef);
+    $value   = $type eq 'boolean'                ? ($value ? 't' : 'f')
+             : $text_column_types{$type}         ? $value
+             : defined($value) && ($value eq '') ? undef
+             :                                     $value;
     $self->$attribute($value);
   }
 
     $self->$attribute($value);
   }
 
@@ -80,32 +79,10 @@ sub update_attributes {
   return $self;
 }
 
   return $self;
 }
 
-sub make_attr_helper {
-  my ($self) = @_;
-  my $package = ref $self || $self;
-
-  for my $col ($package->meta->columns) {
-    next if $col->primary_key_position; # don't make attr helper for primary keys
-
-    attr_number ($package, $col->name, -2) if $col->type =~ /numeric | real | float/xi;
-    attr_percent($package, $col->name, -2) if $col->type =~ /numeric | real | float/xi;
-    attr_number ($package, $col->name,  0) if $col->type =~ /int/xi;
-    attr_date   ($package, $col->name)     if $col->type =~ /date | timestamp/xi;
-  }
-
-  return $self;
-}
-
-sub attr_number {
-  SL::DB::Helpers::AttrNumber::define(@_);
-}
-
-sub attr_date {
-  SL::DB::Helpers::AttrDate::define(@_);
-}
-
-sub attr_percent {
-  SL::DB::Helpers::AttrPercent::define(@_);
+sub call_sub {
+  my $self = shift;
+  my $sub  = shift;
+  return $self->$sub(@_);
 }
 
 1;
 }
 
 1;
@@ -161,6 +138,14 @@ Returns the manager package for the object or class that it is called
 on. Can be used from methods in this package for getting the actual
 object's manager.
 
 on. Can be used from methods in this package for getting the actual
 object's manager.
 
+=item C<call_sub $name, @args>
+
+Calls the sub C<$name> on C<$self> with the arguments C<@args> and
+returns its result. This is meant for situations in which the sub's
+name is a composite, e.g.
+
+  my $chart_id = $buchungsgruppe->call_sub(($is_sales ? "income" : "expense") . "_accno_id_${taxzone_id}");
+
 =back
 
 =head1 AUTHOR
 =back
 
 =head1 AUTHOR