#======================================================================
use SL::FU;
+use SL::Helper::Flash qw(flash_later);
use SL::IR;
use SL::IS;
use SL::DB::BankTransactionAccTrans;
# end of main
sub _may_view_or_edit_this_invoice {
- return 1 if $::auth->assert('ap_transactions', 1); # may edit all invoices
- return 0 if !$::form->{id}; # creating new invoices isn't allowed without invoice_edit
- return 0 if !$::form->{globalproject_id}; # existing records without a project ID are not allowed
+ return 1 if $::auth->assert('ap_transactions', 1); # may edit all invoices
+ return 0 if !$::form->{id}; # creating new invoices isn't allowed without invoice_edit
+ return 1 if $::auth->assert('purchase_invoice_view', 1); # viewing is allowed with this right
+ return 0 if !$::form->{globalproject_id}; # existing records without a project ID are not allowed
return SL::DB::Project->new(id => $::form->{globalproject_id})->load->may_employee_view_project_invoices(SL::DB::Manager::Employee->current);
}
$is_linked_bank_transaction = 1;
}
+
+ my $create_post_action = sub {
+ # $_[0]: description
+ # $_[1]: after_action
+ action => [
+ $_[0],
+ submit => [ '#form', { action => "post", after_action => $_[1] } ],
+ checks => [ 'kivi.validate_form' ],
+ checks => [ 'kivi.validate_form', 'kivi.AP.check_fields_before_posting', 'kivi.AP.check_duplicate_invnumber' ],
+ disabled => !$may_edit_create ? t8('You must not change this invoice.')
+ : $form->{locked} ? t8('The billing period has already been locked.')
+ : $form->{storno} ? t8('A canceled invoice cannot be posted.')
+ : ($form->{id} && $change_never) ? t8('Changing invoices has been disabled in the configuration.')
+ : ($form->{id} && $change_on_same_day_only) ? t8('Invoices can only be changed on the day they are posted.')
+ : $is_linked_bank_transaction ? t8('This transaction is linked with a bank transaction. Please undo and redo the bank transaction booking if needed.')
+ : undef,
+ ],
+ };
+
+ my @post_entries;
+ if ($::instance_conf->get_ir_add_doc && $::instance_conf->get_doc_storage) {
+ @post_entries = ( $create_post_action->(t8('Post'), 'doc-tab') );
+ } elsif ($::instance_conf->get_doc_storage) {
+ @post_entries = ( $create_post_action->(t8('Post')),
+ $create_post_action->(t8('Post and upload document'), 'doc-tab') );
+ } else {
+ @post_entries = ( $create_post_action->(t8('Post')) );
+ }
+
for my $bar ($::request->layout->get('actionbar')) {
$bar->add(
action => [
accesskey => 'enter',
disabled => !$may_edit_create ? t8('You must not change this invoice.') : undef,
],
-
combobox => [
- action => [
- t8('Post'),
- submit => [ '#form', { action => "post" } ],
- checks => [ 'kivi.validate_form' ],
- checks => [ 'kivi.validate_form', 'kivi.AP.check_fields_before_posting', 'kivi.AP.check_duplicate_invnumber' ],
- disabled => !$may_edit_create ? t8('You must not change this invoice.')
- : $form->{locked} ? t8('The billing period has already been locked.')
- : $form->{storno} ? t8('A canceled invoice cannot be posted.')
- : ($form->{id} && $change_never) ? t8('Changing invoices has been disabled in the configuration.')
- : ($form->{id} && $change_on_same_day_only) ? t8('Invoices can only be changed on the day they are posted.')
- : $is_linked_bank_transaction ? t8('This transaction is linked with a bank transaction. Please undo and redo the bank transaction booking if needed.')
- : undef,
- ],
+ @post_entries,
action => [
t8('Post Payment'),
submit => [ '#form', { action => "post_payment" } ],
action => [ t8('more') ],
action => [
t8('History'),
- call => [ 'set_history_window', $::form->{id} * 1, 'id', 'glid' ],
+ call => [ 'set_history_window', $::form->{id} * 1, 'glid' ],
disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
],
action => [
$form->save_history;
}
# /saving the history
- $form->{callback} = 'ir.pl?action=edit&id=' . $form->{id};
- $form->redirect( $locale->text('Invoice')
- . " $form->{invnumber} "
- . ", " . $locale->text('ID')
- . ': ' . $form->{id} . ' '
- . $locale->text('posted!'));
+
+ my $redirect_url;
+ if ('doc-tab' eq $form->{after_action}) {
+ $redirect_url = build_std_url("script=ir.pl", 'action=edit', 'id=' . E($form->{id}), 'fragment=ui-tabs-docs');
+ } else {
+ $redirect_url = build_std_url("script=ir.pl", 'action=edit', 'id=' . E($form->{id}));
+ }
+ SL::Helper::Flash::flash_later('info',
+ $locale->text('Invoice')
+ . " $form->{invnumber} "
+ . ", " . $locale->text('ID')
+ . ': ' . $form->{id} . ' '
+ . $locale->text('posted!'));
+ print $form->redirect_header($redirect_url);
+ $::dispatcher->end_request;
}
$form->error($locale->text('Cannot post invoice!'));