X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=SL%2FController%2FInventory.pm;h=ceebf68266aefd288ca53e36a72e302b3bbf8cc9;hb=c815c7236e442a9117808af8a3cc8445f5a35203;hp=a0764abfdd6d48f8ab718b0254c06fa213af74ea;hpb=fa415e21494863deb879f7ec8e69c65de3b04468;p=kivitendo-erp.git diff --git a/SL/Controller/Inventory.pm b/SL/Controller/Inventory.pm index a0764abfd..ceebf6826 100644 --- a/SL/Controller/Inventory.pm +++ b/SL/Controller/Inventory.pm @@ -15,6 +15,8 @@ use SL::Presenter; use SL::DBUtils; use SL::Helper::Flash; +use English qw(-no_match_vars); + use Rose::Object::MakeMethods::Generic ( 'scalar --get_set_init' => [ qw(warehouses units p) ], 'scalar' => [ qw(warehouse bin unit part) ], @@ -43,34 +45,49 @@ sub action_stock_in { sub action_stock { my ($self) = @_; + my $transfer_error; my $qty = $::form->parse_amount(\%::myconfig, $::form->{qty}); if (!$qty) { - flash_later('error', t8('Cannot stock without amount')); + $transfer_error = t8('Cannot stock without amount'); } elsif ($qty < 0) { - flash_later('error', t8('Cannot stock negative amounts')); + $transfer_error = t8('Cannot stock negative amounts'); } else { # do stock - WH->transfer({ - parts => $self->part, - dst_bin => $self->bin, - dst_wh => $self->warehouse, - qty => $qty, - unit => $self->unit, - transfer_type => 'stock', - chargenumber => $::form->{chargenumber}, - bestbefore => $::form->{bestbefore}, - ean => $::form->{ean}, - comment => $::form->{comment}, + $::form->throw_on_error(sub { + eval { + WH->transfer({ + parts => $self->part, + dst_bin => $self->bin, + dst_wh => $self->warehouse, + qty => $qty, + unit => $self->unit, + transfer_type => 'stock', + chargenumber => $::form->{chargenumber}, + bestbefore => $::form->{bestbefore}, + ean => $::form->{ean}, + comment => $::form->{comment}, + }); + 1; + } or do { $transfer_error = $EVAL_ERROR->getMessage; } }); - 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; + if (!$transfer_error) { + 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; + } + + flash_later('info', t8('Transfer successful')); } + } - flash_later('info', t8('Transfer successful')); + my %additional_redirect_params = (); + if ($transfer_error) { + flash_later('error', $transfer_error); + $additional_redirect_params{$_} = $::form->{$_} for qw(qty chargenumber bestbefore ean comment); + $additional_redirect_params{qty} = $qty; } # redirect @@ -80,6 +97,7 @@ sub action_stock { bin_id => $self->bin->id, warehouse_id => $self->warehouse->id, unit_id => $self->unit->id, + %additional_redirect_params, ); }