X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/0f862705f7b8ad4596786c6c243ae7b2e89a3843..39ef020d434d058dd24fbd0785cd50467be89594:/SL/Controller/Order.pm diff --git a/SL/Controller/Order.pm b/SL/Controller/Order.pm index fc05b2d16..b9d940a7c 100644 --- a/SL/Controller/Order.pm +++ b/SL/Controller/Order.pm @@ -350,9 +350,16 @@ sub action_print { } # open the email dialog -sub action_show_email_dialog { +sub action_save_and_show_email_dialog { my ($self) = @_; + my $errors = $self->save(); + + if (scalar @{ $errors }) { + $self->js->flash('error', $_) foreach @{ $errors }; + return $self->js->render(); + } + my $cv_method = $self->cv; if (!$self->order->$cv_method) { @@ -373,6 +380,7 @@ sub action_show_email_dialog { $form->{type} = $self->type; $form->{language} = '_' . $self->order->language->template_code if $self->order->language; $form->{language_id} = $self->order->language->id if $self->order->language; + $form->{cusordnumber} = $self->order->cusordnumber; $form->{format} = 'pdf'; $email_form->{subject} = $form->generate_email_subject(); @@ -444,6 +452,7 @@ sub action_send_email { $::form->{tmpdir} = $sfile->get_path; # for Form::cleanup which may be called in Form::send_email } + $::form->{id} = $self->order->id; # this is used in SL::Mailer to create a linked record to the mail $::form->send_email(\%::myconfig, 'pdf'); # internal notes @@ -1692,6 +1701,14 @@ sub workflow_sales_or_purchase_order { : $::form->{type} eq sales_order_type() ? purchase_order_type() : ''; + # check for direct delivery + # copy shipto in custom shipto (custom shipto will be copied by new_from() in case) + my $custom_shipto; + if ( $::form->{type} eq sales_order_type() && $destination_type eq purchase_order_type() + && $::form->{use_shipto} && $self->order->shipto) { + $custom_shipto = $self->order->shipto->clone('SL::DB::Order'); + } + $self->order(SL::DB::Order->new_from($self->order, destination_type => $destination_type)); $self->{converted_from_oe_id} = delete $::form->{id}; @@ -1700,6 +1717,15 @@ sub workflow_sales_or_purchase_order { $item->{new_fake_id} = join('_', 'new', Time::HiRes::gettimeofday(), int rand 1000000000000); } + if ($::form->{type} eq sales_order_type() && $destination_type eq purchase_order_type()) { + if ($::form->{use_shipto}) { + $self->order->custom_shipto($custom_shipto) if $custom_shipto; + } else { + # remove any custom shipto if not wanted + $self->order->custom_shipto(SL::DB::Shipto->new(module => 'OE', custom_variables => [])); + } + } + # change form type $::form->{type} = $destination_type; $self->type($self->init_type); @@ -1825,8 +1851,8 @@ sub setup_edit_action_bar { ], action => [ t8('Save and Purchase Order'), - submit => [ '#order_form', { action => "Order/purchase_order" } ], - only_if => (any { $self->type eq $_ } (sales_order_type(), request_quotation_type())), + call => [ 'kivi.Order.purchase_order_check_for_direct_delivery' ], + only_if => (any { $self->type eq $_ } (sales_order_type(), request_quotation_type())), ], action => [ t8('Save and Delivery Order'), @@ -1859,7 +1885,8 @@ sub setup_edit_action_bar { ], action => [ t8('Save and E-mail'), - call => [ 'kivi.Order.email', $::instance_conf->get_order_warn_duplicate_parts ], + call => [ 'kivi.Order.save', 'save_and_show_email_dialog', $::instance_conf->get_order_warn_duplicate_parts ], + disabled => !$self->order->id ? t8('This object has not been saved yet.') : undef, ], action => [ t8('Download attachments of all parts'),