Bugzilla – Attachment 2770 Details for
Bug 5418
New itemBarcodeInputFilter for libsuite8 style barcodes
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch adds a new itemBarcodeInputFilter for libsuite8 style barcodes
0001-Bug-5418-Add-a-new-itemBarcodeInputFilter-for-libsui.patch (text/plain), 9.88 KB, created by
Koustubha Kale
on 2010-11-18 06:34:46 UTC
(
hide
)
Description:
Patch adds a new itemBarcodeInputFilter for libsuite8 style barcodes
Filename:
MIME Type:
Creator:
Koustubha Kale
Created:
2010-11-18 06:34:46 UTC
Size:
9.88 KB
patch
obsolete
>From d6e9b68d44b97889c1b1b23e55ae6c2d74d99db5 Mon Sep 17 00:00:00 2001 >From: Koustubha Kale <kmkale@anantcorp.com> >Date: Thu, 18 Nov 2010 11:51:49 +0530 >Subject: [PATCH] Bug 5418: Add a new itemBarcodeInputFilter for libsuite8 style barcodes >Content-Type: text/plain; charset="utf-8" > >In India a ILS product called Libsuite8 prints barcodes like b0007432. The >barcode is not stored anywhere in libsuite8's database. Neither is barcode >available in any of the reports generated by the software. > >The barcode 'b0007432' when scanned into the libsuite8 software is >de-constructed like 'b' which is the itemtype i.e. Book in this instance, and >'7432' which is the 'Accession Number'. The software then takes the logged in >staff's branchcode and does a join on three tables 'Location', 'Media_Type', >and 'Books' to retrieve the particular record from the database. > >There is no possibility of recreating the barcodes for insertion in Koha while >doing a retrospective conversion, because of arbitrary length of the barcode >string AND arbitrary number of zeros in the numeric part of the printed barcode >AND the fact that there are no reports available from the software which >contain barcodes AND the fact that the barcode is not stored in the database. >But most importantly due to the simple fact that printed barcodes are >duplicated among branches. > >Therefore this patch emulates the functionality of Libsuite8 software of converting the scanned barcode into one stored in Koha using the itemBarcodeInputFilter system preference. > >To use this new itemBarcodeInputFilter systempreference choice called 'libsuite8', the barcodes stored in Koha must match the pattern of <branchcode>-<itemtype_code>-<accession_number>. This is easy to achieve while doing retrospective conversion from Libsuite8 to Koha. > >As expected the itemBarcodeInputFilter will return unmodified barcode is presented with a barcode of pattern <branchcode>-<itemtype_code>-<accession_number> > >The perl code in C4/Circulation.pm is ugly and NEEDS major code cleanup. All help is much appreciated.. >--- > C4/Circulation.pm | 27 +++++++++++++++++++- > circ/circulation.pl | 4 +- > installer/data/mysql/en/mandatory/sysprefs.sql | 2 +- > installer/data/mysql/updatedatabase.pl | 2 +- > .../en/modules/admin/preferences/circulation.pref | 1 + > .../prog/en/modules/circ/circulation.tmpl | 2 +- > 6 files changed, 32 insertions(+), 6 deletions(-) > >diff --git a/C4/Circulation.pm b/C4/Circulation.pm >index 10c3c11..08778ca 100644 >--- a/C4/Circulation.pm >+++ b/C4/Circulation.pm >@@ -136,7 +136,7 @@ System Pref options. > # FIXME -- these plugins should be moved out of Circulation.pm > # > sub barcodedecode { >- my ($barcode, $filter) = @_; >+ my ($barcode, $filter, $branch) = @_; > $filter = C4::Context->preference('itemBarcodeInputFilter') unless $filter; > $filter or return $barcode; # ensure filter is defined, else return untouched barcode > if ($filter eq 'whitespace') { >@@ -155,6 +155,31 @@ sub barcodedecode { > # FIXME: $barcode could be "T1", causing warning: substr outside of string > # Why drop the nonzero digit after the T? > # Why pass non-digits (or empty string) to "T%07d"? >+ } elsif ($filter eq 'libsuite8') { >+ # FIXME: This NEEDS major code cleanup. All help is much appreciated >+ use Scalar::Util qw(looks_like_number); >+ my $barcode1=$barcode; >+ my $branchcode=$branch."-"; >+ if($barcode1 =~ m/^$branchcode/){ >+ } >+ else { >+ my @chars; >+ my @nums; >+ my @m1=split(/ */, $barcode); >+ foreach (@m1){ >+ looks_like_number ($_) ? push(@nums,$_) : push(@chars,$_); >+ } >+ my @n1; >+ foreach(@nums){ >+ if($_ > 0){ >+ push(@n1,$_); >+ } >+ } >+ my ($chars) = join('',@chars); >+ my ($n1) = join('',@n1); >+ $barcode = "$branchcode" . $chars . "-" . $n1; >+ } >+ > } > return $barcode; # return barcode, modified or not > } >diff --git a/circ/circulation.pl b/circ/circulation.pl >index 7c4a0dc..b358a84 100755 >--- a/circ/circulation.pl >+++ b/circ/circulation.pl >@@ -115,8 +115,8 @@ if (C4::Context->preference("UseTablesortForCirc")) { > > my $barcode = $query->param('barcode') || ''; > $barcode =~ s/^\s*|\s*$//g; # remove leading/trailing whitespace >- >-$barcode = barcodedecode($barcode) if( $barcode && C4::Context->preference('itemBarcodeInputFilter')); >+my $filter = C4::Context->preference('itemBarcodeInputFilter') || ''; >+$barcode = barcodedecode($barcode,$filter,$branch) if( $barcode && C4::Context->preference('itemBarcodeInputFilter')); > my $stickyduedate = $query->param('stickyduedate') || $session->param('stickyduedate'); > my $duedatespec = $query->param('duedatespec') || $session->param('stickyduedate'); > my $issueconfirmed = $query->param('issueconfirmed'); >diff --git a/installer/data/mysql/en/mandatory/sysprefs.sql b/installer/data/mysql/en/mandatory/sysprefs.sql >index 214d198..1904172 100644 >--- a/installer/data/mysql/en/mandatory/sysprefs.sql >+++ b/installer/data/mysql/en/mandatory/sysprefs.sql >@@ -145,7 +145,7 @@ INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES > INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('finesMode','test','Choose the fines mode, \'off\', \'test\' (emails admin report) or \'production\' (accrue overdue fines). Requires accruefines cronjob.','off|test|production','Choice'); > INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('globalDueDate','','If set, allows a global static due date for all checkouts','10','free'); > INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('ceilingDueDate','','If set, date due will not be past this date. Enter date according to the dateformat System Preference',NULL,'free'); >-INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('itemBarcodeInputFilter','','If set, allows specification of a item barcode input filter','whitespace|T-prefix|cuecat','Choice'); >+INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('itemBarcodeInputFilter','','If set, allows specification of a item barcode input filter','whitespace|T-prefix|cuecat|libsuite8','Choice'); > INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('singleBranchMode',0,'Operate in Single-branch mode, hide branch selection in the OPAC',NULL,'YesNo'); > INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('URLLinkText','','Text to display as the link anchor in the OPAC',NULL,'free'); > INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OPACViewOthersSuggestions',0,'If ON, allows all suggestions to be displayed in the OPAC',NULL,'YesNo'); >diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl >index bf7acb6..66297db 100755 >--- a/installer/data/mysql/updatedatabase.pl >+++ b/installer/data/mysql/updatedatabase.pl >@@ -731,7 +731,7 @@ $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,ty > $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('libraryAddress','','The address to use for printing receipts, overdues, etc. if different than physical address',NULL,'free')"); > $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('finesMode','test','Choose the fines mode, test or production','test|production','Choice')"); > $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('globalDueDate','','If set, allows a global static due date for all checkouts',NULL,'free')"); >-$dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('itemBarcodeInputFilter','','If set, allows specification of a item barcode input filter','cuecat','Choice')"); >+$dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('itemBarcodeInputFilter','','If set, allows specification of a item barcode input filter','libsuite8','Choice')"); > $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('singleBranchMode',0,'Operate in Single-branch mode, hide branch selection in the OPAC',NULL,'YesNo')"); > $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('URLLinkText','','Text to display as the link anchor in the OPAC',NULL,'free')"); > $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OPACSubscriptionDisplay','economical','Specify how to display subscription information in the OPAC','economical|off|full','Choice')"); >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref >index c4d4305..46570ee 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref >@@ -14,6 +14,7 @@ Circulation: > whitespace: Remove spaces from > cuecat: Convert from CueCat form > T-prefix: Remove the first number from T-prefix style >+ libsuite8: Convert from Libsuite8 form > - scanned patron barcodes. > - > - Sort previous checkouts on the circulation page from >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tmpl >index 822de15..89874ab 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tmpl >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tmpl >@@ -301,7 +301,7 @@ function refocus(calendar) { > <!-- /TMPL_IF --> > > <!-- TMPL_IF NAME="UNKNOWN_BARCODE" --> >- <li>The barcode was not found</li> >+ <li>The barcode was not found <!-- TMPL_VAR NAME="barcode" --></li> > <!-- /TMPL_IF --> > > <!-- TMPL_IF NAME="NOT_FOR_LOAN" --> >-- >1.7.0.4 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 5418
:
2770
|
2772
|
2779
|
2780
|
2799
|
2820
|
2903
|
4308
|
4394