The content discusses the analysis of the cash flow of an investment required to create a new product. Projected estimates are provided for product revenue, product costs, overheads, and capital investment for each year of the analysis. The cash flow is calculated by summing the cash flows for each year and discounting them for future values to derive the net present value (NPV) of the investment. The analysis uses deterministic modeling, which provides a single point value for the NPV. However, probabilistic modeling, such as Monte Carlo Simulation, can also be used to examine the probability of different outcomes. The equations used in the simulation include calculating the product margin, total profit, and cash flow for each year. The net present value of the investment is defined using the simulation's time periods and discount rate.
------

SET SCHEMA DM_PAL;

-----------------------------------------
---Random sampling process---------------
-----------------------------------------

DROP TABLE PAL_DISTRRANDOM_DISTRPARAM_TAB;
CREATE COLUMN TABLE PAL_DISTRRANDOM_DISTRPARAM_TAB (
    NAME VARCHAR(50),
    VAL VARCHAR(50)
);

DROP TABLE PAL_PARAMETER_TBL;
CREATE COLUMN TABLE PAL_PARAMETER_TBL (
    "PARAM_NAME" VARCHAR (256),
    "INT_VALUE" INTEGER,
    "DOUBLE_VALUE" DOUBLE,
    "STRING_VALUE" VARCHAR (1000)
);

DROP TABLE PAL_DISTRRANDOM_RESULT_TAB_REVENUE;
CREATE COLUMN TABLE PAL_DISTRRANDOM_RESULT_TAB_REVENUE (
    ID INTEGER,
    RANDOM DOUBLE
);

DROP TABLE PAL_DISTRRANDOM_RESULT_TAB_COSTS;
CREATE COLUMN TABLE PAL_DISTRRANDOM_RESULT_TAB_COSTS (
    ID INTEGER,
    RANDOM DOUBLE
);

DROP TABLE PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS;
CREATE COLUMN TABLE PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS (
    ID INTEGER,
    RANDOM DOUBLE
);

DROP TABLE PAL_DISTRRANDOM_RESULT_TAB_INVESTMENT;
CREATE COLUMN TABLE PAL_DISTRRANDOM_RESULT_TAB_INVESTMENT (
    ID INTEGER,
    RANDOM DOUBLE
);

---------------------------
----------YEAR 1 -----------

-----Product revenue------

INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('DISTRIBUTIONNAME', 'NORMAL');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MEAN', '0');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('VARIANCE', '0.0001');

INSERT INTO PAL_PARAMETER_TBL VALUES ('NUM_RANDOM',5000,null,null);
INSERT INTO PAL_PARAMETER_TBL VALUES ('SEED', 0, null, null);

DO BEGIN
  lt_data = SELECT * FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
  lt_param = SELECT * FROM PAL_PARAMETER_TBL;
  CALL "_SYS_AFL"."PAL_DISTRIBUTION_RANDOM"(:lt_data, :lt_param, lt_result);
  INSERT INTO PAL_DISTRRANDOM_RESULT_TAB_REVENUE SELECT * FROM :lt_result;
END;
--SELECT * FROM PAL_DISTRRANDOM_RESULT_TAB_REVENUE;

---------Product Costs---------

DELETE FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('DISTRIBUTIONNAME', 'NORMAL');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MEAN', '1000');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('VARIANCE', '5625');

DO BEGIN
  lt_data = SELECT * FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
  lt_param = SELECT * FROM PAL_PARAMETER_TBL;
  CALL "_SYS_AFL"."PAL_DISTRIBUTION_RANDOM"(:lt_data, :lt_param, lt_result);
  INSERT INTO PAL_DISTRRANDOM_RESULT_TAB_COSTS SELECT * FROM :lt_result;
END;
--SELECT * FROM PAL_DISTRRANDOM_RESULT_TAB_COSTS;

--------OVERHEADS---------

DELETE FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('DISTRIBUTIONNAME', 'UNIFORM');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MIN', '1400');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MAX', '1500');

DO BEGIN
  lt_data = SELECT * FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
  lt_param = SELECT * FROM PAL_PARAMETER_TBL;
  CALL "_SYS_AFL"."PAL_DISTRIBUTION_RANDOM"(:lt_data, :lt_param, lt_result);
  INSERT INTO PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS SELECT * FROM :lt_result;
END;
--SELECT * FROM PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS;

