ИнфоАптека ®

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

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

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


user:vmsirenko:рассылка_прайс-листов_в_аптеки_сети

Рассылка прайс-листов в аптеки сети

Поставлена задача получения прайс-листов поставщиков в аптеках сети для индивидуальных заказов. Сейчас прайс-листы получаются только в Центральном офисе.

Поставщики присылают свои прайсы через собственные программы и через наш фтп сервер непосредственно в Центральный офис. Можно пойти путем увеличения почтовых ящиков и установкой программ поставщиков в аптеках. Замечу, что сейчас в аптеках всего три почтовых ящика: ИнфоАптека, Служебный и Аптеки сети. Из них сотрудникам аптеки доступен всего лишь один ящик - «Аптеки сети». Такое маленькое количество почтовых ящиков удобно администрировать и терять это преимущество совсем не хочется.

Настройка

На данный момент в ПО ИнфоАптека нет собственного механизма отправки прайс-листов поставщиков из ЦО в аптеки сети. Поэтому придется делать это самостоятельно, будем обрабатывать загруженные прайс-листы и отправлять их в аптеки. Для этого в Центральном офисе создадим дополнительный почтовый ящик «Прайсы» и пропишем команду обмена

cmd /c start /min $MBOX\prices.cmd

В корне ящика расположите командный файл prices.cmd представленный ниже.

prices.cmd
@echo off
cls

rem Пропишите папку для отправки прайсов в аптеки
set mbox_out=\\AptSrv\mailbox\netall\OUT\

rem Запомним который час
set work_time=%time%
set work_time=%work_time:~0,2%

rem Запомним папку, где расположены все почтовые ящики
for %%a in ("%~dp0\..") do set mboxes=%%~fa

rem Не обрабатывать прайсы с 0:00 до 7:00
if %work_time% LSS 6 exit
for /d %%a in (%mboxes%\*.*) do call :scan_mbox %%a

rem Не очищать кэш с 7:00 до 0:00
if %work_time% GTR 6 exit
for /d %%a in (%~dp0CACHE\*.*) do call :clear_cache %%a
exit
 
:clear_cache
for %%a in (%1\*.*) do if not exist "%mboxes%\%~n1\trash\%%~nxa" del "%%a"
goto :eof
 
:scan_mbox
set mbox=%~n1
echo %mbox%
if not exist %~dp0CACHE\%mbox% md %~dp0CACHE\%mbox% 
for %%a in (%1\trash\*.xml) do call :packet "%%a"
for %%a in (%1\trash\*.plt) do call :check_true "%%a"
goto :eof
 
:packet
if exist "%~dp0CACHE\%mbox%\%~nx1" goto :eof
find /i "PACKET TYPE=""10""" %1 >nul || goto :check_error
:check_true
move %1 %mbox_out%
ren "%mbox_out%%~nx1" "%mbox%_%~nx1"
echo %1
goto :eof
 
:check_error
<nul set /p x=>"%~dp0CACHE\%mbox%\%~nx1"
goto :eof
Только авторизованные участники могут оставлять комментарии.
user/vmsirenko/рассылка_прайс-листов_в_аптеки_сети.txt · Последние изменения: 2017/10/20 15:39 — Владимир Сиренко