Skip to content

Списания ​

Списание товара со склада (порча, брак, истёк срок и т. п.) или возврат части прихода поставщику. Остаток уменьшается только после завершения документа.

МетодАдресНазначение
PATCH/company/trade/writeoff/{model}/completeЗавершить списание
PATCH/company/trade/writeoff/{model}/cancelОтменить списание
GET/company/trade/writeoffСписок списаний
GET/company/trade/writeoff/{model}Детали списания
POST/company/trade/writeoffСоздать списание
PUT/company/trade/writeoff/{model}Изменить списание

Завершить списание ​

PATCH/company/trade/writeoff/{model}/complete

Переводит списание из waiting_for_confirmation в completed: остаток уменьшается со склада; для списания по приходу (source_type = purchase) создаётся операция по балансу поставщика.

Из формы (multipart/form-data) метод PATCH отправляется как POST с параметром ?_method=PATCH.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Параметры пути ​

ПараметрОписание
modelID записи

Ответ · 200 ​

Поля ответа
ПолеТипОписание
messagestringСообщение
json
{
    "message": "Success"
}

Отменить списание ​

PATCH/company/trade/writeoff/{model}/cancel

Переводит списание в canceled. Завершённое списание можно отменить только в день завершения: товар возвращается на склад, операция поставщика удаляется.

Из формы (multipart/form-data) метод PATCH отправляется как POST с параметром ?_method=PATCH.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Параметры пути ​

ПараметрОписание
modelID записи

Ответ · 200 ​

Поля ответа
ПолеТипОписание
messagestringСообщение
json
{
    "message": "Success"
}

Список списаний ​

GET/company/trade/writeoff

Документы списания с пагинацией и фильтрами.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Параметры запроса ​

ПараметрОписание
filter[id]ID — точное значение
filter[creator_id]Создатель — точное значение
filter[company_id]Компания — точное значение
filter[source_type]Источник — точное значение
filter[source_id]Источник — точное значение
filter[name]Название — поиск по части строки
filter[status]Статус — точное значение
filter[created_at]Создано — период: [0] — с, [1] — по (Y-m-d)
sort[]Сортировка, - — по убыванию: id, -id
with[]Подгрузить связи: creator.profile, company
pageНомер страницы, с 1
page-sizeЗаписей на странице, не больше 20
http
GET /company/trade/writeoff?sort[0]=id&sort[1]=-id

Ответ · 200 ​

Постраничный ответ: записи в data[], пагинация в links и meta.

Поля ответа
ПолеТипОписание
dataobject[]Данные
data[].idintegerID
data[].creator_idintegerСоздатель
data[].company_idintegerКомпания
data[].source_typestringИсточник
data[].source_idintegerИсточник
data[].namestringНазвание
data[].statusstringСтатус
data[].created_atstringСоздано
data[].updated_atstringОбновлено
json
{
    "data": [
        {
            "id": 1,
            "creator_id": 2,
            "company_id": 1,
            "source_type": "stock",
            "source_id": 1,
            "name": "Writeoff 1",
            "status": "waiting_for_confirmation",
            "created_at": "2026-09-30 12:47:59",
            "updated_at": "2026-09-30 12:47:59"
        }
    ],
    "links": {
        "first": "https://api.wasyt.uz/company/trade/writeoff?page=1",
        "last": "https://api.wasyt.uz/company/trade/writeoff?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [],
        "path": "https://api.wasyt.uz/company/trade/writeoff",
        "per_page": 20,
        "to": 1,
        "total": 1
    }
}

Детали списания ​

GET/company/trade/writeoff/{model}

Один документ списания: источник (склад, приход или инвентаризация), название и статус.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Параметры пути ​

ПараметрОписание
modelID записи

Ответ · 200 ​

Поля ответа
ПолеТипОписание
idintegerID
creator_idintegerСоздатель
company_idintegerКомпания
source_typestringИсточник
source_idintegerИсточник
namestringНазвание
statusstringСтатус
created_atstringСоздано
updated_atstringОбновлено
json
{
    "id": 1,
    "creator_id": 2,
    "company_id": 1,
    "source_type": "stock",
    "source_id": 1,
    "name": "Writeoff 1",
    "status": "waiting_for_confirmation",
    "created_at": "2026-09-30 12:47:59",
    "updated_at": "2026-09-30 12:47:59"
}

Создать списание ​

POST/company/trade/writeoff

Создаёт списание в статусе waiting_for_confirmation со склада (source_type = stock) или по завершённому приходу (purchase). Количество строки не больше остатка её партии; товар из активной продажи списать нельзя. Причина строки зависит от источника, для stock_industrial_usage, purchase_incorrect_description и common_other обязателен комментарий.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Тело запроса ​

