[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 › Acquisitions › Order Staged MARC Records
+<!-- TMPL_IF name="batch_details" -->
+ › Batch <!-- TMPL_VAR name="import_batch_id" -->
+<!-- TMPL_ELSE -->
+ › 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> › <a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisitions</a> ›<a href="/cgi-bin/koha/acqui/supplier.pl?supplierid=<!-- TMPL_VAR NAME="booksellerid" -->"><!-- TMPL_VAR NAME="booksellername" --></a> › <a href="/cgi-bin/koha/acqui/basket.pl?basketno=<!-- TMPL_VAR name="basketno" -->">Basket #<!-- TMPL_VAR name="basketno" --></a> › 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