бесплатные рефераты

Изучение и анализ рынка товаров, закупаемых и реализуемых торгово-закупочным предприятием (на примере Белгородского территориального фонда обязательного медицинского страхования) )

В базе входных для облегчения пользователю ввода содержимого прайс-листов и листов заказа используется  двухуровневый справочник "Списки часто используемых товаров" (см. рисунок 2.7). Родительская таблица LISTNAME (1) содержит наименования списков, а дочерняя таблица LIST (1.1) – их содержимое.

При вводе одного из списков часто используемых товаров в прайс-лист или лист заказа получается  лист, содержащий ссылки на лекарственные средства (справочник DRUG), а все остальные поля – пустые.

Описание полей таблицы LISTNAME смотрите в таблице 2.14.

Таблица 2.14  Описание полей таблицы LISTNAME

Наимен. поля

Тип

Логический смысл

Физический смысл

Numb

Integer

идентификационный

номер

первичный ключ

Name

Char(35)

наименование списка часто используемых товаров

значащее поле

Описание полей таблицы LIST смотрите в таблице 2.15.

Таблица 2.15 Описание полей таблицы LIST

Наимен. поля

Тип

Логический смысл

Физический смысл

Numb

Integer

идентификационный

номер

первичный ключ

LNNumb

Integer

номер наименования

списка часто

используемых товаров

вторичный ключ

DrnNumb

Integer

номер лек. средства

вторичный ключ

На рисунке 2.7 справочники указываются потому, что основное их использование осуществляется базами входных данных (прайс-листов и листов заказа). В базах выходных  данных справочники практически не используются, потому что для анализа эффективности предыдущих заказов и сравнения их с текущими заказами эти базы должны храниться. А так как входная информация, представляющая из себя содержимое прайс-листов и листов заказа предыдущих формирований заказов, пользователя не интересует, то базы входных данных удаляются.

Во всех справочниках, кроме справочников SUPPLIER (поставщики) и LPU (лечебно-профилактические учреждения (заказчики)), могут удаляться записи. В справочниках SUPPLIER и LPU записи, где указаны поставщики и заказчики, которые включены в сохраняемые базы выходных данных, не могут быть удалены из-за нарушения, в случае удаления, целостности информации базы выходных данных.

Справочник SUPPLIER представляет информацию о поставщиках: содержит поля: наименование поставщика, ссылку на справочник территорий REGION, адрес, телефон и т.д. Описание полей справочника SUPPLIER смотрите в таблице 2.16.

Таблица 2.16 Описание полей справочника SUPPLIER

Наимен. Поля

Тип

Логический смысл

Физический смысл

Numb

Integer

идентификационный

номер

первичный ключ

Name

Char(60)

наименование поставщика

значащее поле

RegionCod

Char(10)

код территории (региона)

вторичный ключ

Address

Char(70)

адрес

значащее поле

Phone

Char(30)

телефон

значащее поле

Справочник LPU содержит информацию о заказчиках (ЛПУ), аналогичную информации о поставщиках. Описание полей справочника LPU смотрите в таблице 2.17.

Таблица 2.17 Описание полей справочника LPU

Наимен. Поля

Тип

Логический смысл

Физический смысл

Code

Char(30)

код заказчика (ЛПУ)

первичный ключ

Name

Char(60)

наименование заказчика (ЛПУ)

значащее поле

RegionCod

Char(10)

код территории (региона)

вторичный ключ

Address

Char(70)

адрес

значащее поле

Phone

Char(30)

телефон

значащее поле

Справочник REGION – это справочник территорий (регионов). В нем указаны наименования и коды регионов, где могут располагаться поставщики или заказчики. Описание полей справочника REGION смотрите в таблице 2.18.

Таблица 2.18  Описание полей справочника REGION

Наимен. поля

Тип

Логический смысл

Физический смысл

Code

Char(10)

код территории (региона)

первичный ключ

Name

Char(40)

наименование территории

значащее поле

Parent

Char(10)

код территории верхнего уровня

поле для поддержания иерархии

Child

Smallint

количество дочерних

территорий

поле для поддержания иерархии

Справочник CONDITION – справочник условий поставки поставщиков. Значащим в нем является одно поле – наименование условия поставки. Описание полей справочника CONDITION смотрите в таблице 2.19.

Таблица 2.19 Описание полей справочника CONDITION

Наимен. поля

Тип

Логический смысл

Физический смысл

Numb

Integer

идентификационный

номер

первичный ключ

Name

Char(35)

условие поставки

значащее поле

