# standard css for all
# this should gradually move to the layouts that need it
$layout->use_stylesheet("$_.css") for qw(
- main menu common list_accounts jquery.autocomplete
+ common main menu list_accounts jquery.autocomplete
jquery.multiselect2side
ui-lightness/jquery-ui
jquery-ui.custom
jquery jquery-ui jquery.cookie jquery.checkall jquery.download
jquery/jquery.form jquery/fixes client_js
jquery/jquery.tooltipster.min
- common part_selection switchmenuframe
+ common part_selection
), "jquery/ui/i18n/jquery.ui.datepicker-$::myconfig{countrycode}");
$self->{favicon} ||= "favicon.ico";
::end_of_request();
}
- if ($self->{"DEBUG"}) {
- $additional_params->{"DEBUG"} = $self->{"DEBUG"};
- }
-
- if ($additional_params->{"DEBUG"}) {
- $additional_params->{"DEBUG"} =
- "<br><em>DEBUG INFORMATION:</em><pre>" . $additional_params->{"DEBUG"} . "</pre>";
- }
-
- if (%main::myconfig) {
- $::myconfig{jsc_dateformat} = apply {
- s/d+/\%d/gi;
- s/m+/\%m/gi;
- s/y+/\%Y/gi;
- } $::myconfig{"dateformat"};
- $additional_params->{"myconfig"} ||= \%::myconfig;
- map { $additional_params->{"myconfig_${_}"} = $main::myconfig{$_}; } keys %::myconfig;
- }
-
+ $additional_params->{AUTH} = $::auth;
$additional_params->{INSTANCE_CONF} = $::instance_conf;
-
- if (my $debug_options = $::lx_office_conf{debug}{options}) {
- map { $additional_params->{'DEBUG_' . uc($_)} = $debug_options->{$_} } keys %$debug_options;
- }
-
- if ($main::auth && $main::auth->{RIGHTS} && $main::auth->{RIGHTS}->{$self->{login}}) {
- while (my ($key, $value) = each %{ $main::auth->{RIGHTS}->{$self->{login}} }) {
- $additional_params->{"AUTH_RIGHTS_" . uc($key)} = $value;
- }
- }
+ $additional_params->{LOCALE} = $::locale;
+ $additional_params->{LXCONFIG} = \%::lx_office_conf;
+ $additional_params->{LXDEBUG} = $::lxdebug;
+ $additional_params->{MYCONFIG} = \%::myconfig;
$main::lxdebug->leave_sub();
my $force_places = defined $places && $places >= 0;
$amount = $self->round_amount($amount, abs $places) if $force_places;
+ $neg = 0 if $amount == 0; # don't show negative zero
$amount = sprintf "%.*f", ($force_places ? $places : 10), abs $amount; # 6 is default for %fa
# before the sprintf amount was a number, afterwards it's a string. because of the dynamic nature of perl
if ($places || $p[1]) {
$amount .= $d[0]
. ( $p[1] || '' )
- . (0 x (abs($places || 0) - length ($p[1]||''))); # pad the fraction
+ . (0 x max(abs($places || 0) - length ($p[1]||''), 0)); # pad the fraction
}
$amount = do {
}
sub round_amount {
- my ($self, $amount, $places) = @_;
+ my ($self, $amount, $places, $adjust) = @_;
return 0 if !defined $amount;
+ if ($adjust) {
+ my $precision = $::instance_conf->get_precision || 0.01;
+ return $self->round_amount( $self->round_amount($amount / $precision, 0) * $precision, $places);
+ }
+
# We use Perl's knowledge of string representation for
# rounding. First, convert the floating point number to a string
# with a high number of places. Then split the string on the decimal
# part. If an overflow occurs then apply that overflow to the part
# before the decimal sign as well using integer arithmetic again.
- my $amount_str = sprintf '%.*f', $places + 10, abs($amount);
+ my $int_amount = int(abs $amount);
+ my $str_places = max(min(10, 16 - length("$int_amount") - $places), $places);
+ my $amount_str = sprintf '%.*f', $places + $str_places, abs($amount);
return $amount unless $amount_str =~ m{^(\d+)\.(\d+)$};
d.closedto, d.revtrans,
(SELECT cu.name FROM currencies cu WHERE cu.id=d.currency_id) AS defaultcurrency,
(SELECT c.accno FROM chart c WHERE d.fxgain_accno_id = c.id) AS fxgain_accno,
- (SELECT c.accno FROM chart c WHERE d.fxloss_accno_id = c.id) AS fxloss_accno
+ (SELECT c.accno FROM chart c WHERE d.fxloss_accno_id = c.id) AS fxloss_accno,
+ (SELECT c.accno FROM chart c WHERE d.rndgain_accno_id = c.id) AS rndgain_accno,
+ (SELECT c.accno FROM chart c WHERE d.rndloss_accno_id = c.id) AS rndloss_accno
FROM defaults d|;
$ref = selectfirst_hashref_query($self, $dbh, $query);
map { $self->{$_} = $ref->{$_} } keys %$ref;
current_date AS transdate, d.closedto, d.revtrans,
(SELECT cu.name FROM currencies cu WHERE cu.id=d.currency_id) AS defaultcurrency,
(SELECT c.accno FROM chart c WHERE d.fxgain_accno_id = c.id) AS fxgain_accno,
- (SELECT c.accno FROM chart c WHERE d.fxloss_accno_id = c.id) AS fxloss_accno
+ (SELECT c.accno FROM chart c WHERE d.fxloss_accno_id = c.id) AS fxloss_accno,
+ (SELECT c.accno FROM chart c WHERE d.rndgain_accno_id = c.id) AS rndgain_accno,
+ (SELECT c.accno FROM chart c WHERE d.rndloss_accno_id = c.id) AS rndloss_accno
FROM defaults d|;
$ref = selectfirst_hashref_query($self, $dbh, $query);
map { $self->{$_} = $ref->{$_} } keys %$ref;