ИнфоАптека ®

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

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

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


user:vmsirenko:цена_на_заказ

Цена на заказ

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

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

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

Для решения поставленной задачи был написан командный файл с простым интерфейсом пользователя. Файл должен располагаться в папке с модулем склад, в ней так же должна присутствовать утилита isql.exe из папки «C:\Program Files\FirebirdIA\bin»

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

prop_48.cmd

prop_48.cmd
@echo off
::  +=====================================================+
::        Управление свойством товара "Цена на заказ"
::  +=====================================================+
 
:check
if not exist iapteka.ini echo ЋвбгвбвўгҐв ®Ўп§ вҐ«м­л© д ©« iapteka.ini & pause & exit
if not exist isql.exe echo ЋвбгвбвўгҐв ®Ўп§ вҐ«м­л© д ©« isql.exe & pause & exit
 
:begin
cls
echo.
echo.   “Їа ў«Ґ­ЁҐ бў®©бвў®¬ в®ў а  "–Ґ­  ­  § Є §"
echo.  =======================================================
echo.
echo.   1. Џ®б¬®ваҐвм бЇЁб®Є в®ў а®ў б § Ї®«­Ґ­­л¬ бў®©бвў®¬.
echo.   2. Ќ §­ зЁвм 業㠭  § Є § ¤«п в®ў а .
echo.   3. ЋзЁбвЁвм 業㠭  § Є § ¤«п в®ў а .
echo.   0. ‚л室
echo.
set mode=0
set /p mode=‚ўҐ¤ЁвҐ ­®¬Ґа Є®¬ ­¤л (Enter - Џа®¤®«¦Ёвм):
if %mode% EQU 0 goto :end
if %mode% EQU 1 goto :list
if %mode% EQU 2 goto :set_prop
if %mode% EQU 3 goto :del_prop
goto :begin
 
:list
call :connect
echo select>>%~dpn0.sql
echo mp.med_id,>>%~dpn0.sql
echo med.med_name,>>%~dpn0.sql
echo mp.val_num>>%~dpn0.sql
echo from medprops mp>>%~dpn0.sql
echo inner join medicine med on med.med_id=mp.med_id>>%~dpn0.sql
echo where mp.prop_id=48>>%~dpn0.sql;
echo QUIT;>>%~dpn0.sql;
if exist %~dpn0.txt del %~dpn0.txt
call :isql
reg delete HKEY_CURRENT_USER\Software\Microsoft\Notepad /v lfFaceName /f
reg delete HKEY_CURRENT_USER\Software\Microsoft\Notepad /v lfItalic /f
reg delete HKEY_CURRENT_USER\Software\Microsoft\Notepad /v iPointSize /f
reg add HKEY_CURRENT_USER\Software\Microsoft\Notepad /v lfFaceName /t REG_SZ /d "Lucida Console"
reg add HKEY_CURRENT_USER\Software\Microsoft\Notepad /v lfItalic /t REG_DWORD /d 0x0
reg add HKEY_CURRENT_USER\Software\Microsoft\Notepad /v iPointSize /t REG_DWORD /d 0x64
start /i notepad %~dpn0.txt
goto :begin
 
:set_prop
set med_id=0
set /p med_id=‚ўҐ¤ЁвҐ Є®¤ в®ў а  (Enter - Џа®¤®«¦Ёвм):
set /p price=‚ўҐ¤ЁвҐ 業㠭  § Є § (Enter - Џа®¤®«¦Ёвм):
set /a med_id*=1
set /a price*=1
if not %med_id% GTR 0 goto :begin
if not %price% GTR 0 goto :begin
call :connect
echo UPDATE OR INSERT INTO medprops (med_id, prop_id, val_num) values(%med_id%, 48, %price%);>>%~dpn0.sql
echo commit;>>%~dpn0.sql
echo QUIT;>>%~dpn0.sql;
call :isql
goto :begin
 
:del_prop
set med_id=0
set /p med_id=‚ўҐ¤ЁвҐ Є®¤ в®ў а  (Enter - Џа®¤®«¦Ёвм):
set /a med_id*=1
if not %med_id% GTR 0 goto :begin
call :connect
echo delete from medprops mp where mp.med_id=%med_id% and mp.prop_id=48;>>%~dpn0.sql
echo commit;>>%~dpn0.sql
echo QUIT;>>%~dpn0.sql;
call :isql
goto :begin
 
:isql
isql.exe -i %~dpn0.sql -o %~dpn0.txt 2>nul
goto :eof
 
:connect
for /f "tokens=1,2 delims=^=" %%a in (iapteka.ini) do if /i "Path"=="%%a" set dbname=%%b
echo CONNECT '%dbname%' USER 'SYSDBA' PASSWORD 'masterkey';>%~dpn0.sql
goto :eof
 
:end
del %~dpn0.sql
exit
Только авторизованные участники могут оставлять комментарии.
user/vmsirenko/цена_на_заказ.txt · Последние изменения: 2017/01/20 17:45 — Владимир Сиренко