Справочник DRUG представляет из себя справочник лекарственных средств, в котором указаны торговое наименование лекарственного средства, зависящее от его производителя, код (штрих-код) лекарственного средства и ссылки на справочники международного наименования лекарственных средств, групп, производителей. Международное наименование лекарственного средства – это наименование всех лекарственных средств, идентичных по своему составу – не зависит от производителя. Но в зависимости от того, в каких пропорциях в лекарстве находятся его структурные элементы, лекарство приобретает свои специфические свойства, поэтому качество лекарства зависит от его производителя.

Для того, чтобы различать лекарства различных производителей, введено торговое наименование и штрих-код лекарственного средства.

Заказчики могут указывать в своих заявках торговые наименования медикаментов, указывая тем самым его производителя. И, если в установках программы поставить учет производителей, то при формировании заказа медикаменты, имеющие различные торговые наименования будут считаться различными и поиск их в прайс-листах будет вестись по торговому наименованию.

Если же установка учета производителей не указана перед началом формирования заказа, то заказ будет формироваться по международным наименованиям лекарственных средств, то есть медикаменты, указанные в листах заказа с различными торговыми наименованиями, но одним международным будут считаться одним и тем же лекарственным средством, и его поиск в прайс-листах будет вестись по международному наименованию. Описание полей справочника DRUG смотрите в таблице 2.20.

Таблица 2.20 Описание полей справочника DRUG

Наимен. поля

Тип

Логический смысл

Физический смысл

Numb

Integer

идентификационный

номер

первичный ключ

Name

Char(80)

наименование лекарственного средства

значащее поле

LastChange

Date

дата последнего

изменения записи

значащее поле

Code

Integer

код лекарственного

 средства

значащее поле

IntCode

Integer

номер международного

наименования

вторичный ключ

GrNumb

Integer

код группы 

вторичный ключ

PrNumb

Integer

номер производителя

вторичный ключ

Справочник INTERNAT – справочник международных наименований лекарственных средств. О том, зачем необходимо международное наименование, смотрите описание справочника DRUG. Описание полей справочника INTERNAT смотрите в таблице 2.21.

Таблица 2.21 Описание полей справочника INTERNAT

Наимен. поля

Тип

Логический смысл

Физический смысл

Code

Integer

идентификационный

номер

первичный ключ

Name

Char(40)

международное

наименование

значащее поле

Справочник DGROUP – это справочник групп лекарственных средств. Лекарство может относиться к той, или иной группе в зависимости от того, от какого недуга оно применяется. Описание полей справочника DGROUP смотрите в таблице 2.22.

Таблица 2.22 Описание полей справочника DGROUP

Наимен. Поля

Тип

Логический смысл

Физический смысл

Code

Integer

код группы

первичный ключ

Name

Char(200)

наименование группы

лекарственного средства

значащее поле

Parent

Integer

код группы верхнего уровня

поле для поддержания иерархии

Child

Smallint

количество дочерних

групп

поле для поддержания иерархии

Справочник PROD – справочник производителей лекарственных средств, в котором, помимо наименования и ссылки на справочник стран производителей COUMTRY, указан вес производителя. Это поле используется при формировании заказа с помощью генетического алгоритма, когда поставлена установка на то, чтобы, если установлен учет производителей, использовать производителя лекарственных средств как критерий (см. п. 2.3.5). Лекарственные средства производителя, имеющего больший вес, являются качественнее  лекарственных средств производителя с меньшим весом.

Описание полей справочника PROD смотрите в таблице 2.23.

Таблица 2.23 Описание полей справочника PROD

Наимен. поля

Тип

Логический смысл

Физический смысл

Numb

Integer

идентификационный

номер

первичный ключ

Name

Char(60)

наименование

производителя

лекарственного средства

значащее поле

Weight

Double Precision

вес производителя

значащее поле

CntNumb

Integer

номер страны

производителя

вторичный ключ

Справочник COUMTRY (на рисунке не указан) – справочник стран производителей – значащее поле – наименование страны производителя. Описание полей справочника COUMTRY смотрите в таблице 2.24.

Таблица 2.24 Описание полей справочника COUMTRY

Наимен. поля

Тип

Логический смысл

Физический смысл

Numb

Integer

идентификационный

номер

первичный ключ

Name

Char(20)

наименование страны

значащее поле

Триггеры в базах данных выполняют действия, которые обеспечивают корректное заполнение баз данных, каскадные обновления и многие другие удобства при работе с базами данных. Триггеры действуют тогда, когда запись вставляется, изменяется или удаляется.

В базе входных данных имеются следующие основные триггеры:

n   BD_PRICEATR, который позволяет удалить прайс-лист полностью (атрибуты и содержимое) удаляя запись в таблице атрибутов прайс-листа;

