SlideShare a Scribd company logo
1 of 52
--(projects)
CREATE TABLE projects
(
project_id number,
project_name varchar2 (200,)
no_of_partners number,
start_date date,
project_type varchar2 (200, )
no_of_apartments number,
project_address varchar2 (200,)
total_expenses number,
nots varchar2 (500,)
constraint pk_project primary key (project_id;) )
---------------------------------------------------------------------------------------------------
--(partners)
CREATE TABLE partners
(
partner_id number,
partner_name varchar2 (200,)
mobile1 number,
mobile2 number,
partner_address varchar2 (200,)
nots varchar2 (500,)
constraint pk_partners primary key (partner_id;) )
-------------------------------------------------------------------------------------------
--bridge table ( projects_partners)
CREATE TABLE projects_partners
(
project_id number,
partner_id number,
participate_percentage varchar2 (200,)
constraint pk_projects_partners primary key (project_id ,partner_id,)
constraint fk_projects foreign key (project_id)
references projects (project_id,)
constraints fk_partners foreign key ( partner_id)
references partners (partner_id;) )
--------------------------------------------------------------------------------------------
--(expenses)
CREATE TABLE expenses
(
expense_id number,
expense_name varchar2 (200) not null,
expense_date date,
expense_value number,
expense_type number,
invoice_number number,
project_id number,
notes varchar2 (200,)
constraint pk_expenses primary key (expense_id;))
------------------------------------------------------------------------------------------------------------
--(expense_type)
CREATE TABLE expense_type
(
expense_type_id number,
expense_type_name varchar2 (200) not null,
constraint pk_expense_type primary key (expense_type_id;) )
-----------------------------------------------------------------------------------------------------------
--(sub_partners)
CREATE TABLE sub_partners
(
sub_partner_id number,
sub_partner_name varchar2 (200,)
mobile1 number,
mobile2 number,
sub_partner_address varchar2 (200,)
nots varchar2 (500,)
constraint pk_sub_partners primary key (sub_partner_id;) )
--------------------------------------------------------------------------------------------------------------
--(specializations)
CREATE TABLE specializations
(
specialization_id number,
specialization_type varchar2 (200) not null,
constraint pk_specializations primary key (specialization_id;) )
--------------------------------------------------------------------------------------------------------------
CANCEL --bridge table ( sub_part_specializations)
CREATE TABLE sub_part_specializations
(
sub_partner_id number,
specialization_id number,
constraint pk_sub_part_specializations primary key (sub_partner_id , specialization_id,)
constraint fk_sub_part_specializations1 foreign key (sub_partner_id)
references sub_partners (sub_partner_id,)
constraint fk_sub_part_specializations2 foreign key (specialization_id)
references specializations (specialization_id);)
---------------------------------------------------------------------------------------------------------------
alter table expenses add constraint fk_expense_type
foreign key (expense_type)
references expense_type (expense_type_id; )
------------------------------------------------------------------------------------------------------------------
--(units)
create table units
(
unit_id number,
unit_name varchar2 (200, )
unit_size number,
unit_ntype varchar2 (200, )
unit_direction varchar2 (200, )
unit_forward varchar2 (200, )
unit_park varchar2 (200,)
unit_price number,
project_id number,
notes varchar2 (200,)
constraints p_k_unites primary key (unit_id, )
constraints f_k_unites foreign key (project_id)
references projects (project_id)
)
-------------------------------------------------------------------------------------------------------
--(pro_sub_part_specializations)
CREATE TABLE pro_sub_part_specializations
(
project_id number,
sub_partner_id number,
SPECIALIZATION_ID number,
constraint pk_projects_sub_partners primary key (project_id ,partner_id,SPECIALIZATION_ID,)
constraint fk_projects foreign key (project_id)
references projects (project_id,)
constraints fk_sub_partners foreign key ( partner_id)
references partners (partner_id)
Constraint fk_SPECIALIZATIONS foreign key (SPECIALIZATION_ID)
references SPECIALIZATIONS (SPECIALIZATION_ID ) SPECIALIZATIONS;)
-------------------------------------------------------------------------------------------------------------
--(SALES)
CREATE TABLE SALES
(
PROCESS_ID NUMBER,
PROCESS_VALUE NUMBER,
ELEVATOR NUMBER,
GARAGE NUMBER,
FRONTEND NUMBER,
OTHER NUMBER,
TOTAL NUMBER,
PAID NUMBER,
RESIDUAL NUMBER,
PROCESS_DATE DATE,
UNIT_ID NUMBER,
BUYER_ID NUMBER,
INSTALLMENT NUMBER,
DURATION NUMBER,
NUMBER_PREMIUMS NUMBER,
CONSTRAINTS PK_SALES PRIMARY KEY (PROCESS_ID, )
CONSTRAINTS FK_SALES FOREIGN KEY ( UNIT_ID)
REFERENCES UNITS ( UNIT_ID)
;)
-------------------------------------------------------------------------------------------------------------
ALTER TABLE SALES
ADD CONSTRAINTS FK_SALES2 FOREIGN KEY (BUYER_ID)
REFERENCES BUYERS (BUYER_ID; )
-------------------------------------------------------------------------------------------------------------
--(BUYERS)
CREATE TABLE BUYERS
(
BUYER_ID NUMBER,
BUYER_NAME VARCHAR2(50, )
BUYER_ADDRESS VARCHAR2(200,)
MOBILE1 NUMBER,
MOBILE2 NUMBER,
EMAIL VARCHAR2(200,)
NATIONAL_NUMBER NUMBER (14, )
CONSTRAINTS PK_BUYERS PRIMARY KEY (BUYER_ID)
;)
-------------------------------------------------------------------------------------------------------------
--(PREMIUMS)
CREATE TABLE PREMIUMS
(
premium_table_id number primary key,
item_id number,
premium_id number,
buyer_name varchar2 (200,)
project_name varchar2 (200,)
unit_name varchar2 (200,)
total_amount number,
premium_amount number,
paid_amount number,
outstand_amount number,
due_date date,
process_id number
)
--------------------------------------------------------------------------------------------------------------
--(FORM_ERROR_TRACE)
CREATE TABLE FORM_ERROR_TRACE
(
e_user varchar2(30,)
e_date date,
e_code varchar2(20,)
e_message varchar2(200)
;)
--------------------------------------------------------------------------------------------------------------
--(partners_payments)
CREATE TABLE partners_payments
(
payment_id number,
payment_value number,
payment_date date,
partner_id number,
project_id number,
notes varchar2(300,)
constraints p_k_partners_payments primary key (payment_id,)
constraints f_k_partners_payments1 foreign key (partner_id)
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;
----------------------------------------------------------------------------
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
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;
--------------------------------------------
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
(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;
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
insert into premiums
values (v_premium_table_id , v_item_id ,i,BUYER_NAME_PROC (p_process_id)
,PROJECT_NAME_PROC (p_process_id, )
UNIT_NAME_PROC (p_process_id) ,V_TOTAL , NULL , V_PAID , v_outstand_amount, sysdate
,p_process_id; )
ELSE
insert into premiums
values (v_premium_table_id , v_item_id ,i,null,null,null ,NULL , ceil (v_premium_amount, )
NULL ,ceil (v_outstand_amount),sysdate+v_months,
p_process_id; )
END IF;
END loop;
END;
/
---------------------------------------------------------------------------------------------------------------------------
------------------------------
FUNNNNNNNNNNNNNNNNNNNNNNNNNNNCTIONNNNNNNNNNNNNNNNNNNNNNNS
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
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;
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
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;
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;)
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
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)
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;
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
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
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
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
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;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.PROJECT_NAME_PROC;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.PROJECT_NAME_PROC (P_PROCESS_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 ,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
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;
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;
/
--------------------------------------------------------------------------------------------------------------
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;
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;
end;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.BUYER_NAME_PROC;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.BUYER_NAME_PROC (P_PROCESS_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 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;
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
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;
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;)
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
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)
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;
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
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
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
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
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;
/
--------------------------------------------------------------------------------------------------------------
DROP FUNCTION ESTATES_PROJECT.PROJECT_NAME_PROC;
CREATE OR REPLACE FUNCTION ESTATES_PROJECT.PROJECT_NAME_PROC (P_PROCESS_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 ,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
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;
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;
/
--------------------------------------------------------------------------------------------------------------
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;
end;
/

More Related Content

What's hot

Systems and methods for visual presentation and selection of ivr menu
Systems and methods for visual presentation and selection of ivr menuSystems and methods for visual presentation and selection of ivr menu
Systems and methods for visual presentation and selection of ivr menuTal Lavian Ph.D.
 
More than po: Debugging in LLDB
More than po: Debugging in LLDBMore than po: Debugging in LLDB
More than po: Debugging in LLDBMichele Titolo
 
Mnesiaで分散ノードに入門してみた
Mnesiaで分散ノードに入門してみたMnesiaで分散ノードに入門してみた
Mnesiaで分散ノードに入門してみたTakahiro Kobaru
 
Systems and methods for visual presentation and selection of ivr menu
Systems and methods for visual presentation and selection of ivr menuSystems and methods for visual presentation and selection of ivr menu
Systems and methods for visual presentation and selection of ivr menuTal Lavian Ph.D.
 
More than `po`: Debugging in lldb
More than `po`: Debugging in lldbMore than `po`: Debugging in lldb
More than `po`: Debugging in lldbMichele Titolo
 
Database management system file
Database management system fileDatabase management system file
Database management system fileAnkit Dixit
 

What's hot (7)

Systems and methods for visual presentation and selection of ivr menu
Systems and methods for visual presentation and selection of ivr menuSystems and methods for visual presentation and selection of ivr menu
Systems and methods for visual presentation and selection of ivr menu
 
More than po: Debugging in LLDB
More than po: Debugging in LLDBMore than po: Debugging in LLDB
More than po: Debugging in LLDB
 
Quick reference for cql
Quick reference for cqlQuick reference for cql
Quick reference for cql
 
Mnesiaで分散ノードに入門してみた
Mnesiaで分散ノードに入門してみたMnesiaで分散ノードに入門してみた
Mnesiaで分散ノードに入門してみた
 
Systems and methods for visual presentation and selection of ivr menu
Systems and methods for visual presentation and selection of ivr menuSystems and methods for visual presentation and selection of ivr menu
Systems and methods for visual presentation and selection of ivr menu
 
More than `po`: Debugging in lldb
More than `po`: Debugging in lldbMore than `po`: Debugging in lldb
More than `po`: Debugging in lldb
 
Database management system file
Database management system fileDatabase management system file
Database management system file
 

Viewers also liked

Science Inquiry Assignment
Science Inquiry AssignmentScience Inquiry Assignment
Science Inquiry AssignmentKassaMarie Galan
 
Administración juridica
Administración juridicaAdministración juridica
Administración juridicaFlor Diaz
 
Commercial & research landscape for smart irrigation systems
Commercial & research landscape for smart irrigation systemsCommercial & research landscape for smart irrigation systems
Commercial & research landscape for smart irrigation systemsMuhammad Yaseen Aftab
 
Astrid gonzález biografia
Astrid gonzález biografiaAstrid gonzález biografia
Astrid gonzález biografiaAstrid Gonzalez
 
Advice on academic writing.
Advice on academic writing.Advice on academic writing.
Advice on academic writing.Johanna Luján
 
Analyzing the Integration of Brazilian Financial Markets
Analyzing the Integration of Brazilian Financial MarketsAnalyzing the Integration of Brazilian Financial Markets
Analyzing the Integration of Brazilian Financial MarketsUKinBrazilNetwork
 
Smart Irrigation System: Hardware Architecture for WaRM project
Smart Irrigation System: Hardware Architecture for WaRM projectSmart Irrigation System: Hardware Architecture for WaRM project
Smart Irrigation System: Hardware Architecture for WaRM projectMuhammad Yaseen Aftab
 
A Smart Safety Gadget for Avoiding Accidents in Warehouse Environment
A Smart Safety Gadget for Avoiding Accidents in Warehouse EnvironmentA Smart Safety Gadget for Avoiding Accidents in Warehouse Environment
A Smart Safety Gadget for Avoiding Accidents in Warehouse EnvironmentMuhammad Yaseen Aftab
 
Contratos administrativos
Contratos administrativosContratos administrativos
Contratos administrativosFlor Diaz
 

Viewers also liked (12)

PL_PKG_TASK
PL_PKG_TASKPL_PKG_TASK
PL_PKG_TASK
 
Science Inquiry Assignment
Science Inquiry AssignmentScience Inquiry Assignment
Science Inquiry Assignment
 
Administración juridica
Administración juridicaAdministración juridica
Administración juridica
 
ZARAH HAFEEZ
ZARAH HAFEEZZARAH HAFEEZ
ZARAH HAFEEZ
 
Inquiry 2
Inquiry 2Inquiry 2
Inquiry 2
 
Commercial & research landscape for smart irrigation systems
Commercial & research landscape for smart irrigation systemsCommercial & research landscape for smart irrigation systems
Commercial & research landscape for smart irrigation systems
 
Astrid gonzález biografia
Astrid gonzález biografiaAstrid gonzález biografia
Astrid gonzález biografia
 
Advice on academic writing.
Advice on academic writing.Advice on academic writing.
Advice on academic writing.
 
Analyzing the Integration of Brazilian Financial Markets
Analyzing the Integration of Brazilian Financial MarketsAnalyzing the Integration of Brazilian Financial Markets
Analyzing the Integration of Brazilian Financial Markets
 
Smart Irrigation System: Hardware Architecture for WaRM project
Smart Irrigation System: Hardware Architecture for WaRM projectSmart Irrigation System: Hardware Architecture for WaRM project
Smart Irrigation System: Hardware Architecture for WaRM project
 
A Smart Safety Gadget for Avoiding Accidents in Warehouse Environment
A Smart Safety Gadget for Avoiding Accidents in Warehouse EnvironmentA Smart Safety Gadget for Avoiding Accidents in Warehouse Environment
A Smart Safety Gadget for Avoiding Accidents in Warehouse Environment
 
Contratos administrativos
Contratos administrativosContratos administrativos
Contratos administrativos
 

Similar to my_project

[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스PgDay.Seoul
 
Oracle Web Adi For upload item master
Oracle Web Adi For upload item masterOracle Web Adi For upload item master
Oracle Web Adi For upload item masterAhmed Elshayeb
 
Understanding Optimizer-Statistics-for-Developers
Understanding Optimizer-Statistics-for-DevelopersUnderstanding Optimizer-Statistics-for-Developers
Understanding Optimizer-Statistics-for-DevelopersEnkitec
 
Введение в современную PostgreSQL. Часть 2
Введение в современную PostgreSQL. Часть 2Введение в современную PostgreSQL. Часть 2
Введение в современную PostgreSQL. Часть 2Dzianis Pirshtuk
 
Examples of-tca-apis
Examples of-tca-apisExamples of-tca-apis
Examples of-tca-apisMihai Fildan
 
Alvedit programs
Alvedit programsAlvedit programs
Alvedit programsmcclintick
 
Understanding Query Optimization with ‘regular’ and ‘Exadata’ Oracle
Understanding Query Optimization with ‘regular’ and ‘Exadata’ OracleUnderstanding Query Optimization with ‘regular’ and ‘Exadata’ Oracle
Understanding Query Optimization with ‘regular’ and ‘Exadata’ OracleGuatemala User Group
 
EvolveExecutionPlans.pdf
EvolveExecutionPlans.pdfEvolveExecutionPlans.pdf
EvolveExecutionPlans.pdfPraveenPolu1
 
Actividad 1 de unidad 4
Actividad 1 de unidad 4Actividad 1 de unidad 4
Actividad 1 de unidad 4sergio
 
dokumen.tips_spring-boot-actuator.pdf
dokumen.tips_spring-boot-actuator.pdfdokumen.tips_spring-boot-actuator.pdf
dokumen.tips_spring-boot-actuator.pdfAppster1
 
qmx_acknowledgement_dl_sql_ex.sql
qmx_acknowledgement_dl_sql_ex.sqlqmx_acknowledgement_dl_sql_ex.sql
qmx_acknowledgement_dl_sql_ex.sqlBob Werner
 
Inventory aging report using oracle discoverer desktop
Inventory aging report using oracle discoverer desktopInventory aging report using oracle discoverer desktop
Inventory aging report using oracle discoverer desktopAhmed Elshayeb
 
Oracle Diagnostics : Explain Plans (Simple)
Oracle Diagnostics : Explain Plans (Simple)Oracle Diagnostics : Explain Plans (Simple)
Oracle Diagnostics : Explain Plans (Simple)Hemant K Chitale
 
Spring Boot Actuator
Spring Boot ActuatorSpring Boot Actuator
Spring Boot ActuatorRowell Belen
 
Managing Statistics for Optimal Query Performance
Managing Statistics for Optimal Query PerformanceManaging Statistics for Optimal Query Performance
Managing Statistics for Optimal Query PerformanceKaren Morton
 

Similar to my_project (20)

[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
 
Taller
TallerTaller
Taller
 
Oracle Web Adi For upload item master
Oracle Web Adi For upload item masterOracle Web Adi For upload item master
Oracle Web Adi For upload item master
 
Understanding Optimizer-Statistics-for-Developers
Understanding Optimizer-Statistics-for-DevelopersUnderstanding Optimizer-Statistics-for-Developers
Understanding Optimizer-Statistics-for-Developers
 
Введение в современную PostgreSQL. Часть 2
Введение в современную PostgreSQL. Часть 2Введение в современную PostgreSQL. Часть 2
Введение в современную PostgreSQL. Часть 2
 
Examples of-tca-apis
Examples of-tca-apisExamples of-tca-apis
Examples of-tca-apis
 
Oracle 11g caracteristicas poco documentadas 3 en 1
Oracle 11g caracteristicas poco documentadas 3 en 1Oracle 11g caracteristicas poco documentadas 3 en 1
Oracle 11g caracteristicas poco documentadas 3 en 1
 
Alvedit programs
Alvedit programsAlvedit programs
Alvedit programs
 
Understanding Query Optimization with ‘regular’ and ‘Exadata’ Oracle
Understanding Query Optimization with ‘regular’ and ‘Exadata’ OracleUnderstanding Query Optimization with ‘regular’ and ‘Exadata’ Oracle
Understanding Query Optimization with ‘regular’ and ‘Exadata’ Oracle
 
EvolveExecutionPlans.pdf
EvolveExecutionPlans.pdfEvolveExecutionPlans.pdf
EvolveExecutionPlans.pdf
 
Actividad 1 de unidad 4
Actividad 1 de unidad 4Actividad 1 de unidad 4
Actividad 1 de unidad 4
 
Q 1
Q 1Q 1
Q 1
 
SAV
SAVSAV
SAV
 
dokumen.tips_spring-boot-actuator.pdf
dokumen.tips_spring-boot-actuator.pdfdokumen.tips_spring-boot-actuator.pdf
dokumen.tips_spring-boot-actuator.pdf
 
qmx_acknowledgement_dl_sql_ex.sql
qmx_acknowledgement_dl_sql_ex.sqlqmx_acknowledgement_dl_sql_ex.sql
qmx_acknowledgement_dl_sql_ex.sql
 
Inventory aging report using oracle discoverer desktop
Inventory aging report using oracle discoverer desktopInventory aging report using oracle discoverer desktop
Inventory aging report using oracle discoverer desktop
 
Oracle Diagnostics : Explain Plans (Simple)
Oracle Diagnostics : Explain Plans (Simple)Oracle Diagnostics : Explain Plans (Simple)
Oracle Diagnostics : Explain Plans (Simple)
 
Spring Boot Actuator
Spring Boot ActuatorSpring Boot Actuator
Spring Boot Actuator
 
Managing Statistics for Optimal Query Performance
Managing Statistics for Optimal Query PerformanceManaging Statistics for Optimal Query Performance
Managing Statistics for Optimal Query Performance
 
ZFINDALLZPROGAM
ZFINDALLZPROGAMZFINDALLZPROGAM
ZFINDALLZPROGAM
 

my_project

  • 1. --(projects) CREATE TABLE projects ( project_id number, project_name varchar2 (200,) no_of_partners number, start_date date, project_type varchar2 (200, ) no_of_apartments number, project_address varchar2 (200,) total_expenses number, nots varchar2 (500,) constraint pk_project primary key (project_id;) ) --------------------------------------------------------------------------------------------------- --(partners) CREATE TABLE partners ( partner_id number,
  • 2. partner_name varchar2 (200,) mobile1 number, mobile2 number, partner_address varchar2 (200,) nots varchar2 (500,) constraint pk_partners primary key (partner_id;) ) ------------------------------------------------------------------------------------------- --bridge table ( projects_partners) CREATE TABLE projects_partners ( project_id number, partner_id number, participate_percentage varchar2 (200,) constraint pk_projects_partners primary key (project_id ,partner_id,) constraint fk_projects foreign key (project_id) references projects (project_id,) constraints fk_partners foreign key ( partner_id) references partners (partner_id;) ) -------------------------------------------------------------------------------------------- --(expenses)
  • 3. CREATE TABLE expenses ( expense_id number, expense_name varchar2 (200) not null, expense_date date, expense_value number, expense_type number, invoice_number number, project_id number, notes varchar2 (200,) constraint pk_expenses primary key (expense_id;)) ------------------------------------------------------------------------------------------------------------ --(expense_type) CREATE TABLE expense_type ( expense_type_id number, expense_type_name varchar2 (200) not null, constraint pk_expense_type primary key (expense_type_id;) )
  • 4. ----------------------------------------------------------------------------------------------------------- --(sub_partners) CREATE TABLE sub_partners ( sub_partner_id number, sub_partner_name varchar2 (200,) mobile1 number, mobile2 number, sub_partner_address varchar2 (200,) nots varchar2 (500,) constraint pk_sub_partners primary key (sub_partner_id;) ) -------------------------------------------------------------------------------------------------------------- --(specializations) CREATE TABLE specializations ( specialization_id number, specialization_type varchar2 (200) not null, constraint pk_specializations primary key (specialization_id;) )
  • 5. -------------------------------------------------------------------------------------------------------------- CANCEL --bridge table ( sub_part_specializations) CREATE TABLE sub_part_specializations ( sub_partner_id number, specialization_id number, constraint pk_sub_part_specializations primary key (sub_partner_id , specialization_id,) constraint fk_sub_part_specializations1 foreign key (sub_partner_id) references sub_partners (sub_partner_id,) constraint fk_sub_part_specializations2 foreign key (specialization_id) references specializations (specialization_id);) --------------------------------------------------------------------------------------------------------------- alter table expenses add constraint fk_expense_type foreign key (expense_type) references expense_type (expense_type_id; ) ------------------------------------------------------------------------------------------------------------------ --(units)
  • 6. create table units ( unit_id number, unit_name varchar2 (200, ) unit_size number, unit_ntype varchar2 (200, ) unit_direction varchar2 (200, ) unit_forward varchar2 (200, ) unit_park varchar2 (200,) unit_price number, project_id number, notes varchar2 (200,) constraints p_k_unites primary key (unit_id, ) constraints f_k_unites foreign key (project_id) references projects (project_id) ) ------------------------------------------------------------------------------------------------------- --(pro_sub_part_specializations) CREATE TABLE pro_sub_part_specializations ( project_id number, sub_partner_id number,
  • 7. SPECIALIZATION_ID number, constraint pk_projects_sub_partners primary key (project_id ,partner_id,SPECIALIZATION_ID,) constraint fk_projects foreign key (project_id) references projects (project_id,) constraints fk_sub_partners foreign key ( partner_id) references partners (partner_id) Constraint fk_SPECIALIZATIONS foreign key (SPECIALIZATION_ID) references SPECIALIZATIONS (SPECIALIZATION_ID ) SPECIALIZATIONS;) ------------------------------------------------------------------------------------------------------------- --(SALES) CREATE TABLE SALES ( PROCESS_ID NUMBER, PROCESS_VALUE NUMBER, ELEVATOR NUMBER, GARAGE NUMBER, FRONTEND NUMBER, OTHER NUMBER, TOTAL NUMBER, PAID NUMBER, RESIDUAL NUMBER, PROCESS_DATE DATE,
  • 8. UNIT_ID NUMBER, BUYER_ID NUMBER, INSTALLMENT NUMBER, DURATION NUMBER, NUMBER_PREMIUMS NUMBER, CONSTRAINTS PK_SALES PRIMARY KEY (PROCESS_ID, ) CONSTRAINTS FK_SALES FOREIGN KEY ( UNIT_ID) REFERENCES UNITS ( UNIT_ID) ;) ------------------------------------------------------------------------------------------------------------- ALTER TABLE SALES ADD CONSTRAINTS FK_SALES2 FOREIGN KEY (BUYER_ID) REFERENCES BUYERS (BUYER_ID; ) ------------------------------------------------------------------------------------------------------------- --(BUYERS) CREATE TABLE BUYERS ( BUYER_ID NUMBER, BUYER_NAME VARCHAR2(50, ) BUYER_ADDRESS VARCHAR2(200,) MOBILE1 NUMBER,
  • 9. MOBILE2 NUMBER, EMAIL VARCHAR2(200,) NATIONAL_NUMBER NUMBER (14, ) CONSTRAINTS PK_BUYERS PRIMARY KEY (BUYER_ID) ;) ------------------------------------------------------------------------------------------------------------- --(PREMIUMS) CREATE TABLE PREMIUMS ( premium_table_id number primary key, item_id number, premium_id number, buyer_name varchar2 (200,) project_name varchar2 (200,) unit_name varchar2 (200,) total_amount number, premium_amount number, paid_amount number, outstand_amount number, due_date date, process_id number )
  • 10. -------------------------------------------------------------------------------------------------------------- --(FORM_ERROR_TRACE) CREATE TABLE FORM_ERROR_TRACE ( e_user varchar2(30,) e_date date, e_code varchar2(20,) e_message varchar2(200) ;) -------------------------------------------------------------------------------------------------------------- --(partners_payments) CREATE TABLE partners_payments ( payment_id number, payment_value number, payment_date date, partner_id number, project_id number, notes varchar2(300,) constraints p_k_partners_payments primary key (payment_id,) constraints f_k_partners_payments1 foreign key (partner_id)
  • 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
  • 17. insert into premiums values (v_premium_table_id , v_item_id ,i,BUYER_NAME_PROC (p_process_id) ,PROJECT_NAME_PROC (p_process_id, ) UNIT_NAME_PROC (p_process_id) ,V_TOTAL , NULL , V_PAID , v_outstand_amount, sysdate ,p_process_id; ) ELSE insert into premiums values (v_premium_table_id , v_item_id ,i,null,null,null ,NULL , ceil (v_premium_amount, ) NULL ,ceil (v_outstand_amount),sysdate+v_months, p_process_id; ) END IF; END loop; END; / --------------------------------------------------------------------------------------------------------------------------- ------------------------------ FUNNNNNNNNNNNNNNNNNNNNNNNNNNNCTIONNNNNNNNNNNNNNNNNNNNNNNS
  • 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;)
  • 23. 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 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;
  • 24. 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) 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
  • 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;
  • 26. 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 select sum(PAYMENT_VALUE) into V_PAYMENT_VALUE from PARTNERS_PAYMENTS where project_id = p_project_id; return V_PAYMENT_VALUE; end;
  • 27. / -------------------------------------------------------------------------------------------------------------- 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 from expenses where project_id =P_PROJECT_ID; select count (unit_id) into v_count_units from units 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;
  • 29. / -------------------------------------------------------------------------------------------------------------- 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 and units .project_id =p_project_id; return v_sold_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;
  • 36. end; / -------------------------------------------------------------------------------------------------------------- DROP FUNCTION ESTATES_PROJECT.BUYER_NAME_PROC; CREATE OR REPLACE FUNCTION ESTATES_PROJECT.BUYER_NAME_PROC (P_PROCESS_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 PROCESS_ID =P_PROCESS_ID; return V_BUYER_NAME; end; / --------------------------------------------------------------------------------------------------------------
  • 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;
  • 39. end; / -------------------------------------------------------------------------------------------------------------- DROP FUNCTION ESTATES_PROJECT.CALC_PARTNER_PERCENTAGE_SHOW; 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
  • 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;
  • 48. / -------------------------------------------------------------------------------------------------------------- DROP FUNCTION ESTATES_PROJECT.PROJECT_NAME_PROC; CREATE OR REPLACE FUNCTION ESTATES_PROJECT.PROJECT_NAME_PROC (P_PROCESS_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 ,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; / --------------------------------------------------------------------------------------------------------------
  • 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
  • 52. from dual; v_percentage := round (v_sum2*v_sum1; ) return v_percentage; end; /