CRITICAL bug in acquisition (another one...) : when MARC=ON, and an order line is...
[koha.git] / search.marc / search.pl
index ec8390b..812f1aa 100755 (executable)
@@ -30,6 +30,7 @@ use C4::Output;
 use C4::Interface::CGI::Output;
 use C4::Biblio;
 use C4::SearchMarc;
+use C4::Acquisition;
 use C4::Koha; # XXX subfield_is_koha_internal_p
 
 # Creates the list of active tags using the active MARC configuration
@@ -41,7 +42,7 @@ sub create_marclist {
        my $widest_menu_item_width = 0;
        for (my $pass = 1; $pass <= 2; $pass += 1)
        {
-               for (my $tabloop = 0; $tabloop<=9;$tabloop++)
+               for (my $tabloop = 0; $tabloop<=10;$tabloop++)
                {
                        my $separator_inserted_p = 0; # FIXME... should not use!!
                        foreach my $tag (sort(keys (%{$tagslib})))
@@ -114,11 +115,15 @@ if ($op eq "do_search") {
        my @tags;
 
        foreach my $marc (@marclist) {
-               my ($tag,$subfield) = MARCfind_marc_from_kohafield($dbh,$marc);
-               if ($tag) {
-                       push @tags,$dbh->quote("$tag$subfield");
+               if ($marc) {
+                       my ($tag,$subfield) = MARCfind_marc_from_kohafield($dbh,$marc,'');
+                       if ($tag) {
+                               push @tags,$dbh->quote("$tag$subfield");
+                       } else {
+                               push @tags, $dbh->quote(substr($marc,0,4));
+                       }
                } else {
-                       push @tags, $dbh->quote(substr($marc,0,4));
+                       push @tags, "";
                }
        }
        findseealso($dbh,\@tags);
@@ -139,15 +144,13 @@ if ($op eq "do_search") {
        # multi page display gestion
        my $displaynext=0;
        my $displayprev=$startfrom;
-       if(($total - (($startfrom+1)*($resultsperpage))) > 0 ){
+       if(($total - (($startfrom+1)*($resultsperpage))) > 0 ) {
                $displaynext = 1;
        }
 
        my @field_data = ();
 
-
-       for(my $i = 0 ; $i <= $#marclist ; $i++)
-       {
+       for(my $i = 0 ; $i <= $#marclist ; $i++) {
                push @field_data, { term => "marclist", val=>$marclist[$i] };
                push @field_data, { term => "and_or", val=>$and_or[$i] };
                push @field_data, { term => "excluding", val=>$excluding[$i] };
@@ -157,12 +160,9 @@ if ($op eq "do_search") {
 
        my @numbers = ();
 
-       if ($total>$resultsperpage)
-       {
-               for (my $i=1; $i<$total/$resultsperpage+1; $i++)
-               {
-                       if ($i<16)
-                       {
+       if ($total>$resultsperpage) {
+               for (my $i=1; $i<$total/$resultsperpage+1; $i++) {
+                       if ($i<16) {
                        my $highlight=0;
                        ($startfrom==($i-1)) && ($highlight=1);
                        push @numbers, { number => $i,
@@ -182,7 +182,6 @@ if ($op eq "do_search") {
        } else {
                $to = (($startfrom+1)*$resultsperpage);
        }
-
        $template->param(result => $results,
                                                        startfrom=> $startfrom,
                                                        displaynext=> $displaynext,
@@ -194,7 +193,8 @@ if ($op eq "do_search") {
                                                        total=>$total,
                                                        from=>$from,
                                                        to=>$to,
-                                                       numbers=>\@numbers
+                                                       numbers=>\@numbers,
+                                                       MARC_ON => C4::Context->preference("marc"),
                                                        );
 
 } elsif ($op eq "AddStatement") {
@@ -297,8 +297,47 @@ else {
        push @statements, { "marclist" => $marclist, "first" => 1 };
        push @statements, { "marclist" => $marclist, "first" => 0 };
        push @statements, { "marclist" => $marclist, "first" => 0 };
+       my $sth=$dbh->prepare("Select itemtype,description from itemtypes order by description");
+       $sth->execute;
+       my  @itemtype;
+       my %itemtypes;
+       push @itemtype, "";
+       $itemtypes{''} = "";
+       while (my ($value,$lib) = $sth->fetchrow_array) {
+               push @itemtype, $value;
+               $itemtypes{$value}=$lib;
+       }
+
+       my $CGIitemtype=CGI::scrolling_list( -name     => 'value',
+                               -values   => \@itemtype,
+                               -labels   => \%itemtypes,
+                               -size     => 1,
+                               -multiple => 0 );
+       $sth->finish;
+
+       my @branches;
+       my @select_branch;
+       my %select_branches;
+       my ($count2,@branches)=branches();
+       push @select_branch, "";
+       $select_branches{''} = "";
+       for (my $i=0;$i<$count2;$i++){
+               push @select_branch, $branches[$i]->{'branchcode'};#
+               $select_branches{$branches[$i]->{'branchcode'}} = $branches[$i]->{'branchname'};
+       }
+       my $CGIbranch=CGI::scrolling_list( -name     => 'value',
+                               -values   => \@select_branch,
+                               -labels   => \%select_branches,
+                               -size     => 1,
+                               -multiple => 0 );
+       $sth->finish;
+
 
-       $template->param("statements" => \@statements, "nbstatements" => 3);
+       $template->param("statements" => \@statements,
+                       "nbstatements" => 3,
+                       CGIitemtype => $CGIitemtype,
+                       CGIbranch => $CGIbranch,
+                       );
 }