9fe2db34f8e400e4cfe61f8b448924428c42c2b3
[kivitendo-erp.git] / SL / Presenter / ALL.pm
1 package SL::Presenter::ALL;
2
3 use strict;
4
5 use SL::Presenter::Chart;
6 use SL::Presenter::CustomerVendor;
7 use SL::Presenter::DeliveryOrder;
8 use SL::Presenter::Dunning;
9 use SL::Presenter::EscapedText;
10 use SL::Presenter::Invoice;
11 use SL::Presenter::GL;
12 use SL::Presenter::Letter;
13 use SL::Presenter::Order;
14 use SL::Presenter::Part;
15 use SL::Presenter::Project;
16 use SL::Presenter::Record;
17 use SL::Presenter::RequirementSpec;
18 use SL::Presenter::RequirementSpecItem;
19 use SL::Presenter::RequirementSpecTextBlock;
20 use SL::Presenter::SepaExport;
21 use SL::Presenter::ShopOrder;
22 use SL::Presenter::Text;
23 use SL::Presenter::Tag;
24 use SL::Presenter::BankAccount;
25
26 our %presenters = (
27   chart                       => 'SL::Presenter::Chart',
28   customer_vendor             => 'SL::Presenter::CustomerVendor',
29   delivery_order              => 'SL::Presenter::DeliveryOrder',
30   dunning                     => 'SL::Presenter::Dunning',
31   escaped_text                => 'SL::Presenter::EscapedText',
32   file_object                 => 'SL::Presenter::FileObject',
33   invoice                     => 'SL::Presenter::Invoice',
34   gl                          => 'SL::Presenter::GL',
35   letter                      => 'SL::Presenter::Letter',
36   order                       => 'SL::Presenter::Order',
37   part                        => 'SL::Presenter::Part',
38   project                     => 'SL::Presenter::Project',
39   record                      => 'SL::Presenter::Record',
40   requirement_spec            => 'SL::Presenter::RequirementSpec',
41   requirement_spec_item       => 'SL::Presenter::RequirementSpecItem',
42   requirement_spec_text_block => 'SL::Presenter::RequirementSpecTextBlock',
43   sepa_export                 => 'SL::Presenter::SepaExport',
44   shop_order                  => 'SL::Presenter::ShopOrder',
45   text                        => 'SL::Presenter::Text',
46   tag                         => 'SL::Presenter::Tag',
47   bank_account                => 'SL::Presenter::BankAccount',
48 );
49
50 sub wrap {
51   bless [ $_[0] ], 'SL::Presenter::ALL::Wrapper';
52 }
53
54 package SL::Presenter::ALL::Wrapper;
55
56 sub AUTOLOAD {
57   our $AUTOLOAD;
58
59   my ($self, @args) = @_;
60
61   my $method = $AUTOLOAD;
62   $method    =~ s/.*:://;
63
64   return if $method eq 'DESTROY';
65
66   splice @args, -1, 1, %{ $args[-1] } if @args && (ref($args[-1]) eq 'HASH');
67
68   if (my $sub = $self->[0]->can($method)) {
69     return $sub->(@args);
70   }
71 }
72
73 1;