From fcf17922167d438643675e3b9ebab9b4a651d76f Mon Sep 17 00:00:00 2001 From: Julian Maurice Date: Wed, 28 Mar 2012 17:01:07 +0200 Subject: [PATCH] Bug 7178: Follow-up Improve order item creation Move SQL code from Perl script to Perl module Replace SHOW COLUMNS by $dbh->column_info() Update total on neworderempty.pl when adding or deleting items Signed-off-by: Katrin Fischer Tested ok for ordering and receiving items. Total updated correctly. Note: There are lots of errors in the logs before and after applying the patch. A follow up is needed. Signed-off-by: Chris Cormack --- C4/Items.pm | 38 +++++++++++++++++++ acqui/check_uniqueness.pl | 27 +++---------- koha-tmpl/intranet-tmpl/prog/en/js/additem.js | 4 +- .../prog/en/modules/acqui/neworderempty.tt | 9 ++++- 4 files changed, 53 insertions(+), 25 deletions(-) diff --git a/C4/Items.pm b/C4/Items.pm index 52423a27d5..65a2bcc93a 100644 --- a/C4/Items.pm +++ b/C4/Items.pm @@ -81,6 +81,7 @@ BEGIN { GetAnalyticsCount GetItemHolds + SearchItems PrepareItemrecordDisplay @@ -2517,6 +2518,43 @@ sub GetItemHolds { $holds = $sth->fetchrow; return $holds; } + +# Return the list of the column names of items table +sub _get_items_columns { + my $dbh = C4::Context->dbh; + my $sth = $dbh->column_info(undef, undef, 'items', '%'); + $sth->execute; + my $results = $sth->fetchall_hashref('COLUMN_NAME'); + return keys %$results; +} + +=head2 SearchItems + + my $items = SearchItems($field, $value); + +SearchItems will search for items on a specific given field. +For instance you can search all items with a specific stocknumber like this: + + my $items = SearchItems('stocknumber', $stocknumber); + +=cut + +sub SearchItems { + my ($field, $value) = @_; + + my $dbh = C4::Context->dbh; + my @columns = _get_items_columns; + my $results = []; + if(0 < grep /^$field$/, @columns) { + my $query = "SELECT $field FROM items WHERE $field = ?"; + my $sth = $dbh->prepare( $query ); + $sth->execute( $value ); + $results = $sth->fetchall_arrayref({}); + } + return $results; +} + + =head1 OTHER FUNCTIONS =head2 _find_value diff --git a/acqui/check_uniqueness.pl b/acqui/check_uniqueness.pl index 95b19924da..626004868a 100755 --- a/acqui/check_uniqueness.pl +++ b/acqui/check_uniqueness.pl @@ -33,36 +33,21 @@ use Modern::Perl; use CGI; use JSON; -use C4::Context; use C4::Output; -use C4::Auth; +use C4::Items; my $input = new CGI; my @field = $input->param('field'); my @value = $input->param('value'); -my $dbh = C4::Context->dbh; - -my $query = "SHOW COLUMNS FROM items"; -my $sth = $dbh->prepare($query); -$sth->execute; -my $results = $sth->fetchall_hashref('Field'); -my @columns = keys %$results; - my $r = {}; -my $index = 0; -for my $f ( @field ) { - if(0 < grep /^$f$/, @columns) { - $query = "SELECT $f FROM items WHERE $f = ?"; - $sth = $dbh->prepare( $query ); - $sth->execute( $value[$index] ); - my @values = $sth->fetchrow_array; +my $i = 0; +for ( my $i=0; $i<@field; $i++ ) { + my $items = C4::Items::SearchItems($field[$i], $value[$i]); - if ( @values ) { - push @{ $r->{$f} }, $values[0]; - } + if ( @$items ) { + push @{ $r->{$field[$i]} }, $value[$i]; } - $index++; } output_with_http_headers $input, undef, to_json($r), 'json'; diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/additem.js b/koha-tmpl/intranet-tmpl/prog/en/js/additem.js index 859fe024fe..2d72de7f41 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/js/additem.js +++ b/koha-tmpl/intranet-tmpl/prog/en/js/additem.js @@ -13,7 +13,7 @@ function addItem( node, unique_item_fields ) { cloneItemBlock(index, unique_item_fields); addItemInList(index, unique_item_fields); $("#" + index).find("a[name='buttonPlus']").text("Update"); - $("#quantity").val(current_qty + 1); + $("#quantity").val(current_qty + 1).change(); } else if ( current_qty >= max_qty ) { alert(window.MSG_ADDITEM_JS_CANT_RECEIVE_MORE_ITEMS || "You can't receive any more items."); @@ -87,7 +87,7 @@ function deleteItemBlock(node_a, index, unique_item_fields) { } else { max_qty = 99999; } - $("#quantity").val(current_qty - 1); + $("#quantity").val(current_qty - 1).change(); $(node_a).parents('tr').remove(); if(current_qty - 1 == 0) $("#items_list").hide(); diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt index 8aec465d9e..4cd6b4984f 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt @@ -104,6 +104,11 @@ $(document).ready(function() [% IF (AcqCreateItemOrdering) %] cloneItemBlock(0, '[% UniqueItemFields %]'); [% END %] + + $("#quantity").change(function() { + calcNeworderTotal(); + }); + //We apply the fonction only for modify option [% IF ( quantityrec ) %] $('#quantity').blur(function() @@ -376,9 +381,9 @@ $(document).ready(function() [% ELSE %] [% IF (AcqCreateItemOrdering) %] - + [% ELSE %] - + [% END %] [% END %] -- 2.39.5