X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/9d218dc8b07ff4f9be9589cb3246e50653e2b6e2..b04128a335772d4cb9a30b0fde52413796981de0:/SL/InstanceConfiguration.pm diff --git a/SL/InstanceConfiguration.pm b/SL/InstanceConfiguration.pm index ac14b0ae0..084f0ac94 100644 --- a/SL/InstanceConfiguration.pm +++ b/SL/InstanceConfiguration.pm @@ -2,146 +2,73 @@ 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|); - - my $curr = $self->{data}->{curr} || ''; - $curr =~ s/\s+//g; - $self->{currencies} = [ split m/:/, $curr ]; - - return $self; -} - -sub get_default_currency { - my ($self) = @_; - - return ($self->get_currencies)[0]; -} - -sub get_currencies { - my ($self) = @_; - - return $self->{currencies} ? @{ $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 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_ir_changeable { +sub init_currencies { my ($self) = @_; - return $self->{data}->{ir_changeable}; -} -sub get_ar_changeable { - my ($self) = @_; - return $self->{data}->{ar_changeable}; + 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_ap_changeable { +sub init_default_currency { my ($self) = @_; - return $self->{data}->{ap_changeable}; -} -sub get_gl_changeable { - my ($self) = @_; - return $self->{data}->{gl_changeable}; + 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_datev_check_on_sales_invoice { - my ($self) = @_; - return $self->{data}->{datev_check_on_sales_invoice}; +sub init_crm_installed { + return -f (SL::System::Process->exe_dir . '/crm/Changelog'); } -sub get_datev_check_on_purchase_invoice { +sub reload { 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}; -} + delete @{ $self }{qw(data currencies default_currency)}; -sub get_datev_check_on_gl_transaction { - my ($self) = @_; - return $self->{data}->{datev_check_on_gl_transaction}; + return $self; } -sub get_show_bestbefore { +sub get_currencies { my ($self) = @_; - return $self->{data}->{show_bestbefore}; + return @{ $self->currencies }; } -sub get_is_show_mark_as_paid { - my ($self) = @_; - return $self->{data}->{is_show_mark_as_paid}; -} +sub AUTOLOAD { + our $AUTOLOAD; -sub get_ir_show_mark_as_paid { - my ($self) = @_; - return $self->{data}->{ir_show_mark_as_paid}; -} + my $self = shift; + my $method = $AUTOLOAD; + $method =~ s/.*:://; -sub get_ar_show_mark_as_paid { - my ($self) = @_; - return $self->{data}->{ar_show_mark_as_paid}; -} + return if $method eq 'DESTROY'; -sub get_ap_show_mark_as_paid { - my ($self) = @_; - return $self->{data}->{ap_show_mark_as_paid}; -} + if ($method =~ m/^get_/) { + $method = substr $method, 4; + return $self->data->{$method} if exists $self->data->{$method}; + croak "Invalid method 'get_${method}'"; + } -sub get_sales_order_show_delete { - my ($self) = @_; - return $self->{data}->{sales_order_show_delete}; -} - -sub get_purchase_order_show_delete { - my ($self) = @_; - return $self->{data}->{purchase_order_show_delete}; -} - -sub get_sales_delivery_order_show_delete { - my ($self) = @_; - return $self->{data}->{sales_delivery_order_show_delete}; -} - -sub get_purchase_delivery_order_show_delete { - my ($self) = @_; - return $self->{data}->{purchase_delivery_order_show_delete}; + croak "Invalid method '${method}'" if !$self->can($method); + return $self->$method(@_); } 1; @@ -158,7 +85,7 @@ SL::InstanceConfiguration - Provide instance-specific configuration data =head1 SYNOPSIS -Lx-Office has two configuration levels: installation specific +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>. @@ -167,95 +94,10 @@ C<$::instance_conf>. =over 4 -=item C - -Creates a new instance. Does not read the configuration. - -=item C - -Reads the configuration from the database. Returns C<$self>. - =item C Returns an array of configured currencies. -=item C - -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 - -=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). - =back =head1 BUGS