Fremdschlüssel für Bearbeiter in gl einführen
[kivitendo-erp.git] / SL / DB / Order.pm
index ae5c504..194431d 100644 (file)
@@ -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;
@@ -23,7 +22,7 @@ __PACKAGE__->meta->add_relationship(
     class        => 'SL::DB::OrderItem',
     column_map   => { id => 'trans_id' },
     manager_args => {
-      with_objects => [ 'parts' ]
+      with_objects => [ 'part' ]
     }
   },
   periodic_invoices_config => {
@@ -35,10 +34,32 @@ __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; }
-sub payment_terms { goto &payment;    }
+sub items { goto &orderitems; }
+
+sub items_sorted {
+  my ($self) = @_;
+
+  return [ sort {$a->id <=> $b->id } @{ $self->items } ];
+}
 
 sub type {
   my $self = shift;
@@ -79,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,
@@ -133,6 +155,10 @@ sub number {
   return $self->${ \ $number_method{$self->type} }(@_);
 }
 
+sub date {
+  goto &transdate;
+}
+
 1;
 
 __END__