Revision 43819438
Von Werner Hahn vor mehr als 1 Jahr hinzugefügt
SL/Controller/DispositionManager.pm | ||
---|---|---|
4 | 4 |
|
5 | 5 |
use parent qw(SL::Controller::Base); |
6 | 6 |
|
7 |
use SL::Controller::Helper::GetModels; |
|
8 |
use SL::Controller::Helper::ReportGenerator; |
|
7 | 9 |
use SL::DB::Part; |
8 | 10 |
use SL::DB::PurchaseBasketItem; |
9 | 11 |
use SL::PriceSource; |
... | ... | |
13 | 15 |
|
14 | 16 |
use Data::Dumper; |
15 | 17 |
|
18 |
use Rose::Object::MakeMethods::Generic |
|
19 |
( |
|
20 |
'scalar --get_set_init' => [ qw(models) ], |
|
21 |
); |
|
22 |
|
|
16 | 23 |
sub action_list_parts { |
17 | 24 |
my ( $self ) = @_; |
18 |
my $parts = $self->_get_parts; |
|
25 |
$self->{action} = 'list_parts'; |
|
26 |
$self->prepare_report('Reorder Level List', $::form->{noshow} ? 1 : 0 ); |
|
27 |
|
|
28 |
my $objects = $::form->{noshow} ? [] : $self->models->get; |
|
29 |
|
|
19 | 30 |
$self->_setup_list_action_bar; |
20 |
$self->render('disposition_manager/list_parts', title => t8('Parts short onhand'), PARTS => $parts);
|
|
31 |
$self->report_generator_list_objects(report => $self->{report}, objects => $objects);
|
|
21 | 32 |
} |
22 | 33 |
|
34 |
sub prepare_report { |
|
35 |
my ($self, $title, $noshow ) = @_; |
|
36 |
$main::lxdebug->enter_sub(); |
|
37 |
|
|
38 |
my $locale = $main::locale; |
|
39 |
my $report = SL::ReportGenerator->new(\%::myconfig, $::form); |
|
40 |
$self->{report} = $report; |
|
41 |
|
|
42 |
my @columns = qw(partnumber description drawing available onhand ordered); # consume); |
|
43 |
my @visible = qw(partnumber description drawing available onhand ordered); # consume); |
|
44 |
my @sortable = qw(partnumber description); # consume); |
|
45 |
|
|
46 |
my %column_defs = ( |
|
47 |
'partnumber' => { sub => sub { $_[0]->partnumber }, text => t8('Part Number'), |
|
48 |
obj_link => sub { $_[0]->presenter->link_to }, }, |
|
49 |
'description' => { sub => sub { $_[0]->description }, text => t8('Part Description'), |
|
50 |
obj_link => sub { $_[0]->presenter->link_to }, }, |
|
51 |
'drawing' => { sub => sub { $_[0]->drawing }, text => t8('Drawing'), }, |
|
52 |
'available' => { sub => sub { $::form->format_amount(\%::myconfig,$_[0]->onhandqty,2); }, text => t8('Available Stock'), }, |
|
53 |
'onhand' => { sub => sub { $::form->format_amount(\%::myconfig,$_[0]->stockqty,2); }, text => t8('All On Hand'), }, |
|
54 |
'rop' => { sub => sub { $::form->format_amount(\%::myconfig,$_[0]->rop,2); }, text => t8('Rop'), }, |
|
55 |
'ordered' => { sub => sub { $::form->format_amount(\%::myconfig,$_[0]->get_open_ordered_qty,2); }, text => t8('Ordered purchase'), }, |
|
56 |
# 'consume' => { sub => sub { $::form->format_amount(\%::myconfig,$_[0]->consume,2); }, text => t8('Consume'), }, |
|
57 |
); |
|
58 |
|
|
59 |
# for my $col (@sortable) { |
|
60 |
# $column_defs{$col}{link} = $self->self_url( |
|
61 |
# sort_by => $col, |
|
62 |
# sort_dir => ($self->{sort_by} eq $col ? 1 - $self->{sort_dir} : $self->{sort_dir}), |
|
63 |
# page => $self->{pages}{cur}, |
|
64 |
# retype => $::form->{retype}, |
|
65 |
# stock => $::form->{stock}, |
|
66 |
# ); |
|
67 |
# } |
|
68 |
|
|
69 |
map { $column_defs{$_}->{visible} = 1 } @visible; |
|
70 |
|
|
71 |
$report->set_options( |
|
72 |
controller_class => 'DispositionManager', |
|
73 |
output_format => 'HTML', |
|
74 |
title => t8($title), |
|
75 |
allow_pdf_export => 1, |
|
76 |
allow_csv_export => 1, |
|
77 |
no_data_message => !$noshow, |
|
78 |
); |
|
79 |
$report->set_columns(%column_defs); |
|
80 |
$report->set_column_order(@columns); |
|
81 |
$report->set_export_options(qw(list_parts)); |
|
82 |
$report->set_options_from_form; |
|
83 |
|
|
84 |
unless ( $noshow ) { |
|
85 |
$self->models->disable_plugin('paginated'); # if $report->{options}{output_format} =~ /^(pdf|csv)$/i; |
|
86 |
$self->models->finalize; # for filter laundering |
|
87 |
$self->models->set_report_generator_sort_options(report => $report, sortable_columns => \@sortable); |
|
88 |
#$report->set_sort_indicator($self->{sort_by}, $self->{sort_dir}); |
|
89 |
} |
|
90 |
#$::request->layout->add_javascripts('kivi.PartsWarehouse.js'); |
|
91 |
#$::form->get_lists('warehouses' => { 'key' => 'WAREHOUSES', |
|
92 |
# 'bins' => 'BINS', }); |
|
93 |
my $parts = $self->_get_parts(0); |
|
94 |
my $top = $self->render('disposition_manager/list_parts', { output => 0 }, |
|
95 |
noshow => $noshow, |
|
96 |
PARTS => $parts, |
|
97 |
); |
|
98 |
my $bottom = $noshow ? undef : $self->render('reorder_level_list/report_bottom', { output => 0}, models => $self->models ); |
|
99 |
$report->set_options( |
|
100 |
raw_top_info_text => $top, |
|
101 |
raw_bottom_info_text => $bottom, |
|
102 |
); |
|
103 |
$main::lxdebug->leave_sub(); |
|
104 |
} |
|
23 | 105 |
sub action_add_to_purchase_basket{ |
24 | 106 |
my ( $self ) = @_; |
25 | 107 |
|
... | ... | |
185 | 267 |
} |
186 | 268 |
|
187 | 269 |
sub _get_parts { |
188 |
my ($self) = @_; |
|
270 |
my ($self, $ordered) = @_;
|
|
189 | 271 |
|
190 | 272 |
my $query = <<SQL; |
191 | 273 |
SELECT * |
... | ... | |
197 | 279 |
ORDER BY partnumber |
198 | 280 |
SQL |
199 | 281 |
|
200 |
return SL::DB::Manager::Part->get_objects_from_sql( sql => $query ); |
|
282 |
my $parts = SL::DB::Manager::Part->get_objects_from_sql( sql => $query ); |
|
283 |
my $parts_to_order = [ grep { !$_->get_open_ordered_qty } @{$parts} ]; |
|
284 |
my $parts_ordered = [ map { $_->id } grep { $_->get_open_ordered_qty } @{$parts} ]; |
|
285 |
return $parts_to_order if !$ordered; |
|
286 |
return $parts_ordered if $ordered; |
|
201 | 287 |
}; |
202 | 288 |
|
289 |
sub init_models { |
|
290 |
my ($self) = @_; |
|
291 |
my $parts1 = $self->_get_parts(1) || []; |
|
292 |
my @parts = @{$parts1}; |
|
293 |
my $get_models = SL::Controller::Helper::GetModels->new( |
|
294 |
controller => $self, |
|
295 |
model => 'Part', |
|
296 |
sorted => { |
|
297 |
_default => { |
|
298 |
by => 'partnumber', |
|
299 |
dir => 1, |
|
300 |
}, |
|
301 |
partnumber => $::locale->text('Part Number'), |
|
302 |
description => $::locale->text('Description'), |
|
303 |
}, |
|
304 |
query => [ |
|
305 |
(id => \@parts) x !!@parts, |
|
306 |
], |
|
307 |
paginated => { |
|
308 |
form_params => [ qw(page per_page) ], |
|
309 |
per_page => 10, |
|
310 |
} |
|
311 |
); |
|
312 |
return $get_models; |
|
313 |
} |
|
314 |
|
|
315 |
|
|
203 | 316 |
|
204 | 317 |
sub _setup_list_action_bar { |
205 | 318 |
my ($self) = @_; |
Auch abrufbar als: Unified diff
Dispomanager Meldebestand Bestellte Artikel als Report