Импорт заявок от магазинов/аптечных пунктов в центральной базе

Предлагаемый здесь вариант работы используется в системах Центральная база <-> Аптечный пункт/магазин/торговая точка для автоматизации заказов, формируемых на местах и пересылаемых в центральную базу. Импортированные заявки попадают в список заявок, где и обрабатываются.

Для функционирования этой системы потребуется канал для передачи файлов-пакетов заявок. Например, это может быть система Solex с ее методикой обмена файлами.

После того, как файл-пакет заявок поступил на локальный диск, его обрабатывает скрипт импорта заявок. Скрипт этот может быть прописан или в настройках сканирования каталогов, или как отдельный пункт меню. Скрипт использует стандартную функцию, прописанную в FastReport: ImportPreqs. Все остальное зависит от деталей реализации. Вот простой пример такого скрипта:

файл office_import_preq.pas

// Скрипт импорта заявок, переданных через стандартные файлы заявок

// DirName должно быть определено одним из следующих способов
const DirName = 'c:\mail\in\'; // на случай жесткого запуска по таймеру
//var DirName :string; // Имя базового каталога, в котором происходит поиск, если настроено через сканирование каталогов

procedure import_preqs;
var
    FList :TSTringList;
    i :integer;
    SRV :variant;
begin
    FList := TStringlist.create;
    try
            GetFileList(DirName,FList,'exportpreq*.zip',true,true);

        for i := 0 to FList.count-1 do
        begin
            try
                ImportPreqs(FList[i]);
                deletefile(fList[i]);
            except
                try
                    createhinte(ExceptMessage,'Ошибка импорта');

                    SRV := CreateOleObject('SOLEX.XPRSRV');
                    SRV.Connectwp('Пользователь','1');
                    SRV.CreateNotify(ExceptMessage);

                except
                    createhinte(ExceptMessage,'Сохранение уведомления в solex');
                end;

            end;
        end;

        CreateHint('Обработано файлов: '+inttostr(FList.Count));
    finally
        FList.free
    end;
end;

begin
     import_preqs;
end.