X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FInstanceConfiguration.pm;h=4c767961da3d3fe31bb3724ce017de86a4953ebc;hb=1b032ef45d886922f1fe347ec234c9b0c8c50efd;hp=97ece8670a3d77153aee14a034a97954d0ba9aa5;hpb=52d18c0134db2b418fe119723958efe8e79ac4f3;p=kivitendo-erp.git diff --git a/SL/InstanceConfiguration.pm b/SL/InstanceConfiguration.pm index 97ece8670..4c767961d 100644 --- a/SL/InstanceConfiguration.pm +++ b/SL/InstanceConfiguration.pm @@ -2,184 +2,85 @@ package SL::InstanceConfiguration; use strict; -use SL::DBUtils; +use Carp; +use SL::DBUtils (); +use SL::System::Process; -sub new { - my ($class) = @_; +use parent qw(Rose::Object); +use Rose::Object::MakeMethods::Generic ( + 'scalar --get_set_init' => [ qw(data currencies default_currency _table_currencies_exists crm_installed) ], +); - return bless {}, $class; +sub init_data { + return {} if !$::auth->client; + return SL::DBUtils::selectfirst_hashref_query($::form, $::form->get_standard_dbh, qq|SELECT * FROM defaults|); } -sub init { - my ($self) = @_; - - $self->{data} = selectfirst_hashref_query($::form, $::form->get_standard_dbh, qq|SELECT * FROM defaults|); - - #To get all currencies and the default currency: - ($self->{data}->{curr}) = selectrow_query($::form, $::form->get_standard_dbh, qq|SELECT name AS curr FROM currencies WHERE id = (SELECT currency_id FROM defaults)|); - $self->{currencies} = [ map { $_->{name} } selectall_hashref_query($::form, $::form->get_standard_dbh, qq|SELECT name FROM currencies ORDER BY id|) ]; - - return $self; -} - -sub get_default_currency { - my ($self) = @_; - - return $self->{data}->{curr}; -} - -sub get_currencies { - my ($self) = @_; - - return @{ $self->{currencies} }; -} - -sub get_accounting_method { - my ($self) = @_; - return $self->{data}->{accounting_method}; -} - -sub get_inventory_system { - my ($self) = @_; - return $self->{data}->{inventory_system}; -} - -sub get_profit_determination { - my ($self) = @_; - return $self->{data}->{profit_determination}; -} - -sub get_is_changeable { - my ($self) = @_; - return $self->{data}->{is_changeable}; -} - -sub get_ir_changeable { - my ($self) = @_; - return $self->{data}->{ir_changeable}; -} - -sub get_ar_changeable { - my ($self) = @_; - return $self->{data}->{ar_changeable}; -} - -sub get_ap_changeable { - my ($self) = @_; - return $self->{data}->{ap_changeable}; -} - -sub get_gl_changeable { - my ($self) = @_; - return $self->{data}->{gl_changeable}; -} - -sub get_datev_check_on_sales_invoice { - my ($self) = @_; - return $self->{data}->{datev_check_on_sales_invoice}; -} - -sub get_datev_check_on_purchase_invoice { - my ($self) = @_; - return $self->{data}->{datev_check_on_purchase_invoice}; -} - -sub get_datev_check_on_ar_transaction { - my ($self) = @_; - return $self->{data}->{datev_check_on_ar_transaction}; -} - -sub get_datev_check_on_ap_transaction { - my ($self) = @_; - return $self->{data}->{datev_check_on_ap_transaction}; +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 get_datev_check_on_gl_transaction { +sub init_currencies { my ($self) = @_; - return $self->{data}->{datev_check_on_gl_transaction}; -} -sub get_show_bestbefore { - my ($self) = @_; - return $self->{data}->{show_bestbefore}; + 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 get_is_show_mark_as_paid { +sub init_default_currency { my ($self) = @_; - return $self->{data}->{is_show_mark_as_paid}; -} -sub get_ir_show_mark_as_paid { - my ($self) = @_; - return $self->{data}->{ir_show_mark_as_paid}; + 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_ar_show_mark_as_paid { - my ($self) = @_; - return $self->{data}->{ar_show_mark_as_paid}; +sub init_crm_installed { + return -f (SL::System::Process->exe_dir . '/crm/Changelog'); } -sub get_ap_show_mark_as_paid { +sub reload { my ($self) = @_; - return $self->{data}->{ap_show_mark_as_paid}; -} -sub get_sales_order_show_delete { - my ($self) = @_; - return $self->{data}->{sales_order_show_delete}; -} + delete @{ $self }{qw(data currencies default_currency)}; -sub get_purchase_order_show_delete { - my ($self) = @_; - return $self->{data}->{purchase_order_show_delete}; + return $self; } -sub get_sales_delivery_order_show_delete { +sub get_currencies { my ($self) = @_; - return $self->{data}->{sales_delivery_order_show_delete}; + return @{ $self->currencies }; } -sub get_purchase_delivery_order_show_delete { +sub get_address { + # Compatibility function: back in the day there was only a single + # address field. my ($self) = @_; - return $self->{data}->{purchase_delivery_order_show_delete}; -} -sub get_default_warehouse_id { - my ($self) = @_; - return ($self->{data}->{warehouse_id}); -} + my $zipcode_city = join ' ', grep { $_ } ($self->get_address_zipcode, $self->get_address_city); -sub get_default_bin_id { - my ($self) = @_; - return ($self->{data}->{bin_id}); -} -sub get_default_warehouse_id_ignore_onhand { - my ($self) = @_; - return ($self->{data}->{warehouse_id_ignore_onhand}); + return join "\n", grep { $_ } ($self->get_address_street1, $self->get_address_street2, $zipcode_city, $self->get_address_country); } -sub get_default_bin_id_ignore_onhand { - my ($self) = @_; - return ($self->{data}->{bin_id_ignore_onhand}); -} +sub AUTOLOAD { + our $AUTOLOAD; + my $self = shift; + my $method = $AUTOLOAD; + $method =~ s/.*:://; -sub get_transfer_default { - my ($self) = @_; - return ($self->{data}->{transfer_default}); -} + return if $method eq 'DESTROY'; -sub get_transfer_default_use_master_default_bin { - my ($self) = @_; - return ($self->{data}->{transfer_default_use_master_default_bin}); -} + if ($method =~ m/^get_/) { + $method = substr $method, 4; + return $self->data->{$method} if exists $self->data->{$method}; + croak "Invalid method 'get_${method}'"; + } -sub get_transfer_default_ignore_onhand { - my ($self) = @_; - return ($self->{data}->{transfer_default_ignore_onhand}); + croak "Invalid method '${method}'" if !$self->can($method); + return $self->$method(@_); } - 1; __END__ @@ -207,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 @@ -232,6 +133,13 @@ Returns the default inventory system, perpetual or periodic 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 @@ -278,7 +186,7 @@ Returns the default behavior for showing best before date, true or false =item C -Returns the default behavior for showing the mark as paid button for the +Returns the default behavior for showing the "mark as paid" button for the corresponding record type (true or false). =item C @@ -292,26 +200,24 @@ 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 +=item C Returns the default warehouse_id -=item C +=item C Returns the default bin_id -=item C +=item C Returns the default warehouse_id for transfers without checking the current stock quantity -=item C +=item C -Returns the default bin_id for transfers without checking the. +Returns the default bin_id for transfers without checking the current stock quantity - - =item C =item C @@ -320,6 +226,41 @@ current stock quantity 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