ИнфоАптека ®

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

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

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


user:vmsirenko:запасы_аптек_сети_в_текстовый_файл_xml2csv

Запасы аптек сети в текстовый файл (XML2CSV)

Появилась необходимость, файл пакета «Запасы аптек сети» преобразовать в CSV формат, для последующей выгрузки на веб сайт. Для выборки значений из пакета воспользовался утилитой XMLStarlet

Пример

net_stock.cmd
@echo off
set NET_STOCK=%1
set NET_STOCK_CSV=%~n1.CSV
if not defined NET_STOCK goto :err1
echo Дата запасов;Аптека;Название товара;Поставщик;Дата поставки;Количество поставки;Количество;Цена закупки с НДС;Цена розничная;Срок годности>%NET_STOCK_CSV%
for /f "tokens=*" %%a in ('xml.exe sel -t -v "//PACKET/NET-STOCK/@STOCKDATE" -n %NET_STOCK%') do set STOCKDATE=%%a
for /f "tokens=*" %%a in ('xml.exe sel -t -v "/PACKET/NET-STOCK/NODE/@NODE_ID" -n %NET_STOCK%') do call :NODE %%a
rem xml fo -e cp1251 NET_STOCK.CSV
exit
 
:NODE
for /f "tokens=*" %%a in ('xml.exe sel -E cp1251 -t -m "/PACKET/DICS/NODES/R[@F0=%1]" -v "@F1" -n %NET_STOCK%') do set NODE_NAME="%%a"
for /f "tokens=1,2,3,4,5,6,7,8*" %%a in ('xml.exe sel -t -m "/PACKET/NET-STOCK/NODE[@NODE_ID=%1]/ITEM" -v "@MED_ID" -o " " -v "@SUPPLIER_ID" -o " " -v "@SUPPLYDATE" -o " " -v "@SUPPLYQTTY" -o " " -v "@QTTY" -o " " -v "@SALLPRICE" -o " " -v "@RPRICE" -o " " -v "@VALID_DATE" -n %NET_STOCK%') do call :ITEM "%%a" "%%b" "%%c" "%%d" "%%e" "%%f" "%%g" "%%h"
goto :eof
 
:ITEM
set SUPPLYDATE=%~3
set SUPPLYQTTY=%~4
set QTTY=%~5
set SALLPRICE=%~6
set RPRICE=%~7
set VALID_DATE=%~8
for /f "tokens=*" %%a in ('xml.exe sel -E cp1251 -t -m "/PACKET/DICS/MEDICINE/R[@F0=%~1]" -v "@F1" -n %NET_STOCK%') do set MED_NAME="%%a"
for /f "tokens=*" %%a in ('xml.exe sel -E cp1251 -t -m "/PACKET/DICS/PARTNERS/R[@F0=%~2]" -v "@F1" -n %NET_STOCK%') do set PARTNERS="%%a"
set MED_NAME=%!!&&%
echo %STOCKDATE%;%NODE_NAME%;%MED_NAME%;%PARTNERS%;%SUPPLYDATE%;%SUPPLYQTTY%;%QTTY%;%SALLPRICE%;%RPRICE%;%VALID_DATE%>>%NET_STOCK_CSV%
goto :eof
 
:err1
echo ЏаЁ¬Ґа § ЇгбЄ :
echo net_stock.cmd ^<NET_STOCK_[XXX].XML^>
pause
exit
Только авторизованные участники могут оставлять комментарии.
user/vmsirenko/запасы_аптек_сети_в_текстовый_файл_xml2csv.txt · Последние изменения: 2017/07/01 22:28 — Владимир Сиренко