X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/78600d89c89dbdbb0ff0ef31e04feacedb1b5589..da99c7bcf4a8ec82d9bc1d0c75aaba6ba4cd69ea:/SL/DB/Order.pm?ds=sidebyside 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