@@ -, +, @@ --- C4/Acquisition.pm | 73 +++++++++++++++++++- installer/data/mysql/kohastructure.sql | 1 + installer/data/mysql/updatedatabase.pl | 10 +++ .../intranet-tmpl/prog/en/modules/acqui/basket.tt | 6 ++ .../intranet-tmpl/prog/en/modules/acqui/parcel.tt | 9 ++- 5 files changed, 95 insertions(+), 4 deletions(-) --- a/C4/Acquisition.pm +++ a/C4/Acquisition.pm @@ -55,7 +55,7 @@ BEGIN { &GetOrderNumber &GetLateOrders &GetOrderFromItemnumber &SearchOrder &GetHistory &GetRecentAcqui &ModReceiveOrder &ModOrderBiblioitemNumber - &GetCancelledOrders + &GetCancelledOrders &TransferOrder &NewOrderItem &ModOrderItem @@ -1295,6 +1295,77 @@ sub DelOrder { } +=head3 TransferOrder + + my $newordernumber = TransferOrder($ordernumber, $basketno); + +Transfer an order line to a basket. +Mark $ordernumber as cancelled with an internal note 'Cancelled and transfered +to BOOKSELLER on DATE' and create new order with internal note +'Transfered from BOOKSELLER on DATE'. +Move all attached items to the new order. +Received orders cannot be transfered. +Return the ordernumber of created order. + +=cut + +sub TransferOrder { + my ($ordernumber, $basketno) = @_; + + return unless $ordernumber or $basketno; + + my $order = GetOrder( $ordernumber ); + return if $order->{datereceived}; + + my $today = C4::Dates->new()->output("iso"); + my $query = qq{ + SELECT aqbooksellers.name + FROM aqorders + LEFT JOIN aqbasket ON aqorders.basketno = aqbasket.basketno + LEFT JOIN aqbooksellers ON aqbasket.booksellerid = aqbooksellers.id + WHERE aqorders.ordernumber = ? + }; + my $dbh = C4::Context->dbh; + my $sth = $dbh->prepare($query); + $sth->execute($ordernumber); + my ($booksellerfromname) = $sth->fetchrow_array; + + $query = qq{ + SELECT aqbooksellers.name + FROM aqbasket + LEFT JOIN aqbooksellers ON aqbasket.booksellerid = aqbooksellers.id + WHERE aqbasket.basketno = ? + }; + $sth = $dbh->prepare($query); + $sth->execute($basketno); + my ($booksellertoname) = $sth->fetchrow_array; + + $query = qq{ + UPDATE aqorders + SET datecancellationprinted = CAST(NOW() AS date), + internalnotes = ? + WHERE ordernumber = ? + }; + $sth = $dbh->prepare($query); + $sth->execute("Cancelled and transfered to $booksellertoname on $today", $ordernumber); + + delete $order->{'ordernumber'}; + $order->{'basketno'} = $basketno; + $order->{'internalnotes'} = "Transfered from $booksellerfromname on $today"; + my $newordernumber; + (undef, $newordernumber) = NewOrder($order); + + $query = qq{ + UPDATE aqorders_items + SET ordernumber = ? + WHERE ordernumber = ? + }; + $sth = $dbh->prepare($query); + $sth->execute($newordernumber, $ordernumber); + + return $newordernumber; +} + =head2 FUNCTIONS ABOUT PARCELS =cut --- a/installer/data/mysql/kohastructure.sql +++ a/installer/data/mysql/kohastructure.sql @@ -2722,6 +2722,7 @@ CREATE TABLE `aqorders` ( `cancelledby` varchar(10) default NULL, `datecancellationprinted` date default NULL, `notes` mediumtext, + internalnotes mediumtext DEFAULT NULL, `supplierreference` mediumtext, `purchaseordernumber` mediumtext, `subscription` tinyint(1) default NULL, --- a/installer/data/mysql/updatedatabase.pl +++ a/installer/data/mysql/updatedatabase.pl @@ -5146,6 +5146,16 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { SetVersion($DBversion); } +$DBversion = "XXX"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do(qq{ + ALTER TABLE aqorders + ADD COLUMN internalnotes MEDIUMTEXT DEFAULT NULL AFTER notes + }); + print "Upgrade to $DBversion done (Add internalnotes field in aqorders table)\n"; + SetVersion($DBversion); +} + =head1 FUNCTIONS =head2 DropAllForeignKeys($table) --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt @@ -297,6 +297,7 @@ [Add note] [% END %]
+[% books_loo.internalnotes %]
[% order.internalnotes %]
[% order.rrp %]
[% order.ecost %]