ПолеТипОбязательноОписание
source_typestringДаИсточник. Допустимые значения: stock, purchase
source_idintegerДаИсточник. ID существующей записи, доступной пользователю
namestringДаНазвание. Макс. 255 символов
productsobject[]ДаПродукты. Макс. 1000 элементов
products[].idintegerНетID
products[].product_idintegerДаПродукт. Без повторов
products[].source_product_idintegerДаID строки прихода (партии), из которой списывается товар
products[].quantitynumberДаКоличество. До 4 знаков после запятой. Не меньше 0.0001
products[].reasonstringДаПричина. Допустимые значения: stock_damage, stock_defect, stock_overdue, stock_industrial_usage, common_loss, common_other
products[].commentstringНетКомментарий. Макс. 1000 символов
json
{
    "name": "Writeoff 3",
    "products": [
        {
            "product_id": 1,
            "source_product_id": 1,
            "quantity": 1,
            "reason": "stock_damage",
            "comment": "Comment 1"
        },
        {
            "product_id": 2,
            "source_product_id": 2,
            "quantity": 0.5,
            "reason": "common_other",
            "comment": "Comment 2"
        }
    ],
    "source_type": "stock",
    "source_id": 1
}
bash
curl -X POST "https://api.wasyt.uz/company/trade/writeoff" \
  -H "Accept: application/json" \
  -H "Accept-Language: ru" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{"name":"Writeoff 3","products":[{"product_id":1,"source_product_id":1,"quantity":1,"reason":"stock_damage","comment":"Comment 1"},{"product_id":2,"source_product_id":2,"quantity":0.5,"reason":"common_other","comment":"Comment 2"}],"source_type":"stock","source_id":1}'

Ответ · 200 ​

Поля ответа
ПолеТипОписание
source_typestringИсточник
source_idintegerИсточник
namestringНазвание
updated_atstringОбновлено
created_atstringСоздано
creator_idintegerСоздатель
company_idintegerКомпания
idintegerID
json
{
    "source_type": "stock",
    "source_id": 1,
    "name": "Writeoff 3",
    "updated_at": "2026-09-30 12:56:04",
    "created_at": "2026-09-30 12:56:04",
    "creator_id": 2,
    "company_id": 1,
    "id": 26
}

Пример ошибки · 422 ​

json
{
    "message": "Этот товар участвует в активной продаже, поэтому его нельзя списать",
    "errors": {
        "products.0.product_id": [
            "Этот товар участвует в активной продаже, поэтому его нельзя списать"
        ]
    }
}

Изменить списание ​

PUT/company/trade/writeoff/{model}

Перезаписывает списание и его строки по правилам создания. Только в статусе waiting_for_confirmation.

Из формы (multipart/form-data) метод PUT отправляется как POST с параметром ?_method=PUT.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Параметры пути ​

ПараметрОписание
modelID записи

Тело запроса ​

ПолеТипОбязательноОписание
source_typestringДаИсточник. Допустимые значения: stock, purchase
source_idintegerДаИсточник. ID существующей записи, доступной пользователю
namestringДаНазвание. Макс. 255 символов
productsobject[]ДаПродукты. Макс. 1000 элементов
products[].idintegerНетID
products[].product_idintegerДаПродукт. Без повторов
products[].source_product_idintegerДаID строки прихода (партии), из которой списывается товар
products[].quantitynumberДаКоличество. До 4 знаков после запятой. Не меньше 0.0001
products[].reasonstringДаПричина. Допустимые значения: stock_damage, stock_defect, stock_overdue, stock_industrial_usage, common_loss, common_other
products[].commentstringНетКомментарий. Макс. 1000 символов
json
{
    "name": "Writeoff 1",
    "products": [
        {
            "product_id": 1,
            "source_product_id": 1,
            "quantity": 1,
            "reason": "stock_damage",
            "comment": "Comment 1"
        },
        {
            "product_id": 2,
            "source_product_id": 2,
            "quantity": 0.5,
            "reason": "common_other",
            "comment": "Comment 2"
        }
    ],
    "source_type": "stock",
    "source_id": 1
}
bash
curl -X PUT "https://api.wasyt.uz/company/trade/writeoff/1" \
  -H "Accept: application/json" \
  -H "Accept-Language: ru" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{"name":"Writeoff 1","products":[{"product_id":1,"source_product_id":1,"quantity":1,"reason":"stock_damage","comment":"Comment 1"},{"product_id":2,"source_product_id":2,"quantity":0.5,"reason":"common_other","comment":"Comment 2"}],"source_type":"stock","source_id":1}'

Ответ · 200 ​

Поля ответа
ПолеТипОписание
idintegerID
creator_idintegerСоздатель
company_idintegerКомпания
source_typestringИсточник
source_idintegerИсточник
namestringНазвание
statusstringСтатус
created_atstringСоздано
updated_atstringОбновлено
json
{
    "id": 1,
    "creator_id": 2,
    "company_id": 1,
    "source_type": "stock",
    "source_id": 1,
    "name": "Writeoff 1",
    "status": "waiting_for_confirmation",
    "created_at": "2026-09-30 12:47:59",
    "updated_at": "2026-09-30 12:56:06"
}