Dump - ITSA views
This commit is contained in:
89
Database Backups/SQL Views/vw_utility_open_position.sql
Normal file
89
Database Backups/SQL Views/vw_utility_open_position.sql
Normal file
@@ -0,0 +1,89 @@
|
||||
CREATE OR REPLACE VIEW public.vw_utility_open_position AS
|
||||
WITH physical_lot_quantity AS (
|
||||
SELECT 'purchase'::text AS side,
|
||||
l.line AS contract_line_id,
|
||||
sum(COALESCE(qh.quantity, (0)::numeric)) AS physical_quantity
|
||||
FROM (lot_lot l
|
||||
LEFT JOIN lot_qt_hist qh ON (((qh.lot = l.id) AND (qh.quantity_type = l.lot_state))))
|
||||
WHERE (((l.lot_type)::text = 'physic'::text) AND (l.line IS NOT NULL))
|
||||
GROUP BY l.line
|
||||
UNION ALL
|
||||
SELECT 'sale'::text AS side,
|
||||
l.sale_line AS contract_line_id,
|
||||
sum(COALESCE(qh.quantity, (0)::numeric)) AS physical_quantity
|
||||
FROM (lot_lot l
|
||||
LEFT JOIN lot_qt_hist qh ON (((qh.lot = l.id) AND (qh.quantity_type = l.lot_state))))
|
||||
WHERE (((l.lot_type)::text = 'physic'::text) AND (l.sale_line IS NOT NULL))
|
||||
GROUP BY l.sale_line
|
||||
), matched_virtual_quantity AS (
|
||||
SELECT 'purchase'::text AS side,
|
||||
lp.line AS contract_line_id,
|
||||
sum(lqt.lot_quantity) AS matched_quantity
|
||||
FROM (lot_qt lqt
|
||||
JOIN lot_lot lp ON ((lp.id = lqt.lot_p)))
|
||||
WHERE (((lp.lot_type)::text = 'virtual'::text) AND (lp.line IS NOT NULL) AND (lqt.lot_s IS NOT NULL) AND (lqt.lot_quantity > (0)::numeric))
|
||||
GROUP BY lp.line
|
||||
UNION ALL
|
||||
SELECT 'sale'::text AS side,
|
||||
ls.sale_line AS contract_line_id,
|
||||
sum(lqt.lot_quantity) AS matched_quantity
|
||||
FROM (lot_qt lqt
|
||||
JOIN lot_lot ls ON ((ls.id = lqt.lot_s)))
|
||||
WHERE (((ls.lot_type)::text = 'virtual'::text) AND (ls.sale_line IS NOT NULL) AND (lqt.lot_p IS NOT NULL) AND (lqt.lot_quantity > (0)::numeric))
|
||||
GROUP BY ls.sale_line
|
||||
), open_virtual_lots AS (
|
||||
SELECT 'purchase'::text AS side,
|
||||
lqt.id AS int_lot_qt_id,
|
||||
lp.id AS int_lot_id,
|
||||
pl.id AS int_contract_line_id,
|
||||
pp.party AS int_counterparty_id,
|
||||
pl.product AS int_product_id,
|
||||
uom.name AS uom,
|
||||
lqt.lot_quantity AS open_quantity,
|
||||
pl.from_del AS period_start,
|
||||
pl.to_del AS period_end,
|
||||
COALESCE(plq.physical_quantity, (0)::numeric) AS physical_lot_quantity,
|
||||
((pl.targeted_qt - COALESCE(plq.physical_quantity, (0)::numeric)) - COALESCE(mvq.matched_quantity, (0)::numeric)) AS open_targeted_quantity
|
||||
FROM ((((((lot_qt lqt
|
||||
JOIN lot_lot lp ON ((lp.id = lqt.lot_p)))
|
||||
JOIN purchase_line pl ON ((pl.id = lp.line)))
|
||||
JOIN purchase_purchase pp ON ((pp.id = pl.purchase)))
|
||||
LEFT JOIN product_uom uom ON ((uom.id = lqt.lot_unit)))
|
||||
LEFT JOIN physical_lot_quantity plq ON (((plq.side = 'purchase'::text) AND (plq.contract_line_id = pl.id))))
|
||||
LEFT JOIN matched_virtual_quantity mvq ON (((mvq.side = 'purchase'::text) AND (mvq.contract_line_id = pl.id))))
|
||||
WHERE (((lp.lot_type)::text = 'virtual'::text) AND (lqt.lot_s IS NULL) AND (COALESCE(pl.finished, false) = false) AND (lqt.lot_quantity > (0)::numeric))
|
||||
UNION ALL
|
||||
SELECT 'sale'::text AS side,
|
||||
lqt.id AS int_lot_qt_id,
|
||||
ls.id AS int_lot_id,
|
||||
sl.id AS int_contract_line_id,
|
||||
ss.party AS int_counterparty_id,
|
||||
sl.product AS int_product_id,
|
||||
uom.name AS uom,
|
||||
(- lqt.lot_quantity) AS open_quantity,
|
||||
sl.from_del AS period_start,
|
||||
sl.to_del AS period_end,
|
||||
COALESCE(plq.physical_quantity, (0)::numeric) AS physical_lot_quantity,
|
||||
(- ((sl.targeted_qt - COALESCE(plq.physical_quantity, (0)::numeric)) - COALESCE(mvq.matched_quantity, (0)::numeric))) AS open_targeted_quantity
|
||||
FROM ((((((lot_qt lqt
|
||||
JOIN lot_lot ls ON ((ls.id = lqt.lot_s)))
|
||||
JOIN sale_line sl ON ((sl.id = ls.sale_line)))
|
||||
JOIN sale_sale ss ON ((ss.id = sl.sale)))
|
||||
LEFT JOIN product_uom uom ON ((uom.id = lqt.lot_unit)))
|
||||
LEFT JOIN physical_lot_quantity plq ON (((plq.side = 'sale'::text) AND (plq.contract_line_id = sl.id))))
|
||||
LEFT JOIN matched_virtual_quantity mvq ON (((mvq.side = 'sale'::text) AND (mvq.contract_line_id = sl.id))))
|
||||
WHERE (((ls.lot_type)::text = 'virtual'::text) AND (lqt.lot_p IS NULL) AND (COALESCE(sl.finished, false) = false) AND (lqt.lot_quantity > (0)::numeric))
|
||||
)
|
||||
SELECT side AS "strContractSide",
|
||||
int_lot_qt_id AS "intLotQtId",
|
||||
int_lot_id AS "intLotId",
|
||||
int_contract_line_id AS "intContractLineId",
|
||||
int_counterparty_id AS "intCounterpartyId",
|
||||
int_product_id AS "intProductId",
|
||||
uom AS "strUom",
|
||||
open_quantity AS "dblOpenQuantity",
|
||||
period_start AS "dtmPeriodStart",
|
||||
period_end AS "dtmPeriodEnd",
|
||||
physical_lot_quantity AS "dblPhysicalLotQuantity",
|
||||
open_targeted_quantity AS "dblOpenTargetedQuantity"
|
||||
FROM open_virtual_lots;;
|
||||
Reference in New Issue
Block a user