58edcef03d
This feature is disabled by default for all credit types. To enable it you have to set the syspref AutoCreditNumber to the value of your choice and then enable the feature for each credit type you want. System credit types can be modified too (but only this particular field can be modified) Also, throw an exception when the feature is enabled and a value for credit_number has already been set Updated test plan: Test plan: 0. Apply patch, run updatedatabase and update_dbix_class_files 1. Go to Admin » Column settings, and uncheck the 'hidden' box for column credit_number in table account-fines. It will be easier for testing 2. Create a manual credit for a borrower. Verify in Transactions tab that this credit has no number generated 3. In Admin » Credit types: a. edit the FORGIVEN type and enable credit number generation b. create a new type A, check "can be manually added" and "enable credit number" c. create a new type B, check "can be manually added". Do NOT enable credit number 4. Change syspref 'AutoCreditNumber' to 'incremental' 5. Create more manual credits with types CREDIT and B, and verify that the numbers are not generated 6. Create more manual credits with types FORGIVEN and A, and verify that the numbers generated are 1, 2, 3, ... 7. Change syspref 'AutoCreditNumber' to 'annual' 8. Create more manual credits with types CREDIT and B, and verify that the numbers are not generated 9. Create more manual credits with types FORGIVEN and A, and verify that the numbers generated are '2020-0001', '2020-0002', ... 10. Change syspref to 'AutoCreditNumber' to 'branchyyyymmincr' 11. Create more manual credits with types CREDIT and B, and verify that the numbers are not generated 12. Create more manual credits with types FORGIVEN and A, and verify that the numbers generated are 'BRANCHA2020020001', 'BRANCHA2020020002', ... (assuming you are connected to library BRANCHA, and it's February 2020) 13. Set library to another one, say BRANCHB 14. Create more manual credits with types FORGIVEN and A, and verify that the numbers generated are 'BRANCHB2020020001', 'BRANCHB2020020002', ... 15. Edit the letter ACCOUNT_CREDIT, and add [% account.credit_number %] somewhere. Go back to Transactions tab and click on 'Print' for one line that has a credit number. Make sure the number is there. 16. prove t/db_dependent/Koha/Account.t Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
137 lines
4 KiB
Perl
Executable file
137 lines
4 KiB
Perl
Executable file
#! /usr/bin/perl
|
|
|
|
# Copyright 2020 Koha Development Team
|
|
#
|
|
# This file is part of Koha.
|
|
#
|
|
# Koha is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# Koha is distributed in the hope that it will be useful, but
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with Koha; if not, see <http://www.gnu.org/licenses>.
|
|
|
|
use Modern::Perl;
|
|
use CGI qw ( -utf8 );
|
|
use Try::Tiny;
|
|
|
|
use C4::Context;
|
|
use C4::Auth;
|
|
use C4::Output;
|
|
|
|
use Koha::Account::CreditType;
|
|
use Koha::Account::CreditTypes;
|
|
|
|
my $input = new CGI;
|
|
my $code = $input->param('code');
|
|
my $op = $input->param('op') || 'list';
|
|
my @messages;
|
|
|
|
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
|
|
{
|
|
template_name => "admin/credit_types.tt",
|
|
query => $input,
|
|
type => "intranet",
|
|
authnotrequired => 0,
|
|
flagsrequired => { parameters => 'parameters_remaining_permissions' },
|
|
debug => 1,
|
|
}
|
|
);
|
|
|
|
my $credit_type;
|
|
if ($code) {
|
|
$credit_type = Koha::Account::CreditTypes->find($code);
|
|
}
|
|
|
|
if ( $op eq 'add_form' ) {
|
|
|
|
my $selected_branches =
|
|
$credit_type ? $credit_type->get_library_limits : undef;
|
|
my $branches =
|
|
Koha::Libraries->search( {}, { order_by => ['branchname'] } )->unblessed;
|
|
my @branches_loop;
|
|
foreach my $branch (@$branches) {
|
|
my $selected =
|
|
( $selected_branches
|
|
&& grep { $_->branchcode eq $branch->{branchcode} }
|
|
@{ $selected_branches->as_list } ) ? 1 : 0;
|
|
push @branches_loop,
|
|
{
|
|
branchcode => $branch->{branchcode},
|
|
branchname => $branch->{branchname},
|
|
selected => $selected,
|
|
};
|
|
}
|
|
|
|
$template->param(
|
|
credit_type => $credit_type,
|
|
branches_loop => \@branches_loop
|
|
);
|
|
}
|
|
elsif ( $op eq 'add_validate' ) {
|
|
my $description = $input->param('description');
|
|
my $can_be_added_manually = $input->param('can_be_added_manually') || 0;
|
|
my $credit_number_enabled = $input->param('credit_number_enabled') || 0;
|
|
my @branches = grep { $_ ne q{} } $input->multi_param('branches');
|
|
|
|
if ( not defined $credit_type ) {
|
|
$credit_type = Koha::Account::CreditType->new( { code => $code } );
|
|
}
|
|
unless ($credit_type->is_system) {
|
|
$credit_type->description($description);
|
|
$credit_type->can_be_added_manually($can_be_added_manually);
|
|
}
|
|
$credit_type->credit_number_enabled($credit_number_enabled);
|
|
|
|
try {
|
|
$credit_type->store;
|
|
unless ($credit_type->is_system) {
|
|
$credit_type->replace_library_limits( \@branches );
|
|
}
|
|
push @messages, { type => 'message', code => 'success_on_saving' };
|
|
}
|
|
catch {
|
|
push @messages, { type => 'error', code => 'error_on_saving' };
|
|
};
|
|
$op = 'list';
|
|
}
|
|
elsif ( $op eq 'archive' ) {
|
|
try {
|
|
$credit_type->archived(1)->store();
|
|
push @messages, { code => 'success_on_archive', type => 'message' };
|
|
}
|
|
catch {
|
|
push @messages, { code => 'error_on_archive', type => 'alert' };
|
|
|
|
};
|
|
$op = 'list';
|
|
}
|
|
elsif ( $op eq 'unarchive' ) {
|
|
try {
|
|
$credit_type->archived(0)->store();
|
|
push @messages, { code => 'success_on_restore', type => 'message' };
|
|
}
|
|
catch {
|
|
push @messages, { code => 'error_on_restore', type => 'alert' };
|
|
};
|
|
$op = 'list';
|
|
}
|
|
|
|
if ( $op eq 'list' ) {
|
|
my $credit_types = Koha::Account::CreditTypes->search();
|
|
$template->param( credit_types => $credit_types, );
|
|
}
|
|
|
|
$template->param(
|
|
code => $code,
|
|
messages => \@messages,
|
|
op => $op,
|
|
);
|
|
|
|
output_html_with_http_headers $input, $cookie, $template->output;
|