epic-ts
[kivitendo-erp.git] / SL / Template / Plugin / LxERP.pm
1 package SL::Template::Plugin::LxERP;
2
3 use base qw( Template::Plugin );
4 use Scalar::Util qw();
5 use Template::Plugin;
6
7 use List::Util qw(min);
8
9 use SL::AM;
10
11 use strict;
12
13 sub new {
14   my $class   = shift;
15   my $context = shift;
16
17   bless { }, $class;
18 }
19
20 sub is_rdbo {
21   my ($self, $obj, $wanted_class) = @_;
22
23   $wanted_class = !$wanted_class         ? 'Rose::DB::Object'
24                 : $wanted_class =~ m{::} ? $wanted_class
25                 :                          "SL::DB::${wanted_class}";
26
27   return Scalar::Util::blessed($obj) ? $obj->isa($wanted_class) : 0;
28 }
29
30 sub format_amount {
31   my ($self, $var, $places, $skip_zero, $dash) = @_;
32
33   return $main::form->format_amount(\%main::myconfig, $var * 1, $places, $dash) unless $skip_zero && $var == 0;
34   return '';
35 }
36
37 sub round_amount {
38   my ($self, $var, $places, $skip_zero) = @_;
39
40   return $main::form->round_amount($var * 1, $places) unless $skip_zero && $var == 0;
41   return '';
42 }
43
44 sub format_amount_units {
45   my ($self, $amount, $amount_unit, $part_unit) = @_;
46
47   return $main::form->format_amount_units('amount'      => $amount,
48                                           'part_unit'   => $part_unit,
49                                           'amount_unit' => $amount_unit,
50                                           'conv_units'  => 'convertible_not_smaller');
51 }
52
53 sub format_percent {
54   my ($self, $var, $places, $skip_zero) = @_;
55
56   $places ||= 2;
57
58   return $self->format_amount($var * 100, $places, $skip_zero);
59 }
60
61 sub escape_br {
62   my ($self, $var) = @_;
63
64   $var =~ s/\r//g;
65   $var =~ s/\n/<br>/g;
66
67   return $var;
68 }
69
70 sub format_string {
71   my $self   = shift;
72   my $string = shift;
73
74   return $main::form->format_string($string, @_);
75 }
76
77 sub numtextrows {
78   my $self = shift;
79
80   return $main::form->numtextrows(@_);
81 }
82
83 sub _turn90_word {
84   my $self = shift;
85   my $word = shift || "";
86
87   return join '<br>', map { $main::locale->quote_special_chars('HTML', $_) } split(m//, $word);
88 }
89
90 sub turn90 {
91   my $self            = shift;
92   my $word            = shift;
93   my $args            = shift;
94
95   $args             ||= { };
96   $word             ||= "";
97
98   $args->{split_by} ||= 'chars';
99   $args->{class}      = " class=\"$args->{class}\"" if ($args->{class});
100
101   if ($args->{split_by} eq 'words') {
102     my @words = split m/\s+/, $word;
103
104     if (1 >= scalar @words) {
105       return $self->_turn90_word($words[0]);
106     }
107
108     return qq|<table><tr>| . join('', map { '<td valign="bottom"' . $args->{class} . '>' . $self->_turn90_word($_) . '</td>' } @words) . qq|</tr></table>|;
109
110   } else {
111     return $self->_turn90_word($word);
112   }
113 }
114
115 sub abs {
116   my $self = shift;
117   my $var  = shift;
118
119   return $var < 0 ? $var * -1 : $var;
120 }
121
122 sub t8 {
123   my ($self, $text, @args) = @_;
124   return $::locale->text($text, @args) || $text;
125 }
126
127 1;