X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FOrder.pm;h=fdaa1e8bf2f69ce65546e01ee6c71c5fcbd8a0b5;hb=332b5ec73395d63e194dd5719c77053cb3d1acb5;hp=f1cfba7f143739bf077f3674be0c0cb09b05b14a;hpb=5c8a0b36440e012cd0a54e6b68eb3d1411243b1a;p=kivitendo-erp.git diff --git a/SL/DB/Order.pm b/SL/DB/Order.pm index f1cfba7f1..fdaa1e8bf 100644 --- a/SL/DB/Order.pm +++ b/SL/DB/Order.pm @@ -47,6 +47,16 @@ __PACKAGE__->meta->add_relationship( class => 'SL::DB::Exchangerate', column_map => { currency_id => 'currency_id', transdate => 'transdate' }, }, + phone_notes => { + type => 'one to many', + class => 'SL::DB::Note', + column_map => { id => 'trans_id' }, + query_args => [ trans_module => 'oe' ], + manager_args => { + with_objects => [ 'employee' ], + sort_by => 'notes.itime', + } + }, ); SL::DB::Helper::Attr::make(__PACKAGE__, daily_exchangerate => 'numeric'); @@ -238,8 +248,23 @@ sub convert_to_invoice { my $invoice; if (!$self->db->with_transaction(sub { require SL::DB::Invoice; - $invoice = SL::DB::Invoice->new_from($self)->post(%params) || die; + $invoice = SL::DB::Invoice->new_from($self, %params)->post || die; $self->link_to_record($invoice); + # TODO extend link_to_record for items, otherwise long-term no d.r.y. + foreach my $item (@{ $invoice->items }) { + foreach (qw(orderitems)) { + if ($item->{"converted_from_${_}_id"}) { + die unless $item->{id}; + RecordLinks->create_links('mode' => 'ids', + 'from_table' => $_, + 'from_ids' => $item->{"converted_from_${_}_id"}, + 'to_table' => 'invoice', + 'to_id' => $item->{id}, + ) || die; + delete $item->{"converted_from_${_}_id"}; + } + } + } $self->update_attributes(closed => 1); 1; })) { @@ -330,7 +355,7 @@ sub new_from { my %args = ( map({ ( $_ => $source->$_ ) } qw(amount cp_id currency_id cusordnumber customer_id delivery_customer_id delivery_term_id delivery_vendor_id department_id exchangerate globalproject_id intnotes marge_percent marge_total language_id netamount notes ordnumber payment_id quonumber reqdate salesman_id shippingpoint shipvia taxincluded tax_point taxzone_id - transaction_description vendor_id + transaction_description vendor_id billing_address_id )), quotation => !!($destination_type =~ m{quotation$}), closed => 0, @@ -601,7 +626,7 @@ L. That invoice is posted, and C<$self> is linked to the new invoice via L. C<$self>'s C attribute is set to C, and C<$self> is saved. -The arguments in C<%params> are passed to L. +The arguments in C<%params> are passed to L. Returns the new invoice instance on success and C on failure. The whole process is run inside a transaction. On failure