]> wagnertech.de Git - kivitendo-erp.git/blob - SL/Controller/Gdpdu.pm
GDPDU: lokalisierte Spaltennamen und CSV Header
[kivitendo-erp.git] / SL / Controller / Gdpdu.pm
1 package SL::Controller::Gdpdu;
2
3 use strict;
4
5 use parent qw(SL::Controller::Base);
6
7 use SL::GDPDU;
8 use SL::Locale::String qw(t8);
9 use SL::Helper::Flash;
10
11 use Rose::Object::MakeMethods::Generic (
12   'scalar --get_set_init' => [ qw(from to) ],
13 );
14
15 __PACKAGE__->run_before('check_auth');
16
17 sub action_filter {
18   my ($self) = @_;
19
20   $self->from(DateTime->today->add(years => -1)->add(days => 1)) if !$self->from;
21   $self->to(DateTime->today)                                     if !$self->to;
22
23   $self->render('gdpdu/filter', title => t8('GDPDU Export'));
24 }
25
26 sub action_export {
27   my ($self) = @_;
28
29   if (!$self->check_inputs) {
30     $self->action_filter;
31     return;
32   }
33
34   my $gdpdu = SL::GDPDU->new(
35     company    => $::instance_conf->get_company,
36     location   => $::instance_conf->get_address,
37     from       => $self->from,
38     to         => $self->to,
39   );
40
41   my $filename = $gdpdu->generate_export;
42
43   $self->send_file($filename, name => t8('gdpdu-#1-#2.zip', $self->from->ymd, $self->to->ymd), unlink => 1);
44 }
45
46 #--- other stuff
47
48 sub check_auth { $::auth->assert('report') }
49
50 sub check_inputs {
51   my ($self) = @_;
52
53   my $error = 0;
54
55   if (!$::form->{from}) {
56     my $epoch = DateTime->new(day => 1, month => 1, year => 1900);
57     flash('info', t8('No start date given, setting to #1', $epoch->to_kivitendo));
58     $self->from($epoch);
59   }
60
61   if (!$::form->{to}) {
62     flash('info', t8('No end date given, setting to today'));
63     $self->to(DateTime->today);
64   }
65
66   !$error;
67 }
68
69 sub init_from { DateTime->from_kivitendo($::form->{from}) }
70 sub init_to { DateTime->from_kivitendo($::form->{to}) }
71
72 1;