X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/kivitendo-erp.git/blobdiff_plain/56b91fb4030432fde4159c11a0ca97a7571535f3..ada964d139eb652502bbdec96adf8634e49d8872:/SL/DB/Order.pm diff --git a/SL/DB/Order.pm b/SL/DB/Order.pm index f4ca003a2..194431dcd 100644 --- a/SL/DB/Order.pm +++ b/SL/DB/Order.pm @@ -9,7 +9,6 @@ use List::Util qw(max); use SL::DB::MetaSetup::Order; use SL::DB::Manager::Order; -use SL::DB::Invoice; use SL::DB::Helper::FlattenToForm; use SL::DB::Helper::LinkedRecords; use SL::DB::Helper::PriceTaxCalculator; @@ -35,6 +34,23 @@ __PACKAGE__->meta->add_relationship( __PACKAGE__->meta->initialize; +__PACKAGE__->before_save('_before_save_set_ord_quo_number'); + +# hooks + +sub _before_save_set_ord_quo_number { + my ($self) = @_; + + # ordnumber is 'NOT NULL'. Therefore make sure it's always set to at + # least an empty string, even if we're saving a quotation. + $self->ordnumber('') if !$self->ordnumber; + + my $field = $self->quotation ? 'quonumber' : 'ordnumber'; + $self->create_trans_number if !$self->$field; + + return 1; +} + # methods sub items { goto &orderitems; } @@ -42,8 +58,7 @@ sub items { goto &orderitems; } sub items_sorted { my ($self) = @_; - my @sorted = sort {$a->id <=> $b->id } @{ $self->items }; - return wantarray ? @sorted : \@sorted; + return [ sort {$a->id <=> $b->id } @{ $self->items } ]; } sub type { @@ -85,6 +100,7 @@ sub invoices { if ($self->quotation) { return []; } else { + require SL::DB::Invoice; return SL::DB::Manager::Invoice->get_all( query => [ ordnumber => $self->ordnumber,