Организация системы накопительных скидок в аптеках, работающих независимо друг от друга (не связанных одной общей базой

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

Но существует другая ситуация: данные из аптечных пунктов поступают с запозданием, или же сеть аптек (магазинов) вообще никак не связана логически между собой на уровне баз. В этом случае также возможна работа этих точек в общей системе накопления скидок. При этом покупатели идентифицируются по штрихкодам, присвоенным их карточкам. Для организации такой системы необходимо использовать несколько скриптов обмена, использующих встроенные функции: ExportDiscountPercentsSummary, ExportDiscountPercentsORGs, ImportDiscountPercentsSummaryFromDir, IMportDiscountPercentsOrgsFromDir.

Примеры скриптов обмена:

ExportDiscountSummary.pas - скрипт, формирующий отчет об отпущенных суммах покупателям, являющимся клиентами дисконтной программы программы. Устанавливается в торговой точке. Скрипт формирует файл в прописанном каталоге, после этого файл должен быть отправлен в офис с помощью почтовой программы, программы Solex или каким другим способом. В качестве настроек скрипт использует несколько констант, прописанных в его заголовке:

const OutputDir = 'c:\mail\out\'; // путь, по которому в результате выполнения скрипта формируется файл disc_org_summ.zip.

const Storage = 770; // Номер склада (пункта, точки), информация по которому передается.

const SaveAsStorage = 1; // Номер данного склада в центральной базе, если 0, то совпадает с Storage (номера контрагентов могут не совпадать, если базы не связаны


const PeriodDays = 7; // Период в днях, за который снимается данный отчет

const withDialog = true; // Запрашивать ли период у пользователя в виде диалога. Если нет, то используется PeriodDays.

Данный скрипт может быть прописан как периодическая процедура или как отдельный пользовательский пункт меню (меню "администратор/редактор пользовательского меню)..

ImportDiscountSummary.pas - этот скрипт устанавливается в центральной базе, он принимает файл disc_org_summ.zip, сформированный описанным выше. При работе используются следующие константы:

// DirName должно быть определено одним из следующих способов:

1)
const DirName = 'c:\mail\in\'; // на случай жесткого запуска по таймеру

2)
var DirName :string; // Имя базового каталога, в котором происходит поиск, если настроено через сканирование каталогов

Скрипт может быть прописан в настройках "сканирование каталогов", где он улавливает по поступивший файл и автоматичски его принимает. Идентификация клиентов дисконтной системы производитя по номерам их штрихкодов.

Вариант 1:

ExportOrgs.pas - передача справочника клиентов дисконтной программы с их текущими значениями скидок.

Используется константа:

const OutputDir = 'c:\mail\out\'; // Каталог экспорта

Данный скрипт генерирует файл-стандартный пакет 'arcsklad.zip', который может быть принят стандартной процедурой импорта данных и центральной базы, если данный пункт связан с ней, или файл 'percents_org.zip', если программы не имеют никакой связи. Определяется это параметром StandardFile в функции ExportDiscountPercentOrgs. Данный скрипт формирует второй тип файлов, для приема которых в аптечном пункте требуется скрипт, описанный ниже. Прописать данный скрипт можно или в пользовательском меню, или как автоматическую регулярную процедуру.

Скрипт собирает значения полей в справочнике контрагентов в поле "Код альтернативный 1", которое используется для указания подкаталога в каталоге OutputDir, ассоциируемого с аптечным пунктом, и всем контрагентам, являющимся клиентами дисконтной программы и имеющим значения в альт.коде, раскладывает в их подкаталоги указанный файл обмена.

Вариант 2:

ExportOrgs.1.pas - передача справочника клиентов дисконтной программы с их текущими значениями скидок.

Используется константа:

const OutputDirs = 'c:\mail\out\АП1;c:\mail\out\АП2;c:\mail\out\АП3'; // список каталогов, куда будет складываться результирующий файл

Отличается от предыдущего варианта тем, что раскладывает файлы строго про каталогам, прописанным в OutputDirs

ImportOrgs.pas - прием справочника клиентов дисконтной программы, идентификация по штрихкоду. Если штрихкод не найден, то клиент добавляется.

Используется константа:

// DirName должно быть определено одним из следующих способов

1)
const DirName = 'c:\mail\in\'; // на случай жесткого запуска по таймеру

2)
var DirName :string; // Имя базового каталога, в котором происходит поиск, если настроено через сканирование каталогов

 

const DoCheckPercents = true; // принять и проценты скидок также. Если False, то будут приниматься наименования, без значений процентов.

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