X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FInvoice.pm;h=3ed6cd34e2d1845e8c0c03fbabd9cb0a154cef5d;hb=15f58ff3dfd79651a95535b53f864ea0e8cb6620;hp=7626793c2890fc8bbbc6857e49756c74c283562e;hpb=8b17f06f580736d3ebcb120581ad20efffe9a678;p=kivitendo-erp.git diff --git a/SL/DB/Invoice.pm b/SL/DB/Invoice.pm index 7626793c2..3ed6cd34e 100644 --- a/SL/DB/Invoice.pm +++ b/SL/DB/Invoice.pm @@ -9,15 +9,17 @@ use Carp; use List::Util qw(first); use Rose::DB::Object::Helpers (); - use SL::DB::MetaSetup::Invoice; use SL::DB::Manager::Invoice; +use SL::DB::Helper::Payment qw(:ALL); +use SL::DB::Helper::AttrHTML; use SL::DB::Helper::FlattenToForm; use SL::DB::Helper::LinkedRecords; use SL::DB::Helper::PriceTaxCalculator; use SL::DB::Helper::PriceUpdater; use SL::DB::Helper::TransNumberGenerator; use SL::Locale::String qw(t8); +use SL::DB::CustomVariable; __PACKAGE__->meta->add_relationship( invoiceitems => { @@ -45,10 +47,21 @@ __PACKAGE__->meta->add_relationship( column_map => { id => 'trans_id' }, query_args => [ module => 'AR' ], }, + transactions => { + type => 'one to many', + class => 'SL::DB::AccTransaction', + column_map => { id => 'trans_id' }, + manager_args => { + with_objects => [ 'chart' ], + sort_by => 'acc_trans_id ASC', + }, + }, ); __PACKAGE__->meta->initialize; +__PACKAGE__->attr_html('notes'); + __PACKAGE__->before_save('_before_save_set_invnumber'); # hooks @@ -184,17 +197,20 @@ sub new_from { $item_parents{$source_item_id} ||= $source_item->$item_parent_column; my $item_parent = $item_parents{$source_item_id}; - - SL::DB::InvoiceItem->new(map({ ( $_ => $source_item->$_ ) } - qw(parts_id description qty sellprice discount project_id serialnumber pricegroup_id transdate cusordnumber unit - base_qty longdescription lastcost price_factor_id), @item_columns), - deliverydate => $source_item->reqdate, - fxsellprice => $source_item->sellprice, - custom_variables => \@custom_variables, - ordnumber => ref($item_parent) eq 'SL::DB::Order' ? $item_parent->ordnumber : $source_item->ordnumber, - donumber => ref($item_parent) eq 'SL::DB::DeliveryOrder' ? $item_parent->donumber : $source_item->can('donumber') ? $source_item->donumber : '', - ); - + my $current_invoice_item = + SL::DB::InvoiceItem->new(map({ ( $_ => $source_item->$_ ) } + qw(parts_id description qty sellprice discount project_id serialnumber pricegroup_id transdate cusordnumber unit + base_qty longdescription lastcost price_factor_id active_discount_source active_price_source), @item_columns), + deliverydate => $source_item->reqdate, + fxsellprice => $source_item->sellprice, + custom_variables => \@custom_variables, + ordnumber => ref($item_parent) eq 'SL::DB::Order' ? $item_parent->ordnumber : $source_item->ordnumber, + donumber => ref($item_parent) eq 'SL::DB::DeliveryOrder' ? $item_parent->donumber : $source_item->can('donumber') ? $source_item->donumber : '', + ); + + $current_invoice_item->{"converted_from_orderitems_id"} = $_->{id} if ref($item_parent) eq 'SL::DB::Order'; + $current_invoice_item->{"converted_from_delivery_order_items_id"} = $_->{id} if ref($item_parent) eq 'SL::DB::DeliveryOrder'; + $current_invoice_item; } @{ $items }; @items = grep { $_->qty * 1 } @items if $params{skip_items_zero_qty}; @@ -351,13 +367,14 @@ sub customervendor { goto &customer; } -sub transactions { +sub link { my ($self) = @_; - return unless $self->id; + my $html; + $html = SL::Presenter->get->sales_invoice($self, display => 'inline') if $self->invoice; + $html = SL::Presenter->get->ar_transaction($self, display => 'inline') if !$self->invoice; - require SL::DB::AccTransaction; - SL::DB::Manager::AccTransaction->get_all(query => [ trans_id => $self->id ]); + return $html; } 1;