|
package SL::DB::OrderItem;
|
|
|
|
use strict;
|
|
|
|
use SL::DB::MetaSetup::OrderItem;
|
|
use SL::DB::Manager::OrderItem;
|
|
use SL::DB::Helper::ActsAsList;
|
|
use SL::DB::Helper::LinkedRecords;
|
|
use SL::DB::Helper::RecordItem;
|
|
use SL::DB::Helper::CustomVariables (
|
|
sub_module => 'orderitems',
|
|
cvars_alias => 1,
|
|
overloads => {
|
|
parts_id => {
|
|
class => 'SL::DB::Part',
|
|
module => 'IC',
|
|
}
|
|
},
|
|
);
|
|
use SL::Helper::ShippedQty;
|
|
use Rose::DB::Object::Helpers qw(as_tree strip);
|
|
|
|
__PACKAGE__->meta->initialize;
|
|
|
|
__PACKAGE__->configure_acts_as_list(group_by => [qw(trans_id)]);
|
|
|
|
sub is_price_update_available {
|
|
my $self = shift;
|
|
return $self->origprice > $self->part->sellprice;
|
|
}
|
|
|
|
sub shipped_qty {
|
|
my ($self, %params) = @_;
|
|
|
|
my $force = delete $params{force};
|
|
|
|
SL::Helper::ShippedQty->new(%params)->calculate($self)->write_to_objects if $force || !defined $self->{shipped_qty};
|
|
|
|
$self->{shipped_qty};
|
|
}
|
|
|
|
sub linked_delivery_order_items {
|
|
my ($self) = @_;
|
|
|
|
return $self->linked_records(direction => 'to', to => 'SL::DB::DeliveryOrderItem');
|
|
}
|
|
|
|
sub delivered_qty { goto &shipped_qty }
|
|
|
|
sub record { goto &order }
|
|
sub record_id { goto &trans_id }
|
|
|
|
1;
|
|
|
|
__END__
|
|
|
|
=pod
|
|
|
|
=head1 NAME
|
|
|
|
SL::DB::OrderItems: Rose model for orderitems
|
|
|
|
=head1 FUNCTIONS
|
|
|
|
=over 4
|
|
|
|
=item C<shipped_qty PARAMS>
|
|
|
|
Calculates the shipped qty for this orderitem (measured in the current unit)
|
|
and returns it.
|
|
|
|
Note that the shipped qty is expected not to change within the request and is
|
|
cached in C<shipped_qty> once calculated. If C<< force => 1 >> is passed, the
|
|
existibng cache is ignored.
|
|
|
|
Given parameters will be passed to L<SL::Helper::ShippedQty>, so you can force
|
|
the shipped/delivered distinction like this:
|
|
|
|
$_->shipped_qty(require_stock_out => 0);
|
|
|
|
Note however that calculating shipped_qty on individual Orderitems is generally
|
|
a bad idea. See L<SL::Helper::ShippedQty> for way to compute these all at once.
|
|
|
|
=item C<delivered_qty>
|
|
|
|
Alias for L</shipped_qty>.
|
|
|
|
=back
|
|
|
|
=head1 AUTHORS
|
|
|
|
G. Richardson E<lt>grichardson@kivitendo-premium.deE<gt>
|
|
|
|
=cut
|