X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FInventory.pm;h=f3f29388d6925702950f9c2f090839e24b69b65b;hb=aa18b62a0d5ae5640e9061c44e10c19cfb3dbf9f;hp=4336c71173f0f545a55da44ce6572354eb6379e1;hpb=8bde65163db8c36ffa5e83bed7ee68ab859c106d;p=kivitendo-erp.git diff --git a/SL/Controller/Inventory.pm b/SL/Controller/Inventory.pm index 4336c7117..f3f29388d 100644 --- a/SL/Controller/Inventory.pm +++ b/SL/Controller/Inventory.pm @@ -28,6 +28,7 @@ __PACKAGE__->run_before('load_unit_from_form', only => [ qw(stock_in part_chan __PACKAGE__->run_before('load_wh_from_form', only => [ qw(stock_in warehouse_changed stock) ]); __PACKAGE__->run_before('load_bin_from_form', only => [ qw(stock_in stock) ]); __PACKAGE__->run_before('set_target_from_part', only => [ qw(part_changed) ]); +__PACKAGE__->run_before('mini_stock', only => [ qw(stock_in mini_stock) ]); __PACKAGE__->run_before('sanitize_target', only => [ qw(stock_in warehouse_changed part_changed) ]); __PACKAGE__->run_before('set_layout'); @@ -57,6 +58,7 @@ sub action_stock { }); if ($::form->{write_default_bin}) { + $self->part->load; # onhand is calculated in between. don't mess that up $self->part->bin($self->bin); $self->part->warehouse($self->warehouse); $self->part->save; @@ -70,6 +72,7 @@ sub action_stock { part_id => $self->part->id, bin_id => $self->bin->id, warehouse_id => $self->warehouse->id, + unit_id => $self->unit->id, ); } @@ -104,22 +107,11 @@ sub action_warehouse_changed { sub action_mini_stock { my ($self) = @_; - my $stock = $self->part->get_simple_stock; - my $stock_by_bin = { map { $_->{bin_id} => $_ } @$stock }; - my $stock_empty = ! grep { $_->{sum} * 1 } @$stock; - $self->js - ->html('#stock', $self->render('inventory/_stock', { output => 0 }, stock => $stock_by_bin, stock_empty => $stock_empty )) + ->html('#stock', $self->render('inventory/_stock', { output => 0 })) ->render($self); } -sub action_last_journal { - my ($self) = @_; - -# my $jounal = $self->journal; - -} - #================================================================ sub _check_auth { @@ -131,7 +123,7 @@ sub _check_warehouses { } sub init_warehouses { - SL::DB::Manager::Warehouse->get_all; + SL::DB::Manager::Warehouse->get_all(query => [ or => [ invalid => 0, invalid => undef ]]); } sub init_units { @@ -158,8 +150,8 @@ sub set_target_from_part { sub sanitize_target { my ($self) = @_; - $self->warehouse(SL::DB::Manager::Warehouse->get_first) if !$self->warehouse || !$self->warehouse->id; - $self->bin ($self->warehouse->bins->[0]) if !$self->bin || !$self->bin->id; + $self->warehouse($self->warehouses->[0]) if !$self->warehouse || !$self->warehouse->id; + $self->bin ($self->warehouse->bins->[0]) if !$self->bin || !$self->bin->id; } sub load_part_from_form { @@ -216,7 +208,7 @@ sub mini_journal { my @ids = selectall_array_query($::form, $::form->get_standard_dbh, $query); my $objs; - $obj = SL::DB::Manager::Inventory->get_all(query => [ trans_id => \@ids ]) if @ids; + $objs = SL::DB::Manager::Inventory->get_all(query => [ trans_id => \@ids ]) if @ids; # at most 2 of them belong to a transaction and the qty determins in or out. # sort them for display @@ -231,7 +223,15 @@ sub mini_journal { return \@sorted; } -sub show_no_warehouse_error { +sub mini_stock { + my ($self) = @_; + + my $stock = $self->part->get_simple_stock; + $self->{stock_by_bin} = { map { $_->{bin_id} => $_ } @$stock }; + $self->{stock_empty} = ! grep { $_->{sum} * 1 } @$stock; +} + +sub show_no_warehouses_error { my ($self) = @_; my $msg = t8('No warehouse has been created yet or the quantity of the bins is not configured yet.') . ' ';