Artikel-Controller: Workflow zu Lieferantenauftrag
authorBernd Bleßmann <bernd@kivitendo-premium.de>
Wed, 20 Apr 2022 14:38:01 +0000 (16:38 +0200)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Mon, 25 Apr 2022 08:48:50 +0000 (10:48 +0200)
Ziemlich simple Implementierung, die das Callback nutzt, das auch für das
Anlegen eines Artikels aus dem Auftrags-Controller heraus genutzt wird.

SL/Controller/Part.pm

index b15b0ad..061a532 100644 (file)
@@ -160,6 +160,19 @@ sub action_save {
   }
 }
 
+sub action_save_and_purchase_order {
+  my ($self) = @_;
+
+  delete $::form->{previousform};
+  $::form->{callback} = $self->url_for(
+    controller   => 'Order',
+    action       => 'return_from_create_part',
+    type         => 'purchase_order',
+  );
+
+  $self->_run_action('save');
+}
+
 sub action_abort {
   my ($self) = @_;
 
@@ -1346,6 +1359,20 @@ sub _setup_form_action_bar {
         ],
       ], # end of combobox "Save"
 
+      combobox => [
+        action => [ t8('Workflow') ],
+        action => [
+          t8('Save and Purchase Order'),
+          submit   => [ '#ic', { action => "Part/save_and_purchase_order" } ],
+          checks   => ['kivi.validate_form'],
+          disabled => !$self->part->id                                    ? t8('The object has not been saved yet.')
+                    : !$may_edit                                          ? t8('You do not have the permissions to access this function.')
+                    : !$::auth->assert('purchase_order_edit', 'may fail') ? t8('You do not have the permissions to access this function.')
+                    :                                                       undef,
+          only_if  => !$::form->{inline_create},
+        ],
+      ],
+
       action => [
         t8('Abort'),
         submit   => [ '#ic', { action => "Part/abort" } ],