Order-Controller: Workflow Lieferantenauftrag → Preisanfrage
authorMoritz Bunkus <m.bunkus@linet.de>
Wed, 10 Feb 2021 09:39:27 +0000 (10:39 +0100)
committerMoritz Bunkus <m.bunkus@linet.de>
Wed, 10 Feb 2021 09:39:27 +0000 (10:39 +0100)
SL/Controller/Order.pm
SL/DB/Order.pm

index c171803..a79e365 100644 (file)
@@ -600,7 +600,12 @@ sub action_save_and_invoice {
 
 # workflow from sales order to sales quotation
 sub action_sales_quotation {
-  $_[0]->workflow_sales_quotation();
+  $_[0]->workflow_sales_or_request_for_quotation();
+}
+
+# workflow from sales order to sales quotation
+sub action_request_for_quotation {
+  $_[0]->workflow_sales_or_request_for_quotation();
 }
 
 # workflow from sales quotation to sales order
@@ -1585,7 +1590,7 @@ sub save {
   return $errors;
 }
 
-sub workflow_sales_quotation {
+sub workflow_sales_or_request_for_quotation {
   my ($self) = @_;
 
   # always save
@@ -1596,7 +1601,7 @@ sub workflow_sales_quotation {
     return $self->js->render();
   }
 
-  my $destination_type = sales_quotation_type();
+  my $destination_type = $::form->{type} eq sales_order_type() ? sales_quotation_type() : request_quotation_type();
 
   $self->order(SL::DB::Order->new_from($self->order, destination_type => $destination_type));
   $self->{converted_from_oe_id} = delete $::form->{id};
@@ -1791,6 +1796,11 @@ sub setup_edit_action_bar {
           submit   => [ '#order_form', { action => "Order/sales_quotation" } ],
           only_if  => (any { $self->type eq $_ } (sales_order_type())),
         ],
+        action => [
+          t8('Save and RFQ'),
+          submit   => [ '#order_form', { action => "Order/request_for_quotation" } ],
+          only_if  => (any { $self->type eq $_ } (purchase_order_type())),
+        ],
         action => [
           t8('Save and Sales Order'),
           submit   => [ '#order_form', { action => "Order/sales_order" } ],
@@ -2203,8 +2213,6 @@ java script functions
 
 =item * credit limit
 
-=item * more workflows (rfq)
-
 =item * price sources: little symbols showing better price / better discount
 
 =item * select units in input row?
index 4158969..dc4bbeb 100644 (file)
@@ -311,6 +311,7 @@ sub new_from {
     { from => 'sales_order',       to => 'purchase_order',    abbr => 'sopo' },
     { from => 'purchase_order',    to => 'sales_order',       abbr => 'poso' },
     { from => 'sales_order',       to => 'sales_quotation',   abbr => 'sosq' },
+    { from => 'purchase_order',    to => 'request_quotation', abbr => 'porq' },
   );
   my $from_to = (grep { $_->{from} eq $source->type && $_->{to} eq $destination_type} @from_tos)[0];
   croak("Cannot convert from '" . $source->type . "' to '" . $destination_type . "'") if !$from_to;
@@ -355,7 +356,7 @@ sub new_from {
   if ( $is_abbr_any->(qw(soso)) ) {
     $args{periodic_invoices_config} = $source->periodic_invoices_config->clone_and_reset if $source->periodic_invoices_config;
   }
-  if ( $is_abbr_any->(qw(sosq)) ) {
+  if ( $is_abbr_any->(qw(sosq porq)) ) {
     $args{ordnumber} = undef;
     $args{quonumber} = undef;
     $args{reqdate}   = DateTime->today_local->next_workday();