Разработанная программа, после соединения с базой данных, формирует таблицу со списком каталогов, в которых хранится информация на состав конечного изделия. Из этой таблицы выбирается каталог и для этого каталога делается расчет потребности, если необходимо сделать расчет для нескольких каталогов, то выбирается несколько каталогов. Когда расчет произведен, формируется новая таблица с материалами и их потребностями. Каждому материалу соответствует свой уникальный код. Материал, который входит в состав изделия по необходимости можно заменить на какой-либо другой, но обязательно из той же группы. Замена может быть полной или частичной, так как часть необходимого материала может быть в наличии. Для каждого необходимого материала или для замены можно ввести соответствующего контрагента, то есть у кого будет производиться закупка. Для этого из справочника контрагентов, в котором содержится информация о названии, городе, физическом и юридическом адресе, индивидуальном налоговом номере и прочие характеристики, выбирается контрагент. После добавления контрагента необходимо ввести количество материала (в пределах ранее рассчитанной величины), требуемого на закупку, а так же единицу измерения (килограмм, метр, кубометр, литр и т.д.) и закупочную цену. После ввода всех необходимых данных формируется таблица заказов в которой содержится информация о материале, его количестве, цене и контрагенте. В этой таблице можно выбрать перечень материалов на которые надо оформлять заказ и формируется отчет.
2.4. Разработка таблиц
2.4.1. Структура таблицы «материалы»
«Таблица материалы» содержит в себе информацию о всех материалах и их характеристиках (табл.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.4.2. Структура таблицы «контрагенты»
«Таблица контрагенты» содержит информацию о контрагентах и их характеристиках (табл.2).
Табл.2
CODE : Внешний идентификатор (три знака почтового индекса + четырехзанчный код)
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_CHANGE : Идентифокатор изменившего пользователя
2.4.3. Структура таблицы «замены»
«Таблица замены» содержит информацию о заменах (табл.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;
-- Ищем были ли произведены частичные замены на данный материал
WHERE mz_mat_id = in_mat_id AND mz_type = 1
-- Если производится полная замена и уже есть частичные замены
IF (in_zamen_type = 0 AND mat_count > 0)
'Вы не можете проводить полную замену, т.к. с данным материалом уже была произведена частичная замена.'
--Проверяем, можно ли произвести частичную замену
IF (in_zamen_type = 1)
SELECT SUM (mz_kol)
INTO summ_kol
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)
'Общее количество материалов при проведении частичных замен превышает максимальное количество.'
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
/*удаление замены материала*/
DELETE FROM materials_zamen
WHERE mz_id = in_mz_id;
END materials_zamen_delete;
2.4.4. Структура таблицы «закупок»
«Таблица закупок» содержит информацию о заменах (табл.4).
Табл.4
MC_ID : Идентификатор
MC_MAT_ID : Идентификатор материала
MC_MZ_ID : Идентификатор замены материала
MC_POST_ID : Идентификатор контрагента
MC_NAME : Наименование контрагента
MC_COUNT : Количество на закупку
MC_COST : Цена
MC_EDIZM : Еденица измерения
MC_KAT_ID : Каталог
Процедура добавления контрагента в таблицу закупок:
CREATE OR REPLACE PROCEDURE "MATERIALS_CONTRAGENT_CREATE" (
in_mc_kat_id IN materials_contragent.mc_kat_id%TYPE, in_mc_mat_id IN materials_contragent.mc_mat_id%TYPE, in_mc_mz_id IN materials_contragent.mc_kat_id%TYPE, in_mc_post_id IN materials_contragent.mc_post_id%TYPE, in_mc_name IN materials_contragent.mc_name%TYPE, in_mc_count IN materials_contragent.mc_kat_id%TYPE, in_mc_cost IN materials_contragent.mc_cost%TYPE, in_mc_edizm IN materials_contragent.mc_edizm%TYPE, out_id OUT materials_contragent.mc_id%TYPE
SELECT seq_materials_contragent_mc_id.NEXTVAL
INSERT INTO materials_contragent
(mc_id, mc_mat_id, mc_mz_id, mc_post_id, mc_name,
mc_count, mc_cost, mc_edizm, mc_kat_id
VALUES (out_id, in_mc_mat_id, in_mc_mz_id, in_mc_post_id, in_mc_name,
in_mc_count, in_mc_cost, in_mc_edizm, in_mc_kat_id
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12