Lines 89-159
if ($op eq "action") {
Link Here
|
89 |
my @tags = $input->param('tag'); |
89 |
my @tags = $input->param('tag'); |
90 |
my @subfields = $input->param('subfield'); |
90 |
my @subfields = $input->param('subfield'); |
91 |
my @values = $input->param('field_value'); |
91 |
my @values = $input->param('field_value'); |
|
|
92 |
my @disabled = $input->param('disable_input'); |
92 |
# build indicator hash. |
93 |
# build indicator hash. |
93 |
my @ind_tag = $input->param('ind_tag'); |
94 |
my @ind_tag = $input->param('ind_tag'); |
94 |
my @indicator = $input->param('indicator'); |
95 |
my @indicator = $input->param('indicator'); |
95 |
|
96 |
|
96 |
# Is there something to modify ? |
97 |
# Is there something to modify ? |
97 |
# TODO : We shall use this var to warn the user in case no modification was done to the items |
98 |
# TODO : We shall use this var to warn the user in case no modification was done to the items |
98 |
my $something_to_modify = scalar(grep {!/^$/} @values); |
99 |
my $values_to_modify = scalar(grep {!/^$/} @values); |
|
|
100 |
my $values_to_blank = scalar(@disabled); |
101 |
my $marcitem; |
99 |
|
102 |
|
100 |
# Once the job is done |
103 |
# Once the job is done |
101 |
if ($completedJobID) { |
104 |
if ($completedJobID) { |
102 |
# If we have a reasonable amount of items, we display them |
105 |
# If we have a reasonable amount of items, we display them |
103 |
if (scalar(@itemnumbers) <= 1000) { |
106 |
if (scalar(@itemnumbers) <= 1000) { |
104 |
$items_display_hashref=BuildItemsData(@itemnumbers); |
107 |
$items_display_hashref=BuildItemsData(@itemnumbers); |
105 |
} else { |
108 |
} else { |
106 |
# Else, we only display the barcode |
109 |
# Else, we only display the barcode |
107 |
my @simple_items_display = map {{ itemnumber => $_, barcode => (GetBarcodeFromItemnumber($_) or ""), biblionumber => (GetBiblionumberFromItemnumber($_) or "") }} @itemnumbers; |
110 |
my @simple_items_display = map {{ itemnumber => $_, barcode => (GetBarcodeFromItemnumber($_) or ""), biblionumber => (GetBiblionumberFromItemnumber($_) or "") }} @itemnumbers; |
108 |
$template->param("simple_items_display" => \@simple_items_display); |
111 |
$template->param("simple_items_display" => \@simple_items_display); |
109 |
} |
112 |
} |
110 |
|
113 |
|
111 |
# Setting the job as done |
114 |
# Setting the job as done |
112 |
my $job = C4::BackgroundJob->fetch($sessionID, $completedJobID); |
115 |
my $job = C4::BackgroundJob->fetch($sessionID, $completedJobID); |
113 |
|
116 |
|
114 |
# Calling the template |
117 |
# Calling the template |
115 |
add_saved_job_results_to_template($template, $completedJobID); |
118 |
add_saved_job_results_to_template($template, $completedJobID); |
116 |
|
119 |
|
117 |
# While the job is getting done |
|
|
118 |
} else { |
120 |
} else { |
|
|
121 |
# While the job is getting done |
119 |
|
122 |
|
120 |
# Job size is the number of items we have to process |
123 |
# Job size is the number of items we have to process |
121 |
my $job_size = scalar(@itemnumbers); |
124 |
my $job_size = scalar(@itemnumbers); |
122 |
my $job = undef; |
125 |
my $job = undef; |
123 |
my $callback = sub {}; |
126 |
$dbh->{AutoCommit} = 0; |
|
|
127 |
my $callback = sub {}; |
124 |
|
128 |
|
125 |
# If we asked for background processing |
129 |
# If we asked for background processing |
126 |
if ($runinbackground) { |
130 |
if ($runinbackground) { |
127 |
$job = put_in_background($job_size); |
131 |
$job = put_in_background($job_size); |
128 |
$callback = progress_callback($job, $dbh); |
132 |
$callback = progress_callback($job, $dbh); |
129 |
} |
133 |
} |
130 |
|
134 |
|
|
|
135 |
#initializing values for updates |
136 |
my ( $itemtagfield, $itemtagsubfield) = &GetMarcFromKohaField("items.itemnumber", ""); |
137 |
if ($values_to_modify){ |
138 |
my $xml = TransformHtmlToXml(\@tags,\@subfields,\@values,\@indicator,\@ind_tag, 'ITEM'); |
139 |
$marcitem = MARC::Record::new_from_xml($xml, 'UTF-8'); |
140 |
} |
141 |
if ($values_to_blank){ |
142 |
foreach my $disabledsubf (@disabled){ |
143 |
if ($marcitem && $marcitem->field($itemtagfield)){ |
144 |
$marcitem->field($itemtagfield)->update($disabledsubf=>""); |
145 |
} |
146 |
else { |
147 |
$marcitem = MARC::Record->new(); |
148 |
$marcitem->append_fields(MARC::Field->new($itemtagfield,'','',$disabledsubf=>"")); |
149 |
} |
150 |
} |
151 |
} |
131 |
# For each item |
152 |
# For each item |
132 |
my $i = 1; |
153 |
my $i = 1; |
133 |
foreach my $itemnumber(@itemnumbers){ |
154 |
foreach my $itemnumber(@itemnumbers){ |
134 |
|
155 |
|
135 |
$job->progress($i) if $runinbackground; |
156 |
$job->progress($i) if $runinbackground; |
136 |
my $itemdata=GetItem($itemnumber); |
157 |
my $itemdata=GetItem($itemnumber); |
137 |
if ($input->param("del")){ |
158 |
if ($input->param("del")){ |
138 |
my $return = DelItemCheck(C4::Context->dbh, $itemdata->{'biblionumber'}, $itemdata->{'itemnumber'}); |
159 |
my $return = DelItemCheck(C4::Context->dbh, $itemdata->{'biblionumber'}, $itemdata->{'itemnumber'}); |
139 |
if ($return == 1) { |
160 |
if ($return == 1) { |
140 |
$deleted_items++; |
161 |
$deleted_items++; |
141 |
} else { |
162 |
} else { |
142 |
$not_deleted_items++; |
163 |
$not_deleted_items++; |
143 |
push @not_deleted, { biblionumber => $itemdata->{'biblionumber'}, itemnumber => $itemdata->{'itemnumber'}, barcode => $itemdata->{'barcode'}, title => $itemdata->{'title'}, $return => 1 }; |
164 |
push @not_deleted, { biblionumber => $itemdata->{'biblionumber'}, itemnumber => $itemdata->{'itemnumber'}, barcode => $itemdata->{'barcode'}, title => $itemdata->{'title'}, $return => 1 }; |
144 |
} |
165 |
} |
145 |
} else { |
166 |
} else { |
146 |
if ($something_to_modify) { |
167 |
if ($values_to_modify||$values_to_blank) { |
147 |
my $xml = TransformHtmlToXml(\@tags,\@subfields,\@values,\@indicator,\@ind_tag, 'ITEM'); |
168 |
my $localmarcitem=Item2Marc($itemdata); |
148 |
my $marcitem = MARC::Record::new_from_xml($xml, 'UTF-8'); |
169 |
UpdateMarcWith($marcitem,$localmarcitem); |
149 |
my $localitem = TransformMarcToKoha( $dbh, $marcitem, "", 'items' ); |
170 |
eval{my ($oldbiblionumber,$oldbibnum,$oldbibitemnum) = ModItemFromMarc($localmarcitem,$itemdata->{biblionumber},$itemnumber)}; |
150 |
my $localmarcitem=Item2Marc($itemdata); |
171 |
} |
151 |
UpdateMarcWith($marcitem,$localmarcitem); |
172 |
} |
152 |
eval{my ($oldbiblionumber,$oldbibnum,$oldbibitemnum) = ModItemFromMarc($localmarcitem,$itemdata->{biblionumber},$itemnumber)}; |
173 |
$i++; |
153 |
} |
174 |
} |
154 |
} |
|
|
155 |
$i++; |
156 |
} |
157 |
} |
175 |
} |
158 |
} |
176 |
} |
159 |
# |
177 |
# |
Lines 504-512
sub UpdateMarcWith {
Link Here
|
504 |
my $fieldfrom=$marcfrom->field($itemtag); |
522 |
my $fieldfrom=$marcfrom->field($itemtag); |
505 |
my @fields_to=$marcto->field($itemtag); |
523 |
my @fields_to=$marcto->field($itemtag); |
506 |
foreach my $subfield ($fieldfrom->subfields()){ |
524 |
foreach my $subfield ($fieldfrom->subfields()){ |
507 |
foreach my $field_to_update (@fields_to){ |
525 |
foreach my $field_to_update (@fields_to){ |
508 |
$field_to_update->update($$subfield[0]=>$$subfield[1]) if ($$subfield[1] != '' or $$subfield[1] == '0'); |
526 |
if ($subfield->[1] ne ""){ |
509 |
} |
527 |
$field_to_update->update($subfield->[0]=>$subfield->[1]); |
|
|
528 |
} |
529 |
else { |
530 |
$field_to_update->delete_subfield(code=> $subfield->[0]); |
531 |
} |
532 |
} |
510 |
} |
533 |
} |
511 |
#warn "TO edited:",$marcto->as_formatted; |
534 |
#warn "TO edited:",$marcto->as_formatted; |
512 |
} |
535 |
} |
513 |
- |
|
|