Files
Implementation_ITSA/Database Backups/SQL Views/vw_fx_running.sql
AzureAD\SylvainDUVERNAY 832a142e87 Commit all views for ITSA
2026-03-24 14:40:53 +01:00

49 lines
2.4 KiB
SQL

CREATE OR REPLACE VIEW public.vw_fx_running AS
WITH forex_event AS (
SELECT max(forex.value_date) AS event_date,
'Execution FX'::text AS type,
max(forex.buy_amount) AS amount,
forex.number AS event_ref,
string_agg((p.number)::text, ', '::text) AS linked_purchase
FROM ((forex_forex forex
LEFT JOIN forex_cover_physical_contract fcpc ON ((fcpc.forex = forex.id)))
LEFT JOIN purchase_purchase p ON ((fcpc.contract = p.id)))
WHERE (forex.move IS NOT NULL)
GROUP BY forex.number
), all_events AS (
SELECT forex_event.event_date,
forex_event.type,
forex_event.amount,
forex_event.event_ref,
forex_event.linked_purchase
FROM forex_event
UNION ALL
SELECT max(am.post_date) AS event_date,
'Payment P'::text AS type,
(- max(aml.amount_second_currency)) AS amount,
max((p.number)::text) AS event_ref,
max(fe.linked_purchase) AS linked_purchase
FROM (((((((((((forex_forex forex
LEFT JOIN forex_event fe ON (((fe.event_ref)::text = (forex.number)::text)))
LEFT JOIN forex_cover_physical_contract fcpc ON ((forex.id = fcpc.forex)))
LEFT JOIN purchase_purchase p ON ((fcpc.contract = p.id)))
LEFT JOIN purchase_line pl ON ((pl.purchase = p.id)))
LEFT JOIN lot_lot ll ON ((pl.id = ll.line)))
LEFT JOIN account_invoice_line ail ON ((ll.invoice_line_prov = ail.id)))
LEFT JOIN account_invoice_line ail2 ON ((ll.invoice_line = ail2.id)))
LEFT JOIN account_invoice ai ON ((ail.invoice = ai.id)))
LEFT JOIN account_invoice ai2 ON ((ail2.invoice = ai2.id)))
LEFT JOIN account_move am ON (((split_part((am.origin)::text, ','::text, 1) = 'account.invoice'::text) AND ((ai.id = (split_part((am.origin)::text, ','::text, 2))::integer) OR (ai2.id = (split_part((am.origin)::text, ','::text, 2))::integer)))))
LEFT JOIN account_move_line aml ON ((am.id = aml.move)))
WHERE ((forex.move IS NOT NULL) AND (aml.reconciliation > 0))
GROUP BY forex.number
)
SELECT event_date,
type,
amount,
event_ref,
linked_purchase,
sum(amount) OVER (ORDER BY event_date) AS running_amount
FROM all_events
ORDER BY event_date;;