use SL::DB::MetaSetup::Order;
use SL::DB::Manager::Order;
+use SL::DB::Helper::AttrHTML;
+use SL::DB::Helper::AttrSorted;
use SL::DB::Helper::FlattenToForm;
use SL::DB::Helper::LinkedRecords;
use SL::DB::Helper::PriceTaxCalculator;
__PACKAGE__->meta->initialize;
+__PACKAGE__->attr_html('notes');
+__PACKAGE__->attr_sorted('items');
+
__PACKAGE__->before_save('_before_save_set_ord_quo_number');
# hooks
sub items { goto &orderitems; }
sub add_items { goto &add_orderitems; }
-
-sub items_sorted {
- my ($self) = @_;
-
- return [ sort {$a->id <=> $b->id } @{ $self->items } ];
-}
+sub record_number { goto &number; }
sub type {
my $self = shift;
die 'invalid type';
}
+sub displayable_name {
+ join ' ', grep $_, map $_[0]->$_, qw(displayable_type record_number);
+};
sub is_sales {
croak 'not an accessor' if @_ > 1;
$delivery_order->save;
$custom_shipto->save if $custom_shipto;
$self->link_to_record($delivery_order);
+ # TODO extend link_to_record for items, otherwise long-term no d.r.y.
+ foreach my $item (@{ $delivery_order->items }) {
+ foreach (qw(orderitems)) { # expand if needed (delivery_order_items)
+ if ($item->{"converted_from_${_}_id"}) {
+ die unless $item->{id};
+ RecordLinks->create_links('mode' => 'ids',
+ 'from_table' => $_,
+ 'from_ids' => $item->{"converted_from_${_}_id"},
+ 'to_table' => 'delivery_order_items',
+ 'to_id' => $item->{id},
+ ) || die;
+ delete $item->{"converted_from_${_}_id"};
+ }
+ }
+ }
+
$self->update_attributes(delivered => 1);
1;
})) {
return $self->${ \ $number_method{$self->type} }(@_);
}
+sub customervendor {
+ $_[0]->is_sales ? $_[0]->customer : $_[0]->vendor;
+}
+
sub date {
goto &transdate;
}