# алгоритм генерации агрегирующего кода
Для генерации кодов используется [UUIDv1](https://en.wikipedia.org/wiki/Universally_unique_identifier).
При этом в параметр Node при генерации необходимо вносить ЕДРПУ предприятия дополненый любой информацией.
К примеру:
JavaScript:
```javascipt
const { v1: uuidv1 } = require("uuid");
// import { v1 as uuidv1 } from 'uuid';
const v1options = {
node: [0x01, 0x04, 0x35, 0x88, 0x81, 0x45] // ⇨ ЕДРПУ: 43588145, упаковка = 0
};
uuidv1(v1options); // ⇨ 'bb0b27b0-d4bd-11eb-b5bb-010435888145'
```
При передаче данных в НСИТ на стороне НСИТ производится верификация ЕДРПУ (таким образом мы проверяем что контрагент имеет право генерации агергирующего кода).
Внтури UUID так же содержится метка времени

[Пример расшифровки кода](https://www.uuidtools.com/api/decode/bb0b27b0-d4bd-11eb-b5bb-010435888145)
НСИТ принимает для активации метки времени не старше 5и дней.
Внутри НСИТ данные из UUID должны быть разнесены для поиска отдельно по ЕДРПУ и времени.
Байт предшествующий ЕДРПУ используется для указания уровня агрегации
- 0: упаковка
- 1: ящик
- 2: поддон
- 3: палета
- 4: контейнер
- 5: зарезервированно
- 6: зарезервированно
- 7: зарезервированно
- 8: зарезервированно
- 9: зарезервированно
Свободная часть Node (2 байта) может быть использованна производителем по своему усмотрению (для идентификации склада или любой другой внутренней информации) и игнорируется НСИТ.
Агрегирующий код наносится на упаковку в формате [CODE 128](https://en.wikipedia.org/wiki/Code_128)

[пример генератора](https://cloudzz-barcode-generator.herokuapp.com/?bcid=code128&text=bb0b27b0-d4bd-11eb-b5bb-010435888145&includetext=true)