TBM SOAP services: различия между версиями
Строка 117: | Строка 117: | ||
=== Перечень сервисов === | === Перечень сервисов === | ||
'''WSDL описания сервисов по протоколу soap 1.1 находится https://www.tbm.ru | '''WSDL описания сервисов по протоколу soap 1.1 находится https://www.tbm.ru/tbm-services/WebCatalogExtSoap1Port?wsdl'''<br> | ||
Для получения каталога пользователя передавать n_skl не нужно, n_skl - передается только в том случае если необходимо получить каталог для конкретного склада. | Для получения каталога пользователя передавать n_skl не нужно, n_skl - передается только в том случае если необходимо получить каталог для конкретного склада. |
Версия от 13:26, 2 апреля 2015
Общие сведения
В данном разделе собрана информация по веб-сервисам ТБМ. С их помощью вы можете легко интегрировать свою систему с ТБМ-онлайн и исключить ручную работу по формированию заявок, подтверждению счетов, проверке взаимозачётов и многому другому. Веб-сервисы являются стандартным интерфейсом при интеграции сложных систем работа с ними возможна из 1С, Java, C#, PHP и многих других языков программирования. В случае возникновения вопросов обращайтесь к нам по адресу web-trade@tbm.ru
Source(s): TBM SOAP services
Последния версия сервисов находиться по адресу https://www.tbm.ru/tbm-services-001/
WSDL: https://www.tbm.ru/tbm-services-001/SnMainExtSoap1Port?wsdl
WSDL: https://www.tbm.ru/tbm-services-001/WebCatalogExtSoap1Port?wsdl
WSDL: https://www.tbm.ru/tbm-services-001/LogicExtSoap1Port?wsdl
WSDL: https://www.tbm.ru/tbm-services-001/VzaExtSoap1Port?wsdl
WSDL: https://www.tbm.ru/tbm-services-001/CheckUsersExtSoap1Port?wsdl
WSDL: https://www.tbm.ru/tbm-services-001/ReclamationExtSoap1Port?wsdl
WSDL: https://www.tbm.ru/tbm-services-001/ZkMainExtSoap1Port?wsdl
Интернационализация
Язык пользователя для сообщений возвращаемых из веб-сервисов берётся из заголовков запроса:
accept-language : ru
Если заголовка нет, то языком по умолчанию считается русский.
Логин/Регистрация
Для каждого запроса к любому веб-сервису передаётся логин-пароль пользователя в стандартном виде HTTP-авторизации. Внутри каждого сервиса имеются Credentials текущего пользователя, которые позволяют корректно отображать всю необходимую информацию строго для этого пользователя.
WSDL описания сервисов http://www.tbm.ru/tbm-services/CheckUsersExtSoap1Port?wsdl
ServiceMessage validateUser(String username, String password) throws Exception - проверяет валидность пользователя. В случае если пароль-логин верные то в структуре ServiceMessage поле status возвращает success, иначе unsuccess.
Общие функции
WSDL описания сервисов https://www.tbm.ru/tbm-services/LogicExtSoap1Port?wsdl - SOAP 1.1.
BigDecimal getCursValut(String typeValut) - возвращает курс валюты typeValut принимает два значения USD или EUR
EdIzmOut getEdIzmByID(Long id) throws Exception - возвращает единицу измерения по id
ArrayOfColor getColors() throws Exception - возвращает справочник счетов.
ArrayOfEdIzm getAllEdIzm() throws Exception - возвращает список единиц измерения
ArrayOfUserArts getUserArts(Long shifrfir, Date modifyDate) throws Exception - получить список пользовательских артикулов
ArrayOfTipCur getTipCur() throws Exception - справочник валют.
ArrayOfClientTbm getClientTbm() throws Exception - получить список фирм Клиента.
String synchronAllUserArts(Long shifrfir, ArrayOfConformityUserArts userArtsObj) throws Exception - синхронизировать базу соответствия. Считается что на Клиенте база соответствия более полная чем на Клиенте, по этой причине на сервере полностью заливается база соответствия Клиента.
ArrayOfConfirmationAccount getConfirmationAccountList() - (в заявках) справочник возможных способов подтверждения счетов при отправке заявке. В заявках это поле isFast
ArrayOfAccountType getAccountTypeList() - справочник возможных типов счетов, которые создаются после отправки заявки на обработку. При отправке заявки необходимо указывать какого типа создается счет (например с резервированием или без резервирования товара). Поле reserv в NavZkMainOut
ArrayOfTpCountry getTpCountryList() throws Exception - справочник стран (Наименование страны, НДС, склад принадлежащей стране (catalogNSkl - по данному складу вытаскивается каталог.)
UsersOut getUsers() - получить текущего пользователя.
ArrayOfDefReason getDeficitReason() - справочник причин отказа от дефицита.
ArrayOfAdres getAdresList(Long shifrFir) throws Exception - получить список адресов доставки по шифру фирмы.
ArrayOfOplata getOplataListByShifrFir(Long shifrFir) throws Exception - получить список типов оплаты по шифру фирмы, используется при оформлении заявок.
ArrayOfPorductionLines getPorductionLines(Long shifrFir) throws Exception - справочник производственных линий необходим при оформлении заявок. Метод возвращает список производственных линий по шифру фирмы.
ArrayOfTypeReclamations getTypeReclamationsList() throws Exception - метод возвращает список типов (характеров) браков позиций рекламаций.
Подгрузка каталога
Описание
Предлагается реализовать подгрузку каталога в переносные устройства следующим образом:
Для отображения дерева каталога необходимо воспользоваться методами: catListTree - получить раскрученное дерево каталога. К каждому узлу дерева могут быть привязаны товар. Список кодов товаров для конкретного узла дерева можно получить методом catListTreeNodes по коду узла tree_node_kod. Каждый узел дерева имеет описание которое можно загрузить методами: getNodeDescByDate(Date lastModified, Long n_skl) lastModified - дата последнего изменения описания (если этот параметр отсутствует то описание грузиться для всех узлов дерева), n_skl - склад (не обязательный параметр). В дальнейшем обновление описания узлов деревьев желательно подгружать по lastModified. getNodeDesc(Long nodeDescKod) - получить описание узла по коду nodeDescKod. nodeDescKod можно получить из WebCatTreeOut
К каждому каталогу привязаны категории catListKategory. В категории находится несколько типов товара: catListTip. По этим трём параметрам (каталог, категория, тип товара) идёт привязка товаров с помощью catListCatalog. Любой товар может находится в нескольких разделах каталога, но с одинаковым описанием и одинаковой ценой.
Дерево каталога может меняться (ориентир раз в неделю на всю структуру может быть правка), поэтому целесообразно его хранить локально. И обновлять по желанию пользователя или еженедельно. Жестко запоминать структуру каталога нельзя НИ В КОЕМ СЛУЧАЕ.
методом catListTovar подгружается весь необходимый пользователю перечень товаров. Этот метод наиболее затратен по траффику. Объём справочника товаров может составлять до 30тыс позиций. Для каждого товара в каталоге могут быть заполнены поля CHERTEG и RISUNOK. Эти два поля указывают на картинки товара (чертёж и фото). Загрузить изображения можно по ссылке www.tbm.ru/risunok/ и www.tbm.ru/cherteg/. При подгрузке любого нового товара можно попутно подгрузить изображение товара. (Превью и оптимизированные для устройств изображения сейчас автоматически не генерятся.)
Возможно настроенную базу товаров стоит распространять сразу предустановленной на устройстве.
Далее при работе, в случае отсутствия товара в локальной базе, можно запросить информацию по нему с помощью метода catGetTovar.
Основной особенностью расценивания в ТБМ является зависимость цены от шифра фирмы пользователя. Алгоритм расчёта достаточно сложен и зависит от многих факторов - скидок Клиента, коэфициентов распродажи на филиале, холдинге и прочее. Поэтому цену товара необходимо запрашивать отдельно с помощью методов: catGetPrice и catGetPrices.
Ежедневная работа с каталогом
Цена товара должна храниться в отдельной структуре: шифр фирмы, kod_tov, цена. Валюта цены хранится в WebTovar.TIP_CUR. Код типа валюты применяется в соответствии с единым классификатором валют (http://www.rbc.ru/okv.html).
Для каждой пары должна храниться дата последнего запроса цены. Кроме этого желательно хранить дату последнего обновления структуры каталога (включая товара) и дата запроса цен.
Используя эти даты можно запросить только изменившиеся цены и товары в системе с помощью методов: catListTovar и catListCatalogModified. (На первом этапе дата модификации не будет учитываться, передаваться будет весь каталог). Полученную информацию необходимо обновить в локальной базе.
Удаление товаров из каталога отслеживается с помощью признака WebCatalog.WebShow = 1. Товар может исчезнуть из структуры каталога физически или с помощью этого признака.
Перечень сервисов
WSDL описания сервисов по протоколу soap 1.1 находится https://www.tbm.ru/tbm-services/WebCatalogExtSoap1Port?wsdl
Для получения каталога пользователя передавать n_skl не нужно, n_skl - передается только в том случае если необходимо получить каталог для конкретного склада.
ArrayOfWebCatTree catListTree(Long n_skl, int from , int size) throws Exception - вернуть структуру каталога для указанного склада. В этом случае возвращается каталог страны пользователя. from - позиция списка, size - размер списка.
Long catListTreeCount(Long n_skl) throws Exception - размер дерева.
ArrayOfCatTreeNodes catListTreeNodes(Long n_skl, Long tree_node_kod, int from, int size) throws Exception - вернуть товары каталога для указанного склада. Метод возвращает привязку кодов товара к структуре каталога. Рекомендуется загружать всю структуру целиком параметры tree_node_kod = 0, n_skl=null - в этом случае возвращается вся структура по каталогу страны пользователя. from - позиция списка, size - размер списка.
CatalogNodeDescOut getNodeDesc(Long nodeDescKod) throws Exception - получить описание узла по id.
Long catListTreeNodesCount(Long n_skl, Long tree_node_kod) throws Exception - размер списка.
WebTovarOut catGetTovar(Long kod_tov) throws Exception - вернуть информацию о товаре.
TovarPriceOut catGetPrice(Long kod_tov, Long shifr_fir) throws Exception - получить цену товара по коду товара и шифру фирмы.
Long catCountTovar(Date modifydate, Long n_skl) throws Exception - получить количество товара по дате изменения и коду товара.
ArrayOfTovarPrice catGetPrices(ArrayOfLong kodTovList, Long shifr_fir) throws Exception - вернуть цену товара для указанных кодов товаров и шифра фирмы.
ArrayOfTovarPrice catGetPricesAll(Long shifr_fir) throws Exception - вернуть цены товаров для указанного шифра фирмы. Цены возвращаются для склада по шифру фирмы.
ArrayOfWebTovar catListTovar(Date modifydate, Long n_skl, int from, int size) throws Exception - вернуть список товаров для указанных параметров. from - позиция списка, size - размер выбираемого списка.
ArrayOfCatalogNodeDesc getNodeDescByDate(Date lastModified, Long n_skl) throws Exception - получить описание узлов дерева по lastModified и n_skl склада.
ArrayOfCatalogDocuments getCatalogDocuments(Long cndKod) throws Exception - ссылки на документы и описание документов.
ArrayOfCatalogDocuments getCatalogDocumentsByDate(Date lastModified) throws Exception - вернуть записи на документы дата обновления которых больше lastModified.
WebTovarOut catGetTovarByArt(String artTbm) throws Exception - вернуть товар по артикулу ТБМ
Заявки
Описание
Работа с заявками ведётся в online или offline-режиме. Для отображения перечня заявок используются метод getZkMainIdListByParam который возвращает идентификаторы заявок для отображения. Переход по страницам обеспечивается с помощью параметров from и size. Общее количество заявок для закладки можно получить с помощью метода getCountZkMainByParam.
Получив перечень заявок для отображения можно поискать локальный объект заявки (если предусмотрено кэширование) или получить объект целиком с помощью методов getZkMainListByParam или getZkMainById.
Добавление и удаление позиций в заявку также производятся попозиционно.
Перечень сервисов получения заявок
Пример вызова сервисов по созданию заявки http://www.tbm.ru/wiki/index.php/SOAP_1C
WSDL описания сервисов по получению заявок по протоколу soap 1.1 находится http://www.tbm.ru/tbm-services/ZkMainExtSoap1Port?wsdl
ArrayOfLong getZkMainIdListByModifyDate(Long shifrFir,Date modifyDate) throws Exception - метод возвращает список уникальных идентификаторов заявок по входным параметрам. Все параметры метода являются не обязательными и могут принимать значение null.
shifrFir - Шифр фирмы
modifyDate - дата поиска заявок. Если modifyDate не пустое то будут возвращен список ID всех заявок пользователя, дата изменения которых старше чем modifyDate. Таким образом с помощью modifyDate можно организовать постоянный мониторинг изменившихся заявок в системе ТБМ.
Long getCountZkMainByParam(String tab, Long shifrfir, Date dateFrom, Date dateTo) throws Exception - получить количество заявок по входным параметрам.
- tab - может принимать следующие значения:
- all - все заявки
- sent - отправленные
- work - в работе
- arh - архивные
Если передать пустое значение то используется all.
shifrfir - шифр фирмы Клиента берется из ClientTbmOut
dateFrom и dateTo - задает диапазон отбора по датам.
NavZkMainOut getZkMainById(Long id) throws Exception - получить заявку по уникальному коду заявки.
id - id заявки.
ZkMainShortOut getZkMainShortById(Long id) throws Exception - получить шапку заявки по коду заявки.
id - id заявки.
ArrayOfLong getZkMainIdListByParam(String tab, Long shifrfir, Date dateFrom, Date dateTo, int from, int size, String orderby) throws Exception - Метод возвращает список уникальные кодов заявки по входящим параметрам. Все параметры являются не обязательными, часть из них или все сразу могут принимать пустое значение null.
tab - может принимать следующие значения:
- all - все заявки
- sent - отправленные
- work - в работе
- arh - архивные
Если передать пустое значение то используется all.
shifrfir - шифр фирмы Клиента берется из ClientTbmOut, если шифр пустой то возвращаются коды всех заявок пользователя.
dateFrom и dateTo - задает диапазон отбора по датам.
from - начальная позиция получения списка.
size - размер получения списка (список получается с позиции from до позиции from+size). from и size - используются для пагинации по списку.
orderby - сортировка по списку (сейчас не используется).
ArrayOfNavZkMain getZkMainListByIdList(ArrayOfLong idNavZkMain) throws Exception - получить список заявок по списку уникальных идентификаторов (id-ков) заявок.
idNavZkMain - список идентификаторов заявок.
ArrayOfShortSoap getZkMainShortListByParam(String tab, Long shifrfir, Date dateFrom, Date dateTo, int from, int size, String orderby) throws Exception - получить список заголовков заявок по входящим параметрам.
tab - может принимать следующие значения:
- all - все заявки
- sent - отправленные
- work - в работе
- arh - архивные
Если передать пустое значение то используется all.
shifrfir - шифр фирмы Клиента берется из ClientTbmOut
dateFrom и dateTo - задает диапазон отбора по датам.
from - начальная позиция получения списка.
size - размер получения списка (список получается с позиции from до позиции from+size). from и size - используются для пагинации по списку.
orderby - сортировка по списку (сейчас не используется).
ArrayOfNavZkMain getZkMainListByParam(String tab, Long shifrfir, Date dateFrom,Date dateTo, int from, int size, String orderby) throws Exception - получить список заявок по входным параметрам
tab - может принимать следующие значения:
- all - все заявки
- sent - отправленные
- work - в работе
- arh - архивные
Если передать пустое значение то используется all.
shifrfir - шифр фирмы Клиента берется из ClientTbmOut
dateFrom и dateTo - задает диапазон отбора по датам.
from - начальная позиция получения списка.
size - размер получения списка (список получается с позиции from до позиции from+size). from и size - используются для пагинации по списку.
orderby - сортировка по списку (сейчас не используется).
Порядок прохождения заявки Клиента через сервисы ТБМ
В общем случае работа с заявкой осуществляется следующим образом:
- Создается заявка методом createZkMain
- если необходимо в заявку вносятся правки с помощью метода updateZkMain (офлайн режим) или добавляются артикулы построчно с помощью методов zkMainAddArt (онлайн режим). Получить перечень кодов заявок можно с помощью метода getZkMainIdListByParam, получить информацию по заявке с помощью метода getZkMainById
- Если Клиент набирает заявку постепенно в течении дня, но хочет поставить резерв на этот товар, то он может использовать метод zkMainActionReserv
- Когда заявка полностью готова, то с помощью метода zkMainActionSend можно отправить заявку в обработку ТБМ. Этот метод инициирует обработку заявки: по заявке выставляется резерв по товару, выставляются счета.
- После того как заявка обработана она считается отправленной и её правка запрещена. Вся работа после этого ведётся со счетами, выставленными по данной заявке. Более подробно работа со счетами описана в соответствующем разделе.
Перечень сервисов для работы с заявками
NavZkMainOut createZkMain(NavZkMainIn zkMainIn) throws Exception - метод позволяет создать и заполнить заявку в системе ТБМ-Online, по входящей заявке zkMainIn. Структура zkMainIn - предварительно создается и заполняется на стороне Клиента. Метод возвращает созданную заявку со всеми заполненными полями. В случае если метод не может создать заявку выбрасывается исключение которое надо обработать.
Если заявка удачно обновилась, то метод возвращает обновленный NavZkMainOut. NavZkMainOut имеет поле serviceMessage типа ServiceMessage. Необходимо предусмотреть обработку событий на Клиенте.
NavZkMainOut createZkMainByShiFrfir(Long shifrFir) throws Exception - создать новую заявку в системе ТБМ-Online, по шифру фирмы (shifrFir) Клиента. Шифр фирмы берется из структуры ClientTbmOut. Метод возвращает созданную заявку по Клиенту. В случае если метод не может создать заявку выбрасывается исключение которое надо обработать.
NavZkMainOut updateZkMain(NavZkMainIn zkMainIn) throws Exception - обновить заявку целиком в системе ТБМ-Online, по входящей заявке. Метод возвращает обновленную заявку со всеми обновленными полями. В случае если метод не может обновить заявку выбрасывается исключение которое надо обработать. Если заявка удачно обновилась то метод возвращает обновленный NavZkMainOut. NavZkMainOut имеет поле serviceMessage - это структура следующего типа ServiceMessage. Необходимо предусмотреть обработку событий на Клиенте.
NavZkMainOut zkMainActionSend(Long zkmain_id) throws Exception - метод посылает заявку на обработку в ТБМ - Online. Если заявка не может быть отправлена то выбрасыватеся исключение которое надо обработать. NavZkMainOut имеет поле serviceMessage - это структура следующего типа ServiceMessage. Необходимо предусмотреть обработку событий на Клиенте. Если создание и обновление заявки происходит в режиме offline - то перед вызовом метода нужно вызвать createZkMainTbm или updateZkMainTbm. Для обновления заявки в системе ТБМ - Online.
boolean canZkMainMakeReserv(Long shifrfir) throws Exception - метод проверяет могут ли заявки по данному шифру фирмы быть поставлены на резерв. Методы необходимо вызывать перед постановкой заявки на резерв (методом zkMainActionReserv)
ZkRezervStatus zkMainActionReserv(Long zkmain_id, String action) throws Exception - посылает или снимает заявку с резерва.
action - может принимать два значения:
- rezerv - поставить на резерв
- unrezerv - снять с резерва
При отправке заяки на резерв статус заявки меняется на 6.
Если на Клиенте содержимое заявки изменилось то перед отправкой заявки на резерв ее необходимо обновить в системе ТБМ - online методом updateZkMain.
Перед отправкой заявки на резерв необходимо вызвать метод для постановки на резерв canMakeReserv.
Выходой параметр метода является структура ZkRezervStatus. В структуре ZkRezervStatus есть два поля: status - статус заявки и поле hasBlocked. Если hasBlocked = true - то резерв по заявке еще не выделен и заявка находится на обработке. Если hasBlocked = false, то заявка поставлена на резерв и Клиент может ее обновить.
Т.к. резервирование товара на складе происходит в течение некоторого времени, то необходимо на Клиенте предусмотреть механизм получения оперативных данных по заявке. На стороне Клиента желательно организавать переодические запросы к серверу для получения статуса заявки.
В случае если заявку не удалось отправить на резервирование выбрасывается ошибка.
Для мониторинга обновления поставки заявки на резерв есть метод - canUpdateZkMainReserv или использовать общий метод поиска поиска заявок по дате модификации getZkMainIdListByModifyDate(shifrFir,modifyDate).
После постановки заявки на резерв с ней можно работать как с обычной заявкой.
ZkRezervStatus canUpdateZkMainReserv(Long zkmain_id) throws Exception - Метод мониторинга состояния заявки после постановки (снятия) заявки на резерв (с резерва). Если в ZkRezervStatus hasBlocked = true то заявка еще обрабатывается. Если в ZkRezervStatus hasBlocked = false то заявка поставлена на резерв, Клиент может ее обновить.
Мониторинг состояния изменения заявки можно организовать и общим методом по дате модификации getZkMainIdListByModifyDate(shifrFir,modifyDate)
ServiceMessage checkZkMainItems(NavZkMainIn zkMainIn) throws Exception - метод проверяет есть ли в во входящей заявке zkMainIn позиции с артикулами которые не могут быть добавлены в заявку ТБМ, по какой либо причине.
String removeZkMain(Long zkMainId) throws Exception - удалить заявку из системы ТБМ по входящему Id заявки.
NavZkMainOut confirmZkMainDeficit(Long zkMainId) throws Exception - подтвердить дефицит по заявки, в качестве параметра передается Id заявки. Метод возвращает обновленную структуру заявки.
NavZkOut updateDeficitByZkId(Long navZkId,BigDecimal newDefkol,Integer reasonId) throws Exception - подтвердить дефицит по товарной позиции в заявке, где navZkId - код товарной позиции заявки newDefkol - новое количество дефицита. reasonId - код причины отказа от дефицита, заполняется из справочника ( http://www.tbm.ru/tbm-services/LogicExtSoap1Port?wsdl метод getDeficitReason())
NavZkOut rejectDeficitByZkId(Long navZkId, Integer reasonId) - отказаться от дефицита по товарной позиции, где navZkId - код товарной позиции в заявки, reasonId - код причины отказа от дефицита, заполняется из справочника ( http://www.tbm.ru/tbm-services/LogicExtSoap1Port?wsdl метод getDeficitReason())
NavZkMainOut copyZkMain(Long zkMainId, Long shifrFir) throws Exception - копирование заявки по Id - заявки и шифру фирмы, возвращает новую заяву.
zkMainId - уникальный идентификатор копированной заявки.
shifrFir - шифр фирмы для которой копируется заявка.
NavZkOut zkMainAddArt(Long zkMainId, String art, BigDecimal kol) throws Exception - добавляет артикулы в заявку
zkMainId - код заявки
art - артикул
kol - количество в товара.
String zkMainAddListZk(Long zkMainId, ArrayOfNavZKIn zkList) throws Exception - добавляет список позиций zkList в заявку по коду заявки zkMainId. Если список добавлен успешно то возвращает success.
String zkMainRemoveZK(Long zkMainId, Long zkId) throws Exception - удаляет товарную позицию в заявке в системе ТБМ. Где zkMainId - код заявки, zkId - код товарной позиции в заявке. В случае успеха возвращает success.
String zkMainClear(Long zkMainId) throws Exception - очищает все товарные позиции в заявке. zkMainId - уникальный код заявки. В случае успеха возвращает success.
Счета
Общее описание
- После отправки заявки в течении 5 минут формируются счета на все товары, которые в данный момент доступны на складе.
- В общем случае по одной заявке может быть сформировано несколько счетов.
- Если при отправке в заявке не было указано автоматическое подтверждение счетов, то необходимо подтвердить каждый счет. Подтвердить можно целиком счет с помощью метода snMainAction. Перед подтверждением можно исправить количества в конкретном счете на желаемое с помощью метода snMainUpdateCount.
- По подтвержденному счету можно запросить печатную форму в формате PDF с помощью метода downloadSnMainPdf.
- После оплаты счета, проходит проверка счета бухгалтерией и начинается формирование товара для отгрузки покупателю. В этот момент формируются отгрузочные документы: Счет-фактура и товарная накладная (ТОРГ-12).
- Счет-фактура содержит информацию по товарам, ценам, стоимостям и ГТД. В общем случае по одной позиции заказанного товара может быть несколько строчек в счете фактуре.
- Товарная накладная отдельно не формируется. Сформировать товарную накладную можно из счета-фактуры группировкой всех количеств товара по артикулам.
WSDL описания сервисов по работе со счетами по протоколу soap 1.1 находится http://www.tbm.ru/tbm-services/SnMainExtSoap1Port?wsdl
ArrayOfSnMain getSnMainListByZk(Long zkMainId) throws Exception - вернуть список счетов привязанных к заявке по коду заявке.
где zkMainId - уникальный код заявки.
ArrayOfLong getSnMainIdListByZk(Long zkMainId) throws Exception - вернуть список ID счетов привязанных к заявке по коду заявке.
где zkMainId - уникальный код заявки.
ArrayOfLong getSnMainIdListByParam(String tab,Long shifrFir,Date dateFrom,Date dateTo,Date modifyDate,Integer from, Integer size,String orderby) throws Exception
вернуть список ID - счетов по входным параметрам. Все параметры в методе являются не обязательными.
tab - может принимать следующие значения:
- all - все счета
- sub - требуют подтверждение
- work - счета которые находятся в работе
- arh - архивные счета
Если передать пустое значение то используется all.
shifrfir - шифр фирмы Клиента берется из ClientTbmOut dateFrom и dateTo - задает диапазон отбора по датам. modifyDate - дата последнего изменения счета from - начальная позиция получения списка. size - размер получения списка (список получается с позиции from до позиции from+size). from и size - используются для пагинации по списку.
orderby - сортировка по списку (сейчас не используется).
modifyDate - дата проверки изменения. Если в modifyDate передается не пустое значение, то метод будет возвращать все ID счетов которые были изменены пос же чем modifyDate . С помощью поля modifyDate можно производить постоянный мониторинг появления и изменения счетов.
Long getCountSnMainByParam (String tab,Long shifrFir,Date dateFrom,Date dateTo,Date modifyDate) throws Exception - получить количество счетов по входным параметрам
tab - может принимать следующие значения:
- all - все счета
- sub - требуют подтверждение
- work - счета которые находятся в работе
- arh - архивные счета
Если передать пустое значение то используется all.
shifrFir - шифр фирмы Клиента берется из ClientTbmOut
dateFrom и dateTo - задает диапазон отбора по датам.
modifyDate - дата последнего изменения счетов, если этот параметр не пустой то будут возвращены все счета дата изменения которых позже даты modifyDate
SnMainOut getSnMainById(Long snMainId) throws Exception - получить счет по уникальному коду счета.
snMainId - уникальный код счета.
ArrayOfSnMain getSnMainListByParam(String tab,Long shifrFir,Date dateFrom,Date dateTo,Date modifyDate,Integer from,Integer size,String orderby) throws Exception
- вернуть список счетов по входным параметрам.
Все параметры являются не обязательными.
tab - может принимать следующие значения:
- all - все счета
- sub - требуют подтверждение
- work - счета которые находятся в работе
- arh - архивные счета
Если передать пустое значение то используется all.
shifrFir - шифр фирмы Клиента берется из ClientTbmOut
dateFrom и dateTo - задает диапазон отбора по датам.
modifyDate - дата последнего изменения счетов, если этот параметр не пустой то будут возвращены все счета дата изменения которых позже даты modifyDate
from - начальная позиция получения списка.
size - размер получения списка (список получается с позиции from до позиции from+size). from и size - используются для пагинации по списку.
orderby - сортировка по списку (сейчас не используется).
ArrayOfSnMain getSnMainListByIdList(ArrayOfLong idList) throws Exception - вернуть список счетов по списку уникальных идентификаторов счетов.
idList - список уникальных идентификаторов счетов.
SnMainOut snMainAction(Long snMainId, String action) throws Exception - метод реализует бизнес действия над счетом.
Возможные действия action:
- submit - подтвердить счет
- cancel - отказаться от счета
Действия которые возможны над счетом можно получить из SnMainOut.action
snMainId - уникальный код счета.
SnMainOut snMainUpdateCount(Long snId,BigDecimal kol) throws Exception -
изменить количество товара по позиции в строке по счету.
snId - код позиции строки в табличной части счета
kol - новое количество в счете.
0<=kol<= SnOut.vist
SnMainOut snmainUpdateListCount(ArrayOfMapKol mapKolList) throws Exception - изменить количество товара по позиции в строке по счету.
mapKol - список пары значений:
Long kod - код позиции строки в счете
BigDecimal kol - новое количество по позиции в счете.
boolean canDownloadSnMainPdf(Long idSnMain) throws Exception - метод проверяет есть ли печатная форма счета.
DataHandler downloadSnMainPdf(Long idSnMain) throws Exception - получить печатную форму счета по коду счета idSnMain.
InvoiceOut getInvoice(Long idSnMain, Integer type) throws Exception - возвращает счет-фактуру по уникальному коду счета idSnMain.
Параметр type - сделан на будущее, пока не используется.
ArrayOfLong getInvoiceIdCollectionByModifyDate(Long shifrFir, Date modifyDate, Integer type) throws Exception - получить список уникальных идентификаторов счет-фактур по входящим параметрам
shifrFir - шифр фирмы пользоватея - не обязательный параметр, если (shifrFir=null) не передается то возвращаются коды всех счет фактуры пользователя.
modifyDate - дата последнего изменения относительно которой производится поиск счет фактур. Не обязательный параметр.
Если в метод в качестве параметра передается modifyDate - то метод возвращает список уникальных кодов. счет фактур пользователя, которые были изменены позже чем modifyDate. По modifyDate можно производить мониторинг изменившихся счет фактур пользователя.
Параметр type - сделан на будущее, пока не используется.
InvoiceOut getInvoiceById (Long idInvoice) throws Exception - возвращает счет фактуру по уникальному коду.
Взаимозачеты
wsdl для SOAP 1.1. находится по адресу http://www.tbm.ru/tbm-services/VzaExtSoap1Port?wsdl
boolean canMakeVza() throws Exception - проверяет доступны ли или нет для данного пользователя взаимозачеты.
VzaInfoOut vzaGetInfo(Long shifrFir) throws Exception - вернуть взаимозачёт по фирме
ArrayOfVzaOpl vzaGetOpl(Long shifrFir) throws Exception - вернуть перечень оплат по фирме
ArrayOfVzaOtp vzaGetOtp(Long shifrFir) throws Exception - вернуть перечень отгрузок по фирме
Работа с рекламациями
WSDL описания сервисов по работе со счетами по протоколу soap 1.1 http://www.tbm.ru:80/tbm-services/ReclamationExtSoap1Port?wsdl
ArrayOfLong getReclamationsIdList(Long shifrFir,Date dateFrom,Date dateTo,String tab,Date modifyDate,Integer from, Integer size, String orderby) throws Exception
Получить список ID рекламаций по входным параметрам.
Все параметры являются не обязательными.
shifrFir - шифр фирмы.
dateFrom - дата начала отбора
dateTo - дата конца отбора
tab - принимает следующие значения
- all - вернуть все рекламации
- arh - закрытые рекламации
- sub - на редактирование
modifyDate - дата последней модификации рекламации, возвращаются те рекламации которые были изменены позже чем modifyDate.
from - начальная позиция списка
size - количество сколько надо вернуть с позиции from, т.е. метод вернет from + size элементов.
from, size - необходимы для пагинации.
orderby - сортировка (не используется)
С помощью modifyDate можно организовать мониторинг обновленных рекламаций в систем.
ArrayOfReclamation getReclamationsList(Long shifrFir,Date dateFrom,Date dateTo,String tab,Date modifyDate,Integer from, Integer size, String orderby) throws Exception - вернуть список рекламаций по входным параметрам описание параметров аналогичен методу getReclamationsIdList
Long getReclamationsCount(Long shifrFir,Date dateFrom,Date dateTo,String tab,Date modifyDate) throws Exception - получить количество рекламаций по параметрам, описание параметров аналогичен методу getReclamationsIdList
ReclamationOut getReclamation(Long reclamationId) throws Exception - получить рекламацию по reclamationId уникальному индентификатору рекламации.
boolean isHaveReclamation(Long snMainId) throws Exception - метод возвращает true если на счет с кодом snMainId могут быть созданы рекламации созданы рекламации.
В счете появился признак того что могут ли на счет создаваться рекламации SnMainOut.isHaveReclamation либо вызвать метод isHaveReclamation(Long snMainId)
ReclamationOut creatReclamationBySnMain(Long snMainId) throws Exception - создать рекламацию по коду счета.
ReclamationOut updateOrCreatReclamation(ReclamationIn reclamationIn) throws Exception - обновить или создать рекламацию по входящей рекламации.
Алгоритм создания и обновления рекламации
Если ReclamationIn.ID - не передан или передан, но рекламация по данному ReclamationIn.ID не найдена в базе, то по ReclamationIn.kodSnMain создается новая рекламация. Если в этом случае ReclamationIn.kodSnMain = null, то выбрасывается исключение.
Если ReclamationIn.ID - передан и рекламация найдена в базе, то происходит ее обновление.
При этом если создается новая позиция по рекламации (при создании рекламации - позиция всегда новая), то в этом случаи заполнять ReclamationItemIn.ID и ReclamationItemIn.recId - не нужно. Необходимо заполнить только ReclamationItemIn.kodTov или ReclamationItemIn.art, количество ReclamationItemIn.amount и тип позиции рекламации ReclamationItemIn.typeReclamId.
При обновлении позиции по рекламации необходимо передавать ReclamationItemIn.ID, если по ID позиция не найдена то создается новая.
Поиск товара происходит следующим образом. В начале по коду ищется товар, если по коду товар не найден то идет поиск по артикулу Клиента в базе соответствия, если и в этом случае товар не найден то ищется товар по артикулу ТБМ.
ReclamationItemOut updateOrCreatItemReclamation(ReclamationItemIn reclamItemIn) throws Exception - создает или обновляет позицию по рекламации. В данном случае ReclamationItemIn.recId - является обязательным. Если ReclamationItemIn.ID не передана или передана но в базе позиция не найдена то создается новая позиция, если ReclamationItemIn.ID - передан и по нему найдена позиция то происходит ее обновление.
ServiceMessage deleteReclamation(Long reclamId) throws Exception - удалить рекламацию по reclamId.
Возвращает сообщение ServiceMessage. Если рекламация бала успешно удалена то возвращается ServiceMessage.status = success, в противном случае либо исключение либо unsuccess
ServiceMessage deleteItemReclamation(ReclamationItemIn reclamItemIn) throws Exception - метод удаляет позицию рекламации. Возвращает сообщение ServiceMessage. Если позиция бала успешно удалена то возвращается ServiceMessage.status = success, в противном случае либо исключение либо unsuccess.
ReclamationOut sendReclamatiom(Long reclamId) throws Exception - послать рекламацию на обработку.