Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив / Denisov_S_I_UAI-511_Diplom_Versia_FINAL_NAYa.doc
Скачиваний:
74
Добавлен:
09.06.2015
Размер:
8.36 Mб
Скачать

Сформировать начисление (Create_New_Nach)

Declare

i Number;

Begin

Select nvl(pay_education_.Go_Account_Contract(st.id_contract

,st.d_start

,st.d_end

,%p2[d]%

,%p3[i]%

,st.id_stage

,0

,0)

,0)

Into i

From stages_ st

Where st.id_contract = %p1[i]%;

End;

Удаление студента (Delete_Student)

Declare

id_p Number;

id_o Number;

Begin

-- Удаляем договор, если он есть

If %p1[i]% Is Not Null

Then

Select c.id_paragraph

Into id_p

From Contracts_ c

Where c.id_contract = %p1[i]%;

Select p.id_order Into id_o From Paragraphs_ p Where p.id_paragraph = id_p;

Delete From specialities_contract_ sc Where sc.id_contract = %p1[i]%;

Delete From contract_sources_ cs Where cs.id_contract = %p1[i]%;

-- Попытаемся удалить все сформированные начисления (если они не подписаны)

For cur In (Select sa.id_account

,sa.id_salary_account

From salary_account_ sa

,accounts_contract_ ac

,stages_ st

Where sa.id_basis_sal_charge = ac.id_basis_sal

And ac.id_stage = st.id_stage

And st.id_contract = %p1[i]%) Loop

-- Удаляем проводки

Delete From spent_ s

Where s.id_salary_account = cur.id_salary_account;

-- Удаляем позицию расчёта

Delete From salary_account_ sa

Where sa.id_salary_account = cur.id_salary_account;

-- В расчёте может быть ещё 1 запись в позициях расчёта по НДСу

Delete From account_ a

Where a.id_account = cur.id_account

And Not Exists (Select 'x'

From salary_account_ sa

Where sa.id_account = cur.id_account);

EndLoop;

-- Теперь удаляем все направления и основания начисления!

For cur In (Select ac.id_basis_sal

,ac.id_account_contract

From accounts_contract_ ac

,stages_ st

Where st.id_contract = %p1[i]%

And st.id_stage = ac.id_stage) Loop

-- счёт по этапу договору

Delete From accounts_contract_ ac

Where ac.id_account_contract = cur.id_account_contract;

-- основание по этому счёту

Delete From basis_salary_ bs

Where bs.id_basis_sal = cur.id_basis_sal;

End Loop;

-- Этапы в договоре

Delete From stages_ s Where s.id_contract = %p1[i]%;

-- Представители в договоре

Delete From representatives_ r Where r.id_paragraph = id_p;

-- Наконец, сам договор

Delete From contracts_ c Where c.id_contract = %p1[i]%;

-- Обнуляем ссылку на договор, иначе удалить документ договора нельзя

Update Students_ s Set s.id_order_contract = null Where s.id_order_contract = id_p;

Delete From paragraphs_ p Where p.id_paragraph = id_p;

Delete From orders_ o Where o.id_order = id_o;

EndIf;

--Удаляем студента и все его приказы

For cur In (Select os.id_paragraph

,p.id_order

From Orders_Students_ os

,paragraphs_ p

Where os.id_student = %p2[i]%

And p.id_paragraph = os.id_paragraph)

Loop

Begin

Delete From orders_students_ os

Where os.id_paragraph = cur.id_paragraph;

Delete From paragraphs_ p Where p.id_paragraph = cur.id_paragraph;

Delete From orders_ o Where o.id_order = cur.id_order;

End;

End Loop;

Delete From students_ s Where s.id_student = %p2[i]%;

End;

Соседние файлы в папке Архив