UNPKG

moysklad-api-model

Version:

Объектная модель API МойСклад для TypeScript проектов

141 lines (140 loc) 7.55 kB
import type { AttributePatch, Entity, HasAttributes, ProductFolderFields } from '.'; import type { OptionalNullablePartial } from '../tools'; import type { Barcode } from './Barcode'; import type { CollectionRef } from './CollectionRef'; import type { EntityRef } from './EntityRef'; import type { Pack } from './Pack'; import type { Price } from './Price'; import type { ProductFolderPatch } from './ProductFolder'; import type { SalePrice } from './SalePrice'; export type TrackingType = /** Без маркировки */ 'NOT_TRACKED' /** Тип маркировки "Табак" */ | 'TOBACCO' /** Тип маркировки "Обувь" */ | 'SHOES' /** Тип маркировки "Одежда" */ | 'LP_CLOTHES' /** Тип маркировки "Постельное белье" */ | 'LP_LINENS' /** Духи и туалетная вода */ | 'PERFUMERY' /** Фотокамеры и лампы-вспышки */ | 'ELECTRONICS' /** Шины и покрышки */ | 'TIRES' /** Молочная продукция */ | 'MILK' /** Альтернативная табачная продукция */ | 'OTP'; export type PaymentItemType = /** Товар */ 'GOOD' /** Подакцизный товар */ | 'EXCISABLE_GOOD' /** Составной предмет расчета */ | 'COMPOUND_PAYMENT_ITEM' /** Иной предмет расчета */ | 'ANOTHER_PAYMENT_ITEM'; export type GoodMetaType = 'product' | 'service' | 'bundle'; export type AbstractGoodFields = ProductFolderFields & { /** ID синхронизации */ readonly syncId?: string; uom?: EntityRef<'uom'>; /** * Массив метаданных Изображений (Максимальное количество изображений - 10) */ images: CollectionRef<'image'>; minPrice: Price; salePrices: SalePrice[]; buyPrice: Price; supplier?: EntityRef<'counterparty' | 'organization'>; country?: EntityRef<'country'>; article?: string; weight: number; volume: number; packs?: Pack[]; alcoholic?: { excise?: boolean; /** Код вида продукции */ type?: number; /** Крепость (Float) */ strength?: number; volume?: number; }; /** Количество модификаций у данного товара */ readonly variantsCount: number; /** Неснижаемый остаток */ minimumBalance?: number; /** * Учет по серийным номерам. * Не может быть указан вместе с `alcoholic` и `weighed` */ isSerialTrackable: boolean; /** Серийные номера */ things?: string[]; /** * Штрихкоды Комплекта. * * Для обновления списка штрихкодов необходимо передавать их полный список, * включающий как старые, так и новые значения. Отсутствующие значения * штрихкодов при обновлении будут удалены. При обновлении списка штрихкодов * валидируются только новые значения. Ранее сохраненные штрихкоды не * валидируются. То есть, если один из старых штрихкодов не соответствует * требованиям к валидации, то ошибки при обновлении списка не будет. Если на * вход передан пустой список штрихкодов или список из пустых значений, то * ранее созданные штрихкоды будут удалены. * * Особенности создания списка штрихкодов при создании комплекта: * * - Если передать список штрихкодов на вход, то полученные значения штрихкодов сохраняются, а пустые значения игнорируются. * - Если передать список из пустых значений штрихкодов на вход, то для продукции не будет создано ни одного штрихкода. * - Если не передать на вход атрибут barcodes или передать пустой список в нем, то по умолчанию будет создан один случайный штрихкод типа EAN13 для продукции. * */ barcodes?: Barcode[]; /** Признак запрета скидок */ discountProhibited: boolean; /** Код ТН ВЭД */ tnved?: string; /** * Управление состоянием частичного выбытия маркированного товара. * * `true` - возможность включена. */ partialDisposal?: boolean; /** Тип маркируемой продукции. */ trackingType: TrackingType; /** Признак предмета расчета. */ paymentItemType: PaymentItemType; /** * Код вида номенклатурной классификации медицинских средств индивидуальной * защиты (EAN-13). * */ ppeType?: string; files: CollectionRef<'files'>; } & HasAttributes; export type AbstractGood<T extends GoodMetaType> = Entity<T> & AbstractGoodFields; export type AbstractGoodPatch = OptionalNullablePartial<Pick<AbstractGoodFields, 'uom' | 'minPrice' | 'salePrices' | 'buyPrice' | 'supplier' | 'country' | 'article' | 'weight' | 'volume' | 'alcoholic' | 'minimumBalance' | 'isSerialTrackable' | 'things' | 'barcodes' | 'discountProhibited' | 'tnved' | 'partialDisposal' | 'trackingType' | 'paymentItemType' | 'ppeType' | 'files'> & { attributes: AttributePatch[]; } & ProductFolderPatch & { /** * Для того, чтобы создать новую упаковку для данного товара, нужно в * запросе на обновление товара указать ее как элемент поля packs, * а в ее составе указать ссылку в формате meta на единицу измерения и * количество товаров в упаковке. * * Для упаковки товара нельзя указать ссылку на единицу измерения, * совпадающую с единицей измерения товара, иначе возникнет ошибка. * * При обновлении штрихкодов упаковки в рамках обновления товара, * переданная коллекция штрихкодов упаковки полностью заменяет имеющуюся * до этого коллекцию. * * Для обновления списка упаковок товара, необходимо в рамках обновления * товара передать новую коллекцию упаковок. * * Новая коллекия упаковок товара полностью заменит старую коллекцию. */ packs?: Pick<Pack, 'uom' | 'quantity'>; }>;