ТЗ на организацию электронного документооборота с
«Центр внедрения «ПРОТЕК»

Общие сведения

Необходимо реализовать автоматическую выкладку расходных накладных (РН) в формате XML на ftp-ресурс ftp://farvater. *****/, используя технологию, основанную на применении протокола обмена сообщениями на базе XML (SOAP) через ftp-ресурс farvater. protek, что ускорит обработку информации клиентом «Центр внедрения «Протек» (ЦВ «Протек») и в дальнейшем позволит быстрее передать товар на продажу.

Предложение по реализации в системе «Оперативный учет»

В контекстном меню Заказов («Заказ на склад» (класс 89), «Заказа-транзит» (класс 248)) добавить новый пункт «Отправить расходные накладные ЦВ «Протек» (см. рис. 1). Данный пункт меню должен быть доступен только для Заказов с контрагентом «Протек» (id = ).

Рис. 1. Контекстное меню

Для каждой РН формируется отдельный xml-файл. В качестве названия файла использовать значащие цифры из номер РН (см. описание тега <number></number>).

Для контроля выкладки РН и хранения образов сформированных xml-файлов создать таблицу, включающую следующие поля:

Наименование поля

Описание поля

OID

Первичный ключ таблицы

RN_ID

ID расходной накладной, выкладываемой ftp-ресурс

IMAGE_FILE

Образ файла (BLOB)

IS_UPLOADED

0 – РН не выложена на ftp

1 – РН выложена на ftp

UPLOAD_DATE

Дата и время выкладки файла на ftp

Необходимо реализовать 2 варианта выкладки РН на ftp-ресурс: автоматический (при первом проведении РН) и ручной (при выборе пункта контекстного меню «Отправить расходные накладные ЦВ «Протек»).

НЕ нашли? Не то? Что вы ищете?

Xml-файл для каждой РН может выкладываться на ftp-ресурс несколько раз.

Первичная выкладка происходит:

1.  автоматически при проведении РН (если записи в контрольной таблице не существует);

2.  в ручной режиме при ошибке автоматической выкладки (запись в контрольной таблице существует и IS_UPLOADED = 0).

Вторичная выкладка происходит:

1.  автоматически при проведении РН после предшествующего отката (запись в контрольной таблице существует и IS_UPLOADED = 1);

2.  в ручном режиме по запросу пользователя (запись в контрольной таблице существует и IS_UPLOADED = 1).

При каждой попытке выкладки файла на ftp-ресурс в контрольной таблице должны обновляться образ файла, дата/время выкладки и признак успешности выкладки. Файл считается отправленным, если признак IS_UPLOADED = 1.

Если при выкладке РН произошел сбой, то признак IS_UPLOADED = 0 и ответственным сотрудникам отправляется уведомление на электронную почту с сообщением об ошибке выкладки. Тема и тело сообщения совпадают: «Расходная накладная № <номер РН>. Ошибка отправки в ЦВ «Протек». Необходимо провести ручную отправку РН». Список рассылки: менеджер из Заказа и сотрудник, создавший Заказ (определить по логину пользователя, создавшего Заказ). Адрес электронной почты определить из справочника «Физические лица».

При ручной выкладке РН на ftp-ресурс пользователю выводится окно выбора РН, которое заполняется проведенными РН, подчиненными выбранному Заказу. Если проведенных РН нет, то выводить информационное сообщение: «Нет данных для отправки. Расходные накладные не проведены!».

Окно выбора РН имеет следующую структуру:

Окно выбора Расходных накладных

Поле

Описание

Checkbox

Для выбора РН, по умолчанию все сняты

№ РН

Номер РН

Статус

Если IS_UPLOADED =1, то статус = «Отправлена», иначе статус = «Не отправлена»

Кнопки «Отправить» и «Отмена»

Пользователь помечает в Checkbox РН, которые необходимо отправить, и нажинает кнопку «Отправить». Для каждой помеченной РН формируется xml-файл и выкладывается на ftp-ресурс, а в таблице контроля выкладки обновляется существующая запись.