-------INVESTMENT---------

DELETE FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('DISTRIBUTIONNAME', 'NORMAL');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MEAN', '10000');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('VARIANCE', '250000');

DO BEGIN
  lt_data = SELECT * FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
  lt_param = SELECT * FROM PAL_PARAMETER_TBL;
  CALL "_SYS_AFL"."PAL_DISTRIBUTION_RANDOM"(:lt_data, :lt_param, lt_result);
  INSERT INTO PAL_DISTRRANDOM_RESULT_TAB_INVESTMENT SELECT * FROM :lt_result;
END;
--SELECT * FROM PAL_DISTRRANDOM_RESULT_TAB_INVESTMENT;

--------calculate cash flow -------

DROP TABLE PAL_CASHFLOW_YEAR1;
CREATE COLUMN TABLE PAL_CASHFLOW_YEAR1(
    ID INTEGER,
    CASH DOUBLE
);
INSERT INTO PAL_CASHFLOW_YEAR1
    SELECT PAL_DISTRRANDOM_RESULT_TAB_REVENUE.ID,
           PAL_DISTRRANDOM_RESULT_TAB_REVENUE.RANDOM -
           PAL_DISTRRANDOM_RESULT_TAB_COSTS.RANDOM -
           PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS.RANDOM -
           PAL_DISTRRANDOM_RESULT_TAB_INVESTMENT.RANDOM
    FROM PAL_DISTRRANDOM_RESULT_TAB_REVENUE
    LEFT JOIN PAL_DISTRRANDOM_RESULT_TAB_COSTS ON PAL_DISTRRANDOM_RESULT_TAB_REVENUE.ID = PAL_DISTRRANDOM_RESULT_TAB_COSTS.ID 
    LEFT JOIN PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS ON PAL_DISTRRANDOM_RESULT_TAB_REVENUE.ID=PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS.ID
    LEFT JOIN PAL_DISTRRANDOM_RESULT_TAB_INVESTMENT ON PAL_DISTRRANDOM_RESULT_TAB_REVENUE.ID=PAL_DISTRRANDOM_RESULT_TAB_INVESTMENT.ID; 
--SELECT * FROM PAL_CASHFLOW_YEAR1;

---------------------------------
------------YEAR 2 --------------

--product revenue----

DELETE FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('DISTRIBUTIONNAME', 'NORMAL');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MEAN', '3000');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('VARIANCE', '90000');

DELETE FROM PAL_DISTRRANDOM_RESULT_TAB_REVENUE;

DO BEGIN
  lt_data = SELECT * FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
  lt_param = SELECT * FROM PAL_PARAMETER_TBL;
  CALL "_SYS_AFL"."PAL_DISTRIBUTION_RANDOM"(:lt_data, :lt_param, lt_result);
  INSERT INTO PAL_DISTRRANDOM_RESULT_TAB_REVENUE SELECT * FROM :lt_result;
END;
--SELECT * FROM PAL_DISTRRANDOM_RESULT_TAB_REVENUE;

----Product Costs---------

DELETE FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('DISTRIBUTIONNAME', 'NORMAL');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MEAN', '1000');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('VARIANCE', '5625');

DELETE FROM PAL_DISTRRANDOM_RESULT_TAB_COSTS; 

DO BEGIN
  lt_data = SELECT * FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
  lt_param = SELECT * FROM PAL_PARAMETER_TBL;
  CALL "_SYS_AFL"."PAL_DISTRIBUTION_RANDOM"(:lt_data, :lt_param, lt_result);
  INSERT INTO PAL_DISTRRANDOM_RESULT_TAB_COSTS SELECT * FROM :lt_result;
END;
--SELECT * FROM PAL_DISTRRANDOM_RESULT_TAB_COSTS;

----OVERHEADS---------

DELETE FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('DISTRIBUTIONNAME', 'UNIFORM');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MIN', '1800');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MAX', '2200');

DELETE FROM PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS;

DO BEGIN
  lt_data = SELECT * FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
  lt_param = SELECT * FROM PAL_PARAMETER_TBL;
  CALL "_SYS_AFL"."PAL_DISTRIBUTION_RANDOM"(:lt_data, :lt_param, lt_result);
  INSERT INTO PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS SELECT * FROM :lt_result;
END;
--SELECT * FROM PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS;

----INVESTMENT---------

