«Таблица материалы» содержит в себе информацию о всех материалах и их характеристиках (табл.1).
Табл.1
Таблица имеет следующие поля:
MATERIAL_ID : Идентификатор
KOD_OKP : Код ОКП
NAME : Наименование
ED_IZM : Еденица измерения
NORMA : Минимальная норма запаса на складе
DECLARATION : Дополнительное описание
KORR_SCHET : Балансовый счет
USER_ID : Идентификатор пользователя
DATE_CREATE : Дата создания
DATE_LAST_CHANGE : Дата последнего изменения
MAT_TYPE : Тип еденицы
IMBASE_KEY : Ключ в IMBASE
SAPFORD_KEY : Ключ в SAPFORD
GR_ZAMEN : Номер группы взаимозаменяемых материалов
MIN_RASHOD : Минимальная партия выдачи
Структура таблицы «контрагенты»
«Таблица контрагенты» содержит информацию о контрагентах и их характеристиках (табл.2).
Табл.2
Таблица имеет следующие поля:
CODE : Внешний идентификатор (три знака почтового индекса + четырехзанчный код)
NAME : Наименование
FULL_NAME : Полное имя
INN : ИНН банка
KPP : КПП предприятия
ZIP : Почтовый индекс
REGION : Регион, край, область, автономный округ.
SUB_REGION : Район
CITY : Наиненование населенного пункта
NAS : Внутренний код
STREET : Улица
HOUSE : Дом
HOUSE_CASE : Корпус
HOUSE_CASE_STRUC : Строение
CONTRAGENT_ID : Внутренний код
PHONE : Телефон
FAX : Факс
E_MAIL : Электронный почтовый ящик
ADD_INF : Дополнительная информация
OFFICE : Офис
COUNTRY : Страна
DATE_CREATE : Дата создания записи
DATE_LAST_CHANGE : Дата изменения записи
USER_ID : Идентификатор пользователя
USER_ID_CHANGE : Идентифокатор изменившего пользователя
Структура таблицы «замены»
«Таблица замены» содержит информацию о заменах (табл.3).
Табл.3
Таблица имеет следующие поля:
MZ_ID : Уникальный идентификатор
MZ_KAT_ID : Каталог
MZ_MAT_ID : Идентификатор заменяемого материала
MZ_NEW_MAT_ID : Ифентификатор нового материала
MZ_KOL : Количество заменяемого материала
MZ_MAX_KOL : Всего заменяемого материала
MZ_NEW_KOL : Количество нового материала
MZ_TYPE : Тип замены (0 - полная, 1 - частичная)
Процедура добавления замены:
CREATE OR REPLACE PROCEDURE "MATERIALS_ZAMEN_CREATE" (
in_kat_id IN sostav.sos_kat_id%TYPE,
in_mat_id IN materials_zamen.mz_mat_id%TYPE,
in_new_mat_id IN materials_zamen.mz_mat_id%TYPE,
in_old_kol IN materials_zamen.mz_kol%TYPE,
in_max_kol IN materials_zamen.mz_max_kol%TYPE,
in_new_kol IN materials_zamen.mz_new_kol%TYPE,
in_zamen_type IN materials_zamen.mz_type%TYPE
)
/*добавление записи по материалу к версии расчета*/
IS
out_id INTEGER;
mat_count INTEGER := 0;
summ_kol NUMBER := 0;
BEGIN
SELECT seq_material_zamen_mz_id.NEXTVAL
INTO out_id
FROM DUAL;
-- Ищем были ли произведены полные замены на данный материал
SELECT COUNT (*)
INTO mat_count
FROM materials_zamen
WHERE mz_mat_id = in_mat_id AND mz_type = 0
AND mz_kat_id = in_kat_id;
-- Если производится частичная замена и уже есть полная замена
IF (in_zamen_type IN (0, 1) AND mat_count > 0)
THEN
raise_application_error
(-20001,
'Вы не можете проводить замену, т.к. с данным материалом уже была произведена полная замена.'
);
END IF;
mat_count := 0;
-- Ищем были ли произведены частичные замены на данный материал
SELECT COUNT (*)
INTO mat_count
FROM materials_zamen
WHERE mz_mat_id = in_mat_id AND mz_type = 1
AND mz_kat_id = in_kat_id;
-- Если производится полная замена и уже есть частичные замены
IF (in_zamen_type = 0 AND mat_count > 0)
THEN
raise_application_error
(-20001,
'Вы не можете проводить полную замену, т.к. с данным материалом уже была произведена частичная замена.'
);
END IF;
--Проверяем, можно ли произвести частичную замену
IF (in_zamen_type = 1)
THEN
SELECT SUM (mz_kol)
INTO summ_kol
FROM materials_zamen
WHERE mz_mat_id = in_mat_id AND mz_type = 1 AND mz_kat_id = in_kat_id;
summ_kol := summ_kol + in_old_kol;
IF (summ_kol > in_max_kol)
THEN
raise_application_error
(-20001,
'Общее количество материалов при проведении частичных замен превышает максимальное количество.'
);
END IF;
END IF;
INSERT INTO materials_zamen
(mz_id, mz_kat_id, mz_mat_id, mz_new_mat_id, mz_kol,
mz_max_kol, mz_new_kol, mz_type
)
VALUES (out_id, in_kat_id, in_mat_id, in_new_mat_id, in_old_kol,
in_max_kol, in_new_kol, in_zamen_type
);
END materials_zamen_create;
Процедура удаления замены:
CREATE OR REPLACE PROCEDURE "MATERIALS_ZAMEN_DELETE" (
in_mz_id IN materials_zamen.mz_id%TYPE
)
/*удаление замены материала */
IS
BEGIN
DELETE FROM materials_zamen
WHERE mz_id = in_mz_id;
END materials_zamen_delete;
Дата: 2019-07-30, просмотров: 332.