X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/ff159a4d47b9a2d10744dcfc23da2c63605c8a32..eeb5375ee7727c956cc357cc8f90b19d1bfe80b9:/SL/DB/Manager/Part.pm diff --git a/SL/DB/Manager/Part.pm b/SL/DB/Manager/Part.pm index b46f851cf..b101d1a14 100644 --- a/SL/DB/Manager/Part.pm +++ b/SL/DB/Manager/Part.pm @@ -78,10 +78,9 @@ sub get_ordered_qty { FROM orderitems oi LEFT JOIN oe ON (oi.trans_id = oe.id) WHERE (oi.parts_id IN ($placeholders)) - AND (NOT COALESCE(oe.quotation, FALSE)) + AND oe.record_type = 'purchase_order' AND (NOT COALESCE(oe.closed, FALSE)) AND (NOT COALESCE(oe.delivered, FALSE)) - AND (COALESCE(oe.vendor_id, 0) <> 0) GROUP BY oi.parts_id SQL @@ -91,6 +90,75 @@ SQL return %qty_by_id; } +sub get_open_ordered_qty { + my $class = shift; + my $part_id = shift; + return () unless $part_id; + + my $query = < 0) + GROUP BY oi.parts_id +), + +open_orderitems_ids AS ( + SELECT oi.id, parts_id + FROM orderitems oi + LEFT OUTER JOIN oe o ON (oi.trans_id = o.id) + WHERE + oi.parts_id = ? + AND (o.record_type = 'purchase_order') + AND (NOT COALESCE(o.closed, FALSE)) + AND (NOT COALESCE(o.delivered, FALSE)) + AND (o.vendor_id is not null) +), + +delivered_qty AS ( + SELECT parts_id, sum(qty) AS sum + FROM delivery_order_items + WHERE id IN ( + SELECT to_id from record_links + WHERE + from_id IN ( SELECT id FROM open_orderitems_ids) + AND from_table = 'orderitems' + AND to_table = 'delivery_order_items' + ) AND parts_id = ? + GROUP BY parts_id +), + +open_ordered_qty AS ( + SELECT + oq.parts_id, + oq.sum AS ordered_sum, + COALESCE(dq.sum,0.00) AS sum, + sum(COALESCE(oq.sum,0.00) - COALESCE(dq.sum,0.00)) AS open_qty + FROM open_qty oq + LEFT JOIN delivered_qty dq ON dq.parts_id = oq.parts_id + GROUP BY oq.parts_id, oq.sum, dq.sum +) + +SELECT open_qty FROM open_ordered_qty + +SQL + + my ($open_qty) = selectfirst_array_query( + $::form, $class->object_class->init_db->dbh, + $query, $part_id, $part_id, $part_id + ); + + $open_qty ||= 0; + return $open_qty +} + sub _sort_spec { ( default => [ 'partnumber', 1 ],