БД: Удалён код РТ "PM0010" - "Калькуляция этапа проекта"

This commit is contained in:
Mikhail Chechnev 2023-09-25 00:54:06 +03:00
parent f90e3793d3
commit d3ac23c217

View File

@ -193,9 +193,6 @@ create or replace package PKG_P8PANELS_PROJECTS as
COUT out clob -- Сериализованная таблица данных
);
/* Формирование расчетной таблицы "PM0010" - "Калькуляция этапа проекта" */
procedure STAGES_CT_CALC;
/* Подбор записей журнала затрат по статье калькуляции этапа проекта */
procedure STAGE_ARTS_SELECT_COST_FACT
(
@ -1860,188 +1857,6 @@ text="ПРАВА ДОСТУПА!!!!"
COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF);
end STAGES_LIST;
/* Считывание записи проекта/этапа для расчётной таблицы "PM0010" - "Калькуляция этапа проекта" */
procedure STAGES_CT_CALC_LOAD_PROJECT
(
RPRJ out PROJECT%rowtype, -- Запись проекта
RSTG out PROJECTSTAGE%rowtype -- Запись этапа проекта
)
is
NCOMPANY PKG_STD.TREF; -- Рег. номер организации из входных параметров
SPROJECT_CODE PKG_STD.TSTRING; -- Код проета из параметров
SPROJECT_STAGE_NUMB PKG_STD.TSTRING; -- Номер этапа проекта из входных параметров
begin
/* Считывание параметра "Организация" */
PRSG_CALCTAB_IMAGE.READ_PARAMETER_NUM(SNAME => SSTAGES_CT_CALC_PRM_COMP, NVALUE => NCOMPANY);
/* Считывание параметра "Код проекта" */
PRSG_CALCTAB_IMAGE.READ_PARAMETER_STR(SNAME => SSTAGES_CT_CALC_PRM_PRJ, SVALUE => SPROJECT_CODE);
/* Считывание параметра "Номер этапа проекта" */
PRSG_CALCTAB_IMAGE.READ_PARAMETER_STR(SNAME => SSTAGES_CT_CALC_PRM_STG, SVALUE => SPROJECT_STAGE_NUMB);
/* Читаем данные */
begin
/* Проект */
select P.*
into RPRJ
from PROJECT P
where P.COMPANY = NCOMPANY
and P.CODE = SPROJECT_CODE;
/* Этап */
select PS.*
into RSTG
from PROJECTSTAGE PS
where PS.PRN = RPRJ.RN
and trim(PS.NUMB) = trim(SPROJECT_STAGE_NUMB);
exception
when NO_DATA_FOUND then
P_EXCEPTION(0,
'Этап "%s" проекта "%s" в организации "%s" не определён.',
COALESCE(SPROJECT_STAGE_NUMB, '<НЕ УКАЗАН>'),
COALESCE(SPROJECT_CODE, '<НЕ УКАЗАН>'),
COALESCE(TO_CHAR(NCOMPANY), '<НЕ УКАЗАНА>'));
end;
end STAGES_CT_CALC_LOAD_PROJECT;
/* Формирование заголовков таблиц для расчётной таблицы "PM0010" - "Калькуляция этапа проекта" */
procedure STAGES_CT_CALC_TABLE_CAPTIONS
is
RPRJ PROJECT%rowtype; -- Запись проекта
RSTG PROJECTSTAGE%rowtype; -- Запись этапа проекта
begin
/* Считаем проект и этап */
STAGES_CT_CALC_LOAD_PROJECT(RPRJ => RPRJ, RSTG => RSTG);
/* Работаем от имени таблицы */
case PRSG_CALCTAB.TABLE_NAME
/* Таблица "Статьи калькуляции" */
when SSTAGES_CT_CALC_TBL_CLARTS then
PRSG_CALCTAB_BUILD.WRITE_TABLE_CAPTION(STEXT => 'Калькуляция этапа "' || trim(RSTG.NUMB) || '" проекта "' ||
RPRJ.CODE || '"');
/* Неизвестная таблица */
else
null;
end case;
end STAGES_CT_CALC_TABLE_CAPTIONS;
/* Формирование строк для расчетной таблицы "PM0010" - "Калькуляция этапа проекта" */
procedure STAGES_CT_CALC_BUILD_LINES
is
NCOMPANY PKG_STD.TREF; -- Рег. номер организации из входных параметров
NVERSION PKG_STD.TREF; -- Рег. номер версии словаря "Статьи затрат"
SCRN PKG_STD.TSTRING; -- Наименование каталога статей калькуляции в словаре "Статьи затрат"
NCRN PKG_STD.TREF; -- Рег. номер каталога статей калькуляции в словаре "Статьи затрат"
BCREATED boolean := false; -- Флаг успешного добавления строк в таблицу
begin
/* Строки для таблицы "Статьи калькуляции" */
if (PRSG_CALCTAB.TABLE_NAME = SSTAGES_CT_CALC_TBL_CLARTS) then
/* Считывание параметра "Организация" */
PRSG_CALCTAB_IMAGE.READ_PARAMETER_NUM(SNAME => SSTAGES_CT_CALC_PRM_COMP, NVALUE => NCOMPANY);
/* Считывание параметра "Каталог статей калькуляции" */
PRSG_CALCTAB_IMAGE.READ_PARAMETER_STR(SNAME => SSTAGES_CT_CALC_PRM_ARTSCAT, SVALUE => SCRN);
/* Находим версию словаря "Статьи затрат" */
FIND_VERSION_BY_COMPANY(NCOMPANY => NCOMPANY, SUNITCODE => 'FinPlanArticles', NVERSION => NVERSION);
/* Находим рег. номер каталога статей калькуляции */
FIND_ACATALOG_NAME(NFLAG_SMART => 0,
NCOMPANY => NCOMPANY,
NVERSION => NVERSION,
SUNITCODE => 'FinPlanArticles',
SNAME => SCRN,
NRN => NCRN);
/* Идем по статьям калькуляции */
for C in (select T.RN
from FPDARTCL T
where T.VERSION = NVERSION
and T.CRN = NCRN
order by T.CODE)
loop
/* Добавим строку */
PRSG_CALCTAB_BUILD.APPEND_ROW_COPY(NSOURCE => C.RN);
/* Поднимем флаг добавления */
BCREATED := true;
end loop;
/* Если статей не нашли */
if (not BCREATED) then
P_EXCEPTION(0, 'Не задан набор статей калькуляции.');
end if;
end if;
end STAGES_CT_CALC_BUILD_LINES;
/* Наполнение строк для расчетной таблицы "PM0010" - "Калькуляция этапа проекта" */
procedure STAGES_CT_CALC_FILL_LINES
is
RCURSOR PRSG_CALCTAB.TCURSOR; -- Маркер коллекции строк таблицы
RFPDARTCL FPDARTCL%rowtype; -- Запись статьи калькуляции в словаре
NSUMM_PL PKG_STD.TNUMBER; -- Плановая сумма (считанная из хранилища расчётной таблицы)
begin
/* Выбор листа и таблицы "Статьи калькуляции"*/
PRSG_CALCTAB_IMAGE.SELECT_TABLE(SSHEET_NAME => SSTAGES_CT_CALC_SH_CACL, STABLE_NAME => SSTAGES_CT_CALC_TBL_CLARTS);
/* Первая строка */
PRSG_CALCTAB_IMAGE.FIRST_ROW(SROW_NAME => SSTAGES_CT_CALC_LN_ARTS, RCURSOR => RCURSOR);
/* Цикл по строкам */
loop
/* Cчитаем статью */
begin
select A.* into RFPDARTCL from FPDARTCL A where A.RN = RCURSOR.ROW_SOURCE;
exception
when NO_DATA_FOUND then
PKG_MSG.RECORD_NOT_FOUND(NFLAG_SMART => 0, NDOCUMENT => RCURSOR.ROW_SOURCE, SUNIT_TABLE => 'FPDARTCL');
end;
/* Заполняем колонки - "Номер" */
PRSG_CALCTAB_IMAGE.WRITE_ROW_STR(RCURSOR => RCURSOR,
SCOLUMN_NAME => SSTAGES_CT_CALC_CL_NUMB,
SVALUE => RFPDARTCL.CODE,
NSOURCE => RFPDARTCL.RN);
/* Заполняем колонки - "Наименование" */
PRSG_CALCTAB_IMAGE.WRITE_ROW_STR(RCURSOR => RCURSOR,
SCOLUMN_NAME => SSTAGES_CT_CALC_CL_NAME,
SVALUE => RFPDARTCL.NAME,
NSOURCE => RFPDARTCL.RN);
/* Заполняем колонки - "Плановая сумма" */
PRSG_CALCTAB_IMAGE.READ_ROW_NUM(RCURSOR => RCURSOR,
SCOLUMN_NAME => SSTAGES_CT_CALC_CL_SUMM_PL,
NVALUE => NSUMM_PL);
PRSG_CALCTAB_IMAGE.WRITE_ROW_NUM(RCURSOR => RCURSOR,
SCOLUMN_NAME => SSTAGES_CT_CALC_CL_SUMM_PL,
NVALUE => COALESCE(NSUMM_PL, 0),
NSOURCE => RFPDARTCL.RN);
/* Выходим если строк больше нет */
if (not PRSG_CALCTAB_IMAGE.NEXT_ROW(RCURSOR => RCURSOR)) then
exit;
end if;
end loop;
end STAGES_CT_CALC_FILL_LINES;
/* Формирование расчетной таблицы "PM0010" - "Калькуляция этапа проекта" */
procedure STAGES_CT_CALC
is
begin
/* Работаем в зависимости от текущего режима вызова */
case
/* Инициализация построения */
when (PRSG_CALCTAB.CONTEXT_INIT) then
null;
/* Формирование заголовков листов */
when (PRSG_CALCTAB.CONTEXT_SHEET_CAPTION) then
null;
/* Формирование заголовков таблиц */
when (PRSG_CALCTAB.CONTEXT_TABLE_CAPTION) then
STAGES_CT_CALC_TABLE_CAPTIONS();
/* Формирование столбцов */
when (PRSG_CALCTAB.CONTEXT_COLUMN_CAPTION) then
null;
/* Формирование строк */
when (PRSG_CALCTAB.CONTEXT_ROW_COPIES) then
STAGES_CT_CALC_BUILD_LINES();
/* Наполнение данными */
when (PRSG_CALCTAB.CONTEXT_BEFORE) then
STAGES_CT_CALC_FILL_LINES();
/* Сохранение */
when (PRSG_CALCTAB.CONTEXT_AFTER) then
null;
/* Прочее */
else
null;
end case;
end STAGES_CT_CALC;
/* Подбор записей журнала затрат по статье калькуляции этапа проекта */
procedure STAGE_ARTS_SELECT_COST_FACT
(