commit
This commit is contained in:
91
SQL/Contracts with MTM info.sql
Normal file
91
SQL/Contracts with MTM info.sql
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
-- Contracts with an MtM strategy, pricing_component details, and latest valuation snapshot
|
||||||
|
SELECT
|
||||||
|
'Purchase' AS side,
|
||||||
|
pp.number AS contract,
|
||||||
|
pl.quantity AS contracted_qty,
|
||||||
|
ms.name AS strategy_name,
|
||||||
|
msc.name AS scenario_name,
|
||||||
|
msc.valuation_date,
|
||||||
|
msc.use_last_price,
|
||||||
|
cur.symbol AS strategy_currency,
|
||||||
|
-- MtM component (pricing_component linked via strategy)
|
||||||
|
pc_mtm.price_source_type AS component_price_source,
|
||||||
|
pc_mtm.ratio AS component_ratio_pct,
|
||||||
|
ft.name AS component_fix_type,
|
||||||
|
pi.price_desc AS component_curve,
|
||||||
|
pc_cal.name AS component_calendar,
|
||||||
|
pc_mtm.auto AS component_auto,
|
||||||
|
pc_mtm.fallback AS component_fallback,
|
||||||
|
-- Latest valuation (physical price row)
|
||||||
|
vv.date AS last_valuation_date,
|
||||||
|
vv.price AS last_valuation_price,
|
||||||
|
vv.quantity AS last_valuation_qty,
|
||||||
|
vv.amount AS last_valuation_amount,
|
||||||
|
vv.mtm AS portfolio_mtm
|
||||||
|
FROM purchase_strategy ps
|
||||||
|
JOIN purchase_line pl ON pl.id = ps.line
|
||||||
|
JOIN purchase_purchase pp ON pp.id = pl.purchase
|
||||||
|
JOIN mtm_strategy ms ON ms.id = ps.strategy
|
||||||
|
JOIN mtm_scenario msc ON msc.id = ms.scenario
|
||||||
|
JOIN currency_currency cur ON cur.id = ms.currency
|
||||||
|
LEFT JOIN pricing_component pc_mtm ON pc_mtm.strategy = ms.id
|
||||||
|
LEFT JOIN price_fixtype ft ON ft.id = pc_mtm.fix_type
|
||||||
|
LEFT JOIN price_price pi ON pi.id = pc_mtm.price_index
|
||||||
|
LEFT JOIN price_calendar pc_cal ON pc_cal.id = pc_mtm.calendar
|
||||||
|
LEFT JOIN LATERAL (
|
||||||
|
SELECT date, price, quantity, amount, mtm
|
||||||
|
FROM valuation_valuation
|
||||||
|
WHERE line = pl.id
|
||||||
|
AND type = 'pur. priced'
|
||||||
|
AND reference = 'Purchase/Physic'
|
||||||
|
ORDER BY date DESC
|
||||||
|
LIMIT 1
|
||||||
|
) vv ON TRUE
|
||||||
|
|
||||||
|
UNION ALL
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
'Sale',
|
||||||
|
ss.number,
|
||||||
|
sl.quantity,
|
||||||
|
ms.name,
|
||||||
|
msc.name,
|
||||||
|
msc.valuation_date,
|
||||||
|
msc.use_last_price,
|
||||||
|
cur.symbol,
|
||||||
|
pc_mtm.price_source_type,
|
||||||
|
pc_mtm.ratio,
|
||||||
|
ft.name,
|
||||||
|
pi.price_desc,
|
||||||
|
pc_cal.name,
|
||||||
|
pc_mtm.auto,
|
||||||
|
pc_mtm.fallback,
|
||||||
|
vv.date,
|
||||||
|
vv.price,
|
||||||
|
vv.quantity,
|
||||||
|
vv.amount,
|
||||||
|
vv.mtm
|
||||||
|
FROM sale_strategy sa
|
||||||
|
JOIN sale_line sl ON sl.id = sa.sale_line
|
||||||
|
JOIN sale_sale ss ON ss.id = sl.sale
|
||||||
|
JOIN mtm_strategy ms ON ms.id = sa.strategy
|
||||||
|
JOIN mtm_scenario msc ON msc.id = ms.scenario
|
||||||
|
JOIN currency_currency cur ON cur.id = ms.currency
|
||||||
|
LEFT JOIN pricing_component pc_mtm ON pc_mtm.strategy = ms.id
|
||||||
|
LEFT JOIN price_fixtype ft ON ft.id = pc_mtm.fix_type
|
||||||
|
LEFT JOIN price_price pi ON pi.id = pc_mtm.price_index
|
||||||
|
LEFT JOIN price_calendar pc_cal ON pc_cal.id = pc_mtm.calendar
|
||||||
|
LEFT JOIN LATERAL (
|
||||||
|
SELECT date, price, quantity, amount, mtm
|
||||||
|
FROM valuation_valuation
|
||||||
|
WHERE line = sl.id
|
||||||
|
AND type = 'sale priced'
|
||||||
|
AND reference = 'Sale/Physic'
|
||||||
|
ORDER BY date DESC
|
||||||
|
LIMIT 1
|
||||||
|
) vv ON TRUE
|
||||||
|
|
||||||
|
ORDER BY side, contract;
|
||||||
|
|
||||||
|
|
||||||
|
select * from price_price
|
||||||
450
SQL/Risk Management.sql
Normal file
450
SQL/Risk Management.sql
Normal file
@@ -0,0 +1,450 @@
|
|||||||
|
|
||||||
|
|
||||||
|
-- This shows where each lot currently stands across the full chain
|
||||||
|
SELECT
|
||||||
|
pp.name AS supplier,
|
||||||
|
pur.number AS purchase_contract,
|
||||||
|
pur.state AS contract_state,
|
||||||
|
si.number AS shipment,
|
||||||
|
si.state AS shipment_state,
|
||||||
|
pur.invoice_state AS invoice_state,
|
||||||
|
COUNT(l.id) AS lots,
|
||||||
|
SUM(l.lot_qt) AS quantity
|
||||||
|
FROM lot_lot l
|
||||||
|
LEFT JOIN stock_shipment_in si ON si.id = l.lot_shipment_in
|
||||||
|
LEFT JOIN purchase_line pl ON pl.id = l.line
|
||||||
|
LEFT JOIN purchase_purchase pur ON pur.id = pl.purchase
|
||||||
|
LEFT JOIN party_party pp ON pp.id = pur.party
|
||||||
|
GROUP BY pp.name, pur.number, pur.state, si.number, si.state, pur.invoice_state
|
||||||
|
ORDER BY pp.name, pur.number;
|
||||||
|
|
||||||
|
-- This shows the details of each lot that is still in draft shipment, to see where they are in the chain and what is missing
|
||||||
|
SELECT
|
||||||
|
pp.name AS supplier,
|
||||||
|
prod.name AS product,
|
||||||
|
pur.number AS purchase_contract,
|
||||||
|
si.number AS shipment_number,
|
||||||
|
tv.vessel_name AS vessel,
|
||||||
|
si.planned_date,
|
||||||
|
si.eta,
|
||||||
|
si.etd,
|
||||||
|
si.cargo_mode,
|
||||||
|
si.transport_type,
|
||||||
|
si.bl_number,
|
||||||
|
l.id AS lot_id,
|
||||||
|
pl.quantity AS contracted_qty,
|
||||||
|
u.name AS unit,
|
||||||
|
pl.unit_price,
|
||||||
|
cur.code AS currency,
|
||||||
|
pl.price_type,
|
||||||
|
l.lot_pur_inv_state,
|
||||||
|
l.lot_sale_inv_state
|
||||||
|
FROM lot_lot l
|
||||||
|
JOIN stock_shipment_in si ON si.id = l.lot_shipment_in
|
||||||
|
JOIN purchase_line pl ON pl.id = l.line
|
||||||
|
JOIN purchase_purchase pur ON pur.id = pl.purchase
|
||||||
|
JOIN party_party pp ON pp.id = pur.party
|
||||||
|
JOIN product_product prd ON prd.id = l.lot_product
|
||||||
|
JOIN product_template prod ON prod.id = prd.template
|
||||||
|
JOIN currency_currency cur ON cur.id = pur.currency
|
||||||
|
LEFT JOIN product_uom u ON u.id = pl.unit
|
||||||
|
LEFT JOIN trade_vessel tv ON tv.id = si.vessel
|
||||||
|
WHERE si.state = 'draft'
|
||||||
|
ORDER BY si.planned_date, pp.name, si.number, l.id;
|
||||||
|
|
||||||
|
-- This shows all the contracts that are fixed price
|
||||||
|
SELECT
|
||||||
|
'Purchase' AS side,
|
||||||
|
pur.number AS contract,
|
||||||
|
pur.state AS contract_state,
|
||||||
|
pp.name AS counterparty,
|
||||||
|
prod.name AS product,
|
||||||
|
pl.from_del,
|
||||||
|
pl.to_del,
|
||||||
|
pl.quantity AS contracted_qty,
|
||||||
|
u.name AS unit,
|
||||||
|
pl.unit_price AS fixed_price,
|
||||||
|
cur.code AS currency
|
||||||
|
FROM purchase_line pl
|
||||||
|
JOIN purchase_purchase pur ON pur.id = pl.purchase
|
||||||
|
JOIN party_party pp ON pp.id = pur.party
|
||||||
|
JOIN product_product prd ON prd.id = pl.product
|
||||||
|
JOIN product_template prod ON prod.id = prd.template
|
||||||
|
JOIN currency_currency cur ON cur.id = pur.currency
|
||||||
|
LEFT JOIN product_uom u ON u.id = pl.unit
|
||||||
|
WHERE pl.type = 'line' AND pl.price_type = 'priced'
|
||||||
|
|
||||||
|
UNION ALL
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
'Sale' AS side,
|
||||||
|
s.number,
|
||||||
|
s.state,
|
||||||
|
pp.name,
|
||||||
|
prod.name,
|
||||||
|
sl.from_del,
|
||||||
|
sl.to_del,
|
||||||
|
sl.quantity,
|
||||||
|
u.name,
|
||||||
|
sl.unit_price,
|
||||||
|
cur.code
|
||||||
|
FROM sale_line sl
|
||||||
|
JOIN sale_sale s ON s.id = sl.sale
|
||||||
|
JOIN party_party pp ON pp.id = s.party
|
||||||
|
JOIN product_product prd ON prd.id = sl.product
|
||||||
|
JOIN product_template prod ON prod.id = prd.template
|
||||||
|
JOIN currency_currency cur ON cur.id = s.currency
|
||||||
|
LEFT JOIN product_uom u ON u.id = sl.unit
|
||||||
|
WHERE sl.type = 'line' AND sl.price_type = 'priced'
|
||||||
|
ORDER BY side, contract;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
WITH
|
||||||
|
|
||||||
|
-- Last fixation state per purchase line
|
||||||
|
pur_fix AS (
|
||||||
|
SELECT DISTINCT ON (line)
|
||||||
|
line,
|
||||||
|
fixed_qt,
|
||||||
|
fixed_qt_price,
|
||||||
|
unfixed_qt,
|
||||||
|
unfixed_qt_price AS unfixed_price
|
||||||
|
FROM pricing_pricing
|
||||||
|
WHERE line IS NOT NULL
|
||||||
|
ORDER BY line, last DESC NULLS LAST, pricing_date DESC
|
||||||
|
),
|
||||||
|
|
||||||
|
-- Last fixation state per sale line ← mirrors pur_fix exactly
|
||||||
|
sale_fix AS (
|
||||||
|
SELECT DISTINCT ON (sale_line)
|
||||||
|
sale_line,
|
||||||
|
fixed_qt,
|
||||||
|
fixed_qt_price,
|
||||||
|
unfixed_qt,
|
||||||
|
unfixed_qt_price AS unfixed_price
|
||||||
|
FROM pricing_pricing
|
||||||
|
WHERE sale_line IS NOT NULL
|
||||||
|
ORDER BY sale_line, last DESC NULLS LAST, pricing_date DESC
|
||||||
|
),
|
||||||
|
|
||||||
|
-- Most recent market price per price index
|
||||||
|
last_mkt AS (
|
||||||
|
SELECT DISTINCT ON (price)
|
||||||
|
price AS price_index_id,
|
||||||
|
price_date AS last_market_date,
|
||||||
|
price_value AS last_market_price
|
||||||
|
FROM price_price_value
|
||||||
|
ORDER BY price, price_date DESC
|
||||||
|
),
|
||||||
|
|
||||||
|
-- Next scheduled fixing date per purchase line
|
||||||
|
pur_next_fix AS (
|
||||||
|
SELECT DISTINCT ON (line)
|
||||||
|
line,
|
||||||
|
estimated_date AS next_fixing_date,
|
||||||
|
trigger AS fixing_trigger
|
||||||
|
FROM pricing_estimated
|
||||||
|
WHERE line IS NOT NULL
|
||||||
|
AND estimated_date >= CURRENT_DATE
|
||||||
|
ORDER BY line, estimated_date ASC
|
||||||
|
),
|
||||||
|
|
||||||
|
-- Next scheduled fixing date per sale line
|
||||||
|
sale_next_fix AS (
|
||||||
|
SELECT DISTINCT ON (sale_line)
|
||||||
|
sale_line,
|
||||||
|
estimated_date AS next_fixing_date,
|
||||||
|
trigger AS fixing_trigger
|
||||||
|
FROM pricing_estimated
|
||||||
|
WHERE sale_line IS NOT NULL
|
||||||
|
AND estimated_date >= CURRENT_DATE
|
||||||
|
ORDER BY sale_line, estimated_date ASC
|
||||||
|
)
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
'Purchase' AS side,
|
||||||
|
pur.number AS contract,
|
||||||
|
pur.state AS contract_state,
|
||||||
|
pp.name AS counterparty,
|
||||||
|
prod.name AS product,
|
||||||
|
pl.from_del,
|
||||||
|
pl.to_del,
|
||||||
|
pl.quantity AS contracted_qty,
|
||||||
|
u.name AS unit,
|
||||||
|
cur.symbol AS currency,
|
||||||
|
pi2.price_desc AS price_index,
|
||||||
|
nf.fixing_trigger,
|
||||||
|
nf.next_fixing_date,
|
||||||
|
COALESCE(pf.fixed_qt, 0) AS fixed_qty,
|
||||||
|
COALESCE(pf.fixed_qt_price, 0) AS avg_fixed_price,
|
||||||
|
pl.quantity - COALESCE(pf.fixed_qt, 0) AS unfixed_qty,
|
||||||
|
COALESCE(lm.last_market_price, pf.unfixed_price) AS unfixed_market_price,
|
||||||
|
lm.last_market_date,
|
||||||
|
lm.last_market_price
|
||||||
|
|
||||||
|
FROM purchase_line pl
|
||||||
|
JOIN purchase_purchase pur ON pur.id = pl.purchase
|
||||||
|
JOIN party_party pp ON pp.id = pur.party
|
||||||
|
JOIN product_product prd ON prd.id = pl.product
|
||||||
|
JOIN product_template prod ON prod.id = prd.template
|
||||||
|
JOIN currency_currency cur ON cur.id = pur.currency
|
||||||
|
LEFT JOIN product_uom u ON u.id = pl.unit
|
||||||
|
LEFT JOIN pricing_component pc ON pc.line = pl.id
|
||||||
|
LEFT JOIN price_price pi2 ON pi2.id = pc.price_index
|
||||||
|
LEFT JOIN last_mkt lm ON lm.price_index_id = pc.price_index
|
||||||
|
LEFT JOIN pur_fix pf ON pf.line = pl.id
|
||||||
|
LEFT JOIN pur_next_fix nf ON nf.line = pl.id
|
||||||
|
WHERE pl.type = 'line' AND pl.price_type = 'basis'
|
||||||
|
|
||||||
|
UNION ALL
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
'Sale' AS side,
|
||||||
|
s.number,
|
||||||
|
s.state,
|
||||||
|
pp.name,
|
||||||
|
prod.name,
|
||||||
|
sl.from_del,
|
||||||
|
sl.to_del,
|
||||||
|
sl.quantity,
|
||||||
|
u.name,
|
||||||
|
cur.symbol,
|
||||||
|
pi2.price_desc,
|
||||||
|
nf.fixing_trigger,
|
||||||
|
nf.next_fixing_date,
|
||||||
|
COALESCE(sf.fixed_qt, 0) AS fixed_qty,
|
||||||
|
COALESCE(sf.fixed_qt_price, 0) AS avg_fixed_price,
|
||||||
|
sl.quantity - COALESCE(sf.fixed_qt, 0) AS unfixed_qty,
|
||||||
|
COALESCE(lm.last_market_price, sf.unfixed_price) AS unfixed_market_price,
|
||||||
|
lm.last_market_date,
|
||||||
|
lm.last_market_price
|
||||||
|
|
||||||
|
FROM sale_line sl
|
||||||
|
JOIN sale_sale s ON s.id = sl.sale
|
||||||
|
JOIN party_party pp ON pp.id = s.party
|
||||||
|
JOIN product_product prd ON prd.id = sl.product
|
||||||
|
JOIN product_template prod ON prod.id = prd.template
|
||||||
|
JOIN currency_currency cur ON cur.id = s.currency
|
||||||
|
LEFT JOIN product_uom u ON u.id = sl.unit
|
||||||
|
LEFT JOIN pricing_component pc ON pc.sale_line = sl.id
|
||||||
|
LEFT JOIN price_price pi2 ON pi2.id = pc.price_index
|
||||||
|
LEFT JOIN last_mkt lm ON lm.price_index_id = pc.price_index
|
||||||
|
LEFT JOIN sale_fix sf ON sf.sale_line = sl.id
|
||||||
|
LEFT JOIN sale_next_fix nf ON nf.sale_line = sl.id
|
||||||
|
WHERE sl.type = 'line' AND sl.price_type = 'basis'
|
||||||
|
|
||||||
|
ORDER BY side, contract;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- MtM strategy, component details, and last valuation per contract (purchase and sale)
|
||||||
|
-- Columns:
|
||||||
|
-- strategy_name / scenario_name / valuation_date → MtM setup header
|
||||||
|
-- component_* → from pricing_component linked via strategy (MtM strategy-level components)
|
||||||
|
-- pricing_* → from pricing_component linked via line/sale_line (contract fixation setup)
|
||||||
|
-- vv_* → latest snapshot from valuation_valuation (price = contract price, amount = contract value)
|
||||||
|
-- vvl_* → current state from valuation_valuation_line (same structure, always most recent)
|
||||||
|
WITH
|
||||||
|
|
||||||
|
-- Latest valuation_valuation row per purchase line (physical price row only)
|
||||||
|
last_vv_pur AS (
|
||||||
|
SELECT DISTINCT ON (line)
|
||||||
|
line,
|
||||||
|
date AS vv_date,
|
||||||
|
price AS vv_price,
|
||||||
|
quantity AS vv_quantity,
|
||||||
|
amount AS vv_amount,
|
||||||
|
base_amount AS vv_base_amount,
|
||||||
|
rate AS vv_rate
|
||||||
|
FROM valuation_valuation
|
||||||
|
WHERE line IS NOT NULL
|
||||||
|
AND type = 'pur. priced'
|
||||||
|
AND reference = 'Purchase/Physic'
|
||||||
|
ORDER BY line, date DESC
|
||||||
|
),
|
||||||
|
|
||||||
|
-- Latest valuation_valuation row per sale line
|
||||||
|
last_vv_sale AS (
|
||||||
|
SELECT DISTINCT ON (sale_line)
|
||||||
|
sale_line,
|
||||||
|
date AS vv_date,
|
||||||
|
price AS vv_price,
|
||||||
|
quantity AS vv_quantity,
|
||||||
|
amount AS vv_amount,
|
||||||
|
base_amount AS vv_base_amount,
|
||||||
|
rate AS vv_rate
|
||||||
|
FROM valuation_valuation
|
||||||
|
WHERE sale_line IS NOT NULL
|
||||||
|
AND type = 'sale priced'
|
||||||
|
AND reference = 'Sale/Physic'
|
||||||
|
ORDER BY sale_line, date DESC
|
||||||
|
),
|
||||||
|
|
||||||
|
-- valuation_valuation_line per purchase line (current state)
|
||||||
|
last_vvl_pur AS (
|
||||||
|
SELECT DISTINCT ON (line)
|
||||||
|
line,
|
||||||
|
date AS vvl_date,
|
||||||
|
price AS vvl_price,
|
||||||
|
quantity AS vvl_quantity,
|
||||||
|
amount AS vvl_amount,
|
||||||
|
base_amount AS vvl_base_amount,
|
||||||
|
rate AS vvl_rate
|
||||||
|
FROM valuation_valuation_line
|
||||||
|
WHERE line IS NOT NULL
|
||||||
|
AND type = 'pur. priced'
|
||||||
|
AND reference = 'Purchase/Physic'
|
||||||
|
ORDER BY line, date DESC
|
||||||
|
),
|
||||||
|
|
||||||
|
-- valuation_valuation_line per sale line (current state)
|
||||||
|
last_vvl_sale AS (
|
||||||
|
SELECT DISTINCT ON (sale_line)
|
||||||
|
sale_line,
|
||||||
|
date AS vvl_date,
|
||||||
|
price AS vvl_price,
|
||||||
|
quantity AS vvl_quantity,
|
||||||
|
amount AS vvl_amount,
|
||||||
|
base_amount AS vvl_base_amount,
|
||||||
|
rate AS vvl_rate
|
||||||
|
FROM valuation_valuation_line
|
||||||
|
WHERE sale_line IS NOT NULL
|
||||||
|
AND type = 'sale priced'
|
||||||
|
AND reference = 'Sale/Physic'
|
||||||
|
ORDER BY sale_line, date DESC
|
||||||
|
)
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
'Purchase' AS side,
|
||||||
|
pur.number AS contract,
|
||||||
|
pur.state AS contract_state,
|
||||||
|
pp.name AS counterparty,
|
||||||
|
prod.name AS product,
|
||||||
|
pl.from_del,
|
||||||
|
pl.to_del,
|
||||||
|
pl.quantity AS contracted_qty,
|
||||||
|
u.name AS unit,
|
||||||
|
-- Strategy
|
||||||
|
ms.name AS strategy_name,
|
||||||
|
ms_cur.symbol AS strategy_currency,
|
||||||
|
-- Scenario
|
||||||
|
msc.name AS scenario_name,
|
||||||
|
msc.valuation_date,
|
||||||
|
msc.use_last_price,
|
||||||
|
cal.name AS scenario_calendar,
|
||||||
|
-- MtM component (pricing_component linked via strategy)
|
||||||
|
pc_mtm.price_source_type AS component_price_source,
|
||||||
|
pc_mtm.ratio AS component_ratio_pct,
|
||||||
|
ft.name AS component_fix_type,
|
||||||
|
pi2.price_desc AS component_curve,
|
||||||
|
pc_mtm_cal.name AS component_calendar,
|
||||||
|
pc_mtm.auto AS component_auto,
|
||||||
|
pc_mtm.fallback AS component_fallback,
|
||||||
|
-- Pricing component (fixation setup — independent of MtM, already populated)
|
||||||
|
pc_idx.price_desc AS pricing_curve,
|
||||||
|
pc_ft.name AS pricing_fix_type,
|
||||||
|
pc.price_source_type AS pricing_source_type,
|
||||||
|
pc.ratio AS pricing_ratio_pct,
|
||||||
|
pc_cal.name AS pricing_calendar,
|
||||||
|
-- Last valuation snapshot (valuation_valuation — most recent run)
|
||||||
|
vv.vv_date AS last_valuation_date,
|
||||||
|
vv.vv_price AS last_valuation_price,
|
||||||
|
vv.vv_quantity AS last_valuation_qty,
|
||||||
|
vv.vv_amount AS last_valuation_amount,
|
||||||
|
vv.vv_base_amount AS last_valuation_base_amount,
|
||||||
|
vv.vv_rate AS last_valuation_rate,
|
||||||
|
-- Current valuation state (valuation_valuation_line — always latest)
|
||||||
|
vvl.vvl_date AS current_valuation_date,
|
||||||
|
vvl.vvl_price AS current_valuation_price,
|
||||||
|
vvl.vvl_quantity AS current_valuation_qty,
|
||||||
|
vvl.vvl_amount AS current_valuation_amount,
|
||||||
|
vvl.vvl_base_amount AS current_valuation_base_amount,
|
||||||
|
vvl.vvl_rate AS current_valuation_rate
|
||||||
|
FROM purchase_strategy ps
|
||||||
|
JOIN purchase_line pl ON pl.id = ps.line
|
||||||
|
JOIN purchase_purchase pur ON pur.id = pl.purchase
|
||||||
|
JOIN party_party pp ON pp.id = pur.party
|
||||||
|
JOIN product_product prd ON prd.id = pl.product
|
||||||
|
JOIN product_template prod ON prod.id = prd.template
|
||||||
|
LEFT JOIN product_uom u ON u.id = pl.unit
|
||||||
|
JOIN mtm_strategy ms ON ms.id = ps.strategy
|
||||||
|
JOIN mtm_scenario msc ON msc.id = ms.scenario
|
||||||
|
LEFT JOIN currency_currency ms_cur ON ms_cur.id = ms.currency
|
||||||
|
LEFT JOIN price_calendar cal ON cal.id = msc.calendar
|
||||||
|
LEFT JOIN pricing_component pc_mtm ON pc_mtm.strategy = ms.id
|
||||||
|
LEFT JOIN price_fixtype ft ON ft.id = pc_mtm.fix_type
|
||||||
|
LEFT JOIN price_price pi2 ON pi2.id = pc_mtm.price_index
|
||||||
|
LEFT JOIN price_calendar pc_mtm_cal ON pc_mtm_cal.id = pc_mtm.calendar
|
||||||
|
LEFT JOIN pricing_component pc ON pc.line = pl.id
|
||||||
|
LEFT JOIN price_price pc_idx ON pc_idx.id = pc.price_index
|
||||||
|
LEFT JOIN price_fixtype pc_ft ON pc_ft.id = pc.fix_type
|
||||||
|
LEFT JOIN price_calendar pc_cal ON pc_cal.id = pc.calendar
|
||||||
|
LEFT JOIN last_vv_pur vv ON vv.line = pl.id
|
||||||
|
LEFT JOIN last_vvl_pur vvl ON vvl.line = pl.id
|
||||||
|
|
||||||
|
UNION ALL
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
'Sale' AS side,
|
||||||
|
s.number,
|
||||||
|
s.state,
|
||||||
|
pp.name,
|
||||||
|
prod.name,
|
||||||
|
sl.from_del,
|
||||||
|
sl.to_del,
|
||||||
|
sl.quantity,
|
||||||
|
u.name,
|
||||||
|
ms.name,
|
||||||
|
ms_cur.symbol,
|
||||||
|
msc.name,
|
||||||
|
msc.valuation_date,
|
||||||
|
msc.use_last_price,
|
||||||
|
cal.name,
|
||||||
|
pc_mtm.price_source_type,
|
||||||
|
pc_mtm.ratio,
|
||||||
|
ft.name,
|
||||||
|
pi2.price_desc,
|
||||||
|
pc_mtm_cal.name,
|
||||||
|
pc_mtm.auto,
|
||||||
|
pc_mtm.fallback,
|
||||||
|
pc_idx.price_desc,
|
||||||
|
pc_ft.name,
|
||||||
|
pc.price_source_type,
|
||||||
|
pc.ratio,
|
||||||
|
pc_cal.name,
|
||||||
|
vv.vv_date,
|
||||||
|
vv.vv_price,
|
||||||
|
vv.vv_quantity,
|
||||||
|
vv.vv_amount,
|
||||||
|
vv.vv_base_amount,
|
||||||
|
vv.vv_rate,
|
||||||
|
vvl.vvl_date,
|
||||||
|
vvl.vvl_price,
|
||||||
|
vvl.vvl_quantity,
|
||||||
|
vvl.vvl_amount,
|
||||||
|
vvl.vvl_base_amount,
|
||||||
|
vvl.vvl_rate
|
||||||
|
FROM sale_strategy ss
|
||||||
|
JOIN sale_line sl ON sl.id = ss.sale_line
|
||||||
|
JOIN sale_sale s ON s.id = sl.sale
|
||||||
|
JOIN party_party pp ON pp.id = s.party
|
||||||
|
JOIN product_product prd ON prd.id = sl.product
|
||||||
|
JOIN product_template prod ON prod.id = prd.template
|
||||||
|
LEFT JOIN product_uom u ON u.id = sl.unit
|
||||||
|
JOIN mtm_strategy ms ON ms.id = ss.strategy
|
||||||
|
JOIN mtm_scenario msc ON msc.id = ms.scenario
|
||||||
|
LEFT JOIN currency_currency ms_cur ON ms_cur.id = ms.currency
|
||||||
|
LEFT JOIN price_calendar cal ON cal.id = msc.calendar
|
||||||
|
LEFT JOIN pricing_component pc_mtm ON pc_mtm.strategy = ms.id
|
||||||
|
LEFT JOIN price_fixtype ft ON ft.id = pc_mtm.fix_type
|
||||||
|
LEFT JOIN price_price pi2 ON pi2.id = pc_mtm.price_index
|
||||||
|
LEFT JOIN price_calendar pc_mtm_cal ON pc_mtm_cal.id = pc_mtm.calendar
|
||||||
|
LEFT JOIN pricing_component pc ON pc.sale_line = sl.id
|
||||||
|
LEFT JOIN price_price pc_idx ON pc_idx.id = pc.price_index
|
||||||
|
LEFT JOIN price_fixtype pc_ft ON pc_ft.id = pc.fix_type
|
||||||
|
LEFT JOIN price_calendar pc_cal ON pc_cal.id = pc.calendar
|
||||||
|
LEFT JOIN last_vv_sale vv ON vv.sale_line = sl.id
|
||||||
|
LEFT JOIN last_vvl_sale vvl ON vvl.sale_line = sl.id
|
||||||
|
|
||||||
|
ORDER BY side, contract;
|
||||||
Reference in New Issue
Block a user