DELETE FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('DISTRIBUTIONNAME', 'NORMAL');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MEAN', '2000');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('VARIANCE', '10000');

DELETE FROM PAL_DISTRRANDOM_RESULT_TAB_INVESTMENT;

DO BEGIN
  lt_data = SELECT * FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
  lt_param = SELECT * FROM PAL_PARAMETER_TBL;
  CALL "_SYS_AFL"."PAL_DISTRIBUTION_RANDOM"(:lt_data, :lt_param, lt_result);
  INSERT INTO PAL_DISTRRANDOM_RESULT_TAB_INVESTMENT SELECT * FROM :lt_result;
END;
--SELECT * FROM PAL_DISTRRANDOM_RESULT_TAB_INVESTMENT;

--------calculate cash flow -------

DROP TABLE PAL_CASHFLOW_YEAR2;
CREATE COLUMN TABLE PAL_CASHFLOW_YEAR2(
    ID INTEGER,
    CASH DOUBLE
);
INSERT INTO PAL_CASHFLOW_YEAR2
    SELECT PAL_DISTRRANDOM_RESULT_TAB_REVENUE.ID,
           PAL_DISTRRANDOM_RESULT_TAB_REVENUE.RANDOM -
           PAL_DISTRRANDOM_RESULT_TAB_COSTS.RANDOM -
           PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS.RANDOM -
           PAL_DISTRRANDOM_RESULT_TAB_INVESTMENT.RANDOM
    FROM PAL_DISTRRANDOM_RESULT_TAB_REVENUE
    LEFT JOIN PAL_DISTRRANDOM_RESULT_TAB_COSTS ON PAL_DISTRRANDOM_RESULT_TAB_REVENUE.ID = PAL_DISTRRANDOM_RESULT_TAB_COSTS.ID 
    LEFT JOIN PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS ON PAL_DISTRRANDOM_RESULT_TAB_REVENUE.ID=PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS.ID
    LEFT JOIN PAL_DISTRRANDOM_RESULT_TAB_INVESTMENT ON PAL_DISTRRANDOM_RESULT_TAB_REVENUE.ID=PAL_DISTRRANDOM_RESULT_TAB_INVESTMENT.ID; 
--SELECT * FROM PAL_CASHFLOW_YEAR2;

-----------------------------
----------YEAR 3 ------------

----product revenue----

DELETE FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('DISTRIBUTIONNAME', 'NORMAL');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MEAN', '8000');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('VARIANCE', '640000');

DELETE FROM PAL_DISTRRANDOM_RESULT_TAB_REVENUE;

DO BEGIN
  lt_data = SELECT * FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
  lt_param = SELECT * FROM PAL_PARAMETER_TBL;
  CALL "_SYS_AFL"."PAL_DISTRIBUTION_RANDOM"(:lt_data, :lt_param, lt_result);
  INSERT INTO PAL_DISTRRANDOM_RESULT_TAB_REVENUE SELECT * FROM :lt_result;
END;
--SELECT * FROM PAL_DISTRRANDOM_RESULT_TAB_REVENUE;

----Product Costs---------

DELETE FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('DISTRIBUTIONNAME', 'NORMAL');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MEAN', '2500');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('VARIANCE', '35156.25');

DELETE FROM PAL_DISTRRANDOM_RESULT_TAB_COSTS; 

DO BEGIN
  lt_data = SELECT * FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
  lt_param = SELECT * FROM PAL_PARAMETER_TBL;
  CALL "_SYS_AFL"."PAL_DISTRIBUTION_RANDOM"(:lt_data, :lt_param, lt_result);
  INSERT INTO PAL_DISTRRANDOM_RESULT_TAB_COSTS SELECT * FROM :lt_result;
END;
--SELECT * FROM PAL_DISTRRANDOM_RESULT_TAB_COSTS;

----Product Costs---------

DELETE FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('DISTRIBUTIONNAME', 'NORMAL');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MEAN', '2500');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('VARIANCE', '35156.25');

DELETE FROM PAL_DISTRRANDOM_RESULT_TAB_COSTS; 

DO BEGIN
  lt_data = SELECT * FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
  lt_param = SELECT * FROM PAL_PARAMETER_TBL;
  CALL "_SYS_AFL"."PAL_DISTRIBUTION_RANDOM"(:lt_data, :lt_param, lt_result);
  INSERT INTO PAL_DISTRRANDOM_RESULT_TAB_COSTS SELECT * FROM :lt_result;
