bug 4211: more fixes to suggestion letter template handling

* Now displays the correct list of fields to choose
  for suggestion letters.
* Clean up mixture of old and new column selection code
  introduced in commit 88bb1b63, thereby restoring
  the intent of the patch for bug 3522.
* Enable suggestion library to be used in suggestion
  letter templates

Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
This commit is contained in:
Galen Charlton 2010-11-13 15:43:27 -05:00 committed by Chris Cormack
parent b1c2d560b6
commit 994d6e2aac
2 changed files with 5 additions and 55 deletions

View file

@ -383,6 +383,7 @@ sub ModSuggestion {
if ($$suggestion{STATUS}){
my $letter=C4::Letters::getletter('suggestions',$suggestion->{STATUS});
if ($letter){
C4::Letters::parseletter($letter, 'branches', $suggestion->{branchcode});
C4::Letters::parseletter($letter, 'borrowers', $suggestion->{suggestedby});
C4::Letters::parseletter($letter, 'suggestions', $suggestion->{suggestionid});
C4::Letters::parseletter($letter, 'biblio', $suggestion->{biblionumber});

View file

@ -47,42 +47,6 @@ 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 {
@ -182,26 +146,7 @@ sub add_form {
$template->param( adding => 1 );
}
# add acquisition specific tables
my @SQLfieldname;
my $field_selection;
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');
if ($module eq 'reserves') {
push @{$field_selection}, add_fields('borrowers', 'reserves', 'biblio', 'items');
@ -220,6 +165,9 @@ sub add_form {
push @{$field_selection}, {value => "biblio.$_", text => ucfirst $_ };
}
}
elsif ($module eq 'suggestions') {
push @{$field_selection}, add_fields('suggestions', 'borrowers', 'biblio');
}
else {
push @{$field_selection}, add_fields('biblio','biblioitems'),
{value => q{}, text => '---ITEMS---' },
@ -340,6 +288,7 @@ sub get_columns_for {
aqorders => '---ORDERS---',
serial => '---SERIALS---',
reserves => '---HOLDS---',
suggestions => '---SUGGESTIONS---',
);
my @fields = ();
if (exists $column_map{$table} ) {