ИнфоАптека ®

Автоматизация аптек и аптечных сетей

Инструменты пользователя

Инструменты сайта


user:vmsirenko:запасы_аптек_сети

Запасы аптек сети

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

В ПО ИнфоАптека для этих целей есть специальный одноименный пакет Запасы аптек сети. Чтобы он выгружался нужно не только сделать его выгружаемым, но и в свойствах отдела установить признак Запасы аптек сети.

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

Я решил эту задачу так: загружаю в ЦО запасы всех аптек, затем из папки с загруженными пакетами - TRASH, отбираю и копирую уже с новой маской в папку с исходящими пакетами - OUT. Теперь при открытии новой аптеки, я просто добавляю/меняю условия сортировки в ЦО.

Разделить пакеты

netstock.cmd
@echo off
 
set PRED_ID=Код вашего предприятия
set mailbox=\\APTSRV\mailbox\netapt
 
if not exist %mailbox%\TRASH\NET_STOCK_???.NST exit

:: В скобках ниже перечислены узлы приёмники.
:: Первый аргумент вызова подпрограммы :begin - узел источник.

::Группа аптек №1
for %%a in (002,003,030,013,034,067,026,056,036,033,006) do call :begin 003 %%a
for %%a in (002,003,030,013,034,067,026,056,036,033,006) do call :begin 030 %%a

::Группа аптек №2
for %%a in (014,011,028,029,006,033,036,056,026,067,012,023) do call :begin 014 %%a
for %%a in (014,011,028,029,006,033,036,056,026,067,012,023) do call :begin 011 %%a
for %%a in (014,011,028,029,006,033,036,056,026,067,012,023) do call :begin 028 %%a
for %%a in (014,011,028,029,006,033,036,056,026,067,012,023) do call :begin 029 %%a
 
 
if exist %mailbox%\TRASH\NET_STOCK_???.NST del %mailbox%\TRASH\NET_STOCK_???.NST
 
exit
 
:begin
if exist %mailbox%\TRASH\NET_STOCK_%1.NST copy %mailbox%\TRASH\NET_STOCK_%1.NST %mailbox%\OUT\%PRED_ID%%2_NET_STOCK_%1.NST
goto :eof

Восстановить пакеты

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

netstock_repair.cmd
@echo off
:: Почтовый ящик
set mailbox=\\APRSRV\mailbox\netapt
 
 
:begin
if not exist "%mailbox%\SENT\???????_NET_STOCK_???.NST" exit
for %%a in ("%mailbox%\SENT\???????_NET_STOCK_???.NST") do set from=%%a
set node=%from:~-7%
ren %from% NET_STOCK_%node%
move "%mailbox%\SENT\NET_STOCK_%node%" "%mailbox%\TRASH">null
del "%mailbox%\SENT\???????_NET_STOCK_%node%"
echo NET_STOCK_%node%
goto :begin
Только авторизованные участники могут оставлять комментарии.
user/vmsirenko/запасы_аптек_сети.txt · Последние изменения: 2017/02/21 17:31 — Владимир Сиренко