# Продажи

## Список продаж

<mark style="color:blue;">`GET`</mark> `https://api.livesklad.com/shops/{id}/sales`

Возвращает массив продаж для мастерской. Для получения списка продаж у API должен быть настроен доступ к соответствующей мастерской и у для мастерской должен быть установлен **Доступ к магазину**\
\
Для сортировки результата необходимо в параметре **sort** передать строку "**<название\_поля> ASC**" или "**<название\_поля> DESC**". Где **ASC** - сортировать по возрастанию, **DESC** - сортировать по убыванию, **<название\_поля>** - поле по которому осуществляется сортировка, может быть одно из: **node**, **id**, **date**, **cash**, **purchasePrice**, **counteragent**, **soldPrice**, **number**. По умолчанию продажи сортируются от новых к старым\
\
Фильтры по датам передаются в виде массива из двух чисел в формате Unix (**в миллисекундах**), где первый число - это начало диапазона, а второе - конец диапазона. Если какая-то граница диапазона отсутствует, то вместо нее нужно передать null. Например \[1690837200000,1693515599999] или \[null,1693515599999]

Из списка с любым заданным набором фильтров можно получить максимум 10000 элементов, то есть максимальное значение для **page** \* **pageSize** = 10000. Чтобы получить другие элементы, нужно либо изменить фильтр, либо изменить сортировку

#### Path Parameters

| Name                                 | Type   | Description   |
| ------------------------------------ | ------ | ------------- |
| id<mark style="color:red;">\*</mark> | string | id мастерской |

#### Query Parameters

| Name     | Type   | Description                                                       |
| -------- | ------ | ----------------------------------------------------------------- |
| filter   | string | Текст для поиска по содержимому корзины                           |
| date     | array  | Фильтр по дате продажи                                            |
| page     | number | Номер страницы выборки (по умолчанию - 1)                         |
| pageSize | number | Количество элементов в выборке (по умолчанию - 10, максимум - 50) |
| sort     | String | Сортировка                                                        |

#### Headers

| Name                                            | Type   | Description       |
| ----------------------------------------------- | ------ | ----------------- |
| Authorization<mark style="color:red;">\*</mark> | string | Токен авторизации |

{% tabs %}
{% tab title="200 " %}

```json
{
  data: [
    {
      date: "2022-12-13T09:45:13.894Z",
      number: "B000002",
      summ: {
        price: 1500,
        soldPrice: 1500,
        purchasePrice: 900
      },
      cash: {
        summ: 1500
      },
      id: "63c128159bb329405df8b407"
    },
    {
      date: "2022-12-13T09:42:29.259Z",
      number: "B000001",
      summ: {
        price: 500,
        soldPrice: 500,
        purchasePrice: 200
      },
      cash: {
        summ: 500
      },
      id: "63c125aca0360d3ba1fd3747"
    }
  ],
  total: 2,
  page: 1,
  pageSize: 10,
  sort: {
    field: "date",
    dir: "DESC"
  },
  summ: {
    soldPrice: 2000,
    purchasePrice: 1100
  },
  version: "2.0.0.0",
  remainRequest: 50,
  expireDate: "2022-12-13T09:09:20.861Z"
}
```

{% endtab %}

{% tab title="401 Доступ запрещен" %}

```json
{
  error: {
    statusCode: 401,
    name: "Error",
    message: "Access denied"
  }
}
```

{% endtab %}
{% endtabs %}

## Информация о продаже

<mark style="color:blue;">`GET`</mark> `https://api.livesklad.com/documents/{id}`

Возвращает информацию о продаже. Для получения информации о продаже у API должен быть настроен доступ к соответствующей мастерской и для мастерской должен быть установлен **Доступ к магазину**

#### Path Parameters

| Name                                 | Type   | Description |
| ------------------------------------ | ------ | ----------- |
| id<mark style="color:red;">\*</mark> | string | id продажи  |

#### Headers

| Name                                            | Type   | Description       |
| ----------------------------------------------- | ------ | ----------------- |
| Authorization<mark style="color:red;">\*</mark> | string | Токен авторизации |

{% tabs %}
{% tab title="200 " %}

```json
{
  data: {
    date: "2023-01-13T09:42:29.259Z",
    type: "sale",
    dateChange: "2023-01-13T09:50:29.763Z",
    number: "B000001",
    id: "63c125aca0360d3ba1fd3747",
    customer: {
      id: "63c015adcce57401c832fab4",
      name: "Фамилия Имя"
    },
    cash: {
      bank: 500,
      money: 0,
      invoice: 0,
      elements: [
        {
          id: "63c127859bb329405df8b404",
          date: "2023-01-13T09:42:29.259Z",
          money: 500,
          type: "sale",
          isBankTransfer: true
        }
      ]
    },
    shop: {
      name: "Мастерская",
      color: "#ff6666",
      id: "63c015adcce57401c832faee"
    },
    positions: [
      {
        batches: [
          {
            storeId: "63c015adcce57401c832fb5f",
            batchId: "63c015afcce57401c832fcde",
            count: 1,
            purchasePrice: 200,
            returnCount: 0
          }
        ],
        measure: {
          id: "63c015adcce57401c832fab5",
          value: "шт.",
          isFloat: false
        },
        positionId: "63c1277d9bb329405df8b400",
        modifyId: "63c015afcce57401c832fcbe",
        nomenclatureId: "63c015afcce57401c832fcbd",
        code: 5,
        article: "456789",
        name: "АКБ iPhone 5S/5C (1560 mAh)",
        isWork: false,
        price: 500,
        soldPrice: 500,
        guaranteeInMonth: 1,
        date: "2023-01-13T09:42:29.259Z",
        minPrice: 500,
        returnCount: 0,
        count: 1,
        purchasePriceSumm: 200
      }
    ],
    total: 1,
    pageSize: 10
  },
  version: "2.0.0.0",
  remainRequest: 50,
  expireDate: "2022-12-13T09:09:20.861Z"
}
```

{% endtab %}

{% tab title="401 Доступ запрещен" %}

```json
{
  error: {
    statusCode: 401,
    name: "Error",
    message: "Access denied"
  }
}
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.livesklad.com/api/sale.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
