Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 40ebe601

Von Bernd Bleßmann vor fast 10 Jahren hinzugefügt

  • ID 40ebe601936458cebc78a48a20b2cc5e67f6c1da
  • Vorgänger 531e1a51
  • Nachfolger 9d07c34f

Lager-Transfer: Transaktion mit with_transaction statt mit do_transaction.

Hintergrund: Buchen einer Rechnung und Lagerbewegung in einer Transaktion
ausführen können.

Zitat aus einem anderen commit:
"do_transaction startet immer eine Transaktion, auch wenn außen rum
schon eine läuft. Damit wird die äußere Transaktion de facto außer
Kraft gesetzt."

Unterschiede anzeigen:

SL/WH.pm
79 79
  my @trans_ids;
80 80

  
81 81
  my $db = SL::DB::Inventory->new->db;
82
  $db->do_transaction(sub{
82
  $db->with_transaction(sub{
83 83
    while (my $transfer = shift @args) {
84 84
      my ($trans_id) = selectrow_query($::form, $::form->get_standard_dbh, qq|SELECT nextval('id')|);
85 85

  
......
141 141
          $part->update_attributes(warehouse_id  => conv_i($transfer->{dst_warehouse_id}));
142 142
          $part->update_attributes(bin_id        => conv_i($transfer->{dst_bin_id}));
143 143
        }
144
     }
144
      }
145 145

  
146 146
      push @trans_ids, $trans_id;
147 147
    }
148

  
149
    1;
148 150
  }) or do {
149 151
    $::form->error("Warehouse transfer error: " . join("\n", (split(/\n/, $db->error))[0..2]));
150 152
  };

Auch abrufbar als: Unified diff