All pastes #804387 Raw Edit

Inloop

public sql v1 · immutable
·published 2007-12-03 13:02 UTC
rendered paste body
		-- PS: Цикл - кредитные договора по текущему портфелю		for crd in [CRED_IN_PORT] all 		-- PS: очень важная фигня -- all!		where (			crd%collection = prt.[CREDITS]			--and crd.[PR_CRED].[DATE_BEGIN] >= P_DATE_BEGIN			--and crd.[PR_CRED].[DATE_CLOSE] <= P_DATE_END			)		loop					-- PS: Цикл - кредитные договора в портфеле (даты включения/исключения)			for crd_this in prt.[CREDITS]			where (				--crd_this.[PR_CRED].[NUM_DOG] = crd.[PR_CRED].[NUM_DOG]				crd_this.[PR_CRED]%id = crd.[PR_CRED]%id				and (crd_this.[DATE_BEGIN] >= P_DATE_BEGIN					and (crd_this.[DATE_END] <= P_DATE_END or crd_this.[DATE_END] is null))				)			loop			declare				-- портфель на дату включения				prt_begin varchar2(10) := &GetPortByCred(crd.[PR_CRED], crd_this.[DATE_BEGIN]).[NUM_DOG];				-- портфель на дату исключения				prt_end varchar2(10) := &GetPortByCred(crd.[PR_CRED], crd_this.[DATE_END]).[NUM_DOG];			begin				-- 1, Ф.И.О. клиента				str_t := crd.[PR_CRED].[CLIENT].[NAME];				&Put(8+counter, 1, str_t);				-- 2, № и дата договора				str_t := '№' || crd.[PR_CRED].[NUM_DOG] || ' от ' || to_Char(crd.[PR_CRED].[DATE_BEGIN], 'dd.mm.yyyy');				&Put(8+counter, 2, str_t);				-- 3, Сумма договора				--str_t := Replace(ltrim(to_char(crd.[PR_CRED].[SUMMA_DOG], '999G999G999G999G999G990D00')), SubStr(Trim(to_Char(1111,'9G999')), 2, 1), CHR(39));				str_t := Replace(ltrim(to_char(crd.[PR_CRED].[SUMMA_DOG], '999G999G999G999G999G990D00')), SubStr(Trim(to_Char(1111, '9G999')), 2, 1), ',');				&Put(8+counter, 3, str_t);				-- 4, С О Б Ы Т И Е				if ((crd_this.[DATE_BEGIN] is not null and crd_this.[DATE_BEGIN] >= P_DATE_BEGIN)					and (crd_this.[DATE_END] is not null and crd_this.[DATE_END] <= P_DATE_END)					and (prt_end is not null)) then					/*						если есть дата включения и дата исключения, а также есть портфель на дату исключения						(включен в другой)...					*/					/*						...выводим исходный портфель, конечный портфель, дату включения в конечный портфель;						пишем, что кредитный договор перемещен в другой портфель					*/					str_t := 'Перемещение в другой портфель';					&Put(8+counter, 4, str_t);					--&Put(8+counter, 5, to_char(crd_this.[DATE_BEGIN], 'dd.mm.yyyy'));					&Put(8+counter, 5, to_char(crd_this.[DATE_END], 'dd.mm.yyyy'));					&Put(8+counter, 6, &GetPortByCred(crd.[PR_CRED], crd_this.[DATE_BEGIN]).[NUM_DOG]);					&Put(8+counter, 7, &GetPortByCred(crd.[PR_CRED], crd_this.[DATE_END]).[NUM_DOG]);				elsif ((crd_this.[DATE_BEGIN] is not null and crd_this.[DATE_BEGIN] >= P_DATE_BEGIN)					and (crd_this.[DATE_END] is not null and crd_this.[DATE_END] <= P_DATE_END)					and prt_end is null					) then					/*						если есть дата включения и дата исключения, но портфеля на дату исключения НЕТ...					*/					/*						...выводим портфель (на дату включения), из которого исключен кредитный договор,						дату исключения;						пишем, что кредитный договор исключен из портфеля.					*/					str_t := 'Исключение из портфеля';					&Put(8+counter, 4, str_t);					&Put(8+counter, 5, to_char(crd_this.[DATE_END], 'dd.mm.yyyy'));					--&Put(8+counter, 6, &GetPortByCred(crd.[PR_CRED], crd_this.[DATE_BEGIN]+1).[NUM_DOG]);					if &GetPortByCred(crd.[PR_CRED], crd_this.[DATE_END]-1).[NUM_DOG] is null then	-- ОБХОД #1						str_t := prt.[NUM_DOG];					else						str_t := &GetPortByCred(crd.[PR_CRED], crd_this.[DATE_END]-1).[NUM_DOG];					end if;					&Put(8+counter, 6, str_t);					--&Put(8+counter, 6, prt_end);				elsif ((crd_this.[DATE_BEGIN] is not null and crd_this.[DATE_BEGIN] >= P_DATE_BEGIN)					and crd_this.[DATE_END] is null) then					/*						если есть дата включения и нет даты исключения...					*/					/*						...выводим исходный портфель (единственный);						пишем, что крединый договор включен в портфель.					*/					str_t := 'Включение в портфель';					&Put(8+counter, 4, str_t);					&Put(8+counter, 5, to_char(crd_this.[DATE_BEGIN], 'dd.mm.yyyy'));					&Put(8+counter, 6, '');	-- ОБХОД #2					&Put(8+counter, 7, prt_begin);				--elsif () then				end if;				EXCEL.Set_Font_Size(8+counter, 1, 8+counter, table_columns, 12);	-- PS: вся строка - 12pt				counter := counter + 1;			end;			end loop;		end loop;