CREATE OR REPLACE VIEW Crystal.VW_CFA_Recur_Capital_Proj
AS
SELECT /*+ ORDERED USE_NL(ProjTransCount WOTransCount MSF668 MSF620 MSFX99 VW_CFA_Transactions MSF667 EstimateCount) INDEX(MSF620 MSF62001IX0) */
MSF660.Project_No,
MSF660.Final_Costs Proj_Final_Costs,
SUBSTR(MSF660.Account_Code, 1, 5) Cost_Centre,
MSF660.Proj_Desc,
MSF660.Pc_Complete,
Crystal.FN_CFA_Master_Data(Recursive.Project_No) Master_Data,
MSF660.Proj_Classifx1,
DECODE(MSF660.Proj_Classifx1, 'Z2', 'Acquisition',
'Z3', 'Acquisition',
'Z4', 'Acquisition',
'Z5', 'Acquisition',
'Z6', 'Disposal',
'Z7', 'Disposal') Acquisition_Disposal,
MSF668.Dir_Act_Cost Proj_Dir_Act_Cost,
MSF668.Revsd_Period Proj_Revsd_Period,
NVL(ProjTransCount.Tran_Count, 1) Act_Count,
MSF620.Work_Order,
MSF620.WO_Desc,
MSF620.Final_Costs WO_Final_Costs,
VW_CFA_Transactions.Tran_Amount WO_Tran,
VW_CFA_Transactions.Full_Period WO_Fin_Period,
NVL(WOTransCount.Tran_Count, 1) WO_Count,
H1.Ref_Code Ref_Code1,
H2.Ref_Code Ref_Code2,
H3.Ref_Code Ref_Code3,
H4.Ref_Code Ref_Code4,
H5.Ref_Code Ref_Code5,
Recursive.RecurseLevel,
SOF.Ref_Code Source_Funds,
DECODE(AssClass.Ref_Code, NULL, 'ZZ',
AssClass.Ref_Code) Cap_Ass_Class,
AssClassName.Table_Desc Cap_Ass_Class_Desc,
AssEval.Ref_Code Cap_Ass_Group,
AssEvalName.Table_Desc Cap_Ass_Group_Desc,
SUBSTR(MSF667.Budget_Code, 1, 3) Budget,
MSF667.Budget_Code,
MSF667.Revsd_Period,
DECODE(MSF667.Exp_Rev_Ind, 'E', MSF667.Dir_Est_Cost,
'R', MSF667.Dir_Est_Cost * -1) Dir_Est_Cost,
NVL(EstimateCount.Estimate_Count, 1) Estimate_Count
FROM
(
SELECT
Project_No,
Level RecurseLevel
FROM
MSF660
WHERE
Dstrct_Code = 'CFA'
START WITH
Project_No IS NOT NULL AND
Parent_Proj = ' ' AND
Capital_Sw = 'Y'
CONNECT BY PRIOR
Project_No = Parent_Proj
) Recursive,
MSF660,
MSF071 H1,
MSF071 H2,
MSF071 H3,
MSF071 H4,
MSF071 H5,
MSF071 AssClass,
MSF010 AssClassName,
MSF071 AssEval,
MSF010 AssEvalName,
MSF071 SOF,
(
SELECT /*+ INDEX(MSF668 MSF66801IX0) */
Project_No,
COUNT(*) Tran_Count
FROM
MSF668
WHERE
Dstrct_Code = 'CFA' AND
Dir_Act_Cost <> 0 AND
Exp_Rev_Ind > ' ' AND
Revsd_Period > '000000'
GROUP BY
Project_No
) ProjTransCount,
(
SELECT /*+ INDEX(MSFX99 MSFX09901IX0) */
Project_No,
COUNT(*) Tran_Count
FROM
MSFX99
WHERE
Dstrct_Code = 'CFA'
GROUP BY
Project_No
) WOTransCount,
MSF668,
MSF620,
MSFX99,
VW_CFA_Transactions,
MSF667,
(
SELECT /*+ INDEX(MSF667 MSF66701IX0) */
Project_No,
SUBSTR(Budget_Code, 1, 3) Budget,
COUNT(*) Estimate_Count
FROM
MSF667
WHERE
Dstrct_Code = 'CFA' AND
Budget_Code > ' ' AND
Revsd_Period > '000000' AND
Category_Code = ' ' AND
Exp_Rev_Ind > ' ' AND
Dir_Est_Cost <> 0
GROUP BY
Project_No,
SUBSTR(Budget_Code, 1, 3)
) EstimateCount
WHERE
MSF660.Project_No = Recursive.Project_No AND
MSF660.Dstrct_Code = 'CFA' AND
MSF660.Proj_Classifx1 BETWEEN 'Z2' AND 'Z7' AND
SUBSTR(MSF660.Account_Code, 1, 5) < '99999' AND
--
H1.Entity_Type(+) = 'PRJ' AND
H1.Entity_Value(+) = 'CFA ' || MSF660.Project_No AND
H1.Ref_No(+) = '020' AND
H1.Seq_Num(+) = '001' AND
--
H2.Entity_Type(+) = 'PRJ' AND
H2.Entity_Value(+) = 'CFA ' || MSF660.Project_No AND
H2.Ref_No(+) = '021' AND
H2.Seq_Num(+) = '001' AND
--
H3.Entity_Type(+) = 'PRJ' AND
H3.Entity_Value(+) = 'CFA ' || MSF660.Project_No AND
H3.Ref_No(+) = '022' AND
H3.Seq_Num(+) = '001' AND
--
H4.Entity_Type(+) = 'PRJ' AND
H4.Entity_Value(+) = 'CFA ' || MSF660.Project_No AND
H4.Ref_No(+) = '023' AND
H4.Seq_Num(+) = '001' AND
--
H5.Entity_Type(+) = 'PRJ' AND
H5.Entity_Value(+) = 'CFA ' || MSF660.Project_No AND
H5.Ref_No(+) = '024' AND
H5.Seq_Num(+) = '001' AND
--
AssClass.Entity_Value(+) = 'CFA ' || MSF660.Project_No AND
AssClass.Entity_Type(+) = 'PRJ' AND
AssClass.Ref_No(+) = '030' AND
AssClass.Seq_Num(+) = '001' AND
--
AssClassName.Table_Code(+) = AssClass.Ref_Code AND
AssClassName.Table_Type(+) = '+CAC' AND
--
AssEval.Entity_Value(+) = 'CFA ' || MSF660.Project_No AND
AssEval.Entity_Type(+) = 'PRJ' AND
AssEval.Ref_No(+) = '031' AND
AssEval.Seq_Num(+) = '001' AND
--
AssEvalName.Table_Code(+) = AssEval.Ref_Code AND
AssEvalName.Table_Type(+) = '+SAG' AND
--
SOF.Entity_Value(+) = 'CFA ' || MSF660.Project_No AND
SOF.Entity_Type(+) = 'PRJ' AND
SOF.Ref_No(+) = '040' AND
SOF.Seq_Num(+) = '001' AND
--
ProjTransCount.Project_No(+) = MSF660.Project_No AND
--
WOTransCount.Project_No(+) = MSF660.Project_No AND
--
MSF668.Project_No(+) = MSF660.Project_No AND
MSF668.Dstrct_Code(+) = 'CFA' AND
MSF668.Dir_Act_Cost(+) <> 0 AND
MSF668.Exp_Rev_Ind(+) > ' ' AND
MSF668.Revsd_Period(+) > '000000' AND
--
MSF620.Project_No(+) = MSF660.Project_No AND
MSF620.Dstrct_Code(+) = 'CFA' AND
--
MSFX99.Work_Order(+) = MSF620.Work_Order AND
MSFX99.Dstrct_Code(+) = 'CFA' AND
--
VW_CFA_Transactions.Dstrct_Code(+) = MSFX99.Dstrct_Code AND
VW_CFA_Transactions.Process_Date(+) = MSFX99.Process_Date AND
VW_CFA_Transactions.Transaction_No(+) = MSFX99.Transaction_No AND
VW_CFA_Transactions.UserNo(+) = MSFX99.UserNo AND
VW_CFA_Transactions.Rec900_Type(+) = MSFX99.Rec900_Type AND
--
MSF667.Project_No(+) = MSF660.Project_No AND
MSF667.Dstrct_Code(+) = 'CFA' AND
MSF667.Budget_Code(+) > ' ' AND
MSF667.Revsd_Period(+) > '000000' AND
MSF667.Category_Code(+) = ' ' AND
MSF667.Exp_Rev_Ind(+) > ' ' AND
MSF667.Dir_Est_Cost(+) <> 0 AND
--
EstimateCount.Project_No(+) = MSF667.Project_No AND
EstimateCount.Budget(+) = SUBSTR(MSF667.Budget_Code, 1, 3);