use SL::OE;
use SL::ReportGenerator;
+use SL::DB::Part;
+
use Data::Dumper;
require "bin/mozilla/common.pl";
# $locale->text('used')
# $locale->text('return_material')
# $locale->text('release_material')
+# $locale->text('assembled')
# --------------------------------------------------------------------
# Transfer
show_no_warehouses_error() if (!scalar @{ $form->{WAREHOUSES} });
my $units = AM->retrieve_units(\%myconfig, $form);
+
+ my $part = 0;
+ if ( $form->{parts_id} ) {
+ $part = SL::DB::Part->new();
+ $part->id($form->{parts_id});
+ $part->load();
+ }
+
# der zweite Parameter von unit_select_data gibt den default-Namen (selected) vor
- $form->{UNITS} = AM->unit_select_data($units, $form->{unit}, 0, $form->{unit});
+ $form->{UNITS} = AM->unit_select_data($units, $form->{unit}, 0, $part ? $part->unit : 0);
if (scalar @{ $form->{WAREHOUSES} }) {
$form->{warehouse_id} ||= $form->{WAREHOUSES}->[0]->{id};
my $content;
- $form->{jsscript} = 1;
-
if ($form->{trans_type} eq 'removal') {
$form->{nextsub} = "removal_parts_selection";
$form->{title} = $locale->text('Removal from Warehouse');
}
$transfer->{comment} = $form->{comment};
+ $transfer->{change_default_bin} = $form->{change_default_bin};
push @transfers, $transfer;
if (!scalar @transfers) {
$form->show_generic_information($locale->text('Nothing has been selected for transfer.'));
- ::end_of_request();
+ $::dispatcher->end_request;
}
WH->transfer(@transfers);
if (!scalar @{ $parts }) {
new_item(action => "transfer_stock_update_part");
} elsif (scalar @{ $parts } == 1) {
- @{$form}{qw(parts_id partnumber description ean)} = @{$parts->[0]}{qw(id partnumber description ean)};
+ @{$form}{qw(parts_id partnumber description ean warehouse_id bin_id)} = @{$parts->[0]}{qw(id partnumber description ean warehouse_id bin_id)};
transfer_stock_get_partunit();
transfer_warehouse_selection();
my $form = $main::form;
- @{$form}{qw(parts_id partnumber description ean)} = @{$part}{qw(id partnumber description ean)};
+ @{$form}{qw(parts_id partnumber description ean warehouse_id bin_id)} = @{$part}{qw(id partnumber description ean warehouse_id bin_id)};
transfer_stock_get_partunit();
transfer_warehouse_selection();
$form->error($locale->text('The warehouse or the bin is missing.'));
}
- if (!$::lx_office_conf{features}->{show_best_before}) {
+ if (!$::instance_conf->get_show_bestbefore) {
$form->{bestbefore} = '';
}
# Anm. jb 18.3. vielleicht auch nur meine unwissenheit in perl-datenstrukturen
my %TRANSFER = (
'transfer_type' => 'assembly',
- 'login' => $form->{login},
+ 'login' => $::myconfig{login},
'dst_warehouse_id' => $form->{warehouse_id},
'dst_bin_id' => $form->{bin_id},
'chargenumber' => $form->{chargenumber},
if (!scalar @transfers) {
$form->show_generic_information($locale->text('Nothing has been selected for removal.'));
- ::end_of_request();
+ $::dispatcher->end_request;
}
WH->transfer(@transfers);
show_no_warehouses_error() if (!scalar @{ $form->{WAREHOUSES} });
- $form->{jsscript} = 1;
-
$form->header();
print $form->parse_html_template("wh/journal_filter", { "UNITS" => AM->unit_select_data(AM->retrieve_units(\%myconfig, $form)) });
$form->{title} = $locale->text("WHJournal");
$form->{sort} ||= 'date';
+ $form->{report_generator_output_format} = 'HTML' if !$form->{report_generator_output_format};
+
my %filter;
my @columns = qw(trans_id date warehouse_from bin_from warehouse_to bin_to partnumber partdescription chargenumber bestbefore trans_type comment qty employee oe_id projectnumber);
'chargenumber' => { 'text' => $locale->text('Charge Number'), },
'bestbefore' => { 'text' => $locale->text('Best Before'), },
'qty' => { 'text' => $locale->text('Qty'), },
+ 'unit' => { 'text' => $locale->text('Part Unit'), },
+ 'partunit' => { 'text' => $locale->text('Unit'), },
'employee' => { 'text' => $locale->text('Employee'), },
'projectnumber' => { 'text' => $locale->text('Project Number'), },
'oe_id' => { 'text' => $locale->text('Document'), },
);
my $href = build_std_url('action=generate_journal', grep { $form->{$_} } @hidden_variables);
- map { $column_defs{$_}->{link} = $href . "&sort=${_}&order=" . Q($_ eq $form->{sort} ? 1 - $form->{order} : $form->{order}) } @columns;
+ my $page = $::form->{page} || 1;
+ map { $column_defs{$_}->{link} = $href ."&page=".$page. "&sort=${_}&order=" . Q($_ eq $form->{sort} ? 1 - $form->{order} : $form->{order}) } @columns;
my %column_alignment = map { $_ => 'right' } qw(qty);
'purchase_invoice' => { script => 'ir', title => $locale->text('Purchase Invoice') },
);
+ my $allrows = 0;
+ $allrows = 1 if $form->{report_generator_output_format} ne 'HTML' ;
+
+ # manual paginating
+ my $pages = {};
+ $pages->{per_page} = $::form->{per_page} || 15;
+ my $first_nr = ($page - 1) * $pages->{per_page};
+ my $last_nr = $first_nr + $pages->{per_page};
+ my $idx = 0;
+
foreach my $entry (@contents) {
$entry->{qty} = $form->format_amount_units('amount' => $entry->{qty},
'part_unit' => $entry->{partunit},
}
}
- $report->add_data($row);
+ if ( $allrows || ($idx >= $first_nr && $idx < $last_nr )) {
+ $report->add_data($row);
+ }
+ $idx++;
}
+ if ( ! $allrows ) {
+ $pages->{max} = SL::DB::Helper::Paginated::ceil($idx, $pages->{per_page}) || 1;
+ $pages->{page} = $page < 1 ? 1: $page > $pages->{max} ? $pages->{max}: $page;
+ $pages->{common} = [ grep { $_->{visible} } @{ SL::DB::Helper::Paginated::make_common_pages($pages->{page}, $pages->{max}) } ];
+
+ $report->set_options('raw_bottom_info_text' => $form->parse_html_template('common/paginate',
+ { 'pages' => $pages , 'base_url' => $href}) );
+ }
$report->generate_with_headers();
$main::lxdebug->leave_sub();
show_no_warehouses_error() if (!scalar @{ $form->{WAREHOUSES} });
- $form->{jsscript} = 1;
-
-# $form->{fokus} = "partnumber";
$form->{title} = $locale->text("Report about warehouse contents");
$form->header();
$form->{title} = $locale->text("Report about warehouse contents");
$form->{sort} ||= 'partnumber';
+ $form->{sort} ||= 'partunit';
my $sort_col = $form->{sort};
my %filter;
my @columns = qw(warehousedescription bindescription partnumber partdescription chargenumber bestbefore qty stock_value);
# filter stuff
- map { $filter{$_} = $form->{$_} if ($form->{$_}) } qw(warehouse_id bin_id partnumber description chargenumber bestbefore date include_invalid_warehouses);
+ map { $filter{$_} = $form->{$_} if ($form->{$_}) } qw(warehouse_id bin_id partstypes_id partnumber description chargenumber bestbefore date include_invalid_warehouses);
+
+ # show filter stuff also in report
+ my @options;
+ # dispatch all options
+ my $dispatch_options = {
+ warehouse_id => sub { push @options, $locale->text('Warehouse') . " : " .
+ SL::DB::Manager::Warehouse->find_by(id => $form->{warehouse_id})->description},
+ bin_id => sub { push @options, $locale->text('Bin') . " : " .
+ SL::DB::Manager::Bin->find_by(id => $form->{bin_id})->description},
+ partnumber => sub { push @options, $locale->text('Partnumber') . " : $form->{partnumber}"},
+ description => sub { push @options, $locale->text('Description') . " : $form->{description}"},
+ chargenumber => sub { push @options, $locale->text('Charge Number') . " : $form->{chargenumber}"},
+ bestbefore => sub { push @options, $locale->text('Best Before') . " : $form->{bestbefore}"},
+ date => sub { push @options, $locale->text('Date') . " : $form->{date}"},
+ include_invalid_warehouses => sub { push @options, $locale->text('Include invalid warehouses ')},
+ };
+ foreach (keys %filter) {
+ $dispatch_options->{$_}->() if $dispatch_options->{$_};
+ }
+ # / end show filter stuff also in report
$filter{qty_op} = WH->convert_qty_op($form->{qty_op});
if ($filter{qty_op}) {
$form->{subtotal} = '' if (!first { $_ eq $sort_col } qw(partnumber partdescription));
+ $form->{report_generator_output_format} = 'HTML' if !$form->{report_generator_output_format};
my $report = SL::ReportGenerator->new(\%myconfig, $form);
my @hidden_variables = map { "l_${_}" } @columns;
- push @hidden_variables, qw(warehouse_id bin_id partnumber description chargenumber bestbefore qty_op qty qty_unit l_warehousedescription l_bindescription);
- push @hidden_variables, qw(include_empty_bins subtotal include_invalid_warehouses);
+ push @hidden_variables, qw(warehouse_id bin_id partnumber partstypes_id description chargenumber bestbefore qty_op qty qty_unit partunit l_warehousedescription l_bindescription);
+ push @hidden_variables, qw(include_empty_bins subtotal include_invalid_warehouses date);
my %column_defs = (
'warehousedescription' => { 'text' => $locale->text('Warehouse'), },
'chargenumber' => { 'text' => $locale->text('Charge Number'), },
'bestbefore' => { 'text' => $locale->text('Best Before'), },
'qty' => { 'text' => $locale->text('Qty'), },
+ 'partunit' => { 'text' => $locale->text('Unit'), },
'stock_value' => { 'text' => $locale->text('Stock value'), },
);
my $href = build_std_url('action=generate_report', grep { $form->{$_} } @hidden_variables);
- map { $column_defs{$_}->{link} = $href . "&sort=${_}&order=" . Q($_ eq $sort_col ? 1 - $form->{order} : $form->{order}) } @columns;
+ my $page = $::form->{page} || 1;
+ map { $column_defs{$_}->{link} = $href . "&page=".$page."&sort=${_}&order=" . Q($_ eq $sort_col ? 1 - $form->{order} : $form->{order}) } @columns;
my %column_alignment = map { $_ => 'right' } qw(qty stock_value);
$report->set_sort_indicator($sort_col, $form->{order});
- $report->set_options('output_format' => 'HTML',
+ $report->set_options('top_info_text' => join("\n", @options),
+ 'output_format' => 'HTML',
'title' => $form->{title},
'attachment_basename' => strftime($locale->text('warehouse_report_list') . '_%Y%m%d', localtime time));
$report->set_options_from_form();
my $total_stock_value = 0;
+ my $allrows = 0;
+ $allrows = 1 if $form->{report_generator_output_format} ne 'HTML' ;
+
+ # manual paginating
+ my $pages = {};
+ $pages->{per_page} = $::form->{per_page} || 20;
+ my $first_nr = ($page - 1) * $pages->{per_page};
+ my $last_nr = $first_nr + $pages->{per_page};
+
foreach my $entry (@contents) {
map { $subtotals{$_} += $entry->{$_} } @subtotals_columns;
$total_stock_value += $entry->{stock_value} * 1;
-
- $entry->{qty} = $form->format_amount_units('amount' => $entry->{qty},
- 'part_unit' => $entry->{partunit},
- 'conv_units' => 'convertible');
+ $entry->{qty} = $form->format_amount(\%myconfig, $entry->{qty});
+# $entry->{qty} = $form->format_amount_units('amount' => $entry->{qty},
+# 'part_unit' => $entry->{partunit},
+# 'conv_units' => 'convertible');
$entry->{stock_value} = $form->format_amount(\%myconfig, $entry->{stock_value} * 1, 2);
my $row_set = [ { map { $_ => { 'data' => $entry->{$_}, 'align' => $column_alignment{$_} } } @columns } ];
|| ($entry->{$sort_col} ne $contents[$idx + 1]->{$sort_col}))) {
my $row = { map { $_ => { 'data' => '', 'class' => 'listsubtotal', 'align' => $column_alignment{$_}, } } @columns };
- $row->{qty}->{data} = $form->format_amount_units('amount' => $subtotals{qty} * 1,
- 'part_unit' => $entry->{partunit},
- 'conv_units' => 'convertible');
+ $row->{qty}->{data} = $form->format_amount(\%myconfig, $subtotals{qty});
+# $row->{qty}->{data} = $form->format_amount_units('amount' => $subtotals{qty} * 1,
+# 'part_unit' => $entry->{partunit},
+# 'conv_units' => 'convertible');
$row->{stock_value}->{data} = $form->format_amount(\%myconfig, $subtotals{stock_value} * 1, 2);
%subtotals = map { $_ => 0 } @subtotals_columns;
push @{ $row_set }, $row;
}
- $report->add_data($row_set);
-
+ if ( $allrows || ($idx >= $first_nr && $idx < $last_nr )) {
+ $report->add_data($row_set);
+ }
$idx++;
}
my $msg = $locale->text('No warehouse has been created yet or the quantity of the bins is not configured yet.') . ' ';
- if ($main::auth->check_right($form->{login}, 'config')) {
+ if ($main::auth->check_right($::myconfig{login}, 'config')) {
$msg .= $locale->text('You can create warehouses and bins via the menu "System -> Warehouses".');
} else {
$msg .= $locale->text('Please ask your administrator to create warehouses and bins.');