Bug 21262: Do not format numbers for editing if too big

This patch copies the code from bug 15770 to the format_for_editing
sub.

It also corrects schema issue, listing the purpose for two acq columns
instead of claing unused

To test:
1 - Edit a fund
2 - Set warning at amount to: 100000000000000
3 - Save budget
4 - Try to edit - internal server error
5 - Apply patch
6 - Should be able to edit budget
7 - Number should appear unformatted

Signed-off-by: Christopher Brannon <cbrannon@cdalibrary.org>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2 quick notes:
1. Code must be moved to a subroutine if reused later
2. It would have prefered to have the comment of the 2 DB columns on a separate patch
(even separate bug report). As it's minor and that the patch will certainly backported
I will not block it.

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
This commit is contained in:
Nick Clemens 2018-08-23 14:44:31 +00:00
parent 60788555b3
commit 7a84297ac4
2 changed files with 7 additions and 2 deletions

View File

@ -61,6 +61,11 @@ sub format_for_editing {
mon_decimal_point => '.',
};
# To avoid the system to crash, we will not format big number
# We divide per 100 because we want to keep the default DECIMAL_DIGITS (2)
# error - round() overflow. Try smaller precision or use Math::BigFloat
return $self->value if $self->value > Number::Format::MAX_INT/100;
return Number::Format->new(%$format_params)->format_price($self->value);
}

View File

@ -2833,8 +2833,8 @@ CREATE TABLE `aqbudgets` ( -- information related to Funds
`budget_name` varchar(80) default NULL, -- name assigned to the fund by the user
`budget_branchcode` varchar(10) default NULL, -- branch that this fund belongs to (branches.branchcode)
`budget_amount` decimal(28,6) NULL default '0.00', -- total amount for this fund
`budget_encumb` decimal(28,6) NULL default '0.00', -- not used in the code
`budget_expend` decimal(28,6) NULL default '0.00', -- not used in the code
`budget_encumb` decimal(28,6) NULL default '0.00', -- budget warning at percentage
`budget_expend` decimal(28,6) NULL default '0.00', -- budget warning at amount
`budget_notes` LONGTEXT, -- notes related to this fund
`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- date and time this fund was last touched (created or modified)
`budget_period_id` int(11) default NULL, -- id of the budget that this fund belongs to (aqbudgetperiods.budget_period_id)