END;
--SELECT * FROM PAL_DISTRRANDOM_RESULT_TAB_COSTS;

----OVERHEADS---------

DELETE FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('DISTRIBUTIONNAME', 'UNIFORM');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MIN', '2200');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MAX', '2800');

DELETE FROM PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS;

DO BEGIN
  lt_data = SELECT * FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
  lt_param = SELECT * FROM PAL_PARAMETER_TBL;
  CALL "_SYS_AFL"."PAL_DISTRIBUTION_RANDOM"(:lt_data, :lt_param, lt_result);
  INSERT INTO PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS SELECT * FROM :lt_result;
END;
--SELECT * FROM PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS;

--------calculate cash flow -------

DROP TABLE PAL_CASHFLOW_YEAR3;
CREATE COLUMN TABLE PAL_CASHFLOW_YEAR3(
    ID INTEGER,
    CASH DOUBLE
);
INSERT INTO PAL_CASHFLOW_YEAR3
    SELECT PAL_DISTRRANDOM_RESULT_TAB_REVENUE.ID,
           PAL_DISTRRANDOM_RESULT_TAB_REVENUE.RANDOM -
           PAL_DISTRRANDOM_RESULT_TAB_COSTS.RANDOM -
           PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS.RANDOM
    FROM PAL_DISTRRANDOM_RESULT_TAB_REVENUE
    LEFT JOIN PAL_DISTRRANDOM_RESULT_TAB_COSTS ON PAL_DISTRRANDOM_RESULT_TAB_REVENUE.ID = PAL_DISTRRANDOM_RESULT_TAB_COSTS.ID 
    LEFT JOIN PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS ON PAL_DISTRRANDOM_RESULT_TAB_REVENUE.ID=PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS.ID; 
--SELECT * FROM PAL_CASHFLOW_YEAR3;

-----------------------------
--------YEAR 4 --------------

--Product revenue---------

DELETE FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('DISTRIBUTIONNAME', 'NORMAL');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MEAN', '18000');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('VARIANCE', '3240000');

DELETE FROM PAL_DISTRRANDOM_RESULT_TAB_REVENUE;

DO BEGIN
  lt_data = SELECT * FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
  lt_param = SELECT * FROM PAL_PARAMETER_TBL;
  CALL "_SYS_AFL"."PAL_DISTRIBUTION_RANDOM"(:lt_data, :lt_param, lt_result);
  INSERT INTO PAL_DISTRRANDOM_RESULT_TAB_REVENUE SELECT * FROM :lt_result;
END;
--SELECT * FROM PAL_DISTRRANDOM_RESULT_TAB_REVENUE;

----Product Costs---------

DELETE FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('DISTRIBUTIONNAME', 'NORMAL');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MEAN', '7000');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('VARIANCE', '275625');

DELETE FROM PAL_DISTRRANDOM_RESULT_TAB_COSTS; 

DO BEGIN
  lt_data = SELECT * FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
  lt_param = SELECT * FROM PAL_PARAMETER_TBL;
  CALL "_SYS_AFL"."PAL_DISTRIBUTION_RANDOM"(:lt_data, :lt_param, lt_result);
  INSERT INTO PAL_DISTRRANDOM_RESULT_TAB_COSTS SELECT * FROM :lt_result;
END;
--SELECT * FROM PAL_DISTRRANDOM_RESULT_TAB_COSTS;

----OVERHEADS---------

DELETE FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('DISTRIBUTIONNAME', 'UNIFORM');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MIN', '2600');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MAX', '3400');

DELETE FROM PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS;

DO BEGIN
  lt_data = SELECT * FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
  lt_param = SELECT * FROM PAL_PARAMETER_TBL;
  CALL "_SYS_AFL"."PAL_DISTRIBUTION_RANDOM"(:lt_data, :lt_param, lt_result);
  INSERT INTO PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS SELECT * FROM :lt_result;
END;
--SELECT * FROM PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS;

--------calculate cash flow -------