При вторичной выкладке файлов необходимо автоматически отправлять письмо на электронный адрес: *****@ (для хранения адреса завести константу). Тема письма: «, Расходная накладная № [значение из тега <number></number>]. Повторная выкладка». Во вложение добавить xml-файл РН.

Общие требования к заполнению XML-файла

1.  Кодировка файла должна быть или UTF-8 или ANSI. В зависимости от этого должна заполняться первая строка файла:

<?xml version="1.0" encoding="UTF-8"?>

или

<?xml version="1.0" encoding="WINDOWS-1251"?> (только верхний регистр!!!)

2.  Поля, отмеченные как Optional, необязательны для заполнения! Не заполняются только в том случае, когда в базе Поставщика нет информации.

3.  Форматы дат могут быть только следующими:

T09:30:47

T09:30:47+03:00

4.  Регистр написания тегов важен для дальнейшей обработки файла.

5.  Когда заполнен тег lot, тогда в блоке тегов invoiceLotSet должны обязательно заполняться теги manufacturerPrice и qty.

6.  Если в написании названия препарата (тег description и тег mnn) используются спецсимволы (или & или < или > или " и т. п.), то при заполнении xml они должны быть заменены (базовое требование XML).

Варианты замены спецсимволов:

& нужна замена на &amp;

> нужна замена на &gt;

< нужна замена на &lt;

" нужна замена на &quot;

' нужна замена на &apos.

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

8.  Выкладка xml-файлов должна осуществляться на фтп-ресурс ftp://farvater. *****/ в папку INVOICE. После выкладки файлы будут обработаны процедурой, по окончании работы которой файлы будут перемещены из папки INVOICE в папку ARCHIVE. Процедура запускается каждые полчаса с 7:00 до 22:00 ежедневно без выходных (учесть данный факт при реализации автоматической выкладки файлов).

Структура xml-файла

Структура xml-файла

Описание поля
(требования ЦВ «Протек»)

Источник данных

Обязательность поля

Пример
заполнения

<?xml version="1.0" encoding="UTF-8"?>

Данный текст должен присутствовать в каждом заголовке РН

<invoice>

<comments></comments>

Комментарий к РН от Поставщика для сотрудников ЦВ «Протек», текстовое поле

Примечание из РН (document. description) + номер РН

Optional

Тестовая расходная накладная №1

<confirmed></confirmed>

Признак подтверждения электронной РН, числовое поле, обязательное заполнение

Всегда =1

1

<createDate></createDate>

Дата создания электронной РН, поддерживает формат с учетом временного пояса и без, с учетом времени и без, обязательное заполнение

Дата создания xml-файла

<currency></currency>

Валюта РН, текстовое поле, обязательное заполнение. Для рублей выводить – «RUR».

Буквенный код валюты из РН согласно справочнику «Курсы валют» (поле «Валюта», currency. charcode)

RUR

<date></date>

Дата электронной накладной (формат аналогичный createDate), обязательное заполнение

Дата документа РН (document. docdate)

<doctype></doctype>

Тип электронной накладной, число

Всегда = 1

1

<invoiceItemSet>

Параметры строк электронной накладной (начало). Блок повторяется для каждой уникальной позиции (itemIdSupplier) в составе текущей РН


<description></description>

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

Полное наименование номенклатуры из детализации РН

(resource. long_name)

Азитрокс, капс. 500 мг (1 блистер в пачку) (К)

<grprice></grprice>

Цена по государственному реестру за одну упаковку товара (для категории товара ЖНВЛП), числовое поле, разделитель точка, округление до 4 знаков

Зарегистрированная предельная отпускная цена производителя в рублях за одну упаковку.

Для получения цены использовать алгоритм, реализованный в отчете в отчета «Федеральный протокол согласования цен ПП № 000». В отчете выводится цена за ед. изм. (т. е. за тыс. упак.), поэтому необходимо реализовать пересчет на основании справочника «Пересчет ед. измерения».

Optional

35.8612

<invoiceLotSet>

Параметры блока серии электронной накладной (начало), желательный для заполнения блок. Если препарат поставляется двумя и более сериями, то блок invoiceLotSet повторяется для каждой уникальной серии препарата в составе текущей позиции

<barcode></barcode>

Штрих-код упаковки, целое число

Штрих-код из справочника «Номенклатура» (barcode)

Optional


<AmnInBox></AmnInBox>

Количество упаковок в заводской коробке (кратность короба), числовое поле

Количество упаковок в коробе из справочника «Ресурс-короб» для короба из РН, реализовать пересчет в упаковки на основании справочника «Пересчет ед. измерения»

200

<country> </country>

Страна изготовителя позиции, текстовое поле

«Страна» завода-изготовителя серии из справочника «Заводы-изготовители»

Optional

Российская Федерация

<countryCode></countryCode>

Код страны изготовителя позиции

Пусто

Optional

<distributiorCharge></distributiorCharge>

Наценка (в %) предприятия поставщика по отношению к цене завода изготовителя (для категории товара ЖНВЛП), числовое поле, разделитель точка, округление до 4 знаков

% наценки получить из отчета «Федеральный протокол согласования цен ПП № 000» поле «Суммарный размер фактической оптовой надбавки организации оптовой торговли, в процентах»

Optional

5.6908

<expdate></expdate>

Срок годности товарной позиции

Поле «Годен до» из справочника «Серии» (sdate)

Optional

<productiondate></productiondate>

Дата производства

Поле «Дата производства» из справочника «Серии»

(pdate)

Optional

<gtd></gtd>

Номер государственной таможенной декларации, текстовое поле

№ ГТД из справочника «Серии» (gtd_num)

Optional

/

invoiceFileSet

Параметры блока образов документов качества (начало), желательный для заполнения блок. Если в справочниках поставщика существует несколько документов качества для текущей позиции/серии, то блок invoiceFileSet повторяется в составе текущего блока invoiceLotSet

<fileName></filename>

Имя документа качества, текстовое поле

Поле «Сертификат» из справочника «Серии» (snumber)

Optional

POCC HR. ФM08.Д38623

<typeId></typeId>

Тип документа качества (1 – декларация, 2 – паспорт,3 – сертификат соответствия, 4– свидетельство о регистрации), целое число

Всегда= 1

Optional

1

</invoiceFileSet>

Параметры блока образов документов качества (конец)

< lot></lot >

Номер (наименование) серии, текстовое поле

Наименование серии из справочника «Серии»

Optional

А8754

< manufacturer></manufacturer >

Наименование предприятия изготовителя, текстовое поле

Наименование завода-изготовителя серии из справочника «Серии» (plantid)

Optional

Фармстандарт-УфаВИТА (Уфа)

< manufacturerAddress> </manufacturerAddress >

Адрес предприятия изготовителя, текст

Значение из поля «Адрес» справочника «Контрагенты» для контрагента, соответствующего заводу-изготовителю (поле «Контрагент» справочника «Заводы-производители»)

Optional

Республика Башкортостан,


<manufacturerPrice></manufacturerPrice >

Отпускная цена без НДС за единицу товара данной серии (партии), числовое поле, разделитель точка, округление до 4 знаков, не заполняется, только если не заполнен тег lot

Цена реализации из РН за одну упаковку.

Реализовать пересчет цены на основании справочника «Пересчет ед. измерения»

123.8341

<qty></qty >

Количество упаковок данной серии, целое число

Количество из РН.

Реализовать пересчет единиц измерения на основании справочника «Пересчет ед. измерения»

Optional

1000

</invoiceLotSet >

Параметры блока серии электронной накладной (конец).

<itemIdOKP></itemIdOKP >

Код позиции в общероссийском классификаторе продукции, целое число

Поле «ОКП» справочника «Номенклатура»

Optional

66999

<itemIdSupplier> </itemIdSupplier >

Внутренний код позиции в справочниках поставщика, VARCHAR2, обязательное заполнение

Поле «Артикул» справочника «Номенклатура»

М99001

<itemIdTNVED></itemIdTNVED >

Код позиции в товарной номенклатуре внешней экономической деятельности (для импортных товаров), целое число

Поле «Код ТНВЭД» справочника «Номенклатура»

Optional

9527

<mnn> </mnn >

Международное непатентованное наименование, текст, специальные символы не допустимы

Поле «МНН» справочника «Номенклатура»

Optional

Азитромицин

< price></price >

Отпускная цена без НДС за единицу товара (без учета серии), не заполняется только в случае, если в текущем инвойсе для нескольких серий (lot) одного препарата (itemIdSupplier) указаны разные отпускные цены (manufacturerPrice), числовое поле, разделитель точка, округление до 4 знаков

Цена реализации за одну упаковку номенклатуры (без учета серии), если для всех серий номенклатуры в заданной РН цены одинаковы

123.8312


<qty></qty >

Количество упаковок поставляемой позиции, обязательное заполнение, целое число

Общее количество упаковок номенклатуры по всем сериям.

Реализовать пересчет количества на основании справочника «Пересчет ед. измерения»

1000


<sum></sum >

Сумма по препарату без НДС, обязательное заполнение, числовое поле, разделитель точка, округление до 2 знаков, ограничение до 14 символов

Общая сумма без НДС по всем сериям номенклатуры

133736.05

< sumNds></sumNds >

Сумма по препарату с учетом НДС, обязательное заполнение, числовое поле, разделитель точка, округление до 2 знаков, ограничение до 14 символов

Общая сумма с НДС по всем сериям номенклатуры

148596.10

<tax></tax >

Налоговая ставка НДС, целое число, поле обязательное для заполнения

Ставка НДС из РН (NDSID)

10

</invoiceItemSet >

Параметры строк электронной накладной (конец)

<itemqty></itemqty>

Количество уникальных позиций поставки (т. е. количество тегов itemIdSupplier в текущем invoice), целое число

Количество уникальных артикулов в РН

Optional

1


<number></number>

Номер электронной накладной, числовое поле, соответствует названию xml-файла, обязательное заполнение.

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

Примечание: по требованию заказчика номер РН должен быть уникален в пределах года. В ОУ номер РН не является уникальным, т. к. может быть отредактирован вручную. Заказчик от этом факте предупрежден!

Значащие цифры номера РН.

Пример: номер РН – «62-РН», значащие цифры – 5013. Полный номер РН вывести в теге comments></comments>

0001

<paymentterm></paymentterm>

Наименование условий оплаты поставки, текст

Пусто

Optional

Пусто

<shipdate></shipdate>

Дата отгрузки товара, (формат createDate), обязательное заполнение

Дата первого проведения РН (movedate)

T09:30:47-05:00

<sum></sum>

Сумма поставки без НДС, обязательное заполнение, числовое поле, разделитель точка, округление до 2 знаков, ограничение до 14 символов

Общая сумма документа без НДС (ramount)

144344.70

<sumnds></sumnds>

Сумма поставки с НДС, обязательное заполнение, числовое поле, разделитель точка, округление до 2 знаков, ограничение до 14 символов

Общая сумма документа c НДС (allamount)

158779.17

</invoice>


Приложение 1: Настройка соединения с ftp-сервером

1.  ФТП сервер farvater создан с технологией SSL, организовано зашифрованное соединение (FTPS).

2.  Обращаться к серверу по имени farvater. ***** и не использовать его IP: 194.146.119.206.

3.  Протокол ftp implicit tls, порт 21 для коннекта и с для передачи данных.

4.  Пример настройки ftp на примере TotalCommander (сертификат для implicit TLS не нужен).

5.  Настройка filezilla

6.  Для доступа на ftp-ресурс предоставляется логин/пароль. По требованию клиента ЦВ «Протек» можем организовать ограничение доступа к farvater. ***** по IP-адресу клиента (если необходимо).

7.  Настройка запуска ФТП через браузер Internet Explorer:

7.1.  Откройте браузер Internet Explorer

7.2.  В поисковой строке прописать ftp://farvater. *****/

7.3.  Скопируйте ваш xml-файл, который хотите выложить на фтп, зайдите в папку INVOICE, и вставьте его туда: