kivitendo/SL/Template/Plugin/LxERP.pm @ 4f152ed2
2ef21b8f | Sven Schöling | package SL::Template::Plugin::LxERP;
|
||
use base qw( Template::Plugin );
|
||||
54fc0d08 | Moritz Bunkus | use Scalar::Util qw();
|
||
2ef21b8f | Sven Schöling | use Template::Plugin;
|
||
8c7e4493 | Moritz Bunkus | |||
use List::Util qw(min);
|
||||
use SL::AM;
|
||||
2ef21b8f | Sven Schöling | |||
c510d88b | Sven Schöling | use strict;
|
||
2ef21b8f | Sven Schöling | sub new {
|
||
my $class = shift;
|
||||
my $context = shift;
|
||||
bless { }, $class;
|
||||
}
|
||||
54fc0d08 | Moritz Bunkus | sub is_rdbo {
|
||
my ($self, $obj, $wanted_class) = @_;
|
||||
$wanted_class = !$wanted_class ? 'Rose::DB::Object'
|
||||
: $wanted_class =~ m{::} ? $wanted_class
|
||||
: "SL::DB::${wanted_class}";
|
||||
return Scalar::Util::blessed($obj) ? $obj->isa($wanted_class) : 0;
|
||||
}
|
||||
2ef21b8f | Sven Schöling | sub format_amount {
|
||
34366eda | Moritz Bunkus | my ($self, $var, $places, $skip_zero, $dash) = @_;
|
||
2ef21b8f | Sven Schöling | |||
34366eda | Moritz Bunkus | return $main::form->format_amount(\%main::myconfig, $var * 1, $places, $dash) unless $skip_zero && $var == 0;
|
||
2ef21b8f | Sven Schöling | return '';
|
||
}
|
||||
7130d91e | Sven Schöling | sub round_amount {
|
||
my ($self, $var, $places, $skip_zero) = @_;
|
||||
return $main::form->round_amount($var * 1, $places) unless $skip_zero && $var == 0;
|
||||
return '';
|
||||
}
|
||||
8c7e4493 | Moritz Bunkus | sub format_amount_units {
|
||
my ($self, $amount, $amount_unit, $part_unit) = @_;
|
||||
return $main::form->format_amount_units('amount' => $amount,
|
||||
'part_unit' => $part_unit,
|
||||
'amount_unit' => $amount_unit,
|
||||
'conv_units' => 'convertible_not_smaller');
|
||||
}
|
||||
2ef21b8f | Sven Schöling | sub format_percent {
|
||
my ($self, $var, $places, $skip_zero) = @_;
|
||||
91ee6cb2 | Sven Schöling | $places ||= 2;
|
||
2ef21b8f | Sven Schöling | return $self->format_amount($var * 100, $places, $skip_zero);
|
||
}
|
||||
d1e4ee79 | Moritz Bunkus | sub escape_br {
|
||
my ($self, $var) = @_;
|
||||
$var =~ s/\r//g;
|
||||
$var =~ s/\n/<br>/g;
|
||||
return $var;
|
||||
}
|
||||
8c7e4493 | Moritz Bunkus | sub format_string {
|
||
my $self = shift;
|
||||
my $string = shift;
|
||||
return $main::form->format_string($string, @_);
|
||||
}
|
||||
sub numtextrows {
|
||||
my $self = shift;
|
||||
return $main::form->numtextrows(@_);
|
||||
}
|
||||
sub _turn90_word {
|
||||
my $self = shift;
|
||||
my $word = shift || "";
|
||||
2ef21b8f | Sven Schöling | |||
f2860992 | Moritz Bunkus | return join '<br>', map { $main::locale->quote_special_chars('HTML', $_) } split(m//, $word);
|
||
8c7e4493 | Moritz Bunkus | }
|
||
sub turn90 {
|
||||
my $self = shift;
|
||||
my $word = shift;
|
||||
my $args = shift;
|
||||
$args ||= { };
|
||||
$word ||= "";
|
||||
$args->{split_by} ||= 'chars';
|
||||
$args->{class} = " class=\"$args->{class}\"" if ($args->{class});
|
||||
if ($args->{split_by} eq 'words') {
|
||||
my @words = split m/\s+/, $word;
|
||||
if (1 >= scalar @words) {
|
||||
return $self->_turn90_word($words[0]);
|
||||
}
|
||||
return qq|<table><tr>| . join('', map { '<td valign="bottom"' . $args->{class} . '>' . $self->_turn90_word($_) . '</td>' } @words) . qq|</tr></table>|;
|
||||
} else {
|
||||
return $self->_turn90_word($word);
|
||||
}
|
||||
}
|
||||
eb0c10b0 | Moritz Bunkus | sub abs {
|
||
my $self = shift;
|
||||
my $var = shift;
|
||||
return $var < 0 ? $var * -1 : $var;
|
||||
}
|
||||
37a84d92 | Sven Schöling | sub t8 {
|
||
240ae2f5 | Sven Schöling | my ($self, $text, @args) = @_;
|
||
c7edb248 | Sven Schöling | return $::locale->text($text, @args) || $text;
|
||
37a84d92 | Sven Schöling | }
|
||
8c7e4493 | Moritz Bunkus | 1;
|