====== API :: Writeoff. Получение/изменение документов Списания ======
В системе реализован программный интерфейс для получения, добавления, изменения и удаления данных о документах "Списание". Данные выгружаются по HTTP протоколу. Формат на выбор - XML или JSON.
===== Пример запроса на получение данных =====
Глубина запроса по умолчанию - последние 30 дней. Для изменения глубины необходимо использовать параметр **days**.
Пример запроса на получение данных о документах "Списание":
http://mycompany.virtpos.ru/api/writeoff?apikey=MySecret&format=xml
==== Параметры запроса на получение данных ====
Параметры, которые не отмечены как **get only**, могут быть переданы как get- или как post-параметры.
* **apikey** - Секретный ключ для доступа к данным. Обязательный параметр.
* **format** (get only) - формат, в котором сервер отдаст данные. Может принимать значения "xml" или "json". Необязательный параметр.
* **date** - получение списаний на определенную дату. Формат: ГГГГММДД. Необязательный параметр.
* **datefrom** - получение списаний начиная с определенной даты. Формат: ГГГГММДД. Необязательный параметр.
* **dateto** - получение списаний начиная до определенной даты. Формат: ГГГГММДД. Необязательный параметр.
* **cdatefrom** - получение списаний, созданных начиная с определенной даты. Формат: ГГГГММДД. Необязательный параметр.
* **cdateto** - получение списаний, созданных до определенной даты. Формат: ГГГГММДД. Необязательный параметр.
* **warehouse_id** - код магазина. для которого надо вернуть списания. Если не указан, то возвращаются списания для всех магазинов. Необязательный параметр.
* **ext_warehouse_id** - код магазина во внешней системе (например, в 1С). Параметр игнорируется, если передан warehouse_id. Необязательный параметр.
* **id** - ID документа Списания. Необязательный параметр. Если не указан, возвращаются все документы.
* **external_id** - код списания во внешней системе (например, в 1С). Если указан, возвращается только документ с указанным кодом.
* **last_id** - Необязательный параметр. Используется для получения новых документов с момента последнего обмена. Если параметр указан, то передаются все более новые списания (с бОльшим ID)
* **days** - задает глубину поиска. Определяет, за какое количество дней от текущей даты надо вернуть документы списаний. Необязательный параметр.
* **withitems** - принимает значение "1" или "0". Если "1", то возвращает строки списания, иначе только "шапки" списаний.
==== Ответ сервера ====
В ответ получаем XML или JSON. В ответе обязательно присутствует поле success. Если success=1, то операция выполнена успешно. Если success=0, то произошла ошибка. Дополнительная информация об ошибке содержится в поле info
==== Пример ответа сервера ====
Ниже приведен пример ответа сервера в формате XML
1
writeoff
30
2
3
1
111
2017-06-15 00:00:00
draft
Черновик
G
803ad8b6-688c-11e7-849d-74d435ee6043
2017-06-15 04:45:58
2017-06-15 04:45:58
1
1
777
2017-06-15 00:00:00
draft
G
803ad8b6-688c-11e7-849d-74d435ee6043
Черновик
2017-06-15 03:55:16
2017-06-15 03:55:16
-
1
1
Оливки черные Acorsa без косточки 350 г жест. банка
10
234234241
803ad8b6-688c-11e7-849d-74d435ee6043
==== Структура ответа сервера ====
**Шапка документа**
* **id** - ID документа списания
* **warehouse_id** - ID магазина, на который оформлено списание
* **docdate** - дата документа поступления
* **docnum** - номер документа списания
* **warehouse_external_id** - код Магазина во внешней системе учета (например, в 1С)
* **type** - тип списания (G - списание товаров, M - списание материальных ценностей)
* **guid** - GUID списания
* **amount** - сумма списания
* **status** - статус документа списания (accept – принят, drаft – черновик)
* **created_date** - дата создания документа списания (может не совпадать с датой документа Списания)
* **created_by** - ID пользователя, создавшего списание
* **last_update_date** - дата и время последнего изменения в списании
* **last_update_by** - ID пользователя, сделавшего последние изменения
* **external_id** - код Списания во внешней системе (например, в 1С). Значение параметра уникально.
Содержание документа (зависит от настройки загружаемых полей и гибких полей на товарный остаток)
* **line_id** - сквозной ID строки в транзакциях списаний
* **item_id** - ID товарной позиции по номенклатурному справочнику
* **item_ext_id** - идентификатор товара во внешней системе
* **item_name** - наименование позиции
* **quantity** - количество
* **quantity_expected** - ожидаемое количество
* **barcode** - штрих-код по накладной поступления
* **price** - цена поступления
* **amount** - сумма по строке
* **manuf_date** - дата изготовления
* **expir_date** - годен до
* **lot_number** - характеристика (серия, партия и пр) позиции в накладной поступления
* **guid** - GUID строки
===== Пример запроса на добавление/изменение данных Списания =====
Пример запроса на обновление данных о списании:
http://mycompany.virtpos.ru/api/writeoff/update/?apikey=MySecret&format=xml&id=1&comment=NewComment
==== Параметры запроса ====
Параметры, которые не отмечены как **get only**, могут быть переданы как get- или как post-параметры.
* **apikey** - Секретный ключ для доступа к данным. Обязательный параметр.
* **format** (get only) - формат, в котором сервер отдаст данные. Может принимать значения "xml" или "json". Необязательный параметр.
* **id** (get only) - идентификатор списания, данные которого нужно обновить
* **external_id** (get only) - код списания во внешней системе учета (например, в 1С)
* **create_if_not_exist** (get only) - Если истина, то при неудачном поиске cписание будет добавлено в систему.
* **warehouse_external_id** (get only) - код Магазина во внешней системе. Необязательный параметр; если указан, то будет осуществлен поиск Магазина по указанному коду и добавление ссылки на него в документ Списания.
* Также в качестве параметров могут быть переданы все поля для поступления
==== Ответ сервера ====
В ответ получаем XML или JSON. В ответе обязательно присутствует поле success. Если success=1, то операция выполнена успешно. Если success=0, то произошла ошибка. Дополнительная информация об ошибке содержится в поле info.
Также возвращается id записи, которая была обновлена или добавлена.
* Флаг **isnew** равен "1", если запись была создана, и "0" если обновлена.
==== Пример ответа сервера ====
1
1
0
===== Пример запроса на удаление данных Списания =====
Пример запроса на удаление списания:
http://mycompany.virtpos.ru/api/writeoff/delete/?apikey=MySecret&format=xml&id=1
==== Параметры запроса ====
Параметры, которые не отмечены как **get only**, могут быть переданы как get- или как post-параметры.
* **apikey** - Секретный ключ для доступа к данным. Обязательный параметр.
* **format** (get only) - формат, в котором сервер отдаст данные. Может принимать значения "xml" или "json". Необязательный параметр.
* **id** (get only) - идентификатор списания, которое будет удалено
* **external_id** (get only) - код списания во внешней системе учета (например, в 1С)
==== Ответ сервера ====
В ответ получаем XML или JSON. В ответе обязательно присутствует поле success. Если success=1, то операция выполнена успешно. Если success=0, то произошла ошибка. Дополнительная информация об ошибке содержится в поле info.
Также возвращается id записи, которая была удалена.
==== Пример ответа сервера ====
1
1
===== Пример запроса на добавление/изменение данных строки товарной позиции Списания =====
Пример запроса на обновление данных о товарной позиции в списании:
http://mycompany.virtpos.ru/api/writeoff/updateItems/?apikey=MySecret&format=xml&id=1&quantity=2
==== Параметры запроса ====
Параметры, которые не отмечены как **get only**, могут быть переданы как get- или как post-параметры.
* **apikey** - Секретный ключ для доступа к данным. Обязательный параметр.
* **format** (get only) - формат, в котором сервер отдаст данные. Может принимать значения "xml" или "json". Необязательный параметр.
* **id** (get only) - идентификатор товарной строки в поступлении, данные которой нужно обновить
* **create_if_not_exist** (get only) - Если истина, то при неудачном поиске товарная строка будет добавлена в систему.
* Также в качестве параметров могут быть переданы все поля для строки товарной позиции в списании
==== Ответ сервера ====
В ответ получаем XML или JSON. В ответе обязательно присутствует поле success. Если success=1, то операция выполнена успешно. Если success=0, то произошла ошибка. Дополнительная информация об ошибке содержится в поле info.
Также возвращается id записи, которая была обновлена или добавлена.
* Флаг **isnew** равен "1", если запись была создана, и "0" если обновлена.
==== Пример ответа сервера ====
1
1
0
===== Пример запроса на удаление данных строки товарной позиции в Списании =====
Пример запроса на удаление товарной строки из документа списания:
http://mycompany.virtpos.ru/api/writeoff/deleteItems/?apikey=MySecret&format=xml&id=1
==== Параметры запроса ====
Параметры, которые не отмечены как **get only**, могут быть переданы как get- или как post-параметры.
* **apikey** - Секретный ключ для доступа к данным. Обязательный параметр.
* **format** (get only) - формат, в котором сервер отдаст данные. Может принимать значения "xml" или "json". Необязательный параметр.
* **id** (get only) - идентификатор строки товарной позиции Списания, которая будет удалена
==== Ответ сервера ====
В ответ получаем XML или JSON. В ответе обязательно присутствует поле success. Если success=1, то операция выполнена успешно. Если success=0, то произошла ошибка. Дополнительная информация об ошибке содержится в поле info.
Также возвращается id записи, которая была удалена.
==== Пример ответа сервера ====
1
1