From 88bb1b635bc2b58b4c7d3d6510b35ed7f03ada3d Mon Sep 17 00:00:00 2001 From: Henri-Damien LAURENT Date: Fri, 17 Jul 2009 16:17:50 +0200 Subject: [PATCH] Adding Letters management to Suggestions. --- C4/Letters.pm | 1 + C4/Suggestions.pm | 11 ++++++-- tools/letter.pl | 66 +++++++++++++++++++++++++++++++++++++---------- 3 files changed, 63 insertions(+), 15 deletions(-) diff --git a/C4/Letters.pm b/C4/Letters.pm index 535e87d363..e3a30d598e 100644 --- a/C4/Letters.pm +++ b/C4/Letters.pm @@ -483,6 +483,7 @@ sub parseletter_sth { ($table eq 'biblio' ) ? "SELECT * FROM $table WHERE biblionumber = ?" : ($table eq 'biblioitems' ) ? "SELECT * FROM $table WHERE biblionumber = ?" : ($table eq 'items' ) ? "SELECT * FROM $table WHERE itemnumber = ?" : + ($table eq 'suggestions' ) ? "SELECT * FROM $table WHERE borrowernumber = ? and biblionumber = ?" : ($table eq 'reserves' ) ? "SELECT * FROM $table WHERE borrowernumber = ? and biblionumber = ?" : ($table eq 'borrowers' ) ? "SELECT * FROM $table WHERE borrowernumber = ?" : ($table eq 'branches' ) ? "SELECT * FROM $table WHERE branchcode = ?" : diff --git a/C4/Suggestions.pm b/C4/Suggestions.pm index 47da70b1a4..9741a8485f 100644 --- a/C4/Suggestions.pm +++ b/C4/Suggestions.pm @@ -43,8 +43,6 @@ our @EXPORT = qw< &SearchSuggestion >; use C4::Dates qw(format_date_in_iso); ->>>>>>> Suggestions.pm, probably useless & not working (check with hdl):C4/Suggestions.pm ->>>>>>> Suggestions.pm, probably useless & not working (check with hdl):C4/Suggestions.pm use vars qw($VERSION @ISA @EXPORT); BEGIN { @@ -62,6 +60,15 @@ BEGIN { &ModSuggestion &ConnectSuggestionAndBiblio &GetSuggestionFromBiblionumber + &ConnectSuggestionAndBiblio + &CountSuggestion + &DelSuggestion + &GetSuggestion + &GetSuggestionByStatus + &GetSuggestionFromBiblionumber + &ModStatus + &ModSuggestion + &NewSuggestion ); } diff --git a/tools/letter.pl b/tools/letter.pl index 94fc2f5879..c980dce16f 100755 --- a/tools/letter.pl +++ b/tools/letter.pl @@ -46,6 +46,42 @@ use C4::Auth; use C4::Context; use C4::Output; +sub StringSearch { + my ($searchstring) = @_; + my $dbh = C4::Context->dbh; + $searchstring =~ s/\'/\\\'/g; + my @data = split( ' ', $searchstring ); + $data[0] = '' unless @data; + my $sth = $dbh->prepare("SELECT * FROM letter WHERE (code LIKE ?) ORDER BY module, code"); + $sth->execute("$data[0]%"); # slightly bogus, only searching on first string. + return $sth->fetchall_arrayref({}); +} + +# FIXME untranslateable +our %column_map = ( + aqbooksellers => 'BOOKSELLERS', + aqorders => 'ORDERS', + serial => 'SERIALS', + reserves => 'HOLDS', + suggestions => 'SUGGESTIONS', +); + +sub column_picks ($) { + # returns @array of values + my $table = shift or return (); + my $sth = C4::Context->dbh->prepare("SHOW COLUMNS FROM $table"); + $sth->execute; + my @SQLfieldname = (); + push @SQLfieldname, {'value' => "", 'text' => '---' . uc($column_map{$table} || $table) . '---'}; + while (my ($field) = $sth->fetchrow_array) { + push @SQLfieldname, { + value => $table . ".$field", + text => $table . ".$field" + }; + } + return @SQLfieldname; +} + # letter_exists($module, $code) # - return true if a letter with the given $module and $code exists sub letter_exists { @@ -145,19 +181,23 @@ sub add_form { $template->param( adding => 1 ); } - # build field list - my $field_selection = [ - { - value => 'LibrarianFirstname', - text => 'LibrarianFirstname', - }, - { - value => 'LibrarianSurname', - text => 'LibrarianSurname', - }, - { - value => 'LibrarianEmailaddress', - text => 'LibrarianEmailaddress', + # add acquisition specific tables + if ( $module eq "suggestions" ) { + push @SQLfieldname, column_picks('borrowers'), + column_picks('suggestions'), + column_picks('aqbooksellers'), + column_picks('biblio'), + column_picks('items'); + } + elsif ( $module eq "reserves" ) { + push @SQLfieldname, column_picks('borrowers'), + column_picks('reserves'), + column_picks('biblio'), + column_picks('items'); + } + elsif ( index( $module, "acquisition" ) > 0 ) { # FIXME: imprecise comparison + push @SQLfieldname, column_picks('aqbooksellers'), column_picks('aqorders'); + # add issues specific tables } ]; push @{$field_selection}, add_fields('branches'); -- 2.39.5