#!/usr/bin/perl
-
# Copyright 2000-2002 Katipo Communications
# Copyright 2004-2010 BibLibre
+# Parts Copyright Catalyst IT 2011
#
# This file is part of Koha.
#
use List::MoreUtils qw/any/;
use MARC::File::XML;
+use URI::Escape;
my $dbh = C4::Context->dbh;
sub set_item_default_location {
my $itemnumber = shift;
+ my $item = GetItem( $itemnumber );
if ( C4::Context->preference('NewItemsDefaultLocation') ) {
- my $item = GetItem( $itemnumber );
$item->{'permanent_location'} = $item->{'location'};
$item->{'location'} = C4::Context->preference('NewItemsDefaultLocation');
ModItem( $item, undef, $itemnumber);
}
+ else {
+ $item->{'permanent_location'} = $item->{'location'} if !defined($item->{'permanent_location'});
+ ModItem( $item, undef, $itemnumber);
+ }
}
# NOTE: This code is subject to change in the future with the implemenation of ajax based autobarcode code
sub generate_subfield_form {
my ($tag, $subfieldtag, $value, $tagslib,$subfieldlib, $branches, $today_iso, $biblionumber, $temp, $loop_data, $i) = @_;
-
+
+ my $frameworkcode = &GetFrameworkCode($biblionumber);
my %subfield_data;
my $dbh = C4::Context->dbh;
my $authorised_values_sth = $dbh->prepare("SELECT authorised_value,lib FROM authorised_values WHERE category=? ORDER BY lib");
}
}
+ if ($frameworkcode eq 'FA' && $subfieldlib->{kohafield} eq 'items.barcode'){
+ my $input = new CGI;
+ $value = $input->param('barcode');
+ }
my $attributes_no_value = qq(tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="255" );
my $attributes = qq($attributes_no_value value="$value" );
foreach my $thisbranch (@$branches) {
push @authorised_values, $thisbranch->{value};
$authorised_lib{$thisbranch->{value}} = $thisbranch->{branchname};
- $value = $thisbranch->{value} if $thisbranch->{selected};
+ $value = $thisbranch->{value} if $thisbranch->{selected} && !$value;
}
}
elsif ( $subfieldlib->{authorised_value} eq "itemtypes" ) {
}
}
- $subfield_data{marc_value} =CGI::scrolling_list( # FIXME: factor out scrolling_list
- -name => "field_value",
- -values => \@authorised_values,
- -default => $value,
- -labels => \%authorised_lib,
- -override => 1,
- -size => 1,
- -multiple => 0,
- -tabindex => 1,
- -id => "tag_".$tag."_subfield_".$subfieldtag."_".$index_subfield,
- -class => "input_marceditor",
- );
+ if ($subfieldlib->{'hidden'}) {
+ $subfield_data{marc_value} = qq(<input type="hidden" $attributes /> $authorised_lib{$value});
+ }
+ else {
+ $subfield_data{marc_value} =CGI::scrolling_list( # FIXME: factor out scrolling_list
+ -name => "field_value",
+ -values => \@authorised_values,
+ -default => $value,
+ -labels => \%authorised_lib,
+ -override => 1,
+ -size => 1,
+ -multiple => 0,
+ -tabindex => 1,
+ -id => "tag_".$tag."_subfield_".$subfieldtag."_".$index_subfield,
+ -class => "input_marceditor",
+ );
+ }
- # it's a thesaurus / authority field
}
+ # it's a thesaurus / authority field
elsif ( $subfieldlib->{authtypecode} ) {
$subfield_data{marc_value} = "<input type=\"text\" $attributes />
<a href=\"#\" class=\"buttonDot\"
onclick=\"Dopop('/cgi-bin/koha/authorities/auth_finder.pl?authtypecode=".$subfieldlib->{authtypecode}."&index=$subfield_data{id}','$subfield_data{id}'); return false;\" title=\"Tag Editor\">...</a>
";
- # it's a plugin field
}
+ # it's a plugin field
elsif ( $subfieldlib->{value_builder} ) {
# opening plugin
my $plugin = C4::Context->intranetdir . "/cataloguing/value_builder/" . $subfieldlib->{'value_builder'};
my $input = new CGI;
-my $dbh = C4::Context->dbh;
my $error = $input->param('error');
my $biblionumber = $input->param('biblionumber');
my $itemnumber = $input->param('itemnumber');
my $op = $input->param('op');
+my $hostitemnumber = $input->param('hostitemnumber');
+my $marcflavour = C4::Context->preference("marcflavour");
my $frameworkcode = &GetFrameworkCode($biblionumber);
}
my ($template, $loggedinuser, $cookie)
- = get_template_and_user({template_name => "cataloguing/additem.tmpl",
+ = get_template_and_user({template_name => "cataloguing/additem.tt",
query => $input,
type => "intranet",
authnotrequired => 0,
}
undef($itemrecord);
}
+ }
+ if ($frameworkcode eq 'FA' && $input->param('borrowernumber')){
+ my $redirect_string = 'borrowernumber=' . uri_escape($input->param('borrowernumber')) .
+ '&barcode=' . uri_escape($input->param('barcode'));
+ $redirect_string .= '&duedatespec=' . uri_escape($input->param('duedatespec')) .
+ '&stickyduedate=1';
+ print $input->redirect("/cgi-bin/koha/circ/circulation.pl?" . $redirect_string);
+ exit;
}
if ($exist_itemnumber && $exist_itemnumber != $itemnumber) {
push @errors,"barcode_not_unique";
} else {
- my ($oldbiblionumber,$oldbibnum,$oldbibitemnum) = ModItemFromMarc($itemtosave,$biblionumber,$itemnumber);
+ ModItemFromMarc($itemtosave,$biblionumber,$itemnumber);
$itemnumber="";
}
$nextop="additem";
+} elsif ($op eq "delinkitem"){
+ my $analyticfield = '773';
+ if ($marcflavour eq 'MARC21' || $marcflavour eq 'NORMARC'){
+ $analyticfield = '773';
+ } elsif ($marcflavour eq 'UNIMARC') {
+ $analyticfield = '461';
+ }
+ foreach my $field ($record->field($analyticfield)){
+ if ($field->subfield('9') eq $hostitemnumber){
+ $record->delete_field($field);
+ last;
+ }
+ }
+ my $modbibresult = ModBiblio($record, $biblionumber,'');
}
#
# now, build existiing item list
my $temp = GetMarcBiblio( $biblionumber );
-my @fields = $temp->fields();
#my @fields = $record->fields();
+
+
my %witness; #---- stores the list of subfields used at least once, with the "meaning" of the code
my @big_array;
#---- finds where items.itemnumber is stored
my ( $itemtagfield, $itemtagsubfield) = &GetMarcFromKohaField("items.itemnumber", $frameworkcode);
my ($branchtagfield, $branchtagsubfield) = &GetMarcFromKohaField("items.homebranch", $frameworkcode);
+C4::Biblio::EmbedItemsInMarcBiblio($temp, $biblionumber);
+my @fields = $temp->fields();
+
+
+my @hostitemnumbers;
+my $analyticfield = '773';
+if ($marcflavour eq 'MARC21' || $marcflavour eq 'NORMARC') {
+ $analyticfield = '773';
+} elsif ($marcflavour eq 'UNIMARC') {
+ $analyticfield = '461';
+}
+foreach my $hostfield ($temp->field($analyticfield)){
+ if ($hostfield->subfield('0')){
+ my $hostrecord = GetMarcBiblio($hostfield->subfield('0'), 1);
+ my ($itemfield, undef) = GetMarcFromKohaField( 'items.itemnumber', GetFrameworkCode($hostfield->subfield('0')) );
+ foreach my $hostitem ($hostrecord->field($itemfield)){
+ if ($hostitem->subfield('9') eq $hostfield->subfield('9')){
+ push (@fields, $hostitem);
+ push (@hostitemnumbers, $hostfield->subfield('9'));
+ }
+ }
+ }
+}
+
+
foreach my $field (@fields) {
next if ( $field->tag() < 10 );
}
}
$this_row{itemnumber} = $subfieldvalue if ($field->tag() eq $itemtagfield && $subfieldcode eq $itemtagsubfield);
+ foreach my $hostitemnumber (@hostitemnumbers){
+ if ($this_row{itemnumber} eq $hostitemnumber){
+ $this_row{hostitemflag} = 1;
+ $this_row{hostbiblionumber}= GetBiblionumberFromItemnumber($hostitemnumber);
+ last;
+ }
+ }
+
+# my $countanalytics=GetAnalyticsCount($this_row{itemnumber});
+# if ($countanalytics > 0){
+# $this_row{countanalytics} = $countanalytics;
+# }
+
}
if (%this_row) {
push(@big_array, \%this_row);
$row_data{itemnumber} = $row->{itemnumber};
#reporting this_row values
$row_data{'nomod'} = $row->{'nomod'};
+ $row_data{'hostitemflag'} = $row->{'hostitemflag'};
+ $row_data{'hostbiblionumber'} = $row->{'hostbiblionumber'};
+# $row_data{'countanalytics'} = $row->{'countanalytics'};
push(@item_value_loop,\%row_data);
}
foreach my $subfield_code (sort keys(%witness)) {
C4::Context->userenv &&
C4::Context->userenv->{flags}!=1 &&
C4::Context->userenv->{branch};
-my $branches = GetBranchesLoop(C4::Context->userenv->{branch},$onlymine); # build once ahead of time, instead of multiple times later.
+my $branch = C4::Context->userenv->{branch};
+if ($frameworkcode eq 'FA'){
+ $branch = $input->param('branch');
+}
+my $branches = GetBranchesLoop($branch,$onlymine); # build once ahead of time, instead of multiple times later.
# We generate form, from actuel record
-my @fields;
+@fields = ();
if($itemrecord){
foreach my $field ($itemrecord->fields()){
my $tag = $field->{_tag};
next if subfield_is_koha_internal_p($subfieldtag);
next if ($tagslib->{$tag}->{$subfieldtag}->{'tab'} ne "10");
+ $subfieldlib->{hidden} = 1
+ if $tagslib->{$tag}->{$subfieldtag}->{authorised_value} eq 'LOST';
my $subfield_data = generate_subfield_form($tag, $subfieldtag, $value, $tagslib, $subfieldlib, $branches, $today_iso, $biblionumber, $temp, \@loop_data, $i);
push @fields, "$tag$subfieldtag";
opisadd => ($nextop eq "saveitem") ? 0 : 1,
C4::Search::enabled_staff_search_views,
);
+
+if ($frameworkcode eq 'FA'){
+ $template->{VARS}->{'borrowernumber'}=$input->param('borrowernumber');
+ $template->{VARS}->{'barcode'}=$input->param('barcode');
+ $template->{VARS}->{'stickyduedate'}=$input->param('stickduedate');
+ $template->{VARS}->{'duedatespec'}=$input->param('duedatespec');
+}
+
foreach my $error (@errors) {
$template->param($error => 1);
}