Структура таблицы «материалы»
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

«Таблица материалы» содержит в себе информацию о всех материалах и их характеристиках (табл.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, просмотров: 297.