X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fio.pl;h=86813c941a3b76fc4eb0b4e34dc82768d1a5f2af;hb=76466336f47eb3be6b76d1fd17d5b9475c975810;hp=01ae32960ffd72ea3a64a84be8dae6cc7cbd8b4a;hpb=c2688215ecb6f1122edd0d436081dd8dc966fdb9;p=kivitendo-erp.git diff --git a/bin/mozilla/io.pl b/bin/mozilla/io.pl index 01ae32960..86813c941 100644 --- a/bin/mozilla/io.pl +++ b/bin/mozilla/io.pl @@ -28,7 +28,8 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1335, USA. # ####################################################################### # @@ -49,6 +50,7 @@ use SL::CT; use SL::Locale::String qw(t8); use SL::IC; use SL::IO; +use SL::File; use SL::PriceSource; use SL::DB::Customer; @@ -57,7 +59,7 @@ use SL::DB::Language; use SL::DB::Printer; use SL::DB::Vendor; use SL::Helper::CreatePDF; -use SL::Helper::Flash qw(flash); +use SL::Helper::Flash; require "bin/mozilla/common.pl"; @@ -103,7 +105,6 @@ if (-f "bin/mozilla/$::myconfig{login}_io.pl") { # $locale->text('Nov') # $locale->text('Dec') use SL::IS; -use SL::PE; use SL::AM; use Data::Dumper; @@ -159,7 +160,7 @@ sub display_row { # column_index my @header_sort = qw( - runningnumber partnumber description ship ship_missing qty price_factor + runningnumber partnumber type_and_classific description ship ship_missing qty price_factor unit weight price_source sellprice discount linetotal bin stock_in_out ); @@ -169,6 +170,8 @@ sub display_row { my %column_def = ( runningnumber => { width => 5, value => $locale->text('No.'), display => 1, }, partnumber => { width => 8, value => $locale->text('Number'), display => 1, }, + type_and_classific + => { width => 2, value => $locale->text('Type'), display => 1, }, description => { width => 30, value => $locale->text('Part Description'), display => 1, }, ship => { width => 5, value => $locale->text('Delivered'), display => $is_s_p_order, }, ship_missing => { width => 5, value => $locale->text('Not delivered'), display => $show_ship_missing, }, @@ -295,12 +298,14 @@ sub display_row { my $rows = $form->numtextrows($form->{"description_$i"}, 30, 6); # quick delete single row - $column_data{runningnumber} .= q|| . + $column_data{runningnumber} = q|| . q|| . $locale->text('Remove') . q| |; $column_data{runningnumber} .= $cgi->textfield(-name => "runningnumber_$i", -id => "runningnumber_$i", -size => 5, -value => $i); # HuT $column_data{partnumber} = $cgi->textfield(-name => "partnumber_$i", -id => "partnumber_$i", -size => 12, -value => $form->{"partnumber_$i"}); + $column_data{type_and_classific} = $::request->presenter->type_abbreviation($form->{"part_type_$i"}). + $::request->presenter->classification_abbreviation($form->{"classification_id_$i"}) if $form->{"id_$i"}; $column_data{description} = (($rows > 1) # if description is too large, use a textbox instead ? $cgi->textarea( -name => "description_$i", -id => "description_$i", -default => $form->{"description_$i"}, -rows => $rows, -columns => 30) : $cgi->textfield(-name => "description_$i", -id => "description_$i", -value => $form->{"description_$i"}, -size => 30)) @@ -381,7 +386,7 @@ sub display_row { '-labels' => \%projectnumber_labels, '-default' => $form->{"project_id_$i"} )); - $column_data{reqdate} = qq||; + $column_data{reqdate} = qq||; $column_data{subtotal} = sprintf qq||, $form->{"subtotal_$i"} ? 'checked' : ''; # begin marge calculations @@ -488,7 +493,7 @@ sub display_row { HEADER => \@HEADER, }); - if (0 != ($form->{sellprice_total} * 1)) { + if (abs($form->{sellprice_total} * 1) >= 0.01) { $form->{marge_percent} = ($form->{sellprice_total} - $form->{lastcost_total}) / $form->{sellprice_total} * 100; } @@ -604,7 +609,7 @@ sub item_selected { my @new_fields = qw(id partnumber description sellprice listprice inventory_accno - income_accno expense_accno bin unit weight assembly taxaccounts + income_accno expense_accno bin unit weight part_type taxaccounts partsgroup formel longdescription not_discountable partnotes lastcost price_factor_id price_factor); @@ -665,15 +670,14 @@ sub item_selected { map { $amount += ($form->{"${_}_base"} * $form->{"${_}_rate"}) } split / /, $form->{"taxaccounts_$i"} if !$form->{taxincluded}; $form->{creditremaining} -= $amount; - $form->{"runningnumber_$i"} = $i; # format amounts map { $form->{"${_}_$i"} = $form->format_amount(\%myconfig, $form->{"${_}_$i"}, $decimalplaces) - } qw(sellprice lastcost qty) if $form->{item} ne 'assembly'; - $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"discount_$i"} * 100.0) if $form->{item} ne 'assembly'; + } qw(sellprice lastcost qty) if $form->{part_type} ne 'assembly'; + $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"discount_$i"} * 100.0) if $form->{part_type} ne 'assembly'; delete $form->{nextsub}; @@ -727,7 +731,7 @@ sub check_form { my $count = 0; # remove any makes or model rows - if ($form->{item} eq 'assembly') { + if ($form->{part_type} eq 'assembly') { # fuer assemblies auskommentiert. seiteneffekte? ;-) wird die woanders benoetigt? #$form->{sellprice} = 0; @@ -760,7 +764,7 @@ sub check_form { $form->redo_rows(\@flds, \@a, $count, $form->{assembly_rows}); $form->{assembly_rows} = $count; - } elsif ($form->{item} !~ m{^(?:part|service)$}) { + } elsif ($form->{part_type} !~ m{^(?:part|service)$}) { remove_emptied_rows(1); $form->{creditremaining} -= &invoicetotal; @@ -1063,12 +1067,38 @@ sub edit_e_mail { @dont_hide_key{@dont_hide_key_list} = (1) x @dont_hide_key_list; @hidden_keys = sort grep { !$dont_hide_key{$_} } grep { !ref $form->{$_} } keys %$form; + my (@files, @vc_files, @part_files, $has_document); + + if ($::instance_conf->get_doc_storage) { + @files = SL::File->get_all_versions(object_id => $form->{id}, object_type => $form->{type}, file_type => 'document'); + $has_document = 1 if scalar(@files) > 0; + @files = SL::File->get_all(object_id => $form->{id}, object_type => $form->{type}, file_type => 'attachment'); + @vc_files = SL::File->get_all(object_id => $form->{"$form->{vc}_id"}, object_type => $form->{vc}) + if $form->{vc} && $form->{"$form->{vc}_id"}; + + my %part_id_map = map { $_->{id} => $_ } grep { $_->{id} } map { + { + 'id' => $form->{"id_$_"}, + 'partname' => $form->{"partnumber_$_"} + } + } (1 .. $form->{rowcount}); + + foreach my $partid (keys %part_id_map) { + my @pfiles = SL::File->get_all(object_id => $partid, object_type => 'part'); + push @part_files, map { $_->{partname} = $part_id_map{$partid}->{partname}; $_ } @pfiles; + } + } + print $form->parse_html_template('generic/edit_email', { title => $title, a_filename => $attachment_filename, subject => $subject, + has_document => $has_document, print_options => print_options('inline' => 1), action => 'send_email', + FILES => \@files, + VC_FILES => \@vc_files, + PART_FILES => \@part_files, HIDDEN => [ map +{ name => $_, value => $form->{$_} }, @hidden_keys ], SHOW_BCC => $::auth->assert('email_bcc', 'may fail') }); @@ -1085,10 +1115,28 @@ sub send_email { my $callback = $form->{script} . "?action=edit"; map({ $callback .= "\&${_}=" . E($form->{$_}); } qw(type id)); + if ( $form->{action_oldfile} || $form->{action_nofile} ) { + if (!$form->{email} || $form->{email} =~ /^\s*$/) { + flash('error', $::locale->text('E-mail address missing!')); + } + else { + $form->send_email(\%myconfig,'pdf'); + } + } + else { + print_form("return"); + $form->{addition} = "SCREENED"; + $form->save_history; + $form->{addition} = "MAILED"; + } + + flash_later('info' , $::locale->text('E-Mail is sent to #1', $form->{email})) if !$form->{emailerr}; + flash_later('error', $::locale->text($form->{emailerr})) if $form->{emailerr}; - print_form("return"); + delete $form->{emailerr}; Common->save_email_status(\%myconfig, $form); + ##TODO andere SAVE HISTORY $form->{callback} = $callback; $form->redirect(); @@ -1291,11 +1339,7 @@ sub print_form { $form->{TEMPLATE_DRIVER_OPTIONS} = { }; if (any { $form->{type} eq $_ } qw(sales_quotation sales_order sales_delivery_order invoice request_quotation purchase_order purchase_delivery_order credit_note)) { - $form->{TEMPLATE_DRIVER_OPTIONS}->{variable_content_types} = { - longdescription => 'html', - partnotes => 'html', - notes => 'html', - }; + $form->{TEMPLATE_DRIVER_OPTIONS}->{variable_content_types} = $form->get_variable_content_types(); } $form->isblank("email", $locale->text('E-mail address missing!')) @@ -1489,6 +1533,7 @@ sub print_form { $form->{emailed} .= " $form->{formname}"; $form->{emailed} =~ s/^ //; + $form->{addition} = "MAILED"; } my $emailed = $form->{emailed}; @@ -1759,9 +1804,11 @@ sub _update_part_information { foreach my $i (1..$form->{rowcount}) { next unless ($form->{"id_${i}"}); - my $info = $form->{PART_INFORMATION}->{$form->{"id_${i}"}} || { }; - $form->{"partunit_${i}"} = $info->{unit}; - $form->{"weight_$i"} = $info->{weight}; + my $info = $form->{PART_INFORMATION}->{$form->{"id_${i}"}} || { }; + $form->{"partunit_${i}"} = $info->{unit}; + $form->{"weight_$i"} = $info->{weight}; + $form->{"part_type_$i"} = $info->{part_type}; + $form->{"classification_id_$i"} = $info->{classification_id}; } $main::lxdebug->leave_sub();