1 package SL::Controller::LiquidityProjection;
5 use parent qw(SL::Controller::Base);
7 use SL::Locale::String;
8 use SL::LiquidityProjection;
9 use SL::Util qw(_hashify);
11 __PACKAGE__->run_before('check_auth');
13 use Rose::Object::MakeMethods::Generic (
14 scalar => [ qw(liquidity) ],
25 $self->liquidity(SL::LiquidityProjection->new(%{ $::form->{params} })->create) if $::form->{params};
27 $::form->{params} ||= {
35 $self->setup_show_action_bar;
36 $self->render('liquidity_projection/show', title => t8('Liquidity projection'));
39 sub action_list_orders {
42 my @orders = SL::LiquidityProjection->orders_for_time_period(
43 after => $::form->{after} ? DateTime->from_kivitendo($::form->{after}) : undef,
44 before => $::form->{before} ? DateTime->from_kivitendo($::form->{before}) : undef,
48 'liquidity_projection/list_orders',
49 title => t8('Sales Orders'),
58 sub check_auth { $::auth->assert('report') }
59 sub init_oe_report_columns_str { join '&', map { "$_=Y" } qw(open delivered notdelivered l_ordnumber l_transdate l_reqdate l_name l_employee l_salesman l_netamount l_amount l_transaction_description) }
65 sub link_to_old_orders {
67 my %params = _hashify(0, @_);
69 my $reqdate = $params{reqdate};
70 my $months = $params{months} * 1;
71 my $today = DateTime->today_local->truncate(to => 'month');
76 if ($reqdate eq 'old') {
77 $url_params{before} = $today->to_kivitendo;
79 } elsif ($reqdate eq 'future') {
80 $url_params{after} = $today->add(months => $months)->to_kivitendo;
83 $reqdate =~ m/(\d+)-(\d+)/;
84 my $date = DateTime->new_local(year => $1, month => $2, day => 1);
85 $url_params{after} = $date->to_kivitendo;
86 $url_params{before} = $date->add(months => 1)->to_kivitendo;
89 return $self->url_for(action => 'list_orders', %url_params);
92 sub setup_show_action_bar {
93 my ($self, %params) = @_;
95 for my $bar ($::request->layout->get('actionbar')) {
99 submit => [ '#filter_form', { action => 'LiquidityProjection/show' } ],
100 accesskey => 'enter',