From: Moritz Bunkus Date: Tue, 10 Jun 2008 14:44:19 +0000 (+0000) Subject: Bug in Auflistung von Lieferscheinen: Gibt es mehrere Aufträge mit der gleichen Auftr... X-Git-Tag: release-2.6.0beta1~144 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=330cfa6d7507da52bc1c2a3874b46eb23255538f;p=kivitendo-erp.git 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. --- diff --git a/SL/DO.pm b/SL/DO.pm index 3be64f819..2e61270d5 100644 --- a/SL/DO.pm +++ b/SL/DO.pm @@ -62,14 +62,12 @@ sub transactions { dord.transaction_description, pr.projectnumber AS globalprojectnumber, e.name AS employee, - sm.name AS salesman, - oe.id AS oe_id + sm.name AS salesman FROM delivery_orders dord LEFT JOIN $vc ct ON (dord.${vc}_id = ct.id) LEFT JOIN employee e ON (dord.employee_id = e.id) LEFT JOIN employee sm ON (dord.salesman_id = sm.id) - LEFT JOIN project pr ON (dord.globalproject_id = pr.id) - LEFT JOIN oe ON ((dord.ordnumber = oe.ordnumber) AND NOT COALESCE(oe.quotation, FALSE))|; + LEFT JOIN project pr ON (dord.globalproject_id = pr.id)|; push @where, ($form->{type} eq 'sales_delivery_order' ? '' : 'NOT ') . qq|COALESCE(dord.is_sales, FALSE)|; @@ -152,7 +150,23 @@ sub transactions { $form->{DO} = selectall_hashref_query($form, $dbh, $query, @values); - $main::lxdebug->dump(0, "DO", $form->{DO}); + if (scalar @{ $form->{DO} }) { + $query = + qq|SELECT id + FROM oe + WHERE NOT COALESCE(quotation, FALSE) + AND (ordnumber = ?) + AND (COALESCE(${vc}_id, 0) != 0)|; + + my $sth = prepare_query($form, $dbh, $query); + + foreach my $dord (@{ $form->{DO} }) { + do_statement($form, $sth, $query, $dord->{ordnumber}); + ($dord->{oe_id}) = $sth->fetchrow_array(); + } + + $sth->finish(); + } $main::lxdebug->leave_sub(); } diff --git a/bin/mozilla/do.pl b/bin/mozilla/do.pl index 79d8172e3..8cc81f854 100644 --- a/bin/mozilla/do.pl +++ b/bin/mozilla/do.pl @@ -383,7 +383,7 @@ sub search { check_do_access(); - $form->{vc} = $form->{type} eq 'purchase_order' ? 'vendor' : 'customer'; + $form->{vc} = $form->{type} eq 'purchase_delivery_order' ? 'vendor' : 'customer'; $form->get_lists("projects" => { "key" => "ALL_PROJECTS", "all" => 1 }, @@ -646,7 +646,7 @@ sub invoice { $lxdebug->enter_sub(); check_do_access(); - $auth->assert($form->{type} eq 'purchase_order' || $form->{type} eq 'request_quotation' ? 'vendor_invoice_edit' : 'invoice_edit'); + $auth->assert($form->{type} eq 'purchase_delivery_order' ? 'vendor_invoice_edit' : 'invoice_edit'); $form->{deliverydate} = $form->{transdate}; $form->{transdate} = $form->{invdate} = $form->current_date(\%myconfig);