projects
/
kivitendo-erp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ShippedQty: delivered korrekt setzen
[kivitendo-erp.git]
/
SL
/
DB
/
Part.pm
diff --git
a/SL/DB/Part.pm
b/SL/DB/Part.pm
index
f1a7125
..
1ee4f26
100644
(file)
--- a/
SL/DB/Part.pm
+++ b/
SL/DB/Part.pm
@@
-4,6
+4,7
@@
use strict;
use Carp;
use List::MoreUtils qw(any uniq);
use Carp;
use List::MoreUtils qw(any uniq);
+use List::Util qw(sum);
use Rose::DB::Object::Helpers qw(as_tree);
use SL::Locale::String qw(t8);
use Rose::DB::Object::Helpers qw(as_tree);
use SL::Locale::String qw(t8);
@@
-26,7
+27,6
@@
use SL::DB::Helper::DisplayableNamePreferences (
{name => 'ean', title => t8('EAN') }, ],
);
{name => 'ean', title => t8('EAN') }, ],
);
-use List::Util qw(sum);
__PACKAGE__->meta->add_relationships(
assemblies => {
__PACKAGE__->meta->add_relationships(
assemblies => {
@@
-61,6
+61,7
@@
__PACKAGE__->meta->add_relationships(
type => 'one to many',
class => 'SL::DB::AssortmentItem',
column_map => { id => 'assortment_id' },
type => 'one to many',
class => 'SL::DB::AssortmentItem',
column_map => { id => 'assortment_id' },
+ manager_args => { sort_by => 'position' },
},
history_entries => {
type => 'one to many',
},
history_entries => {
type => 'one to many',
@@
-75,6
+76,12
@@
__PACKAGE__->meta->add_relationships(
column_map => { id => 'part_id' },
manager_args => { with_objects => [ 'shop' ] },
},
column_map => { id => 'part_id' },
manager_args => { with_objects => [ 'shop' ] },
},
+ last_price_update => {
+ type => 'one to one',
+ class => 'SL::DB::PartsPriceHistory',
+ column_map => { id => 'part_id' },
+ manager_args => { sort_by => 'valid_from DESC', limit => 1 },
+ },
);
__PACKAGE__->meta->initialize;
);
__PACKAGE__->meta->initialize;
@@
-84,6
+91,7
@@
__PACKAGE__->attr_sorted({ unsorted => 'makemodels', position => 'sortorder'
__PACKAGE__->attr_sorted({ unsorted => 'customerprices', position => 'sortorder' });
__PACKAGE__->before_save('_before_save_set_partnumber');
__PACKAGE__->attr_sorted({ unsorted => 'customerprices', position => 'sortorder' });
__PACKAGE__->before_save('_before_save_set_partnumber');
+__PACKAGE__->before_save('_before_save_set_assembly_weight');
sub _before_save_set_partnumber {
my ($self) = @_;
sub _before_save_set_partnumber {
my ($self) = @_;
@@
-92,6
+100,16
@@
sub _before_save_set_partnumber {
return 1;
}
return 1;
}
+sub _before_save_set_assembly_weight {
+ my ($self) = @_;
+
+ if ( $self->part_type eq 'assembly' ) {
+ my $weight_sum = $self->items_weight_sum;
+ $self->weight($self->items_weight_sum) if $weight_sum;
+ }
+ return 1;
+}
+
sub items {
my ($self) = @_;
sub items {
my ($self) = @_;
@@
-418,7
+436,7
@@
select unnest(ids)
SQL
my $objs = SL::DB::Manager::Inventory->get_all(
SQL
my $objs = SL::DB::Manager::Inventory->get_all(
- query => [ id => [ \"$query" ] ],
+ query => [ id => [ \"$query" ] ],
# make emacs happy "
with_objects => [ 'parts', 'trans_type', 'bin', 'bin.warehouse' ], # prevent lazy loading in template
sort_by => 'itime DESC',
);
with_objects => [ 'parts', 'trans_type', 'bin', 'bin.warehouse' ], # prevent lazy loading in template
sort_by => 'itime DESC',
);
@@
-512,6
+530,14
@@
sub items_lastcost_sum {
sum map { $_->linetotal_lastcost } @{$self->items};
};
sum map { $_->linetotal_lastcost } @{$self->items};
};
+sub items_weight_sum {
+ my ($self) = @_;
+
+ return unless $self->is_assembly;
+ return unless $self->items;
+ sum map { $_->linetotal_weight} @{$self->items};
+};
+
1;
__END__
1;
__END__