|
Lines 155-167
use C4::Members;
Link Here
|
| 155 |
|
155 |
|
| 156 |
=head1 DESCRIPTION |
156 |
=head1 DESCRIPTION |
| 157 |
|
157 |
|
| 158 |
This module contains routines for adding, modifying and deleting members/patrons/borrowers |
158 |
This module contains routines for adding, modifying and deleting members/patrons/borrowers |
| 159 |
|
159 |
|
| 160 |
=head1 FUNCTIONS |
160 |
=head1 FUNCTIONS |
| 161 |
|
161 |
|
| 162 |
=head2 Search |
162 |
=head2 Search |
| 163 |
|
163 |
|
| 164 |
$borrowers_result_array_ref = &Search($filter,$orderby, $limit, |
164 |
$borrowers_result_array_ref = &Search($filter,$orderby, $limit, |
| 165 |
$columns_out, $search_on_fields,$searchtype); |
165 |
$columns_out, $search_on_fields,$searchtype); |
| 166 |
|
166 |
|
| 167 |
Looks up patrons (borrowers) on filter. A wrapper for SearchInTable('borrowers'). |
167 |
Looks up patrons (borrowers) on filter. A wrapper for SearchInTable('borrowers'). |
|
Lines 379-385
sub GetMemberDetails {
Link Here
|
| 379 |
$borrower->{'authflags'} = $accessflagshash; |
379 |
$borrower->{'authflags'} = $accessflagshash; |
| 380 |
|
380 |
|
| 381 |
# For the purposes of making templates easier, we'll define a |
381 |
# For the purposes of making templates easier, we'll define a |
| 382 |
# 'showname' which is the alternate form the user's first name if |
382 |
# 'showname' which is the alternate form the user's first name if |
| 383 |
# 'other name' is defined. |
383 |
# 'other name' is defined. |
| 384 |
if ($borrower->{category_type} eq 'I') { |
384 |
if ($borrower->{category_type} eq 'I') { |
| 385 |
$borrower->{'showname'} = $borrower->{'othernames'}; |
385 |
$borrower->{'showname'} = $borrower->{'othernames'}; |
|
Lines 441-447
The following will be set where applicable:
Link Here
|
| 441 |
$flags->{WAITING}->{message} Message -- deprecated |
441 |
$flags->{WAITING}->{message} Message -- deprecated |
| 442 |
$flags->{WAITING}->{itemlist} ref-to-array: list of available items |
442 |
$flags->{WAITING}->{itemlist} ref-to-array: list of available items |
| 443 |
|
443 |
|
| 444 |
=over |
444 |
=over |
| 445 |
|
445 |
|
| 446 |
=item C<$flags-E<gt>{ODUES}-E<gt>{itemlist}> is a reference-to-array listing the |
446 |
=item C<$flags-E<gt>{ODUES}-E<gt>{itemlist}> is a reference-to-array listing the |
| 447 |
overdue items. Its elements are references-to-hash, each describing an |
447 |
overdue items. Its elements are references-to-hash, each describing an |
|
Lines 457-463
fields from the reserves table of the Koha database.
Link Here
|
| 457 |
|
457 |
|
| 458 |
=back |
458 |
=back |
| 459 |
|
459 |
|
| 460 |
All the "message" fields that include language generated in this function are deprecated, |
460 |
All the "message" fields that include language generated in this function are deprecated, |
| 461 |
because such strings belong properly in the display layer. |
461 |
because such strings belong properly in the display layer. |
| 462 |
|
462 |
|
| 463 |
The "message" field that comes from the DB is OK. |
463 |
The "message" field that comes from the DB is OK. |
|
Lines 572-578
sub GetMember {
Link Here
|
| 572 |
my $dbh = C4::Context->dbh; |
572 |
my $dbh = C4::Context->dbh; |
| 573 |
my $select = |
573 |
my $select = |
| 574 |
q{SELECT borrowers.*, categories.category_type, categories.description |
574 |
q{SELECT borrowers.*, categories.category_type, categories.description |
| 575 |
FROM borrowers |
575 |
FROM borrowers |
| 576 |
LEFT JOIN categories on borrowers.categorycode=categories.categorycode WHERE }; |
576 |
LEFT JOIN categories on borrowers.categorycode=categories.categorycode WHERE }; |
| 577 |
my $more_p = 0; |
577 |
my $more_p = 0; |
| 578 |
my @values = (); |
578 |
my @values = (); |
|
Lines 722-729
sub GetMemberIssuesAndFines {
Link Here
|
| 722 |
my $issue_count = $sth->fetchrow_arrayref->[0]; |
722 |
my $issue_count = $sth->fetchrow_arrayref->[0]; |
| 723 |
|
723 |
|
| 724 |
$sth = $dbh->prepare( |
724 |
$sth = $dbh->prepare( |
| 725 |
"SELECT COUNT(*) FROM issues |
725 |
"SELECT COUNT(*) FROM issues |
| 726 |
WHERE borrowernumber = ? |
726 |
WHERE borrowernumber = ? |
| 727 |
AND date_due < now()" |
727 |
AND date_due < now()" |
| 728 |
); |
728 |
); |
| 729 |
$sth->execute($borrowernumber); |
729 |
$sth->execute($borrowernumber); |
|
Lines 994-1002
sub changepassword {
Link Here
|
| 994 |
$sth->execute( $uid, $digest, $member ); |
994 |
$sth->execute( $uid, $digest, $member ); |
| 995 |
$resultcode=1; |
995 |
$resultcode=1; |
| 996 |
} |
996 |
} |
| 997 |
|
997 |
|
| 998 |
logaction("MEMBERS", "CHANGE PASS", $member, "") if C4::Context->preference("BorrowersLog"); |
998 |
logaction("MEMBERS", "CHANGE PASS", $member, "") if C4::Context->preference("BorrowersLog"); |
| 999 |
return $resultcode; |
999 |
return $resultcode; |
| 1000 |
} |
1000 |
} |
| 1001 |
|
1001 |
|
| 1002 |
|
1002 |
|
|
Lines 1068-1074
sub fixup_cardnumber {
Link Here
|
| 1068 |
my ($result) = $sth->fetchrow; |
1068 |
my ($result) = $sth->fetchrow; |
| 1069 |
return $result + 1; |
1069 |
return $result + 1; |
| 1070 |
} |
1070 |
} |
| 1071 |
return $cardnumber; # just here as a fallback/reminder |
1071 |
return $cardnumber; # just here as a fallback/reminder |
| 1072 |
} |
1072 |
} |
| 1073 |
|
1073 |
|
| 1074 |
=head2 GetGuarantees |
1074 |
=head2 GetGuarantees |
|
Lines 1098-1111
sub GetGuarantees {
Link Here
|
| 1098 |
$sth->execute($borrowernumber); |
1098 |
$sth->execute($borrowernumber); |
| 1099 |
|
1099 |
|
| 1100 |
my @dat; |
1100 |
my @dat; |
| 1101 |
my $data = $sth->fetchall_arrayref({}); |
1101 |
my $data = $sth->fetchall_arrayref({}); |
| 1102 |
return ( scalar(@$data), $data ); |
1102 |
return ( scalar(@$data), $data ); |
| 1103 |
} |
1103 |
} |
| 1104 |
|
1104 |
|
| 1105 |
=head2 UpdateGuarantees |
1105 |
=head2 UpdateGuarantees |
| 1106 |
|
1106 |
|
| 1107 |
&UpdateGuarantees($parent_borrno); |
1107 |
&UpdateGuarantees($parent_borrno); |
| 1108 |
|
1108 |
|
| 1109 |
|
1109 |
|
| 1110 |
C<&UpdateGuarantees> borrower data for an adult and updates all the guarantees |
1110 |
C<&UpdateGuarantees> borrower data for an adult and updates all the guarantees |
| 1111 |
with the modified information |
1111 |
with the modified information |
|
Lines 1118-1124
sub UpdateGuarantees {
Link Here
|
| 1118 |
my $dbh = C4::Context->dbh; |
1118 |
my $dbh = C4::Context->dbh; |
| 1119 |
my ( $count, $guarantees ) = GetGuarantees( $data{'borrowernumber'} ); |
1119 |
my ( $count, $guarantees ) = GetGuarantees( $data{'borrowernumber'} ); |
| 1120 |
foreach my $guarantee (@$guarantees){ |
1120 |
foreach my $guarantee (@$guarantees){ |
| 1121 |
my $guaquery = qq|UPDATE borrowers |
1121 |
my $guaquery = qq|UPDATE borrowers |
| 1122 |
SET address=?,fax=?,B_city=?,mobile=?,city=?,phone=? |
1122 |
SET address=?,fax=?,B_city=?,mobile=?,city=?,phone=? |
| 1123 |
WHERE borrowernumber=? |
1123 |
WHERE borrowernumber=? |
| 1124 |
|; |
1124 |
|; |
|
Lines 1240-1253
sub GetAllIssues {
Link Here
|
| 1240 |
my $dbh = C4::Context->dbh; |
1240 |
my $dbh = C4::Context->dbh; |
| 1241 |
my $query = |
1241 |
my $query = |
| 1242 |
'SELECT *, issues.timestamp as issuestimestamp, issues.renewals AS renewals,items.renewals AS totalrenewals,items.timestamp AS itemstimestamp |
1242 |
'SELECT *, issues.timestamp as issuestimestamp, issues.renewals AS renewals,items.renewals AS totalrenewals,items.timestamp AS itemstimestamp |
| 1243 |
FROM issues |
1243 |
FROM issues |
| 1244 |
LEFT JOIN items on items.itemnumber=issues.itemnumber |
1244 |
LEFT JOIN items on items.itemnumber=issues.itemnumber |
| 1245 |
LEFT JOIN biblio ON items.biblionumber=biblio.biblionumber |
1245 |
LEFT JOIN biblio ON items.biblionumber=biblio.biblionumber |
| 1246 |
LEFT JOIN biblioitems ON items.biblioitemnumber=biblioitems.biblioitemnumber |
1246 |
LEFT JOIN biblioitems ON items.biblioitemnumber=biblioitems.biblioitemnumber |
| 1247 |
WHERE borrowernumber=? |
1247 |
WHERE borrowernumber=? |
| 1248 |
UNION ALL |
1248 |
UNION ALL |
| 1249 |
SELECT *, old_issues.timestamp as issuestimestamp, old_issues.renewals AS renewals,items.renewals AS totalrenewals,items.timestamp AS itemstimestamp |
1249 |
SELECT *, old_issues.timestamp as issuestimestamp, old_issues.renewals AS renewals,items.renewals AS totalrenewals,items.timestamp AS itemstimestamp |
| 1250 |
FROM old_issues |
1250 |
FROM old_issues |
| 1251 |
LEFT JOIN items on items.itemnumber=old_issues.itemnumber |
1251 |
LEFT JOIN items on items.itemnumber=old_issues.itemnumber |
| 1252 |
LEFT JOIN biblio ON items.biblionumber=biblio.biblionumber |
1252 |
LEFT JOIN biblio ON items.biblionumber=biblio.biblionumber |
| 1253 |
LEFT JOIN biblioitems ON items.biblioitemnumber=biblioitems.biblioitemnumber |
1253 |
LEFT JOIN biblioitems ON items.biblioitemnumber=biblioitems.biblioitemnumber |
|
Lines 1283-1290
sub GetMemberAccountRecords {
Link Here
|
| 1283 |
my @acctlines; |
1283 |
my @acctlines; |
| 1284 |
my $numlines = 0; |
1284 |
my $numlines = 0; |
| 1285 |
my $strsth = qq( |
1285 |
my $strsth = qq( |
| 1286 |
SELECT * |
1286 |
SELECT * |
| 1287 |
FROM accountlines |
1287 |
FROM accountlines |
| 1288 |
WHERE borrowernumber=?); |
1288 |
WHERE borrowernumber=?); |
| 1289 |
$strsth.=" ORDER BY date desc,timestamp DESC"; |
1289 |
$strsth.=" ORDER BY date desc,timestamp DESC"; |
| 1290 |
my $sth= $dbh->prepare( $strsth ); |
1290 |
my $sth= $dbh->prepare( $strsth ); |
|
Lines 1362-1372
sub GetBorNotifyAcctRecord {
Link Here
|
| 1362 |
my @acctlines; |
1362 |
my @acctlines; |
| 1363 |
my $numlines = 0; |
1363 |
my $numlines = 0; |
| 1364 |
my $sth = $dbh->prepare( |
1364 |
my $sth = $dbh->prepare( |
| 1365 |
"SELECT * |
1365 |
"SELECT * |
| 1366 |
FROM accountlines |
1366 |
FROM accountlines |
| 1367 |
WHERE borrowernumber=? |
1367 |
WHERE borrowernumber=? |
| 1368 |
AND notify_id=? |
1368 |
AND notify_id=? |
| 1369 |
AND amountoutstanding != '0' |
1369 |
AND amountoutstanding != '0' |
| 1370 |
ORDER BY notify_id,accounttype |
1370 |
ORDER BY notify_id,accounttype |
| 1371 |
"); |
1371 |
"); |
| 1372 |
|
1372 |
|
|
Lines 1519-1526
sub getidcity {
Link Here
|
| 1519 |
|
1519 |
|
| 1520 |
$email = GetFirstValidEmailAddress($borrowernumber); |
1520 |
$email = GetFirstValidEmailAddress($borrowernumber); |
| 1521 |
|
1521 |
|
| 1522 |
Return the first valid email address for a borrower, given the borrowernumber. For now, the order |
1522 |
Return the first valid email address for a borrower, given the borrowernumber. For now, the order |
| 1523 |
is defined as email, emailpro, B_email. Returns the empty string if the borrower has no email |
1523 |
is defined as email, emailpro, B_email. Returns the empty string if the borrower has no email |
| 1524 |
addresses. |
1524 |
addresses. |
| 1525 |
|
1525 |
|
| 1526 |
=cut |
1526 |
=cut |
|
Lines 1572-1578
sub GetNoticeEmailAddress {
Link Here
|
| 1572 |
return $data->{'primaryemail'} || ''; |
1572 |
return $data->{'primaryemail'} || ''; |
| 1573 |
} |
1573 |
} |
| 1574 |
|
1574 |
|
| 1575 |
=head2 GetExpiryDate |
1575 |
=head2 GetExpiryDate |
| 1576 |
|
1576 |
|
| 1577 |
$expirydate = GetExpiryDate($categorycode, $dateenrolled); |
1577 |
$expirydate = GetExpiryDate($categorycode, $dateenrolled); |
| 1578 |
|
1578 |
|
|
Lines 1668-1683
sub GetBorrowercategory {
Link Here
|
| 1668 |
if ($catcode){ |
1668 |
if ($catcode){ |
| 1669 |
my $sth = |
1669 |
my $sth = |
| 1670 |
$dbh->prepare( |
1670 |
$dbh->prepare( |
| 1671 |
"SELECT description,dateofbirthrequired,upperagelimit,category_type |
1671 |
"SELECT description,dateofbirthrequired,upperagelimit,category_type |
| 1672 |
FROM categories |
1672 |
FROM categories |
| 1673 |
WHERE categorycode = ?" |
1673 |
WHERE categorycode = ?" |
| 1674 |
); |
1674 |
); |
| 1675 |
$sth->execute($catcode); |
1675 |
$sth->execute($catcode); |
| 1676 |
my $data = |
1676 |
my $data = |
| 1677 |
$sth->fetchrow_hashref; |
1677 |
$sth->fetchrow_hashref; |
| 1678 |
return $data; |
1678 |
return $data; |
| 1679 |
} |
1679 |
} |
| 1680 |
return; |
1680 |
return; |
| 1681 |
} # sub getborrowercategory |
1681 |
} # sub getborrowercategory |
| 1682 |
|
1682 |
|
| 1683 |
|
1683 |
|
|
Lines 1880-1886
sub GetCities {
Link Here
|
| 1880 |
|
1880 |
|
| 1881 |
Returns the authorized value details |
1881 |
Returns the authorized value details |
| 1882 |
C<&$lib>return value of authorized value details |
1882 |
C<&$lib>return value of authorized value details |
| 1883 |
C<&$sortvalue>this is the value of authorized value |
1883 |
C<&$sortvalue>this is the value of authorized value |
| 1884 |
C<&$category>this is the value of authorized value category |
1884 |
C<&$category>this is the value of authorized value category |
| 1885 |
|
1885 |
|
| 1886 |
=cut |
1886 |
=cut |
|
Lines 1888-1895
C<&$category>this is the value of authorized value category
Link Here
|
| 1888 |
sub GetSortDetails { |
1888 |
sub GetSortDetails { |
| 1889 |
my ( $category, $sortvalue ) = @_; |
1889 |
my ( $category, $sortvalue ) = @_; |
| 1890 |
my $dbh = C4::Context->dbh; |
1890 |
my $dbh = C4::Context->dbh; |
| 1891 |
my $query = qq|SELECT lib |
1891 |
my $query = qq|SELECT lib |
| 1892 |
FROM authorised_values |
1892 |
FROM authorised_values |
| 1893 |
WHERE category=? |
1893 |
WHERE category=? |
| 1894 |
AND authorised_value=? |; |
1894 |
AND authorised_value=? |; |
| 1895 |
my $sth = $dbh->prepare($query); |
1895 |
my $sth = $dbh->prepare($query); |
|
Lines 1937-1944
sub DelMember {
Link Here
|
| 1937 |
#warn "in delmember with $borrowernumber"; |
1937 |
#warn "in delmember with $borrowernumber"; |
| 1938 |
return unless $borrowernumber; # borrowernumber is mandatory. |
1938 |
return unless $borrowernumber; # borrowernumber is mandatory. |
| 1939 |
|
1939 |
|
| 1940 |
my $query = qq|DELETE |
1940 |
my $query = qq|DELETE |
| 1941 |
FROM reserves |
1941 |
FROM reserves |
| 1942 |
WHERE borrowernumber=?|; |
1942 |
WHERE borrowernumber=?|; |
| 1943 |
my $sth = $dbh->prepare($query); |
1943 |
my $sth = $dbh->prepare($query); |
| 1944 |
$sth->execute($borrowernumber); |
1944 |
$sth->execute($borrowernumber); |
|
Lines 1973-1980
sub ExtendMemberSubscriptionTo {
Link Here
|
| 1973 |
$date = GetExpiryDate( $borrower->{'categorycode'}, $date ); |
1973 |
$date = GetExpiryDate( $borrower->{'categorycode'}, $date ); |
| 1974 |
} |
1974 |
} |
| 1975 |
my $sth = $dbh->do(<<EOF); |
1975 |
my $sth = $dbh->do(<<EOF); |
| 1976 |
UPDATE borrowers |
1976 |
UPDATE borrowers |
| 1977 |
SET dateexpiry='$date' |
1977 |
SET dateexpiry='$date' |
| 1978 |
WHERE borrowernumber='$borrowerid' |
1978 |
WHERE borrowernumber='$borrowerid' |
| 1979 |
EOF |
1979 |
EOF |
| 1980 |
|
1980 |
|
|
Lines 2080-2087
sub GetHideLostItemsPreference {
Link Here
|
| 2080 |
my $query = "SELECT hidelostitems FROM borrowers,categories WHERE borrowers.categorycode = categories.categorycode AND borrowernumber = ?"; |
2080 |
my $query = "SELECT hidelostitems FROM borrowers,categories WHERE borrowers.categorycode = categories.categorycode AND borrowernumber = ?"; |
| 2081 |
my $sth = $dbh->prepare($query); |
2081 |
my $sth = $dbh->prepare($query); |
| 2082 |
$sth->execute($borrowernumber); |
2082 |
$sth->execute($borrowernumber); |
| 2083 |
my $hidelostitems = $sth->fetchrow; |
2083 |
my $hidelostitems = $sth->fetchrow; |
| 2084 |
return $hidelostitems; |
2084 |
return $hidelostitems; |
| 2085 |
} |
2085 |
} |
| 2086 |
|
2086 |
|
| 2087 |
=head2 GetBorrowersToExpunge |
2087 |
=head2 GetBorrowersToExpunge |
|
Lines 2105-2115
sub GetBorrowersToExpunge {
Link Here
|
| 2105 |
my $filtercategory = $params->{'category_code'}; |
2105 |
my $filtercategory = $params->{'category_code'}; |
| 2106 |
my $filterbranch = $params->{'branchcode'} || |
2106 |
my $filterbranch = $params->{'branchcode'} || |
| 2107 |
((C4::Context->preference('IndependentBranches') |
2107 |
((C4::Context->preference('IndependentBranches') |
| 2108 |
&& C4::Context->userenv |
2108 |
&& C4::Context->userenv |
| 2109 |
&& !C4::Context->IsSuperLibrarian() |
2109 |
&& !C4::Context->IsSuperLibrarian() |
| 2110 |
&& C4::Context->userenv->{branch}) |
2110 |
&& C4::Context->userenv->{branch}) |
| 2111 |
? C4::Context->userenv->{branch} |
2111 |
? C4::Context->userenv->{branch} |
| 2112 |
: ""); |
2112 |
: ""); |
| 2113 |
|
2113 |
|
| 2114 |
my $dbh = C4::Context->dbh; |
2114 |
my $dbh = C4::Context->dbh; |
| 2115 |
my $query = " |
2115 |
my $query = " |
|
Lines 2119-2125
sub GetBorrowersToExpunge {
Link Here
|
| 2119 |
FROM borrowers |
2119 |
FROM borrowers |
| 2120 |
JOIN categories USING (categorycode) |
2120 |
JOIN categories USING (categorycode) |
| 2121 |
LEFT JOIN old_issues USING (borrowernumber) |
2121 |
LEFT JOIN old_issues USING (borrowernumber) |
| 2122 |
LEFT JOIN issues USING (borrowernumber) |
2122 |
LEFT JOIN issues USING (borrowernumber) |
| 2123 |
WHERE category_type <> 'S' |
2123 |
WHERE category_type <> 'S' |
| 2124 |
AND borrowernumber NOT IN (SELECT guarantorid FROM borrowers WHERE guarantorid IS NOT NULL AND guarantorid <> 0) |
2124 |
AND borrowernumber NOT IN (SELECT guarantorid FROM borrowers WHERE guarantorid IS NOT NULL AND guarantorid <> 0) |
| 2125 |
"; |
2125 |
"; |
|
Lines 2144-2156
sub GetBorrowersToExpunge {
Link Here
|
| 2144 |
warn $query if $debug; |
2144 |
warn $query if $debug; |
| 2145 |
|
2145 |
|
| 2146 |
my $sth = $dbh->prepare($query); |
2146 |
my $sth = $dbh->prepare($query); |
| 2147 |
if (scalar(@query_params)>0){ |
2147 |
if (scalar(@query_params)>0){ |
| 2148 |
$sth->execute(@query_params); |
2148 |
$sth->execute(@query_params); |
| 2149 |
} |
2149 |
} |
| 2150 |
else { |
2150 |
else { |
| 2151 |
$sth->execute; |
2151 |
$sth->execute; |
| 2152 |
} |
2152 |
} |
| 2153 |
|
2153 |
|
| 2154 |
my @results; |
2154 |
my @results; |
| 2155 |
while ( my $data = $sth->fetchrow_hashref ) { |
2155 |
while ( my $data = $sth->fetchrow_hashref ) { |
| 2156 |
push @results, $data; |
2156 |
push @results, $data; |
|
Lines 2169-2181
I<$result> is a ref to an array which all elements are a hasref.
Link Here
|
| 2169 |
=cut |
2169 |
=cut |
| 2170 |
|
2170 |
|
| 2171 |
sub GetBorrowersWhoHaveNeverBorrowed { |
2171 |
sub GetBorrowersWhoHaveNeverBorrowed { |
| 2172 |
my $filterbranch = shift || |
2172 |
my $filterbranch = shift || |
| 2173 |
((C4::Context->preference('IndependentBranches') |
2173 |
((C4::Context->preference('IndependentBranches') |
| 2174 |
&& C4::Context->userenv |
2174 |
&& C4::Context->userenv |
| 2175 |
&& !C4::Context->IsSuperLibrarian() |
2175 |
&& !C4::Context->IsSuperLibrarian() |
| 2176 |
&& C4::Context->userenv->{branch}) |
2176 |
&& C4::Context->userenv->{branch}) |
| 2177 |
? C4::Context->userenv->{branch} |
2177 |
? C4::Context->userenv->{branch} |
| 2178 |
: ""); |
2178 |
: ""); |
| 2179 |
my $dbh = C4::Context->dbh; |
2179 |
my $dbh = C4::Context->dbh; |
| 2180 |
my $query = " |
2180 |
my $query = " |
| 2181 |
SELECT borrowers.borrowernumber,max(timestamp) as latestissue |
2181 |
SELECT borrowers.borrowernumber,max(timestamp) as latestissue |
|
Lines 2184-2203
sub GetBorrowersWhoHaveNeverBorrowed {
Link Here
|
| 2184 |
WHERE issues.borrowernumber IS NULL |
2184 |
WHERE issues.borrowernumber IS NULL |
| 2185 |
"; |
2185 |
"; |
| 2186 |
my @query_params; |
2186 |
my @query_params; |
| 2187 |
if ($filterbranch && $filterbranch ne ""){ |
2187 |
if ($filterbranch && $filterbranch ne ""){ |
| 2188 |
$query.=" AND borrowers.branchcode= ?"; |
2188 |
$query.=" AND borrowers.branchcode= ?"; |
| 2189 |
push @query_params,$filterbranch; |
2189 |
push @query_params,$filterbranch; |
| 2190 |
} |
2190 |
} |
| 2191 |
warn $query if $debug; |
2191 |
warn $query if $debug; |
| 2192 |
|
2192 |
|
| 2193 |
my $sth = $dbh->prepare($query); |
2193 |
my $sth = $dbh->prepare($query); |
| 2194 |
if (scalar(@query_params)>0){ |
2194 |
if (scalar(@query_params)>0){ |
| 2195 |
$sth->execute(@query_params); |
2195 |
$sth->execute(@query_params); |
| 2196 |
} |
2196 |
} |
| 2197 |
else { |
2197 |
else { |
| 2198 |
$sth->execute; |
2198 |
$sth->execute; |
| 2199 |
} |
2199 |
} |
| 2200 |
|
2200 |
|
| 2201 |
my @results; |
2201 |
my @results; |
| 2202 |
while ( my $data = $sth->fetchrow_hashref ) { |
2202 |
while ( my $data = $sth->fetchrow_hashref ) { |
| 2203 |
push @results, $data; |
2203 |
push @results, $data; |
|
Lines 2219-2243
This hashref is containt the number of time this borrowers has borrowed before I
Link Here
|
| 2219 |
sub GetBorrowersWithIssuesHistoryOlderThan { |
2219 |
sub GetBorrowersWithIssuesHistoryOlderThan { |
| 2220 |
my $dbh = C4::Context->dbh; |
2220 |
my $dbh = C4::Context->dbh; |
| 2221 |
my $date = shift ||POSIX::strftime("%Y-%m-%d",localtime()); |
2221 |
my $date = shift ||POSIX::strftime("%Y-%m-%d",localtime()); |
| 2222 |
my $filterbranch = shift || |
2222 |
my $filterbranch = shift || |
| 2223 |
((C4::Context->preference('IndependentBranches') |
2223 |
((C4::Context->preference('IndependentBranches') |
| 2224 |
&& C4::Context->userenv |
2224 |
&& C4::Context->userenv |
| 2225 |
&& !C4::Context->IsSuperLibrarian() |
2225 |
&& !C4::Context->IsSuperLibrarian() |
| 2226 |
&& C4::Context->userenv->{branch}) |
2226 |
&& C4::Context->userenv->{branch}) |
| 2227 |
? C4::Context->userenv->{branch} |
2227 |
? C4::Context->userenv->{branch} |
| 2228 |
: ""); |
2228 |
: ""); |
| 2229 |
my $query = " |
2229 |
my $query = " |
| 2230 |
SELECT count(borrowernumber) as n,borrowernumber |
2230 |
SELECT count(borrowernumber) as n,borrowernumber |
| 2231 |
FROM old_issues |
2231 |
FROM old_issues |
| 2232 |
WHERE returndate < ? |
2232 |
WHERE returndate < ? |
| 2233 |
AND borrowernumber IS NOT NULL |
2233 |
AND borrowernumber IS NOT NULL |
| 2234 |
"; |
2234 |
"; |
| 2235 |
my @query_params; |
2235 |
my @query_params; |
| 2236 |
push @query_params, $date; |
2236 |
push @query_params, $date; |
| 2237 |
if ($filterbranch){ |
2237 |
if ($filterbranch){ |
| 2238 |
$query.=" AND branchcode = ?"; |
2238 |
$query.=" AND branchcode = ?"; |
| 2239 |
push @query_params, $filterbranch; |
2239 |
push @query_params, $filterbranch; |
| 2240 |
} |
2240 |
} |
| 2241 |
$query.=" GROUP BY borrowernumber "; |
2241 |
$query.=" GROUP BY borrowernumber "; |
| 2242 |
warn $query if $debug; |
2242 |
warn $query if $debug; |
| 2243 |
my $sth = $dbh->prepare($query); |
2243 |
my $sth = $dbh->prepare($query); |
|
Lines 2263-2272
This hashref is containt the number of time this borrowers has borrowed before I
Link Here
|
| 2263 |
|
2263 |
|
| 2264 |
sub GetBorrowersNamesAndLatestIssue { |
2264 |
sub GetBorrowersNamesAndLatestIssue { |
| 2265 |
my $dbh = C4::Context->dbh; |
2265 |
my $dbh = C4::Context->dbh; |
| 2266 |
my @borrowernumbers=@_; |
2266 |
my @borrowernumbers=@_; |
| 2267 |
my $query = " |
2267 |
my $query = " |
| 2268 |
SELECT surname,lastname, phone, email,max(timestamp) |
2268 |
SELECT surname,lastname, phone, email,max(timestamp) |
| 2269 |
FROM borrowers |
2269 |
FROM borrowers |
| 2270 |
LEFT JOIN issues ON borrowers.borrowernumber=issues.borrowernumber |
2270 |
LEFT JOIN issues ON borrowers.borrowernumber=issues.borrowernumber |
| 2271 |
GROUP BY borrowernumber |
2271 |
GROUP BY borrowernumber |
| 2272 |
"; |
2272 |
"; |
| 2273 |
- |
|
|