Fixed bug where a biblioitem with a subclass but no dewey would get the
[koha.git] / updatebibitem.pl
1 #!/usr/bin/perl
2
3 use C4::Database;
4 use CGI;
5 use strict;
6 use C4::Acquisitions;
7 use C4::Output;
8 use C4::Search;
9
10 my $input= new CGI;
11 #print $input->header;
12 #print $input->dump;
13
14
15 my $bibitemnum=checkinp($input->param('bibitemnum'));
16 my $bibnum=checkinp($input->param('bibnum'));
17 my $itemtype=checkinp($input->param('Item'));
18 my $isbn=checkinp($input->param('ISBN'));
19 my $publishercode=checkinp($input->param('Publisher'));
20 my $publicationdate=checkinp($input->param('Publication'));
21 my $class=checkinp($input->param('Class'));
22 my $classification;
23 my $dewey;
24 my $subclass;
25 if ($itemtype ne 'NF'){
26   $classification=$class;
27 }
28 if ($class =~/[0-9]+/){
29 #   print $class;
30    $dewey= $class;
31    $dewey=~ s/[a-z]+//gi;
32    my @temp;
33    if ($class =~ /\./){
34      @temp=split(/[0-9]+\.[0-9]+/,$class);
35    } else {
36      @temp=split(/[0-9]+/,$class);
37    }
38    $classification=$temp[0];
39    $subclass=$temp[1];
40 #   print $classification,$dewey,$subclass;
41 }else{
42   $dewey='';
43   $subclass=$class;
44 }
45 my $illus=checkinp($input->param('Illustrations'));
46 my $pages=checkinp($input->param('Pages'));
47 my $volumeddesc=checkinp($input->param('Volume'));
48 my $notes=checkinp($input->param('Notes'));
49 my $size=checkinp($input->param('Size'));
50 my $place=checkinp($input->param('Place'));
51 my (@items)=itemissues($bibitemnum);
52 #print @items;           
53 my $count=@items;
54 #print $count;
55 my @barcodes;
56
57
58 my $existing=$input->param('existing');
59 if ($existing eq 'YES'){
60 #  print "yes";
61   my $group=$input->param('existinggroup');
62   #go thru items assing selected ones to group
63   for (my $i=0;$i<$count;$i++){
64     my $temp="check_group_".$items[$i]->{'barcode'};
65     my $barcode=$input->param($temp);
66     if ($barcode ne ''){
67       moditem($items[$i]->{'notforloan'},$items[$i]->{'itemnumber'},$group);
68 #      print "modify $items[$i]->{'itemnumber'} $group";
69     }
70   }
71   $bibitemnum=$group;
72 } else {
73     my $flag;
74     my $flag2;
75     for (my $i=0;$i<$count;$i++){
76       my $temp="check_group_".$items[$i]->{'barcode'};
77       $barcodes[$i]=$input->param($temp);
78       if ($barcodes[$i] eq ''){
79         $flag="notall";
80       } else {
81         $flag2="leastone";
82       }
83    }
84    my $loan;
85    if ($flag eq 'notall' && $flag2 eq 'leastone'){
86       $bibitemnum=newbiblioitem($bibnum,$itemtype,$volumeddesc,$classification);
87       modbibitem($bibitemnum,$itemtype,$isbn,$publishercode,$publicationdate,$classification,$dewey,$subclass,$illus,$pages,$volumeddesc,$notes,$size,$place);
88       if ($itemtype =~ /REF/){
89         $loan=1;
90       } else {
91         $loan=0;
92       }
93       for (my $i=0;$i<$count;$i++){
94         if ($barcodes[$i] ne ''){
95           moditem($loan,$items[$i]->{'itemnumber'},$bibitemnum);
96         }
97       }
98       
99    } elsif ($flag2 eq 'leastone') {
100       modbibitem($bibitemnum,$itemtype,$isbn,$publishercode,$publicationdate,$classification,$dewey,$subclass,$illus,$pages,$volumeddesc,$notes,$size,$place);
101       if ($itemtype =~ /REF/){
102         $loan=1;
103       } else {
104         $loan=0;
105       }
106         for (my $i=0;$i<$count;$i++){                                             
107           if ($barcodes[$i] ne ''){                                               
108             moditem($loan,$items[$i]->{'itemnumber'},$bibitemnum);                
109           }                                                                       
110         }
111       
112    }
113 }
114 print $input->redirect("moredetail.pl?type=intra&bib=$bibnum&bi=$bibitemnum");
115
116
117 sub checkinp{
118   my ($inp)=@_;
119   $inp=~ s/\'/\\\'/g;
120   $inp=~ s/\"/\\\"/g;
121   return($inp);
122 }