[Koha-patches] [PATCH 34/78] addorderiso2709

paul.poulain at biblibre.com paul.poulain at biblibre.com
Thu May 28 18:32:44 CEST 2009


From: Paul Poulain <paul.poulain at biblibre.com>

add order from a staged iso2709 file
---
 acqui/addorderiso2709.pl                           |  360 ++++++++++++++++++++
 .../prog/en/modules/acqui/addorderiso2709.tmpl     |  189 ++++++++++
 2 files changed, 549 insertions(+), 0 deletions(-)
 create mode 100755 acqui/addorderiso2709.pl
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/acqui/addorderiso2709.tmpl

diff --git a/acqui/addorderiso2709.pl b/acqui/addorderiso2709.pl
new file mode 100755
index 0000000..51df588
--- /dev/null
+++ b/acqui/addorderiso2709.pl
@@ -0,0 +1,360 @@
+#!/usr/bin/perl
+
+#A script that lets the user populate a basket from an iso2709 file
+#the script first displays a list of import batches, then when a batch is selected displays all the biblios in it.
+#The user can then pick which biblios he wants to order
+#written by john.soros at biblibre.com 01/12/2008
+
+# Copyright 2008 - 2009 BibLibre SARL
+#
+# This file is part of Koha.
+#
+# Koha is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
+# Suite 330, Boston, MA  02111-1307 USA
+
+use strict;
+use warnings;
+use CGI;
+use C4::Context;
+use C4::Auth;
+use C4::Input;
+use C4::Output;
+use C4::ImportBatch qw/GetImportBatchRangeDesc GetNumberOfNonZ3950ImportBatches GetImportRecordMatches GetImportBibliosRange GetImportBatchOverlayAction GetImportBatchNoMatchAction GetImportBatchItemAction GetImportRecordMarc GetImportBatch/;
+use C4::Matcher;
+use C4::Search qw/FindDuplicate BiblioAddAuthorities/;
+use C4::Acquisition qw/NewOrder/;
+use C4::Biblio;
+use C4::Items;
+use C4::Koha qw/GetItemTypes/;
+use C4::Budgets qw/GetBudgets/;
+use C4::Acquisition qw/NewOrderItem/;
+
+my $input = new CGI;
+my ($template, $loggedinuser, $cookie) = get_template_and_user({
+                                        template_name => "acqui/addorderiso2709.tmpl",
+                                        query => $input,
+                                        type => "intranet",
+                                        authnotrequired => 0,
+                                        flagsrequired   => { acquisition => 'order_manage' },
+                                        debug => 1,
+                                        });
+my $cgiparams = $input->Vars;
+my $op = $cgiparams->{'op'};
+$template->param(scriptname => "/cgi-bin/koha/acqui/addorderiso2709.pl");
+my $ordnum;
+
+if ($cgiparams->{'import_batch_id'} && $op eq ""){
+    $op = "batch_details";
+}
+
+#Needed parameters:
+if (! $cgiparams->{'basketno'}){
+    die "Basketnumber required to order from iso2709 file import";
+}
+
+if ($op eq ""){
+    $template->param("basketno" => $cgiparams->{'basketno'});
+#display batches
+    import_batches_list($template);
+} elsif ($op eq "batch_details"){
+#display lines inside the selected batch
+    $template->param("batch_details" => 1,
+                     "basketno"      => $cgiparams->{'basketno'});
+    import_biblios_list($template, $cgiparams->{'import_batch_id'});
+    
+} elsif ($op eq 'import_records'){
+#import selected lines
+    $template->param('basketno' => $cgiparams->{'basketno'});
+# Budget_id is mandatory for adding an order, we just add a default, the user needs to modify this aftewards
+    my $budgets = GetBudgets();
+    if (scalar @$budgets == 0){
+        die "No budgets defined, can't continue";
+    }
+    my $budget_id = @$budgets[0]->{'budget_id'};
+#get all records from a batch, and check their import status to see if they are checked.
+#(default values: quantity 1, uncertainprice yes, first budget)
+
+    # retrieve the file you want to import
+    my $import_batch_id = $cgiparams->{'import_batch_id'};
+    my $biblios = GetImportBibliosRange($import_batch_id);
+    for my $biblio (@$biblios){
+        if($cgiparams->{'order-'.$biblio->{'import_record_id'}}){
+            my ($marcblob, $encoding) = GetImportRecordMarc($biblio->{'import_record_id'});
+            my $marcrecord = MARC::Record->new_from_usmarc($marcblob) || die "couldn't translate marc information";
+            my ($duplicatetitle, $biblionumber);
+            if(!(($biblionumber,$duplicatetitle) = FindDuplicate($marcrecord))){
+#FIXME: missing: marc21 support (should be same with different field)
+                if ( C4::Context->preference("marcflavour") eq 'UNIMARC' ) {
+                    my $itemtypeid = "itemtype-" . $biblio->{'import_record_id'};
+                    $marcrecord->field(200)->update("b" => $cgiparams->{$itemtypeid});
+                }
+                # add the biblio
+                my $bibitemnum;
+                # remove ISBN -
+                my ($isbnfield,$isbnsubfield) = GetMarcFromKohaField('biblioitems.isbn','');
+                if ( $marcrecord->field($isbnfield) ) {
+                    foreach my $field ( $marcrecord->field($isbnfield) ) {
+                        foreach my $subfield ( $field->subfield($isbnsubfield) ) {
+                            my $newisbn = $field->subfield($isbnsubfield);
+                            $newisbn =~ s/-//g;
+                            $field->update( $isbnsubfield => $newisbn );
+                        }
+                    }
+                }
+
+                ( $biblionumber, $bibitemnum ) = AddBiblio( $marcrecord, $cgiparams->{'frameworkcode'} || '' );
+            } else {
+                warn("Duplicate item found: ", $biblionumber, "; Duplicate: ", $duplicatetitle);
+            }
+            if (C4::Context->preference("BiblioAddsAuthorities")){
+                my ($countlinked,$countcreated)=BiblioAddAuthorities($marcrecord, $cgiparams->{'frameworkcode'});
+            }
+            my $patron = C4::Members->GetMember($loggedinuser);
+            my $branch = C4::Branch->GetBranchDetail($patron->{branchcode});
+            my ($invoice);
+            my %orderinfo = ("biblionumber", $biblionumber,
+                                           "basketno", $cgiparams->{'basketno'},
+                                           "quantity", $cgiparams->{'quantityrec-' . $biblio->{'import_record_id'}},
+#                                           "budgetdate", $budget,
+                                           "branchcode", $branch,
+                                           "booksellerinvoicenumber", $invoice,
+                                           "budget_id", $budget_id,
+                                           "uncertainprice", 1,
+                                           );
+            # get the price if there is one.
+            # filter by storing only the 1st number
+            # we suppose the currency is correct, as we have no possibilities to get it.
+            if ($marcrecord->subfield("345","d")) {
+              $orderinfo{'listprice'} = $marcrecord->subfield("345","d");
+              if ($orderinfo{'listprice'} =~ /^([\d\.,]*)/) {
+                  $orderinfo{'listprice'} = $1;
+                  $orderinfo{'listprice'} =~ s/,/\./;
+                  eval "use C4::Acquisition qw/GetBasket/;";
+                  eval "use C4::Bookseller qw/GetBookSellerFromId/;";
+                  my $basket = GetBasket($orderinfo{basketno});
+                  my $bookseller = GetBookSellerFromId($basket->{booksellerid});
+                  my $gst = $bookseller->{gstrate} || C4::Context->preference("gist") || 0;
+                  $orderinfo{'unitprice'} = $orderinfo{listprice} - ($orderinfo{listprice} * ($bookseller->{discount} / 100));
+                  $orderinfo{'ecost'} = $orderinfo{unitprice};
+              } else {
+                  $orderinfo{'listprice'} = 0;
+              }
+              $orderinfo{'rrp'} = $orderinfo{'listprice'};
+            }
+            elsif ($marcrecord->subfield("010","d")) {
+              $orderinfo{'listprice'} = $marcrecord->subfield("010","d");
+              if ($orderinfo{'listprice'} =~ /^([\d\.,]*)/) {
+                  $orderinfo{'listprice'} = $1;
+                  $orderinfo{'listprice'} =~ s/,/\./;
+                  eval "use C4::Acquisition qw/GetBasket/;";
+                  eval "use C4::Bookseller qw/GetBookSellerFromId/;";
+                  my $basket = GetBasket($orderinfo{basketno});
+                  my $bookseller = GetBookSellerFromId($basket->{booksellerid});
+                  my $gst = $bookseller->{gstrate} || C4::Context->preference("gist") || 0;
+                  $orderinfo{'unitprice'} = $orderinfo{listprice} - ($orderinfo{listprice} * ($bookseller->{discount} / 100));
+                  $orderinfo{'ecost'} = $orderinfo{unitprice};
+              } else {
+                  $orderinfo{'listprice'} = 0;
+              }
+              $orderinfo{'rrp'} = $orderinfo{'listprice'};
+            }
+            my $basketno;
+            ( $basketno, $ordnum ) = NewOrder(\%orderinfo);
+
+            # now, add items if applicable
+            # parse all items sent by the form, and create an item just for the import_record_id we are dealing with
+            # this is not optimised, but it's working !
+            if (C4::Context->preference('AcqCreateItem') eq 'ordering') {
+                my @tags         = $input->param('tag');
+                my @subfields    = $input->param('subfield');
+                my @field_values = $input->param('field_value');
+                my @serials      = $input->param('serial');
+                my @itemids       = $input->param('itemid'); # hint : in iso2709, the itemid contains the import_record_id, not an item id. It is used to get the right item, as we have X biblios.
+                my @ind_tag      = $input->param('ind_tag');
+                my @indicator    = $input->param('indicator');
+                #Rebuilding ALL the data for items into a hash
+                # parting them on $itemid.
+                my %itemhash;
+                my $range=scalar(@itemids);
+                
+                my $i = 0;
+                my @items;
+                for my $itemid (@itemids){
+                    my $realitemid;     #javascript generated random itemids, in the form itemid-randomnumber, $realitemid is the itemid, while $itemid is the itemide parsed from the html
+                    if ($itemid =~ m/(\d+)-.*/){
+                        my @splits = split(/-/, $itemid);
+                        $realitemid = $splits[0];
+                    }
+                    if ( ( $realitemid && $cgiparams->{'order-'. $realitemid} && $realitemid eq $biblio->{import_record_id}) || ($itemid && $cgiparams->{'order-'. $itemid} && $itemid eq $biblio->{import_record_id}) ){
+                        my ($item, $found);
+                        for my $tmpitem (@items){
+                            if ($tmpitem->{itemid} eq $itemid){
+                                $item = $tmpitem;
+                                $found = 1;
+                            }
+                        }
+                        push @{$item->{tags}}, @tags[$i];
+                        push @{$item->{subfields}}, @subfields[$i];
+                        push @{$item->{field_values}}, @field_values[$i];
+                        push @{$item->{ind_tag}}, @ind_tag[$i];
+                        push @{$item->{indicator}}, @indicator[$i];
+                        $item->{itemid} = $itemid;
+                        if (! $found){
+                             push @items, $item;
+                        }
+                    }
+                    ++$i
+                }
+                foreach my $item (@items){
+                        my $xml = TransformHtmlToXml( $item->{'tags'},
+                                                $item->{'subfields'},
+                                                $item->{'field_values'},
+                                                $item->{'ind_tag'},
+                                                $item->{'indicator'});
+                        my $record=MARC::Record::new_from_xml($xml, 'UTF-8');
+                        my ($biblionumber,$bibitemnum,$itemnumber) = AddItemFromMarc($record,$biblionumber);
+                        NewOrderItem( $itemnumber, $ordnum);
+                }
+            }
+        }
+    }
+    # go to basket page
+    print $input->redirect("/cgi-bin/koha/acqui/basket.pl?basketno=".$cgiparams->{'basketno'});
+    exit;
+}
+output_html_with_http_headers $input, $cookie, $template->output;
+
+
+sub import_batches_list {
+    my ($template) = @_;
+    my $batches = GetImportBatchRangeDesc();
+
+    my @list = ();
+    foreach my $batch (@$batches) {
+        if ($batch->{'import_status'} eq "staged") {
+        push @list, {
+                import_batch_id => $batch->{'import_batch_id'},
+                num_biblios => $batch->{'num_biblios'},
+                num_items => $batch->{'num_items'},
+                upload_timestamp => $batch->{'upload_timestamp'},
+                import_status => $batch->{'import_status'},
+                file_name => $batch->{'file_name'},
+                comments => $batch->{'comments'},
+            };
+        }
+    }
+    $template->param(batch_list => \@list); 
+    my $num_batches = GetNumberOfNonZ3950ImportBatches();
+    $template->param(num_results => $num_batches);
+}
+
+sub import_biblios_list {
+    my ($template, $import_batch_id) = @_;
+    my $batch = GetImportBatch($import_batch_id);
+    my $biblios = GetImportBibliosRange($import_batch_id);
+    my @list = ();
+# Itemtype is mandatory for adding a biblioitem, we just add a default, the user needs to modify this aftewards
+    my $itemtypehash = GetItemTypes();
+    my @itemtypes;
+    for my $key (keys %$itemtypehash) {
+        push(@itemtypes, $itemtypehash->{$key});
+    }
+    foreach my $biblio (@$biblios) {
+        my $citation = $biblio->{'title'};
+        $citation .= " $biblio->{'author'}" if $biblio->{'author'};
+        $citation .= " (" if $biblio->{'issn'} or $biblio->{'isbn'};
+        $citation .= $biblio->{'isbn'} if $biblio->{'isbn'};
+        $citation .= ", " if $biblio->{'issn'} and $biblio->{'isbn'};
+        $citation .= $biblio->{'issn'} if $biblio->{'issn'};
+        $citation .= ")" if $biblio->{'issn'} or $biblio->{'isbn'};
+        my $match = GetImportRecordMatches($biblio->{'import_record_id'}, 1);
+        my %cellrecord = (
+            import_record_id => $biblio->{'import_record_id'},
+            citation => $citation,
+            import  => 1,
+            status => $biblio->{'status'},
+            record_sequence => $biblio->{'record_sequence'},
+            overlay_status => $biblio->{'overlay_status'},
+            match_biblionumber => $#$match > -1 ? $match->[0]->{'biblionumber'} : 0,
+            match_citation => $#$match > -1 ? $match->[0]->{'title'} . ' ' . $match->[0]->{'author'} : '',
+            match_score => $#$match > -1 ? $match->[0]->{'score'} : 0,
+            itemtypes => \@itemtypes,
+        );
+        if (C4::Context->preference('AcqCreateItem') eq 'ordering' && !$ordnum) {
+            # prepare empty item form
+            my $cell = PrepareItemrecordDisplay();
+            my @itemloop;
+            push @itemloop,$cell;
+            $cellrecord{'items'} = \@itemloop;
+        }
+        push @list, \%cellrecord;
+
+
+    }
+    my $num_biblios = $batch->{'num_biblios'};
+    my $overlay_action = GetImportBatchOverlayAction($import_batch_id);
+    my $nomatch_action = GetImportBatchNoMatchAction($import_batch_id);
+    my $item_action = GetImportBatchItemAction($import_batch_id);
+    $template->param(biblio_list => \@list,
+                                      num_results => $num_biblios,
+                                      import_batch_id => $import_batch_id,
+                                      "overlay_action_${overlay_action}" => 1,
+                                      overlay_action => $overlay_action,
+                                      "nomatch_action_${nomatch_action}" => 1,
+                                      nomatch_action => $nomatch_action,
+                                      "item_action_${item_action}" => 1,
+                                      item_action => $item_action
+                                     );
+    batch_info($template, $batch);
+}
+
+sub batch_info {
+    my ($template, $batch) = @_;
+    $template->param(batch_info => 1,
+                                      file_name => $batch->{'file_name'},
+                                          comments => $batch->{'comments'},
+                                          import_status => $batch->{'import_status'},
+                                          upload_timestamp => $batch->{'upload_timestamp'},
+                                          num_biblios => $batch->{'num_biblios'},
+                                          num_items => $batch->{'num_biblios'});
+    if ($batch->{'num_biblios'} > 0) {
+        if ($batch->{'import_status'} eq 'staged' or $batch->{'import_status'} eq 'reverted') {
+            $template->param(can_commit => 1);
+        }
+        if ($batch->{'import_status'} eq 'imported') {
+            $template->param(can_revert => 1);
+        }
+    }
+    if (defined $batch->{'matcher_id'}) {
+        my $matcher = C4::Matcher->fetch($batch->{'matcher_id'});
+        if (defined $matcher) {
+            $template->param('current_matcher_id' => $batch->{'matcher_id'},
+                                              'current_matcher_code' => $matcher->code(),
+                                              'current_matcher_description' => $matcher->description());
+        }
+    }
+    add_matcher_list($batch->{'matcher_id'});
+}
+
+sub add_matcher_list {
+    my $current_matcher_id = shift;
+    my @matchers = C4::Matcher::GetMatcherList();
+    if (defined $current_matcher_id) {
+        for (my $i = 0; $i <= $#matchers; $i++) {
+            if ($matchers[$i]->{'matcher_id'} == $current_matcher_id) {
+                $matchers[$i]->{'selected'} = 1;
+            }
+        }
+    }
+    $template->param(available_matchers => \@matchers);
+}
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/addorderiso2709.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/addorderiso2709.tmpl
new file mode 100644
index 0000000..4e74eb9
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/addorderiso2709.tmpl
@@ -0,0 +1,189 @@
+<!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->
+<title>Koha &rsaquo; Acquisitions &rsaquo; Order Staged MARC Records
+<!-- TMPL_IF name="batch_details" -->
+ &rsaquo; Batch <!-- TMPL_VAR name="import_batch_id" -->
+<!-- TMPL_ELSE -->
+ &rsaquo; Batch List
+<!-- /TMPL_IF -->
+</title>
+<!-- <script type="text/javascript" src="<!-- TMPL_VAR NAME='themelang' -->/js/additem.js"></script> -->
+<script type="text/javascript">
+//need to override cloneItemBlock to not generate a random itemid
+function cloneItemBlock(index) {    
+    var original = document.getElementById('itemblock-' + index); //original <div>
+    var clone = original.cloneNode(true);
+    var random = Math.floor(Math.random()*100000); // get a random itemid.
+    // set the attribute for the new 'div' subfields
+    clone.setAttribute('id','itemblock-' + index + '-' + random);//set another id.
+    var NumTabIndex;
+    NumTabIndex = parseInt(original.getAttribute('tabindex'));
+    if(isNaN(NumTabIndex)) NumTabIndex = 0;
+    clone.setAttribute('tabindex',NumTabIndex+1);
+    var CloneButtonPlus;
+    var CloneButtonMinus;
+        CloneButtonPlus = clone.getElementsByTagName('a')[0];
+        CloneButtonPlus.setAttribute('onclick',"cloneItemBlock('" + index  + '-' +  random + "')");
+    CloneButtonMinus = clone.getElementsByTagName('a')[1];
+    CloneButtonMinus.setAttribute('onclick',"deleteItemBlock('" + index + '-' + random + "')");
+    CloneButtonMinus.setAttribute('style',"display:inline");
+    // change itemids of the clone
+    var elems = clone.getElementsByTagName('input');
+    for( i = 0 ; elems[i] ; i++ )
+    {
+        if(elems[i].name.match(/^itemid/)) {
+            elems[i].value += "-" + random;
+        }
+    }
+    var itemid = index.split("-");
+    itemid=itemid[0];
+    original.parentNode.insertBefore(clone,original.nextSibling);
+    var quantityrec = document.getElementById('quantityrec-' + itemid);
+    quantityrec.setAttribute('value',parseFloat(quantityrec.getAttribute('value'))+1);
+}
+function deleteItemBlock(index) {
+    var aDiv = document.getElementById('itemblock-' + index);
+    var elems = aDiv.getElementsByTagName('input');
+    var itemid = index.split("-");
+    itemid=itemid[0];
+    aDiv.parentNode.removeChild(aDiv);
+    var quantityrec = document.getElementById('quantityrec-' + itemid);
+    quantityrec.setAttribute('value',parseFloat(quantityrec.getAttribute('value'))-1);
+}
+</script>
+<!-- TMPL_INCLUDE NAME="doc-head-close.inc" -->
+<body>
+<!-- TMPL_INCLUDE NAME="header.inc" -->
+<!-- TMPL_INCLUDE NAME="acquisitions-search.inc" -->
+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisitions</a> &rsaquo;<a href="/cgi-bin/koha/acqui/supplier.pl?supplierid=<!-- TMPL_VAR NAME="booksellerid" -->"><!-- TMPL_VAR NAME="booksellername" --></a> &rsaquo; <a href="/cgi-bin/koha/acqui/basket.pl?basketno=<!-- TMPL_VAR name="basketno" -->">Basket #<!-- TMPL_VAR name="basketno" --></a> &rsaquo;  Add orders from iso2709 file</div>
+<div id="doc3" class="yui-t2">
+   <div id="bd">
+       <div id="yui-main">
+           <div class="yui-b">
+             <h1>Add orders from iso2709 file</h1>
+             <!-- TMPL_IF name="batch_details" -->
+               <h2>From batch id <!-- TMPL_VAR name="import_batch_id" --></h2>
+               <div>
+                     <dl>
+                       <dd><strong>File name</strong><!-- TMPL_VAR name="file_name" --></dd>
+                       <dd><strong>Comments</strong><!-- TMPL_VAR name="comments" --></dd>
+                       <dd><strong>Staged</strong><!-- TMPL_VAR name="upload_timestamp" --></dd>
+                     </dl>
+               </div>
+               <div>
+                   <form action="<!--TMPL_VAR name="scriptname" -->" method="post" name="import_biblios">
+                     <table>
+                     <tr>
+                         <th>#</th>
+                         <th>Citation</th>
+                         <th>Match?</th>
+                         <th>Order?</th>
+                       </tr>
+                       <!-- TMPL_LOOP name="biblio_list" -->
+                         <tr>
+                             <td><a href="/cgi-bin/koha/catalogue/showmarc.pl?importid=<!-- TMPL_VAR name="import_record_id" -->" rel="gb_page_center[600,500]"><!-- TMPL_VAR name="record_sequence"--></a></td>
+                             <td>
+                                <!-- TMPL_VAR name="citation"-->
+                                    <!-- TMPL_IF name="items" -->
+                                    <fieldset class="rows">
+                                        <label>Itemtype</label>
+                                        <select id="itemtype-<!-- TMPL_VAR name="import_record_id" -->" name="itemtype-<!-- TMPL_VAR name="import_record_id" -->" >
+                                            <!-- TMPL_LOOP name="itemtypes" -->
+                                                <option value="<!-- TMPL_VAR name="itemtype" -->"><!-- TMPL_VAR name="description" --></option>
+                                            <!-- /TMPL_LOOP -->
+                                        </select>
+                                        <!-- TMPL_LOOP NAME="items" -->
+                                        <div id="outeritemblock">
+                                        <div id="itemblock-<!-- TMPL_VAR name="import_record_id" -->">
+                                            <ol><!-- TMPL_LOOP NAME="iteminformation" --><li>
+                                                <div class="subfield_line" style="<!-- TMPL_VAR NAME='hidden' -->;" id="subfield<!-- TMPL_VAR NAME='serialid' --><!-- TMPL_VAR NAME='countitems' --><!-- TMPL_VAR NAME='subfield' --><!-- TMPL_VAR name="random" -->">
+                                                    <label><!-- TMPL_VAR NAME="subfield" --> - <!-- TMPL_IF name="mandatory" --><b><!-- /TMPL_IF --><!-- TMPL_VAR NAME="marc_lib" --><!-- TMPL_IF name="mandatory" --> *</b><!-- /TMPL_IF --></label>
+                                                    <!-- TMPL_VAR NAME="marc_value" -->
+                                                    <input type="hidden" name="itemid" value="<!-- TMPL_VAR name="import_record_id" -->" />
+                                                    <input type="hidden" name="kohafield" value="<!-- TMPL_VAR NAME="kohafield" -->" />
+                                                    <input type="hidden" name="tag" value="<!-- TMPL_VAR NAME="tag" -->" />
+                                                    <input type="hidden" name="subfield" value="<!-- TMPL_VAR NAME="subfield" -->" />
+                                                    <input type="hidden" name="mandatory" value="<!-- TMPL_VAR NAME="mandatory" -->" />
+                                                    <!-- TMPL_IF NAME="ITEM_SUBFIELDS_ARE_NOT_REPEATABLE" -->
+                                                        <span class="buttonPlus" onclick="CloneSubfield('subfield<!-- TMPL_VAR NAME='serialid' --><!-- TMPL_VAR NAME='countitems' --><!-- TMPL_VAR NAME='subfield' --><!-- TMPL_VAR name="random" -->')">+</span>
+                                                    <!-- /TMPL_IF -->
+                                                </div></li>
+                                            <!-- /TMPL_LOOP-->
+                                            </ol>
+                                            <a style="cursor: pointer; color: grey; font-size: 180%;" onclick="cloneItemBlock('<!-- TMPL_VAR name="import_record_id" -->')">+</a>
+                                            <a style="display:none; cursor: pointer; color: grey; font-size: 180%;" onclick="deleteItemBlock('itemblock-<!-- TMPL_VAR name="import_record_id" -->')">-</a>
+                                        </div><!-- /iteminformation -->
+                                        </div>
+                                        
+                                        <input type="hidden" name="moditem" value="" /> 
+                                        <input type="hidden" name="tag" value="<!-- TMPL_VAR NAME="itemtagfield" -->" />
+                                        <input type="hidden" name="subfield" value="<!-- TMPL_VAR NAME="itemtagsubfield" -->" />
+                                        <input type="hidden" name="serial" value="<!-- TMPL_VAR NAME="serialid" -->" />
+                                        <input type="hidden" name="bibnum" value="<!-- TMPL_VAR NAME="biblionumber" -->" />
+                                        <input type="hidden" name="itemid" value="<!-- TMPL_VAR name="import_record_id" -->" />
+                                        <input type="hidden" name="field_value" value="<!-- TMPL_VAR NAME="itemnumber" -->" />
+                                        <input type="hidden" name="quantityrec-<!-- TMPL_VAR name="import_record_id" -->" id="quantityrec-<!-- TMPL_VAR name="import_record_id" -->" value="1" />
+                                        <!--/TMPL_LOOP--> <!-- /items -->
+                                    </fieldset>
+                                    <!-- /TMPL_IF --> <!-- items -->
+
+                             </td>
+                             <td><!-- TMPL_VAR name="overlay_status"--></td>
+                             <td><input type="checkbox" name="order-<!-- TMPL_VAR name="import_record_id" -->" value="1" checked /></td>
+                         </tr>
+                         <!-- TMPL_IF name="match_biblionumber" -->
+                           <tr>
+                             <td />
+                             <td class="highlight" colspan="3">Matches biblio <!-- TMPL_VAR name="match_biblionumber" --> (score = <!-- TMPL_VAR name="match_score" -->): <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=<!-- TMPL_VAR name="match_biblionumber" -->"><!-- TMPL_VAR name="match_citation" --></a></td>
+                           </tr>
+                         <!-- /TMPL_IF -->
+                       <!-- /TMPL_LOOP -->
+                     </table>
+                     <input type="hidden" name="op" value="import_records" />
+                     <input type="hidden" name="import_batch_id" value="<!-- TMPL_VAR name="import_batch_id" -->" />
+                     <input type="hidden" name="basketno" value="<!-- TMPL_VAR name="basketno" -->" />
+                     <input type="button" value="Save" onclick="this.form.submit()" />
+                   </form>
+               </div>
+              <!-- TMPL_IF name="pages" -->
+                <div class="pages">
+                Page 
+                  <!-- TMPL_LOOP name="pages" -->
+                    <!-- TMPL_IF name="current_page" -->
+                      <span class="current"><!-- TMPL_VAR name="page_number" --></span>
+                    <!-- TMPL_ELSE -->
+                      <a class="nav" href="<!-- TMPL_VAR name="script_name" -->?import_batch_id=<!-- TMPL_VAR name="import_batch_id" -->&offset=<!-- TMPL_VAR name="offset" -->"><!-- TMPL_VAR name="page_number" --></a>
+                    <!-- /TMPL_IF -->
+                  <!-- /TMPL_LOOP -->
+              <!-- /TMPL_IF -->
+             <!-- TMPL_ELSE -->
+               <div>
+                   <table>
+                     <tr>
+                       <th>#</th>
+                       <th>File name</th>
+                       <th>Comments</th>
+                       <th>Status</th>
+                       <th>Staged</th>
+                       <th># Bibs</th>
+                       <th># Items</th>
+                     </tr>
+                     <!-- TMPL_LOOP name="batch_list" -->
+                     <tr>
+                       <td><a href="<!-- TMPL_VAR name="scriptname" -->?import_batch_id=<!-- TMPL_VAR name="import_batch_id" -->&basketno=<!-- TMPL_VAR name="basketno" -->"><!-- TMPL_VAR name="import_batch_id" --></a></td>
+                       <td><!-- TMPL_VAR name="file_name" --></td>
+                       <td><!-- TMPL_VAR name="comments" --></td>
+                       <td><!-- TMPL_VAR name="import_status" --></td>
+                       <td><!-- TMPL_VAR name="upload_timestamp" --></td>
+                       <td><!-- TMPL_VAR name="num_biblios" --></td>
+                       <td><!-- TMPL_VAR name="num_items" --></td>
+                     </tr>
+                     <!-- /TMPL_LOOP -->
+                   </table>
+               </div>
+             <!-- /TMPL_IF -->
+           </div>
+       </div>
+   </div>
+</div>
+</body>
+</html>
\ No newline at end of file
-- 
1.6.0.4




More information about the Koha-patches mailing list