WebshopApi: falsche sql update Abhängigkeit
[kivitendo-erp.git] / SL / InstanceConfiguration.pm
index 4e05b84..934cd77 100644 (file)
@@ -3,30 +3,47 @@ package SL::InstanceConfiguration;
 use strict;
 
 use Carp;
 use strict;
 
 use Carp;
-use SL::DB::Currency;
-use SL::DB::Default;
+use SL::DBUtils ();
+use SL::System::Process;
 
 use parent qw(Rose::Object);
 use Rose::Object::MakeMethods::Generic (
 
 use parent qw(Rose::Object);
 use Rose::Object::MakeMethods::Generic (
-  'scalar --get_set_init' => [ qw(data currencies) ],
+  'scalar --get_set_init' => [ qw(data currencies default_currency _table_currencies_exists crm_installed) ],
 );
 
 sub init_data {
 );
 
 sub init_data {
-  my $default               = SL::DB::Default->get;
-  my $data                  = { map { $_ => $default->$_ } $default->meta->columns };
-  $data->{default_currency} = $default->currency ? $default->currency->name : undef;
+  return {} if !$::auth->client;
+  return SL::DBUtils::selectfirst_hashref_query($::form, $::form->get_standard_dbh, qq|SELECT * FROM defaults|);
+}
 
 
-  return $data;
+sub init__table_currencies_exists {
+  return 0 if !$::auth->client;
+  return !!(SL::DBUtils::selectall_hashref_query($::form, $::form->get_standard_dbh, qq|SELECT tablename FROM pg_tables WHERE (schemaname = 'public') AND (tablename = 'currencies')|))[0];
 }
 
 sub init_currencies {
 }
 
 sub init_currencies {
-  return [ map { $_->name } @{ SL::DB::Manager::Currency->get_all_sorted } ];
+  my ($self) = @_;
+
+  return [] if !$self->_table_currencies_exists;
+  return [ map { $_->{name} } SL::DBUtils::selectall_hashref_query($::form, $::form->get_standard_dbh, qq|SELECT name FROM currencies ORDER BY id ASC|) ];
+}
+
+sub init_default_currency {
+  my ($self) = @_;
+
+  return undef if !$self->_table_currencies_exists || !$self->data->{currency_id};
+  return (SL::DBUtils::selectfirst_array_query($::form, $::form->get_standard_dbh, qq|SELECT name FROM currencies WHERE id = ?|, $self->data->{currency_id}))[0];
+}
+
+sub init_crm_installed {
+  return -f (SL::System::Process->exe_dir . '/crm/Changelog');
 }
 
 sub reload {
 }
 
 sub reload {
-  my ($self)          = @_;
-  $self->{data}       = $self->init_data;
-  $self->{currencies} = $self->init_currencies;
+  my ($self) = @_;
+
+  delete @{ $self }{qw(data currencies default_currency)};
+
   return $self;
 }
 
   return $self;
 }
 
@@ -42,6 +59,8 @@ sub AUTOLOAD {
   my $method =  $AUTOLOAD;
   $method    =~ s/.*:://;
 
   my $method =  $AUTOLOAD;
   $method    =~ s/.*:://;
 
+  return if $method eq 'DESTROY';
+
   if ($method =~ m/^get_/) {
     $method = substr $method, 4;
     return $self->data->{$method} if exists $self->data->{$method};
   if ($method =~ m/^get_/) {
     $method = substr $method, 4;
     return $self->data->{$method} if exists $self->data->{$method};
@@ -79,9 +98,9 @@ C<$::instance_conf>.
 
 Creates a new instance. Does not read the configuration.
 
 
 Creates a new instance. Does not read the configuration.
 
-=item C<init>
+=item C<crm_installed>
 
 
-Reads the configuration from the database. Returns C<$self>.
+Returns trueish if the CRM component is installed.
 
 =item C<get_currencies>
 
 
 =item C<get_currencies>
 
@@ -104,6 +123,13 @@ Returns the default inventory system, perpetual or periodic
 
 Returns the default profit determination method, balance or income
 
 
 Returns the default profit determination method, balance or income
 
+=item C<get_balance_startdate_method>
+
+Returns the default method for determining the startdate for the balance
+report.
+
+Valid options:
+closed_to start_of_year all_transactions last_ob_or_all_transactions last_ob_or_start_of_year
 
 =item C<get_is_changeable>
 
 
 =item C<get_is_changeable>
 
@@ -164,20 +190,20 @@ corresponding record type (true or false).
 Returns the default behavior for showing the delete button for the
 corresponding record type (true or false).
 
 Returns the default behavior for showing the delete button for the
 corresponding record type (true or false).
 
-=item C<get_default_warehouse_id>
+=item C<get_warehouse_id>
 
 Returns the default warehouse_id
 
 
 Returns the default warehouse_id
 
-=item C<get_default_bin_id>
+=item C<get_bin_id>
 
 Returns the default bin_id
 
 
 Returns the default bin_id
 
-=item C<get_default_warehouse_id_ignore_onhand>
+=item C<get_warehouse_id_ignore_onhand>
 
 Returns the default warehouse_id for transfers without checking the
 current stock quantity
 
 
 Returns the default warehouse_id for transfers without checking the
 current stock quantity
 
-=item C<get_default_bin_id_ignore_onhand>
+=item C<get_bin_id_ignore_onhand>
 
 Returns the default bin_id for transfers without checking the.
 current stock quantity
 
 Returns the default bin_id for transfers without checking the.
 current stock quantity
@@ -198,16 +224,20 @@ Returns the maximum interval value for future bookings
 
 =item C<get_webdav>
 
 
 =item C<get_webdav>
 
-Returns the configuration for webdav
+Returns the configuration for WebDAV
 
 =item C<get_webdav_documents>
 
 
 =item C<get_webdav_documents>
 
-Returns the configuration for storing documents in the corresponding webdav folder
+Returns the configuration for storing documents in the corresponding WebDAV folder
 
 =item C<get_vertreter>
 
 Returns the configuration for "vertreter"
 
 
 =item C<get_vertreter>
 
 Returns the configuration for "vertreter"
 
+=item C<get_feature_experimental>
+
+Returns the configuration for experimental features
+
 =item C<get_parts_show_image>
 
 Returns the configuarion for show image in parts
 =item C<get_parts_show_image>
 
 Returns the configuarion for show image in parts