X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fap.pl;h=425816f6ee8467c32f39b48d8eaebc5d19741130;hb=70539eb46c15dd0cb8e7965cc5090c90510ff18d;hp=038c5741f829b13eb5c0e71f549033523b4f8fb7;hpb=828152603e15160cca294ffc941ab0f9307d1def;p=kivitendo-erp.git diff --git a/bin/mozilla/ap.pl b/bin/mozilla/ap.pl index 038c5741f..425816f6e 100644 --- a/bin/mozilla/ap.pl +++ b/bin/mozilla/ap.pl @@ -154,6 +154,12 @@ sub load_record_template { $::form->{$_} = $form_defaults->{$_} for keys %{ $form_defaults // {} }; flash('info', $::locale->text("The record template '#1' has been loaded.", $template->template_name)); + flash('info', $::locale->text("Payment bookings disallowed. After the booking this record may be " . + "suggested with the amount of '#1' or otherwise has to be choosen manually." . + " No automatic payment booking will be done to chart '#2'.", + $form_defaults->{paid_1_suggestion}, + $form_defaults->{AP_paid_1_suggestion}, + )) if $::form->{no_payment_bookings}; update( keep_rows_without_amount => 1, @@ -435,6 +441,11 @@ sub form_header { my $transdate = $::form->{transdate} ? DateTime->from_kivitendo($::form->{transdate}) : DateTime->today_local; my $first_taxchart; + # $form->{totalpaid} is used by the action bar setup to determine + # whether or not canceling is allowed. Therefore it must be + # calculated prior to the action bar setup. + $form->{totalpaid} = sum map { $form->{"paid_${_}"} } (1..$form->{paidaccounts}); + setup_ap_display_form_action_bar(); $form->header(); @@ -446,9 +457,8 @@ sub form_header { $form->{"tax_$i"} = $form->format_amount(\%myconfig, $form->{"tax_$i"}, 2); my ($default_taxchart, $taxchart_to_use); - my $amount_chart_id = $form->{"AP_amount_chart_id_$i"} || $default_ap_amount_chart_id; - my $chart_has_changed = $::form->{"previous_AP_amount_chart_id_$i"} && ($amount_chart_id != $::form->{"previous_AP_amount_chart_id_$i"}); - my @taxcharts = GL->get_active_taxes_for_chart($amount_chart_id, $transdate); + my $amount_chart_id = $form->{"AP_amount_chart_id_$i"} || $default_ap_amount_chart_id; + my @taxcharts = GL->get_active_taxes_for_chart($amount_chart_id, $transdate); foreach my $item (@taxcharts) { my $key = $item->id . "--" . $item->rate; @@ -457,7 +467,7 @@ sub form_header { $taxchart_to_use = $item if $key eq $form->{"taxchart_$i"}; } - $taxchart_to_use = $default_taxchart // $first_taxchart if $chart_has_changed || !$taxchart_to_use; + $taxchart_to_use //= $default_taxchart // $first_taxchart; my $selected_taxchart = $taxchart_to_use->id . '--' . $taxchart_to_use->rate; $form->{"selected_taxchart_$i"} = $selected_taxchart; $form->{"AP_amount_chart_id_$i"} = $amount_chart_id; @@ -483,8 +493,6 @@ sub form_header { $form->{invtotal_unformatted} = $form->{invtotal}; $form->{invtotal} = $form->format_amount(\%myconfig, $form->{invtotal}, 2); - $form->{totalpaid} = 0; - _sort_payments(); if ( $form->{'paid_'. $form->{paidaccounts}} ) { @@ -495,8 +503,6 @@ sub form_header { $form->{accno_arap} = IS->get_standard_accno_current_assets(\%myconfig, \%$form); for my $i (1 .. $form->{paidaccounts}) { - $form->{totalpaid} += $form->{"paid_$i"}; - # format amounts if ($form->{"paid_$i"}) { $form->{"paid_$i"} = $form->format_amount(\%myconfig, $form->{"paid_$i"}, 2); @@ -633,6 +639,10 @@ sub update { if (($form->{previous_vendor_id} || $form->{vendor_id}) != $form->{vendor_id}) { IR->get_vendor(\%::myconfig, $form); + if (($form->{rowcount} == 1) && ($form->{amount_1} == 0)) { + my $last_used_ap_chart = SL::DB::Vendor->load_cached($form->{vendor_id})->last_used_ap_chart; + $form->{"AP_amount_chart_id_1"} = $last_used_ap_chart->id if $last_used_ap_chart; + } } $form->{rowcount} = $count + ($params{dont_add_new_row} ? 0 : 1); @@ -813,8 +823,9 @@ sub post { $form->{what_done} = "invoice"; $form->save_history; } - # /saving the history - # Dieser Text wird niemals ausgegeben: Probleme beim redirect? + # no restore_from_session_id needed. we like to have a newly generated + # list of invoices for bank transactions + print $form->redirect_header($form->{callback}) if ($form->{callback} =~ /BankTransaction/); $form->redirect($locale->text('AP transaction posted.')) unless $inline; } else { $form->error($locale->text('Cannot post transaction!')); @@ -904,7 +915,7 @@ sub search { my %myconfig = %main::myconfig; my $locale = $main::locale; - $form->{title} = $locale->text('AP Transactions'); + $form->{title} = $locale->text('Vendor Invoices & AP Transactions'); $form->get_lists(projects => { "key" => "ALL_PROJECTS", "all" => 1 }); @@ -914,6 +925,8 @@ sub search { $::request->layout->add_javascripts("autocomplete_project.js"); + setup_ap_search_action_bar(); + $form->header; print $form->parse_html_template('ap/search', { %myconfig }); @@ -954,7 +967,7 @@ sub ap_transactions { AP->ap_transactions(\%myconfig, \%$form); - $form->{title} = $locale->text('AP Transactions'); + $form->{title} = $locale->text('Vendor Invoices & AP Transactions'); my $report = SL::ReportGenerator->new(\%myconfig, $form); @@ -992,7 +1005,7 @@ sub ap_transactions { 'ustid' => { 'text' => $locale->text('USt-IdNr.'), }, 'taxzone' => { 'text' => $locale->text('Tax rate'), }, 'payment_terms' => { 'text' => $locale->text('Payment Terms'), }, - 'charts' => { 'text' => $locale->text('Buchungskonto'), }, + 'charts' => { 'text' => $locale->text('Chart'), }, 'direct_debit' => { 'text' => $locale->text('direct debit'), }, ); @@ -1029,7 +1042,6 @@ sub ap_transactions { push @options, $locale->text('Closed') if ($form->{closed}); $report->set_options('top_info_text' => join("\n", @options), - 'raw_bottom_info_text' => $form->parse_html_template('ap/ap_transactions_bottom'), 'output_format' => 'HTML', 'title' => $form->{title}, 'attachment_basename' => $locale->text('vendor_invoice_list') . strftime('_%Y%m%d', localtime time), @@ -1104,6 +1116,7 @@ sub ap_transactions { $report->add_separator(); $report->add_data(create_subtotal_row(\%totals, \@columns, \%column_alignment, \@subtotal_columns, 'listtotal')); + setup_ap_transactions_action_bar(); $report->generate_with_headers(); $main::lxdebug->leave_sub(); @@ -1142,6 +1155,40 @@ sub storno { $main::lxdebug->leave_sub(); } +sub setup_ap_search_action_bar { + my %params = @_; + + for my $bar ($::request->layout->get('actionbar')) { + $bar->add( + action => [ + $::locale->text('Search'), + submit => [ '#form', { action => "ap_transactions" } ], + accesskey => 'enter', + ], + ); + } +} + +sub setup_ap_transactions_action_bar { + my %params = @_; + + for my $bar ($::request->layout->get('actionbar')) { + $bar->add( + combobox => [ + action => [ t8('Add') ], + link => [ + t8('Purchase Invoice'), + link => [ 'ir.pl?action=add' ], + ], + link => [ + t8('AP Transaction'), + link => [ 'ap.pl?action=add' ], + ], + ], # end of combobox "Add" + ); + } +} + sub setup_ap_display_form_action_bar { my $transdate = $::form->datetonum($::form->{transdate}, \%::myconfig); my $closedto = $::form->datetonum($::form->{closedto}, \%::myconfig);