#A script that lets the user populate a basket from an iso2709 file
#the script first displays a list of import batches, then when a batch is selected displays all the biblios in it.
-#The user can then pick which biblios he or she wants to order
+#The user can then pick which biblios they want to order
# Copyright 2008 - 2011 BibLibre SARL
#
use Koha::Number::Price;
use Koha::Libraries;
+use Koha::Acquisition::Baskets;
use Koha::Acquisition::Currencies;
-use Koha::Acquisition::Order;
+use Koha::Acquisition::Orders;
use Koha::Acquisition::Booksellers;
+use Koha::Patrons;
my $input = new CGI;
my ($template, $loggedinuser, $cookie, $userflags) = get_template_and_user({
if (! $cgiparams->{'basketno'}){
die "Basketnumber required to order from iso2709 file import";
}
+my $basket = Koha::Acquisition::Baskets->find( $cgiparams->{basketno} );
#
# 1st step = choose the file to import into acquisition
"allmatch" => $allmatch,
);
import_biblios_list($template, $cgiparams->{'import_batch_id'});
- my $basket = GetBasket($cgiparams->{basketno});
- if ( C4::Context->preference('AcqCreateItem') eq 'ordering' && !$basket->{is_standing} ) {
+ if ( $basket->effective_create_items eq 'ordering' && !$basket->is_standing ) {
# prepare empty item form
my $cell = PrepareItemrecordDisplay( '', '', '', 'ACQ' );
my $biblio_count = 0;
for my $biblio (@$biblios){
$biblio_count++;
+ my $duplifound = 0;
# Check if this import_record_id was selected
next if not grep { $_ eq $$biblio{import_record_id} } @import_record_id_selected;
my ( $marcblob, $encoding ) = GetImportRecordMarc( $biblio->{'import_record_id'} );
unless ( $biblionumber ) {
if ($matcher_id) {
if ( $matcher_id eq '_TITLE_AUTHOR_' ) {
- $duplinbatch = $import_batch_id if FindDuplicate($marcrecord);
+ $duplifound = 1 if FindDuplicate($marcrecord);
}
else {
my $matcher = C4::Matcher->fetch($matcher_id);
my @matches = $matcher->get_matches( $marcrecord, my $max_matches = 1 );
- $duplinbatch = $import_batch_id if @matches;
+ $duplifound = 1 if @matches;
}
- next if $duplinbatch;
+ $duplinbatch = $import_batch_id and next if $duplifound;
}
# add the biblio
my @replacementprices = $input->multi_param('replacementprice_' . $biblio_count);
my @itemcallnumbers = $input->multi_param('itemcallnumber_' . $biblio_count);
my $itemcreation = 0;
+
+ my @itemnumbers;
for (my $i = 0; $i < $count; $i++) {
$itemcreation = 1;
my ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({
replacementprice => $replacementprices[$i],
itemcallnumber => $itemcallnumbers[$i],
}, $biblionumber);
+ push( @itemnumbers, $itemnumber );
}
if ($itemcreation == 1) {
# Group orderlines from MarcItemFieldsToOrder
for (my $i = 0; $i < $count; $i++) {
$budget_hash->{$budget_codes[$i]}->{quantity} += 1;
$budget_hash->{$budget_codes[$i]}->{price} = $itemprices[$i];
+ $budget_hash->{$budget_codes[$i]}->{itemnumbers} //= [];
+ push @{ $budget_hash->{$budget_codes[$i]}->{itemnumbers} }, $itemnumbers[$i];
}
# Create orderlines from MarcItemFieldsToOrder
$price = Koha::Number::Price->new($price)->unformat;
$orderinfo{tax_rate} = $bookseller->tax_rate;
my $c = $c_discount ? $c_discount : $bookseller->discount / 100;
- if ( $bookseller->listincgst ) {
- if ( $c_discount ) {
- $orderinfo{ecost} = $price;
- $orderinfo{rrp} = $orderinfo{ecost} / ( 1 - $c );
- } else {
- $orderinfo{ecost} = $price * ( 1 - $c );
- $orderinfo{rrp} = $price;
- }
+ $orderinfo{discount} = $c;
+ if ( $c_discount ) {
+ $orderinfo{ecost} = $price;
+ $orderinfo{rrp} = $orderinfo{ecost} / ( 1 - $c );
} else {
- if ( $c_discount ) {
- $orderinfo{ecost} = $price / ( 1 + $orderinfo{tax_rate} );
- $orderinfo{rrp} = $orderinfo{ecost} / ( 1 - $c );
- } else {
- $orderinfo{rrp} = $price / ( 1 + $orderinfo{tax_rate} );
- $orderinfo{ecost} = $orderinfo{rrp} * ( 1 - $c );
- }
+ $orderinfo{ecost} = $price * ( 1 - $c );
+ $orderinfo{rrp} = $price;
}
$orderinfo{listprice} = $orderinfo{rrp} / $active_currency->rate;
$orderinfo{unitprice} = $orderinfo{ecost};
)
};
- my $order = Koha::Acquisition::Order->new( \%orderinfo )->insert;
+ my $order = Koha::Acquisition::Order->new( \%orderinfo )->store;
+ $order->add_item( $_ ) for @{ $budget_hash->{$budget_id}->{itemnumbers} };
}
}
} else {
# 3rd add order
- my $patron = C4::Members::GetMember( borrowernumber => $loggedinuser );
+ my $patron = Koha::Patrons->find( $loggedinuser );
# get quantity in the MARC record (1 if none)
my $quantity = GetMarcQuantity($marcrecord, C4::Context->preference('marcflavour')) || 1;
my %orderinfo = (
biblionumber => $biblionumber,
basketno => $cgiparams->{'basketno'},
quantity => $c_quantity,
- branchcode => $patron->{branchcode},
+ branchcode => $patron->branchcode,
budget_id => $c_budget_id,
uncertainprice => 1,
sort1 => $c_sort1,
$price = Koha::Number::Price->new($price)->unformat;
$orderinfo{tax_rate} = $bookseller->tax_rate;
my $c = $c_discount ? $c_discount : $bookseller->discount / 100;
- if ( $bookseller->listincgst ) {
- if ( $c_discount ) {
- $orderinfo{ecost} = $price;
- $orderinfo{rrp} = $orderinfo{ecost} / ( 1 - $c );
- } else {
- $orderinfo{ecost} = $price * ( 1 - $c );
- $orderinfo{rrp} = $price;
- }
+ $orderinfo{discount} = $c;
+ if ( $c_discount ) {
+ $orderinfo{ecost} = $price;
+ $orderinfo{rrp} = $orderinfo{ecost} / ( 1 - $c );
} else {
- if ( $c_discount ) {
- $orderinfo{ecost} = $price / ( 1 + $orderinfo{tax_rate} );
- $orderinfo{rrp} = $orderinfo{ecost} / ( 1 - $c );
- } else {
- $orderinfo{rrp} = $price / ( 1 + $orderinfo{tax_rate} );
- $orderinfo{ecost} = $orderinfo{rrp} * ( 1 - $c );
- }
+ $orderinfo{ecost} = $price * ( 1 - $c );
+ $orderinfo{rrp} = $price;
}
$orderinfo{listprice} = $orderinfo{rrp} / $active_currency->rate;
$orderinfo{unitprice} = $orderinfo{ecost};
)
};
- my $order = Koha::Acquisition::Order->new( \%orderinfo )->insert;
+ my $order = Koha::Acquisition::Order->new( \%orderinfo )->store;
# 4th, add items if applicable
# parse the item sent by the form, and create an item just for the import_record_id we are dealing with
# this is not optimised, but it's working !
- my $basket = GetBasket($cgiparams->{basketno});
- if ( C4::Context->preference('AcqCreateItem') eq 'ordering' && !$basket->{is_standing} ) {
+ if ( $basket->effective_create_items eq 'ordering' && !$basket->is_standing ) {
my @tags = $input->multi_param('tag');
my @subfields = $input->multi_param('subfield');
my @field_values = $input->multi_param('field_value');
my $budgets = GetBudgets();
my $budget_id = @$budgets[0]->{'budget_id'};
# build bookfund list
-my $borrower = GetMember( 'borrowernumber' => $loggedinuser );
-my ( $flags, $homebranch ) = ( $borrower->{'flags'}, $borrower->{'branchcode'} );
+my $patron = Koha::Patrons->find( $loggedinuser )->unblessed;
my $budget = GetBudget($budget_id);
# build budget list
my $budget_loop = [];
my $budgets_hierarchy = GetBudgetHierarchy;
foreach my $r ( @{$budgets_hierarchy} ) {
- next unless (CanUserUseBudget($borrower, $r, $userflags));
+ next unless (CanUserUseBudget($patron, $r, $userflags));
if ( !defined $r->{budget_amount} || $r->{budget_amount} == 0 ) {
next;
}