@@ -, +, @@
---
.../prog/en/modules/acqui/histsearch.tt | 229 +++++++++++
.../prog/en/modules/acqui/parcel.tt | 381 +++++++++++++++---
2 files changed, 556 insertions(+), 54 deletions(-)
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/histsearch.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/histsearch.tt
@@ -29,6 +29,29 @@
[% PROCESS filter_form context => "main" %]
[% END %]
+
@@ -145,6 +168,212 @@
patron_input_name: 'created_by',
field_to_retrieve: 'borrowernumber'
});
+
+ var pendig_orders_tb = $("#histsearcht_api").api({
+ "ajax": {
+ "url": "/api/v1/acquisitions/orders"
+ },
+ "embed": [
+ "basket.basket_group",
+ "biblio.active_orders_count",
+ "biblio.holds_count",
+ "biblio.items_count",
+ "biblio.suggestions.suggester",
+ "fund",
+ "holds_count",
+ "items"
+ ],
+ 'dom': 'C<"top pager"ilpfB><"#filter_c">tr<"bottom pager"ip>',
+ "columnDefs": [
+ { "targets": [ "nosort" ],"sortable": false,"searchable": false },
+ { "type": "anti-the", "targets" : [ "anti-the" ] },
+ { "type": "title-string", "targets" : [ "title-string" ] }
+ ],
+ "columns": [
+ { "data": "order_id" },
+ { "data": "status" },
+ { "data": "basket_id",
+ "render": function(data, type, row, meta) {
+ if (type != 'display') return data;
+ return "
" + row.basket.name + " (" + data + ")";
+ }
+ },
+ { "data": function(row, type, val, meta) {
+ if ( type != 'display' ) return row.basket.basket_group_id;
+ if ( row.basket.basket_group_id == null ) {
+ return _("No basket group");
+ }
+ else {
+ return "
"
+ + row.basket.basket_group.name + " (" + row.basket.basket_group_id + ")";
+ }
+ }
+ },
+ { "data": "order_id",
+ "render": function(data, type, row, meta) {
+ if (type != 'display') return data;
+ return "
"+data+"";
+ }
+ },
+ { "data": function(row, type, val, meta) {
+ var result = "
"+row.biblio.title+"";
+ if ( row.biblio.author != null )
+ result += _(" by ") + row.biblio.author;
+ if ( row.biblio.isbn != null )
+ result += " – " + row.biblio.isbn;
+ if ( row.biblio.publisher != null ) {
+ result += "
" + _("Publisher: ") + row.biblio.publisher;
+ if ( row.biblio.publication_year != null ) {
+ result += ", " + row.biblio.publication_year;
+ }
+ else if ( row.biblio.copyright_date != null ) {
+ result += row.biblio.copyright_date;
+ }
+ }
+ var suggestions = row.biblio.suggestions;
+ if ( suggestions != null && suggestions.length > 0 ) {
+ var suggestion = suggestions[0];
+ if ( suggestion.suggestor != null ) {
+ var suggestor = suggestion.suggestor;
+ var suggested_by = [];
+ if ( suggestor.surname != null ) {
+ suggested_by.push(suggestor.surname);
+ }
+ if ( suggestor.firstname != null ) {
+ suggested_by.push(suggestor.firstname);
+ }
+
+ result += "
" + _("Suggested by: ") +
+ '
'
+ + suggested_by.join(", ")
+ + " (#" + suggestions[0].suggestionid + ")";
+ }
+ }
+
+ var internal_note = row.internal_note;
+ if ( internal_note != '' ) {
+ result += '
'
+ + _("Internal note: ")
+ + '' + internal_note
+ + ' [' + _("Change internal note") + ']
';
+ }
+ else {
+ result += ' [
' + _("Add internal note") + ']';
+ }
+
+ var vendor_note = row.vendor_note;
+ if ( vendor_note != '' ) {
+ result += '
'
+ + _("Vendor note: ")
+ + '' + vendor_note + '
';
+ }
+ else {
+ result += ' [
' + _("Add vendor note") + ']';
+ }
+
+ return result;
+ }
+ },
+ { "data": function( row, type, val, meta) {
+ if (type != 'display') return data;
+ var result = '
' + _('Order') + ''
+ + '
' + _("MARC") + ''
+ + '
' + _("Card") + '';
+ return result;
+ }
+ },
+ { "data": "replacement_price" },
+ { "data": "quantity" },
+ { "data": "ecost" },
+ { "data": function ( row, type, val, meta ) {
+ return row.quantity * row.ecost;
+ }
+ },
+ { "data": "fund_id",
+ "render": function(data, type, row, meta) {
+ if (type != 'display') return data;
+ return row.fund.name;
+ }
+ },
+ {
+ "data": function( row, type, val, meta ) {
+ return '
'
+ + _("Receive") + ''
+ + '
'
+ + _("Transfer") + '';
+ }
+ },
+ {
+ "data": function( row, type, val, meta ) {
+ var result = "";
+
+ if ( row.holds_count > 0 ) {
+ result += '
'
+ + _("Can't cancel order") + '';
+ }
+ else {
+ result += '
'
+ + _("Cancel order") + '';
+ }
+
+ if ( row.items.length > 0 ||
+ row.biblio.active_orders_count > 1 ||
+ row.biblio.subscriptions_count > 0 ||
+ row.bibio.holds_count > 0 ) { // biblio can be deleted
+ result += '
'
+ + _("Can't cancel order and delete catalog record") + '';
+ }
+ else {
+ result += '
'
+ + _("Cancel order and catalog record") + '';
+ }
+
+ if ( row.items.length > 0 ) {
+ result += '
' + (row.biblio.items_count - row.items.length) + _(" item(s) left") + '';
+ }
+
+ if ( row.biblio.active_orders_count > 1 ) {
+ result += '
'
+ + (row.biblio.active_orders_count - 1) + _(" order(s) left") + '';
+ }
+
+ if ( row.biblio.subscriptions_count > 0 ) {
+ result += '
'
+ + _("%s subscription(s) left").format(row.biblio.subscriptions_count)
+ + '';
+ }
+
+ if ( row.biblio.holds_count > 0 ) {
+ result += '
'
+ + _("%s hold(s) left").format(row.bibio.holds_count) + '';
+ }
+
+ return result;
+ }
+ }
+ ]
+ });
});
[% END %]
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt
@@ -34,16 +34,16 @@
- [% IF ( receive_error ) %]
-
-
Error adding items:
-
- [% FOREACH error_loo IN error_loop %]
- - [% error_loo.error_param | html %][% IF ( error_loo.error_duplicate_barcode ) %]Duplicate Barcode[% END %]
- [% END %]
-
-
- [% END %]
+ [% IF ( receive_error ) %]
+
+
Error adding items:
+
+ [% FOREACH error_loo IN error_loop %]
+ - [% error_loo.error_param | html %][% IF ( error_loo.error_duplicate_barcode ) %]Duplicate Barcode[% END %]
+ [% END %]
+
+
+ [% END %]
[% IF datereceived %]
Receipt summary for [% name | html %] [% IF ( invoice ) %] [ [% invoice | html %] ] [% END %] on [% datereceived | $KohaDates %]
@@ -55,12 +55,12 @@
[% IF ( success_delorder ) %]
The order has been successfully canceled.
[% ELSE %]
- [% IF ( error_delitem ) %]
- The order has been canceled, although one or more items could not have been deleted.
- [% END %]
- [% IF ( error_delbiblio ) %]
- The order has been canceled, although the record has not been deleted.
- [% END %]
+ [% IF ( error_delitem ) %]
+ The order has been canceled, although one or more items could not have been deleted.
+ [% END %]
+ [% IF ( error_delbiblio ) %]
+ The order has been canceled, although the record has not been deleted.
+ [% END %]
[% END %]
[% IF (error_cancelling_receipt) %]
@@ -87,6 +87,26 @@
[% END %]
+
Pending orders (api)
+
+
+
+ Basket |
+ Basket group |
+ Order line |
+ Summary |
+ More |
+ Replacement price |
+ Quantity |
+ Unit cost |
+ Order cost |
+ Fund |
+ |
+ |
+
+
+
+
[% UNLESS no_orders_to_display %]
Invoice number: [% invoice | html %] Received by: [% logged_in_user.userid | html %] On: [% datereceived | $KohaDates %]
@@ -175,32 +195,32 @@
[% loop_order.ecost | $Price %] |
[% loop_order.total | $Price %] |
[% loop_order.budget_name | html %] |
-
+ |
Receive
Transfer
- |
-
- [% IF ( loop_order.left_holds_on_order ) %]
+ |
+
+ [% IF ( loop_order.left_holds_on_order ) %] [%# DONE %]
Can't cancel order
- [% ELSE %]
+ [% ELSE %] [%# DONE %]
Cancel order
- [% END %]
- [% IF ( loop_order.can_del_bib ) %]
+ [% END %] [%# DONE %]
+ [% IF ( loop_order.can_del_bib ) %] [%# DONE %]
Cancel order and catalog record
- [% ELSE %]
+ [% ELSE %] [%# DONE %]
Can't cancel order and delete catalog record
[% END %]
- [% IF ( loop_order.left_item ) %]
+ [% IF ( loop_order.left_item ) %] [%# DONE %]
[% loop_order.items | html %] item(s) left
[% END %]
- [% IF ( loop_order.left_biblio ) %]
+ [% IF ( loop_order.left_biblio ) %] [%# DONE %]
[% loop_order.biblios | html %] order(s) left
[% END %]
- [% IF ( loop_order.left_subscription ) %]
+ [% IF ( loop_order.left_subscription ) %] [%# DONE %]
[% loop_order.subscriptions | html %] subscription(s) left
[% END %]
- [% IF ( loop_order.left_holds ) %]
+ [% IF ( loop_order.left_holds ) %] [%# DONE %]
[% loop_order.holds | html %] hold(s) left
[% END %]
|
@@ -365,12 +385,12 @@
[% END %]
- [% END %]
-
+ [% END %]
+
- [% ELSE %]There are no received orders.[% END %]
+ [% ELSE %]There are no received orders.[% END %]
@@ -533,20 +553,273 @@
}));
}
- // Keep filters from finishreceive.pl to parcel.pl
- $.cookie("filter_parcel_summary", $("#summaryfilter").val());
- $.cookie("filter_parcel_basketname", $("#basketfilter").val());
- $.cookie("filter_parcel_orderno", $("#orderfilter").val());
- $.cookie("filter_parcel_basketgroupname", $("#basketgroupnamefilter").val());
- $.cookie("filter_parcel_ean", $("#eanfilter").val());
- $("#filterform").on('submit', function(){
+ var pending_orders_url = "/api/v1/acquisitions/orders?status=ordered";
+ var pending_orders_table = $("#pending_orders").api({
+ "ajax": {
+ "url": pending_orders_url
+ },
+ "embed": [
+ "basket.basket_group",
+ "biblio.active_orders+count",
+ "biblio.holds+count",
+ "biblio.items+count",
+ "biblio.suggestions.suggester",
+ "fund",
+ "current_item_level_holds+count",
+ "items"
+ ],
+ 'dom': 'C<"top pager"ilpfB><"#filter_c">tr<"bottom pager"ip>',
+ "columns": [
+ { "data": "basket_id",
+ "orderable": true,
+ "render": function(data, type, row, meta) {
+ if (type != 'display') return data;
+ return "
" + row.basket.name + " (" + data + ")";
+ }
+ },
+ { "data": function(row, type, val, meta) {
+ if ( type != 'display' ) return row.basket.basket_group_id;
+ if ( row.basket.basket_group_id == null ) {
+ return _("No basket group");
+ }
+ else {
+ return "
"
+ + row.basket.basket_group.name + " (" + row.basket.basket_group_id + ")";
+ }
+ },
+ "orderable": false // FIXME
+ },
+ { "data": "order_id",
+ "render": function(data, type, row, meta) {
+ if (type != 'display') return data;
+ return "
"+data+"";
+ }
+ },
+ { "data": function(row, type, val, meta) {
+ var result = "
"+row.biblio.title+"";
+ if ( row.biblio.author != null )
+ result += _(" by ") + row.biblio.author;
+ if ( row.biblio.isbn != null )
+ result += " – " + row.biblio.isbn;
+ if ( row.biblio.publisher != null ) {
+ result += "
" + _("Publisher: ") + row.biblio.publisher;
+ if ( row.biblio.publication_year != null ) {
+ result += ", " + row.biblio.publication_year;
+ }
+ else if ( row.biblio.copyright_date != null ) {
+ result += row.biblio.copyright_date;
+ }
+ }
+ var suggestions = row.biblio.suggestions;
+ if ( suggestions != null && suggestions.length > 0 ) {
+ var suggestion = suggestions[0];
+ if ( suggestion.suggester != null ) {
+ var suggester = suggestion.suggester;
+ var suggested_by = [];
+ if ( suggester.surname != null ) {
+ suggested_by.push(suggester.surname);
+ }
+ if ( suggester.firstname != null ) {
+ suggested_by.push(suggester.firstname);
+ }
+
+ result += "
" + _("Suggested by: ") +
+ ''
+ + suggested_by.join(", ")
+ + " (#" + suggestions[0].suggestionid + ")";
+ }
+ }
+ result += '
';
+
+ var internal_note = row.internal_note;
+ if ( internal_note != '' ) {
+ result += '
'
+ + _("Internal note: ")
+ + '' + internal_note
+ + ' [' + _("Change internal note") + ']
';
+ }
+ else {
+ result += ' [
' + _("Add internal note") + ']';
+ }
+
+ var vendor_note = row.vendor_note;
+ if ( vendor_note != '' ) {
+ result += '
'
+ + _("Vendor note: ")
+ + '' + vendor_note + '
';
+ }
+ else {
+ result += ' [
' + _("Add vendor note") + ']';
+ }
+
+ return result;
+ },
+ "orderable": false // FIXME
+ },
+ { "data": function( row, type, val, meta) {
+ var result = '
' + _('Order') + ''
+ + '
' + _("MARC") + ''
+ + '
' + _("Card") + '';
+ return result;
+ },
+ "orderable": false
+ },
+ { "data": "replacement_price",
+ "render": function(data, type, val, meta) {
+ if (type != 'display') return data;
+ return data.format_price();
+ }
+ },
+ { "data": "quantity",
+ "orderable": true
+ },
+ { "data": "ecost",
+ "render": function(data, type, val, meta) {
+ if (type != 'display') return data;
+ return data.format_price();
+ },
+ "orderable": true
+ },
+ { "data": function ( row, type, val, meta ) {
+ return (row.quantity * row.ecost).format_price();
+ },
+ "orderable": false // FIXME: How can we do it in DBIC?
+ },
+ { "data": "fund_id",
+ "render": function(data, type, row, meta) {
+ if (type != 'display') return data;
+ return row.fund.name;
+ }
+ },
+ { "data": function( row, type, val, meta ) {
+ return '
'
+ + _("Receive") + ''
+ + '
'
+ + _("Transfer") + '';
+ },
+ "orderable": false
+ },
+ { "data": function( row, type, val, meta ) {
+ var result = "";
+
+ if ( row.current_holds_count > 0 ) {
+ result += '
'
+ + _("Can't cancel order") + '';
+ }
+ else {
+ result += '
'
+ + _("Cancel order") + '';
+ }
+
+ if ( row.items.length > 0 ||
+ row.biblio.active_orders_count > 1 ||
+ row.biblio.subscriptions_count > 0 ||
+ row.bibio.holds_count > 0 ) { // biblio can be deleted
+ result += '
'
+ + _("Can't cancel order and delete catalog record") + '';
+ }
+ else {
+ result += '
'
+ + _("Cancel order and catalog record") + '';
+ }
+
+ if ( row.biblio.items_count - row.items.length > 0 ) {
+ result += '
' + (row.biblio.items_count - row.items.length) + _(" item(s) left") + '';
+ }
+
+ if ( row.biblio.active_orders_count > 1 ) {
+ result += '
'
+ + (row.biblio.active_orders_count - 1) + _(" order(s) left") + '';
+ }
+
+ if ( row.biblio.subscriptions_count > 0 ) {
+ result += '
'
+ + _("%s subscription(s) left").format(row.biblio.subscriptions_count)
+ + '';
+ }
+
+ if ( row.biblio.holds_count > 0 ) {
+ result += '
'
+ + _("%s hold(s) left").format(row.bibio.holds_count) + '';
+ }
+
+ return result;
+ },
+ "orderable": false
+ }
+ ]
+ });
+
+ $("#filterform").on("submit", function(e) {
+ e.preventDefault();
+ // Update the datatable URL
+ var summary = $("#summaryfilter").val();
+ var basket_name = $("#basketfilter").val();
+ var basket_group = $("#basketgroupnamefilter").val();
+ var order_id = $("#orderfilter").val();
+
+ var q = {};
+
+ if (order_id != "") {
+ q['order_id'] = order_id;
+ }
+ if (basket_name != "") { // C4::Acquisition::SearchOrders behaviour
+ q['basket.name'] = { "like": '%'+basket_name+'%' };
+ }
+ if (basket_group != "") { // C4::Acquisition::SearchOrders behaviour
+ q['basket.basket_group.name'] = { "like": '%'+basket_group+'%' };
+ }
+ if (summary != "") { // C4::Acquisition::SearchOrders behaviour
+ q["-or"] = [{"biblio.title": { "like": '%'+summary+'%' } },
+ {"biblio.author": { "like": '%'+summary+'%' } },
+ {"biblio.isbn": { "like": '%'+summary+'%' } } ];
+ }
+
+ if ( !jQuery.isEmptyObject(q) ) {
+ pending_orders_table.api().ajax.url( pending_orders_url + '&q=' + encodeURI(JSON.stringify(q)) );
+ }
+ else {
+ pending_orders_table.api().ajax.url( pending_orders_url );
+ }
+ pending_orders_table.api().ajax.reload( null, false );
+ });
+
+ // Keep filters from finishreceive.pl to parcel.pl
$.cookie("filter_parcel_summary", $("#summaryfilter").val());
$.cookie("filter_parcel_basketname", $("#basketfilter").val());
$.cookie("filter_parcel_orderno", $("#orderfilter").val());
$.cookie("filter_parcel_basketgroupname", $("#basketgroupnamefilter").val());
$.cookie("filter_parcel_ean", $("#eanfilter").val());
- });
+
+ $("#filterform").on('submit', function(){
+ $.cookie("filter_parcel_summary", $("#summaryfilter").val());
+ $.cookie("filter_parcel_basketname", $("#basketfilter").val());
+ $.cookie("filter_parcel_orderno", $("#orderfilter").val());
+ $.cookie("filter_parcel_basketgroupname", $("#basketgroupnamefilter").val());
+ $.cookie("filter_parcel_ean", $("#eanfilter").val());
+ });
$(".previewData").on("click", function(e){
e.preventDefault();
@@ -556,28 +829,28 @@
$("#dataPreview .modal-body").load(page + " div");
$('#dataPreview').modal({show:true});
});
+
$("#dataPreview").on("hidden.bs.modal", function(){
$("#dataPreviewLabel").html("");
$("#dataPreview .modal-body").html("
"+_("Loading")+"
");
});
+ });
+
+ // Case-insensitive version of jquery's contains function
+ jQuery.extend(jQuery.expr[':'], {
+ icontains : "jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0"
+ });
+ // Contains exactly function
+ jQuery.extend(jQuery.expr[':'], {
+ containsExactly: "$(a).text() == m[3]"
});
- // Case-insensitive version of jquery's contains function
- jQuery.extend(jQuery.expr[':'], {
- icontains : "jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0"
- });
-
- // Contains exactly function
- jQuery.extend(jQuery.expr[':'], {
- containsExactly: "$(a).text() == m[3]"
- });
-
- function transfer_order_popup(ordernumber) {
- var url = "/cgi-bin/koha/acqui/transferorder.pl?"
- + "ordernumber=" + ordernumber
- window.open(url, 'TransferOrder');
- }
+ function transfer_order_popup(ordernumber) {
+ var url = "/cgi-bin/koha/acqui/transferorder.pl?"
+ + "ordernumber=" + ordernumber
+ window.open(url, 'TransferOrder');
+ }
[% END %]
--