#
# This file is part of Koha.
#
-# Koha is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or (at your option) any later
-# version.
+# Koha is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
#
-# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+# Koha is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
#
-# You should have received a copy of the GNU General Public License along
-# with Koha; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
use Modern::Perl;
use Carp;
use C4::Context;
use C4::Debug;
-use C4::Dates qw(format_date format_date_in_iso);
-use MARC::Record;
use C4::Suggestions;
use C4::Biblio;
use C4::Contract;
use Koha::Acquisition::Order;
use Koha::Acquisition::Bookseller;
use Koha::Number::Price;
+use Koha::Libraries;
+
+use C4::Koha qw( subfield_is_koha_internal_p );
+
+use MARC::Field;
+use MARC::Record;
use Time::localtime;
use HTML::Entities;
&GetOrderUsers
&ModOrderUsers
&NotifyOrderUsers
+
+ &FillWithDefaultValues
);
}
sub CloseBasket {
my ($basketno) = @_;
my $dbh = C4::Context->dbh;
- my $query = "
- UPDATE aqbasket
- SET closedate=now()
- WHERE basketno=?
- ";
- my $sth = $dbh->prepare($query);
- $sth->execute($basketno);
+ $dbh->do('UPDATE aqbasket SET closedate=now() WHERE basketno=?', {}, $basketno );
- my @orders = GetOrders($basketno);
- foreach my $order (@orders) {
- $query = qq{
- UPDATE aqorders
- SET orderstatus = 'ordered'
- WHERE ordernumber = ?;
- };
- $sth = $dbh->prepare($query);
- $sth->execute($order->{'ordernumber'});
- }
+ $dbh->do( q{UPDATE aqorders SET orderstatus = 'ordered' WHERE basketno = ? AND orderstatus != 'complete'},
+ {}, $basketno);
+ return;
}
=head3 ReopenBasket
sub ReopenBasket {
my ($basketno) = @_;
my $dbh = C4::Context->dbh;
- my $query = "
- UPDATE aqbasket
- SET closedate=NULL
- WHERE basketno=?
- ";
- my $sth = $dbh->prepare($query);
- $sth->execute($basketno);
+ $dbh->do( q{UPDATE aqbasket SET closedate=NULL WHERE basketno=?}, {}, $basketno );
- my @orders = GetOrders($basketno);
- foreach my $order (@orders) {
- $query = qq{
- UPDATE aqorders
- SET orderstatus = 'new'
- WHERE ordernumber = ?;
- };
- $sth = $dbh->prepare($query);
- $sth->execute($order->{'ordernumber'});
- }
+ $dbh->do( q{
+ UPDATE aqorders
+ SET orderstatus = 'new'
+ WHERE basketno = ?
+ AND orderstatus != 'complete'
+ }, {}, $basketno);
+ return;
}
#------------------------------------------------------------#
|;
$query .= $cancelled
? q|
- aqorders_transfers.ordernumber_from AS transferred_to,
+ aqorders_transfers.ordernumber_to AS transferred_to,
aqorders_transfers.timestamp AS transferred_to_timestamp
|
: q|
my $order_vendornote = $params->{order_vendornote};
my $dbh = C4::Context->dbh;
- $datereceived = C4::Dates->output('iso') unless $datereceived;
+ $datereceived = output_pref(
+ {
+ dt => ( $datereceived ? dt_from_string( $datereceived ) : dt_from_string ),
+ dateformat => 'iso',
+ dateonly => 1,
+ }
+ );
my $suggestionid = GetSuggestionFromBiblionumber( $biblionumber );
if ($suggestionid) {
ModSuggestion( {suggestionid=>$suggestionid,
LEFT JOIN biblioitems ON biblioitems.biblionumber=biblio.biblionumber
};
- # If we search on ordernumber, we retrieve the transfered order if a transfer has been done.
+ # If we search on ordernumber, we retrieve the transferred order if a transfer has been done.
$query .= q{
LEFT JOIN aqorders_transfers ON aqorders_transfers.ordernumber_to = aqorders.ordernumber
} if $ordernumber;
my $newordernumber = TransferOrder($ordernumber, $basketno);
Transfer an order line to a basket.
-Mark $ordernumber as cancelled with an internal note 'Cancelled and transfered
+Mark $ordernumber as cancelled with an internal note 'Cancelled and transferred
to BOOKSELLER on DATE' and create new order with internal note
-'Transfered from BOOKSELLER on DATE'.
+'Transferred from BOOKSELLER on DATE'.
Move all attached items to the new order.
-Received orders cannot be transfered.
+Received orders cannot be transferred.
Return the ordernumber of created order.
=cut
$query = q{
UPDATE aqorders
- SET datecancellationprinted = CAST(NOW() AS date)
+ SET datecancellationprinted = CAST(NOW() AS date), orderstatus = ?
WHERE ordernumber = ?
};
$sth = $dbh->prepare($query);
- $rv = $sth->execute($ordernumber);
+ $rv = $sth->execute('cancelled', $ordernumber);
delete $order->{'ordernumber'};
delete $order->{parent_ordernumber};
Reopen an invoice
-Equivalent to ModInvoice(invoiceid => $invoiceid, closedate => C4::Dates->new()->output('iso'))
+Equivalent to ModInvoice(invoiceid => $invoiceid, closedate => output_pref({ dt=>dt_from_string, dateonly=>1, otputpref=>'iso' }))
=cut
my $order = GetOrder( $ordernumber );
for my $borrowernumber (@borrowernumbers) {
my $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber );
- my $branch = C4::Branch::GetBranchDetail( $borrower->{branchcode} );
+ my $library = Koha::Libraries->find( $borrower->{branchcode} )->unblessed;
my $biblio = C4::Biblio::GetBiblio( $order->{biblionumber} );
my $letter = C4::Letters::GetPreparedLetter(
module => 'acquisition',
letter_code => 'ACQ_NOTIF_ON_RECEIV',
- branchcode => $branch->{branchcode},
+ branchcode => $library->branchcode,
tables => {
- 'branches' => $branch,
+ 'branches' => $library,
'borrowers' => $borrower,
'biblio' => $biblio,
'aqorders' => $order,
}
}
+=head3 FillWithDefaultValues
+
+FillWithDefaultValues( $marc_record );
+
+This will update the record with default value defined in the ACQ framework.
+For all existing fields, if a default value exists and there are no subfield, it will be created.
+If the field does not exist, it will be created too.
+
+=cut
+
+sub FillWithDefaultValues {
+ my ($record) = @_;
+ my $tagslib = C4::Biblio::GetMarcStructure( 1, 'ACQ' );
+ if ($tagslib) {
+ my ($itemfield) =
+ C4::Biblio::GetMarcFromKohaField( 'items.itemnumber', '' );
+ for my $tag ( sort keys %$tagslib ) {
+ next unless $tag;
+ next if $tag == $itemfield;
+ for my $subfield ( sort keys %{ $tagslib->{$tag} } ) {
+ next if ( subfield_is_koha_internal_p($subfield) );
+ my $defaultvalue = $tagslib->{$tag}{$subfield}{defaultvalue};
+ if ( defined $defaultvalue and $defaultvalue ne '' ) {
+ my @fields = $record->field($tag);
+ if (@fields) {
+ for my $field (@fields) {
+ unless ( defined $field->subfield($subfield) ) {
+ $field->add_subfields(
+ $subfield => $defaultvalue );
+ }
+ }
+ }
+ else {
+ $record->insert_fields_ordered(
+ MARC::Field->new(
+ $tag, '', '', $subfield => $defaultvalue
+ )
+ );
+ }
+ }
+ }
+ }
+ }
+}
+
1;
__END__