X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/099fc63b531b1d4495cfab535ffd296d6a62ca0a..2ff1c023218df79f45ab9343dc467e123f5eaa82:/SL/Controller/Order.pm diff --git a/SL/Controller/Order.pm b/SL/Controller/Order.pm index 759334155..496031abf 100644 --- a/SL/Controller/Order.pm +++ b/SL/Controller/Order.pm @@ -81,6 +81,25 @@ sub action_update { ); } +sub action_delete { + my ($self) = @_; + + my $errors = $self->_delete(); + + if (scalar @{ $errors }) { + $self->js->flash('error', $_) foreach @{ $errors }; + return $self->js->render(); + } + + flash_later('info', $::locale->text('The order has been deleted')); + my @redirect_params = ( + action => 'edit', + type => $self->type, + ); + + $self->redirect_to(@redirect_params); +} + sub action_save { my ($self) = @_; @@ -118,10 +137,16 @@ sub action_customer_vendor_changed { $self->js->hide('#shipto_row'); } + $self->order->payment_id($self->order->$cv_method->payment_id); + $self->order->delivery_term_id($self->order->$cv_method->delivery_term_id); + $self->js ->replaceWith('#order_cp_id', $self->build_contact_select) ->replaceWith('#order_shipto_id', $self->build_shipto_select) ->val('#order_taxzone_id', $self->order->taxzone_id) + ->val('#order_payment_id', $self->order->payment_id) + ->val('#order_delivery_term_id', $self->order->delivery_term_id) + ->val('#order_intnotes', $self->order->$cv_method->notes) ->focus('#order_' . $self->cv . '_id') ->render($self); } @@ -343,6 +368,26 @@ sub _get_unalterable_data { } +sub _delete { + my ($self) = @_; + + my $errors = []; + my $db = $self->order->db; + + $db->do_transaction( + sub { + my @spoolfiles = grep { $_ } map { $_->spoolfile } @{ SL::DB::Manager::Status->get_all(where => [ trans_id => $self->order->id ]) }; + $self->order->delete; + my $spool = $::lx_office_conf{paths}->{spool}; + unlink map { "$spool/$_" } @spoolfiles if $spool; + + 1; + }) || push(@{$errors}, $db->error); + + return $errors; +} + + sub _save { my ($self) = @_; @@ -361,18 +406,22 @@ sub _save { sub _pre_render { my ($self) = @_; - $self->{all_taxzones} = SL::DB::Manager::TaxZone->get_all_sorted(); - $self->{all_employees} = SL::DB::Manager::Employee->get_all(where => [ or => [ id => $self->order->employee_id, - deleted => 0 ] ], - sort_by => 'name'); - $self->{all_salesmen} = SL::DB::Manager::Employee->get_all(where => [ or => [ id => $self->order->salesman_id, - deleted => 0 ] ], - sort_by => 'name'); - $self->{all_projects} = SL::DB::Manager::Project->get_all(where => [ or => [ id => $self->order->globalproject_id, - active => 1 ] ], - sort_by => 'projectnumber'); + $self->{all_taxzones} = SL::DB::Manager::TaxZone->get_all_sorted(); + $self->{all_employees} = SL::DB::Manager::Employee->get_all(where => [ or => [ id => $self->order->employee_id, + deleted => 0 ] ], + sort_by => 'name'); + $self->{all_salesmen} = SL::DB::Manager::Employee->get_all(where => [ or => [ id => $self->order->salesman_id, + deleted => 0 ] ], + sort_by => 'name'); + $self->{all_projects} = SL::DB::Manager::Project->get_all(where => [ or => [ id => $self->order->globalproject_id, + active => 1 ] ], + sort_by => 'projectnumber'); + $self->{all_payment_terms} = SL::DB::Manager::PaymentTerm->get_all_sorted(); + $self->{all_delivery_terms} = SL::DB::Manager::DeliveryTerm->get_all_sorted(); $self->{current_employee_id} = SL::DB::Manager::Employee->current->id; + + $::request->{layout}->use_javascript("${_}.js") for qw(ckeditor/ckeditor ckeditor/adapters/jquery); } sub _sales_order_type {