sub SearchOrder {
#### -------- SearchOrder-------------------------------
- my ($ordernumber, $search) = @_;
+ my ($ordernumber, $search, $supplierid, $basket) = @_;
- if ($ordernumber) {
- my $dbh = C4::Context->dbh;
- my $query =
- "SELECT *
- FROM aqorders
- LEFT JOIN biblio ON aqorders.biblionumber=biblio.biblionumber
- LEFT JOIN biblioitems ON biblioitems.biblionumber=biblio.biblionumber
- LEFT JOIN aqbasket ON aqorders.basketno = aqbasket.basketno
- WHERE ((datecancellationprinted is NULL)
- AND (aqorders.ordernumber=?))";
- my $sth = $dbh->prepare($query);
- $sth->execute($ordernumber);
- my $results = $sth->fetchall_arrayref({});
- $sth->finish;
- return $results;
- } else {
- my $dbh = C4::Context->dbh;
- my $query =
+ my $dbh = C4::Context->dbh;
+ my @args = ();
+ my $query =
"SELECT *
FROM aqorders
LEFT JOIN biblio ON aqorders.biblionumber=biblio.biblionumber
LEFT JOIN biblioitems ON biblioitems.biblionumber=biblio.biblionumber
LEFT JOIN aqbasket ON aqorders.basketno = aqbasket.basketno
- WHERE ((datecancellationprinted is NULL)
- AND (biblio.title like ? OR biblioitems.isbn like ?))";
- my $sth = $dbh->prepare($query);
- $sth->execute("%$search%","%$search%");
- my $results = $sth->fetchall_arrayref({});
- $sth->finish;
- return $results;
+ WHERE (datecancellationprinted is NULL)";
+
+ if($ordernumber){
+ $query .= " AND (aqorders.ordernumber=?)";
+ push @args, $ordernumber;
+ }
+ if($search){
+ $query .= " AND (biblio.title like ? OR biblio.author LIKE ? OR biblioitems.isbn like ?)";
+ push @args, ("%$search%","%$search%","%$search%");
+ }
+ if($supplierid){
+ $query .= "AND aqbasket.booksellerid = ?";
+ push @args, $supplierid;
}
+ if($basket){
+ $query .= "AND aqorders.basketno = ?";
+ push @args, $basket;
+ }
+
+ my $sth = $dbh->prepare($query);
+ $sth->execute(@args);
+ my $results = $sth->fetchall_arrayref({});
+ $sth->finish;
+ return $results;
}
#------------------------------------------------------------#
use CGI;
use C4::Output;
use C4::Dates qw/format_date format_date_in_iso/;
+use JSON;
use strict;
$resultsperpage = 20 unless ($resultsperpage);
$startfrom=0 unless ($startfrom);
+if($input->param('format') eq "json"){
+ my ($template, $loggedinuser, $cookie)
+ = get_template_and_user({template_name => "acqui/ajax.tmpl",
+ query => $input,
+ type => "intranet",
+ authnotrequired => 0,
+ flagsrequired => {acquisition => 'order_receive'},
+ debug => 1,
+ });
+
+ my @datas;
+ my $search = $input->param('search') || '';
+ my $supplier = $input->param('supplierid') || '';
+ my $basketno = $input->param('basketno') || '';
+ my $orderno = $input->param('orderno') || '';
+
+ my $orders = SearchOrder($orderno, $search, $supplier, $basketno);
+ foreach my $order (@$orders){
+ if($order->{quantityreceived} < $order->{quantity}){
+ my $data = {};
+
+ $data->{basketno} = $order->{basketno};
+ $data->{ordernumber} = $order->{ordernumber};
+ $data->{title} = $order->{title};
+ $data->{author} = $order->{author};
+ $data->{biblionumber} = $order->{biblionumber};
+ $data->{freight} = $order->{freight};
+ $data->{quantrem} = $order->{quantity} - $order->{quantityreceived};
+ $data->{quantity} = $order->{quantity};
+ $data->{ecost} = $order->{ecost};
+ $data->{ordertotal} = sprintf("%.2f",$order->{ecost}*$order->{quantity});
+ push @datas, $data;
+ }
+ }
+
+ my $json_text = to_json(\@datas);
+ $template->param(return => $json_text);
+ output_html_with_http_headers $input, $cookie, $template->output;
+ exit;
+}
+
my ($template, $loggedinuser, $cookie)
= get_template_and_user({template_name => "acqui/parcel.tmpl",
query => $input,
--- /dev/null
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+YAHOO.lang.JSON=(function(){var l=YAHOO.lang,_UNICODE_EXCEPTIONS=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,_ESCAPES=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,_VALUES=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,_BRACKETS=/(?:^|:|,)(?:\s*\[)+/g,_INVALID=/^[\],:{}\s]*$/,_SPECIAL_CHARS=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,_CHARS={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};function _revive(data,reviver){var walk=function(o,key){var k,v,value=o[key];if(value&&typeof value==="object"){for(k in value){if(l.hasOwnProperty(value,k)){v=walk(value,k);if(v===undefined){delete value[k];}else{value[k]=v;}}}}return reviver.call(o,key,value);};return typeof reviver==="function"?walk({"":data},""):data;}function _char(c){if(!_CHARS[c]){_CHARS[c]="\\u"+("0000"+(+(c.charCodeAt(0))).toString(16)).slice(-4);}return _CHARS[c];}function _prepare(s){return s.replace(_UNICODE_EXCEPTIONS,_char);}function _isValid(str){return l.isString(str)&&_INVALID.test(str.replace(_ESCAPES,"@").replace(_VALUES,"]").replace(_BRACKETS,""));}function _string(s){return'"'+s.replace(_SPECIAL_CHARS,_char)+'"';}function _stringify(h,key,d,w,pstack){var o=typeof w==="function"?w.call(h,key,h[key]):h[key],i,len,j,k,v,isArray,a;if(o instanceof Date){o=l.JSON.dateToString(o);}else{if(o instanceof String||o instanceof Boolean||o instanceof Number){o=o.valueOf();}}switch(typeof o){case"string":return _string(o);case"number":return isFinite(o)?String(o):"null";case"boolean":return String(o);case"object":if(o===null){return"null";}for(i=pstack.length-1;i>=0;--i){if(pstack[i]===o){return"null";}}pstack[pstack.length]=o;a=[];isArray=l.isArray(o);if(d>0){if(isArray){for(i=o.length-1;i>=0;--i){a[i]=_stringify(o,i,d-1,w,pstack)||"null";}}else{j=0;if(l.isArray(w)){for(i=0,len=w.length;i<len;++i){k=w[i];v=_stringify(o,k,d-1,w,pstack);if(v){a[j++]=_string(k)+":"+v;}}}else{for(k in o){if(typeof k==="string"&&l.hasOwnProperty(o,k)){v=_stringify(o,k,d-1,w,pstack);if(v){a[j++]=_string(k)+":"+v;}}}}a.sort();}}pstack.pop();return isArray?"["+a.join(",")+"]":"{"+a.join(",")+"}";}return undefined;}return{isValid:function(s){return _isValid(_prepare(s));},parse:function(s,reviver){s=_prepare(s);if(_isValid(s)){return _revive(eval("("+s+")"),reviver);}throw new SyntaxError("parseJSON");},stringify:function(o,w,d){if(o!==undefined){if(l.isArray(w)){w=(function(a){var uniq=[],map={},v,i,j,len;for(i=0,j=0,len=a.length;i<len;++i){v=a[i];if(typeof v==="string"&&map[v]===undefined){uniq[(map[v]=j++)]=v;}}return uniq;})(w);}d=d>=0?d:1/0;return _stringify({"":o},"",d,w,[]);}return undefined;},dateToString:function(d){function _zeroPad(v){return v<10?"0"+v:v;}return d.getUTCFullYear()+"-"+_zeroPad(d.getUTCMonth()+1)+"-"+_zeroPad(d.getUTCDate())+"T"+_zeroPad(d.getUTCHours())+":"+_zeroPad(d.getUTCMinutes())+":"+_zeroPad(d.getUTCSeconds())+"Z";},stringToDate:function(str){if(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z$/.test(str)){var d=new Date();d.setUTCFullYear(RegExp.$1,(RegExp.$2|0)-1,RegExp.$3);d.setUTCHours(RegExp.$4,RegExp.$5,RegExp.$6);return d;}return str;}};})();YAHOO.register("json",YAHOO.lang.JSON,{version:"2.7.0",build:"1796"});
\ No newline at end of file
-<!-- TMPL_IF name="return" --><!-- TMPL_VAR name="return" --><!--/TMPL_IF-->
+<!-- TMPL_IF name="return" --><!-- TMPL_VAR name="return" --><!--/TMPL_IF-->
\ No newline at end of file
Receipt Summary for <!-- TMPL_VAR NAME="name" --> <!--TMPL_IF Name="invoice"-->Invoice <!-- TMPL_VAR NAME="invoice" --><!--/TMPL_IF --> on <!-- TMPL_VAR NAME="formatteddatereceived" --><!-- TMPL_ELSE -->Receive Orders from <!-- TMPL_VAR NAME="name" --><!-- /TMPL_IF --></title>
<!-- TMPL_INCLUDE NAME="doc-head-close.inc" -->
<!-- TMPL_INCLUDE NAME="greybox.inc" -->
+<script type="text/javascript" src="<!-- TMPL_VAR NAME="yuipath" -->/json/json-min.js"></script>
<script type="text/JavaScript" language="JavaScript">
//<![CDATA[
// Launch filtering
function filter() {
- var summaryStatus = jQuery.trim($("#summaryfilter").val());
+ var summaryStatus = jQuery.trim($("#summaryfilter").val());
var basketStatus = $("#basketfilter").val();
var orderStatus = $("#orderfilter").val();
if (summaryStatus == '' && basketStatus == '' && orderStatus == '') { clearFilters(); return false; }
var filtered = "table#pendingt tbody.filterclass tr";
- var foundCount = 0;
// We hide everything
$("#nothingfoundrow").remove();
$(filtered).hide();
- // Then show what matches the filters
- if (summaryStatus != '') {
- // Case-insensitive search for a substring
- $(filtered + " td.summaryfilterclass:icontains(" + summaryStatus + ")").parent().show();
- foundCount += $(filtered + " td.summaryfilterclass:icontains(" + summaryStatus + ")").length;
+ // Do the search
+ var callback = {
+ success: function(o) {
+ var jsonString = o.responseText;
+ var gst = "<!-- TMPL_VAR NAME="gst" -->";
+ try {
+ var orders = YAHOO.lang.JSON.parse(jsonString);
+ var foundCount = orders.length;
+
+ for( i = 0 ; i < orders.length ; i++){
+ order = orders[i];
+ $('<tr>'
+ + '<td class="basketfilterclass"><a href="/cgi-bin/koha/acqui/basket.pl?basketno=' + order.basketno + '">' + order.basketno + '</a></td>'
+ + '<td class="orderfilterclass"> ' + order.ordernumber + ' </td>'
+ + '<td class="summaryfilterclass">'
+ + '<a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=' + order.biblionumber + '">' + order.title + '</a> / ' + order.author + '–' + order.isbn + '</td>'
+ + '<td><a href="/cgi-bin/koha/catalogue/showmarc.pl?id=' + order.biblionumber + '" title="MARC" rel="gb_page_center[600,500]">MARC</a> | <a href="/cgi-bin/koha/catalogue/showmarc.pl?viewas=card&id=' + order.biblionumber + '" title="MARC" rel="gb_page_center[600,500]">Card</a></td>'
+ + '<td>' + order.quantrem + ' / ' + order.quantity + '</td>'
+ + '<td>' + order.ecost + '</td>'
+ + '<td>' + order.ordertotal + '</td>'
+ + '<td>'
+ + '<a href="orderreceive.pl?ordernumber=' + order.ordernumber + '&datereceived=<!-- TMPL_VAR NAME="invoicedatereceived" -->&invoice=<!-- TMPL_VAR NAME="invoice" -->&gst=' + gst + '&freight=' + order.freight + '&supplierid=<!-- TMPL_VAR NAME="supplierid" -->">Receive</a> /'
+ + '<a href="parcel.pl?type=intra&ordernumber=' + order.ordernumber + '&biblionumber=' + order.biblionumber + '&action=cancelorder&supplierid=<!-- TMPL_VAR NAME="supplierid" -->&datereceived=<!-- TMPL_VAR NAME="invoicedatereceived" -->&invoice=<!-- TMPL_VAR NAME="invoice" -->" onclick="return confirm(' + _('Are you sure you want to cancel this order?') + ');">Cancel</a>'
+ + '</td></tr>').appendTo("table#pendingt");
+ }
+
+ // If nothing has been found, we tell the user so
+ if (orders.length == 0) {
+ $("<tr><td id=\"nothingfoundrow\" colspan=\"8\">No items match your criteria.<\/tr>").appendTo("table#pendingt");
+ }
+ }catch(e){alert(e);}
+ }
}
+ var transaction = YAHOO.util.Connect.asyncRequest('GET', '/cgi-bin/koha/acqui/parcel.pl?supplierid=<!-- TMPL_VAR NAME="supplierid" -->&search='+summaryStatus+'&basketno='+basketStatus+'&orderno='+orderStatus+'&format=json', callback, null);
- if (basketStatus != '') {
- // Exact search
- $(filtered + " td.basketfilterclass:containsExactly(" + basketStatus + ")").parent().show();
- foundCount += $(filtered + " td.basketfilterclass:containsExactly(" + basketStatus + ")").length;
- }
-
- if (orderStatus != '') {
- // Exact search
- $(filtered + " td.orderfilterclass:containsExactly(" + orderStatus + ")").parent().show();
- foundCount += $(filtered + " td.orderfilterclass:containsExactly(" + orderStatus + ")").length;
- }
-
- // If nothing has been found, we tell the user so
- if (foundCount == 0) {
- $("<tr><td id=\"nothingfoundrow\" colspan=\"8\">No items match your criteria.<\/tr>").appendTo("table#pendingt");
- }
+ return false;
}
// Clear already applied filters
</div>
<div id="acqui_receive_search">
<h2>Items in shipment</h2>
- <form action="/cgi-bin/koha/acqui/parcel.pl" id="filterform" onsubmit="filter(); return false;">
+ <form action="/cgi-bin/koha/acqui/parcel.pl" id="filterform" onsubmit="return filter();">
<fieldset class="rows">
<legend>Filters :</legend>