Skip to content

Production plan ​

Production planning

INFO

Каждый ответ приходит в общем конверте — code, message, messages, status_code, time — а полезная нагрузка лежит в data. Таблицы ниже описывают содержимое data.

POST /production-plan/create ​

Create a production plan for a given year and organization. This is a year-keyed upsert — if a plan already exists for the given (year, organization_id) it is updated rather than duplicated. Items carry per-product monthly targets.

Тело запроса

ПолеТипОбязательноОписание
yearnumberДаThe production plan year (e.g. 2025). Together with organization_id this is the upsert key — submitting a plan for the same year + organization updates the existing plan.
organization_idstringДаOrganization ObjectId this plan belongs to
notestringНетOptional free-text note
itemsobject[]ДаPer-product monthly production targets (at least one item required)
items[].product_idstringДаProduct ObjectId
items[].monthsobject[]ДаMonthly target entries for this product (at least one month required)
items[].months[].amountnumberДаPlanned production quantity for this month
items[].months[].month_numbernumberДаCalendar month (1 = January … 12 = December). Each month_number must be unique within an item.
json
{
  "year": 2025,
  "organization_id": "string",
  "note": "string",
  "items": [
    {
      "product_id": "string",
      "months": []
    }
  ]
}

Ответ

ПолеТипОписание
_idstringProduction plan ObjectId
numberstringAuto-generated plan number
yearnumberPlan year
notestringFree-text note
organization_idstringOrganization ObjectId
organizationobject
organization._idstring
organization.namestring
created_byobject
created_by._idstring
created_by.numberstring
created_by.full_namestring
updated_byobject
updated_by._idstring
updated_by.numberstring
updated_by.full_namestring
created_atstring (date-time)
updated_atstring (date-time)
itemsobject[]
items[].product_idstringProduct ObjectId
items[].productobject
items[].product._idstring
items[].product.namestring
items[].product.skustring
items[].product.barcodestring
items[].monthsobject[]
items[].months[].amountnumberPlanned quantity
items[].months[].month_numbernumberCalendar month (1–12)
items[].months[].producednumberActual produced quantity so far
json
{
  "code": 0,
  "message": "Success",
  "status_code": 200,
  "data": {
    "_id": "string",
    "number": "string",
    "year": 0,
    "note": "string",
    "organization_id": "string",
    "organization": {
      "_id": "string",
      "name": "string"
    },
    "created_by": {
      "_id": "string",
      "number": "string",
      "full_name": "string"
    },
    "updated_by": {
      "_id": "string",
      "number": "string",
      "full_name": "string"
    },
    "created_at": "2025-05-01T12:00:00Z",
    "updated_at": "2025-05-01T12:00:00Z",
    "items": [
      {
        "product_id": "string",
        "product": {
          "_id": null,
          "name": null,
          "sku": null,
          "barcode": null
        },
        "months": []
      }
    ]
  },
  "time": "2025-05-01T12:00:00Z"
}

PUT /production-plan/update/{id} ​

Update a production plan. Internally performs the same year-keyed upsert as create — the {id} path parameter is standard-shape only; the real dedup key is body year + organization_id. Send the full plan payload including items.

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

ПараметрТипОбязательноОписание
idstringДаProduction plan ObjectId (standard-shape; upsert key is year + organization_id in body)

Тело запроса

ПолеТипОбязательноОписание
yearnumberДаThe production plan year (e.g. 2025). Together with organization_id this is the upsert key — submitting a plan for the same year + organization updates the existing plan.
organization_idstringДаOrganization ObjectId this plan belongs to
notestringНетOptional free-text note
itemsobject[]ДаPer-product monthly production targets (at least one item required)
items[].product_idstringДаProduct ObjectId
items[].monthsobject[]ДаMonthly target entries for this product (at least one month required)
items[].months[].amountnumberДаPlanned production quantity for this month
items[].months[].month_numbernumberДаCalendar month (1 = January … 12 = December). Each month_number must be unique within an item.
json
{
  "year": 2025,
  "organization_id": "string",
  "note": "string",
  "items": [
    {
      "product_id": "string",
      "months": []
    }
  ]
}

Ответ

Структура ответа совпадает с POST /production-plan/create.

GET /production-plan/get-by-id/{id} ​

Fetch a single production plan by ObjectId, with aggregated items and per-product monthly targets.

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

ПараметрТипОбязательноОписание
idstringДаProduction plan ObjectId

Тело запроса

Тело запроса не требуется.

Ответ

Структура ответа совпадает с POST /production-plan/create.

POST /production-plan/get-paging ​

Paginated list of production plans. The search field matches against the plan number.

Тело запроса

ПолеТипОбязательноОписание
pagenumberДаПо умолчанию: 1
limitnumberДаПо умолчанию: 20
searchstringНетSearch string matched against plan number
json
{
  "page": 1,
  "limit": 20,
  "search": "string"
}

Ответ

ПолеТипОписание
totalnumber
listobject[]
list[]._idstring
list[].numberstring
list[].yearnumber
list[].notestring
list[].organization_idstring
list[].organizationobject
list[].organization._idstring
list[].organization.namestring
list[].created_byobject
list[].created_by._idstring
list[].created_by.numberstring
list[].created_by.full_namestring
list[].updated_byobject
list[].updated_by._idstring
list[].updated_by.numberstring
list[].updated_by.full_namestring
list[].created_atstring (date-time)
list[].updated_atstring (date-time)
json
{
  "code": 0,
  "message": "Success",
  "status_code": 200,
  "data": {
    "total": 0,
    "list": [
      {
        "_id": "string",
        "number": "string",
        "year": 0,
        "note": "string",
        "organization_id": "string",
        "organization": {
          "_id": null,
          "name": null
        },
        "created_by": {
          "_id": null,
          "number": null,
          "full_name": null
        },
        "updated_by": {
          "_id": null,
          "number": null,
          "full_name": null
        },
        "created_at": "2025-05-01T12:00:00Z",
        "updated_at": "2025-05-01T12:00:00Z"
      }
    ]
  },
  "time": "2025-05-01T12:00:00Z"
}

POST /production-plan/delete-many ​

Soft-delete one or more production plans by their ObjectIds. Sets is_deleted=true; no physical deletion.

Тело запроса

ПолеТипОбязательноОписание
idsstring[]ДаProduction plan ObjectIds to soft-delete (at least one required)
json
{
  "ids": [
    "string"
  ]
}

Ответ

json
{
  "code": 0,
  "message": "Success",
  "status_code": 200,
  "data": "ok",
  "time": "2025-05-01T12:00:00Z"
}

POST /production-plan/get-by-year ​

Fetch the production plan for a year + organization. Together these are the plan's natural key — the same pair create/update upsert on — so this is the lookup to use when you hold the business key rather than the ObjectId. Returns an empty object when no plan exists for that pair.

Тело запроса

ПолеТипОбязательноОписание
yearnumberДаCalendar year of the plan, e.g. 2026
organization_idstringДаOrganization ObjectId the plan belongs to
json
{
  "year": 2026,
  "organization_id": "string"
}

Ответ

Структура ответа совпадает с POST /production-plan/create.


Эта страница сгенерирована из спецификации OpenAPI.

Bito 2.0 Integration API