Projekt

Allgemein

Profil

Herunterladen (2,1 KB) Statistiken
| Zweig: | Markierung: | Revision:
82515b2d Sven Schöling
package SL::DB::OrderItem;

use strict;

ba0fb69c Sven Schöling
use List::Util qw(sum);

82515b2d Sven Schöling
use SL::DB::MetaSetup::OrderItem;
ef2b5e94 Moritz Bunkus
use SL::DB::Manager::OrderItem;
3b7bda40 Jan Büren
use SL::DB::DeliveryOrderItemsStock;
3954d14b Bernd Bleßmann
use SL::DB::Helper::ActsAsList;
ca808f20 Geoffrey Richardson
use SL::DB::Helper::LinkedRecords;
1904d8c6 Sven Schöling
use SL::DB::Helper::RecordItem;
e1bf173b Sven Schöling
use SL::DB::Helper::CustomVariables (
sub_module => 'orderitems',
cvars_alias => 1,
overloads => {
5a7ae14c Sven Schöling
parts_id => {
class => 'SL::DB::Part',
module => 'IC',
}
e1bf173b Sven Schöling
},
);
82515b2d Sven Schöling
__PACKAGE__->meta->initialize;

3954d14b Bernd Bleßmann
__PACKAGE__->configure_acts_as_list(group_by => [qw(trans_id)]);

82515b2d Sven Schöling
sub is_price_update_available {
my $self = shift;
return $self->origprice > $self->part->sellprice;
}

ba0fb69c Sven Schöling
sub shipped_qty {
my ($self) = @_;

my $d_orders = $self->order->linked_records(direction => 'to', to => 'SL::DB::DeliveryOrder');
my @doi = grep { $_->parts_id == $self->parts_id } map { $_->orderitems } @$d_orders;

26dcea15 Sven Schöling
require SL::AM;
ba0fb69c Sven Schöling
return sum(map { AM->convert_unit($_->unit => $self->unit) * $_->qty } @doi);
}

073ee541 Geoffrey Richardson
sub record { goto &order }

82515b2d Sven Schöling
1;
7317b8d9 Jan Büren
31347b09 Jan Büren
__END__

=pod

=head1 NAME

SL::DB::OrderItems: Rose model for orderitems

=head1 FUNCTIONS

=over 4

=item C<shipped_qty>

returns the number of orderitems which are already linked to Delivery Orders.
The linked key is parts_id and not orderitems (id) -> delivery_order_items (id).
Therefore this function is not safe for identical parts_id.
Sample call:
C<$::form-E<gt>format_amount(\%::myconfig, $_[0]-E<gt>shipped_qty);>

=back

=head1 TODO

Older versions of OrderItem.pm had more functions which where used for calculating the
qty for the different states of the Delivery Order.
For example to get the qty in already marked as delivered Delivery Orders:

C<delivered_qty>

return $self-E<gt>_delivered_qty;

sub _delivered_qty {
(..)
my @d_orders_delivered = grep { $_-E<gt>delivered } @$d_orders;
my @doi_delivered = grep { $_-E<gt>parts_id == $self-E<gt>parts_id } map { $_-E<gt>orderitems } @d_orders_delivered;
}

In general the function C<shipped_qty> and all (project) related functions should be marked deprecate,
because of the better linked item to item data in the record_links table.