[Koha-patches] [PATCH 2/2] Bug 7175: Allow to choose which items to receive
julian.maurice at biblibre.com
julian.maurice at biblibre.com
Fri Jan 13 17:13:35 CET 2012
From: Julian Maurice <julian.maurice at biblibre.com>
If AcqCreateItem=ordering, when you receive an order, you now have a
list of all created items and checkboxes that permit you to choose which
items you want to receive.
A 'Edit' link open additem.pl page in a popup to allow you edit the
items before receiving them (popup is automatically closed after
modification, and orderreceive.pl page is reloaded to show
modifications)
---
C4/Acquisition.pm | 41 ++++++++++-
acqui/finishreceive.pl | 13 +++-
acqui/orderreceive.pl | 15 +++-
cataloguing/additem.pl | 1 +
.../prog/en/modules/acqui/orderreceive.tt | 75 +++++++++++++++++---
.../prog/en/modules/cataloguing/additem.tt | 9 +++
6 files changed, 132 insertions(+), 22 deletions(-)
diff --git a/C4/Acquisition.pm b/C4/Acquisition.pm
index 2814977..ac0bde0 100644
--- a/C4/Acquisition.pm
+++ b/C4/Acquisition.pm
@@ -56,7 +56,7 @@ BEGIN {
&ModReceiveOrder &ModOrderBiblioitemNumber
&GetCancelledOrders
- &NewOrderItem &ModOrderItem
+ &NewOrderItem &ModOrderItem &ModItemOrder
&GetParcels &GetParcel
&GetContracts &GetContract
@@ -1017,6 +1017,29 @@ sub ModOrderItem {
return 0;
}
+=head3 ModItemOrder
+
+ ModItemOrder($itemnumber, $ordernumber);
+
+Modifies the ordernumber of an item in aqorders_items.
+
+=cut
+
+sub ModItemOrder {
+ my ($itemnumber, $ordernumber) = @_;
+
+ return unless ($itemnumber and $ordernumber);
+
+ my $dbh = C4::Context->dbh;
+ my $query = qq{
+ UPDATE aqorders_items
+ SET ordernumber = ?
+ WHERE itemnumber = ?
+ };
+ my $sth = $dbh->prepare($query);
+ return $sth->execute($ordernumber, $itemnumber);
+}
+
#------------------------------------------------------------#
@@ -1102,7 +1125,7 @@ C<$ordernumber>.
sub ModReceiveOrder {
my (
$biblionumber, $ordernumber, $quantrec, $user, $cost,
- $invoiceno, $freight, $rrp, $budget_id, $datereceived
+ $invoiceno, $freight, $rrp, $budget_id, $datereceived, $received_items
)
= @_;
my $dbh = C4::Context->dbh;
@@ -1148,7 +1171,19 @@ sub ModReceiveOrder {
$order->{'quantity'} -= $quantrec;
$order->{'quantityreceived'} = 0;
my $newOrder = NewOrder($order);
-} else {
+ # Change ordernumber in aqorders_items for items not received
+ my @orderitems = GetItemnumbersFromOrder( $order->{'ordernumber'} );
+ my $count = scalar @orderitems;
+
+ for (my $i=0; $i<$count; $i++){
+ foreach (@$received_items){
+ splice (@orderitems, $i, 1) if ($orderitems[$i] == $_);
+ }
+ }
+ foreach (@orderitems) {
+ ModItemOrder($_, $newOrder);
+ }
+ } else {
$sth=$dbh->prepare("update aqorders
set quantityreceived=?,datereceived=?,booksellerinvoicenumber=?,
unitprice=?,freight=?,rrp=?
diff --git a/acqui/finishreceive.pl b/acqui/finishreceive.pl
index 71b13d6..25e6e63 100755
--- a/acqui/finishreceive.pl
+++ b/acqui/finishreceive.pl
@@ -108,10 +108,15 @@ if ($quantityrec > $origquantityrec ) {
my ($biblionumber,$bibitemnum,$itemnumber) = AddItemFromMarc($record,$biblionumber);
}
}
-
+
+ my @received_items = ();
+ if(C4::Context->preference('AcqCreateItem') eq 'ordering') {
+ @received_items = $input->param('items_to_receive');
+ }
+
# save the quantity received.
- if( $quantityrec > 0 ) {
- $datereceived = ModReceiveOrder($biblionumber,$ordernumber, $quantityrec ,$user,$unitprice,$invoiceno,$freight,$replacement,undef,$datereceived);
- }
+ if( $quantityrec > 0 ) {
+ $datereceived = ModReceiveOrder($biblionumber,$ordernumber, $quantityrec ,$user,$unitprice,$invoiceno,$freight,$replacement,undef,$datereceived, \@received_items);
+ }
}
print $input->redirect("/cgi-bin/koha/acqui/parcel.pl?invoice=$invoiceno&supplierid=$supplierid&freight=$freight&gst=$gst&datereceived=$datereceived$error_url_str");
diff --git a/acqui/orderreceive.pl b/acqui/orderreceive.pl
index dc03a1d..c4bab7f 100755
--- a/acqui/orderreceive.pl
+++ b/acqui/orderreceive.pl
@@ -111,17 +111,23 @@ my $count = scalar @$results;
# prepare the form for receiving
if ( $count == 1 ) {
my $order = $results->[0];
- if (C4::Context->preference('AcqCreateItem') eq 'receiving') {
+ my $AcqCreateItem = C4::Context->preference('AcqCreateItem');
+ if ($AcqCreateItem eq 'receiving') {
# prepare empty item form
my $cell = PrepareItemrecordDisplay('','','','ACQ');
unless ($cell) {
$cell = PrepareItemrecordDisplay('','','','');
$template->param('NoACQframework' => 1);
}
- my @itemloop;
- push @itemloop,$cell;
- $template->param(items => \@itemloop);
+ $template->param(itemform => $cell);
+ } elsif ($AcqCreateItem eq 'ordering') {
+ my @itemnumbers = GetItemnumbersFromOrder($order->{ordernumber});
+ my @items;
+ foreach (@itemnumbers) {
+ push @items, GetItem($_);
+ }
+ $template->param(items => \@items);
}
if ( $order->{'unitprice'} == 0 ) {
@@ -134,6 +140,7 @@ if ( $count == 1 ) {
my $budget = GetBudget( $order->{'budget_id'} );
$template->param(
+ AcqCreateItem => $AcqCreateItem,
count => 1,
biblionumber => $order->{'biblionumber'},
ordernumber => $order->{'ordernumber'},
diff --git a/cataloguing/additem.pl b/cataloguing/additem.pl
index a734d0f..089550b 100755
--- a/cataloguing/additem.pl
+++ b/cataloguing/additem.pl
@@ -729,6 +729,7 @@ $template->param(
itemtagsubfield => $itemtagsubfield,
op => $nextop,
opisadd => ($nextop eq "saveitem") ? 0 : 1,
+ popup => $input->param('popup') ? 1: 0,
C4::Search::enabled_staff_search_views,
);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/orderreceive.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/orderreceive.tt
index ea422c8..aac58ea 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/orderreceive.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/orderreceive.tt
@@ -2,6 +2,31 @@
<title>Koha › Acquisitions › Receipt summary for : [% name %] [% IF ( invoice ) %]invoice, [% invoice %][% END %]</title>
[% INCLUDE 'doc-head-close.inc' %]
<script type="text/javascript" src="[% themelang %]/js/additem.js"> </script>
+<script type="text/javascript">
+//<![CDATA[
+[% IF (AcqCreateItem == 'ordering') %]
+ function PopupEditPage(biblionumber, itemnumber) {
+ var url = "/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber="
+ + biblionumber + "&itemnumber=" + itemnumber + "&popup=1#edititem";
+ window.open(url);
+ }
+
+ function CalcQtyToReceive() {
+ var qty = $("input[name='items_to_receive']:checked").length;
+ $("#quantity").val(qty);
+ }
+[% END %]
+
+$(document).ready(function() {
+ [% IF (AcqCreateItem == 'ordering') %]
+ $("input[name='items_to_receive']").change(function() {
+ CalcQtyToReceive();
+ });
+ CalcQtyToReceive();
+ [% END %]
+});
+//]]>
+</script>
</head>
<body>
[% INCLUDE 'header.inc' %]
@@ -35,17 +60,46 @@
[% seriestitle %]</li>
</ol>
</fieldset>
- [% IF ( items ) %]
+ [% IF (AcqCreateItem == 'ordering') %]
+ [% IF (items.size) %]
+ <fieldset class="rows">
+ <legend>Items</legend>
+ <table>
+ <thead>
+ <tr>
+ <th>Receive?</th>
+ <th>Barcode</th>
+ <th>Home branch</th>
+ <th>Location</th>
+ <th>Call number</th>
+ <th> </th>
+ </tr>
+ </thead>
+ <tbody>
+ [% FOREACH item IN items %]
+ <tr>
+ <td style="text-align:center"><input type="checkbox" name="items_to_receive" value="[% item.itemnumber %]" /></td>
+ <td>[% item.barcode %]</td>
+ <td>[% item.homebranch %]</td>
+ <td>[% item.location %]</td>
+ <td>[% item.itemcallnumber %]</td>
+ <td><a style="cursor:pointer" onclick="PopupEditPage([% item.biblionumber %],[% item.itemnumber %]);">Edit</a></td>
+ </tr>
+ [% END %]
+ </tbody>
+ </table>
+ </fieldset>
+ [% END %]
+ [% ELSIF (AcqCreateItem == 'receiving') %]
<fieldset class="rows">
<legend>Item</legend>
[% IF ( NoACQframework ) %]
<p class="required">No ACQ framework, using default. You should create a framework with code ACQ, the items framework would be used</p>
[% END %]
- [% FOREACH item IN items %]
<div id="outeritemblock">
<div id="itemblock">
- <ol>[% FOREACH iteminformatio IN item.iteminformation %]<li style="[% iteminformatio.hidden %];">
+ <ol>[% FOREACH iteminformatio IN itemform.iteminformation %]<li style="[% iteminformatio.hidden %];">
<div class="subfield_line" id="subfield[% iteminformatio.serialid %][% iteminformatio.countitems %][% iteminformatio.subfield %][% iteminformatio.random %]">
<label>[% iteminformatio.subfield %] - [% IF ( iteminformatio.mandatory ) %]<b>[% END %][% iteminformatio.marc_lib %][% IF ( iteminformatio.mandatory ) %] *</b>[% END %]</label>
@@ -62,21 +116,20 @@
</div></li>
[% END %]
</ol>
- <a class="addItem" onclick="cloneItemBlock('itemblock[% item.itemBlockIndex %]')">Add</a>
- <a class="delItem" style="display:none;" onclick="deleteItemBlock('itemblock[% item.itemBlockIndex %]')">Delete</a>
+ <a class="addItem" onclick="cloneItemBlock('itemblock[% itemform.itemBlockIndex %]')">Add</a>
+ <a class="delItem" style="display:none;" onclick="deleteItemBlock('itemblock[% itemform.itemBlockIndex %]')">Delete</a>
</div><!-- /iteminformation -->
</div>
<input type="hidden" name="moditem" value="" />
- <input type="hidden" name="tag" value="[% item.itemtagfield %]" />
- <input type="hidden" name="subfield" value="[% item.itemtagsubfield %]" />
- <input type="hidden" name="serial" value="[% item.serialid %]" />
- <input type="hidden" name="bibnum" value="[% item.biblionumber %]" />
+ <input type="hidden" name="tag" value="[% itemform.itemtagfield %]" />
+ <input type="hidden" name="subfield" value="[% itemform.itemtagsubfield %]" />
+ <input type="hidden" name="serial" value="[% itemform.serialid %]" />
+ <input type="hidden" name="bibnum" value="[% itemform.biblionumber %]" />
<input type="hidden" name="itemid" value="1" />
- <input type="hidden" name="field_value" value="[% item.itemnumber %]" />
+ <input type="hidden" name="field_value" value="[% itemform.itemnumber %]" />
[% END %] <!-- /items -->
</fieldset>
- [% END %] <!-- items -->
<input type="hidden" name="biblionumber" value="[% biblionumber %]" />
<input type="hidden" name="ordernumber" value="[% ordernumber %]" />
<input type="hidden" name="biblioitemnumber" value="[% biblioitemnumber %]" />
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt
index 673b08b..7454129 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt
@@ -4,6 +4,12 @@
<script type="text/javascript">
//<![CDATA[
$(document).ready(function(){
+ [% IF (popup) %]
+ [% IF (opisadd) %]
+ window.opener.location.reload(true);
+ window.close();
+ [% END %]
+ [% END %]
$("fieldset.rows input").keydown(function(e){ return checkEnter(e); });
/* Inline edit/delete links */
var biblionumber = $("input[name='biblionumber']").attr("value");
@@ -227,6 +233,9 @@ function set_to_today(id, force) {
<div id="cataloguing_additem_newitem">
<form method="post" action="/cgi-bin/koha/cataloguing/additem.pl" name="f">
<input type="hidden" name="op" value="[% op %]" />
+ [% IF (popup) %]
+ <input type="hidden" name="popup" value="1" />
+ [% END %]
<input type="hidden" name="biblionumber" value="[% biblionumber %]" />
[% IF ( opisadd ) %]
<h2 id="additema">Add Item</h2>
--
1.7.8.3
More information about the Koha-patches
mailing list