X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Foe.pl;h=4a8e3162b79293bc6f1b08fd73ca1c3acc6172fa;hb=2ac999504a5039c972da30c0f6177b34f6e2177b;hp=4c2d05916e409ce6f43d79ce645af418d6a8453f;hpb=ed8d29defd870809e912b92f6abc8426df6559b9;p=kivitendo-erp.git diff --git a/bin/mozilla/oe.pl b/bin/mozilla/oe.pl index 4c2d05916..4a8e3162b 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 @@ -313,7 +311,6 @@ sub setup_oe_action_bar { || $params{is_pur_ord} || ($params{is_sales_quo} && $::instance_conf->get_allow_sales_invoice_from_sales_quotation) || ($params{is_sales_ord} && $::instance_conf->get_allow_sales_invoice_from_sales_order); - my @req_trans_desc = qw(kivi.SalesPurchase.check_transaction_description) x!!$::instance_conf->get_require_transaction_description_ps; my @req_trans_cost_art = qw(kivi.SalesPurchase.check_transport_cost_article_presence) x!!$::instance_conf->get_transport_cost_reminder_article_number_id; my @warn_p_invoice = qw(kivi.SalesPurchase.oe_warn_save_active_periodic_invoice) x!!$has_active_periodic_invoice; @@ -323,6 +320,7 @@ sub setup_oe_action_bar { t8('Update'), submit => [ '#form', { action => "update" } ], id => 'update_button', + checks => [ 'kivi.validate_form' ], accesskey => 'enter', ], @@ -330,18 +328,18 @@ sub setup_oe_action_bar { action => [ t8('Save'), submit => [ '#form', { action => "save" } ], - checks => [ @req_trans_desc, @req_trans_cost_art, @warn_p_invoice ], + checks => [ 'kivi.validate_form', @req_trans_cost_art, @warn_p_invoice ], ], action => [ t8('Save as new'), submit => [ '#form', { action => "save_as_new" } ], - checks => [ @req_trans_desc, @req_trans_cost_art ], + checks => [ 'kivi.validate_form', @req_trans_cost_art ], disabled => !$form->{id} ? t8('This record has not been saved yet.') : undef, ], action => [ t8('Save and Close'), submit => [ '#form', { action => "save_and_close" } ], - checks => [ @req_trans_desc, @req_trans_cost_art, @warn_p_invoice ], + checks => [ 'kivi.validate_form', @req_trans_cost_art, @warn_p_invoice ], ], action => [ t8('Delete'), @@ -362,36 +360,42 @@ 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, + checks => [ 'kivi.validate_form' ], only_if => $params{is_sales_quo} || $params{is_pur_ord}, ], action => [ t8('Purchase Order'), submit => [ '#form', { action => "purchase_order" } ], disabled => !$form->{id} ? t8('This record has not been saved yet.') : undef, + checks => [ 'kivi.validate_form' ], only_if => $params{is_sales_ord} || $params{is_req_quo}, ], action => [ t8('Delivery Order'), submit => [ '#form', { action => "delivery_order" } ], disabled => !$form->{id} ? t8('This record has not been saved yet.') : undef, + checks => [ 'kivi.validate_form' ], only_if => $params{is_sales_ord} || $params{is_pur_ord}, ], action => [ t8('Invoice'), submit => [ '#form', { action => "invoice" } ], disabled => !$form->{id} ? t8('This record has not been saved yet.') : undef, + checks => [ 'kivi.validate_form' ], only_if => $allow_invoice, ], action => [ t8('Quotation'), submit => [ '#form', { action => "quotation" } ], disabled => !$form->{id} ? t8('This record has not been saved yet.') : undef, + checks => [ 'kivi.validate_form' ], only_if => $params{is_sales_ord}, ], action => [ t8('Request for Quotation'), submit => [ '#form', { action => "request_for_quotation" } ], disabled => !$form->{id} ? t8('This record has not been saved yet.') : undef, + checks => [ 'kivi.validate_form' ], only_if => $params{is_pur_ord}, ], ], # end of combobox "Workflow" @@ -401,12 +405,12 @@ sub setup_oe_action_bar { action => [ t8('Print'), call => [ 'kivi.SalesPurchase.show_print_dialog' ], - checks => [ @req_trans_desc ], + checks => [ 'kivi.validate_form' ], ], action => [ t8('E Mail'), call => [ 'kivi.SalesPurchase.show_email_dialog' ], - checks => [ @req_trans_desc ], + checks => [ 'kivi.validate_form' ], ], action => [ t8('Download attachments of all parts'), @@ -431,6 +435,7 @@ sub setup_oe_action_bar { ], # end of combobox "more" ); } + $::request->layout->add_javascripts('kivi.Validator.js'); } sub setup_oe_search_action_bar { @@ -442,9 +447,11 @@ sub setup_oe_search_action_bar { t8('Search'), submit => [ '#form' ], accesskey => 'enter', + checks => [ 'kivi.validate_form' ], ], ); } + $::request->layout->add_javascripts('kivi.Validator.js'); } sub setup_oe_orders_action_bar { @@ -477,12 +484,12 @@ 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); @@ -498,7 +505,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"; @@ -526,17 +533,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 => [ @@ -545,20 +552,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'; @@ -566,14 +573,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 }; } } @@ -589,8 +596,8 @@ sub form_header { } $::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}) { @@ -602,7 +609,7 @@ sub form_header { } } - $::request->{layout}->use_javascript(map { "${_}.js" } qw(kivi.SalesPurchase kivi.File kivi.Part show_form_details show_history show_vc_details ckeditor/ckeditor ckeditor/adapters/jquery kivi.io autocomplete_customer)); + $::request->{layout}->use_javascript(map { "${_}.js" } qw(kivi.SalesPurchase kivi.File kivi.Part kivi.CustomerVendor kivi.Validator show_form_details show_history show_vc_details ckeditor/ckeditor ckeditor/adapters/jquery kivi.io)); # original snippets: @@ -624,7 +631,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 @@ -634,18 +641,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(); } @@ -663,8 +670,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(); @@ -678,7 +687,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"} @@ -693,7 +702,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"} @@ -714,12 +723,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 @@ -2117,11 +2126,16 @@ sub edit_periodic_invoices_config { $config = YAML::Load($::form->{periodic_invoices_config}) if $::form->{periodic_invoices_config}; if ('HASH' ne ref $config) { + my $lang_id = $::form->{language_id}; $config = { periodicity => 'm', order_value_periodicity => 'p', # = same as periodicity start_date_as_date => $::form->{transdate} || $::form->current_date, extend_automatically_by => 12, active => 1, + email_subject => GenericTranslations->get(language_id => $lang_id, + translation_type =>"preset_text_periodic_invoices_email_subject"), + email_body => GenericTranslations->get(language_id => $lang_id, + translation_type =>"preset_text_periodic_invoices_email_body"), }; }