CREATE OR REPLACE VIEW public.vw_bi_itsa_physical_open_costs AS WITH valuation_info AS ( SELECT pvl."intContractId", pvl."intContractLineId", pvl."strState", avg(pvl."dblPrice") AS "avgPrice", (avg(pvl."dblMtmPrice"))::numeric(18,2) AS "avgMtmPrice" FROM vw_utility_physical_valuation_line pvl GROUP BY pvl."intContractId", pvl."intContractLineId", pvl."strState" ), contract_open_quantity AS ( SELECT 'Purchase'::text AS "TradeType", pc."intPurchaseLineId" AS "TradeLineId", pc."dblTheoriticalQuantity" AS "TheoriticalQuantity", pc."dblInInstructedQuantity" AS "InstructedQuantity", CASE WHEN (pc."ysnFinished" = true) THEN (0)::numeric(18,3) WHEN ((pc."dblTheoriticalQuantity")::double precision > pc."dblInInstructedQuantity") THEN (((pc."dblTheoriticalQuantity")::double precision - pc."dblInInstructedQuantity"))::numeric(18,3) ELSE (0)::numeric(18,3) END AS "OpenQuantity", CASE WHEN (pc."ysnFinished" = true) THEN (0)::numeric(18,3) WHEN ((pc."dblTheoriticalQuantity")::double precision > pc."dblInInstructedQuantity") THEN (((pc."dblTheoriticalQuantity")::double precision - pc."dblInInstructedQuantity"))::numeric(18,3) ELSE (0)::numeric(18,3) END AS "OpenQuantitySigned", COALESCE(vi."avgMtmPrice", (0)::numeric(18,2)) AS "AvgMtmPrice", pc."dblTheoriticalQuantity" AS "TheoriticalQuantitySigned" FROM (vw_utility_purchase_physical_contract pc LEFT JOIN valuation_info vi ON ((pc."intPurchaseLineId" = vi."intContractLineId"))) WHERE (1 = 1) UNION ALL SELECT 'Sale'::text AS "TradeType", pc."intSaleLineId" AS "TradeLineId", pc."dblTheoreticalQuantity" AS "TheoriticalQuantity", pc."dblInstructedQuantity" AS "InstructedQuantity", CASE WHEN (pc."ysnFinished" = true) THEN (0)::numeric(18,3) WHEN ((pc."dblTheoreticalQuantity")::double precision > pc."dblInstructedQuantity") THEN (((pc."dblTheoreticalQuantity")::double precision - pc."dblInstructedQuantity"))::numeric(18,3) ELSE (0)::numeric(18,3) END AS "OpenQuantity", ( CASE WHEN (pc."ysnFinished" = true) THEN (0)::numeric(18,3) WHEN ((pc."dblTheoreticalQuantity")::double precision > pc."dblInstructedQuantity") THEN (((pc."dblTheoreticalQuantity")::double precision - pc."dblInstructedQuantity"))::numeric(18,3) ELSE (0)::numeric(18,3) END * ('-1'::integer)::numeric) AS "OpenQuantitySigned", COALESCE(vi."avgMtmPrice", (0)::numeric(18,2)) AS "AvgMtmPrice", (pc."dblTheoreticalQuantity" * ('-1'::integer)::numeric) AS "TheoriticalQuantitySigned" FROM (vw_utility_sale_physical_contract pc LEFT JOIN valuation_info vi ON ((pc."intSaleLineId" = vi."intContractLineId"))) WHERE (1 = 1) ) SELECT 1 AS "Group Order", 'Price'::text AS "Group Type", ctr."intPurchaseLineId" AS "intTradeLineId", 'Fixed Price'::character varying AS "Line Description", pur."dblUnitPrice" AS "Price", opq."OpenQuantitySigned" AS "Open Quantity Signed", ((opq."OpenQuantitySigned" * pur."dblUnitPrice") * ('-1'::integer)::numeric) AS "Open Cost Amount", 1 AS "intPriceGroupId", ctr."dtmEstimatedBLDate" AS "Estimated BL Date", opq."TheoriticalQuantitySigned" AS "Contract Quantity Signed", 'Price'::text AS "Line Group" FROM ((vw_utility_dim_physical_purchase_contract ctr JOIN vw_utility_purchase_physical_contract pur ON ((ctr."intPurchaseLineId" = pur."intPurchaseLineId"))) JOIN contract_open_quantity opq ON (((ctr."intPurchaseLineId" = opq."TradeLineId") AND (opq."TradeType" = 'Purchase'::text)))) WHERE (((ctr."strPricingType")::text = 'priced'::text) AND (opq."OpenQuantity" <> (0)::numeric)) UNION ALL SELECT 2 AS "Group Order", 'MTM'::text AS "Group Type", ctr."intPurchaseLineId" AS "intTradeLineId", mtm."strComponentCurve" AS "Line Description", opq."AvgMtmPrice" AS "Price", opq."OpenQuantitySigned" AS "Open Quantity Signed", (opq."OpenQuantitySigned" * opq."AvgMtmPrice") AS "Open Cost Amount", 3 AS "intPriceGroupId", ctr."dtmEstimatedBLDate" AS "Estimated BL Date", opq."TheoriticalQuantitySigned" AS "Contract Quantity Signed", 'MTM'::text AS "Line Group" FROM ((vw_utility_physical_mtm_definition mtm JOIN vw_utility_dim_physical_purchase_contract ctr ON ((mtm."intContractLineId" = ctr."intPurchaseLineId"))) JOIN contract_open_quantity opq ON (((ctr."intPurchaseLineId" = opq."TradeLineId") AND (opq."TradeType" = 'Purchase'::text)))) WHERE ((mtm."strContractType" = 'Purchase'::text) AND (opq."OpenQuantity" <> (0)::numeric)) UNION ALL SELECT 3 AS "Group Order", 'Fee'::text AS "Group Type", fees."intContractLineId" AS "intTradeLineId", fees."strProduct" AS "Line Description", fees."dblPrice" AS "Price", opq."OpenQuantitySigned" AS "Open Quantity Signed", (((( CASE WHEN ((fees."strPayOrRec")::text = 'pay'::text) THEN 1 ELSE '-1'::integer END)::numeric * opq."OpenQuantity") * fees."dblPrice") * ('-1'::integer)::numeric) AS "Open Cost Amount", 2 AS "intPriceGroupId", ctr."dtmEstimatedBLDate" AS "Estimated BL Date", opq."TheoriticalQuantitySigned" AS "Contract Quantity Signed", fees."strProductGroup" AS "Line Group" FROM ((vw_utility_contract_fees fees JOIN vw_utility_dim_physical_purchase_contract ctr ON ((fees."intContractLineId" = ctr."intPurchaseLineId"))) JOIN contract_open_quantity opq ON (((ctr."intPurchaseLineId" = opq."TradeLineId") AND (opq."TradeType" = 'Purchase'::text)))) WHERE ((fees."strContractType" = 'Purchase'::text) AND (opq."OpenQuantity" <> (0)::numeric)) UNION ALL SELECT 1 AS "Group Order", 'Price'::text AS "Group Type", ctr."intSaleLineId" AS "intTradeLineId", 'Fixed Price'::character varying AS "Line Description", sale."dblUnitPrice" AS "Price", opq."OpenQuantitySigned" AS "Open Quantity Signed", ((opq."OpenQuantitySigned" * sale."dblUnitPrice") * ('-1'::integer)::numeric) AS "Open Cost Amount", 1 AS "intPriceGroupId", ctr."dtmEstimatedBLDate" AS "Estimated BL Date", opq."TheoriticalQuantitySigned" AS "Contract Quantity Signed", 'Price'::text AS "Line Group" FROM ((vw_utility_dim_physical_sale_contract ctr JOIN vw_utility_sale_physical_contract sale ON ((ctr."intSaleLineId" = sale."intSaleLineId"))) JOIN contract_open_quantity opq ON (((ctr."intSaleLineId" = opq."TradeLineId") AND (opq."TradeType" = 'Sale'::text)))) WHERE (((ctr."strPricingType")::text = 'priced'::text) AND (opq."OpenQuantity" <> (0)::numeric)) UNION ALL SELECT 2 AS "Group Order", 'MTM'::text AS "Group Type", ctr."intSaleLineId" AS "intTradeLineId", mtm."strComponentCurve" AS "Line Description", opq."AvgMtmPrice" AS "Price", opq."OpenQuantitySigned" AS "Open Quantity Signed", (opq."OpenQuantitySigned" * opq."AvgMtmPrice") AS "Open Cost Amount", 3 AS "intPriceGroupId", ctr."dtmEstimatedBLDate" AS "Estimated BL Date", opq."TheoriticalQuantitySigned" AS "Contract Quantity Signed", 'MTM'::text AS "Line Group" FROM ((vw_utility_physical_mtm_definition mtm JOIN vw_utility_dim_physical_sale_contract ctr ON ((mtm."intContractLineId" = ctr."intSaleLineId"))) JOIN contract_open_quantity opq ON (((ctr."intSaleLineId" = opq."TradeLineId") AND (opq."TradeType" = 'Sale'::text)))) WHERE ((mtm."strContractType" = 'Sale'::text) AND (opq."OpenQuantity" <> (0)::numeric)) UNION ALL SELECT 3 AS "Group Order", 'Fee'::text AS "Group Type", fees."intContractLineId" AS "intTradeLineId", fees."strProduct" AS "Line Description", fees."dblPrice" AS "Price", opq."OpenQuantitySigned" AS "Open Quantity Signed", (((( CASE WHEN ((fees."strPayOrRec")::text = 'pay'::text) THEN 1 ELSE '-1'::integer END)::numeric * opq."OpenQuantity") * fees."dblPrice") * ('-1'::integer)::numeric) AS "Open Cost Amount", 2 AS "intPriceGroupId", ctr."dtmEstimatedBLDate" AS "Estimated BL Date", opq."TheoriticalQuantitySigned" AS "Contract Quantity Signed", fees."strProductGroup" AS "Line Group" FROM ((vw_utility_contract_fees fees JOIN vw_utility_dim_physical_sale_contract ctr ON ((fees."intContractLineId" = ctr."intSaleLineId"))) JOIN contract_open_quantity opq ON (((ctr."intSaleLineId" = opq."TradeLineId") AND (opq."TradeType" = 'Sale'::text)))) WHERE ((fees."strContractType" = 'Sale'::text) AND (opq."OpenQuantity" <> (0)::numeric));;