X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FInstanceConfiguration.pm;h=4c767961da3d3fe31bb3724ce017de86a4953ebc;hb=3782a90c336bc6c506f572e607c8526cb5e79ea3;hp=b8dbee6ca0d6173acd60cfa7b29a6f3943b6b770;hpb=ad9811f427c748aae4874b9f746fdce3568d94ef;p=kivitendo-erp.git diff --git a/SL/InstanceConfiguration.pm b/SL/InstanceConfiguration.pm index b8dbee6ca..4c767961d 100644 --- a/SL/InstanceConfiguration.pm +++ b/SL/InstanceConfiguration.pm @@ -2,36 +2,83 @@ package SL::InstanceConfiguration; use strict; -use SL::DBUtils; - -sub new { - my ($class) = @_; +use Carp; +use SL::DBUtils (); +use SL::System::Process; + +use parent qw(Rose::Object); +use Rose::Object::MakeMethods::Generic ( + 'scalar --get_set_init' => [ qw(data currencies default_currency _table_currencies_exists crm_installed) ], +); + +sub init_data { + return {} if !$::auth->client; + return SL::DBUtils::selectfirst_hashref_query($::form, $::form->get_standard_dbh, qq|SELECT * FROM defaults|); +} - return bless {}, $class; +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 { +sub init_currencies { my ($self) = @_; - $self->{data} = selectfirst_hashref_query($::form, $::form->get_standard_dbh, qq|SELECT * FROM defaults|); + 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|) ]; +} - my $curr = $self->{data}->{curr} || ''; - $curr =~ s/\s+//g; - $self->{currencies} = [ split m/:/, $curr ]; +sub init_default_currency { + my ($self) = @_; - return $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 get_default_currency { +sub init_crm_installed { + return -f (SL::System::Process->exe_dir . '/crm/Changelog'); +} + +sub reload { my ($self) = @_; - return ($self->get_currencies)[0]; + delete @{ $self }{qw(data currencies default_currency)}; + + return $self; } sub get_currencies { my ($self) = @_; + return @{ $self->currencies }; +} + +sub get_address { + # Compatibility function: back in the day there was only a single + # address field. + my ($self) = @_; + + my $zipcode_city = join ' ', grep { $_ } ($self->get_address_zipcode, $self->get_address_city); - return $self->{currencies} ? @{ $self->{currencies} } : (); + return join "\n", grep { $_ } ($self->get_address_street1, $self->get_address_street2, $zipcode_city, $self->get_address_country); +} + +sub AUTOLOAD { + our $AUTOLOAD; + + my $self = shift; + 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}; + croak "Invalid method 'get_${method}'"; + } + + croak "Invalid method '${method}'" if !$self->can($method); + return $self->$method(@_); } 1; @@ -48,8 +95,8 @@ SL::InstanceConfiguration - Provide instance-specific configuration data =head1 SYNOPSIS -Lx-Office has two configuration levels: installation specific -(provided by the global variable C<%::lxoffice_conf>) and instance +kivitendo has two configuration levels: installation specific +(provided by the global variable C<%::lx_office_conf>) and instance specific. The latter is provided by a global instance of this class, C<$::instance_conf>. @@ -61,9 +108,9 @@ C<$::instance_conf>. Creates a new instance. Does not read the configuration. -=item C +=item C -Reads the configuration from the database. Returns C<$self>. +Returns trueish if the CRM component is installed. =item C @@ -74,6 +121,147 @@ Returns an array of configured currencies. Returns the default currency or undef if no currency has been configured. +=item C + +Returns the default accounting method, accrual or cash + +=item C + +Returns the default inventory system, perpetual or periodic + +=item C + +Returns the default profit determination method, balance or income + +=item C + +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 + +=item C + +=item C + +=item C + +=item C + +Returns if and when these record types are changeable or deleteable after +posting. 0 means never, 1 means always and 2 means on the same day. + +=item C + +Returns true if datev check should be performed on sales invoices + +=item C + +Returns true if datev check should be performed on purchase invoices + +=item C + +Returns true if datev check should be performed on ar transactions + +=item C + +Returns true if datev check should be performed on ap transactions + +=item C + +Returns true if datev check should be performed on gl transactions + +=item C + +Returns the default behavior for showing best before date, true or false + +=item C + +=item C + +=item C + +=item C + +Returns the default behavior for showing the "mark as paid" button for the +corresponding record type (true or false). + +=item C + +=item C + +=item C + +=item C + +Returns the default behavior for showing the delete button for the +corresponding record type (true or false). + +=item C + +Returns the default warehouse_id + +=item C + +Returns the default bin_id + +=item C + +Returns the default warehouse_id for transfers without checking the +current stock quantity + +=item C + +Returns the default bin_id for transfers without checking the +current stock quantity + +=item C + +=item C + +=item C + +Returns the default behavior for the transfer out default feature (true or false) + +=item C + +Returns the maximum interval value for future bookings + +=item C + +Returns the configuration for WebDAV + +=item C + +Returns the configuration for storing documents in the corresponding WebDAV folder + +=item C + +Returns the configuration for "vertreter" + +=item C + +Returns the configuration for experimental feature "assortment" + +=item C + +Returns the configuration for the experimental feature "order" + +=item C + +Returns the configuarion for show image in parts + +=item C + +Returns the css format string for images shown in parts + +=item C + +Returns the configuration for showing the picture in the results when you search for parts + =back =head1 BUGS