Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PROCEDURE update_bal(p_doc_guid IN VARCHAR2,
- x_dr_error OUT VARCHAR2,
- x_cr_error OUT VARCHAR2) AS
- l_exists NUMBER;
- l_cur_allsys DC_ALLSYSREGISTEROPER%ROWTYPE;
- l_cur_rem DC_ACR_REMAINS_ACC%ROWTYPE;
- l_beg_amount NUMBER;
- l_cur_amount NUMBER;
- l_end_amount NUMBER;
- l_dr_beg_amount NUMBER;
- l_cr_beg_amount NUMBER;
- l_dr_cur_amount NUMBER;
- l_cr_cur_amount NUMBER;
- l_dr_end_amount NUMBER;
- l_cr_end_amount NUMBER;
- l_turn_net_dr NUMBER;
- l_turn_net_cr NUMBER;
- l_turn_end_dr NUMBER;
- l_turn_end_cr NUMBER;
- l_end_befo_Dr NUMBER;
- l_end_befo_Cr NUMBER;
- l_end_delta_Dr NUMBER;
- l_end_delta_Cr NUMBER;
- l_bef_ctrl_dr_amount NUMBER;
- l_bef_ctrl_cr_amount NUMBER;
- l_aft_ctrl_dr_amount NUMBER;
- l_aft_ctrl_cr_amount NUMBER;
- BEGIN
- SELECT s.*
- INTO l_cur_allsys
- FROM DC_ALLSYSREGISTEROPER s, doc d --наличие в ОЖО записи по доку
- WHERE s.docid = d.docid
- AND d.globaldocid = p_doc_guid;
- IF NVL(l_cur_allsys.l_accounting_code, '@') = 'CLOSE' THEN
- NULL; --Обработка закрытия года
- ELSE
- --Дт BUH
- SELECT COUNT(1)
- INTO l_exists
- FROM DC_ACR_REMAINS_ACC acc --запись в остатках в разрезе системного плана счетов
- WHERE NVL(acc.org_code, '-') = NVL(l_cur_allsys.org_code, '-')
- AND NVL(acc.type_kppv, '-') =
- NVL(l_cur_allsys.l_dr_type_kppv, '-')
- AND NVL(acc.type_acc, '-') = NVL(l_cur_allsys.l_dr_type_acc, '-')
- AND NVL(acc.kppv, '-') = NVL(l_cur_allsys.l_dr_kppv, '-')
- AND NVL(acc.kvfo, '-') = NVL(l_cur_allsys.l_dr_kvfo, '-')
- AND NVL(acc.account, '-') = NVL(l_cur_allsys.l_dr_account, '-')
- AND NVL(acc.kosgu, '-') = NVL(l_cur_allsys.l_dr_kosgu, '-')
- --beg ACR-6390
- --and acc.rec_type = 'BUH'
- AND NVL(acc.rec_type, '-') = 'BUH'
- --end ACR-6390
- AND acc.finyear = TO_CHAR(l_cur_allsys.h_accounting_date, 'YYYY')
- ----mkoz add ACR-4736
- AND NVL(acc.chrtaccttp_cd, g_buh_type) =
- NVL(l_cur_allsys.chrtaccttp_cd, g_buh_type)
- -----mkoz
- ;
- IF l_exists = 0 THEN
- -- dbms_output.put_line('Создаем дебетовый BUH остаток для - ' ||
- -- p_doc_guid);
- create_bal(p_doc_guid => p_doc_guid,
- p_type => 'ДТ',
- p_detal => 'BUH');
- END IF;
- --Дт DETAL
- SELECT COUNT(1)
- INTO l_exists
- FROM DC_ACR_REMAINS_ACC acc --остатки в разрезе системного плана счетов
- WHERE NVL(acc.org_code, '-') = NVL(l_cur_allsys.org_code, '-')
- AND NVL(acc.type_kppv, '-') =
- NVL(l_cur_allsys.l_dr_type_kppv, '-')
- AND NVL(acc.type_acc, '-') = NVL(l_cur_allsys.l_dr_type_acc, '-')
- AND NVL(acc.kppv, '-') = NVL(l_cur_allsys.l_dr_kppv, '-')
- AND NVL(acc.kvfo, '-') = NVL(l_cur_allsys.l_dr_kvfo, '-')
- AND NVL(acc.account, '-') = NVL(l_cur_allsys.l_dr_account, '-')
- AND NVL(acc.kosgu, '-') = NVL(l_cur_allsys.l_dr_kosgu, '-')
- AND NVL(acc.ap1, '-') = NVL(l_cur_allsys.l_dr_ap1, '-')
- AND NVL(acc.ap2, '-') = NVL(l_cur_allsys.l_dr_ap2, '-')
- AND NVL(acc.ap3, '-') = NVL(l_cur_allsys.l_dr_ap3, '-')
- AND NVL(acc.ap4, '-') = NVL(l_cur_allsys.l_dr_ap4, '-')
- AND NVL(acc.ap5, '-') = NVL(l_cur_allsys.l_dr_ap5, '-')
- AND NVL(acc.ap6, '-') = NVL(l_cur_allsys.l_dr_ap6, '-')
- AND NVL(acc.ap7, '-') = NVL(l_cur_allsys.l_dr_ap7, '-')
- AND NVL(acc.ap8, '-') = NVL(l_cur_allsys.l_dr_ap8, '-')
- AND NVL(acc.ap9, '-') = NVL(l_cur_allsys.l_dr_ap9, '-')
- AND NVL(acc.ap10, '-') = NVL(l_cur_allsys.l_dr_ap10, '-')
- AND NVL(acc.sys_attribute2, '-') =
- NVL(l_cur_allsys.l_dr_acc_jo, '-')
- AND NVL(acc.sub_acc, '-') = NVL(l_cur_allsys.l_dr_sub_acc, '-')
- AND NVL(acc.rec_type, '-') = 'DETAL'
- AND acc.finyear = TO_CHAR(l_cur_allsys.h_accounting_date, 'YYYY')
- ----mkoz add ACR-4736
- AND NVL(acc.chrtaccttp_cd, g_buh_type) =
- NVL(l_cur_allsys.chrtaccttp_cd, g_buh_type)
- -----mkoz
- ;
- IF l_exists = 0 THEN
- -- dbms_output.put_line('Создаем ДТ DETAL остаток для - ' || p_doc_guid);
- create_bal(p_doc_guid => p_doc_guid,
- p_type => 'ДТ',
- p_detal => 'DETAL');
- END IF;
- --Кт BUH
- SELECT COUNT(1)
- INTO l_exists
- FROM DC_ACR_REMAINS_ACC acc --остатки в разрезе системного плана счетов
- WHERE NVL(acc.org_code, '-') = NVL(l_cur_allsys.org_code, '-')
- AND NVL(acc.type_kppv, '-') =
- NVL(l_cur_allsys.l_Cr_type_kppv, '-')
- AND NVL(acc.type_acc, '-') = NVL(l_cur_allsys.l_cr_type_acc, '-')
- AND NVL(acc.kppv, '-') = NVL(l_cur_allsys.l_cr_kppv, '-')
- AND NVL(acc.kvfo, '-') = NVL(l_cur_allsys.l_cr_kvfo, '-')
- AND NVL(acc.account, '-') = NVL(l_cur_allsys.l_cr_account, '-')
- AND NVL(acc.kosgu, '-') = NVL(l_cur_allsys.l_cr_kosgu, '-')
- AND NVL(acc.rec_type, '-') = 'BUH'
- AND acc.finyear = TO_CHAR(l_cur_allsys.h_accounting_date, 'YYYY')
- ----mkoz add ACR-4736
- AND NVL(acc.chrtaccttp_cd, g_buh_type) =
- NVL(l_cur_allsys.chrtaccttp_cd, g_buh_type)
- -----mkoz
- ;
- IF l_exists = 0 THEN
- -- dbms_output.put_line('Создаем КТ BUH остаток для - ' || p_doc_guid);
- create_bal(p_doc_guid => p_doc_guid,
- p_type => 'КТ',
- p_detal => 'BUH');
- END IF;
- --Кт DETAL
- SELECT COUNT(1)
- INTO l_exists
- FROM DC_ACR_REMAINS_ACC acc --остатки в разрезе системного плана счетов
- WHERE NVL(acc.org_code, '-') = NVL(l_cur_allsys.org_code, '-')
- AND NVL(acc.type_kppv, '-') =
- NVL(l_cur_allsys.l_cr_type_kppv, '-')
- AND NVL(acc.type_acc, '-') = NVL(l_cur_allsys.l_cr_type_acc, '-')
- AND NVL(acc.kppv, '-') = NVL(l_cur_allsys.l_cr_kppv, '-')
- AND NVL(acc.kvfo, '-') = NVL(l_cur_allsys.l_cr_kvfo, '-')
- AND NVL(acc.account, '-') = NVL(l_cur_allsys.l_cr_account, '-')
- AND NVL(acc.kosgu, '-') = NVL(l_cur_allsys.l_cr_kosgu, '-')
- AND NVL(acc.ap1, '-') = NVL(l_cur_allsys.l_cr_ap1, '-')
- AND NVL(acc.ap2, '-') = NVL(l_cur_allsys.l_cr_ap2, '-')
- AND NVL(acc.ap3, '-') = NVL(l_cur_allsys.l_cr_ap3, '-')
- AND NVL(acc.ap4, '-') = NVL(l_cur_allsys.l_cr_ap4, '-')
- AND NVL(acc.ap5, '-') = NVL(l_cur_allsys.l_cr_ap5, '-')
- AND NVL(acc.ap6, '-') = NVL(l_cur_allsys.l_cr_ap6, '-')
- AND NVL(acc.ap7, '-') = NVL(l_cur_allsys.l_cr_ap7, '-')
- AND NVL(acc.ap8, '-') = NVL(l_cur_allsys.l_cr_ap8, '-')
- AND NVL(acc.ap9, '-') = NVL(l_cur_allsys.l_cr_ap9, '-')
- AND NVL(acc.ap10, '-') = NVL(l_cur_allsys.l_cr_ap10, '-')
- AND NVL(acc.sys_attribute2, '-') =
- NVL(l_cur_allsys.l_cr_acc_jo, '-')
- AND NVL(acc.sub_acc, '-') = NVL(l_cur_allsys.l_cr_sub_acc, '-')
- --beg ACR-6390
- --and acc.rec_type = 'DETAL'
- AND NVL(acc.rec_type, '-') = 'DETAL'
- --end ACR-6390
- AND acc.finyear = TO_CHAR(l_cur_allsys.h_accounting_date, 'YYYY')
- -----mkoz add ACR-4736
- AND NVL(acc.chrtaccttp_cd, g_buh_type) =
- NVL(l_cur_allsys.chrtaccttp_cd, g_buh_type)
- -----mkoz
- ;
- IF l_exists = 0 THEN
- -- dbms_output.put_line('Создаем КТ DETAL остаток для - ' || p_doc_guid);
- create_bal(p_doc_guid => p_doc_guid,
- p_type => 'КТ',
- p_detal => 'DETAL');
- END IF;
- -----beg ACR-6390
- /* for curRem in (select acc.*, -1 as Factor
- from DC_ACR_REMAINS_ACC acc --остатки в разрезе системного плана счетов
- where acc.org_code = l_cur_allsys.org_code
- and nvl(acc.type_kppv, '-') =
- nvl(l_cur_allsys.l_cr_type_kppv, '-')
- and nvl(acc.type_acc, '-') =
- nvl(l_cur_allsys.l_cr_type_acc, '-')
- and nvl(acc.kppv, '-') =
- nvl(l_cur_allsys.l_cr_kppv, '-')
- and nvl(acc.kvfo, '-') =
- nvl(l_cur_allsys.l_cr_kvfo, '-')
- and nvl(acc.account, '-') =
- nvl(l_cur_allsys.l_cr_account, '-')
- and nvl(acc.kosgu, '-') =
- nvl(l_cur_allsys.l_cr_kosgu, '-')
- and acc.finyear =
- to_char(l_cur_allsys.h_accounting_date, 'YYYY')
- and ((nvl(acc.ap1, '-') =
- nvl(l_cur_allsys.l_cr_ap1, '-') and
- nvl(acc.ap2, '-') =
- nvl(l_cur_allsys.l_cr_ap2, '-') and
- nvl(acc.ap3, '-') =
- nvl(l_cur_allsys.l_cr_ap3, '-') and
- nvl(acc.ap4, '-') =
- nvl(l_cur_allsys.l_cr_ap4, '-') and
- nvl(acc.ap5, '-') =
- nvl(l_cur_allsys.l_cr_ap5, '-') and
- nvl(acc.ap6, '-') =
- nvl(l_cur_allsys.l_cr_ap6, '-') and
- nvl(acc.ap7, '-') =
- nvl(l_cur_allsys.l_cr_ap7, '-') and
- nvl(acc.ap8, '-') =
- nvl(l_cur_allsys.l_cr_ap8, '-') and
- nvl(acc.ap9, '-') =
- nvl(l_cur_allsys.l_cr_ap9, '-') and
- nvl(acc.ap10, '-') =
- nvl(l_cur_allsys.l_cr_ap10, '-') and
- nvl(acc.sys_attribute2, '-') =
- nvl(l_cur_allsys.l_cr_acc_jo, '-') and
- nvl(acc.sub_acc, '-') =
- nvl(l_cur_allsys.l_cr_sub_acc, '-') and
- acc.rec_type = 'DETAL') or
- (acc.rec_type = 'BUH'))
- -----mkoz add ACR-4736
- and nvl(acc.chrtaccttp_cd, g_buh_type) =
- nvl(l_cur_allsys.chrtaccttp_cd, g_buh_type)
- -----mkoz
- union all
- select acc.*, 1 as Factor
- from DC_ACR_REMAINS_ACC acc --остатки в разрезе системного плана счетов
- where acc.org_code = l_cur_allsys.org_code
- and nvl(acc.type_kppv, '-') =
- nvl(l_cur_allsys.l_dr_type_kppv, '-')
- and nvl(acc.type_acc, '-') =
- nvl(l_cur_allsys.l_dr_type_acc, '-')
- and nvl(acc.kppv, '-') =
- nvl(l_cur_allsys.l_dr_kppv, '-')
- and nvl(acc.kvfo, '-') =
- nvl(l_cur_allsys.l_dr_kvfo, '-')
- and nvl(acc.account, '-') =
- nvl(l_cur_allsys.l_dr_account, '-')
- and nvl(acc.kosgu, '-') =
- nvl(l_cur_allsys.l_dr_kosgu, '-')
- and acc.finyear =
- to_char(l_cur_allsys.h_accounting_date, 'YYYY')
- and ((nvl(acc.ap1, '-') =
- nvl(l_cur_allsys.l_dr_ap1, '-') and
- nvl(acc.ap2, '-') =
- nvl(l_cur_allsys.l_dr_ap2, '-') and
- nvl(acc.ap3, '-') =
- nvl(l_cur_allsys.l_dr_ap3, '-') and
- nvl(acc.ap4, '-') =
- nvl(l_cur_allsys.l_dr_ap4, '-') and
- nvl(acc.ap5, '-') =
- nvl(l_cur_allsys.l_dr_ap5, '-') and
- nvl(acc.ap6, '-') =
- nvl(l_cur_allsys.l_dr_ap6, '-') and
- nvl(acc.ap7, '-') =
- nvl(l_cur_allsys.l_dr_ap7, '-') and
- nvl(acc.ap8, '-') =
- nvl(l_cur_allsys.l_dr_ap8, '-') and
- nvl(acc.ap9, '-') =
- nvl(l_cur_allsys.l_dr_ap9, '-') and
- nvl(acc.ap10, '-') =
- nvl(l_cur_allsys.l_dr_ap10, '-') and
- nvl(acc.sys_attribute2, '-') =
- nvl(l_cur_allsys.l_dr_acc_jo, '-') and
- nvl(acc.sub_acc, '-') =
- nvl(l_cur_allsys.l_dr_sub_acc, '-') and
- acc.rec_type = 'DETAL') or
- (acc.rec_type = 'BUH'))
- -----mkoz add ACR-4736
- and nvl(acc.chrtaccttp_cd, g_buh_type) =
- nvl(l_cur_allsys.chrtaccttp_cd, g_buh_type)
- -----mkoz
- ) loop*/
- FOR curRem IN (SELECT acc.*, -1 AS Factor
- FROM DC_ACR_REMAINS_ACC acc --остатки в разрезе системного плана счетов
- WHERE acc.org_code = l_cur_allsys.org_code
- AND NVL(acc.type_kppv, '-') =
- NVL(l_cur_allsys.l_cr_type_kppv, '-')
- AND NVL(acc.type_acc, '-') =
- NVL(l_cur_allsys.l_cr_type_acc, '-')
- AND NVL(acc.kppv, '-') =
- NVL(l_cur_allsys.l_cr_kppv, '-')
- AND NVL(acc.kvfo, '-') =
- NVL(l_cur_allsys.l_cr_kvfo, '-')
- AND NVL(acc.account, '-') =
- NVL(l_cur_allsys.l_cr_account, '-')
- AND NVL(acc.kosgu, '-') =
- NVL(l_cur_allsys.l_cr_kosgu, '-')
- AND acc.finyear =
- TO_CHAR(l_cur_allsys.h_accounting_date, 'YYYY')
- AND ((NVL(acc.ap1, '-') =
- NVL(l_cur_allsys.l_cr_ap1, '-') AND
- NVL(acc.ap2, '-') =
- NVL(l_cur_allsys.l_cr_ap2, '-') AND
- NVL(acc.ap3, '-') =
- NVL(l_cur_allsys.l_cr_ap3, '-') AND
- NVL(acc.ap4, '-') =
- NVL(l_cur_allsys.l_cr_ap4, '-') AND
- NVL(acc.ap5, '-') =
- NVL(l_cur_allsys.l_cr_ap5, '-') AND
- NVL(acc.ap6, '-') =
- NVL(l_cur_allsys.l_cr_ap6, '-') AND
- NVL(acc.ap7, '-') =
- NVL(l_cur_allsys.l_cr_ap7, '-') AND
- NVL(acc.ap8, '-') =
- NVL(l_cur_allsys.l_cr_ap8, '-') AND
- NVL(acc.ap9, '-') =
- NVL(l_cur_allsys.l_cr_ap9, '-') AND
- NVL(acc.ap10, '-') =
- NVL(l_cur_allsys.l_cr_ap10, '-') AND
- NVL(acc.sys_attribute2, '-') =
- NVL(l_cur_allsys.l_cr_acc_jo, '-') AND
- NVL(acc.sub_acc, '-') =
- NVL(l_cur_allsys.l_cr_sub_acc, '-') AND
- NVL(acc.rec_type, '-') = 'DETAL') )
- -----mkoz add ACR-4736
- AND NVL(acc.chrtaccttp_cd, g_buh_type) =
- NVL(l_cur_allsys.chrtaccttp_cd, g_buh_type)
- -----mkoz
- UNION ALL
- SELECT acc.*, -1 AS Factor
- FROM DC_ACR_REMAINS_ACC acc --остатки в разрезе системного плана счетов
- WHERE acc.org_code = l_cur_allsys.org_code
- AND NVL(acc.type_kppv, '-') =
- NVL(l_cur_allsys.l_cr_type_kppv, '-')
- AND NVL(acc.type_acc, '-') =
- NVL(l_cur_allsys.l_cr_type_acc, '-')
- AND NVL(acc.kppv, '-') =
- NVL(l_cur_allsys.l_cr_kppv, '-')
- AND NVL(acc.kvfo, '-') =
- NVL(l_cur_allsys.l_cr_kvfo, '-')
- AND NVL(acc.account, '-') =
- NVL(l_cur_allsys.l_cr_account, '-')
- AND NVL(acc.kosgu, '-') =
- NVL(l_cur_allsys.l_cr_kosgu, '-')
- AND acc.finyear =
- TO_CHAR(l_cur_allsys.h_accounting_date, 'YYYY')
- AND NVL(acc.rec_type, '-') = 'BUH'
- -----mkoz add ACR-4736
- AND NVL(acc.chrtaccttp_cd, g_buh_type) =
- NVL(l_cur_allsys.chrtaccttp_cd, g_buh_type)
- UNION ALL
- SELECT acc.*, 1 AS Factor
- FROM DC_ACR_REMAINS_ACC acc --остатки в разрезе системного плана счетов
- WHERE acc.org_code = l_cur_allsys.org_code
- AND NVL(acc.type_kppv, '-') =
- NVL(l_cur_allsys.l_dr_type_kppv, '-')
- AND NVL(acc.type_acc, '-') =
- NVL(l_cur_allsys.l_dr_type_acc, '-')
- AND NVL(acc.kppv, '-') =
- NVL(l_cur_allsys.l_dr_kppv, '-')
- AND NVL(acc.kvfo, '-') =
- NVL(l_cur_allsys.l_dr_kvfo, '-')
- AND NVL(acc.account, '-') =
- NVL(l_cur_allsys.l_dr_account, '-')
- AND NVL(acc.kosgu, '-') =
- NVL(l_cur_allsys.l_dr_kosgu, '-')
- AND acc.finyear =
- TO_CHAR(l_cur_allsys.h_accounting_date, 'YYYY')
- AND ((NVL(acc.ap1, '-') =
- NVL(l_cur_allsys.l_dr_ap1, '-') AND
- NVL(acc.ap2, '-') =
- NVL(l_cur_allsys.l_dr_ap2, '-') AND
- NVL(acc.ap3, '-') =
- NVL(l_cur_allsys.l_dr_ap3, '-') AND
- NVL(acc.ap4, '-') =
- NVL(l_cur_allsys.l_dr_ap4, '-') AND
- NVL(acc.ap5, '-') =
- NVL(l_cur_allsys.l_dr_ap5, '-') AND
- NVL(acc.ap6, '-') =
- NVL(l_cur_allsys.l_dr_ap6, '-') AND
- NVL(acc.ap7, '-') =
- NVL(l_cur_allsys.l_dr_ap7, '-') AND
- NVL(acc.ap8, '-') =
- NVL(l_cur_allsys.l_dr_ap8, '-') AND
- NVL(acc.ap9, '-') =
- NVL(l_cur_allsys.l_dr_ap9, '-') AND
- NVL(acc.ap10, '-') =
- NVL(l_cur_allsys.l_dr_ap10, '-') AND
- NVL(acc.sys_attribute2, '-') =
- NVL(l_cur_allsys.l_dr_acc_jo, '-') AND
- NVL(acc.sub_acc, '-') =
- NVL(l_cur_allsys.l_dr_sub_acc, '-') AND
- NVL(acc.rec_type, '-') = 'DETAL'))
- -----mkoz add ACR-4736
- AND NVL(acc.chrtaccttp_cd, g_buh_type) =
- NVL(l_cur_allsys.chrtaccttp_cd, g_buh_type)
- -----mkoz
- UNION ALL
- SELECT acc.*, 1 AS Factor
- FROM DC_ACR_REMAINS_ACC acc --остатки в разрезе системного плана счетов
- WHERE acc.org_code = l_cur_allsys.org_code
- AND NVL(acc.type_kppv, '-') =
- NVL(l_cur_allsys.l_dr_type_kppv, '-')
- AND NVL(acc.type_acc, '-') =
- NVL(l_cur_allsys.l_dr_type_acc, '-')
- AND NVL(acc.kppv, '-') =
- NVL(l_cur_allsys.l_dr_kppv, '-')
- AND NVL(acc.kvfo, '-') =
- NVL(l_cur_allsys.l_dr_kvfo, '-')
- AND NVL(acc.account, '-') =
- NVL(l_cur_allsys.l_dr_account, '-')
- AND NVL(acc.kosgu, '-') =
- NVL(l_cur_allsys.l_dr_kosgu, '-')
- AND acc.finyear =
- TO_CHAR(l_cur_allsys.h_accounting_date, 'YYYY')
- AND NVL(acc.rec_type, '-') = 'BUH'
- -----mkoz add ACR-4736
- AND NVL(acc.chrtaccttp_cd, g_buh_type) =
- NVL(l_cur_allsys.chrtaccttp_cd, g_buh_type)
- ) LOOP
- ------end ACR-6390
- -- dbms_output.put_line('Внутри курсора curRem ' || curRem.concat_acc);
- l_dr_beg_amount := 0;
- l_cr_beg_amount := 0;
- l_dr_cur_amount := 0;
- l_cr_cur_amount := 0;
- l_dr_end_amount := 0;
- l_cr_end_amount := 0;
- l_turn_net_dr := 0;
- l_turn_net_cr := 0;
- l_turn_end_dr := 0;
- l_turn_end_cr := 0;
- l_beg_amount := 0;
- l_cur_amount := 0;
- --> для контроля фондов - записываем значения до пересчета из КОРР
- l_bef_ctrl_dr_amount := 0;
- l_bef_ctrl_cr_amount := 0;
- IF curRem.Period_Code = 'КОРР' THEN
- l_bef_ctrl_dr_amount := curRem.balance_dr;
- l_bef_ctrl_cr_amount := curRem.balance_cr;
- END IF;
- /* dbms_output.put_line('!l_bef_ctrl_dr_amount='|| l_bef_ctrl_dr_amount);
- dbms_output.put_line('!l_bef_ctrl_cr_amount='|| l_bef_ctrl_cr_amount);*/
- --< для контроля фондов - записываем значения до пересчета из КОРР
- /* dbms_output.put_line('!l_dr_beg_amount='|| l_dr_beg_amount);
- dbms_output.put_line('!l_cr_beg_amount='|| l_cr_beg_amount);
- dbms_output.put_line('!l_dr_cur_amount='|| l_dr_cur_amount);
- dbms_output.put_line('!l_cr_cur_amount='|| l_cr_cur_amount);
- dbms_output.put_line('!l_dr_end_amount='|| l_dr_end_amount);
- dbms_output.put_line('!l_cr_end_amount='|| l_cr_end_amount);
- dbms_output.put_line('!l_turn_net_dr='|| l_turn_net_dr);
- dbms_output.put_line('!l_turn_net_cr='|| l_turn_net_cr);
- dbms_output.put_line('!l_turn_end_dr='|| l_turn_end_dr);
- dbms_output.put_line('!l_turn_end_cr='|| l_turn_end_cr);
- dbms_output.put_line('!l_beg_amount='|| l_beg_amount);
- dbms_output.put_line('!l_cur_amount='|| l_cur_amount);*/
- SELECT acc.*
- INTO l_cur_rem
- FROM DC_ACR_REMAINS_ACC acc --остатки в разрезе системного плана счетов
- WHERE acc.docid = curRem.Docid;
- -->>Расчитываем суммы и пересчитываем с их учетом балансы
- -- с учетом типа счета(Активный, Пассивный, Активно-пассивный)
- --Просто суммы (Дт - КТ)
- IF (l_cur_allsys.h_accounting_date < curRem.Start_Date OR
- curRem.Period_Code = 'КОРР' OR
- NVL(l_cur_allsys.rec_type, '0') != '0') THEN
- l_beg_amount := l_cur_rem.Balance_Dr - l_cur_rem.Balance_Cr +
- (l_cur_allsys.l_accounting_amount * curRem.Factor);
- ELSE
- l_beg_amount := l_cur_rem.Balance_Dr - l_cur_rem.Balance_Cr;
- END IF;
- -->ACR-2561
- IF ((l_cur_allsys.h_accounting_date <= curRem.End_Date OR
- curRem.Period_Code = 'КОРР') AND
- NVL(l_cur_allsys.rec_type, '0') = '0') THEN
- IF curRem.Factor = 1 THEN
- l_turn_end_dr := l_cur_rem.turn_end_dr +
- l_cur_allsys.l_accounting_amount;
- l_turn_end_cr := l_cur_rem.turn_end_cr;
- ELSE
- l_turn_end_dr := l_cur_rem.turn_end_dr;
- l_turn_end_cr := l_cur_rem.turn_end_cr +
- l_cur_allsys.l_accounting_amount;
- END IF;
- ELSE
- l_turn_end_dr := l_cur_rem.turn_end_dr;
- l_turn_end_cr := l_cur_rem.turn_end_cr;
- END IF;
- --<ACR-2561
- IF (l_cur_allsys.h_accounting_date BETWEEN curRem.Start_Date AND
- curRem.End_Date AND curRem.Period_Code != 'КОРР' AND
- NVL(l_cur_allsys.rec_type, '0') = '0') THEN
- l_cur_amount := l_cur_rem.Period_Net_Dr - l_cur_rem.Period_Net_Cr +
- (l_cur_allsys.l_accounting_amount * curRem.Factor);
- -->ACR-2561
- IF curRem.Factor = 1 THEN
- l_turn_net_dr := l_cur_rem.turn_net_dr +
- l_cur_allsys.l_accounting_amount;
- l_turn_net_cr := l_cur_rem.turn_net_cr;
- ELSE
- l_turn_net_dr := l_cur_rem.turn_net_dr;
- l_turn_net_cr := l_cur_rem.turn_net_cr +
- l_cur_allsys.l_accounting_amount;
- END IF;
- --<ACR-2561
- ELSE
- l_cur_amount := l_cur_rem.Period_Net_Dr - l_cur_rem.Period_Net_Cr;
- -->ACR-2561
- l_turn_net_dr := l_cur_rem.turn_net_dr;
- l_turn_net_cr := l_cur_rem.turn_net_cr;
- --<ACR-2561
- END IF;
- l_end_amount := l_beg_amount + l_cur_amount;
- IF UPPER(curRem.Type_Acc) = 'АКТИВНЫЙ' THEN
- l_dr_beg_amount := l_beg_amount;
- l_cr_beg_amount := 0;
- l_dr_cur_amount := l_cur_amount;
- l_cr_cur_amount := 0;
- l_dr_end_amount := l_end_amount;
- l_cr_end_amount := 0;
- END IF;
- IF UPPER(curRem.Type_Acc) = 'ПАССИВНЫЙ' THEN
- l_dr_beg_amount := 0;
- l_cr_beg_amount := l_beg_amount * (-1);
- l_dr_cur_amount := 0;
- l_cr_cur_amount := l_cur_amount * (-1);
- l_dr_end_amount := 0;
- l_cr_end_amount := l_end_amount * (-1);
- END IF;
- IF UPPER(curRem.Type_Acc) = 'АКТИВНО-ПАССИВНЫЙ' THEN
- IF l_beg_amount > 0 THEN
- l_dr_beg_amount := l_beg_amount;
- l_cr_beg_amount := 0;
- ELSE
- l_dr_beg_amount := 0;
- l_cr_beg_amount := l_beg_amount * (-1);
- END IF;
- IF l_cur_amount > 0 THEN
- l_dr_cur_amount := l_cur_amount;
- l_cr_cur_amount := 0;
- ELSE
- l_dr_cur_amount := 0;
- l_cr_cur_amount := l_cur_amount * (-1);
- END IF;
- IF l_end_amount > 0 THEN
- l_dr_end_amount := l_end_amount;
- l_cr_end_amount := 0;
- ELSE
- l_dr_end_amount := 0;
- l_cr_end_amount := l_end_amount * (-1);
- END IF;
- END IF;
- UPDATE DC_ACR_REMAINS_ACC acc
- SET acc.balance_dr = l_dr_beg_amount,
- acc.balance_cr = l_cr_beg_amount,
- acc.period_net_dr = l_dr_cur_amount,
- acc.period_net_cr = l_cr_cur_amount,
- acc.period_end_dr = l_dr_end_amount,
- acc.period_end_cr = l_cr_end_amount,
- acc.turn_net_dr = l_turn_net_dr,
- acc.turn_net_cr = l_turn_net_cr,
- acc.turn_end_dr = l_turn_end_dr,
- acc.turn_end_cr = l_turn_end_cr
- WHERE acc.docid = curRem.Docid;
- --> для контроля фондов - записываем значения до пересчета из КОРР add ACR-4736
- l_aft_ctrl_dr_amount := 0;
- l_aft_ctrl_cr_amount := 0;
- IF curRem.Period_Code = 'КОРР' THEN
- l_aft_ctrl_dr_amount := l_dr_beg_amount;
- l_aft_ctrl_cr_amount := -1 * l_dr_beg_amount;
- /*dbms_output.put_line('!l_aft_ctrl_dr_amount= '|| l_aft_ctrl_dr_amount);
- dbms_output.put_line('!l_aft_ctrl_cr_amount= '|| l_aft_ctrl_cr_amount);
- dbms_output.put_line('! curRem.Factor= '|| curRem.Factor);
- dbms_output.put_line(' l_cur_allsys.control = '|| l_cur_allsys.control);*/
- IF ((l_bef_ctrl_cr_amount - l_bef_ctrl_dr_amount) >
- (l_aft_ctrl_cr_amount - l_aft_ctrl_dr_amount)) AND
- ((l_aft_ctrl_cr_amount - l_aft_ctrl_dr_amount) < 0) AND
- l_cur_allsys.control = '1' THEN
- --вернуть ошибку
- -- dbms_output.put_line('Возврат ошибки');
- IF curRem.Factor = -1 THEN
- x_cr_error := 'На счете ' || l_cur_allsys.l_cr_concat_acc ||
- ' Остаток не может быть меньше нуля'; --КТ
- -- dbms_output.put_line('x_cr_error = '||x_cr_error);
- ELSE
- x_dr_error := 'На счете ' || l_cur_allsys.l_dr_concat_acc ||
- ' Остаток не может быть меньше нуля'; --ДТ
- -- dbms_output.put_line('x_dr_error = '||x_dr_error);
- END IF;
- END IF;
- END IF;
- --< для контроля фондов - записываем значения до пересчета из КОРР
- END LOOP;
- END IF;
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement