Bugzilla – Attachment 192396 Details for
Bug 41760
Fix <tbody> and <tfoot> in several templates
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 41760: Fix <tbody> and <tfoot> in several templates
Bug-41760-Fix-tbody-and-tfoot-in-several-templates.patch (text/plain), 67.64 KB, created by
Owen Leonard
on 2026-02-03 18:43:04 UTC
(
hide
)
Description:
Bug 41760: Fix <tbody> and <tfoot> in several templates
Filename:
MIME Type:
Creator:
Owen Leonard
Created:
2026-02-03 18:43:04 UTC
Size:
67.64 KB
patch
obsolete
>From a79726e24fb0876c4beb09275cc9a515c7726316 Mon Sep 17 00:00:00 2001 >From: Owen Leonard <oleonard@myacpl.org> >Date: Tue, 3 Feb 2026 12:07:16 -0500 >Subject: [PATCH] Bug 41760: Fix <tbody> and <tfoot> in several templates > >This patch makes corrections to table markup in several templates, >fixing these issues: > >- <tfoot> appearing before <tbody> >- <tfoot> appearing without a <tbody> > >To test, apply the patch and view the following pages in the staff >client. In each case the table should look correct, including the >appearance of the table footer. > >- Acquisitions -> Vendor -> Basket. Add orders to a basket if necessary, > in order for the "Orders" table to appear. >- Acquisitions -> Vendor -> Basket -> Add to basket -> From existing > orders (copy) -> Search for orders. You must have existing orders to > populate the table of order search results. >- Acquisitions -> Vendor -> Receive shipments -> Receive a new shipment. > You must have pending orders to populate the table. Receive at least > one order to ensure data for the next step. >- Acquisitions home page -> "All available funds" table -> Click an > amount linked in the "Spent" column. >- Administration -> Funds. You must have at least one budget and at > least one fund under that budget. >- Administration -> Record overlay rules. >- Patrons -> View a patron record -> Accounting -> Transactions. If > necessary you can use "Create manual invoice" to add a charge to the > account. > - From the list of transactions, click the "Pay" button next to one > of them. >- Reports -> Cash register statistics wizard. > - ?? >- Reports -> Catalog by item type. > >Sponsored-by: Athens County Public Libraries >--- > .../prog/en/includes/patron-detail-tabs.inc | 22 +- > .../prog/en/modules/acqui/basket.tt | 108 +++--- > .../prog/en/modules/acqui/duplicate_orders.tt | 10 +- > .../prog/en/modules/acqui/parcel.tt | 68 ++-- > .../prog/en/modules/acqui/spent.tt | 66 ++-- > .../prog/en/modules/admin/aqbudgets.tt | 30 +- > .../en/modules/admin/marc-overlay-rules.tt | 112 +++---- > .../prog/en/modules/members/boraccount.tt | 313 +++++++++--------- > .../prog/en/modules/members/paycollect.tt | 22 +- > .../en/modules/reports/cash_register_stats.tt | 34 +- > .../prog/en/modules/reports/itemtypes.tt | 12 +- > 11 files changed, 402 insertions(+), 395 deletions(-) > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-detail-tabs.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/patron-detail-tabs.inc >index e60a5791322..7232495bf98 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-detail-tabs.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/patron-detail-tabs.inc >@@ -134,16 +134,18 @@ > <th>Amount outstanding</th> > </tr> > </thead> >- [% FOREACH guarantee IN guarantees %] >- <tr> >- <td>[% INCLUDE 'patron-title.inc' patron=guarantee hide_patron_infos_if_needed=1 %]</td> >- [% IF logged_in_user.can_see_patron_infos( guarantee ) %] >- <td>[% guarantee.account.balance | $Price %]</td> >- [% ELSE %] >- <td>-</td> >- [% END %] >- </tr> >- [% END %] >+ <tbody> >+ [% FOREACH guarantee IN guarantees %] >+ <tr> >+ <td>[% INCLUDE 'patron-title.inc' patron=guarantee hide_patron_infos_if_needed=1 %]</td> >+ [% IF logged_in_user.can_see_patron_infos( guarantee ) %] >+ <td>[% guarantee.account.balance | $Price %]</td> >+ [% ELSE %] >+ <td>-</td> >+ [% END %] >+ </tr> >+ [% END %] >+ </tbody> > <tfoot> > <td>Total due</td> > <td>[% guarantees_fines | $Price %]</td> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt >index bae154948a0..da1f8aa71aa 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt >@@ -751,60 +751,6 @@ > <th data-colname="cancel" class="no-sort no-export">Cancel order</th> > </tr> > </thead> >- <tfoot> >- [% FOREACH foot_loo IN book_foot_loop %] >- <tr> >- <th></th> >- <th>Total (GST [% foot_loo.tax_rate * 100 | html %])</th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th>[% foot_loo.quantity | html %]</th> >- <th>[% foot_loo.total_tax_excluded | $Price %]</th> >- <th>[% foot_loo.total_tax_included | $Price %]</th> >- <th> </th> >- <th>[% foot_loo.tax_value | $Price %]</th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th> </th> >- </tr> >- [% END %] >- <tr> >- <th></th> >- <th>Total ([% currency | html %])</th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th>[% total_quantity | html %]</th> >- <th>[% total_tax_excluded | $Price %]</th> >- <th>[% total_tax_included | $Price %]</th> >- <th> </th> >- <th>[% total_tax_value | $Price %]</th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th> </th> >- <th> </th> >- </tr> >- </tfoot> > <tbody> > [% FOREACH books_loo IN books_loop %] > [% IF ( books_loo.order_received ) %] >@@ -1019,6 +965,60 @@ > </tr> > [% END %] > </tbody> >+ <tfoot> >+ [% FOREACH foot_loo IN book_foot_loop %] >+ <tr> >+ <th></th> >+ <th>Total (GST [% foot_loo.tax_rate * 100 | html %])</th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th>[% foot_loo.quantity | html %]</th> >+ <th>[% foot_loo.total_tax_excluded | $Price %]</th> >+ <th>[% foot_loo.total_tax_included | $Price %]</th> >+ <th> </th> >+ <th>[% foot_loo.tax_value | $Price %]</th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ </tr> >+ [% END %] >+ <tr> >+ <th></th> >+ <th>Total ([% currency | html %])</th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th>[% total_quantity | html %]</th> >+ <th>[% total_tax_excluded | $Price %]</th> >+ <th>[% total_tax_included | $Price %]</th> >+ <th> </th> >+ <th>[% total_tax_value | $Price %]</th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ <th> </th> >+ </tr> >+ </tfoot> > </table> > <!-- /#orders --> > [% IF ( listincgst ) %]<small class="highlight">** Vendor's listings already include tax.</small>[% END %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/duplicate_orders.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/duplicate_orders.tt >index c660a925bb2..85858d3a369 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/duplicate_orders.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/duplicate_orders.tt >@@ -169,16 +169,16 @@ > <th>Fund</th> > </tr> > </thead> >- <tfoot> >- [% FOREACH order IN selected_order_loop %] >- [% INCLUDE display_order_line selected => 1 can_check => 1 %] >- [% END %] >- </tfoot> > <tbody> > [% FOREACH order IN result_order_loop %] > [% INCLUDE display_order_line can_check => 1 %] > [% END %] > </tbody> >+ <tfoot> >+ [% FOREACH order IN selected_order_loop %] >+ [% INCLUDE display_order_line selected => 1 can_check => 1 %] >+ [% END %] >+ </tfoot> > </table> > </div> > <fieldset class="action"> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt >index 1970eebf1e4..2557eb0392b 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt >@@ -107,7 +107,7 @@ > </div> > [% UNLESS (invoiceclosedate) %] > <div id="acqui_receive_search" class="page-section"> >- <h3>Pending orders</h3> >+ <h2>Pending orders</h2> > <table id="pending_orders" class="table table-bordered table-striped"> > <thead> > <tr> >@@ -163,39 +163,6 @@ > <th class="no-sort"></th> > </tr> > </thead> >- <tfoot> >- [% FOREACH key IN subtotal_for_funds.keys.sort %] >- <tr> >- [% IF invoiceincgst %] >- <td colspan="6" class="total">(Tax inc.)</td> >- [% ELSE %] >- <td colspan="6" class="total">(Tax exc.)</td> >- [% END %] >- <td colspan="3"><em>Subtotal for</em> [% key | html %]</td> >- <td>[% subtotal_for_funds.$key.ecost | $Price %]</td> >- <td>[% subtotal_for_funds.$key.unitprice | $Price %]</td> >- <td> </td> >- <td> </td> >- </tr> >- [% END %] >- <tr> >- <th colspan="11" class="total">Total tax exc.</th> >- <th>[% total_tax_excluded | $Price %]</th> >- <th></th> >- </tr> >- [% FOREACH book_foot IN book_foot_loop %] >- <tr> >- <th colspan="11">Total (GST [% book_foot.tax_rate * 100 | html %]%)</th> >- <th>[% book_foot.tax_value | $Price %]</th> >- <th></th> >- </tr> >- [% END %] >- <tr> >- <th colspan="11" class="total">Total tax inc.</th> >- <th>[% total_tax_included | $Price %]</th> >- <th></th> >- </tr> >- </tfoot> > <tbody class="filterclass"> > [% FOREACH order IN loop_received %] > <tr> >@@ -301,6 +268,39 @@ > </tr> > [% END %] > </tbody> >+ <tfoot> >+ [% FOREACH key IN subtotal_for_funds.keys.sort %] >+ <tr> >+ [% IF invoiceincgst %] >+ <td colspan="6" class="total">(Tax inc.)</td> >+ [% ELSE %] >+ <td colspan="6" class="total">(Tax exc.)</td> >+ [% END %] >+ <td colspan="3"><em>Subtotal for</em> [% key | html %]</td> >+ <td>[% subtotal_for_funds.$key.ecost | $Price %]</td> >+ <td>[% subtotal_for_funds.$key.unitprice | $Price %]</td> >+ <td> </td> >+ <td> </td> >+ </tr> >+ [% END %] >+ <tr> >+ <th colspan="11" class="total">Total tax exc.</th> >+ <th>[% total_tax_excluded | $Price %]</th> >+ <th></th> >+ </tr> >+ [% FOREACH book_foot IN book_foot_loop %] >+ <tr> >+ <th colspan="11">Total (GST [% book_foot.tax_rate * 100 | html %]%)</th> >+ <th>[% book_foot.tax_value | $Price %]</th> >+ <th></th> >+ </tr> >+ [% END %] >+ <tr> >+ <th colspan="11" class="total">Total tax inc.</th> >+ <th>[% total_tax_included | $Price %]</th> >+ <th></th> >+ </tr> >+ </tfoot> > </table> > </form> > <form id="cancel_receipt" method="post" action="/cgi-bin/koha/acqui/parcel.pl"> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/spent.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/spent.tt >index 84ec2f98b13..760ff24829e 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/spent.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/spent.tt >@@ -51,39 +51,39 @@ > <th>Subtotal</th> > </tr> > </thead> >- >- [% FOREACH order IN spent %] >- <tr> >- <td class="cell"> >- <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% order.biblionumber | uri %]"> [% order.title | html %] </a> >- </td> >- <td class="cell"> [% order.ordernumber | html %] </td> >- <td class="cell"> >- <a href="/cgi-bin/koha/acquisition/vendors/[% order.booksellerid | uri %]">[% order.vendorname | html %]</a> >- </td> >- <td class="cell"> >- <a href="/cgi-bin/koha/acqui/invoice.pl?invoiceid=[% order.invoiceid | uri %]">[% order.invoicenumber | html %]</a> >- </td> >- <td class="cell"> >- [% FOREACH itemtype IN order.itemtypes %] >- [% ItemTypes.GetDescription( itemtype ) | html %] >- [% IF !loop.last() %]|[% END %] >- [% END %] >- </td> >- <td class="cell"> [% order.quantityreceived | html %] </td> >- <td class="cell"> >- [% IF Koha.Preference('CalculateFundValuesIncludingTax') %] >- [% order.unitprice_tax_included | $Price %] >- [% ELSE %] >- [% order.unitprice_tax_excluded | $Price %] >- [% END %] >- </td> >- <td class="cell" data-order="[% order.entrydate | html %]"> [% order.entrydate | $KohaDates %] </td> >- <td class="cell" data-order="[% order.datereceived | html %]"> [% order.datereceived | $KohaDates %] </td> >- <td class="data cell"> [% order.rowtotal | $Price %] </td> >- </tr> >- [% END %] >- >+ <tbody> >+ [% FOREACH order IN spent %] >+ <tr> >+ <td class="cell"> >+ <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% order.biblionumber | uri %]"> [% order.title | html %] </a> >+ </td> >+ <td class="cell"> [% order.ordernumber | html %] </td> >+ <td class="cell"> >+ <a href="/cgi-bin/koha/acquisition/vendors/[% order.booksellerid | uri %]">[% order.vendorname | html %]</a> >+ </td> >+ <td class="cell"> >+ <a href="/cgi-bin/koha/acqui/invoice.pl?invoiceid=[% order.invoiceid | uri %]">[% order.invoicenumber | html %]</a> >+ </td> >+ <td class="cell"> >+ [% FOREACH itemtype IN order.itemtypes %] >+ [% ItemTypes.GetDescription( itemtype ) | html %] >+ [% IF !loop.last() %]|[% END %] >+ [% END %] >+ </td> >+ <td class="cell"> [% order.quantityreceived | html %] </td> >+ <td class="cell"> >+ [% IF Koha.Preference('CalculateFundValuesIncludingTax') %] >+ [% order.unitprice_tax_included | $Price %] >+ [% ELSE %] >+ [% order.unitprice_tax_excluded | $Price %] >+ [% END %] >+ </td> >+ <td class="cell" data-order="[% order.entrydate | html %]"> [% order.entrydate | $KohaDates %] </td> >+ <td class="cell" data-order="[% order.datereceived | html %]"> [% order.datereceived | $KohaDates %] </td> >+ <td class="data cell"> [% order.rowtotal | $Price %] </td> >+ </tr> >+ [% END %] >+ </tbody> > <tfoot> > [% IF shipmentcosts.size || ( adjustments && adjustments.count > 0 ) %] > <tr> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgets.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgets.tt >index 377e4a939a9..f6b604ef76e 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgets.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgets.tt >@@ -167,21 +167,6 @@ > <th class="no-export">Actions</th> > </tr> > </thead> >- <tfoot> >- <tr> >- <th></th> >- <th></th> >- <th colspan="2" style="text-align: left;" nowrap="nowrap">Period allocated [% IF budget_period_total %][% budget_period_total | $Price %][% END %] </th> >- <th nowrap="nowrap" class="data"> [% period_alloc_total | $Price %]</th> >- <th></th> >- <th class="data">[% ordered_total | $Price %]</th> >- <th></th> >- <th class="data">[% spent_total | $Price %]</th> >- <th></th> >- <th class="data">[% available_total | $Price %]</th> >- <th></th> >- </tr> >- </tfoot> > <tbody> > [% FOREACH budget IN budgets %] > <tr data-tt-id="[% budget.budget_id | html %]" data-tt-parent-id="[% budget.budget_parent_id | html %]"> >@@ -275,6 +260,21 @@ > </tr> > [% END %] > </tbody> >+ <tfoot> >+ <tr> >+ <th></th> >+ <th></th> >+ <th colspan="2" style="text-align: left;" nowrap="nowrap">Period allocated [% IF budget_period_total %][% budget_period_total | $Price %][% END %] </th> >+ <th nowrap="nowrap" class="data"> [% period_alloc_total | $Price %]</th> >+ <th></th> >+ <th class="data">[% ordered_total | $Price %]</th> >+ <th></th> >+ <th class="data">[% spent_total | $Price %]</th> >+ <th></th> >+ <th class="data">[% available_total | $Price %]</th> >+ <th></th> >+ </tr> >+ </tfoot> > </table> > </div> > <!-- /.page-section --> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc-overlay-rules.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc-overlay-rules.tt >index 75d1735db2e..955f6b1be3d 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc-overlay-rules.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc-overlay-rules.tt >@@ -107,62 +107,6 @@ > <th> </th> > </tr></thead > > >- [% UNLESS edit %] >- <tfoot> >- <tr class="rule-new"> >- <th> </th> >- <th> >- <select name="module"> >- <option value="source">Source</option> >- <option value="categorycode">Patron category</option> >- <option value="userid">Username</option> >- </select> >- </th> >- <th id="filter-container"></th> >- <th><input type="text" size="5" name="tag" class="required" required="required" /></th> >- <th> >- <select name="preset"> >- <option value="" selected>Custom</option> >- <option value="protect">Protect</option> >- <option value="overwrite">Overwrite</option> >- <option value="add">Add new</option> >- <option value="addappend">Add and append</option> >- <option value="protectfromdeletion">Protect from deletion</option> >- </select> >- </th> >- <th class="rule-operation-action-edit"> >- <select name="add"> >- <option value="0">Skip</option> >- <option value="1">Add</option> >- </select> >- </th> >- <th class="rule-operation-action-edit"> >- <select name="append"> >- <option value="0">Skip</option> >- <option value="1">Append</option> >- </select> >- </th> >- <th class="rule-operation-action-edit"> >- <select name="remove"> >- <option value="0">Skip</option> >- <option value="1">Remove</option> >- </select> >- </th> >- <th class="rule-operation-action-edit"> >- <select name="delete"> >- <option value="0">Skip</option> >- <option value="1">Delete</option> >- </select> >- </th> >- <th >- ><button type="submit" class="btn btn-default btn-xs" title="Add" id="add"><i class="fa fa-plus"></i> Add rule</button></th >- > >- <th >- ><button type="button" class="btn btn-default btn-xs" id="btn_batchremove" disabled="disabled" title="Batch remove"><i class="fa fa-trash-can"></i> Delete selected</button></th >- > >- </tr> >- </tfoot> >- [% END %] > <tbody> > [% FOREACH rule IN rules %] > <tr id="[% rule.id | html %]" class="rule[% IF rule.edit %]-edit[% END %]"> >@@ -309,6 +253,62 @@ > </tr> > [% END %] > </tbody> >+ [% UNLESS edit %] >+ <tfoot> >+ <tr class="rule-new"> >+ <th> </th> >+ <th> >+ <select name="module"> >+ <option value="source">Source</option> >+ <option value="categorycode">Patron category</option> >+ <option value="userid">Username</option> >+ </select> >+ </th> >+ <th id="filter-container"></th> >+ <th><input type="text" size="5" name="tag" class="required" required="required" /></th> >+ <th> >+ <select name="preset"> >+ <option value="" selected>Custom</option> >+ <option value="protect">Protect</option> >+ <option value="overwrite">Overwrite</option> >+ <option value="add">Add new</option> >+ <option value="addappend">Add and append</option> >+ <option value="protectfromdeletion">Protect from deletion</option> >+ </select> >+ </th> >+ <th class="rule-operation-action-edit"> >+ <select name="add"> >+ <option value="0">Skip</option> >+ <option value="1">Add</option> >+ </select> >+ </th> >+ <th class="rule-operation-action-edit"> >+ <select name="append"> >+ <option value="0">Skip</option> >+ <option value="1">Append</option> >+ </select> >+ </th> >+ <th class="rule-operation-action-edit"> >+ <select name="remove"> >+ <option value="0">Skip</option> >+ <option value="1">Remove</option> >+ </select> >+ </th> >+ <th class="rule-operation-action-edit"> >+ <select name="delete"> >+ <option value="0">Skip</option> >+ <option value="1">Delete</option> >+ </select> >+ </th> >+ <th >+ ><button type="submit" class="btn btn-default btn-xs" title="Add" id="add"><i class="fa fa-plus"></i> Add rule</button></th >+ > >+ <th >+ ><button type="button" class="btn btn-default btn-xs" id="btn_batchremove" disabled="disabled" title="Batch remove"><i class="fa fa-trash-can"></i> Delete selected</button></th >+ > >+ </tr> >+ </tfoot> >+ [% END %] > </table> > </form> > </div> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt >index 6db3bb56424..f4ff68e5ea1 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt >@@ -101,164 +101,167 @@ > <th class="no-sort no-export">Actions</th> > </tr> > </thead> >- >- <!-- FIXME: Shouldn't hardcode dollar signs, since Euro or Pound might be needed --> >- [% FOREACH account IN accounts %] >- <tr> >- <td data-order="[% account.date | html %]">[% account.date | $KohaDates %]</td> >- <td data-order="[% account.timestamp | html %]">[% account.timestamp | $KohaDates with_hours = 1 %]</td> >- <td>[% account.credit_number | html %]</td> >- <td>[% PROCESS account_type_description account=account %]</td> >- <td> >- [%- IF account.payment_type %][% AuthorisedValues.GetByCode('PAYMENT_TYPE', account.payment_type) | html %][% END %] >- [%- IF account.description %][% account.description | html %][% END %] >- [% IF ( account.itemnumber ) %] >- <a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% account.item.biblionumber | uri %]&itemnumber=[% account.itemnumber | uri %]">[% account.item.biblio.title | html %]</a> >- [% END %]</td >- > >- <td >- >[% IF ( account.itemnumber ) %] >- <a href="/cgi-bin/koha/catalogue/moredetail.pl?itemnumber=[% account.itemnumber | uri %]&biblionumber=[% account.item.biblionumber | uri %]#item[% account.itemnumber | uri %]" >- >[% account.item.barcode | html %]</a >- > >- [% END %]</td >- > >- <td>[% IF ( account.itemnumber ) %][% account.item.itemcallnumber | html %][% END %]</td> >- <td>[% IF ( account.issue_id ) || (account.old_issue_id) %][% account.checkout.date_due | $KohaDates as_due_date => 1 %][% END %]</td> >- <td>[% IF ( account.issue_id ) || (account.old_issue_id) %][% account.checkout.returndate | $KohaDates with_hours => 1 %][% END %]</td> >- <td>[% IF ( account.issue_id ) || (account.old_issue_id) %][% account.checkout.issuedate | $KohaDates %][% END %]</td> >- <td class="checked_out_from"> >- [% IF ( account.issue_id ) || (account.old_issue_id) && account.checkout.library %] >- [% account.checkout.library.branchname | html %] >- [% END %] >- </td> >- <td>[% IF account.itemnumber %][% Branches.GetName( account.item.homebranch ) | html %][% END %]</td> >- <td> >- [% account.note | html_line_break %] >- [% IF CAN_user_updatecharges_edit_accountline_notes %] >- <button >- type="button" >- class="btn btn-default btn-xs edit-action" >- data-bs-toggle="modal" >- data-bs-target="#editNoteModal" >- data-accountline="[% account.accountlines_id | html %]" >- data-note="[% account.note | html %]" >- data-member="[% account.borrowernumber | html %]" >- ><i class="fa-solid fa-pen"></i> Edit</button >- > >- [% END %] >- </td> >- [% IF account.amount <= 0 %] >- [% SET td_class="credit" %] >- [% ELSE %] >- [% SET td_class="debig" %] >- [% END %] >- <td class="[% td_class | html %]" style="text-align: right;">[% account.amount | $Price %]</td> >- <td class="[% td_class | html %]" style="text-align: right;">[% account.amountoutstanding | $Price %]</td> >- <td class="actions"> >- [% IF ( account.is_credit ) %] >- [% IF patron.notice_email_address %] >- <div class="btn-group dropup"> >- <button class="btn btn-xs btn-default dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"><i class="fa fa-receipt"></i> Receipt</button> >- <ul class="dropdown-menu dropdown-menu-end"> >- <li >- ><a target="_blank" href="printfeercpt.pl?accountlines_id=[% account.accountlines_id | uri %]" class="receipt-print-action dropdown-item"><i class="fa fa-print"></i> Print</a></li >- > >- <li> >- <form method="post" action="/cgi-bin/koha/members/boraccount.pl"> >- [% INCLUDE 'csrf-token.inc' %] >- <input type="hidden" name="op" value="cud-send_receipt" /> >- <input type="hidden" name="accountlines_id" value="[% account.accountlines_id | html %]" /> >- <input type="hidden" name="borrowernumber" value="[% account.borrowernumber | html %]" /> >- </form> >- <a href="#" class="receipt-email-action dropdown-item"><i class="fa fa-envelope"></i> Email</a> >- </li> >- </ul> >- </div> >- [% ELSE %] >- <a target="_blank" href="printfeercpt.pl?action=print&accountlines_id=[% account.accountlines_id | uri %]" class="btn btn-default btn-xs receipt-print-action"><i class="fa fa-print"></i> Print</a> >+ <tbody> >+ <!-- FIXME: Shouldn't hardcode dollar signs, since Euro or Pound might be needed --> >+ [% FOREACH account IN accounts %] >+ <tr> >+ <td data-order="[% account.date | html %]">[% account.date | $KohaDates %]</td> >+ <td data-order="[% account.timestamp | html %]">[% account.timestamp | $KohaDates with_hours = 1 %]</td> >+ <td>[% account.credit_number | html %]</td> >+ <td>[% PROCESS account_type_description account=account %]</td> >+ <td> >+ [%- IF account.payment_type %][% AuthorisedValues.GetByCode('PAYMENT_TYPE', account.payment_type) | html %][% END %] >+ [%- IF account.description %][% account.description | html %][% END %] >+ [% IF ( account.itemnumber ) %] >+ <a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% account.item.biblionumber | uri %]&itemnumber=[% account.itemnumber | uri %]">[% account.item.biblio.title | html %]</a> >+ [% END %]</td >+ > >+ <td >+ >[% IF ( account.itemnumber ) %] >+ <a href="/cgi-bin/koha/catalogue/moredetail.pl?itemnumber=[% account.itemnumber | uri %]&biblionumber=[% account.item.biblionumber | uri %]#item[% account.itemnumber | uri %]" >+ >[% account.item.barcode | html %]</a >+ > >+ [% END %]</td >+ > >+ <td>[% IF ( account.itemnumber ) %][% account.item.itemcallnumber | html %][% END %]</td> >+ <td>[% IF ( account.issue_id ) || (account.old_issue_id) %][% account.checkout.date_due | $KohaDates as_due_date => 1 %][% END %]</td> >+ <td>[% IF ( account.issue_id ) || (account.old_issue_id) %][% account.checkout.returndate | $KohaDates with_hours => 1 %][% END %]</td> >+ <td>[% IF ( account.issue_id ) || (account.old_issue_id) %][% account.checkout.issuedate | $KohaDates %][% END %]</td> >+ <td class="checked_out_from"> >+ [% IF ( account.issue_id ) || (account.old_issue_id) && account.checkout.library %] >+ [% account.checkout.library.branchname | html %] > [% END %] >+ </td> >+ <td>[% IF account.itemnumber %][% Branches.GetName( account.item.homebranch ) | html %][% END %]</td> >+ <td> >+ [% account.note | html_line_break %] >+ [% IF CAN_user_updatecharges_edit_accountline_notes %] >+ <button >+ type="button" >+ class="btn btn-default btn-xs edit-action" >+ data-bs-toggle="modal" >+ data-bs-target="#editNoteModal" >+ data-accountline="[% account.accountlines_id | html %]" >+ data-note="[% account.note | html %]" >+ data-member="[% account.borrowernumber | html %]" >+ ><i class="fa-solid fa-pen"></i> Edit</button >+ > >+ [% END %] >+ </td> >+ [% IF account.amount <= 0 %] >+ [% SET td_class="credit" %] > [% ELSE %] >- <a target="_blank" href="printinvoice.pl?action=print&accountlines_id=[% account.accountlines_id | uri %]" class="btn btn-default btn-xs invoice-print-action"><i class="fa fa-print"></i> Print</a> >- [% END %] >- <a href="accountline-details.pl?accountlines_id=[% account.accountlines_id | uri %]" class="btn btn-default btn-xs details-action"><i class="fa fa-list"></i> Details</a> >- [% IF account.is_debit && account.amountoutstanding > 0 %] >- <form method="get" action="/cgi-bin/koha/members/paycollect.pl"> >- <input type="hidden" name="borrowernumber" value="[% account.borrowernumber | html %]" /> >- <input type="hidden" name="pay_individual" value="1" /> >- <input type="hidden" name="debit_type_code" value="[% account.debit_type_code | html %]" /> >- <input type="hidden" name="amount" value="[% account.amount | html %]" /> >- <input type="hidden" name="amountoutstanding" value="[% account.amountoutstanding | html %]" /> >- <input type="hidden" name="description" value="[% account.description | html %]" /> >- <input type="hidden" name="itemnumber" value="[% account.itemnumber | html %]" /> >- <input type="hidden" name="accountlines_id" value="[% account.accountlines_id | html %]" /> >- <button type="submit" class="btn btn-default btn-xs pay-action"> <i class="fa-solid fa-money-bill-1"></i> Pay </button> >- </form> >- [% END %] >- [% IF account.is_credit && account.status != 'VOID' %] >- <button >- type="button" >- data-bs-toggle="modal" >- data-bs-target="#voidPaymentModal" >- data-accountline="[% account.accountlines_id | html %]" >- data-member="[% account.borrowernumber | html %]" >- class="btn btn-default btn-xs void-action" >- ><i class="fa fa-ban"></i> Void payment</button >- > >- [% END %] >- [% IF account.is_debit && account.amount == account.amountoutstanding && account.status != 'CANCELLED' && !(account.debit_type_code == 'PAYOUT') %] >- <button >- type="button" >- data-bs-toggle="modal" >- data-bs-target="#cancelChargeModal" >- data-accountlines_id="[% account.accountlines_id | html %]" >- data-borrowernumber="[% patron.borrowernumber | html %]" >- class="btn btn-default btn-xs void-action" >- ><i class="fa fa-ban"></i> Cancel charge</button >- > >- [% END %] >- [% IF CAN_user_updatecharges_payout && account.is_credit && ( account.amountoutstanding < 0 ) %] >- <button >- type="button" >- data-bs-toggle="modal" >- data-bs-target="#issuePayoutModal" >- data-account="[%- PROCESS account_type_description account=account -%]" >- data-accountline="[% account.accountlines_id | html %]" >- data-amount="[% account.amountoutstanding | $Price on_editing => 1 %]" >- class="btn btn-default btn-xs payout-action" >- ><i class="fa-solid fa-money-bill-1"></i> Issue payout</button >- > >+ [% SET td_class="debig" %] > [% END %] >- [% IF CAN_user_updatecharges_refund && account.is_debit && ( account.amountoutstanding != account.amount ) && !(account.status == 'REFUNDED') && !(account.debit_type_code == 'PAYOUT') && !(account.debit_type_code == 'VOID') %] >- <button >- type="button" >- class="btn btn-default btn-xs refund-action" >- data-bs-toggle="modal" >- data-bs-target="#issueRefundModal" >- data-item="[%- PROCESS account_type_description account=account -%]" >- data-accountline="[% account.accountlines_id | html %]" >- data-amount="[% account.amount | $Price on_editing => 1 %]" >- data-amountoutstanding="[% account.amountoutstanding | $Price on_editing => 1 %]" >- data-member="[% account.borrowernumber | html %]" >- ><i class="fa-solid fa-money-bill-1"></i> Issue refund</button >- > >- [% END %] >- [% IF CAN_user_updatecharges_discount && account.is_debit && ( account.amountoutstanding == account.amount ) && !(account.debit_type_code == 'PAYOUT') && !(account.debit_type_code == 'VOID') %] >- <button >- type="button" >- data-bs-toggle="modal" >- data-bs-target="#applyDiscountModal" >- data-item="[%- PROCESS account_type_description account=account -%]" >- data-accountline="[% account.accountlines_id | html %]" >- data-amount="[% account.amount | $Price on_editing => 1 %]" >- data-amountoutstanding="[% account.amountoutstanding | $Price on_editing => 1 %]" >- class="btn btn-default btn-xs discount-action" >- >Apply discount</button >- > >- [% END %] >- </td> >- </tr> >- [% END %] >+ <td class="[% td_class | html %]" style="text-align: right;">[% account.amount | $Price %]</td> >+ <td class="[% td_class | html %]" style="text-align: right;">[% account.amountoutstanding | $Price %]</td> >+ <td class="actions"> >+ [% IF ( account.is_credit ) %] >+ [% IF patron.notice_email_address %] >+ <div class="btn-group dropup"> >+ <button class="btn btn-xs btn-default dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"><i class="fa fa-receipt"></i> Receipt</button> >+ <ul class="dropdown-menu dropdown-menu-end"> >+ <li >+ ><a target="_blank" href="printfeercpt.pl?accountlines_id=[% account.accountlines_id | uri %]" class="receipt-print-action dropdown-item"><i class="fa fa-print"></i> Print</a></li >+ > >+ <li> >+ <form method="post" action="/cgi-bin/koha/members/boraccount.pl"> >+ [% INCLUDE 'csrf-token.inc' %] >+ <input type="hidden" name="op" value="cud-send_receipt" /> >+ <input type="hidden" name="accountlines_id" value="[% account.accountlines_id | html %]" /> >+ <input type="hidden" name="borrowernumber" value="[% account.borrowernumber | html %]" /> >+ </form> >+ <a href="#" class="receipt-email-action dropdown-item"><i class="fa fa-envelope"></i> Email</a> >+ </li> >+ </ul> >+ </div> >+ [% ELSE %] >+ <a target="_blank" href="printfeercpt.pl?action=print&accountlines_id=[% account.accountlines_id | uri %]" class="btn btn-default btn-xs receipt-print-action" >+ ><i class="fa fa-print"></i> Print</a >+ > >+ [% END %] >+ [% ELSE %] >+ <a target="_blank" href="printinvoice.pl?action=print&accountlines_id=[% account.accountlines_id | uri %]" class="btn btn-default btn-xs invoice-print-action"><i class="fa fa-print"></i> Print</a> >+ [% END %] >+ <a href="accountline-details.pl?accountlines_id=[% account.accountlines_id | uri %]" class="btn btn-default btn-xs details-action"><i class="fa fa-list"></i> Details</a> >+ [% IF account.is_debit && account.amountoutstanding > 0 %] >+ <form method="get" action="/cgi-bin/koha/members/paycollect.pl"> >+ <input type="hidden" name="borrowernumber" value="[% account.borrowernumber | html %]" /> >+ <input type="hidden" name="pay_individual" value="1" /> >+ <input type="hidden" name="debit_type_code" value="[% account.debit_type_code | html %]" /> >+ <input type="hidden" name="amount" value="[% account.amount | html %]" /> >+ <input type="hidden" name="amountoutstanding" value="[% account.amountoutstanding | html %]" /> >+ <input type="hidden" name="description" value="[% account.description | html %]" /> >+ <input type="hidden" name="itemnumber" value="[% account.itemnumber | html %]" /> >+ <input type="hidden" name="accountlines_id" value="[% account.accountlines_id | html %]" /> >+ <button type="submit" class="btn btn-default btn-xs pay-action"> <i class="fa-solid fa-money-bill-1"></i> Pay </button> >+ </form> >+ [% END %] >+ [% IF account.is_credit && account.status != 'VOID' %] >+ <button >+ type="button" >+ data-bs-toggle="modal" >+ data-bs-target="#voidPaymentModal" >+ data-accountline="[% account.accountlines_id | html %]" >+ data-member="[% account.borrowernumber | html %]" >+ class="btn btn-default btn-xs void-action" >+ ><i class="fa fa-ban"></i> Void payment</button >+ > >+ [% END %] >+ [% IF account.is_debit && account.amount == account.amountoutstanding && account.status != 'CANCELLED' && !(account.debit_type_code == 'PAYOUT') %] >+ <button >+ type="button" >+ data-bs-toggle="modal" >+ data-bs-target="#cancelChargeModal" >+ data-accountlines_id="[% account.accountlines_id | html %]" >+ data-borrowernumber="[% patron.borrowernumber | html %]" >+ class="btn btn-default btn-xs void-action" >+ ><i class="fa fa-ban"></i> Cancel charge</button >+ > >+ [% END %] >+ [% IF CAN_user_updatecharges_payout && account.is_credit && ( account.amountoutstanding < 0 ) %] >+ <button >+ type="button" >+ data-bs-toggle="modal" >+ data-bs-target="#issuePayoutModal" >+ data-account="[%- PROCESS account_type_description account=account -%]" >+ data-accountline="[% account.accountlines_id | html %]" >+ data-amount="[% account.amountoutstanding | $Price on_editing => 1 %]" >+ class="btn btn-default btn-xs payout-action" >+ ><i class="fa-solid fa-money-bill-1"></i> Issue payout</button >+ > >+ [% END %] >+ [% IF CAN_user_updatecharges_refund && account.is_debit && ( account.amountoutstanding != account.amount ) && !(account.status == 'REFUNDED') && !(account.debit_type_code == 'PAYOUT') && !(account.debit_type_code == 'VOID') %] >+ <button >+ type="button" >+ class="btn btn-default btn-xs refund-action" >+ data-bs-toggle="modal" >+ data-bs-target="#issueRefundModal" >+ data-item="[%- PROCESS account_type_description account=account -%]" >+ data-accountline="[% account.accountlines_id | html %]" >+ data-amount="[% account.amount | $Price on_editing => 1 %]" >+ data-amountoutstanding="[% account.amountoutstanding | $Price on_editing => 1 %]" >+ data-member="[% account.borrowernumber | html %]" >+ ><i class="fa-solid fa-money-bill-1"></i> Issue refund</button >+ > >+ [% END %] >+ [% IF CAN_user_updatecharges_discount && account.is_debit && ( account.amountoutstanding == account.amount ) && !(account.debit_type_code == 'PAYOUT') && !(account.debit_type_code == 'VOID') %] >+ <button >+ type="button" >+ data-bs-toggle="modal" >+ data-bs-target="#applyDiscountModal" >+ data-item="[%- PROCESS account_type_description account=account -%]" >+ data-accountline="[% account.accountlines_id | html %]" >+ data-amount="[% account.amount | $Price on_editing => 1 %]" >+ data-amountoutstanding="[% account.amountoutstanding | $Price on_editing => 1 %]" >+ class="btn btn-default btn-xs discount-action" >+ >Apply discount</button >+ > >+ [% END %] >+ </td> >+ </tr> >+ [% END %] >+ </tbody> > <tfoot> > <tr> > <td colspan="14">Total due</td> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt >index ca44e9104dc..706a7cfdea0 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt >@@ -155,26 +155,26 @@ > <fieldset class="rows"> > <legend>Pay an individual charge</legend> > <table> >- <thead >- ><tr> >+ <thead> >+ <tr> > <th>Description</th> > <th>Account type</th> > <th>Amount</th> > <th>Amount outstanding</th> >- </tr></thead >- > >- <tfoot> >- <tr><td colspan="3">Total amount payable:</td><td>[% amountoutstanding | $Price %]</td></tr> >- </tfoot> >- <tbody >- ><tr> >+ </tr> >+ </thead> >+ <tbody> >+ <tr> > <td> [% individual_description | html %] </td> > [% line.debit_type_code = debit_type_code %] > <td>[% PROCESS account_type_description account=line %]</td> > <td class="debit">[% amount | $Price %]</td> > <td class="debit">[% amountoutstanding | $Price %]</td> >- </tr></tbody >- > >+ </tr> >+ </tbody> >+ <tfoot> >+ <tr><td colspan="3">Total amount payable:</td><td>[% amountoutstanding | $Price %]</td></tr> >+ </tfoot> > </table> > > <ol> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/cash_register_stats.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/cash_register_stats.tt >index dc10781e512..fcd76dea6c9 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/cash_register_stats.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/cash_register_stats.tt >@@ -168,22 +168,24 @@ > <th>Item type</th> > </tr> > </thead> >- [% FOREACH loopresul IN loopresult %] >- <tr> >- <td>[% loopresul.mfirstname | html %] [% loopresul.msurname | html %]</td> >- <td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% loopresul.borrowernumber | uri %]">[% loopresul.cardnumber | html %]</a></td> >- <td>[% loopresul.bfirstname | html %] [% loopresul.bsurname | html %]</td> >- <td>[% loopresul.branchname | html %]</td> >- <td data-order="[% loopresul.date | html %]">[% loopresul.date | $KohaDates %]</td> >- <td data-order="[% loopresul.timestamp | html %]">[% loopresul.timestamp | $KohaDates with_hours = 1 %]</td> >- <td>[% loopresul.type_description | html %]</td> >- <td>[% loopresul.note | html %]</td> >- <td style="text-align:right;">[% loopresul.amount | $Price %]</td> >- <td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% loopresul.biblionumber | uri %]">[% loopresul.title | html %]</a></td> >- <td>[% loopresul.barcode | html %]</td> >- <td>[% ItemTypes.GetDescription(loopresul.itype) | html %]</td> >- </tr> >- [% END %] >+ <tbody> >+ [% FOREACH loopresul IN loopresult %] >+ <tr> >+ <td>[% loopresul.mfirstname | html %] [% loopresul.msurname | html %]</td> >+ <td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% loopresul.borrowernumber | uri %]">[% loopresul.cardnumber | html %]</a></td> >+ <td>[% loopresul.bfirstname | html %] [% loopresul.bsurname | html %]</td> >+ <td>[% loopresul.branchname | html %]</td> >+ <td data-order="[% loopresul.date | html %]">[% loopresul.date | $KohaDates %]</td> >+ <td data-order="[% loopresul.timestamp | html %]">[% loopresul.timestamp | $KohaDates with_hours = 1 %]</td> >+ <td>[% loopresul.type_description | html %]</td> >+ <td>[% loopresul.note | html %]</td> >+ <td style="text-align:right;">[% loopresul.amount | $Price %]</td> >+ <td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% loopresul.biblionumber | uri %]">[% loopresul.title | html %]</a></td> >+ <td>[% loopresul.barcode | html %]</td> >+ <td>[% ItemTypes.GetDescription(loopresul.itype) | html %]</td> >+ </tr> >+ [% END %] >+ </tbody> > <tfoot> > <tr> > [% IF transaction_type == "ACT" %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/itemtypes.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/itemtypes.tt >index 05ef1a3ed1c..537cb4d5d3f 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/itemtypes.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/itemtypes.tt >@@ -55,12 +55,6 @@ > <th>Count</th> > </tr> > </thead> >- <tfoot> >- <tr> >- <th>TOTAL</th> >- <th>[% mainloo.total | html %]</th> >- </tr> >- </tfoot> > <tbody> > [% FOREACH loopitemtyp IN mainloo.loopitemtype %] > <tr> >@@ -69,6 +63,12 @@ > </tr> > [% END %] > </tbody> >+ <tfoot> >+ <tr> >+ <th>TOTAL</th> >+ <th>[% mainloo.total | html %]</th> >+ </tr> >+ </tfoot> > </table> > </div> > <!-- /.page-section --> >-- >2.39.5
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 41760
: 192396