X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/3fdb26b1be0178d1a450405f6d1d3976c19b9587..dbbf892309056494e9243df8b7599096ef9e42c5:/SL/Controller/PaymentTerm.pm diff --git a/SL/Controller/PaymentTerm.pm b/SL/Controller/PaymentTerm.pm new file mode 100644 index 000000000..631428edb --- /dev/null +++ b/SL/Controller/PaymentTerm.pm @@ -0,0 +1,117 @@ +package SL::Controller::PaymentTerm; + +use strict; + +use parent qw(SL::Controller::Base); + +use SL::DB::PaymentTerm; +use SL::DB::Language; +use SL::Helper::Flash; + +use Rose::Object::MakeMethods::Generic +( + scalar => [ qw(payment_term languages) ], +); + +__PACKAGE__->run_before('load_payment_term', only => [ qw( edit update destroy move_up move_down) ]); +__PACKAGE__->run_before('load_languages', only => [ qw(new list edit create update) ]); + +# +# actions +# + +sub action_list { + my ($self) = @_; + + $self->render('payment_term/list', + title => $::locale->text('Payment terms'), + PAYMENT_TERMS => SL::DB::Manager::PaymentTerm->get_all_sorted); +} + +sub action_new { + my ($self) = @_; + + $self->{payment_term} = SL::DB::PaymentTerm->new; + $self->render('payment_term/form', title => $::locale->text('Create a new payment term')); +} + +sub action_edit { + my ($self) = @_; + $self->render('payment_term/form', title => $::locale->text('Edit payment term')); +} + +sub action_create { + my ($self) = @_; + + $self->{payment_term} = SL::DB::PaymentTerm->new; + $self->create_or_update; +} + +sub action_update { + my ($self) = @_; + $self->create_or_update; +} + +sub action_destroy { + my ($self) = @_; + + if (eval { $self->{payment_term}->delete; 1; }) { + flash_later('info', $::locale->text('The payment term has been deleted.')); + } else { + flash_later('error', $::locale->text('The payment term is in use and cannot be deleted.')); + } + + $self->redirect_to(action => 'list'); +} + +sub action_move_up { + my ($self) = @_; + $self->{payment_term}->move_position_up; + $self->redirect_to(action => 'list'); +} + +sub action_move_down { + my ($self) = @_; + $self->{payment_term}->move_position_down; + $self->redirect_to(action => 'list'); +} + +# +# helpers +# + +sub create_or_update { + my $self = shift; + my $is_new = !$self->{payment_term}->id; + my $params = delete($::form->{payment_term}) || { }; + + $self->{payment_term}->assign_attributes(%{ $params }); + + my @errors = $self->{payment_term}->validate; + + if (@errors) { + flash('error', @errors); + $self->render('payment_term/form', title => $is_new ? $::locale->text('Create a new payment term') : $::locale->text('Edit payment term')); + return; + } + + $self->{payment_term}->save; + foreach my $language (@{ $self->{languages} }) { + $self->{payment_term}->save_attribute_translation('description_long', $language, $::form->{"translation_" . $language->id}); + } + + flash_later('info', $is_new ? $::locale->text('The payment term has been created.') : $::locale->text('The payment term has been saved.')); + $self->redirect_to(action => 'list'); +} + +sub load_payment_term { + my ($self) = @_; + $self->{payment_term} = SL::DB::PaymentTerm->new(id => $::form->{id})->load; +} + +sub load_languages { + my ($self) = @_; + $self->{languages} = SL::DB::Manager::Language->get_all_sorted; +} + +1;