X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FOrder.pm;h=61a49d4ffa4864fa9afb1bc09460389d735f9c89;hb=cdaddc5ab3c569585e39ee9e3f11260ae2336fea;hp=74f713ca00470b4088b529569e990644a344dbb9;hpb=78600d89c89dbdbb0ff0ef31e04feacedb1b5589;p=kivitendo-erp.git diff --git a/SL/DB/Order.pm b/SL/DB/Order.pm index 74f713ca0..61a49d4ff 100644 --- a/SL/DB/Order.pm +++ b/SL/DB/Order.pm @@ -10,8 +10,10 @@ 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; +use SL::DB::Helper::PriceUpdater; use SL::DB::Helper::TransNumberGenerator; use SL::RecordLinks; @@ -39,6 +41,26 @@ __PACKAGE__->meta->add_relationship( class => 'SL::DB::PaymentTerm', column_map => { payment_id => 'id' }, }, + contact => { + type => 'one to one', + class => 'SL::DB::Contact', + column_map => { cp_id => 'cp_id' }, + }, + shipto => { + type => 'one to one', + class => 'SL::DB::Shipto', + column_map => { shipto_id => 'shipto_id' }, + }, + department => { + type => 'one to one', + class => 'SL::DB::Department', + column_map => { department_id => 'id' }, + }, + language => { + type => 'one to one', + class => 'SL::DB::Language', + column_map => { language_id => 'id' }, + }, ); __PACKAGE__->meta->initialize; @@ -91,14 +113,6 @@ sub convert_to_invoice { croak("Conversion to invoices is only supported for sales records") unless $self->customer_id; - if (!$params{ar_id}) { - my $chart = SL::DB::Manager::Chart->get_all(query => [ SL::DB::Manager::Chart->link_filter('AR') ], - sort_by => 'id ASC', - limit => 1)->[0]; - croak("No AR chart found and no parameter `ar_id' given") unless $chart; - $params{ar_id} = $chart->id; - } - my $invoice; if (!$self->db->do_transaction(sub { $invoice = SL::DB::Invoice->new_from($self)->post(%params) || die; @@ -149,11 +163,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. One parameter of note is -C<$paras{ar_id}>. If set it must be the ID of the accounts receivables -chart to post to. If it is not set then the first chart configured for -accounts receivables is used. +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