Bug 9045 : Adding --where parameter to filter what kind of borrowers to export and --separator to choose a specific caracter for patron export

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Tested, works as advertised. Note, to use tab character as a separater,
do this: -s $'\t'

Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Comments on second patch.
Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com>
This commit is contained in:
Sophie Meynieux 2012-11-09 18:02:33 +01:00 committed by Jared Camins-Esakov
parent 58067fcc98
commit 74090b8d39
1 changed files with 15 additions and 3 deletions

View File

@ -37,14 +37,20 @@ $basename
It prints to standard output. Use redirection to save CSV in a file.
Usage:
$0 [--field=FIELD [--field=FIELD [...]]] [--show-header]
$0 [--field=FIELD [--field=FIELD [...]]] [--separator=CHAR] [--show-header] [--where=CONDITION]
$0 -h
-f, --field=FIELD Field to export. It is repeatable and has to match
keys returned by the GetMemberDetails function.
If no field is specified, then all fields will be
exported.
-s, --separator=CHAR This character will be used to separate fields.
Some characters like | or ; will need to be escaped
in the parameter setting, like -s=\\| or -s=\\;
If no separator is specifield, a comma will be used.
-H, --show-header Print field names on first row
-w, --where=CONDITION Condition to filter borrowers to export
(SQL where clause)
-h, --help Show this help
USAGE
@ -52,12 +58,16 @@ USAGE
# Getting parameters
my @fields;
my $separator;
my $show_header;
my $where;
my $help;
GetOptions(
'field|f=s' => \@fields,
'separator|s=s' => \$separator,
'show-header|H' => \$show_header,
'where|w=s' => \$where,
'help|h' => \$help
) or print_usage, exit 1;
@ -68,11 +78,13 @@ if ($help) {
# Getting borrowers
my $dbh = C4::Context->dbh;
my $query = "SELECT borrowernumber FROM borrowers ORDER BY borrowernumber";
my $query = "SELECT borrowernumber FROM borrowers";
$query .= " WHERE $where" if ($where);
$query .= " ORDER BY borrowernumber";
my $sth = $dbh->prepare($query);
$sth->execute;
my $csv = Text::CSV->new( { binary => 1 } );
my $csv = Text::CSV->new( { sep_char => $separator, binary => 1 } );
# If the user did not specify any field to export, we assume he wants them all
# We retrieve the first borrower informations to get field names