Revision bcda7a48
Von wernerh vor fast 2 Jahren hinzugefügt
SL/DB/Manager/Part.pm | ||
---|---|---|
return () unless $part_id;
|
||
|
||
my $query = <<SQL;
|
||
-- WITH
|
||
-- open_qty as ( SELECT parts_id, sum(oi.qty) as sum
|
||
-- FROM orderitems oi
|
||
-- LEFT OUTER JOIN oe o ON (oi.trans_id = o.id)
|
||
-- WHERE
|
||
-- oi.parts_id = ?
|
||
-- AND (NOT COALESCE(o.quotation, FALSE))
|
||
-- AND (NOT COALESCE(o.closed, FALSE))
|
||
-- AND (NOT COALESCE(o.delivered, FALSE))
|
||
-- AND (COALESCE(o.vendor_id, 0) <> 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 (NOT COALESCE(o.quotation, FALSE))
|
||
-- AND (NOT COALESCE(o.closed, FALSE))
|
||
-- AND (NOT COALESCE(o.delivered, FALSE))
|
||
-- AND (COALESCE(o.vendor_id, 0) <> 0)
|
||
-- ),
|
||
|
||
-- 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 dq.parts_id, oq.sum AS ordered_sum, dq.sum, sum(oq.sum - dq.sum) AS open_qty
|
||
-- FROM open_qty oq
|
||
-- RIGHT JOIN delivered_qty dq ON dq.parts_id = oq.parts_id
|
||
-- GROUP BY dq.parts_id, oq.sum, dq.sum)
|
||
|
||
-- SELECT open_qty FROM open_ordered_qty
|
||
|
||
|
||
|
||
with
|
||
open_qty as ( SELECT parts_id, sum(oi.qty) as sum
|
||
WITH
|
||
open_qty AS ( SELECT parts_id, sum(oi.qty) as sum
|
||
FROM orderitems oi
|
||
LEFT OUTER JOIN oe o ON (oi.trans_id = o.id)
|
||
WHERE
|
||
... | ... | |
AND (COALESCE(o.vendor_id, 0) <> 0)
|
||
GROUP BY oi.parts_id),
|
||
|
||
open_orderitems_ids as ( SELECT oi.id, 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
|
||
... | ... | |
AND (COALESCE(o.vendor_id, 0) <> 0)
|
||
),
|
||
|
||
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),
|
||
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, iif(dq.sum is null,0.00,dq.sum) as sum, sum(iif(oq.sum is null,0.00,oq.sum) - iif(dq.sum is null,0.00,dq.sum)) 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)
|
||
open_ordered_qty AS ( select oq.parts_id, oq.sum AS ordered_sum, iif(dq.sum is null,0.00,dq.sum) AS sum, sum(iif(oq.sum is null,0.00,oq.sum) - iif(dq.sum is null,0.00,dq.sum)) 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
|
||
SELECT open_qty FROM open_ordered_qty
|
||
|
||
SQL
|
||
|
||
my ($open_qty) = selectrow_query($::form, $class->object_class->init_db->dbh, $query, $part_id, $part_id, $part_id);
|
||
### Über Rose dauert das ganze 3 minuten
|
||
# my $openitems = SL::DB::Manager::OrderItem->get_all(where => [
|
||
# parts_id => $part_id,
|
||
# 'order.closed' => 0,
|
||
... | ... | |
|
||
# return $open_qty;
|
||
|
||
$main::lxdebug->dump(0, 'WH: iOPENQTY', $open_qty);
|
||
|
||
return $open_qty;
|
||
return $open_qty if $open_qty > 0;
|
||
return 0;
|
||
}
|
||
|
||
sub _sort_spec {
|
Auch abrufbar als: Unified diff
Dispositionsmanager Abfrage auf SQL und übergabe 0 oder Menge