X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Foe.pl;h=d837539ee6076ea035373ee5ce4b370a0bbad623;hb=4487bcbffc414424dca499a26074923850779245;hp=dccfccbfb1d45a6487c39fcd26e8c0f8ca599c1d;hpb=36c8af5266db4c2894cd37df798212c2e7f06f68;p=kivitendo-erp.git diff --git a/bin/mozilla/oe.pl b/bin/mozilla/oe.pl index dccfccbfb..d837539ee 100644 --- a/bin/mozilla/oe.pl +++ b/bin/mozilla/oe.pl @@ -59,8 +59,6 @@ require "bin/mozilla/reportgenerator.pl"; use strict; -our %TMPL_VAR; - 1; # end of main @@ -362,13 +360,13 @@ sub setup_oe_action_bar { t8('Sales Order'), submit => [ '#form', { action => "sales_order" } ], disabled => !$form->{id} ? t8('This record has not been saved yet.') : undef, - only_if => $params{is_sales_quo}, + only_if => $params{is_sales_quo} || $params{is_pur_ord}, ], action => [ t8('Purchase Order'), - submit => [ '#form', { action => "sales_order" } ], + submit => [ '#form', { action => "purchase_order" } ], disabled => !$form->{id} ? t8('This record has not been saved yet.') : undef, - only_if => $params{is_req_quo}, + only_if => $params{is_sales_ord} || $params{is_req_quo}, ], action => [ t8('Delivery Order'), @@ -386,11 +384,13 @@ sub setup_oe_action_bar { t8('Quotation'), submit => [ '#form', { action => "quotation" } ], disabled => !$form->{id} ? t8('This record has not been saved yet.') : undef, + only_if => $params{is_sales_ord}, ], action => [ t8('Request for Quotation'), - submit => [ '#form', { action => "reqest_for_quotation" } ], + submit => [ '#form', { action => "request_for_quotation" } ], disabled => !$form->{id} ? t8('This record has not been saved yet.') : undef, + only_if => $params{is_pur_ord}, ], ], # end of combobox "Workflow" @@ -406,6 +406,12 @@ sub setup_oe_action_bar { call => [ 'kivi.SalesPurchase.show_email_dialog' ], checks => [ @req_trans_desc ], ], + action => [ + t8('Download attachments of all parts'), + call => [ 'kivi.File.downloadOrderitemsFiles', $::form->{type}, $::form->{id} ], + disabled => !$form->{id} ? t8('This record has not been saved yet.') : undef, + only_if => $::instance_conf->get_doc_storage, + ], ], #end of combobox "Export" combobox => [ @@ -469,17 +475,20 @@ sub form_header { # Container for template variables. Unfortunately this has to be # visible in form_footer too, so package local level and not my here. - %TMPL_VAR = (); + my $TMPL_VAR = $::request->cache('tmpl_var', {}); if ($form->{id}) { - $TMPL_VAR{oe_obj} = SL::DB::Order->new(id => $form->{id})->load; + $TMPL_VAR->{oe_obj} = SL::DB::Order->new(id => $form->{id})->load; } - $TMPL_VAR{vc_obj} = SL::DB::Customer->new(id => $form->{customer_id})->load if $form->{customer_id}; - $TMPL_VAR{vc_obj} = SL::DB::Vendor->new(id => $form->{vendor_id})->load if $form->{vendor_id}; + $TMPL_VAR->{vc_obj} = SL::DB::Customer->new(id => $form->{customer_id})->load if $form->{customer_id}; + $TMPL_VAR->{vc_obj} = SL::DB::Vendor->new(id => $form->{vendor_id})->load if $form->{vendor_id}; $form->{defaultcurrency} = $form->get_default_currency(\%myconfig); - $form->{employee_id} = $form->{old_employee_id} if $form->{old_employee_id}; - $form->{salesman_id} = $form->{old_salesman_id} if $form->{old_salesman_id}; + my $current_employee = SL::DB::Manager::Employee->current; + $form->{employee_id} = $form->{old_employee_id} if $form->{old_employee_id}; + $form->{salesman_id} = $form->{old_salesman_id} if $form->{old_salesman_id}; + $form->{employee_id} ||= $current_employee->id; + $form->{salesman_id} ||= $current_employee->id; # openclosed checkboxes my @tmp; @@ -487,7 +496,7 @@ sub form_header { $form->{"delivered"} ? "checked" : "", $locale->text('Delivery Order(s) for full qty created') if $form->{"type"} =~ /_order$/; push @tmp, sprintf qq||, $form->{"closed"} ? "checked" : "", $locale->text('Closed') if $form->{id}; - $TMPL_VAR{openclosed} = sprintf qq|%s\n|, 2 * scalar @tmp, join "\n", @tmp if @tmp; + $TMPL_VAR->{openclosed} = sprintf qq|%s\n|, 2 * scalar @tmp, join "\n", @tmp if @tmp; my $vc = $form->{vc} eq "customer" ? "customers" : "vendors"; @@ -515,17 +524,17 @@ sub form_header { @old_ids_cond, ]); - $TMPL_VAR{ALL_PROJECTS} = SL::DB::Manager::Project->get_all_sorted(query => \@conditions); - $form->{ALL_PROJECTS} = $TMPL_VAR{ALL_PROJECTS}; # make projects available for second row drop-down in io.pl + $TMPL_VAR->{ALL_PROJECTS} = SL::DB::Manager::Project->get_all_sorted(query => \@conditions); + $form->{ALL_PROJECTS} = $TMPL_VAR->{ALL_PROJECTS}; # make projects available for second row drop-down in io.pl # label subs my $employee_list_query_gen = sub { $::form->{$_[0]} ? [ or => [ id => $::form->{$_[0]}, deleted => 0 ] ] : [ deleted => 0 ] }; - $TMPL_VAR{ALL_EMPLOYEES} = SL::DB::Manager::Employee->get_all_sorted(query => $employee_list_query_gen->('employee_id')); - $TMPL_VAR{ALL_SALESMEN} = SL::DB::Manager::Employee->get_all_sorted(query => $employee_list_query_gen->('salesman_id')); - $TMPL_VAR{ALL_SHIPTO} = SL::DB::Manager::Shipto->get_all_sorted(query => [ + $TMPL_VAR->{ALL_EMPLOYEES} = SL::DB::Manager::Employee->get_all_sorted(query => $employee_list_query_gen->('employee_id')); + $TMPL_VAR->{ALL_SALESMEN} = SL::DB::Manager::Employee->get_all_sorted(query => $employee_list_query_gen->('salesman_id')); + $TMPL_VAR->{ALL_SHIPTO} = SL::DB::Manager::Shipto->get_all_sorted(query => [ or => [ trans_id => $::form->{"$::form->{vc}_id"} * 1, and => [ shipto_id => $::form->{shipto_id} * 1, trans_id => undef ] ] ]); - $TMPL_VAR{ALL_CONTACTS} = SL::DB::Manager::Contact->get_all_sorted(query => [ + $TMPL_VAR->{ALL_CONTACTS} = SL::DB::Manager::Contact->get_all_sorted(query => [ or => [ cp_cv_id => $::form->{"$::form->{vc}_id"} * 1, and => [ @@ -534,20 +543,20 @@ sub form_header { ] ] ]); - $TMPL_VAR{sales_employee_labels} = sub { $_[0]->{name} || $_[0]->{login} }; + $TMPL_VAR->{sales_employee_labels} = sub { $_[0]->{name} || $_[0]->{login} }; # currencies and exchangerate $form->{currency} = $form->{defaultcurrency} unless $form->{currency}; - $TMPL_VAR{show_exchangerate} = $form->{currency} ne $form->{defaultcurrency}; + $TMPL_VAR->{show_exchangerate} = $form->{currency} ne $form->{defaultcurrency}; push @custom_hiddens, "forex"; push @custom_hiddens, "exchangerate" if $form->{forex}; # credit remaining my $creditwarning = (($form->{creditlimit} != 0) && ($form->{creditremaining} < 0) && !$form->{update}) ? 1 : 0; - $TMPL_VAR{is_credit_remaining_negativ} = ($form->{creditremaining} =~ /-/) ? "0" : "1"; + $TMPL_VAR->{is_credit_remaining_negativ} = ($form->{creditremaining} =~ /-/) ? "0" : "1"; # business - $TMPL_VAR{business_label} = ($form->{vc} eq "customer" ? $locale->text('Customer type') : $locale->text('Vendor type')); + $TMPL_VAR->{business_label} = ($form->{vc} eq "customer" ? $locale->text('Customer type') : $locale->text('Vendor type')); push @custom_hiddens, "customer_pricegroup_id" if $form->{vc} eq 'customer'; @@ -555,14 +564,14 @@ sub form_header { my $follow_up_vc = $form->{ $form->{vc} eq 'customer' ? 'customer' : 'vendor' }; $follow_up_vc =~ s/--\d*\s*$//; - $TMPL_VAR{follow_up_trans_info} = ($form->{type} =~ /_quotation$/ ? $form->{quonumber} : $form->{ordnumber}) . " ($follow_up_vc)"; + $TMPL_VAR->{follow_up_trans_info} = ($form->{type} =~ /_quotation$/ ? $form->{quonumber} : $form->{ordnumber}) . " ($follow_up_vc)"; if ($form->{id}) { my $follow_ups = FU->follow_ups('trans_id' => $form->{id}, 'not_done' => 1); if (scalar @{ $follow_ups }) { - $TMPL_VAR{num_follow_ups} = scalar @{ $follow_ups }; - $TMPL_VAR{num_due_follow_ups} = sum map { $_->{due} * 1 } @{ $follow_ups }; + $TMPL_VAR->{num_follow_ups} = scalar @{ $follow_ups }; + $TMPL_VAR->{num_due_follow_ups} = sum map { $_->{due} * 1 } @{ $follow_ups }; } } @@ -570,16 +579,16 @@ sub form_header { if ($form->{resubmit} && ($form->{format} eq "html")) { $dispatch_to_popup = "window.open('about:blank','Beleg'); document.oe.target = 'Beleg';"; $dispatch_to_popup .= "document.do.submit();"; - } elsif ($form->{resubmit}) { + } elsif ($form->{resubmit} && $form->{action_print}) { # emulate click for resubmitting actions - $dispatch_to_popup = "document.oe.${_}.click(); " for grep { /^action_/ } keys %$form; + $dispatch_to_popup = "kivi.SalesPurchase.show_print_dialog(); kivi.SalesPurchase.print_record();"; } elsif ($creditwarning) { $::request->{layout}->add_javascripts_inline("alert('$credittext');"); } $::request->{layout}->add_javascripts_inline("\$(function(){$dispatch_to_popup});"); - $TMPL_VAR{dateformat} = $myconfig{dateformat}; - $TMPL_VAR{numberformat} = $myconfig{numberformat}; + $TMPL_VAR->{dateformat} = $myconfig{dateformat}; + $TMPL_VAR->{numberformat} = $myconfig{numberformat}; if ($form->{type} eq 'sales_order') { if (!$form->{periodic_invoices_config}) { @@ -613,7 +622,7 @@ sub form_header { push @custom_hiddens, map { "shiptocvar_" . $_->name } @{ SL::DB::Manager::CustomVariableConfig->get_all(where => [ module => 'ShipTo' ]) }; - $TMPL_VAR{HIDDENS} = [ map { name => $_, value => $form->{$_} }, + $TMPL_VAR->{HIDDENS} = [ map { name => $_, value => $form->{$_} }, qw(id type vc proforma queued printed emailed title creditlimit creditremaining tradediscount business max_dunning_level dunning_amount @@ -623,18 +632,18 @@ sub form_header { @custom_hiddens, map { $_.'_rate', $_.'_description', $_.'_taxnumber' } split / /, $form->{taxaccounts} ]; # deleted: discount - %TMPL_VAR = ( - %TMPL_VAR, - %type_check_vars, - ); + $TMPL_VAR->{$_} = $type_check_vars{$_} for keys %type_check_vars; - $TMPL_VAR{ORDER_PROBABILITIES} = [ map { { title => ($_ * 10) . '%', id => $_ * 10 } } (0..10) ]; + $TMPL_VAR->{ORDER_PROBABILITIES} = [ map { { title => ($_ * 10) . '%', id => $_ * 10 } } (0..10) ]; if ($type_check_vars{is_sales} && $::instance_conf->get_transport_cost_reminder_article_number_id) { - $TMPL_VAR{transport_cost_reminder_article} = SL::DB::Part->new(id => $::instance_conf->get_transport_cost_reminder_article_number_id)->load; + $TMPL_VAR->{transport_cost_reminder_article} = SL::DB::Part->new(id => $::instance_conf->get_transport_cost_reminder_article_number_id)->load; } - print $form->parse_html_template("oe/form_header", { %TMPL_VAR }); + print $form->parse_html_template("oe/form_header", { + %$TMPL_VAR, + %type_check_vars, + }); $main::lxdebug->leave_sub(); } @@ -652,8 +661,10 @@ sub form_footer { my $introws = max 5, $form->numtextrows($form->{intnotes}, 35, 8); - $TMPL_VAR{notes} = qq||; - $TMPL_VAR{intnotes} = qq||; + my $TMPL_VAR = $::request->cache('tmpl_var', {}); + + $TMPL_VAR->{notes} = qq||; + $TMPL_VAR->{intnotes} = qq||; if( $form->{customer_id} && !$form->{taxincluded_changed_by_user} ) { my $customer = SL::DB::Customer->new(id => $form->{customer_id})->load(); @@ -667,7 +678,7 @@ sub form_footer { $form->{invtotal} += $form->{"${item}_total"} = $form->round_amount( $form->{"${item}_base"} * $form->{"${item}_rate"}, 2); $form->{"${item}_total"} = $form->format_amount(\%myconfig, $form->{"${item}_total"}, 2); - $TMPL_VAR{tax} .= qq| + $TMPL_VAR->{tax} .= qq| $form->{"${item}_description"} | . $form->{"${item}_rate"} * 100 .qq|% $form->{"${item}_total"} @@ -682,7 +693,7 @@ sub form_footer { $form->{"${item}_total"} = $form->format_amount(\%myconfig, $form->{"${item}_total"}, 2); $form->{"${item}_netto"} = $form->format_amount(\%myconfig, $form->{"${item}_netto"}, 2); - $TMPL_VAR{tax} .= qq| + $TMPL_VAR->{tax} .= qq| Enthaltene $form->{"${item}_description"} | . $form->{"${item}_rate"} * 100 .qq|% $form->{"${item}_total"} @@ -703,12 +714,12 @@ sub form_footer { ); $form->{oldinvtotal} = $form->{invtotal}; - $TMPL_VAR{ALL_DELIVERY_TERMS} = SL::DB::Manager::DeliveryTerm->get_all_sorted(); + $TMPL_VAR->{ALL_DELIVERY_TERMS} = SL::DB::Manager::DeliveryTerm->get_all_sorted(); my $print_options_html = setup_sales_purchase_print_options(); print $form->parse_html_template("oe/form_footer", { - %TMPL_VAR, + %$TMPL_VAR, print_options => $print_options_html, is_sales => scalar ($form->{type} =~ /^sales_/), # these vars are exported, so that the template is_order => scalar ($form->{type} =~ /_order$/), # may determine what to show @@ -1011,7 +1022,7 @@ sub orders { $form->{l_open} = $form->{l_closed} = "Y" if ($form->{open} && $form->{closed}); $form->{l_delivered} = "Y" if ($form->{delivered} && $form->{notdelivered}); $form->{l_periodic_invoices} = "Y" if ($form->{periodic_invoices_active} && $form->{periodic_invoices_inactive}); - $form->{l_edit_exp} = "Y" if (any { $form->{type} eq $_ } qw(sales_order purchase_order)); + $form->{l_edit_exp} = "Y" if $::instance_conf->get_feature_experimental && (any { $form->{type} eq $_ } qw(sales_order purchase_order)); map { $form->{"l_${_}"} = 'Y' } qw(order_probability expected_billing_date expected_netamount) if $form->{l_order_probability_expected_billing_date}; my $attachment_basename; @@ -1261,7 +1272,7 @@ sub orders { $report->add_data(create_subtotal_row(\%totals, \@columns, \%column_alignment, \@subtotal_columns, 'listtotal')); setup_oe_orders_action_bar(); - $report->generate_with_headers(action_bar => 1); + $report->generate_with_headers(); $main::lxdebug->leave_sub(); } @@ -1283,6 +1294,8 @@ sub check_delivered_flag { foreach my $i (1 .. $form->{rowcount}) { next if (!$form->{"id_$i"}); + $form->{"ship_$i"} = 0 if $form->{saveasnew}; + if ($form->parse_amount(\%myconfig, $form->{"qty_$i"}) == $form->parse_amount(\%myconfig, $form->{"ship_$i"})) { $all_delivered = 1; next; @@ -1293,6 +1306,7 @@ sub check_delivered_flag { } $form->{delivered} = 1 if $all_delivered; + $form->{delivered} = 0 if $form->{saveasnew}; $main::lxdebug->leave_sub(); }