Typos und in SL/DB/Invoice.pm
[kivitendo-erp.git] / SL / DB / Invoice.pm
index 239280b..70291ad 100644 (file)
@@ -39,6 +39,12 @@ __PACKAGE__->meta->add_relationship(
     column_map      => { id => 'ar_id' },
     manager_args    => { with_objects => [ 'sepa_export' ] }
   },
+  sepa_exports      => {
+    type            => 'many to many',
+    map_class       => 'SL::DB::SepaExportItem',
+    map_from        => 'ar',
+    map_to          => 'sepa_export',
+  },
   custom_shipto     => {
     type            => 'one to one',
     class           => 'SL::DB::Shipto',
@@ -216,12 +222,14 @@ sub new_from {
 sub post {
   my ($self, %params) = @_;
 
+  die "not an invoice" unless $self->invoice;
+
   require SL::DB::Chart;
   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;
+    croak("No AR chart found and no parameter 'ar_id' given") unless $chart;
     $params{ar_id} = $chart->id;
   }
 
@@ -379,6 +387,8 @@ __END__
 
 =pod
 
+=encoding UTF-8
+
 =head1 NAME
 
 SL::DB::Invoice: Rose model for invoices (table "ar")
@@ -426,8 +436,13 @@ falsish value will be skipped.
 =item C<attributes>
 
 An optional hash reference. If it exists then it is passed to C<new>
-allowing the caller to set certain attributes for the new delivery
-order.
+allowing the caller to set certain attributes for the new invoice.
+For example to set a different transdate (default is the current date),
+call the method like this:
+
+   my %params;
+   $params{attributes}{transdate} = '28.08.2015';
+   $invoice = SL::DB::Invoice->new_from($self, %params)->post || die;
 
 =back
 
@@ -445,7 +460,7 @@ Posts the invoice. Required parameters are:
 
 =item * C<ar_id>
 
-The ID of the accounds receivable chart the invoices amounts are
+The ID of the accounts receivable chart the invoice's amounts are
 posted to. If it is not set then the first chart configured for
 accounts receivables is used.
 
@@ -471,7 +486,7 @@ the part's buchungsgruppen.
 and recorded in C<acc_trans>.
 
 =item 6. Items in C<invoice> are updated according to their allocation
-status (regarding for costs of goold sold). Will only be done if
+status (regarding costs of goods sold). Will only be done if
 kivitendo is not configured to use Einnahmenüberschussrechnungen.
 
 =item 7. The invoice and its items are saved.
@@ -480,7 +495,7 @@ kivitendo is not configured to use Einnahmenüberschussrechnungen.
 
 Returns C<$self> on success and C<undef> on failure. The whole process
 is run inside a transaction. If it fails then nothing is saved to or
-changed in the database. A new transaction is only started if none is
+changed in the database. A new transaction is only started if none are
 active.
 
 =item C<basic_info $field>
@@ -489,6 +504,17 @@ See L<SL::DB::Object::basic_info>.
 
 =back
 
+=head1 TODO
+
+ As explained in the new_from example, it is possible to set transdate to a new value.
+ From a user / programm point of view transdate is more than holy and there should be
+ some validity checker available for controller code. At least the same logic like in
+ Form.pm from ar.pl should be available:
+  # see old stuff ar.pl post
+  #$form->error($locale->text('Cannot post transaction above the maximum future booking date!'))
+  #  if ($form->date_max_future($transdate, \%myconfig));
+  #$form->error($locale->text('Cannot post transaction for a closed period!')) if ($form->date_closed($form->{"transdate"}, \%myconfig));
+
 =head1 AUTHOR
 
 Moritz Bunkus E<lt>m.bunkus@linet-services.deE<gt>