X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=bin%2Fmozilla%2Fio.pl;h=33a5930c423ca2cf8035281a6f047cdfc9a8e8f9;hb=cb0eb91f7b04f728b1057d130f111ad465e8b16a;hp=af912eeb5bad354b3944b0e4fc1ae8154f67eb37;hpb=a6ce2c7f3f7ae10f7065fb86121c8d11049617ee;p=kivitendo-erp.git diff --git a/bin/mozilla/io.pl b/bin/mozilla/io.pl index af912eeb5..33a5930c4 100644 --- a/bin/mozilla/io.pl +++ b/bin/mozilla/io.pl @@ -41,6 +41,7 @@ use Carp; use CGI; use List::MoreUtils qw(any uniq apply); use List::Util qw(min max first); +use List::UtilsBy qw(sort_by uniq_by); use SL::ClientJS; use SL::CVar; @@ -217,7 +218,7 @@ sub display_row { # special alignings my %align = map { $_ => 'right' } qw(qty ship right discount linetotal stock_in_out weight ship_missing); - my %nowrap = map { $_ => 1 } qw(description unit); + my %nowrap = map { $_ => 1 } qw(description unit price_source); $form->{marge_total} = 0; $form->{sellprice_total} = 0; @@ -335,24 +336,18 @@ sub display_row { $column_data{ship_missing} = $form->format_amount(\%myconfig, $ship_missing_qty) . ' ' . $form->{"unit_$i"} . '; ' . $form->format_amount(\%myconfig, $ship_missing_amount, $decimalplaces); } - my $sellprice_value = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces); - my $discount_value = $form->format_amount(\%myconfig, $form->{"discount_$i"}); - my $edit_prices = $main::auth->assert('edit_prices', 1) && !$::form->{"active_price_source_$i"}; - my $edit_discounts = $main::auth->assert('edit_prices', 1) && !$::form->{"active_discount_source_$i"}; - $column_data{sellprice} = (!$edit_prices) - ? $cgi->hidden( -name => "sellprice_$i", -id => "sellprice_$i", -value => $sellprice_value) . $sellprice_value - : $cgi->textfield(-name => "sellprice_$i", -id => "sellprice_$i", -size => 10, -onBlur => "check_right_number_format(this)", -value => $sellprice_value); - $column_data{discount} = (!$edit_discounts) - ? $cgi->hidden( -name => "discount_$i", -id => "discount_$i", -value => $discount_value) . $discount_value . ' %' - : $cgi->textfield(-name => "discount_$i", -id => "discount_$i", -size => 3, -value => $discount_value); $column_data{linetotal} = $form->format_amount(\%myconfig, $linetotal, 2); $column_data{bin} = $form->{"bin_$i"}; $column_data{weight} = $form->format_amount(\%myconfig, $form->{"qty_$i"} * $form->{"weight_$i"}, 3) . ' ' . $defaults->{weightunit} if $defaults->{show_weight}; + my $sellprice_value = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces); + my $discount_value = $form->format_amount(\%myconfig, $form->{"discount_$i"}); + + my $price; if ($form->{"id_${i}"} && !$is_delivery_order) { my $price_source = SL::PriceSource->new(record_item => $record_item, record => $record); - my $price = $price_source->price_from_source($::form->{"active_price_source_$i"}); + $price = $price_source->price_from_source($::form->{"active_price_source_$i"}); my $discount = $price_source->discount_from_source($::form->{"active_discount_source_$i"}); my $best_price = $price_source->best_price; my $best_discount = $price_source->best_discount; @@ -377,6 +372,15 @@ sub display_row { } } + my $edit_prices = $main::auth->assert('edit_prices', 1) && (!$::form->{"active_price_source_$i"} || !$price || $price->editable); + my $edit_discounts = $main::auth->assert('edit_prices', 1) && !$::form->{"active_discount_source_$i"}; + $column_data{sellprice} = (!$edit_prices) + ? $cgi->hidden( -name => "sellprice_$i", -id => "sellprice_$i", -value => $sellprice_value) . $sellprice_value + : $cgi->textfield(-name => "sellprice_$i", -id => "sellprice_$i", -size => 10, -onBlur => "check_right_number_format(this)", -value => $sellprice_value); + $column_data{discount} = (!$edit_discounts) + ? $cgi->hidden( -name => "discount_$i", -id => "discount_$i", -value => $discount_value) . $discount_value . ' %' + : $cgi->textfield(-name => "discount_$i", -id => "discount_$i", -size => 3, -value => $discount_value); + if ($is_delivery_order) { $column_data{stock_in_out} = calculate_stock_in_out($i); } @@ -1924,6 +1928,37 @@ sub setup_sales_purchase_print_options { ); } +sub _get_files_for_email_dialog { + my %files = map { ($_ => []) } qw(versions files vc_files part_files); + + return %files if !$::instance_conf->get_doc_storage; + + $files{versions} = [ SL::File->get_all_versions(object_id => $::form->{id}, object_type => $::form->{type}, file_type => 'document') ]; + $files{files} = [ SL::File->get_all( object_id => $::form->{id}, object_type => $::form->{type}, file_type => 'attachment') ]; + $files{vc_files} = [ SL::File->get_all( object_id => $::form->{vc_id}, object_type => $::form->{vc}, file_type => 'attachment') ] + if $::form->{vc} && $::form->{"vc_id"}; + + my @parts = + uniq_by { $_->{id} } + grep { $_->{id} } + map { + +{ id => $::form->{"id_$_"}, + partnumber => $::form->{"partnumber_$_"}, + } + } (1 .. $::form->{rowcount}); + + foreach my $part (@parts) { + my @pfiles = SL::File->get_all(object_id => $part->{id}, object_type => 'part'); + push @{ $files{part_files} }, map { +{ %{ $_ }, partnumber => $part->{partnumber} } } @pfiles; + } + + foreach my $key (keys %files) { + $files{$key} = [ sort_by { lc $_->{db_file}->{file_name} } @{ $files{$key} } ]; + } + + return %files; +} + sub show_sales_purchase_email_dialog { my $contact = $::form->{cp_id} ? SL::DB::Contact->load_cached($::form->{cp_id}) : undef; my $email_form = { @@ -1932,9 +1967,12 @@ sub show_sales_purchase_email_dialog { attachment_filename => $::form->generate_attachment_filename, }; - my $html = $::form->parse_html_template("common/_send_email_dialog", { - email_form => $email_form, - show_bcc => $::auth->assert('email_bcc', 'may fail'), + my %files = _get_files_for_email_dialog(); + my $html = $::form->parse_html_template("common/_send_email_dialog", { + email_form => $email_form, + show_bcc => $::auth->assert('email_bcc', 'may fail'), + FILES => \%files, + is_customer => $::form->{vc} eq 'customer', }); print $::form->ajax_response_header, $html; @@ -1954,8 +1992,13 @@ sub send_sales_purchase_email { $::form->{media} = 'email'; - print_form("return"); - Common->save_email_status(\%::myconfig, $::form); + if (($::form->{attachment_policy} // '') =~ m{^(?:old_file|no_file)$}) { + $::form->send_email(\%::myconfig, 'pdf'); + + } else { + print_form("return"); + Common->save_email_status(\%::myconfig, $::form); + } flash_later('info', $::locale->text('The email has been sent.'));