Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision e5a76ed1

Von Moritz Bunkus vor mehr als 7 Jahren hinzugefügt

  • ID e5a76ed158219e3d2b19f142213f8a80c11627f1
  • Vorgänger 2d43271a
  • Nachfolger 96670fe8

Rechnungsmassenerstellen: keine DB-Transaktion um convert_to_invoice()

convert_to_invoice() macht selber intern bereits eine Transaktion auf;
daher ist die außen unnötig.

Weiterhin waren die Parameter merkwürdig übergeben:

• Für eine On-The-Fly-Unterscheidung für »diese Parameter« vs. »keine
Parameter« benötigt man keine sub; das geht einfach mit einem ternären
Operator.
• »Keine Parameter« drückt man nicht durch »undef« aus, sondern durch
die leere Liste »()«. Wird »undef« als einziger Parameter übergeben,
so wird in der Funktion de Facto das hier gemacht:

my %hash = (undef);
und das ergibt eine Warnung, dass eine Liste mit ungerader Anzahl von
Elementen in ein Hash umgewandelt werden soll.

Unterschiede anzeigen:

SL/BackgroundJob/MassRecordCreationAndPrinting.pm
46 46
    my $data   = $job_obj->data_as_hash;
47 47

  
48 48
    eval {
49
      my $invoice;
50 49
      my $sales_delivery_order = SL::DB::DeliveryOrder->new(id => $delivery_order_id)->load;
51 50
      $number                  = $sales_delivery_order->donumber;
51
      my %conversion_params    = $data->{transdate} ? ('attributes' => { transdate => $data->{transdate} }) : ();
52
      my $invoice              = $sales_delivery_order->convert_to_invoice(%conversion_params);
52 53

  
53
      if (!$db->do_transaction(sub {
54
        $invoice = $sales_delivery_order->convert_to_invoice(sub { $data->{transdate} ? ('attributes' => { transdate => $data->{transdate} }) :
55
                                                                         undef }->() ) || die $db->error;
56
        1;
57
      })) {
58
        die $db->error;
59
      }
54
      die $db->error if !$invoice;
60 55

  
61 56
      $data->{num_created}++;
62 57
      push @{ $data->{invoice_ids} }, $invoice->id;

Auch abrufbar als: Unified diff