use DateTime;
use C4::Context;
use Koha::Database;
+use Koha::DateUtils;
use C4::Acquisition qw( NewBasket CloseBasket ModOrder);
use C4::Suggestions qw( ModSuggestion );
-use C4::Items qw(AddItem);
-use C4::Biblio qw( AddBiblio TransformKohaToMarc GetMarcBiblio );
+use C4::Biblio qw( AddBiblio TransformKohaToMarc GetMarcBiblio GetFrameworkCode GetMarcFromKohaField );
use Koha::Edifact::Order;
use Koha::Edifact;
use Log::Log4perl;
ordernumber => $ordernumber,
cancellationreason => $reason,
orderstatus => 'cancelled',
- datecancellationprinted => DateTime->now()->ymd(),
+ datecancellationprinted => dt_from_string()->ymd(),
}
);
}
}
push @{ $branch_map{$b} }, $item;
}
+
+ # Handling for 'AcqItemSetSubfieldsWhenReceived'
+ my @affects;
+ my $biblionumber;
+ my $itemfield;
+ if ( C4::Context->preference('AcqCreateItem') eq 'ordering' ) {
+ @affects = split q{\|},
+ C4::Context->preference("AcqItemSetSubfieldsWhenReceived");
+ if (@affects) {
+ my $order = Koha::Acquisition::Orders->find($ordernumber);
+ $biblionumber = $order->biblionumber;
+ my $frameworkcode = GetFrameworkCode($biblionumber);
+ ($itemfield) = GetMarcFromKohaField( 'items.itemnumber',
+ $frameworkcode );
+ }
+ }
+
my $gir_occurrence = 0;
while ( $gir_occurrence < $quantity ) {
my $branch = $inv_line->girfield( 'branch', $gir_occurrence );
}
}
+ # Handling for 'AcqItemSetSubfieldsWhenReceived'
+ if (@affects) {
+ my $item_marc = C4::Items::GetMarcItem( $biblionumber, $item->itemnumber );
+ for my $affect (@affects) {
+ my ( $sf, $v ) = split q{=}, $affect, 2;
+ foreach ( $item_marc->field($itemfield) ) {
+ $_->update( $sf => $v );
+ }
+ }
+ C4::Items::ModItemFromMarc( $item_marc, $biblionumber, $item->itemnumber );
+ }
+
$item->update;
}
else {
for my $b (@added_baskets) {
create_edi_order(
{
-
+ ean => $messages->[0]->buyer_ean,
basketno => $b,
}
);
my $schema = Koha::Database->new()->schema();
my $logger = Log::Log4perl->get_logger();
+ # $basketno is the return from AddBasket in the calling routine
+ # So this call should not fail unless that has
my $basket = Koha::Acquisition::Baskets->find( $basketno );
unless ( $basket ) {
$logger->error('Skipping order creation no valid basketno');
# database definitions should set some of these defaults but dont
my $order_hash = {
biblionumber => $bib->{biblionumber},
- entrydate => DateTime->now( time_zone => 'local' )->ymd(),
+ entrydate => dt_from_string()->ymd(),
basketno => $basketno,
listprice => $item->price,
quantity => $order_quantity,
my $created = 0;
while ( $created < $order_quantity ) {
- my $itemnumber;
- ( $bib->{biblionumber}, $bib->{biblioitemnumber}, $itemnumber )
- = AddItem( $item_hash, $bib->{biblionumber} );
+ $item_hash->{biblionumber} = $bib->{biblionumber};
+ my $item = Koha::Item->new( $item_hash );
+ my $itemnumber = $item->itemnumber;
$logger->trace("Added item:$itemnumber");
$schema->resultset('AqordersItem')->create(
{
$item_hash->{homebranch} = $new_item->{homebranch};
}
- my $itemnumber;
- ( undef, undef, $itemnumber ) =
- AddItem( $item_hash, $bib->{biblionumber} );
+ $item_hash->{biblionumber} = $bib->{biblionumber};
+ my $item = Koha::Item->new( $item_hash );
+ my $itemnumber = $item->itemnumber;
$logger->trace("New item $itemnumber added");
$schema->resultset('AqordersItem')->create(
{
itemnumber => $itemnumber,
}
);
+
+ my $lrp =
+ $item->girfield( 'library_rotation_plan', $occurrence );
+ if ($lrp) {
+ my $rota =
+ Koha::StockRotationRotas->find( { title => $lrp },
+ { key => 'stockrotationrotas_title' } );
+ if ($rota) {
+ $rota->add_item($itemnumber);
+ $logger->trace("Item added to rota $rota->id");
+ }
+ else {
+ $logger->error(
+ "No rota found matching $lrp in orderline");
+ }
+ }
}
++$occurrence;
);
}
- if ( $basket->effective_create_item eq 'ordering' ) {
+ # Do not use the basket level value as it is always NULL
+ # See calling subs call to AddBasket
+ if ( C4::Context->preference('AcqCreateItem') eq 'ordering' ) {
my $new_item = {
notforloan => -1,
cn_sort => q{},
$item->girfield( 'branch', $occurrence ),
homebranch => $item->girfield( 'branch', $occurrence ),
};
- my $itemnumber;
- ( undef, undef, $itemnumber ) =
- AddItem( $new_item, $bib->{biblionumber} );
+ $new_item->{biblionumber} = $bib->{biblionumber};
+ my $item = Koha::Item->new( $new_item );
+ my $itemnumber = $item->itemnumber;
$logger->trace("New item $itemnumber added");
$schema->resultset('AqordersItem')->create(
{
itemnumber => $itemnumber,
}
);
+
+ my $lrp =
+ $item->girfield( 'library_rotation_plan', $occurrence );
+ if ($lrp) {
+ my $rota =
+ Koha::StockRotationRotas->find( { title => $lrp },
+ { key => 'stockrotationrotas_title' } );
+ if ($rota) {
+ $rota->add_item($itemnumber);
+ $logger->trace("Item added to rota $rota->id");
+ }
+ else {
+ $logger->error(
+ "No rota found matching $lrp in orderline");
+ }
+ }
}
++$occurrence;
$isbn =~ s/\-//xmsg;
if ( $isbn =~ m/(\d{13})/xms ) {
my $b_isbn = Business::ISBN->new($1);
- if ( $b_isbn && $b_isbn->is_valid ) {
+ if ( $b_isbn && $b_isbn->is_valid && $b_isbn->as_isbn10 ) {
$search_isbn = $b_isbn->as_isbn10->as_string( [] );
}