Projekt

Allgemein

Profil

Herunterladen (1,99 KB) Statistiken
| Zweig: | Markierung: | Revision:
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
(82-82/157)