- my $xml = TransformHtmlToXml(\@tags,\@subfields,\@values,\@indicator,\@ind_tag, 'ITEM');
- my $marcitem = MARC::Record::new_from_xml($xml, 'UTF-8');
- my $localitem = TransformMarcToKoha( $dbh, $marcitem, "", 'items' );
-
- foreach my $itemnumber(@itemnumbers){
- my $itemdata=GetItem($itemnumber);
- if ($input->param("del")){
- my $return = DelItemCheck(C4::Context->dbh, $itemdata->{'biblionumber'}, $itemdata->{'itemnumber'});
- if ($return == 1) {
- $deleted_items++;
- } else {
- $not_deleted_items++;
- push @not_deleted, { itemnumber => $itemdata->{'itemnumber'}, barcode => $itemdata->{'barcode'}, title => $itemdata->{'title'}, $return => 1 };
- }
- } else {
- my $localmarcitem=Item2Marc($itemdata);
- UpdateMarcWith($marcitem,$localmarcitem);
- eval{my ($oldbiblionumber,$oldbibnum,$oldbibitemnum) = ModItemFromMarc($localmarcitem,$itemdata->{biblionumber},$itemnumber)};
+ # Is there something to modify ?
+ # TODO : We shall use this var to warn the user in case no modification was done to the items
+ my $values_to_modify = scalar(grep {!/^$/} @values);
+ my $values_to_blank = scalar(@disabled);
+ my $marcitem;
+
+ # Once the job is done
+ if ($completedJobID) {
+ # If we have a reasonable amount of items, we display them
+ if (scalar(@itemnumbers) <= 1000) {
+ $items_display_hashref=BuildItemsData(@itemnumbers);
+ } else {
+ # Else, we only display the barcode
+ my @simple_items_display = map {{ itemnumber => $_, barcode => (GetBarcodeFromItemnumber($_) or ""), biblionumber => (GetBiblionumberFromItemnumber($_) or "") }} @itemnumbers;
+ $template->param("simple_items_display" => \@simple_items_display);
+ }
+
+ # Setting the job as done
+ my $job = C4::BackgroundJob->fetch($sessionID, $completedJobID);
+
+ # Calling the template
+ add_saved_job_results_to_template($template, $completedJobID);
+
+ } else {
+ # While the job is getting done
+
+ # Job size is the number of items we have to process
+ my $job_size = scalar(@itemnumbers);
+ my $job = undef;
+ my $callback = sub {};
+
+ # If we asked for background processing
+ if ($runinbackground) {
+ $job = put_in_background($job_size);
+ $callback = progress_callback($job, $dbh);
+ }
+
+ #initializing values for updates
+ my ( $itemtagfield, $itemtagsubfield) = &GetMarcFromKohaField("items.itemnumber", "");
+ if ($values_to_modify){
+ my $xml = TransformHtmlToXml(\@tags,\@subfields,\@values,\@indicator,\@ind_tag, 'ITEM');
+ utf8::encode($xml);
+ $marcitem = MARC::Record::new_from_xml($xml, 'UTF-8');
+ }
+ if ($values_to_blank){
+ foreach my $disabledsubf (@disabled){
+ if ($marcitem && $marcitem->field($itemtagfield)){
+ $marcitem->field($itemtagfield)->update( $disabledsubf => "" );
+ }
+ else {
+ $marcitem = MARC::Record->new();
+ $marcitem->append_fields( MARC::Field->new( $itemtagfield, '', '', $disabledsubf => "" ) );
+ }