]> wagnertech.de Git - kivitendo-erp.git/blobdiff - SL/Controller/Order.pm
Auftrags-Controller: Zahlungs- und Lieferbedingungen
[kivitendo-erp.git] / SL / Controller / Order.pm
index 75933415532b91fc42489a65e7a81605af18eacf..8ecfaf6c90a5da5aa56e57b00e93ec968ffdc061 100644 (file)
@@ -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,15 @@ 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)
     ->focus('#order_' . $self->cv . '_id')
     ->render($self);
 }
@@ -343,6 +367,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,16 +405,18 @@ 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;
 }