RDBO Invoice->new_from: Fälligkeitsdatum und Zahlungsbedingungen gefixt
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 5 Jun 2014 08:07:07 +0000 (10:07 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 5 Jun 2014 08:15:16 +0000 (10:15 +0200)
1. Konvertierung von Order-Objekten: Hier wurde das Fälligkeitsdatum
   zwar richtig übernommen, nicht aber die Zahlungsbedingungen.

2. Konvertierung von DeliveryOrder-Objekten: Lieferscheine haben gar
   keinen Fremdschlüssel auf die Zahlungsbedingungen. Daher wurden hier
   weder das Fälligkeitsdatum noch die Zahlungsbedingungen übernommen.

Was jetzt gemacht wird, ist die Zahlungsbedingungen vom Quellobjekt zu
nehmen, wenn dort welche existieren, und ansonsten vom dazugehörigen
Kunden. Wurden Zahlungsbedingungen gefunden, so wird das
Fälligkeitsdatum daraus berechnet und ansonsten auf »Rechnungsdatum + 1
Tag« gesetzt.

SL/DB/Invoice.pm

index 3f94795..0e96166 100644 (file)
@@ -130,7 +130,10 @@ sub new_from {
 
   require SL::DB::Employee;
 
-  my $terms = $source->can('payment_id') && $source->payment_id ? $source->payment_terms->terms_netto : 0;
+  my $terms = $source->can('payment_id') && $source->payment_id ? $source->payment_terms
+            : $source->customer_id                              ? $source ->customer->payment_terms
+            :                                                     undef;
+
   my (@columns, @item_columns, $item_parent_id_column, $item_parent_column);
 
   if (ref($source) eq 'SL::DB::Order') {
@@ -151,7 +154,8 @@ sub new_from {
                                                 cp_id language_id taxzone_id shipto_id globalproject_id transaction_description currency_id delivery_term_id), @columns),
                transdate   => DateTime->today_local,
                gldate      => DateTime->today_local,
-               duedate     => DateTime->today_local->add(days => $terms * 1),
+               duedate     => DateTime->today_local->add(days => ($terms ? $terms->terms_netto * 1 : 1)),
+               payment_id  => $terms ? $terms->id : undef,
                invoice     => 1,
                type        => 'invoice',
                storno      => 0,