X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/b7afa934d4ce656536645a97253e4d7ec27e380c..9afde77c737bb060dfc2b57e240c15dbdbb18366:/SL/Controller/Order.pm diff --git a/SL/Controller/Order.pm b/SL/Controller/Order.pm index 780e80ea2..b51802f62 100644 --- a/SL/Controller/Order.pm +++ b/SL/Controller/Order.pm @@ -94,11 +94,10 @@ sub action_edit { foreach my $item (@{$self->order->items_sorted}) { $item->{new_fake_id} = join('_', 'new', Time::HiRes::gettimeofday(), int rand 1000000000000); } - # trigger rendering values for second row/longdescription as hidden, - # because they are loaded only on demand. So we need to keep the values - # from the source. - $_->{render_second_row} = 1 for @{ $self->order->items_sorted }; - $_->{render_longdescription} = 1 for @{ $self->order->items_sorted }; + # trigger rendering values for second row as hidden, because they + # are loaded only on demand. So we need to keep the values from + # the source. + $_->{render_second_row} = 1 for @{ $self->order->items_sorted }; } $self->recalc(); @@ -263,6 +262,7 @@ sub action_print { my $formname = $::form->{print_options}->{formname}; my $copies = $::form->{print_options}->{copies}; my $groupitems = $::form->{print_options}->{groupitems}; + my $printer_id = $::form->{print_options}->{printer_id}; # only pdf and opendocument by now if (none { $format eq $_ } qw(pdf opendocument opendocument_pdf)) { @@ -287,6 +287,7 @@ sub action_print { my @errors = generate_pdf($self->order, \$pdf, { format => $format, formname => $formname, language => $self->order->language, + printer_id => $printer_id, groupitems => $groupitems }); if (scalar @errors) { return $self->js->flash('error', t8('Conversion to PDF failed: #1', $errors[0]))->render; @@ -434,6 +435,7 @@ sub action_send_email { format => $::form->{print_options}->{format}, formname => $::form->{print_options}->{formname}, language => $self->order->language, + printer_id => $::form->{print_options}->{printer_id}, groupitems => $::form->{print_options}->{groupitems}}); if (scalar @errors) { return $self->js->flash('error', t8('Conversion to PDF failed: #1', $errors[0]))->render($self); @@ -579,27 +581,10 @@ sub action_get_has_active_periodic_invoices { sub action_save_and_delivery_order { my ($self) = @_; - my $errors = $self->save(); - - if (scalar @{ $errors }) { - $self->js->flash('error', $_) foreach @{ $errors }; - return $self->js->render(); - } - - my $text = $self->type eq sales_order_type() ? $::locale->text('The order has been saved') - : $self->type eq purchase_order_type() ? $::locale->text('The order has been saved') - : $self->type eq sales_quotation_type() ? $::locale->text('The quotation has been saved') - : $self->type eq request_quotation_type() ? $::locale->text('The rfq has been saved') - : ''; - flash_later('info', $text); - - my @redirect_params = ( + $self->save_and_redirect_to( controller => 'oe.pl', action => 'oe_delivery_order_from_order', - id => $self->order->id, ); - - $self->redirect_to(@redirect_params); } # save the order and redirect to the frontend subroutine for a new @@ -607,27 +592,10 @@ sub action_save_and_delivery_order { sub action_save_and_invoice { my ($self) = @_; - my $errors = $self->save(); - - if (scalar @{ $errors }) { - $self->js->flash('error', $_) foreach @{ $errors }; - return $self->js->render(); - } - - my $text = $self->type eq sales_order_type() ? $::locale->text('The order has been saved') - : $self->type eq purchase_order_type() ? $::locale->text('The order has been saved') - : $self->type eq sales_quotation_type() ? $::locale->text('The quotation has been saved') - : $self->type eq request_quotation_type() ? $::locale->text('The rfq has been saved') - : ''; - flash_later('info', $text); - - my @redirect_params = ( + $self->save_and_redirect_to( controller => 'oe.pl', action => 'oe_invoice_from_order', - id => $self->order->id, ); - - $self->redirect_to(@redirect_params); } # workflow from sales quotation to sales order @@ -644,27 +612,10 @@ sub action_purchase_order { sub action_save_and_ap_transaction { my ($self) = @_; - my $errors = $self->save(); - - if (scalar @{ $errors }) { - $self->js->flash('error', $_) foreach @{ $errors }; - return $self->js->render(); - } - - my $text = $self->type eq sales_order_type() ? $::locale->text('The order has been saved') - : $self->type eq purchase_order_type() ? $::locale->text('The order has been saved') - : $self->type eq sales_quotation_type() ? $::locale->text('The quotation has been saved') - : $self->type eq request_quotation_type() ? $::locale->text('The rfq has been saved') - : ''; - flash_later('info', $text); - - my @redirect_params = ( + $self->save_and_redirect_to( controller => 'ap.pl', action => 'add_from_purchase_order', - id => $self->order->id, ); - - $self->redirect_to(@redirect_params); } # set form elements in respect to a changed customer or vendor @@ -995,22 +946,6 @@ sub action_price_popup { $self->render_price_dialog($item); } -# get the longdescription for an item if the dialog to enter/change the -# longdescription was opened and the longdescription is empty -# -# If this item is new, get the longdescription from Part. -# Otherwise get it from OrderItem. -sub action_get_item_longdescription { - my $longdescription; - - if ($::form->{item_id}) { - $longdescription = SL::DB::OrderItem->new(id => $::form->{item_id})->load->longdescription; - } elsif ($::form->{parts_id}) { - $longdescription = get_part_texts($::form->{parts_id}, $::form->{language_id})->{longdescription}; - } - $_[0]->render(\ $longdescription, { type => 'text' }); -} - # load the second row for one or more items # # This action gets the html code for all items second rows by rendering a template for @@ -1037,11 +972,12 @@ sub action_update_row_from_master_data { my ($self) = @_; foreach my $item_id (@{ $::form->{item_ids} }) { - my $idx = first_index { $_ eq $item_id } @{ $::form->{orderitem_ids} }; - my $item = $self->order->items_sorted->[$idx]; + my $idx = first_index { $_ eq $item_id } @{ $::form->{orderitem_ids} }; + my $item = $self->order->items_sorted->[$idx]; + my $texts = get_part_texts($item->part, $self->order->language_id); - $item->description($item->part->description); - $item->longdescription($item->part->notes); + $item->description($texts->{description}); + $item->longdescription($texts->{longdescription}); my $price_source = SL::PriceSource->new(record_item => $item, record => $self->order); @@ -1741,11 +1677,10 @@ sub workflow_sales_or_purchase_order { $self->get_unalterable_data(); $self->pre_render(); - # trigger rendering values for second row/longdescription as hidden, - # because they are loaded only on demand. So we need to keep the values - # from the source. - $_->{render_second_row} = 1 for @{ $self->order->items_sorted }; - $_->{render_longdescription} = 1 for @{ $self->order->items_sorted }; + # trigger rendering values for second row as hidden, because they + # are loaded only on demand. So we need to keep the values from the + # source. + $_->{render_second_row} = 1 for @{ $self->order->items_sorted }; $self->render( 'order/form', @@ -1934,6 +1869,7 @@ sub generate_pdf { $print_form->{format} = $params->{format} || 'pdf'; $print_form->{media} = $params->{media} || 'file'; $print_form->{groupitems} = $params->{groupitems}; + $print_form->{printer_id} = $params->{printer_id}; $print_form->{media} = 'file' if $print_form->{media} eq 'screen'; $order->language($params->{language}); @@ -1952,7 +1888,7 @@ sub generate_pdf { extension => $template_ext, email => $print_form->{media} eq 'email', language => $params->{language}, - printer_id => $print_form->{printer_id}, # todo + printer_id => $print_form->{printer_id}, ); if (!defined $template_file) { @@ -2124,6 +2060,26 @@ sub nr_key { : ''; } +sub save_and_redirect_to { + my ($self, %params) = @_; + + my $errors = $self->save(); + + if (scalar @{ $errors }) { + $self->js->flash('error', $_) foreach @{ $errors }; + return $self->js->render(); + } + + my $text = $self->type eq sales_order_type() ? $::locale->text('The order has been saved') + : $self->type eq purchase_order_type() ? $::locale->text('The order has been saved') + : $self->type eq sales_quotation_type() ? $::locale->text('The quotation has been saved') + : $self->type eq request_quotation_type() ? $::locale->text('The rfq has been saved') + : ''; + flash_later('info', $text); + + $self->redirect_to(%params, id => $self->order->id); +} + 1; __END__ @@ -2255,8 +2211,6 @@ java script functions =item * check for direct delivery (workflow sales order -> purchase order) -=item * language / part translations - =item * access rights =item * display weights @@ -2320,10 +2274,6 @@ How to expand/collapse second row. Now it can be done clicking the icon or =item * -Possibility to change longdescription in input row? - -=item * - Possibility to select PriceSources in input row? =item *