Товары

Структура

data class ProductFileClass(
    var categories: List<Category>, //Список категорий
    var labelTemplates: List<LabelTemplate>, //Список шаблонов этикетки
    var messages: List<Message>, //Список сообщений (для состава или описания товара)
    var productRates: List<ProductRate>, //Список рейтингов товаров
    var products: List<Product>, //Список товаров
    var lotsOfProduct: List<LotOfProduct> //Список партий товаров
)

data class Category(
    val idCategory: Int, //ID категории
    val name: String //Название категории
)

data class LabelTemplate(
    val id: Int, //ID шаблона этикетки
    val name: String?, //Название
    val height: Int, //Высота
    val deleted: Boolean //Признак удалёного элемента
)

data class Message(
    val id: Int, //ID сообщения
    val value: String, //Текст сообщения (для состава или описания товара)
    val deleted: Boolean //Признак удалёного элемента
)

data class ProductRate(
    val productCode : Int, //Код товара
    val startDate : String, //Дата начала подсчёта рейтинга. Формат "DD-MM-YY"
    val updateDate : String, //Дата последнего обновления рейтинга. Формат "DD-MM-YY"
    val rate : Float //Рейтинг
)

data class LotOfProduct(
    val id: Int, //ID партии товара
    val productCode: Int, //Код товара
    val manufactureDate: String?, //Дата производства
    val shelfLifeDateTime: String?, //Дата и время срока годности
)

data class Product(
    //Идентификаторы
    val id: Int, //ID товара
    val name: String, //Название
    val code: Int = 0, //Код товара
    val pluNumber: Int?, //ПЛУ товара
    val buttonNumber: Int?, //Номер кнопки
    val gtin: Int?, //GTIN
    //Цены
    val price: Double, //Цена
    val discountPrice: Double?, //Цена со скидкой
    //Датирование
    val manufactureDate: String?, //Дата производства. Формат "DD-MM-YY"
    val sellByDate: String?, //Дата срока годности. Формат "DD-MM-YY"
    val shelfLife: Int?, //Срок годности
    val shelfLifeType: String?, //Тип срока годности
    //Характеристики
    val productType: String, //Тип продукта
    val pieceWeight: Double?, //Вес 1 штуки
    val category: Int?, //ID категории
    val message: Int?, //ID сообщения (для состава или описания товара)
    val wrappingType: Int?, //Тип упаковки для ленты Мёбиуса
    val rostestCode: String?, //Код РОСТЕСТа
    val deleted: Boolean, //Признак удалёного элемента
    //Этикетка
    val labelTemplate: Int?, //Приоритетный шаблон этикетки
    val labelDiscountTemplate: Int?, //Приоритетный шаблон этикетки, если указана цена со скидкой
    //Штрихкоды
    val barcodePrefixType: String?, //Приоритетный тип префикса штрихкода
    val barcodeStructure: String?, //JSON приоритетных структур штрихкодов
    //Взвешивание
    val tare: Double?, //Тара
    val minWeight: Double?, //Минимальный вес для печати этикетки
    val maxWeight: Double?, //Максимальный вес для печати этикетки
    //Распознавание
    val learningModeEnabled: Boolean?, //Флаг дообучения товара.
)

Тип товара:

WEIGHT - весовой,
PIECE - штучный

Типы срока годности:

HOURS - в часах,
DAYS - в днях,
WEEKS - в неделях,
MONTHS - в месяцах,
YEARS - в годах,
NOT_LIMITED - не ограничено

Типы префикса штрихкода:

NUMBER_SCALES - номер весов,
GROUP_CODE - ID категории,
PRODUCT_TYPE - тип продукта

В переменную barcodeStructure заносится json-строка из списка элементов следующего типа

data class BarcodeJsonClasses(
    val number: String, //Номер штрихкода
    val structure: String, //Структура штрихкода
    val type: Int?, //Тип штрихкода
)

Типы штрихкода:

3 - Code39
4 - Code93
5 - Code128
6 - DataMatrix
7 - EAN8
8 - EAN13
9 - ITF
12 - QR Code
15 - UPC A
16 - UPC E
17 - EAN13+5
18 - EAN128

