SELECT biblio.*,biblioitems.*,
aqorders.*,
aqbudgets.*,
- biblio.title
+ biblio.title,
+ aqorders_transfers.ordernumber_from AS transferred_from,
+ aqorders_transfers.timestamp AS transferred_from_timestamp
FROM aqorders
LEFT JOIN aqbudgets ON aqbudgets.budget_id = aqorders.budget_id
LEFT JOIN biblio ON biblio.biblionumber = aqorders.biblionumber
LEFT JOIN biblioitems ON biblioitems.biblionumber =biblio.biblionumber
+ LEFT JOIN aqorders_transfers ON aqorders_transfers.ordernumber_to = aqorders.ordernumber
WHERE basketno=?
AND (datecancellationprinted IS NULL OR datecancellationprinted='0000-00-00')
";
my $dbh = C4::Context->dbh;
my $query = "
- SELECT biblio.*, biblioitems.*, aqorders.*, aqbudgets.*
+ SELECT
+ biblio.*,
+ biblioitems.*,
+ aqorders.*,
+ aqbudgets.*,
+ aqorders_transfers.ordernumber_to AS transferred_to,
+ aqorders_transfers.timestamp AS transferred_to_timestamp
FROM aqorders
LEFT JOIN aqbudgets ON aqbudgets.budget_id = aqorders.budget_id
LEFT JOIN biblio ON biblio.biblionumber = aqorders.biblionumber
LEFT JOIN biblioitems ON biblioitems.biblionumber = biblio.biblionumber
+ LEFT JOIN aqorders_transfers ON aqorders_transfers.ordernumber_from = aqorders.ordernumber
WHERE basketno = ?
AND (datecancellationprinted IS NOT NULL
AND datecancellationprinted <> '0000-00-00')
my $order = GetOrder( $ordernumber );
return if $order->{datereceived};
+ my $basket = GetBasket($basketno);
+ return unless $basket;
- 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;
+ my ($query, $sth, $rv);
$query = qq{
UPDATE aqorders
- SET datecancellationprinted = CAST(NOW() AS date),
- internalnotes = ?
+ SET datecancellationprinted = CAST(NOW() AS date)
WHERE ordernumber = ?
};
$sth = $dbh->prepare($query);
- $sth->execute("Cancelled and transfered to $booksellertoname on $today", $ordernumber);
+ $rv = $sth->execute($ordernumber);
delete $order->{'ordernumber'};
$order->{'basketno'} = $basketno;
- $order->{'internalnotes'} = "Transfered from $booksellerfromname on $today";
my $newordernumber;
(undef, $newordernumber) = NewOrder($order);
$sth = $dbh->prepare($query);
$sth->execute($newordernumber, $ordernumber);
+ $query = q{
+ INSERT INTO aqorders_transfers (ordernumber_from, ordernumber_to)
+ VALUES (?, ?)
+ };
+ $sth = $dbh->prepare($query);
+ $sth->execute($ordernumber, $newordernumber);
+
return $newordernumber;
}
last;
}
- my @cancelledorders = GetCancelledOrders($basketno);
- foreach (@cancelledorders) {
- $_->{'line_total'} = sprintf("%.2f", $_->{'ecost'} * $_->{'quantity'});
- }
-
$template->param(
basketno => $basketno,
basketname => $basket->{'basketname'},
name => $bookseller->{'name'},
books_loop => \@books_loop,
book_foot_loop => \@book_foot_loop,
- cancelledorders_loop => \@cancelledorders,
+ cancelledorders_loop => \@cancelledorders_loop,
total_quantity => $total_quantity,
total_gste => sprintf( "%.2f", $total_gste ),
total_gsti => sprintf( "%.2f", $total_gsti ),
$line{surnamesuggestedby} = $$suggestion{surnamesuggestedby};
$line{firstnamesuggestedby} = $$suggestion{firstnamesuggestedby};
+ foreach my $key (qw(transferred_from transferred_to)) {
+ if ($line{$key}) {
+ my $order = GetOrder($line{$key});
+ my $basket = GetBasket($order->{basketno});
+ my $bookseller = GetBookSellerFromId($basket->{booksellerid});
+ $line{$key} = {
+ order => $order,
+ basket => $basket,
+ bookseller => $bookseller,
+ timestamp => $line{$key . '_timestamp'},
+ };
+ }
+ }
+
return \%line;
}
`cancelledby` varchar(10) default NULL, -- not used? always NULL
`datecancellationprinted` date default NULL, -- the date the line item was deleted
`notes` mediumtext, -- notes related to this order line
- internalnotes mediumtext DEFAULT NULL, -- used by Koha to store some informations, not editable by librarians
`supplierreference` mediumtext, -- not used? always NULL
`purchaseordernumber` mediumtext, -- not used? always NULL
`basketno` int(11) default NULL, -- links this order line to a specific basket (aqbasket.basketno)
--
+-- Table structure for table aqorders_transfers
+--
+
+DROP TABLE IF EXISTS aqorders_transfers;
+CREATE TABLE aqorders_transfers (
+ ordernumber_from int(11) NULL,
+ ordernumber_to int(11) NULL,
+ timestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ UNIQUE KEY ordernumber_from (ordernumber_from),
+ UNIQUE KEY ordernumber_to (ordernumber_to),
+ CONSTRAINT aqorders_transfers_ordernumber_from FOREIGN KEY (ordernumber_from) REFERENCES aqorders (ordernumber) ON DELETE SET NULL ON UPDATE CASCADE,
+ CONSTRAINT aqorders_transfers_ordernumber_to FOREIGN KEY (ordernumber_to) REFERENCES aqorders (ordernumber) ON DELETE SET NULL ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
-- Table structure for table aqinvoices
--
$DBversion = "XXX";
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
+ $dbh->do(qq{DROP TABLE IF EXISTS aqorders_transfers;});
$dbh->do(qq{
- ALTER TABLE aqorders
- ADD COLUMN internalnotes MEDIUMTEXT DEFAULT NULL AFTER notes
+ CREATE TABLE aqorders_transfers (
+ ordernumber_from int(11) NULL,
+ ordernumber_to int(11) NULL,
+ timestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ UNIQUE KEY ordernumber_from (ordernumber_from),
+ UNIQUE KEY ordernumber_to (ordernumber_to),
+ CONSTRAINT aqorders_transfers_ordernumber_from FOREIGN KEY (ordernumber_from) REFERENCES aqorders (ordernumber) ON DELETE SET NULL ON UPDATE CASCADE,
+ CONSTRAINT aqorders_transfers_ordernumber_to FOREIGN KEY (ordernumber_to) REFERENCES aqorders (ordernumber) ON DELETE SET NULL ON UPDATE CASCADE
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
});
- print "Upgrade to $DBversion done (Add internalnotes field in aqorders table)\n";
+ print "Upgrade to $DBversion done (Add aqorders_transfers table)\n";
SetVersion($DBversion);
}
[% ELSE %]
<p>[<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% books_loo.ordernumber %]">Add note</a>]</p>
[% END %]
- <p>[% books_loo.internalnotes %]</p>
+ [% IF (books_loo.transferred_from) %]
+ [% basket = books_loo.transferred_from.basket %]
+ [% bookseller = books_loo.transferred_from.bookseller %]
+ [% timestamp = books_loo.transferred_from.timestamp %]
+ <p>Transferred from
+ <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basket.basketno %]">basket: [% basket.basketname %]</a>
+ (<a href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% bookseller.id %]">[% bookseller.name %]</a>)
+ on <span title="[% timestamp | $KohaDates with_hours = 1 %]">
+ [% timestamp | $KohaDates %]
+ </span>
+ </p>
+ [% END %]
</td>
<td class="number gste [% IF books_loo.rrpgste.search('^0') %]error[% END %]">[% books_loo.rrpgste %]</td>
<td class="number gste [% IF books_loo.ecostgste.search('^0') %]error[% END %]">[% books_loo.ecostgste %]</td>
[% IF ( order.publicationyear ) %], [% order.publicationyear %][% END %]
[% IF ( books_loo.editionstatement ) %], [% books_loo.editionstatement %][% END %]
</p>
- <p>[% order.internalnotes %]</p>
+ [% IF order.transferred_to %]
+ [% basket = order.transferred_to.basket %]
+ [% bookseller = order.transferred_to.bookseller %]
+ [% timestamp = order.transferred_to.timestamp %]
+ <p>Transferred to
+ <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basket.basketno %]">basket: [% basket.basketname %]</a>
+ (<a href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% bookseller.id %]">[% bookseller.name %]</a>)
+ on <span title="[% timestamp | $KohaDates with_hours = 1%]">
+ [% timestamp | $KohaDates %]
+ </span>
+ </p>
+ [% END %]
</td>
<td class="number gste">[% order.rrpgste %]</td>
<td class="number gste">[% order.ecostgste %]</td>