fix for 1431 point 2: orders and orders_items also moved to new biblionumber now

This commit is contained in:
John Soros 2009-07-02 16:22:19 +02:00 committed by Henri-Damien LAURENT
parent a456bfd2da
commit 2d90fb22d4
2 changed files with 79 additions and 22 deletions

View File

@ -45,7 +45,7 @@ BEGIN {
&GetPendingOrders &GetOrder &GetOrders
&GetOrderNumber &GetLateOrders &NewOrder &DelOrder
&SearchOrder &GetHistory &GetRecentAcqui
&ModOrder &ModReceiveOrder &ModOrderBiblioitemNumber
&ModOrder &ModOrderItem &ModReceiveOrder &ModOrderBiblioitemNumber
&NewOrderItem
@ -970,6 +970,45 @@ sub ModOrder {
#------------------------------------------------------------#
=head3 ModOrderItem
=over 4
&ModOrderItem(\%hashref);
=over 2
Modifies the itemnumber in the aqorders_items table. The input hash needs three entities:
- itemnumber: the old itemnumber
- ordernumber: the order this item is attached to
- newitemnumber: the new itemnumber we want to attach the line to
=back
=back
=cut
sub ModOrderItem {
my $orderiteminfo = shift;
if (! $orderiteminfo->{'ordernumber'} || ! $orderiteminfo->{'itemnumber'} || ! $orderiteminfo->{'newitemnumber'}){
die "Ordernumber, itemnumber and newitemnumber is required";
}
my $dbh = C4::Context->dbh;
my $query = "UPDATE aqorders_items set itemnumber=? where itemnumber=? and ordernumber=?";
my @params = ($orderiteminfo->{'newitemnumber'}, $orderiteminfo->{'itemnumber'}, $orderiteminfo->{'ordernumber'});
warn $query;
warn Data::Dumper::Dumper(@params);
my $sth = $dbh->prepare($query);
$sth->execute(@params);
return 0;
}
#------------------------------------------------------------#
=head3 ModOrderBibliotemNumber
=over 4

View File

@ -29,6 +29,7 @@ use C4::Context;
use C4::Koha;
use C4::Branch;
use C4::ClassSource;
use C4::Acquisition qw/GetOrderFromItemnumber ModOrder GetOrder ModOrderItem/;
use Date::Calc qw(Today);
@ -63,38 +64,55 @@ if ($barcode && $biblionumber) {
my $itemnumber = GetItemnumberFromBarcode($barcode);
if ($itemnumber) {
# And then, we get the item
my $item = GetItem($itemnumber);
my $item = GetItem($itemnumber);
if ($item) {
if ($item) {
my $results = GetBiblioFromItemNumber($itemnumber, $barcode);
my $frombiblionumber = $results->{'biblionumber'};
my $moveresult = MoveItemFromBiblio($itemnumber, $frombiblionumber, $biblionumber);
if ($moveresult) {
$template->param(success => 1);
} else {
$template->param(error => 1,
errornonewitem => 1);
}
# We delete the item from the old record (we can't delete afterwards, because of constraint on barcode duplicity)
my $results = GetBiblioFromItemNumber($itemnumber, $barcode);
my $frombiblionumber = $results->{'biblionumber'};
my $order = GetOrderFromItemnumber($itemnumber);
if ($order){
$order->{'biblionumber'} = $biblionumber;
ModOrder($order);
}
if ($frombiblionumber) {
DelItem(C4::Context->dbh, $frombiblionumber, $itemnumber);
}
} else {
$template->param(error => 1,
errornoitem => 1);
}
# We add the item to the requested record
my ($biblionumber, $biblioitemnumber, $newitemnumber) = AddItem($item, $biblionumber);
if ($order){
my $orderitem = {
ordernumber => $order->{'ordernumber'},
itemnumber => $itemnumber,
newitemnumber => $newitemnumber,
};
ModOrderItem($orderitem);
}
if ($newitemnumber) {
$template->param(success => 1);
} else {
$template->param(error => 1,
errornonewitem => 1);
}
} else {
$template->param(error => 1,
errornoitem => 1);
}
} else {
$template->param(error => 1,
errornoitemnumber => 1);
$template->param(error => 1,
errornoitemnumber => 1);
}
$template->param(
barcode => $barcode,
itemnumber => $itemnumber,
);
} else {
$template->param(missingparameter => 1);
if (!$barcode) { $template->param(missingbarcode => 1); }