projects
/
kivitendo-erp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ClientJS: Unterstützung für Browser-Redirects ("$js->redirect_to")
[kivitendo-erp.git]
/
SL
/
WH.pm
diff --git
a/SL/WH.pm
b/SL/WH.pm
index
833b573
..
28e836e
100644
(file)
--- a/
SL/WH.pm
+++ b/
SL/WH.pm
@@
-59,7
+59,6
@@
sub transfer {
my $employee = SL::DB::Manager::Employee->find_by(login => $::form->{login});
my ($now) = selectrow_query($::form, $::form->get_standard_dbh, qq|SELECT current_date|);
my @directions = (undef, qw(out in transfer));
my $employee = SL::DB::Manager::Employee->find_by(login => $::form->{login});
my ($now) = selectrow_query($::form, $::form->get_standard_dbh, qq|SELECT current_date|);
my @directions = (undef, qw(out in transfer));
- my $db = SL::DB->create(undef, 'LXOFFICE'); # get handle for transaction
my $objectify = sub {
my ($transfer, $field, $class, @find_by) = @_;
my $objectify = sub {
my ($transfer, $field, $class, @find_by) = @_;
@@
-74,14
+73,15
@@
sub transfer {
return;
};
return;
};
- $db->begin_work;
- eval {
+ my @trans_ids;
- for my $transfer (@args) {
+ my $db = SL::DB::Inventory->new->db;
+ $db->do_transaction(sub{
+ while (my $transfer = shift @args) {
my ($trans_id) = selectrow_query($::form, $::form->get_standard_dbh, qq|SELECT nextval('id')|);
my $part = $objectify->($transfer, 'parts', 'SL::DB::Part');
my ($trans_id) = selectrow_query($::form, $::form->get_standard_dbh, qq|SELECT nextval('id')|);
my $part = $objectify->($transfer, 'parts', 'SL::DB::Part');
- my $unit = $objectify->($transfer, 'unit', 'SL::DB::Unit',
unit
=> $transfer->{unit});
+ my $unit = $objectify->($transfer, 'unit', 'SL::DB::Unit',
name
=> $transfer->{unit});
my $qty = $transfer->{qty};
my $src_bin = $objectify->($transfer, 'src_bin', 'SL::DB::Bin');
my $dst_bin = $objectify->($transfer, 'dst_bin', 'SL::DB::Bin');
my $qty = $transfer->{qty};
my $src_bin = $objectify->($transfer, 'src_bin', 'SL::DB::Bin');
my $dst_bin = $objectify->($transfer, 'dst_bin', 'SL::DB::Bin');
@@
-111,10
+111,11
@@
sub transfer {
);
if ($unit) {
);
if ($unit) {
- $qty *= $unit->factor;
- $qty /= $part->unit_obj->factor || 1 if $part->unit;
+ $qty = $unit->convert_to($qty, $part->unit_obj);
}
}
+ $params{chargenumber} ||= '';
+
if ($direction & 1) {
SL::DB::Inventory->new(
%params,
if ($direction & 1) {
SL::DB::Inventory->new(
%params,
@@
-132,17
+133,16
@@
sub transfer {
qty => $qty,
)->save;
}
qty => $qty,
)->save;
}
- }
-
- $db->commit;
-
1
;
- } or do {
- $db->rollback;
- die $@; # rethrow
+
push @trans_ids, $trans_id
;
+ }
+ }) or do {
+ $::form->error("Warehouse transfer error: " . join("\n", (split(/\n/, $db->error))[0..2]));
};
$::lxdebug->leave_sub;
};
$::lxdebug->leave_sub;
+
+ return @trans_ids;
}
sub transfer_assembly {
}
sub transfer_assembly {
@@
-621,6
+621,14
@@
sub get_warehouse_report {
push @filter_vars, '%' . $filter{ean} . '%';
}
push @filter_vars, '%' . $filter{ean} . '%';
}
+ if ($filter{date}) {
+ push @filter_ary, "i.itime <= ?";
+ push @filter_vars, $filter{date};
+ }
+ if (!$filter{include_invalid_warehouses}){
+ push @filter_ary, "NOT (w.invalid)";
+ }
+
# prepare qty comparison for later filtering
my ($f_qty_op, $f_qty, $f_qty_base_unit);
# prepare qty comparison for later filtering
my ($f_qty_op, $f_qty, $f_qty_base_unit);
@@
-1014,6
+1022,8
@@
An expiration date. Note that this is not by default used by C<warehouse_report>
=head1 BUGS
=head1 BUGS
+None yet.
+
=head1 AUTHOR
=cut
=head1 AUTHOR
=cut