From 851dc3474432c3a5eb52779026b9458d7a25c117 Mon Sep 17 00:00:00 2001 From: Baptiste Wojtkowski Date: Sun, 1 Apr 2018 23:11:25 +0200 Subject: [PATCH] Bug 12310 : Decimal separator issues: some fixes in fines MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The main goal is to prevent - x100 or /100 of the amounts - decimal part truncation Fixes Bug 19521 - Partial fine payment is not working with comma decimal separator Bonuses: - Gets rid of the spaces, currency symbols, names (EUR) There is nothing specific about currency symbols is this patch. It just removes everything that is not a digit a minus or a separator. It handles: - by default comma and dot as decimal separators on the same instance - dot or comma as thousands separators if choose to use only one of them as decimal separator. See DigitSeparator syspref. - minuses, doesn't remove them == Test plan == 1. Use a translation of the staff interface if possible. 2. When you pay an existing fine (more details in the next steps if needed). Check that you can't enter any string except like "XX.XX" (examples in Annex 1) without having an issue after validation. (x100, truncation, etc) 3. Apply this patch 4. run ~/src/installer/data/mysql/updatedatabase.pl 5. In the manual invoice (cgi-bin/koha/members/maninvoice.pl) 6. Apply the annex 1 to the "Amount" field 7. When paying a fine (cgi-bin/koha/members/paycollect.pl) 8. Click on "Pay amount" to go to the page to pay all fines 9. Apply the annex 1 to the "Collect from patron" field 10. Click on "Pay" to go to the page to pay fine 11. Apply the annex 1 to the "Collect from patron" field 12. Go to "Create manual credit" (staff://cgi-bin/koha/members/mancredit.pl) 13. Apply the annex 1 to the "Amount" field 14. If you have ideas of stuff to try to find *regressions* from the previous versions, then try. You might spare librarian tears by finding something before it's released. (and prevent me from having bounty on my head) 15. Express your happiness. This is important, otherwise the sign off spell won't work! The details of expressing your happiness depend on your culture and habits. === Annex 1: Subpart for each concerned page === 1. Set DecimalSeparators syspref to ",." 2. Input "12,34" 3. Press the "Tab/Tabulation" key. It will unfocus the field and trigger the conversion. Validating the form does the same but it's a trick to test more quickly by not switching to another page. 4. The value should have been converted to 12.34 5. What follows is just a list of examples. They don't have to be tried on each field. 6. Do the same with "12,34 EUR" and ensure that it's converted to "12,34" 7. Same with "EUR 12.34" -> "12.34" 8. "EUR 12.34€hi lyonthree" -> "12.34" 9. "123 456,7" -> "123456.7" 10. "2" -> "2" 11. "2,0" -> "2.0" 12. "-1'345.95" -> "-1345.95" 13. ",1234" -> ".1234" 14. Set DecimalSeparators syspref to "," 15. Reload the page with the form 16. "1.000" -> "1000" 17. "1.000.000,10" -> "1000000.10" 18. Set DecimalSeparators syspref to "." 19. Reload the page with the form 20. "1,000" -> "1000" 21. "1,000,000.10" -> "1000000.10" 22. Validate the form and check that the final value with the dot was well handled. 23. Think about Koalas and smile. 🐨🐨🐨 --- .../bug12310_add_DecimalSeparators.sql | 2 + installer/data/mysql/sysprefs.sql | 1 + .../prog/en/includes/decimal-input-js.inc | 50 ++++++++++++++++++ .../en/modules/admin/preferences/acquisitions.pref | 2 +- .../en/modules/admin/preferences/i18n_l10n.pref | 4 ++ .../prog/en/modules/members/mancredit.tt | 4 +- .../prog/en/modules/members/maninvoice.tt | 3 +- .../prog/en/modules/members/paycollect.tt | 59 ++-------------------- 8 files changed, 68 insertions(+), 57 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug12310_add_DecimalSeparators.sql create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/decimal-input-js.inc diff --git a/installer/data/mysql/atomicupdate/bug12310_add_DecimalSeparators.sql b/installer/data/mysql/atomicupdate/bug12310_add_DecimalSeparators.sql new file mode 100644 index 0000000..e25582d --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug12310_add_DecimalSeparators.sql @@ -0,0 +1,2 @@ +INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES +('DecimalSeparators', ',.', NULL , 'The allowed separators between entire and decimal parts of numbers', 'Free'); diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql index b9c2e4e..03a623f 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -137,6 +137,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('DefaultToLoggedInLibraryNoticesSlips', '0', NULL , 'If enabled,slips and notices editor will default to the logged in library''s rules, rather than the ''all libraries'' rules.', 'YesNo'), ('DefaultToLoggedInLibraryOverdueTriggers', '0', NULL , 'If enabled, overdue status triggers editor will default to the logged in library''s rules, rather than the ''default'' rules.', 'YesNo'), ('delimiter',';',';|tabulation|,|/|\\|#||','Define the default separator character for exporting reports','Choice'), +('DecimalSeparators', '.,', NULL , 'The allowed separators between entire and decimal parts of numbers', 'Free'), ('Display856uAsImage','OFF','OFF|Details|Results|Both','Display the URI in the 856u field as an image, the corresponding Staff Client XSLT option must be on','Choice'), ('DisplayClearScreenButton','0','','If set to ON, a clear screen button will appear on the circulation page.','YesNo'), ('displayFacetCount','0',NULL,NULL,'YesNo'), diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/decimal-input-js.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/decimal-input-js.inc new file mode 100644 index 0000000..a72a825 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/decimal-input-js.inc @@ -0,0 +1,50 @@ +[% USE Koha %] +[% USE JSON.Escape %] + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/acquisitions.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/acquisitions.pref index ac63e2c..e7f778d 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/acquisitions.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/acquisitions.pref @@ -28,7 +28,7 @@ Acquisitions: branch: from staff member's library. all: in system, regardless of owner. - - - Display currencies using the following format + - Display currencies using the following format. It you want to choose the possible decimal separators for price input, please use the system preference 'DecimalSeparators'. - pref: CurrencyFormat choices: US: 360,000.00 (US) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/i18n_l10n.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/i18n_l10n.pref index f7f4252..286a59c 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/i18n_l10n.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/i18n_l10n.pref @@ -66,3 +66,7 @@ I18N/L10N: no: "Don't allow" - notices to be translated. - If set, notices will be translatable from the "Notices and Slips" interface. The language used to send a notice to a patron will be the one defined for the patron. + - + - "Any of these characters can be used as a separator between integer and decimal parts in the price fields. To work well with thousands separators you must (usually) choose between dot and comma to avoid ambiguity. So thousands separators come at the expense of handling both dots and commas. It you want to format price output, please use the system preference 'CurrencyFormat'" + - pref: DecimalSeparators + class: long diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/mancredit.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/mancredit.tt index 5f68a4c..859e08c 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/mancredit.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/mancredit.tt @@ -3,6 +3,7 @@ [% INCLUDE 'doc-head-open.inc' %] Koha › Patrons › Create manual credit [% INCLUDE 'doc-head-close.inc' %] +[% INCLUDE 'decimal-input-js.inc' %] @@ -40,7 +41,8 @@
  • -
  • Example: 5.00
  • +
  • +
    Cancel
    diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/maninvoice.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/maninvoice.tt index 71eeb78..891d4b8 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/maninvoice.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/maninvoice.tt @@ -53,7 +53,7 @@
  • -
  • Example: 5.00
  • +
  • Cancel
    @@ -69,6 +69,7 @@ +[% INCLUDE 'decimal-input-js.inc' %] [% MACRO jsinclude BLOCK %] + + [% INCLUDE 'decimal-input-js.inc' %] + [% END %] [% INCLUDE 'intranet-bottom.inc' %] -- 2.7.4