# 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
return $errors;
}
-sub workflow_sales_quotation {
+sub workflow_sales_or_request_for_quotation {
my ($self) = @_;
# always save
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};
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" } ],
=item * credit limit
-=item * more workflows (rfq)
-
=item * price sources: little symbols showing better price / better discount
=item * select units in input row?
{ 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;
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();