kivitendo/SL/DB/Order.pm @ 60c0c579
82515b2d | Sven Schöling | package SL::DB::Order;
|
|
use strict;
|
|||
use SL::RecordLinks;
|
|||
use SL::DB::MetaSetup::Order;
|
|||
use SL::DB::Manager::Order;
|
|||
use SL::DB::Invoice;
|
|||
__PACKAGE__->meta->add_relationship(
|
|||
orderitems => {
|
|||
type => 'one to many',
|
|||
class => 'SL::DB::OrderItem',
|
|||
column_map => { id => 'trans_id' },
|
|||
manager_args => {
|
|||
with_objects => [ 'part' ]
|
|||
}
|
|||
}
|
|||
);
|
|||
__PACKAGE__->meta->initialize;
|
|||
# methods
|
|||
sub type {
|
|||
my $self = shift;
|
|||
return 'sales_order' if $self->customer_id && ! $self->quotation;
|
|||
return 'purchase_order' if $self->vendor_id && ! $self->quotation;
|
|||
return 'sales_quotation' if $self->customer_id && $self->quotation;
|
|||
return 'request_quotation' if $self->vendor_id && $self->quotation;
|
|||
return;
|
|||
}
|
|||
sub is_type {
|
|||
return shift->type eq shift;
|
|||
}
|
|||
sub invoices {
|
|||
my $self = shift;
|
|||
my %params = @_;
|
|||
if ($self->quotation) {
|
|||
return [];
|
|||
} else {
|
|||
return SL::DB::Manager::Invoice->get_all(
|
|||
query => [
|
|||
ordnumber => $self->ordnumber,
|
|||
@{ $params{query} || [] },
|
|||
]
|
|||
);
|
|||
}
|
|||
}
|
|||
sub abschlag_invoices {
|
|||
return shift()->invoices(query => [ abschlag => 1 ]);
|
|||
}
|
|||
sub end_invoice {
|
|||
return shift()->invoices(query => [ abschlag => 0 ]);
|
|||
}
|
|||
1;
|
|||
__END__
|
|||
=head1 NAME
|
|||
SL::DB::Order - Order Datenbank Objekt.
|
|||
=head1 FUNCTIONS
|
|||
=head2 type
|
|||
Returns one of the following string types:
|
|||
=over 4
|
|||
=item saes_order
|
|||
=item purchase_order
|
|||
=item sales_quotation
|
|||
=item request_quotation
|
|||
=back
|
|||
=head2 is_type TYPE
|
|||
Rreturns true if the order is of the given type.
|
|||
=head1 BUGS
|
|||
Nothing here yet.
|
|||
=head1 AUTHOR
|
|||
Sven Sch?ling <s.schoeling@linet-services.de>
|
|||
=cut
|