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;
__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;
sub is_sales {
croak 'not an accessor' if @_ > 1;
- return shift->customer_id;
+ return !!shift->customer_id;
}
sub invoices {
if ($self->quotation) {
return [];
} else {
+ require SL::DB::Invoice;
return SL::DB::Manager::Invoice->get_all(
query => [
ordnumber => $self->ordnumber,
return $self->${ \ $number_method{$self->type} }(@_);
}
+sub date {
+ goto &transdate;
+}
+
1;
__END__