Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 330cfa6d

Von Moritz Bunkus vor mehr als 16 Jahren hinzugefügt

  • ID 330cfa6d7507da52bc1c2a3874b46eb23255538f
  • Vorgänger ca57b730
  • Nachfolger c3c267fe

Bug in Auflistung von Lieferscheinen: Gibt es mehrere Aufträge mit der gleichen Auftragsnummer, und wenn so eine Nummer bei einem Lieferschein eingetragen war, so wurden diese Lieferscheine gleich mehrfach aufgeführt. Die Links zu den Aufträgen führten dann zusätzlich möglicherweise zu den falschen Aufträgen (von Verkauf in Einkauf und umgekehrt). Falsche Form-Typen führen zu falschen Datenbankabfragen ("customer" vs "vendor"), sodass die Datenbankabfrage im Einkauf tatsächlich die Verkaufslieferscheine lieferte.

Unterschiede anzeigen:

SL/DO.pm
62 62
         dord.transaction_description,
63 63
         pr.projectnumber AS globalprojectnumber,
64 64
         e.name AS employee,
65
         sm.name AS salesman,
66
         oe.id AS oe_id
65
         sm.name AS salesman
67 66
       FROM delivery_orders dord
68 67
       LEFT JOIN $vc ct ON (dord.${vc}_id = ct.id)
69 68
       LEFT JOIN employee e ON (dord.employee_id = e.id)
70 69
       LEFT JOIN employee sm ON (dord.salesman_id = sm.id)
71
       LEFT JOIN project pr ON (dord.globalproject_id = pr.id)
72
       LEFT JOIN oe ON ((dord.ordnumber = oe.ordnumber) AND NOT COALESCE(oe.quotation, FALSE))|;
70
       LEFT JOIN project pr ON (dord.globalproject_id = pr.id)|;
73 71

  
74 72
  push @where, ($form->{type} eq 'sales_delivery_order' ? '' : 'NOT ') . qq|COALESCE(dord.is_sales, FALSE)|;
75 73

  
......
152 150

  
153 151
  $form->{DO} = selectall_hashref_query($form, $dbh, $query, @values);
154 152

  
155
  $main::lxdebug->dump(0, "DO", $form->{DO});
153
  if (scalar @{ $form->{DO} }) {
154
    $query =
155
      qq|SELECT id
156
         FROM oe
157
         WHERE NOT COALESCE(quotation, FALSE)
158
           AND (ordnumber = ?)
159
           AND (COALESCE(${vc}_id, 0) != 0)|;
160

  
161
    my $sth = prepare_query($form, $dbh, $query);
162

  
163
    foreach my $dord (@{ $form->{DO} }) {
164
      do_statement($form, $sth, $query, $dord->{ordnumber});
165
      ($dord->{oe_id}) = $sth->fetchrow_array();
166
    }
167

  
168
    $sth->finish();
169
  }
156 170

  
157 171
  $main::lxdebug->leave_sub();
158 172
}

Auch abrufbar als: Unified diff