RDBO {Invoice,DeliveryOrder}->new_from Attribute nachträglich zuweisen
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 5 Jun 2014 06:33:53 +0000 (08:33 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 5 Jun 2014 07:46:32 +0000 (09:46 +0200)
Macht man die Vermischung ->new(%args, %attributes), so ist die
Reihenfolge, wann welche aus %args und welche aus %attributes genommen
werden, aufgrund von Perls beliebiger Hash-Reihenfolge nicht
garantiert. Also zuerst nur die berechneten aus %args zuweisen und
danach die vom Caller bereitgestellten in %attributes.

SL/DB/DeliveryOrder.pm
SL/DB/Invoice.pm

index 75eab64..0602485 100644 (file)
@@ -139,7 +139,8 @@ sub new_from {
     $args{shipto_id} = $source->shipto_id;
   }
 
-  my $delivery_order = $class->new(%args, %{ $params{attributes} || {} });
+  my $delivery_order = $class->new(%args);
+  $delivery_order->assign_attributes(%{ $params{attributes} }) if $params{attributes};
   my $items          = delete($params{items}) || $source->items_sorted;
   my %item_parents;
 
index 9cf52a2..3f94795 100644 (file)
@@ -166,7 +166,8 @@ sub new_from {
     $args{quodate}      = $source->transdate;
   }
 
-  my $invoice = $class->new(%args, %{ $params{attributes} || {} });
+  my $invoice = $class->new(%args);
+  $invoice->assign_attributes(%{ $params{attributes} }) if $params{attributes};
   my $items   = delete($params{items}) || $source->items_sorted;
   my %item_parents;