n   BD_ZAKSHATR – позволяет удалить лист заказа полностью (атрибуты и содержимое) удаляя запись в таблице атрибутов листа заказа;

n   триггеры, удаляющие в вводимых значениях строковых полей ведущие и последние пробелы;

n   триггеры, вводящие текущую дату в поле даты атрибутов вводимого прайс-листа,  листа заказа, в поле даты последнего изменения записи справочника DRUG;

n   BD_LISTNAME, позволяющий удалить список часто встречающихся товаров удалив его название в таблице LISTNAME;

n   BD_CONDITION запрещает удалять условие поставки в справочнике CONDITION, если оно занесено в атрибуты хотя бы одного прайс-листа;

n   BD_SUPPLIER запрещает удалять наименование поставщика в справочнике SUPPLIER, если этот поставщик занесен хотя бы в один сформированный заказ;

n   BD_LPU запрещает удалять наименование заказчика (ЛПУ) в справочнике LPU, если этот заказчик занесен хотя бы в одну разнарядку сформированного заказа;

n   триггеры, обеспечивающие корректную работу со справочником территорий REGION;

n   BD_REGION запрещает удалять наименование территории в справочнике территорий REGION, если она встречается хотя бы у одного поставщика или заказчика в справочниках SUPPLIER и LPU;

n   триггеры, обеспечивающие корректную работу со справочником групп лекарственных средств DGROUP;

n   BD_GROUP запрещает удалять группу в справочнике групп лекарственных средств DGROUP, если она указана хотя бы для одного лекарственного средства в справочнике лекарственных средств DRUG;

n   BD_PROD запрещает удалять производителя в справочнике производителей лекарственных средств PROD, если он указан хотя бы для одного лекарственного средства в справочнике лекарственных средств DRUG;

n   BD_INTERNAT запрещает удалять международное наименование лекарственного средства в справочнике международных наименований INTERNAT, если оно указано хотя бы для одного лекарственного средства в справочнике лекарственных средств DRUG;

n   BD_COUNTRY запрещает удалять страну в справочнике стран производителей COUNTRY, если она указана хотя бы для одного производителя в справочнике производителей лекарственных средств PROD.

2.3.3.3 База выходных данных.

Струк­тура базы выходных данных, используемые ею таблицы и справочники  представлены на рисунке 2.8.


База выходных данных разделяется на две подбазы: база данных заказов и база данных разнарядок. Информация в базу выходных данных заносится программно – это информация о сформированных системой заказах и разнарядках. Пользователь может просматривать, корректировать базу выходных данных и выводить на печать ее содержимое в виде отчетов. В базе выходных данных используется поля входной базы данных и справочники лекарственных средств DRUG, поставщиков SUPPLIER и заказчиков LPU.

При удалении из базы входных данных и справочников всех значений, на которые имеются ссылки в заказе, кроме поставщиков и заказчиков, целостность информации в базе выходных данных не нарушится, так как в нее введены поля, содержащие все значения, которые могут быть удалены (см. п. 2.3.3.2).

Таблица  ZAKAZATR – таблица атрибутов сформированных заказов – является родительской таблицей базы данных заказов.  Основные ее поля: код заказа (код, присваиваемый заказу пользователем по его усмотрению), наименование заказа, дата формирования, итоговая сумма заказа с учетом всех скидок и итоговая скидка. Описание полей таблицы  ZAKAZATR смотрите в таблице 2.25.

Таблица 2.25 Описание полей таблицы ZAKAZATR

Наимен. Поля

Тип

Логический смысл

Физический смысл

Numb

Integer

идентификационный

номер

первичный ключ

Code

Double Precision

код заказа

значащее поле

Name

Char(28)

наименование заказа

значащее поле

Date_

Date

дата формирования заказа

значащее поле

TotSum

Double Precision

итоговая сумма с учетом скидок

значащее поле

TotDisc

Double Precision

итоговая скидка

значащее поле

DelTag

Char(1)

поле отметки заказа на удаление (отметка: '>')

логическое поле

Таблица ZAKAZ  представляет содержимое сформированного заказа. Основными ее полями являются: ссылка на лекарственное средство справочника лекарственных средств DRUG, ссылка на поставщика справочника SUPPLIER, цена указанного лекарственного средства  у данного поставщика, количество упаковок, стоимость всех упаковок лекарственного средства у данного поставщика.

Кроме основных полей в таблице ZAKAZ имеются поля для сохранения целостности информации. К ним относятся: наименование лекарственного средства, его код, международное наименование, наименование группы и наименование производителя. Описание полей таблицы  ZAKAZ смотрите в таблице 2.26.

