Invoice::post selber ar_id setzen lassen, wenn nicht angegeben
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 18 Nov 2010 07:58:48 +0000 (08:58 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 12 Jan 2011 15:28:18 +0000 (16:28 +0100)
SL/DB/Invoice.pm
SL/DB/Order.pm

index e9c04ed..c55a22f 100644 (file)
@@ -14,6 +14,7 @@ use SL::DB::Helper::LinkedRecords;
 use SL::DB::Helper::PriceTaxCalculator;
 use SL::DB::Helper::TransNumberGenerator;
 use SL::DB::AccTransaction;
+use SL::DB::Chart;
 use SL::DB::Employee;
 
 __PACKAGE__->meta->add_relationship(
@@ -123,7 +124,13 @@ sub new_from {
 sub post {
   my ($self, %params) = @_;
 
-  croak("Missing parameter 'ar_id'") unless $params{ar_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 $worker = sub {
     my %data = $self->calculate_prices_and_taxes;
@@ -241,7 +248,8 @@ Posts the invoice. Required parameters are:
 =item * C<ar_id>
 
 The ID of the accounds receivable chart the invoices amounts are
-posted to.
+posted to. If it is not set then the first chart configured for
+accounts receivables is used.
 
 =back
 
index 74f713c..37fc0fc 100644 (file)
@@ -91,14 +91,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 +141,7 @@ L<SL::DB::Invoice::new_from>. That invoice is posted, and C<$self> is
 linked to the new invoice via L<SL::DB::RecordLink>. C<$self>'s
 C<closed> attribute is set to C<true>, and C<$self> is saved.
 
-The arguments in C<%params> are passed to
-L<SL::DB::Invoice::post>. 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<SL::DB::Invoice::post>.
 
 Returns the new invoice instance on success and C<undef> on
 failure. The whole process is run inside a transaction. On failure