Автоматическая генерилка ПОС-ПОТ
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
.СергейПанин Участник - экстремал
Вступление в Клуб: 24.06.2008
|
Сб Авг 30, 2008 13:23  Автоматическая генерилка ПОС-ПОТ |
|
Полезность: Нет оценки
|
День коллеги, возникла необходимость создания новых ПОТ... а у нас только ПОСов штук 150 следовательно ПОТов будет *4 (%, просрочка, наша комиссия, наши штрафы)
написал небольшую оперу и возникли вопросы..
переменные на форме :
V_TYPE_ACC - массив ссылок на "типы счетов"
ACC_PORT - выбор из двух
ADD_TO_NAME строка
TYPE_RECORD - ссылка на "тип элемента расчетной базы"
Код: |
my_RES_RISK_GROUPS ref [RES_RISK_GROUPS] := null;
My_NEW_PORT ref [RES_PORT] := null;
my_TIP_ACC ref [TIP_ACC] := null;
my_TIP_ACC_REF_ARR [TIP_ACC_REF_ARR];
Create_PORT number := null;
begin
If ACC_PORT.[0] = 1 then Create_PORT := 1;
Else Create_PORT := nvl(V_TYPE_ACC.Count,0);
End if;
For count_PORT in 1..this.count loop
For cycle_BY_CREATE_PORT in 1..Create_PORT loop
my_RES_RISK_GROUPS := null; My_NEW_PORT := null;
my_TIP_ACC := null;
my_TIP_ACC_REF_ARR := null;
-- создаем новый портфель
begin
My_NEW_PORT := ::[RES_PORT].[NEW#AUTO](
null
, null
, TYPE_RECORD
, this(count_PORT).[FILIAL]
, null
, null
, null
, false
, LTRIM(RTRIM(LTRIM(RTRIM(this(count_PORT).[NUM_DOG]))||' '||LTRIM(RTRIM(ADD_TO_NAME))))
, LTRIM(RTRIM(this(count_PORT).[PORT_NAME]))
);
exception when OTHERS then
Pragma error('Не удалось создать ПОТ');
end;
-- копируем группы риска
begin
For ( Select my_RES_GR_RATE_POS(
my_RES_GR_RATE_POS.[PRC_RESERV] : RATE
, my_RES_GR_RATE_POS.[RISK_GROUP].[GROUP_NUM] : RISK_GROUP_NUM
, my_RES_GR_RATE_POS.[DATE_START] : BEG_DATE
) in this(count_PORT).[GR_RISK_HIST]
) loop
locate my_RES_RISK_GROUPS in ::[RES_RISK_GROUPS] where my_RES_RISK_GROUPS.[NUM] = my_RES_GR_RATE_POS.[RISK_GROUP_NUM];
My_NEW_PORT.[GR_RISK].[NEW#AUTO](
my_RES_GR_RATE_POS.[BEG_DATE]
, my_RES_RISK_GROUPS
, my_RES_GR_RATE_POS.[RATE]
);
End loop;
exception when OTHERS then
Pragma error('Ошибка при копировании групп риска');
end;
-- создаем связь ПОС-ПОТ
begin
my_TIP_ACC_REF_ARR%init;
if Create_PORT = 1 then
for x in 1..V_TYPE_ACC.Count loop
my_TIP_ACC := V_TYPE_ACC(x);
my_TIP_ACC_REF_ARR.[NEW#AUTO]( my_TIP_ACC );
end loop;
Else
my_TIP_ACC := V_TYPE_ACC(cycle_BY_CREATE_PORT);
my_TIP_ACC_REF_ARR.[NEW#AUTO]( my_TIP_ACC );
end if;
this(count_PORT).[SLP_RESP_ARR].[NEW#AUTO](
My_NEW_PORT
, my_TIP_ACC_REF_ARR
);
exception when OTHERS then
pragma error('Не удалось установить связь ПОС-ПОТ');
end;
end loop;
end loop;
end;
|
вопрос один... насколько корректена моя работа с my_TIP_ACC_REF_ARR..
если кому будет интересно хранилище - в личку |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|