Таблица 2.26 Описание полей таблицы ZAKAZ

Наимен. поля

Тип

Логический смысл

Физический смысл

Numb

Integer

идентификационный

номер

первичный ключ

ZKNumb

Integer

номер атрибутов заказа

вторичный ключ

ZSuNumb

Integer

номер поставщика заказа

в таблице ZAKSUPPL (поставщики заказов)

вторичный ключ

SuNumb

Integer

номер поставщика

вторичный ключ

DrnNumb

Integer

номер лекарственного

средства

вторичный ключ

DrnName

Char(80)

наименование

лекарственного средства

значащее поле

DrnCode

Integer

код

лекарственного средства

значащее поле

IntName

Char(40)

международное

наименование

значащее поле

GrName

Char(200)

наименование группы

значащее поле

ProdName

Char(60)

наименование

производителя

значащее поле

Price

Double Precision

цена

значащее поле

Quant

Double Precision

количество упаковок

значащее поле

Cost

Double Precision

стоимость всех упаковок

значащее поле

Таблица ZAKSUPPL (поставщики заказов) представляет информацию по суммам закупки у каждого поставщика, прайс-лист которого входит в сформированный заказ. Основными полями таблицы являются: ссылка на поставщика справочника SUPPLIER, сумма закупки у этого поставщика с учетом скидки, скидка в рублях. Поля, обеспечивающие сохранность информации: условие поставки поставщика, дополнительная информация. Описание полей таблицы ZAKSUPPL смотрите в таблице 2.27.

Таблица 2.27 Описание полей таблицы ZAKSUPPL

Наимен. Поля

Тип

Логический смысл

Физический смысл

Numb

Integer

идентификационный

номер

первичный ключ

ZKNumb

Integer

номер атрибутов заказа

вторичный ключ

SuNumb

Integer

номер поставщика

вторичный ключ

PANumb

Integer

номер атрибутов

прайс-листа

вторичный ключ

CoName

Char(35)

условие поставки

значащее поле

Inform

Char(65)

дополнительная

информация

значащее поле

DiscTotSum

Double Precision

сумма закупки у поставщика с учетом скидки

значащее поле

Discount

Double Precision

скидка

значащее поле

База данных разнарядок состоит из двух таблиц: родительской таблицы RAZNARATR (атрибуты разнарядок) и дочерней таблицы RAZNARYAD (содержимое разнарядок). В эти таблицы заносится информация из сформированных заказов, распределенная по потребностям заказчиков (ЛПУ). По этой информации программно составляются отчеты, которые представляют из себя разнарядки на поставку поставщиками и разнарядки на получение ЛПУ лекарственных средств.

Поле "дополнительная информация" в RAZNARATR – поле, относящееся к полям  для обеспечения целостности информации.

Описание полей таблицы RAZNARATR смотрите в таблице 2.28.

Таблица 2.28 Описание полей таблицы RAZNARATR

Наимен. Поля

Тип

Логический смысл

Физический смысл

Numb

Integer

идентификационный

номер

первичный ключ

ZSuNumb

Integer

номер поставщика заказа

вторичный ключ

ZSANumb

Integer

номер атрибутов листа

 заказа заказчика 

вторичный ключ

LPUCode

Char(30)

код заказчика (ЛПУ)

вторичный ключ

Inform

Char(65)

дополнительная

информация

значащее поле

Sum

Double Precision

сумма закупки всех необходимых заказчику

лекарственных средств

значащее поле

Описание полей таблицы RAZNARYAD смотрите в таблице 2.29.

Таблица 2.29 Описание полей таблицы RAZNARYAD

Наим. Поля

Тип

Логический смысл

Физический смысл

Numb

Integer

идентификационный

номер

первичный ключ

PANumb

Integer

номер атрибутов прайс-листа

вторичный ключ

ZakNumb

Integer

номер позиции в таблице сформированного заказа ZAKAZ содержимого

вторичный ключ

Quant

Double Precision

количество упаковок

значащее поле

Cost

Double Precision

стоимость закупки без учета скидки всех упаковок лек. средства из позиции ZakNumb у поставщика с прайс-листом PANumb

значащее поле

Перечислим основные триггеры базе выходных данных:

n   BI_ZKDATE вносит в поле даты формирования заказа текущую дату;

n   триггеры, позволяющие удалив атрибуты заказа в таблице ZAKAZATR удалить содержимое всего заказа и его разнарядок.



2.3.4 Подсистема конвертирования и наполнения базы входных

данных

