11. references partners (partner_id,)
constraints f_k_partners_payments2 foreign key (project_id)
references projects (project_id)
;)
-------------------------------------------------------------------------------------------------------------
Triggggggggggggggggggggggggggggggggggggggggerrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrs
CREATE OR REPLACE TRIGGER ESTATES_PROJECT.change_unit_status_r
BEFORE INSERT
ON ESTATES_PROJECT.RESERVATION
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE
tmpVar NUMBER;
begin
update units set unit_status = ' Reservation'
where unit_id = :new.unit_id;
end;
----------------------------------------------------------------------------
12. CREATE OR REPLACE TRIGGER ESTATES_PROJECT.change_unit_status2_r
AFTER DELETE
ON ESTATES_PROJECT.RESERVATION
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE
tmpVar NUMBER;
begin
update units set unit_status = null
where unit_id = :new.unit_id;
end;
---------------------------------------------------------------------------------------
CREATE OR REPLACE TRIGGER ESTATES_PROJECT.TRIG_SALES_CALC
BEFORE INSERT OR UPDATE
ON ESTATES_PROJECT.SALES
REFERENCING NEW AS New OLD AS Old
13. FOR EACH ROW
begin
:NEW.TOTAL := :NEW.PROCESS_VALUE + :NEW.ELEVATOR + :NEW.GARAGE + :NEW.FRONTEND +
:NEW.OTHER;
:NEW.RESIDUAL := :NEW.TOTAL - :NEW.PAID;
end;
/
-----------------------------------------
CREATE OR REPLACE TRIGGER ESTATES_PROJECT.CHANGE_UNIT_STATUS_S
AFTER INSERT
ON ESTATES_PROJECT.SALES
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
tmpVar NUMBER;
begin
update units set unit_status = ' Sale'
where unit_id = :new.unit_id;
end;
14. --------------------------------------------
CREATE OR REPLACE TRIGGER ESTATES_PROJECT.change_unit_status2
AFTER DELETE
ON ESTATES_PROJECT.SALES
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE
tmpVar NUMBER;
begin
update units set unit_status = null
where unit_id = :new.unit_id;
end;
----------------------------------------------------------------------------------------
Proooooooooooooooooocedddddddddddddddddddures
CREATE OR REPLACE procedure ESTATES_PROJECT.CALC_PREMIUMS
15. (p_process_id number)
IS
v_item_id number;
v_premium_table_id number;
v_months number;
v_premium_amount number;
v_outstand_amount number;
v_outstand_amount_1 number;
v_due_date date;
V_TOTAL number;
V_PAID number;
V_DURATION number;
V_NUMBER_PREMIUMS number;
begin
delete from premiums
WHERE process_id= p_process_id;
SELECT TOTAL ,PAID ,DURATION ,NUMBER_PREMIUMS
INTO V_TOTAL ,V_PAID ,V_DURATION ,V_NUMBER_PREMIUMS
FROMSALES
WHERE process_id=p_process_id;
v_outstand_amount := V_TOTAL-V_PAID;
v_outstand_amount_1 :=V_TOTAL-V_PAID;
16. v_premium_amount := v_outstand_amount / V_NUMBER_PREMIUMS;
v_months := abs (V_DURATION / V_NUMBER_PREMIUMS)*30.416;
select nvl(max(item_id),0)+1 into v_item_id
from premiums;
FOR i in 0.. V_NUMBER_PREMIUMS
loop
IF I = 1 THEN
v_months := abs (V_DURATION / V_NUMBER_PREMIUMS)*30.416;
ELSE
v_months :=v_months+ abs (V_DURATION / V_NUMBER_PREMIUMS)*30.416;
END IF;
select nvl(max(premium_table_id),0)+1 into v_premium_table_id
from premiums;
IF i <>0 THEN
v_outstand_amount:= v_outstand_amount-v_premium_amount;
END IF;
IF v_outstand_amount <0 THEN
v_outstand_amount:= 0;
END IF;
IF i=0 then
18. DROP FUNCTION ESTATES_PROJECT.BUYER_NAME;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.BUYER_NAME (P_UNIT_ID number)
return varchar2
is
V_BUYER_NAME BUYERS.BUYER_NAME%type;
begin
select BUYER_NAME
into V_BUYER_NAME
from BUYERS B , SALES S
where S.BUYER_ID=B.BUYER_ID
and UNIT_ID =P_UNIT_ID;
return V_BUYER_NAME;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.BUYER_NAME_PROC;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.BUYER_NAME_PROC (P_PROCESS_ID number)
return varchar2
19. is
V_BUYER_NAME BUYERS.BUYER_NAME%type;
begin
select BUYER_NAME
into V_BUYER_NAME
from BUYERS B , SALES S
where S.BUYER_ID=B.BUYER_ID
and PROCESS_ID =P_PROCESS_ID;
return V_BUYER_NAME;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.CALC_PARTNER_PAYMENTS;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.calc_PARTNER_PAYMENTS (P_PARTNER_ID
number)
return number -- calculate project payment for each partners
is
V_PAYMENT_VALUE number;
20. begin
select sum(PAYMENT_VALUE)
into V_PAYMENT_VALUE
from PARTNERS_PAYMENTS
where PARTNER_ID = P_PARTNER_ID;
return V_PAYMENT_VALUE;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.CALC_PARTNER_PERCENTAGE_CALC;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.calc_partner_percentage_calc (p_project_id
number , p_partner_id number)
return number -- calc partner payment percentage in the project
is
v_sum1 number;
v_sum2 number;
v_percentage varchar2 (200; )
begin
21. select sum(payment_value)
into v_sum1
from partners_payments
where project_id = p_project_id;
select sum(payment_value)
into v_sum2
from partners_payments
where project_id = p_project_id
and partner_id =p_partner_id;
v_percentage := round ((v_sum2 / v_sum1 ) * 100;)
return v_percentage;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.CALC_PARTNER_PERCENTAGE_SHOW;
22. CREATE OR REPLACE FUNCTION ESTATES_PROJECT.calc_partner_percentage_show (p_project_id
number , p_partner_id number)
return number -- calc partner payment percentage in the project
is
v_sum1 number;
v_sum2 number;
v_percentage varchar2 (200; )
begin
select sum(payment_value)
into v_sum1
from partners_payments
where project_id = p_project_id;
select sum(payment_value)
into v_sum2
from partners_payments
where project_id = p_project_id
and partner_id =p_partner_id;
v_percentage := round ((v_sum2 / v_sum1 ) * 100;)
25. where project_id = p_project_id;
v_net_profit := v_total_sale - v_total_expense;
return v_net_profit;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.CALC_PROJECT_EXPENSES;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.calc_project_expenses (p_project_id number)
return number -- calculate project expenses
is
v_sum_expences number;
begin
select sum(expense_value)
into v_sum_expences
from expenses
where project_id = p_project_id;
28. v_cost:= round (v_total_expense / v_count_units; )
return v_cost;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.COUNT_PROJECT_UNITS;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.count_project_units (p_project_id number)
return number -- count project units
is
v_project_units number;
begin
select count) *(
into v_project_units
from units
where project_id = p_project_id;
return v_project_units;
end;
30. DROP FUNCTION ESTATES_PROJECT.PROJECT_NAME;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.PROJECT_NAME (P_UNIT_ID number)
return varchar2
is
V_PROJECT_NAME PROJECTS.PROJECT_NAME%type;
begin
select PROJECT_NAME
into V_PROJECT_NAME
from PROJECTS P , UNITS U
where P.PROJECT_ID=U.PROJECT_ID
and UNIT_ID =P_UNIT_ID;
return V_PROJECT_NAME;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.PROJECT_NAME_PROC;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.PROJECT_NAME_PROC (P_PROCESS_ID number)
31. return varchar2
is
V_PROJECT_NAME PROJECTS.PROJECT_NAME%type;
begin
select PROJECT_NAME
into V_PROJECT_NAME
from PROJECTS P , UNITS U ,SALES S
where P.PROJECT_ID=U.PROJECT_ID
and U.UNIT_ID =S. UNIT_ID
AND PROCESS_ID = P_PROCESS_ID;
return V_PROJECT_NAME;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.UNIT_NAME_PROC;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.UNIT_NAME_PROC (P_PROCESS_ID number)
return varchar2
is
32. V_UNIT_NAME UNITS . UNIT_NAME%type;
begin
select UNIT_NAME
into V_UNIT_NAME
from UNITS U , SALES S
WHERE U. UNIT_ID = S.UNIT_ID
AND PROCESS_ID = P_PROCESS_ID;
return V_UNIT_NAME;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.CALC_NET_PROFIT_PERCENTAGE;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.calc_net_profit_percentage (p_project_id
number)
return number ---- calc project net profit percentage
is
v_sum1 number;
v_sum2 number;
33. v_percentage number;
begin
select sum(expense_value)
into v_sum1
from expenses
where project_id = p_project_id;
select calc_profits (p_project_id)
into v_sum2
from dual;
v_percentage := substr(( v_sum2/v_sum1 ) * 100,1,3;)
return v_percentage;
end;
/
--------------------------------------------------------------------------------------------------------------
34. DROP FUNCTION ESTATES_PROJECT.CALC_PARTNER_PROFIT_PERCENTAGE;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.calc_partner_profit_percentage (p_project_id
number , p_partner_id number)
return number -- calc partner percentage from the net profit
is
v_sum1 number;
v_sum2 number;
v_percentage number;
begin
select distinct calc_partner_percentage_calc (p_project_id , p_partner_id)
into v_sum1
from partners_payments
where project_id = p_project_id;
select distinct calc_profits (p_project_id)
into v_sum2
from dual;
v_percentage := round (v_sum2*v_sum1; )
return v_percentage;
35. end;
/
DROP FUNCTION ESTATES_PROJECT.BUYER_NAME;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.BUYER_NAME (P_UNIT_ID number)
return varchar2
is
V_BUYER_NAME BUYERS.BUYER_NAME%type;
begin
select BUYER_NAME
into V_BUYER_NAME
from BUYERS B , SALES S
where S.BUYER_ID=B.BUYER_ID
and UNIT_ID =P_UNIT_ID;
return V_BUYER_NAME;
37. DROP FUNCTION ESTATES_PROJECT.CALC_PARTNER_PAYMENTS;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.calc_PARTNER_PAYMENTS (P_PARTNER_ID
number)
return number -- calculate project payment for each partners
is
V_PAYMENT_VALUE number;
begin
select sum(PAYMENT_VALUE)
into V_PAYMENT_VALUE
from PARTNERS_PAYMENTS
where PARTNER_ID = P_PARTNER_ID;
return V_PAYMENT_VALUE;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.CALC_PARTNER_PERCENTAGE_CALC;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.calc_partner_percentage_calc (p_project_id
number , p_partner_id number)
38. return number -- calc partner payment percentage in the project
is
v_sum1 number;
v_sum2 number;
v_percentage varchar2 (200; )
begin
select sum(payment_value)
into v_sum1
from partners_payments
where project_id = p_project_id;
select sum(payment_value)
into v_sum2
from partners_payments
where project_id = p_project_id
and partner_id =p_partner_id;
v_percentage := round ((v_sum2 / v_sum1 ) * 100;)
return v_percentage;
40. from partners_payments
where project_id = p_project_id
and partner_id =p_partner_id;
v_percentage := round ((v_sum2 / v_sum1 ) * 100;)
return v_percentage;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.CALC_PART_PAYMENTS_FOR_PROJECT;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.calc_PART_PAYMENTS_FOR_PROJECT
(p_project_id number ,P_PARTNER_ID number)
return number -- calculate project payment for each partners
is
V_PAYMENT_VALUE number;
begin
41. select sum(PAYMENT_VALUE)
into V_PAYMENT_VALUE
from PARTNERS_PAYMENTS
where project_id = p_project_id
and PARTNER_ID = P_PARTNER_ID;
return V_PAYMENT_VALUE;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.CALC_PROFITS;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.calc_profits (p_project_id number)
return number -- calc project net profit
is
v_total_sale number;
v_total_expense number;
v_net_profit number;
begin
select sum (total)
42. into v_total_sale
from sales , units
where sales .unit_id = units.unit_id
and project_id = p_project_id;
select sum (expense_value)
into v_total_expense
from expenses
where project_id = p_project_id;
v_net_profit := v_total_sale - v_total_expense;
return v_net_profit;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.CALC_PROJECT_EXPENSES;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.calc_project_expenses (p_project_id number)
return number -- calculate project expenses
is
v_sum_expences number;
43. begin
select sum(expense_value)
into v_sum_expences
from expenses
where project_id = p_project_id;
return v_sum_expences;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.CALC_PROJECT_PAYMENTS;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.calc_project_PAYMENTS (p_project_idnumber)
return number -- calculate project payment
is
V_PAYMENT_VALUE number;
begin
44. select sum(PAYMENT_VALUE)
into V_PAYMENT_VALUE
from PARTNERS_PAYMENTS
where project_id = p_project_id;
return V_PAYMENT_VALUE;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.COST_PER_UNIT;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.cost_per_unit (P_PROJECT_ID number)
return number -- calc cost for each unit
is
v_total_expense number;
v_count_units number;
v_cost number;
begin
select sum (expense_value)
into v_total_expense
45. from expenses
where project_id =P_PROJECT_ID;
select count (unit_id)
into v_count_units
from units
where project_id =P_PROJECT_ID;
v_cost:= round (v_total_expense / v_count_units; )
return v_cost;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.COUNT_PROJECT_UNITS;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.count_project_units (p_project_id number)
return number -- count project units
is
v_project_units number;
begin
46. select count) *(
into v_project_units
from units
where project_id = p_project_id;
return v_project_units;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.COUNT_SOLD_UNITS;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.count_sold_units (p_project_id number)
return number -- count sold units
is
v_sold_units number;
begin
select count(PROCESS_ID)
into v_sold_units
from sales , units
where units .unit_id = sales .unit_id
47. and units .project_id =p_project_id;
return v_sold_units;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.PROJECT_NAME;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.PROJECT_NAME (P_UNIT_ID number)
return varchar2
is
V_PROJECT_NAME PROJECTS.PROJECT_NAME%type;
begin
select PROJECT_NAME
into V_PROJECT_NAME
from PROJECTS P , UNITS U
where P.PROJECT_ID=U.PROJECT_ID
and UNIT_ID =P_UNIT_ID;
return V_PROJECT_NAME;
end;
49. DROP FUNCTION ESTATES_PROJECT.UNIT_NAME_PROC;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.UNIT_NAME_PROC (P_PROCESS_ID number)
return varchar2
is
V_UNIT_NAME UNITS . UNIT_NAME%type;
begin
select UNIT_NAME
into V_UNIT_NAME
from UNITS U , SALES S
WHERE U. UNIT_ID = S.UNIT_ID
AND PROCESS_ID = P_PROCESS_ID;
return V_UNIT_NAME;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.CALC_NET_PROFIT_PERCENTAGE;
50. CREATE OR REPLACE FUNCTION ESTATES_PROJECT.calc_net_profit_percentage (p_project_id
number)
return number ---- calc project net profit percentage
is
v_sum1 number;
v_sum2 number;
v_percentage number;
begin
select sum(expense_value)
into v_sum1
from expenses
where project_id = p_project_id;
select calc_profits (p_project_id)
into v_sum2
from dual;
v_percentage := substr(( v_sum2/v_sum1 ) * 100,1,3;)
51. return v_percentage;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.CALC_PARTNER_PROFIT_PERCENTAGE;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.calc_partner_profit_percentage (p_project_id
number , p_partner_id number)
return number -- calc partner percentage from the net profit
is
v_sum1 number;
v_sum2 number;
v_percentage number;
begin
select distinct calc_partner_percentage_calc (p_project_id , p_partner_id)
into v_sum1
from partners_payments
where project_id = p_project_id;
select distinct calc_profits (p_project_id)
into v_sum2