sub action_print {
my ($self) = @_;
+ my $errors = $self->save();
+
+ if (scalar @{ $errors }) {
+ $self->js->flash('error', $_) foreach @{ $errors };
+ return $self->js->render();
+ }
+
+ $self->js->val('#id', $self->order->id)
+ ->val('#order_' . $self->nr_key(), $self->order->number);
+
my $format = $::form->{print_options}->{format};
my $media = $::form->{print_options}->{media};
my $formname = $::form->{print_options}->{formname};
sub action_send_email {
my ($self) = @_;
+ my $errors = $self->save();
+
+ if (scalar @{ $errors }) {
+ $self->js->run('kivi.Order.close_email_dialog');
+ $self->js->flash('error', $_) foreach @{ $errors };
+ return $self->js->render();
+ }
+
+ $self->js->val('#id', $self->order->id)
+ ->val('#order_' . $self->nr_key(), $self->order->number);
+
my $email_form = delete $::form->{email_form};
my %field_names = (to => 'email');
$intnotes .= t8('Subject') . ": " . $::form->{subject} . "\n\n";
$intnotes .= t8('Message') . ": " . $::form->{message};
+ $self->order->update_attributes(intnotes => $intnotes);
+
$self->js
->val('#order_intnotes', $intnotes)
->run('kivi.Order.close_email_dialog')
->val( '#order_payment_id', $self->order->payment_id)
->val( '#order_delivery_term_id', $self->order->delivery_term_id)
->val( '#order_intnotes', $self->order->intnotes)
+ ->val( '#language_id', $self->order->$cv_method->language_id)
->focus( '#order_' . $self->cv . '_id');
$self->js_redisplay_amounts_and_taxes;
$order->assign_attributes(%{$::form->{order}});
- my $periodic_invoices_config = make_periodic_invoices_config_from_yaml($form_periodic_invoices_config);
- $order->periodic_invoices_config($periodic_invoices_config) if $periodic_invoices_config;
+ if (my $periodic_invoices_config_attrs = $form_periodic_invoices_config ? YAML::Load($form_periodic_invoices_config) : undef) {
+ my $periodic_invoices_config = $order->periodic_invoices_config || $order->periodic_invoices_config(SL::DB::PeriodicInvoicesConfig->new);
+ $periodic_invoices_config->assign_attributes(%$periodic_invoices_config_attrs);
+ }
# remove deleted items
$self->item_ids_to_delete([]);
# link records
if ($::form->{converted_from_oe_id}) {
- SL::DB::Order->new(id => $::form->{converted_from_oe_id})->load->link_to_record($self->order);
+ my $src = SL::DB::Order->new(id => $::form->{converted_from_oe_id})->load;
+ # implement OE::_close_quotations_rfqs - this a 1 : 1 connection
+ # close only if workflow: quotation -> order. TODO test case
+ $src->update_attributes(closed => 1) if $src->type =~ /_quotation$/;
+ $src->link_to_record($self->order);
if (scalar @{ $::form->{converted_from_orderitems_ids} || [] }) {
my $idx = 0;
t8('Export'),
],
action => [
- t8('Print'),
- call => [ 'kivi.Order.show_print_options' ],
+ t8('Save and print'),
+ call => [ 'kivi.Order.show_print_options', $::instance_conf->get_order_warn_duplicate_parts ],
],
action => [
- t8('E-mail'),
- call => [ 'kivi.Order.email' ],
+ t8('Save and E-mail'),
+ call => [ 'kivi.Order.email', $::instance_conf->get_order_warn_duplicate_parts ],
],
action => [
t8('Download attachments of all parts'),
=item *
-Save order only on "save" (and "save and delivery order"-workflow). No
-hidden save on "print" or "email".
-
-=item *
-
Item list in a scrollable area, so that the workflow buttons stay at
the bottom.