DROP TABLE PAL_CASHFLOW_YEAR4;
CREATE COLUMN TABLE PAL_CASHFLOW_YEAR4(
    ID INTEGER,
    CASH DOUBLE
);
INSERT INTO PAL_CASHFLOW_YEAR4
    SELECT PAL_DISTRRANDOM_RESULT_TAB_REVENUE.ID,
           PAL_DISTRRANDOM_RESULT_TAB_REVENUE.RANDOM -
           PAL_DISTRRANDOM_RESULT_TAB_COSTS.RANDOM -
           PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS.RANDOM
    FROM PAL_DISTRRANDOM_RESULT_TAB_REVENUE
    LEFT JOIN PAL_DISTRRANDOM_RESULT_TAB_COSTS ON PAL_DISTRRANDOM_RESULT_TAB_REVENUE.ID = PAL_DISTRRANDOM_RESULT_TAB_COSTS.ID 
    LEFT JOIN PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS ON PAL_DISTRRANDOM_RESULT_TAB_REVENUE.ID=PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS.ID;
--SELECT * FROM PAL_CASHFLOW_YEAR4;

----------------------------
-------YEAR 5 --------------

--Product revenue----

DELETE FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('DISTRIBUTIONNAME', 'NORMAL');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MEAN', '30000');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('VARIANCE', '9000000');

DELETE FROM PAL_DISTRRANDOM_RESULT_TAB_REVENUE;

DO BEGIN
  lt_data = SELECT * FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
  lt_param = SELECT * FROM PAL_PARAMETER_TBL;
  CALL "_SYS_AFL"."PAL_DISTRIBUTION_RANDOM"(:lt_data, :lt_param, lt_result);
  INSERT INTO PAL_DISTRRANDOM_RESULT_TAB_REVENUE SELECT * FROM :lt_result;
END;
--SELECT * FROM PAL_DISTRRANDOM_RESULT_TAB_REVENUE;

----Product Costs---------

DELETE FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('DISTRIBUTIONNAME', 'NORMAL');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MEAN', '10000');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('VARIANCE', '562500');

DELETE FROM PAL_DISTRRANDOM_RESULT_TAB_COSTS; 

DO BEGIN
  lt_data = SELECT * FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
  lt_param = SELECT * FROM PAL_PARAMETER_TBL;
  CALL "_SYS_AFL"."PAL_DISTRIBUTION_RANDOM"(:lt_data, :lt_param, lt_result);
  INSERT INTO PAL_DISTRRANDOM_RESULT_TAB_COSTS SELECT * FROM :lt_result;
END;
--SELECT * FROM PAL_DISTRRANDOM_RESULT_TAB_COSTS;

----OVERHEADS---------

DELETE FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('DISTRIBUTIONNAME', 'UNIFORM');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MIN', '3000');
INSERT INTO PAL_DISTRRANDOM_DISTRPARAM_TAB VALUES ('MAX', '4000');

DELETE FROM PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS;

DO BEGIN
  lt_data = SELECT * FROM PAL_DISTRRANDOM_DISTRPARAM_TAB;
  lt_param = SELECT * FROM PAL_PARAMETER_TBL;
  CALL "_SYS_AFL"."PAL_DISTRIBUTION_RANDOM"(:lt_data, :lt_param, lt_result);
  INSERT INTO PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS SELECT * FROM :lt_result;
END;
--SELECT * FROM PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS;

--------calculate cash flow -------

DROP TABLE PAL_CASHFLOW_YEAR5;
CREATE COLUMN TABLE PAL_CASHFLOW_YEAR5(
    ID INTEGER,
    CASH DOUBLE
);
INSERT INTO PAL_CASHFLOW_YEAR5
    SELECT PAL_DISTRRANDOM_RESULT_TAB_REVENUE.ID,
           PAL_DISTRRANDOM_RESULT_TAB_REVENUE.RANDOM -
           PAL_DISTRRANDOM_RESULT_TAB_COSTS.RANDOM -
           PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS.RANDOM
    FROM PAL_DISTRRANDOM_RESULT_TAB_REVENUE
    LEFT JOIN PAL_DISTRRANDOM_RESULT_TAB_COSTS ON PAL_DISTRRANDOM_RESULT_TAB_REVENUE.ID = PAL_DISTRRANDOM_RESULT_TAB_COSTS.ID 
    LEFT JOIN PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS ON PAL_DISTRRANDOM_RESULT_TAB_REVENUE.ID = PAL_DISTRRANDOM_RESULT_TAB_OVERHEADS.ID;
--SELECT * FROM PAL_CASHFLOW_YEAR5;
