merging 1.2 and main branches
[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 my $bibitemnum      = checkinp($input->param('bibitemnum'));
15 my $bibnum          = checkinp($input->param('bibnum'));
16 my $itemtype        = checkinp($input->param('Item'));
17 my $url             = checkinp($input->param('url'));
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 $illus           = checkinp($input->param('Illustrations'));
23 my $pages           = checkinp($input->param('Pages'));
24 my $volumeddesc     = checkinp($input->param('Volume'));
25 my $notes           = checkinp($input->param('Notes'));
26 my $size            = checkinp($input->param('Size'));
27 my $place           = checkinp($input->param('Place'));
28 my $classification;
29 my $dewey;
30 my $subclass;
31
32 if ($itemtype ne 'NF') {
33   $classification=$class;
34 } # if
35
36 if ($class =~/[0-9]+/) {
37 #   print $class;
38    $dewey= $class;
39    $dewey=~ s/[a-z]+//gi;
40    my @temp;
41    if ($class =~ /\./) {
42      @temp=split(/[0-9]+\.[0-9]+/,$class);
43    } else {
44      @temp=split(/[0-9]+/,$class);
45    } # else
46    $classification=$temp[0];
47    $subclass=$temp[1];
48 #   print $classification,$dewey,$subclass;
49 } else {
50   $dewey='';
51   $subclass='';
52 } # else
53
54 my (@items) = &itemissues($bibitemnum);
55 #print @items;           
56 my $count   = @items;
57 #print $count;
58 my @barcodes;
59
60 my $existing=$input->param('existing');
61 if ($existing eq 'YES'){
62 #  print "yes";
63   my $group=$input->param('existinggroup');
64   #go thru items assing selected ones to group
65   for (my $i=0;$i<$count;$i++){
66     my $temp="check_group_".$items[$i]->{'barcode'};
67     my $barcode=$input->param($temp);
68     if ($barcode ne ''){
69       moditem($items[$i]->{'notforloan'},$items[$i]->{'itemnumber'},$group);
70 #      print "modify $items[$i]->{'itemnumber'} $group";
71     }
72   }
73   $bibitemnum=$group;
74 } else {
75     my $flag;
76     my $flag2;
77     for (my $i=0;$i<$count;$i++){
78       my $temp="check_group_".$items[$i]->{'barcode'};
79       $barcodes[$i]=$input->param($temp);
80       if ($barcodes[$i] eq ''){
81         $flag="notall";
82       } else {
83         $flag2="leastone";
84       }
85    }
86    my $loan;
87    if ($flag eq 'notall' && $flag2 eq 'leastone'){
88       $bibitemnum = &newbiblioitem({
89           biblionumber    => $bibnum,
90           itemtype        => $itemtype?$itemtype:"",
91           url             => $url?$url:"",
92           isbn            => $isbn?$isbn:"",
93           publishercode   => $publishercode?$publishercode:"",
94           publicationyear => $publicationdate?$publicationdate:"",
95           volumeddesc     => $volumeddesc?$volumeddesc:"",
96           classification  => $classification?$classification:"",
97           dewey           => $dewey?$dewey:"",
98           subclass        => $subclass?$subclass:"",
99           illus           => $illus?$illus:"",
100           pages           => $pages?$pages:"",
101           notes           => $notes?$notes:"",
102           size            => $size?$size:"",
103           place           => $place?$place:"" });
104       if ($itemtype =~ /REF/){
105         $loan=1;
106       } else {
107         $loan=0;
108       }
109       for (my $i=0;$i<$count;$i++){
110         if ($barcodes[$i] ne ''){
111           moditem($loan,$items[$i]->{'itemnumber'},$bibitemnum);
112         }
113       }
114       
115    } elsif ($flag2 eq 'leastone') {
116       &modbibitem({
117           biblioitemnumber => $bibitemnum,
118           itemtype         => $itemtype?$itemtype:"",
119           url              => $url?$url:"",
120           isbn             => $isbn?$isbn:"",
121           publishercode    => $publishercode?$publishercode:"",
122           publicationyear  => $publicationdate?$publicationdate:"",
123           classification   => $classification?$classification:"",
124           dewey            => $dewey?$dewey:"",
125           subclass         => $subclass?$subclass:"",
126           illus            => $illus?$illus:"",
127           pages            => $pages?$pages:"",
128           volumeddesc      => $volumeddesc?$volumeddesc:"",
129           notes            => $notes?$notes:"",
130           size             => $size?$size:"",
131           place            => $place?$place:"" });
132       if ($itemtype =~ /REF/){
133         $loan=1;
134       } else {
135         $loan=0;
136       }
137         for (my $i=0;$i<$count;$i++){                                             
138           if ($barcodes[$i] ne ''){                                               
139             moditem($loan,$items[$i]->{'itemnumber'},$bibitemnum);                
140           }                                                                       
141         }
142       
143    } else {
144      &modbibitem({
145          biblioitemnumber => $bibitemnum,
146          itemtype         => $itemtype?$itemtype:"",
147          url              => $url?$url:"",
148          isbn             => $isbn?$isbn:"",
149          publishercode    => $publishercode?$publishercode:"",
150          publicationyear  => $publicationdate?$publicationdate:"",
151          classification   => $classification?$classification:"",
152          dewey            => $dewey?$dewey:"",
153          subclass         => $subclass?$subclass:"",
154          illus            => $illus?$illus:"",
155          pages            => $pages?$pages:"",
156          volumeddesc      => $volumeddesc?$volumeddesc:"",
157          notes            => $notes?$notes:"",
158          size             => $size?$size:"",
159          place            => $place?$place:"" });
160    } # else
161 }
162 print $input->redirect("moredetail.pl?type=intra&bib=$bibnum&bi=$bibitemnum");
163
164
165 sub checkinp{
166   my ($inp)=@_;
167   $inp=~ s/\'/\\\'/g;
168   $inp=~ s/\"/\\\"/g;
169   return($inp);
170 }