use Modern::Perl;
use CGI qw ( -utf8 );
use C4::Auth;
-use C4::Branch;
use C4::Koha;
use C4::Members;
use C4::Members::Attributes;
use C4::Members::AttributeTypes qw/GetAttributeTypes_hashref/;
use C4::Output;
use List::MoreUtils qw /any uniq/;
+use Koha::DateUtils qw( dt_from_string );
use Koha::List::Patron;
+use Koha::Libraries;
+use Koha::Patron::Categories;
+use Koha::Patrons;
my $input = new CGI;
my $op = $input->param('op') || 'show_form';
my @patron_attributes_values;
my @patron_attributes_codes;
my $patron_attribute_types = C4::Members::AttributeTypes::GetAttributeTypes_hashref('all');
- my $patron_categories = C4::Members::GetBorrowercategoryList;
+ my @patron_categories = Koha::Patron::Categories->search_limited({}, {order_by => ['description']});
for ( values %$patron_attribute_types ) {
my $attr_type = C4::Members::AttributeTypes->fetch( $_->{code} );
+ # TODO Repeatable attributes are not correctly managed and can cause data lost.
+ # This should be implemented.
+ next if $attr_type->{repeatable};
+ next if $attr_type->{unique_id}; # Don't display patron attributes that must be unqiue
my $options = $attr_type->authorised_value_category
? GetAuthorisedValues( $attr_type->authorised_value_category )
: undef;
my $category_code = $_->{category_code};
my ( $category_lib ) = map {
- ( defined $category_code and $_->{categorycode} eq $category_code ) ? $_->{description} : ()
- } @$patron_categories;
+ ( defined $category_code and $_->categorycode eq $category_code ) ? $_->description : ()
+ } @patron_categories;
push @patron_attributes_codes,
{
attribute_code => $_->{code},
if @notfoundcardnumbers;
# Construct drop-down list values
- my $branches = GetBranchesLoop;
+ my $branches = Koha::Libraries->search({}, { order_by => ['branchname'] })->unblessed;
my @branches_option;
- push @branches_option, { value => $_->{value}, lib => $_->{branchname} } for @$branches;
+ push @branches_option, { value => $_->{branchcode}, lib => $_->{branchname} } for @$branches;
unshift @branches_option, { value => "", lib => "" };
- my $categories = GetBorrowercategoryList;
my @categories_option;
- push @categories_option, { value => $_->{categorycode}, lib => $_->{description} } for @$categories;
+ push @categories_option, { value => $_->categorycode, lib => $_->description } for @patron_categories;
unshift @categories_option, { value => "", lib => "" };
my $bsort1 = GetAuthorisedValues("Bsort1");
my @sort1_option;
type => "text",
mandatory => ( grep /borrowernotes/, @mandatoryFields ) ? 1 : 0,
}
+ ,
+ {
+ name => "opacnote",
+ type => "text",
+ mandatory => ( grep /opacnote/, @mandatoryFields ) ? 1 : 0,
+ }
);
$template->param('patron_attributes_codes', \@patron_attributes_codes);
# Process modifications
if ( $op eq 'do' ) {
- my @disabled = $input->param('disable_input');
+ my @disabled = $input->multi_param('disable_input');
my $infos;
- for my $field ( qw/surname firstname branchcode categorycode city state zipcode country sort1 sort2 dateenrolled dateexpiry borrowernotes/ ) {
+ for my $field ( qw/surname firstname branchcode categorycode city state zipcode country sort1 sort2 dateenrolled dateexpiry borrowernotes opacnote/ ) {
my $value = $input->param($field);
$infos->{$field} = $value if $value;
$infos->{$field} = "" if grep { /^$field$/ } @disabled;
}
- my @attributes = $input->param('patron_attributes');
- my @attr_values = $input->param('patron_attributes_value');
+ for my $field ( qw( dateenrolled dateexpiry ) ) {
+ $infos->{$field} = dt_from_string($infos->{$field}) if $infos->{$field};
+ }
+
+ my @attributes = $input->multi_param('patron_attributes');
+ my @attr_values = $input->multi_param('patron_attributes_value');
my @errors;
- my @borrowernumbers = $input->param('borrowernumber');
+ my @borrowernumbers = $input->multi_param('borrowernumber');
# For each borrower selected
for my $borrowernumber ( @borrowernumbers ) {
# If at least one field are filled, we want to modify the borrower
}
}
- #
- my $borrower_categorycode = GetBorrowerCategorycode $borrowernumber;
+ my $borrower_categorycode = Koha::Patrons->find( $borrowernumber )->categorycode;
my $i=0;
for ( @attributes ) {
my $attribute;
sub GetBorrowerInfos {
my ( %info ) = @_;
- my $borrower = GetMember( %info );
- if ( $borrower ) {
- $borrower->{branchname} = GetBranchName( $borrower->{branchcode} );
+ my $patron = Koha::Patrons->find( \%info );
+ my $borrower;
+ if ( $patron ) {
+ $borrower = $patron->unblessed;
for ( qw(dateenrolled dateexpiry) ) {
my $userdate = $borrower->{$_};
unless ($userdate && $userdate ne "0000-00-00" and $userdate ne "9999-12-31") {
}
$borrower->{$_} = $userdate || '';
}
- $borrower->{category_description} = GetBorrowercategory( $borrower->{categorycode} )->{description};
+ $borrower->{category_description} = $patron->category->description;
my $attr_loop = C4::Members::Attributes::GetBorrowerAttributes( $borrower->{borrowernumber} );
$borrower->{patron_attributes} = $attr_loop;
}