$::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,
type => 'accounts_payable',
number => $form->{invnumber},
);
- my $webdav_path = $webdav->webdav_path;
my @all_objects = $webdav->get_all_objects;
@{ $form->{WEBDAV} } = map { { name => $_->filename,
type => t8('File'),
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();
$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;
$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;
$form->{invtotal_unformatted} = $form->{invtotal};
$form->{invtotal} = $form->format_amount(\%myconfig, $form->{invtotal}, 2);
- $form->{totalpaid} = 0;
-
_sort_payments();
if ( $form->{'paid_'. $form->{paidaccounts}} ) {
$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);
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);
$form->{what_done} = "invoice";
$form->save_history;
}
- # /saving the history
- # Dieser Text wird niemals ausgegeben: Probleme beim redirect?
- $form->redirect($locale->text('AP transaction posted.')) unless $inline;
+ # 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.') . ' ' . $locale->text('ID') . ': ' . $form->{id}) unless $inline;
+ # TODO Add callback/return flag in myconfig
+ # With version 3.5 we can add documents, but only after posting. there should be a flag in myconfig for the user
+ # $form->{callback} ||= 'ap.pl?action=edit&id=' . $form->{id} if $myconfig{no_reset_arap};
+
} else {
$form->error($locale->text('Cannot post transaction!'));
}
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 });
$::request->layout->add_javascripts("autocomplete_project.js");
+ setup_ap_search_action_bar();
+
$form->header;
print $form->parse_html_template('ap/search', { %myconfig });
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);
'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'), },
);
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),
$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();
$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);
my $is_closed = $transdate <= $closedto;
- my $change_never = $::instance_conf->get_ar_changeable == 0;
- my $change_on_same_day_only = $::instance_conf->get_ar_changeable == 2 && ($::form->current_date(\%::myconfig) ne $::form->{gldate});
+ my $change_never = $::instance_conf->get_ap_changeable == 0;
+ my $change_on_same_day_only = $::instance_conf->get_ap_changeable == 2 && ($::form->current_date(\%::myconfig) ne $::form->{gldate});
my $is_storno = IS->is_storno(\%::myconfig, $::form, 'ap', $::form->{id});
my $has_storno = IS->has_storno(\%::myconfig, $::form, 'ap');