Структура штрихкода строится по следующему шаблону: @{«1 ЭЛЕМЕНТ:ЗНАЧЕНИЕ}@{2 ЭЛЕМЕНТ:ЗНАЧЕНИЕ}…@{N ЭЛЕМЕНТ:ЗНАЧЕНИЕ}

Список элементов структуры:

PREFIX - Префикс штрихкода, в качестве значения указывается количество символов в ШК
CODE - Код товара, в качестве значения указывается количество символов в ШК
PLU - ПЛУ, в качестве значения указывается количество символов в ШК
QUANTITY - Вес/количество, в качестве значения указывается количество символов в ШК
TARE - Тара, в качестве значения указывается количество символов в ШК
PRICE - Цена, в качестве значения указывается количество символов в ШК
COST - Сумма, в качестве значения указывается количество символов в ШК
MANUFDATE - Дата производства, в качестве значения указывается формат даты
SHLDATE - Дата срока годности, в качестве значения указывается формат даты
WRAPTYPE - Тип упаковки, в качестве значения указывается количество символов в ШК
AI - Идентификатор применения, в качестве значения указывается произвольный текст
TEXT - Статический текст, в качестве значения указывается произвольный текст
CHECKSUM - Контрольная сумма, в качестве значения указывается тип ШК
GTIN - Уникальный номер товара, в качестве значения указывается количество символов в ШК
TOTAL_WEIGHT_OR_QUANTITY - Итоговый вес/Итоговое кол-во, в качестве значения указывается количество символов в ШК
TOTAL_WEIGHT - Итоговый вес, в качестве значения указывается количество символов в ШК
TOTAL_PACKAGES - Кол-во упаковок, в качестве значения указывается количество символов в ШК

Форматы дат:

DDMMYY
YYMMDD
MMDDYY
DDDYY

Типы ШК для контрольной суммы:

EAN_8
EAN_13
EAN_13_PLUS_5
UPC_A
UPC_E
ITF

Значения формата даты, статического текста и типа типа ШК записываются в угловых скобках:< >.

Примеры записи структуры ШК:

Примечание

@{CODE:7}@{QUANTITY:5}@{CHECKSUM:<EAN_13>} @{CODE:7}@{QUANTITY:5}@{CHECKSUM:<EAN_13>}@{SHLDATE:<DDDYY>} @{TEXT:<SomeText>}

Пример

{
"categories": [
        {
            "idCategory": 1,
            "name": "Фрукты"
        }
    ],
    "labelTemplates": [
        {
            "deleted": false,
            "height": 30,
            "id": 1,
            "name": "58x30, ШК",
            "width": 58
        }
    ],
    "messages": [
        {
            "deleted": false,
            "id": 1,
            "value": "Строка 1\nСтрока 2\n\nСтрока 4"
        }
    ],
    "productRates": [
        {
            "idProduct": 2,
            "rate": 1,
            "startDate": "02-02-23",
            "updateDate": "02-02-23"
        }
    ],
    "products": [
        {
            "id": "1",
            "code": "1",
            "buttonNumber": "1",
            "name": "Пример\n",
            "price": "24.000000",
            "shelfLifeInDays": "40",
            "tare": "0.100000",
            "productType": "PIECE",
            "deleted": "false",
            "pluNumber": "1",
            "labelTemplate": "11",
            "barcodeStructure": "[{\"number\":\"1\",\"structure\":\"@{CODE:7}@{QUANTITY:5}@{CHECKSUM:<EAN_13>}\",\"type\":8},{\"number\":\"2\",\"structure\":\"@{TEXT:<ThisisaDataMatrix>}\",\"type\":6}]",
            "pieceWeight": "0.200000",
            "manufactureDate": "21-12-23",
            "barcodePrefixType": "NUMBER_SCALES",
            "sellByDate": "09-02-24",
            "minWeight": "0.015000",
            "maxWeight": "0.215000",
            "discountPrice": "20.500000",
            "labelDiscountTemplate": "1",
            "wrappingType": "5",
            "gtin": "647"
        }
    ]
}