Товары ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Структура ---------------------------------------------------------------------------------------------------------------------------- .. code:: Kotlin data class ProductFileClass( var categories: List, //Список категорий var labelTemplates: List, //Список шаблонов этикетки var messages: List, //Список сообщений (для состава или описания товара) var productRates: List, //Список рейтингов товаров var products: List, //Список товаров var lotsOfProduct: List //Список партий товаров ) data class Category( val idCategory: Int, //ID категории val name: String //Название категории val number: Int? //Номер категории ) data class LabelTemplate( val id: Int, //ID шаблона этикетки val name: String?, //Название val width: Int, //Ширина 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?, //Флаг дообучения товара. ) Тип товара: .. code:: css WEIGHT - весовой, PIECE - штучный Типы срока годности: .. code:: css HOURS - в часах, DAYS - в днях, WEEKS - в неделях, MONTHS - в месяцах, YEARS - в годах, NOT_LIMITED - не ограничено Типы префикса штрихкода: .. code:: css NUMBER_SCALES - номер весов, GROUP_CODE - ID категории, PRODUCT_TYPE - тип продукта В переменную barcodeStructure заносится json-строка из списка элементов следующего типа .. code:: Kotlin data class BarcodeJsonClasses( val number: String, //Номер штрихкода val structure: String, //Структура штрихкода val type: Int?, //Тип штрихкода ) Типы штрихкода: .. code:: css 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 ЭЛЕМЕНТ:ЗНАЧЕНИЕ} Список элементов структуры: .. code:: css //Список элементов с параметром в виде длины текста элемента (значение не обособляется треугольными скобками) PREFIX - Префикс штрихкода CODE - Код товара PLU - ПЛУ QUANTITY - Вес/количество TARE - Тара PRICE - Цена COST - Сумма WRAPTYPE - Тип упаковки GTIN - Уникальный номер товара TOTAL_WEIGHT_OR_QUANTITY - Итоговый вес/Итоговое кол-во TOTAL_WEIGHT - Итоговый вес TOTAL_PACKAGES - Кол-во упаковок IN_RECOGNITION_TOP_FLAG - Признак попадания товара в топе распознавания TOP_1 - Код товара, попавший в топ 1 распознавания TOP_2 - Код товара, попавший в топ 2 распознавания TOP_3 - Код товара, попавший в топ 3 распознавания Top_4 - Код товара, попавший в топ 4 распознавания Top_5 - Код товара, попавший в топ 5 распознавания CATEGORY_NUMBER - Номер категории //Список элементов с параметром в виде формата даты или времени (значение обособляется треугольными скобками) MANUFDATE - Дата производства, в качестве значения указывается формат даты SHLDATE - Дата срока годности, в качестве значения указывается формат даты SHLTIME - Время срока годности, в качестве значения указывается формат времени //Список элементов с параметром в виде произвольного текста (значение обособляется треугольными скобками) AI - Идентификатор применения TEXT - Статический текст CART_PRODUCTS - Список штрихкодов товаров в корзине, разделяемые введённым значением //Список элементов с параметром в виде типа штрихкода (значение обособляется треугольными скобками) CHECKSUM - Контрольная сумма Форматы дат: .. code:: css DDMMYY YYMMDD MMDDYY DDDYY Форматы времени: .. code:: css HHMM HHMMSS Типы ШК для контрольной суммы: .. code:: css EAN_8 EAN_13 EAN_13_PLUS_5 UPC_A UPC_E ITF Значения формата даты, статического текста и типа типа ШК записываются в угловых скобках:< >. Примеры записи структуры ШК: .. note:: @{CODE:7}@{QUANTITY:5}@{CHECKSUM:} @{CODE:7}@{QUANTITY:5}@{CHECKSUM:}@{SHLDATE:} @{TEXT:} Пример ---------------------------------------------------------------------------------------------------------------------------- .. code:: JSON { "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": [ { "productCode": 2, "rate": 1, "startDate": "02-02-23", "updateDate": "02-02-23" } ], "lotsOfProduct": [ { "id": 1, "productCode": 1, "manufactureDate": "12-12-25", "shelfLifeDateTime": "12-12-26 12-21" } ], "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:}\",\"type\":8},{\"number\":\"2\",\"structure\":\"@{TEXT:}\",\"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" } ] }