Входными данными для решения задачи нахождения оптимального заказа  явля­ются заявки заказчиков на необходимые им партии товаров и прайс-листы фирм, предла­гающих товары.  Входные данные могут поставляться в виде файлов таких форматов, как *.xls (Excel), *.doc, *.rtf (Word), *.html, *.dbf  (dBase) и txt, а также на бумажных бланках. Информация, имеющаяся на бумажных бланках, должна быть занесена в базу входных данных вручную. Информация, имеющаяся в виде файлов, обрабатывается автоматизиро­ванно и заносится в базу входных данных автоматически. Автоматизированная обработка состоит в том, что файлы преобразовываются в текстовый формат (txt) и приводятся к единой структуре с использованием конвертора файлов. А затем ин­формация из полученных файлов заносится в базу входных данных автоматически.  За нехваткой времени данная подсистема осталась недоработанной.

2.3.5 Подсистема формирования заказов на товары


Основными, несущими наибольшую смысловую нагрузку и решающими основную задачу СППР для формирования заказа на торгово-закупочном предприятии, модулями являются модули, представленные на рис. 2.5 в п. 2.3.2 :

" Формирование заказа простыми методами " и " Формирование заказа с помощью Генетического алгоритма ".

Рассмотрим функционирование модуля "Формирование заказа простыми методами ".

 Сначала пользователь указывает дату прайс-листов или то, что прайс-листы должны быть выбраны по отметке, ранее произведенной пользователем. Аналогичная операция осуществляется и для листов заказа.

После нажатия кнопки <Выбрать> в модуле обрабатывается событие нажатия кнопки. Обработка события состоит в следующем: осуществляется выборка данных из базы данных прайс-листов и базы данных листов заказа.

К данным, выбираемым из прайс-листов относятся:

n   номер прайс-листа;

n   номер поставщика;

n   номер условия поставки;

n   система скидок;

n   содержимое прайс-листа, к которому относятся номера лекарственных средств и соответствующие им номера международных наименований, цены и сроки годности.

Данными, выбираемыми из листов заказа являются:

n   номер лекарственного средства;

n   номера заказчиков по каждому лекарственному средству и заказываемое ими количество. 

На основе выбранных данных из листов заказа рассчитывается итоговое количество упаковок по каждому лекарственному средству, которое надо закупить.

Далее функционирование модуля " Формирование заказа простыми методами " рассмотрим в рамках подсистемы: на рисунке 2.9 представлена блок-схема функционирования подсистемы формирования заказов на товары.   Выборку информации в блок-схему решено не вносить, так как она производится для увеличения быстродействия программы – считывание при работе алгоритма формирования заказа информации из базы данных сильно замедляет работу алгоритма.


После окончания выборки входной информации пользователь настраивает систему: отмечает, надо ли при формировании заказа учитывать территорию поставщиков, их условия поставки, производителей лекарственных средств, товары на складе.

Далее пользователь вводит наименование и код заказа, который надо сформировать. А затем уже выбирает один из методов формирования заказа:

1) по минимальным ценам;

2) на одно предприятие;

3) по максимальным ценам;

4) генетический алгоритм по минимальной стоимости.

Первые три из указанных методов выполняются в этом же модуле, откуда он и получил свое название: "Формирование заказа простыми методами ".

На рисунке 2.10 показано окно модуля "Формирование заказа простыми методами ".

Рис. 2.10 Окно модуля "Формирование заказа простыми методами "

 

Приведем список основных подпрограмм модуля.



В секции private класса TForm1 находятся следующие методы:

Процедура BringToArrs – занесение данных прайс-листов в динамические массивы.

Процедура SetSellMatr – заполнение матрицы SellMatr.  В матрице элемент равен 0, если в i-ом прайс-листе не предлагается товар j, и 1, если в i-ом прайс-листе товар j предлагается.

Функция SupplSell – проверка, предлагает ли указанный поставщик (соответствующий ему  прас-лист) указанный товар. Если да, то функция возвращает true, иначе – false.

Процедура Calc_BringToDB – вычисляет сумму закупки по всему заказу с учетом скидок и общую скидку на эту сумму, а также другие необходимые значения и заносит все результаты в базу выходных данных.

Процедура SolverForOne – формирование заказа на закупку товаров для одного указанного поставщика.


В секции public класса TForm1 находятся следующие методы

Функция SuDiscountCost – возвращает стоимость закупки с учетом скидки у поставщика, которому соответствует указанный прайс-лист.

Процедура MinMaxSolver(min:boolean . . .)  -- формирование заказа на закупку товаров по минимальной цене, если min=true,  или по максимальной цене, если min=false.

Страницы: 1, 2, 3, 4, 5


© 2010 РЕФЕРАТЫ