Mahnungen: Mit Rechnung verknüpfen
[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   invoice                     => 'SL::Presenter::Invoice',
33   gl                          => 'SL::Presenter::GL',
34   letter                      => 'SL::Presenter::Letter',
35   order                       => 'SL::Presenter::Order',
36   part                        => 'SL::Presenter::Part',
37   project                     => 'SL::Presenter::Project',
38   record                      => 'SL::Presenter::Record',
39   requirement_spec            => 'SL::Presenter::RequirementSpec',
40   requirement_spec_item       => 'SL::Presenter::RequirementSpecItem',
41   requirement_spec_text_block => 'SL::Presenter::RequirementSpecTextBlock',
42   sepa_export                 => 'SL::Presenter::SepaExport',
43   shop_order                  => 'SL::Presenter::ShopOrder',
44   text                        => 'SL::Presenter::Text',
45   tag                         => 'SL::Presenter::Tag',
46   bank_account                => 'SL::Presenter::BankAccount',
47 );
48
49 sub wrap {
50   bless [ $_[0] ], 'SL::Presenter::ALL::Wrapper';
51 }
52
53 package SL::Presenter::ALL::Wrapper;
54
55 sub AUTOLOAD {
56   our $AUTOLOAD;
57
58   my ($self, @args) = @_;
59
60   my $method = $AUTOLOAD;
61   $method    =~ s/.*:://;
62
63   return if $method eq 'DESTROY';
64
65   splice @args, -1, 1, %{ $args[-1] } if @args && (ref($args[-1]) eq 'HASH');
66
67   if (my $sub = $self->[0]->can($method)) {
68     return $sub->(@args);
69   }
70 }
71
72 1;